{"version":3,"sources":["webpack://easyquery/webpack/bootstrap","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/types/entity_attr_kind.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/types/editor_tag.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/meta/meta_entity.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/meta/value_editor.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/meta/meta_data.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/data/aggr_settings.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/utils/easy_guid.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/event/event_emitter.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/utils/liquid.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/i18n/load_default_locale_settings.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/public_api.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/calendar.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/date_time_picker.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_calendar.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/time_picker.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_time_picker.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_date_time_picker.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/i18n/text_resources.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/public_api.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/utils/constants.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/eqs/eqs_model_loader.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/eqs/eqs_data_fetcher.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/eqs/eqs_query_synchronizer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/eqs/eqs_value_list_resolver.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/eqs/eqs_query_file_loader.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/common/eq_services.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/widget_group.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/eq_actions.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/action.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/eqs/eqs_exporter.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/context.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/utils/version_info.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/i18n/text_resources.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/public_api.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/utils/browser_utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/utils/utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/charts/chart_type.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/utils/dom_elem_builder.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/types/data_type.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/expr_tag.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/utils/popup_menu.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/types/qp_editable_part.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/utils/utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/data_kind.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/query/query_events.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/utils/utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/types/facet_type.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/link_type.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/i18n/i18n.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/utils/ui-utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/cond_tag.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/query/expression.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/dm/value_editor.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_columns.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/dm/entity.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/expression_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/query_panel.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/eq_editor_tag.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/query/query_column.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/query/query.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/facets/result_facet.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/locale_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/queryname_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/views/view.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/dm/operator.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_options.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/condition_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/http/http_method.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/utils/drag_manager.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/dm/data_model.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_cell_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/columns_bar.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/base_element_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/dropdown_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/easy_grid_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/dialog/export_dialog.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/charts/chart_widget_chartjs.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/charts/chart_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/utils/string_utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/data/data_row.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/query/condition.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/node_modules/es6-promise/dist/es6-promise.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/charts/chart_widget_google.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/enterprise/node_modules/process/browser.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/enterprise/node_modules/webpack/buildin/global.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/node_modules/es6-promise/dist/es6-promise.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/http/http_request.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/data/data_column.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/utils/format_parser.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/dm/aggr_function.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/common/tree.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/types/cond_part.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/query_storage.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/model_loader.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/data/eq_aggr_container.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/data/eq_data_loader.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/entities_panel.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/utils/browser_utils.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/utils/mask.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/dialogs/default_dialog_service.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/dialogs/dialog_service.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/columns_panel.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/text_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/utils/dropdown.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/addrow_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/operator_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/filter_bar.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/grid.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/statement_panel.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/process_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/facets/chart_facet.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/facets/pivot_table_facet.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/facets/datatable_facet.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/export_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/aggregation_bar.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/dialog/aggr_settings_dialog.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js","webpack://easyquery/./dist/lib/main/eqs_query_storage.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/utils/display_format_parser.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/sorting_bar.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/facet_container.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/result_facets_panel.js","webpack://easyquery/./node_modules/es6-promise/dist/es6-promise.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/http/http_client.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/node_modules/es6-promise/dist/es6-promise.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/data/easy_data_table.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/data/google_data_converter.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/core/dist/lib/main/model_storage.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/ui/node_modules/es6-promise/dist/es6-promise.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/views/adv_search_view.js","webpack://easyquery/./dist/lib/data/eqs_aggr_calculator.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/easydata/easydata.js/packs/core/dist/lib/http/http_action_result.js","webpack://easyquery/./dist/lib/data/data_table_aggr_calculator.js","webpack://easyquery/./node_modules/process/browser.js","webpack://easyquery/(webpack)/buildin/global.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/html_content_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/eq_result_html_grid.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/widgets/manage_drilldown_widget.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/views/data_filter_view.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/views/html_data_filter_view.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/views/report_view.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/i18n/text_resources.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/extensions.js","webpack://easyquery/c:/azuredevops-agents/korzhdev/_work/5/s/packs/ui/dist/lib/public_api.js","webpack://easyquery/./dist/lib/utils/lcv.js","webpack://easyquery/./dist/lib/query/condition_ex.js","webpack://easyquery/./dist/lib/query/query_column_ex.js","webpack://easyquery/./dist/lib/query/query_ex.js","webpack://easyquery/./dist/lib/dm/model_ex.js","webpack://easyquery/./dist/lib/license/lc-dialog.js","webpack://easyquery/./dist/lib/extensions.js","webpack://easyquery/./dist/lib/public_api.js","webpack://easyquery/./api-eq-enterprise.js"],"names":[],"mappings":";;;;;;;;;;;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFO;AACP;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC,4C;;ACNO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;;;;;;;;;;;ACd8C;AACa;AACpB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qBAAqB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAA+B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oCAAoC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,0BAA0B,EAAE;AACnF;AACA;AACA,CAAC;AACqB;AACtB,IAAI,0BAAc;AAClB;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD,wBAAwB,6BAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sBAAK;AAClC;AACA,8BAA8B,sBAAK;AACnC,8BAA8B,sBAAK;AACnC,8BAA8B,sBAAK;AACnC,gCAAgC,sBAAK;AACrC,8BAA8B,sBAAK;AACnC,gCAAgC,sBAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,uC;;AC9IgD;AACF;AAC9C;AACA;AACA;AACA,IAAI,wBAAW;AACf;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,uBAAuB,6BAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,wC;;AChEoC;AACG;AACS;AACF;AACa;AACd;AAC7C;AACA;AACA;AACA,IAAI,kBAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,mBAAmB,0BAAc;AACjC;AACA;AACA,mBAAmB,wBAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6BAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA,8BAA8B,oBAAI;AAClC;AACA;AACA;AACA,iCAAiC,sBAAK,8BAA8B,yDAAyD;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA,8BAA8B,oBAAI;AAClC;AACA;AACA,iCAAiC,sBAAK,8BAA8B,sDAAsD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA,8BAA8B,oBAAI;AAClC,iCAAiC,sBAAK;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kCAAkC,sBAAK,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA,8BAA8B,oBAAI;AAClC,0CAA0C,sBAAK;AAC/C;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oBAAI;AAC1B;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS,OAAO,6BAAQ;AACzE;AACA,6CAA6C,SAAS,WAAW,6BAAQ;AACzE,6CAA6C,SAAS,WAAW,6BAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sBAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAI;AACjC;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACmB;AACpB,qC;;AC1eA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS,sEAAsE;AACtH,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA,sCAAsC,6BAA6B,EAAE;AACrE;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B,yC;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmB;AACpB,qC;;ACnB8C;AAC9C;AACA;AACA;AACA,IAAI,0BAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qCAAqC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc;AAChD,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,gBAAgB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB,yC;;;;;AC5HO;AACP;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE,WAAW,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wBAAwB;AACzB,kC;;ACd8B;AAC9B,oBAAI;AACJ,wD;;ACFA;AACkC;AACO;AACN;AACnC;AACmC;AACC;AACD;AACnC;AACiC;AACE;AACC;AACC;AACF;AACH;AACO;AACvC;AACsC;AACtC;AAC4B;AAC5B;AACkC;AACG;AACP;AACC;AACc;AAC7C;AACA;AACA,oDAAoD,iBAAiB,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB,oC;;;;;AC7B0D;AAC1D,IAAI,+BAAc;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iDAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,4C;;;;;;;;AC1GA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyD;AACR;AACZ;AACtC,IAAI,gCAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD,kCAAkC,kBAAI;AACtC;AACA,uBAAuB,yBAAyB;AAChD,8BAA8B,kBAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yCAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,+CAA+C,EAAE;AACvG;AACA,QAAQ,yCAAK;AACb;AACA,4BAA4B,yCAAK;AACjC;AACA;AACA;AACA;AACA,uBAAuB,kBAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mBAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mBAAS;AACtD;AACA;AACA;AACA;AACA,yBAAyB,kBAAI;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,yCAAK;AAC3B;AACA,iDAAiD;AACjD;AACA;AACA;AACA,SAAS;AACT,kDAAkD,8BAA8B,GAAG,EAAE,EAAE,EAAE;AACzF,iDAAiD;AACjD;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,+DAA+D;AAC/D;AACA,2CAA2C,EAAE;AAC7C;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb,iDAAiD;AACjD;AACA,oDAAoD;AACpD;AACA;AACA,SAAS;AACT,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE;AAC/B,iDAAiD;AACjD;AACA;AACA;AACA,SAAS;AACT,kDAAkD,8BAA8B,GAAG,EAAE,EAAE,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yCAAK;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,cAAc;AACrC,YAAY,yCAAK;AACjB;AACA;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C,0BAA0B,yCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,YAAY,yCAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,QAAQ;AACiB;AAC3B,4C;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB,uC;;AC1BA,IAAI,2BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACY;AACP;AAC3C,IAAI,qCAAiB;AACrB,IAAI,2BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAK;AACb;AACA,kDAAkD,yCAAyC,EAAE;AAC7F;AACA,6BAA6B,yCAAK;AAClC;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE,EAAE,EAAE;AAC3B;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE,EAAE,EAAE;AAC3B;AACA;AACA;AACA,qBAAqB,kBAAI;AACzB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC,CAAC,UAAU;AACiB;AAC7B,+C;;AChFA,IAAI,gCAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACY;AACE;AACC;AACK;AACA;AAC1D,IAAI,8CAAqB;AACzB,IAAI,gCAAS;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB,yCAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAK;AAC3B;AACA,8CAA8C;AAC9C;AACA,kBAAkB,kBAAI;AACtB;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE;AACvB;AACA,qDAAqD;AACrD;AACA,sBAAsB,kBAAI;AAC1B;AACA;AACA;AACA,aAAa;AACb,yBAAyB,EAAE;AAC3B;AACA,iDAAiD;AACjD;AACA,kBAAkB,kBAAI;AACtB;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE;AACvB;AACA;AACA;AACA,YAAY,yCAAK;AACjB;AACA;AACA,mBAAmB,gCAAe;AAClC;AACA;AACA;AACA,YAAY,yCAAK;AACjB;AACA;AACA,mBAAmB,qCAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iDAAqB;AACjD,4BAA4B,iDAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,+BAAc;AACiB;AACjC,oD;;;;;;;;;;;;;;;;;AC9HsC;AACtC;AACA,IAAI,kBAAI;AACR,wBAAwB,mBAAmB,IAAI,kBAAkB,KAAK,MAAM;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0C;;ACbA;AACiC;AACQ;AACA;AACM;AAC/C;AAC0C;AACQ;AACA;AACQ;AACL;AACR;AAC7C;AACsC;AACG;AACJ;AACR;AACI;AACjC;AACiD;AACR;AACV;AACyC;AACxE;AACA,kBAAkB,sDAAoB;AACnB;AACnB,sC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ,MAAM,kCAAkC;AACjE,iBAAiB,QAAQ,UAAU,qBAAqB;AACxD,iBAAiB,QAAQ,SAAS,oBAAoB;AACtD,iBAAiB,QAAQ,gBAAgB,2BAA2B;AACpE,iBAAiB,QAAQ,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ,IAAI,gCAAgC;AAC7D,iBAAiB,QAAQ,UAAU,qBAAqB;AACxD,iBAAiB,QAAQ,SAAS,oBAAoB;AACtD,iBAAiB,QAAQ,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ,MAAM,iBAAiB;AAChD,iBAAiB,QAAQ,KAAK;AAC9B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gCAAgC;AACzC,SAAS,gCAAgC;AACzC,SAAS,kCAAkC;AAC3C,SAAS;AACT;AACA,CAAC,4BAA4B;AAC7B,qC;;;;;;;;;;;;;;;;;AClDA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACoD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,2BAA2B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,qCAAa;AACgB;AAC/B,4C;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,sDAAsD;AACnH;AACA;AACA,mCAAmC,aAAa,EAAE;AAClD;AACA;AACA,CAAC;AAC8B;AAC/B,4C;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,4DAA4D;AACzH;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;AACA,CAAC;AACoC;AACrC,kD;;ACvBoD;AACpD,IAAI,iDAAyB;AAC7B;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAS,SAAS,mBAAmB;AAC/D;AACA;AACA,gEAAgE,qCAAqC;AACrG;AACA;AACA;AACA;AACA,8BAA8B,2BAA2B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACoC;AACrC,mD;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,6CAA6C;AAC7C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,mEAAmE,oCAAoC;AACvG;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC4B;AAC7B,iD;;;;;ACtD4C;AACL;AACM;AACe;AACE;AACA;AACY;AACC;AACV;AACO;AACxE,IAAI,6BAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wBAAU;AACxC;AACA,2CAA2C,YAAY,+BAAS,GAAG;AACnE;AACA,iDAAiD,YAAY,4BAAK,qBAAqB;AACvF,uDAAuD,YAAY,mBAAmB,UAAU;AAChG,wDAAwD,YAAY,4CAAmB,UAAU;AACjG,6DAA6D,YAAY,yBAAyB,UAAU;AAC5G,+CAA+C,YAAY,iDAAyB,UAAU;AAC9F,uDAAuD,YAAY,mBAAmB,UAAU;AAChG,2DAA2D,YAAY,iBAAiB,UAAU;AAClG,yDAAyD,YAAY,wDAA2B,UAAU;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B,uC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/JA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AACnC,wC;;;;;;;;;;;;;;AClBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B,sC;;;;;;;;ACfO;AACP;AACA;AACA;AACA,CAAC,wCAAwC;AACzC,kC;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,mCAAmC;AACnG,wDAAwD,kCAAkC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC2B;AAC5B,wC;;ACtDA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACiF;AAC3C;AACoB;AACF;AACd;AACU;AACX;AACD;AACe;AACM;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS,iBAAiB,SAAS,kBAAI;AACnE,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4BAA4B,SAAS,iBAAiB,SAAS,kBAAI;AACnE,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAS,SAAS,6BAA6B;AACxE;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,8BAA8B,6BAAiB;AAC/C;AACA,gCAAgC,0BAAY;AAC5C;AACA;AACA,8BAA8B,6CAAmB;AACjD,+BAA+B,2BAAa;AAC5C;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wBAAO,oCAAoC,QAAQ;AACjG,8CAA8C,wBAAO,oCAAoC,QAAQ,UAAU,QAAQ;AACnH,+CAA+C,wBAAO,oCAAoC,QAAQ,UAAU,QAAQ;AACpH,+CAA+C,wBAAO,oCAAoC,QAAQ,UAAU,QAAQ;AACpH,8CAA8C,wBAAO,oCAAoC,QAAQ;AACjG,iDAAiD,wBAAO,oCAAoC,QAAQ,UAAU,QAAQ;AACtH,kDAAkD,wBAAO,oCAAoC,QAAQ;AACrG,+CAA+C,wBAAO,oCAAoC,QAAQ;AAClG,kDAAkD,wBAAO,oCAAoC,QAAQ,aAAa,OAAO;AACzH,kDAAkD,wBAAO,oCAAoC,QAAQ,SAAS,OAAO;AACrH,kDAAkD,wBAAO,oCAAoC,QAAQ,eAAe,OAAO;AAC3H,qDAAqD,wBAAO,oCAAoC,QAAQ;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAI;AAChB;AACA;AACA,YAAY,kBAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8CAA8C,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,UAAU,WAAW,KAAK;AAC1D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uCAAe;AACjC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,wBAAwB,EAAE;AACxG,mCAAmC,8BAA8B,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kBAAI;AACZ;AACA;AACA;AACA,wEAAwE,mCAAmC,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C,4BAA4B,QAAQ;AACpC;AACA,iBAAiB,EAAE,WAAW;AAC9B;AACA;AACA;AACA,8BAA8B,uCAAe;AAC7C;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,4BAA4B,cAAc;AAC1C,4BAA4B,QAAQ;AACpC;AACA;AACA,iBAAiB,EAAE,WAAW;AAC9B,aAAa;AACb,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAe;AACzC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C,4BAA4B,QAAQ;AACpC;AACA,iBAAiB,EAAE,WAAW;AAC9B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C,4BAA4B,QAAQ;AACpC;AACA;AACA,iBAAiB,EAAE,WAAW;AAC9B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,wBAAwB,cAAc;AACtC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,wBAAwB,cAAc;AACtC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA,4CAA4C,QAAQ;AACpD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,wBAAwB,cAAc;AACtC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,wBAAwB,cAAc;AACtC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,WAAW;AAC5C;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B,SAAS;AACT;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA;AACA,aAAa,EAAE,WAAW;AAC1B;AACA,iDAAiD,QAAQ;AACzD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA,SAAS,EAAE,WAAW;AACtB;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,QAAQ;AAChC;AACA,aAAa,EAAE,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA,iBAAiB,EAAE,WAAW;AAC9B,qCAAqC,kBAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C,gCAAgC,QAAQ;AACxC;AACA,qBAAqB,EAAE,WAAW;AAClC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C,gCAAgC,QAAQ;AACxC;AACA;AACA,qBAAqB,EAAE,WAAW;AAClC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB,mC;;AC/5CuC;AACvC;AACA;AACA;AACA;AACA;AACA,IAAI,aAAM;AACV;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAK;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiB;AAClB,kC;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP,wC;;ACZsC;AACtC;AACA,IAAI,kBAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,sBAAsB;AACtB,qBAAqB;AACrB;AACA,KAAK;AACL;AACA;AACA,0C;;AC1B8B;AACI;AACG;AACP;AACQ;AACO;AACJ;AACP;AACA;AACD;AACC;AACD;AACK;AACD;AACF;AACH;AACJ;AACE;AACI;AACA;AACE;AACC;AACA;AACN;AACD;AACA;AACO;AACH;AACC;AACL;AACO;AACF;AACI;AACA;AACM;AACC;AACF;AACN;AACD;AACrC;AACsC;AACP;AAC/B,sC;;;;;;;AC1CA;AAAA;AAAsC;AAC/B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6BAA6B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAW;AAC3C;AACA;AACA,CAAC,oCAAoC;AACrC,yC;;;;;;;AC1DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqC;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACA;AACA;AACP,IAAI,0DAAK;AACT;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA,SAAS;AACT,KAAK;AACL;AACA,iC;;;;;;;AC9CA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B,sC;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,sBAAsB,SAAI,IAAI,SAAI;AAClC,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AAC8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAI;AACZ;AACA;AACA;AACA,CAAC;AACiC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;AAC5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4C;;;;;;;ACjTA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B,qC;;;;;;;AC7CA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B,oC;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACc;AACf;AAC2D;AACjD;AACH;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAK;AAClC,sBAAsB,mEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC,0DAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0DAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA,sBAAsB,mEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,mCAAmC;AACnC;AACA;AACA,YAAY,mEAAY;AACxB;AACA,gBAAgB,0DAAK;AACrB;AACA,6BAA6B,mDAAI;AACjC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA,0BAA0B,mEAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,mCAAmC,EAAE;AAC1G;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA,gCAAgC,oDAAS,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA,0CAA0C,oDAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA,sBAAsB,mEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mEAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,kBAAkB,0EAAqB;AACvC,qBAAqB,iEAAY;AACjC,sBAAsB,+DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG;AAClG;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oEAAe;AACpE;AACA;AACA;AACA;AACA;AACA,sBAAsB,+DAAU;AAChC,gCAAgC,iEAAY;AAC5C;AACA;AACA;AACA,sBAAsB,iEAAY;AAClC,sBAAsB,iEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA,sBAAsB,+DAAU;AAChC;AACA,8CAA8C,iEAAY,aAAa;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA,0BAA0B,mEAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAI;AAC5B,wBAAwB,mDAAI;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iEAAY;AACvC,0BAA0B,+DAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,wEAAiB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,oEAAe;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB,sC;;;;;;;AC5uCA;AAAA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC,4C;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAuC;AACO;AACV;AAC7B;AACP;AACA;AACA,6BAA6B,iEAAQ,0BAA0B,iCAAiC,EAAE;AAClG;AACA;AACA;AACA,gBAAgB,iEAAQ,OAAO,iEAAQ,OAAO,iEAAQ;AACtD;AACA;AACA;AACA,gBAAgB,iEAAQ,SAAS,iEAAQ,OAAO,iEAAQ;AACxD;AACA;AACA,yBAAyB,iEAAQ,OAAO,iEAAQ,OAAO,iEAAQ;AAC/D,QAAQ,iEAAQ,QAAQ,iEAAQ,QAAQ,iEAAQ,WAAW,iEAAQ;AACnE;AACA;AACA;AACA;AACA,qBAAqB,iEAAQ,OAAO,iEAAQ,OAAO,iEAAQ,QAAQ,iEAAQ,QAAQ,iEAAQ;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,0BAA0B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,iEAAQ,qBAAqB,iEAAQ;AAC3H,6CAA6C,iEAAQ,kBAAkB,iEAAQ;AAC/E,yBAAyB,iEAAQ,sBAAsB,iEAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kEAAiB;AACtC;AACA;AACA;AACA;AACA,SAAS;AACT,eAAe,mEAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,kBAAkB,uDAAI;AACtB,iBAAiB,uDAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uDAAI;AACnD;AACA;AACA;AACA,CAAC,sBAAsB;AACvB,iC;;;;;;;ACzgBA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B,qC;;;;;;;AChBA;AAAA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C,wC;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAA0C;AACJ;AACS;AACD;AACvC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAQ;AAC3B;AACA;AACA,mBAAmB,iEAAQ;AAC3B;AACA;AACA,mBAAmB,iEAAQ;AAC3B;AACA;AACA,mBAAmB,iEAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAQ;AAC7B;AACA;AACA,0BAA0B,iEAAQ;AAClC;AACA;AACA,yBAAyB,iEAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA,qBAAqB,mDAAI;AACzB;AACA;AACA;AACA;AACA,yBAAyB,mEAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAQ;AACzB;AACA,kBAAkB,uDAAQ,UAAU,uDAAQ,OAAO,uDAAQ,QAAQ,uDAAQ,QAAQ,uDAAQ;AAC3F;AACA;AACA,kBAAkB,uDAAQ,WAAW,uDAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B,iC;;;;;;;ACtGA;AAAO;AACP;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B,sC;;;;;;;ACNA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA,CAAC,4BAA4B;AAC7B,qC;;;;;;;AClBA;AAAA;AAAA;AAA8C;AACP;AACvC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,kCAAkC,0DAAK,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAK,cAAc;AACxD;AACA,iCAAiC,0DAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iDAAiD;AAClE,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAK,cAAc;AAC9C;AACA,8BAA8B,0DAAK,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAK,cAAc;AACxD;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAAK,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iEAAQ;AAC1D;AACA;AACA,iDAAiD,iEAAQ;AACzD;AACA;AACA,kDAAkD,iEAAQ;AAC1D;AACA;AACA,iDAAiD,iEAAQ;AACzD;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iEAAQ;AACzB;AACA;AACA,iBAAiB,iEAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iEAAQ;AACzB;AACA;AACA,iBAAiB,iEAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB,EAAE;AAC7D,mCAAmC,qBAAqB,EAAE;AAC1D;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB,gC;;;;;;;ACpdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+C;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,QAAQ,mEAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACA;AACP,oC;;;;;;;AClOA;AAAA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B,oC;;;;;;;ACbA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACD;AACK;AACF;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+DAAO;AAC1B;AACA,oBAAoB,iEAAQ;AAC5B;AACA,wBAAwB,uDAAQ;AAChC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,oCAAoC,mCAAmC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAO;AACnC,+BAA+B,+DAAO;AACtC,4BAA4B,iEAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAO,gCAAgC,+DAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA,yBAAyB,iEAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB,sC;;;;;;;AC1MA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAW;AACY;AACzB,wC;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAwD;AACK;AAC7D;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA,aAAa,8DAAe;AAC5B;AACA,aAAa,8DAAe;AAC5B;AACA,aAAa,8DAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,iFAAgB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,6C;;;;;;;AC3JA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC2D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,yDAAyD,EAAE,2BAA2B,qDAAqD,EAAE;AAC7M;AACA;AACA,CAAC,CAAC,yDAAU;AACM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6DAAc;AACM;AACtB,kC;;;;;;;ACxFA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACU;AACe;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mDAAI,gCAAgC;AACxF;AACA;AACA;AACA;AACA,yDAAyD,6DAAa;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kFAAmB;AACS;AAC9B,+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzFA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyC;AACgC;AAC1E,IAAI,8EAAoC;AACxC;AACA;AACA;AACA,+BAA+B,yBAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0CAA0C,EAAE;AAChF;AACA,oBAAoB;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAA4B;AACkB;AAChD,qE;;ACvCA,IAAI,mBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACwB;AACoG;AAC7H;AACoB;AACE;AACX;AACoC;AACK;AACE;AACQ;AAC3B;AAC0E;AACtE;AACmB;AACE;AAC5B;AACf;AACkE;AACxH;AACA;AACA;AACA,IAAI,sBAAU;AACd,IAAI,mBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0CAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,EAAE,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oCAAK;AACjC;AACA,6BAA6B,oCAAK;AAClC;AACA;AACA;AACA;AACA;AACA,sBAAsB,6BAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oCAAa;AACrB;AACA;AACA,YAAY,oCAAa;AACzB;AACA;AACA;AACA,6CAA6C,4BAAW;AACxD;AACA;AACA;AACA;AACA,wCAAwC,iCAAU;AAClD;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,gDAAgD,4BAAW;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mCAAiB;AAC1E;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,QAAQ,oCAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iCAAe,6BAA6B,iCAAe;AACpG;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,sDAAsD,+BAAa,eAAe,+BAAa;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kCAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,4CAA4C,EAAE;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,6BAA6B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mBAAS;AACjB;AACA;AACA,YAAY,kBAAI;AAChB;AACA,aAAa;AACb;AACA;AACA,YAAY,kBAAI;AAChB;AACA,aAAa;AACb;AACA;AACA,yCAAyC,0CAAc;AACvD;AACA,YAAY,qCAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oCAAK;AACtC;AACA,YAAY,oCAAK;AACjB,6BAA6B,4BAAW;AACxC,0BAA0B,qCAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oCAAK;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAO;AACxB,2BAA2B,qDAAuB;AAClD,iBAAiB,yBAAO;AACxB,2BAA2B,0DAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6BAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+BAAa;AACtC;AACA;AACA;AACA,wBAAwB,sBAAQ;AAChC;AACA;AACA,gCAAgC,0BAAQ;AACxC,8CAA8C;AAC9C,2BAA2B,oEAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,2BAA2B,oEAA2B;AACtD;AACA;AACA,qCAAqC,0BAAQ;AAC7C,kBAAkB,6BAAW;AAC7B;AACA,qCAAqC,0BAAQ;AAC7C,uBAAuB,6BAAW,qCAAqC,sBAAQ;AAC/E,2CAA2C,sBAAQ,qCAAqC,sBAAQ;AAChG,sBAAsB,6BAAW;AACjC;AACA;AACA,oCAAoC,0BAAQ;AAC5C,kBAAkB,6BAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6BAAW;AAC5B,2BAA2B,0DAAsB;AACjD,iBAAiB,6BAAW;AAC5B,2BAA2B,6DAAyB;AACpD,iBAAiB,6BAAW;AAC5B,2BAA2B,gEAA4B;AACvD,iBAAiB,6BAAW;AAC5B,2BAA2B,gEAA0B;AACrD,iBAAiB,6BAAW;AAC5B,2BAA2B,kEAA0B;AACrD;AACA,iBAAiB,6BAAW;AAC5B,2BAA2B,8EAAoC;AAC/D;AACA,2BAA2B,4DAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yCAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mBAAS;AACjB,mBAAmB,+BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAI;AAC9B,iBAAiB;AACjB;AACA;AACA,0BAA0B,kBAAI;AAC9B;AACA;AACA;AACA;AACA,gCAAgC,+BAA+B;AAC/D;AACA;AACA;AACA;AACA;AACA,8BAA8B,kBAAI;AAClC,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,8BAA8B,kBAAI;AAClC,qBAAqB;AACrB;AACA;AACA;AACA,2BAA2B;AAC3B,YAAY,mBAAS;AACrB,qCAAqC,+BAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAI;AAC9B,iBAAiB;AACjB;AACA;AACA,0BAA0B,kBAAI;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,0BAA0B,kBAAI;AAC9B,iBAAiB;AACjB;AACA;AACA,0BAA0B,kBAAI;AAC9B;AACA;AACA,2BAA2B;AAC3B,YAAY,mBAAS;AACrB,iCAAiC,+BAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAI;AAC9B,iBAAiB;AACjB;AACA;AACA,0BAA0B,kBAAI;AAC9B;AACA;AACA,2BAA2B;AAC3B,YAAY,mBAAS;AACrB,qCAAqC,+BAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAAQ;AAC/B;AACA;AACA;AACA,sBAAsB,kBAAI;AAC1B;AACA,SAAS;AACT,uBAAuB;AACvB,QAAQ,mBAAS;AACjB,gCAAgC,+BAAS;AACzC;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,oBAAoB,oCAAK;AACzB;AACA;AACA;AACA;AACA;AACA,oBAAoB,oCAAK;AACzB;AACA;AACA;AACA,YAAY,oCAAK;AACjB;AACA;AACA;AACA,YAAY,oCAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,sCAAsC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAM;AACc;AACtB,uC;;;;;;;AC7oBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACiB;AAChC;AACsB;AACL;AACW;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,YAAY,8EAAc;AAC5F;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA,6DAA6D,6DAAa;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,mDAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,wDAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mDAAI;AACxB,oBAAoB,mDAAI;AACxB;AACA,wBAAwB,mEAAS;AACjC;AACA;AACA,qCAAqC,wDAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+EAAkB;AACc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iCAAiC,0DAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wDAAQ;AACpB,iCAAiC,wDAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,CAAC;AACuC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,CAAC;AACoC;AACrC,oD;;;;;;;AC3TA;AAAA;AAAA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2C;AAC3C;AACO,sCAAsC,EAAE,wDAAS,I;AACxD;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,yC;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAA8D;AACpB;AAC0B;AACpE;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAS;AAC5B;AACA;AACA;AACA,wBAAwB,8DAAU;AAClC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA,2BAA2B,uDAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qEAAe;AACjC,kBAAkB,qEAAe;AACjC,oBAAoB,uEAAiB;AACrC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,wC;;;;;;;AC7JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACgG;AAC3D;AACG;AACI;AACH;AACkB;AACpB;AACM;AACA;AACF;AACA;AACK;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2DAAY;AAC5C,wBAAwB,4DAAS,OAAO,+DAAO;AAC/C,mCAAmC,4DAAS,OAAO,+DAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gEAAS;AACpD;AACA;AACA;AACA,+DAA+D,+DAAO,mBAAmB,+DAAO;AAChG;AACA;AACA;AACA,gCAAgC,kEAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,oCAAoC,sEAAe;AACnD;AACA;AACA;AACA,8BAA8B,sEAAe;AAC7C,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,qCAAqC,+DAAO,mBAAmB,EAAE;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,yDAAyD,yBAAyB,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8BAA8B,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,iCAAiC,+DAAO,mBAAmB,EAAE;AAC7D;AACA;AACA,qEAAqE;AACrE,qCAAqC,+DAAO,iBAAiB,EAAE;AAC/D;AACA,uDAAuD,wBAAwB;AAC/E;AACA,qCAAqC,kCAAkC;AACvE,gDAAgD,+DAAO;AACvD;AACA,2DAA2D,0BAA0B;AACrF;AACA;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA,uCAAuC,uCAAuC;AAC9E;AACA;AACA;AACA,0BAA0B,sEAAe;AACzC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0CAA0C,mCAAmC,+DAAO;AACpF,+EAA+E,uDAAQ,UAAU,EAAE;AACnG;AACA,0CAA0C,mCAAmC,+DAAO;AACpF,+EAA+E,uDAAQ,QAAQ,EAAE;AACjG;AACA;AACA;AACA;AACA,+BAA+B,4CAA4C;AAC3E;AACA,SAAS;AACT;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA,wCAAwC,mEAAa;AACrD;AACA;AACA;AACA;AACA;AACA,mCAAmC,mEAAa;AAChD,kCAAkC,mEAAa;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,0BAA0B,sEAAe;AACzC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA,8DAA8D,kBAAkB,EAAE,oBAAoB,aAAa,EAAE;AACrH;AACA,2CAA2C,sBAAsB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,oCAAoC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,gCAAgC,+DAAO,mBAAmB,EAAE;AAC5D;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA,uCAAuC,+DAAO;AAC9C,2CAA2C,+DAAO;AAClD;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAO;AACpD;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,gCAAgC,+DAAO,mBAAmB,EAAE;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,+DAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA,iCAAiC,+DAAO;AACxC;AACA;AACA,oBAAoB,oDAAS;AAC7B;AACA;AACA;AACA,sCAAsC,iEAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA;AACA;AACA,4BAA4B,oDAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA,kBAAkB,oDAAS;AAC3B;AACA;AACA,SAAS,eAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wCAAwC,+DAAO,iBAAiB,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAa;AACxC;AACA;AACA;AACA,uBAAuB,oDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD,mBAAmB,iEAAW;AAC9B;AACA;AACA,eAAe,oDAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAO;AAC5C;AACA;AACA,sCAAsC,iEAAQ;AAC9C,0CAA0C,uDAAQ;AAClD;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAO;AAC5C;AACA,sCAAsC,iEAAQ;AAC9C;AACA;AACA,8BAA8B,8DAAU;AACxC;AACA,0BAA0B,+DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAO;AAC5C;AACA;AACA;AACA,sDAAsD,mEAAa;AACnE;AACA,gCAAgC,oDAAS;AACzC,kCAAkC,oDAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAO;AAC3B;AACA;AACA,mCAAmC,+DAAO;AAC1C;AACA;AACA;AACA,2BAA2B,8DAAU;AACrC,uBAAuB,+DAAO;AAC9B;AACA;AACA;AACA,0BAA0B,8DAAU;AACpC;AACA;AACA;AACA;AACA,yBAAyB,+DAAO;AAChC,6CAA6C,+DAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAU;AAC9C,gCAAgC,+DAAO;AACvC,qCAAqC,uDAAQ,QAAQ;AACrD;AACA;AACA;AACA;AACA,yBAAyB,+DAAO;AAChC,oCAAoC,+DAAO;AAC3C,uCAAuC,+DAAO;AAC9C;AACA;AACA,8CAA8C,+DAAO;AACrD;AACA;AACA;AACA,2BAA2B,8DAAU;AACrC,uBAAuB,+DAAO;AAC9B,2DAA2D,uDAAQ;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA;AACA;AACA,6BAA6B,OAAO,+DAAO,QAAQ;AACnD,mBAAmB,4DAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oDAAS;AAChC,yBAAyB,oDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+DAAO;AAC/C;AACA,2BAA2B,8DAAU;AACrC;AACA;AACA,wBAAwB,iEAAQ;AAChC;AACA;AACA;AACA;AACA,qBAAqB,oDAAS;AAC9B;AACA;AACA,gBAAgB,oDAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,yBAAyB,EAAE;AAChG,2DAA2D,0BAA0B,EAAE;AACvF;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO,sEAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,sEAAe;AACjC;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA,kBAAkB,sEAAe;AACjC,kBAAkB,sEAAe;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,sEAAe;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sCAAsC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,4DAAO,2CAA2C,mDAAI;AACtG,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4DAAO;AAC3C;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA;AACA,iDAAiD,iEAAQ,0BAA0B,+DAAO;AAC1F;AACA,yEAAyE,OAAO,EAAE,KAAK;AACvF;AACA;AACA;AACA;AACA;AACA,kDAAkD,mDAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAQ,2BAA2B,iEAAQ;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAQ;AACrC,4BAA4B,0BAA0B;AACtD;AACA,kCAAkC,iEAAQ;AAC1C;AACA;AACA,sCAAsC,uDAAQ;AAC9C,oCAAoC,uDAAQ;AAC5C,oCAAoC,uDAAQ;AAC5C,8BAA8B,4BAA4B;AAC1D;AACA;AACA;AACA;AACA;AACA,8BAA8B,mDAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,4DAAO,qFAAqF,mDAAI;AAChJ,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4DAAO;AAC3C;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA;AACA,iDAAiD,iEAAQ,0BAA0B,+DAAO;AAC1F;AACA,mHAAmH,OAAO,EAAE,KAAK;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAQ,2BAA2B,iEAAQ;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgB;AACjB,iC;;;;;;;AC/2CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACI;AACe;AACD;AACI;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB;AACA,sBAAsB,yEAAY;AAClC,iDAAiD;AACjD;AACA,sBAAsB,yEAAY;AAClC,2DAA2D,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,iCAAiC;AAC1F,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,eAAe,0DAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gDAAgD,uEAAkB;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,4CAA4C,uDAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,4CAA4C,uDAAO,qBAAqB,iBAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mDAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA,aAAa;AACb;AACA;AACA,CAAC,CAAC,4EAAgB;AACgB;AAClC,kD;;;;;;;AClLA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AAC0D;AACrB;AACiB;AACtD;AACA;AACA;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA,2BAA2B,mDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mDAAI;AAC/B,6BAA6B,mDAAI;AACjC,mCAAmC,WAAW;AAC9C,mCAAmC,UAAU;AAC7C,2CAA2C,wBAAwB,EAAE;AACrE;AACA,iBAAiB;AACjB;AACA;AACA,yCAAyC,mDAAmD;AAC5F;AACA;AACA;AACA,4CAA4C,mDAAI;AAChD,uCAAuC,WAAW;AAClD,uCAAuC,UAAU;AACjD;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,2BAA2B,mDAAI;AAC/B,2CAA2C,wBAAwB,EAAE;AACrE;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,QAAQ,oDAAS;AACjB;AACA;AACA;AACA,0BAA0B,0DAAK;AAC/B;AACA;AACA,iCAAiC,0DAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA,2CAA2C;AAC3C,4BAA4B,yEAAY;AACxC;AACA;AACA,qBAAqB,EAAE;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAY;AACxB,mBAAmB,0DAAK;AACxB;AACA;AACA;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,qBAAqB,mDAAI,oCAAoC,EAAE;AAC/D,6CAA6C;AAC7C;AACA;AACA;AACA,wCAAwC,EAAE;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA,sDAAsD,mDAAI;AAC1D,uBAAuB,UAAU;AACjC,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb,QAAQ,0DAAK;AACb;AACA;AACA,QAAQ,0DAAK;AACb,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,uDAAuD;AAClH;AACA;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,wC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtPA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACgB;AACtD,IAAI,0BAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAI;AAChB,yCAAyC,6BAAW;AACpD;AACA,sBAAsB,6BAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAI;AAC1B;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAM;AACgB;AACxB,yC;;;;;;;;;;;;;;;;;AC7EA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqD;AACA;AACtD;AACA;AACA;AACA,IAAI,gCAAe;AACnB,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6BAAW,SAAS,6BAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qCAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAM;AACmB;AAC3B,4C;;;;;;;;;;;;;;;;;AC3GsC;AACc;AACK;AACc;AACV;AACU;AACb;AACF;AACJ;AACI;AACJ;AACM;AACR;AACE;AACU;AACF;AACO;AACtB;AACS;AACE;AACI;AAC5D,IAAI,SAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAAS;AACpC;AACA;AACA,wDAAwD,YAAY,2CAAoB,GAAG,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAS;AAC1C;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAmC;AACxE;AACA;AACA;AACA,kBAAkB,mBAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAS,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAU,+BAA+B,8BAA8B;AACvG;AACA;AACA;AACA;AACA,iCAAiC,yCAAU,+BAA+B,8BAA8B;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAI,qCAAqC,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,sBAAsB,EAAE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,6BAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oCAAK;AAChC;AACA,2CAA2C;AAC3C,sBAAsB,4BAAW,qBAAqB,qCAAY;AAClE,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA,oBAAoB,oCAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA,oBAAoB,oCAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0CAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qCAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yCAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gDAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qCAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yCAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACe;AAChB,gC;;;;;;;AC1hBA;AAAA;AAAA;AAAA;AAAA;AAA8D;AACf;AACD;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,MAAM;AACxC,yBAAyB,sBAAsB;AAC/C,+BAA+B,MAAM,IAAI,sBAAsB,IAAI,MAAM;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,mEAAa;AAClG;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA,oFAAoF,mEAAa;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAQ;AAC5B,wBAAwB,uDAAQ;AAChC,0BAA0B,mEAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,mEAAa;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB;AACA;AACA,CAAC;AACkB;AACnB,oC;;;;;;;AC7FA;AAAO;AACP;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C,6C;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACS;AACJ;AACV;AACa;AACK;AAC1D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA,+BAA+B,0DAAK;AACpC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yEAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uDAAO;AAC/B;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,4CAA4C,mEAAY;AACxD;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA,wDAAwD,yEAAY;AACpE;AACA;AACA;AACA;AACA,qBAAqB,yEAAY;AACjC,gDAAgD,uEAAkB;AAClE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa,yEAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iDAAiD,0DAAK;AACtD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAS;AAC/C;AACA,8BAA8B,uDAAO;AACrC,iCAAiC,mDAAI;AACrC,mBAAmB,0DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB,uBAAuB,mDAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gDAAgD;AAChD;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,iEAAiB;AAClF;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,iEAAiB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,8EAAc,cAAc,8EAAc;AAC/H;AACA;AACA,qFAAqF,8EAAc,eAAe,8EAAc;AAChI;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,cAAc,8EAAc;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAI;AACnC,qDAAqD,sEAAsE,EAAE;AAC7H,wDAAwD;AACxD;AACA,qBAAqB,EAAE;AACvB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,cAAc,8EAAc;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAI;AACnC,qDAAqD,kEAAkE,EAAE;AACzH,wDAAwD;AACxD;AACA,qBAAqB,EAAE;AACvB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAI;AACnC;AACA,qDAAqD,gEAAgE,EAAE;AACvH,wDAAwD;AACxD;AACA,qBAAqB,EAAE;AACvB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,oDAAoD,8EAAc,aAAa,8EAAc;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAI;AACnC,qDAAqD,gEAAgE,EAAE;AACvH,wDAAwD;AACxD;AACA,qBAAqB,EAAE;AACvB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAI;AACnC,qDAAqD,8DAA8D,EAAE;AACrH,yBAAyB,yEAAY;AACrC;AACA,4DAA4D;AAC5D;AACA,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;AACnC,8C;;;;;;;AC3fA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC,uC;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AACY;AACD;AAClD;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6EAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,gDAAgD,EAAE;AAClD;AACA,6CAA6C,qBAAqB;AAClE;AACA,gBAAgB,oDAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sCAAsC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+EAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+EAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACO;AACP,wC;;;;;;;AC7WA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACuE;AAClC;AACS;AACA;AACD;AACC;AACD;AACO;AACd;AACK;AACN;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAU;AAC5C,iCAAiC,0DAAQ;AACzC;AACA,+BAA+B,sDAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD,sCAAsC,0DAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD,sCAAsC,mEAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mEAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA,8BAA8B,mDAAI;AAClC;AACA;AACA;AACA,iCAAiC,oDAAS,YAAY,sDAAM,KAAK,yDAAyD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA,8BAA8B,mDAAI;AAClC;AACA;AACA,iCAAiC,oDAAS,YAAY,sDAAM,KAAK,sDAAsD;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAI;AACtC,qCAAqC,oDAAS,YAAY,sDAAM;AAChE;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,sCAAsC,oDAAS,UAAU;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAI;AACtC,8CAA8C,oDAAS,YAAY,0DAAU,WAAW,kHAAkH;AAC1M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oDAAS;AAC1B;AACA,qBAAqB,0DAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAO;AACvC,8CAA8C,iEAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C,iBAAiB,oDAAS;AAC1B;AACA;AACA,gBAAgB,oDAAS;AACzB;AACA,gBAAgB,oDAAS;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yDAAI;AAC3B,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,gBAAgB;AACnE;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAO;AAChC;AACA;AACA;AACA;AACA;AACA,mCAAmC,oDAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAI;AAC5B,0DAA0D,mDAAI;AAC9D;AACA;AACA;AACA,mBAAmB,oDAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAI;AAC5B,+DAA+D,mDAAI;AACnE;AACA;AACA;AACA,mBAAmB,oDAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yDAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAQ;AACxC;AACA;AACA;AACA;AACA,yBAAyB,oDAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iEAAQ;AACjD,oCAAoC,wEAAW;AAC/C;AACA;AACA;AACA;AACA,yCAAyC,uDAAQ,6BAA6B,uDAAQ;AACtF,uCAAuC,uDAAQ;AAC/C,oCAAoC,wEAAW;AAC/C;AACA;AACA,oCAAoC,wEAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO,EAAE;AAClD;AACA;AACA,gBAAgB,oDAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO,EAAE;AAClD;AACA;AACA,gBAAgB,oDAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uDAAQ;AACW;AACrB,sC;;;;;;;ACp6BA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACM;AACtD;AACO,mBAAmB,QAAQ;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA,wBAAwB,0EAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAI;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0EAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAI;AAC3B,aAAa;AACb;AACA;AACA,yBAAyB,mDAAI;AAC7B,+BAA+B;AAC/B;AACA,qBAAqB,uDAAQ;AAC7B;AACA;AACA,qBAAqB,uDAAQ;AAC7B;AACA;AACA,qBAAqB,uDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0EAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAI;AACvB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC,mD;;;;;;;ACzIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACwE;AACrC;AACvC;AACH;AACS;AACqC;AACJ;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,EAAE,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAAK;AACjC,sBAAsB,gEAAW;AACjC;AACA;AACA;AACA,aAAa,mBAAmB,mDAAI,0BAA0B;AAC9D,aAAa,wBAAwB,mDAAI,0BAA0B;AACnE,aAAa,yBAAyB,mDAAI,2BAA2B;AACrE,aAAa;AACb;AACA;AACA,aAAa,sBAAsB,mDAAI,4BAA4B;AACnE,aAAa,qBAAqB,mDAAI,2BAA2B;AACjE,aAAa,uBAAuB,mDAAI,2BAA2B;AACnE,aAAa,yBAAyB,mDAAI;AAC1C;AACA,QAAQ,0DAAK;AACb;AACA,sBAAsB,yEAAY;AAClC,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAa;AACrB;AACA,YAAY,0DAAa;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,uDAAU;AAC9C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+DAAe;AACxD,iCAAiC,+DAAe;AAChD,iCAAiC,+DAAe;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yBAAyB,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oDAAS;AAChC;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA,yBAAyB,0EAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb,sBAAsB,gEAAW,0CAA0C,gEAAW;AACtF,sBAAsB,yEAAY;AAClC,mBAAmB,mDAAI;AACvB,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb,YAAY,yEAAY;AACxB,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA,0BAA0B,yEAAY;AACtC;AACA;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA,gBAAgB,yEAAY;AAC5B,gBAAgB,0DAAK;AACrB;AACA;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6CAA6C,0DAAK;AAClD,wCAAwC,0DAAK;AAC7C;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA,yCAAyC,0DAAK;AAC9C;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,0DAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,0DAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,0DAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB,YAAY,0DAAK;AACjB;AACA,gBAAgB,0DAAK;AACrB;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA;AACA;AACA,YAAY,0DAAK;AACjB,YAAY,0DAAK;AACjB;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAO;AACxB,2BAA2B,+GAAwB;AACnD,iBAAiB,uDAAO;AACxB;AACA,iBAAiB,uDAAO;AACxB,iBAAiB,uDAAO;AACxB,2BAA2B,2GAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAa;AAC1C;AACA,8BAA8B,uDAAO;AACrC,+BAA+B,wDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAe;AACjC,oBAAoB,iEAAiB;AACrC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,WAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iIAAiI;AACnL,uBAAuB;AACvB,QAAQ,oDAAS;AACjB,gCAAgC,mEAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,QAAQ,oDAAS;AACjB;AACA,4BAA4B,mEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,QAAQ,oDAAS;AACjB,4BAA4B,mEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iEAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACc;AACtB,uC;;;;;;;ACjtBA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyC;AACQ;AACM;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uDAAO;AACnD;AACA;AACA;AACA;AACA,4CAA4C,uDAAO,qBAAqB,iBAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gDAAgD,uEAAkB;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,4EAAgB;AACgB;AAClC,kD;;;;;;;AC7EA;AAAA;AAAA;AAAqC;AACoB;AACzD;AACA;AACA,+BAA+B,0DAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA,QAAQ,0DAAK;AACb;AACA;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B,iD;;;;;;;AC/DA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC6D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kFAAmB;AACO;AAC5B,6C;;;;;;;ACxCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC0G;AACtD;AACZ;AACV;AACkB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,aAAa,kDAAkD;AAC7G,uBAAuB,oDAAS;AAChC,uDAAuD,wCAAwC;AAC/F,mDAAmD,qCAAqC;AACxF;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,wBAAwB,qDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6CAA6C;AAC/F,uBAAuB;AACvB,QAAQ,oDAAS;AACjB,gCAAgC,mEAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,oDAAS;AAChC;AACA;AACA;AACA,sBAAsB,+DAAe;AACrC,wBAAwB,iEAAiB;AACzC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAa;AAC1C;AACA,8BAA8B,uDAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kBAAkB,+DAAe;AACjC,oBAAoB,iEAAiB;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kDAAI;AACoB;AAC1B,4C;;;;;;;ACnOA;AAAA;AAAA;AAAqC;AACE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAK;AAChC;AACA,mDAAmD;AACnD;AACA,mDAAmD;AACnD;AACA,qDAAqD;AACrD;AACA;AACA,6BAA6B,oDAAI,+BAA+B,EAAE;AAClE,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,2EAA2E,gBAAgB;AAC3F;AACA;AACA;AACA,mCAAmC,oDAAI;AACvC;AACA,yBAAyB;AACzB;AACA,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC7B;AACA;AACA,2BAA2B,oDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,iDAAiD,6BAA6B,EAAE;AAChF;AACA;AACA,CAAC;AACuB;AACxB,yC;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyC;AACG;AACJ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6DAAS;AACvC,iCAAiC,6DAAS;AAC1C,iCAAiC,6DAAS;AAC1C,iCAAiC,6DAAS;AAC1C,iCAAiC,6DAAS;AAC1C,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6DAAS;AACvC,iCAAiC,6DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6DAAS;AACvC,kDAAkD,6DAAS;AAC3D,0DAA0D,6DAAS,aAAa;AAChF;AACA,2EAA2E,6DAAS;AACpF,iCAAiC,6DAAS,4BAA4B,6DAAS;AAC/E,iCAAiC,6DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B,iBAAiB,6DAAS;AAC1B,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iEAAW;AACY;AACzB,gD;;;;;;;ACxLA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACsD;AACG;AACwC;AACzD;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B,iBAAiB,6DAAS;AAC1B,uBAAuB,mDAAI;AAC3B;AACA,uBAAuB,mDAAI;AAC3B;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA;AACA,iDAAiD,0BAA0B;AAC3E,oBAAoB,oDAAS;AAC7B,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA,0CAA0C,mCAAmC,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,cAAc,EAAE;AACxF,yEAAyE,8BAA8B,EAAE;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAS,sBAAsB,QAAQ,6DAAS,MAAM,EAAE;AAClF,kDAAkD,+CAA+C,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAW;AACvB;AACA,YAAY,gEAAW;AACvB;AACA;AACA,+DAA+D,gBAAgB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,gBAAgB,gEAAW;AAC3B,gBAAgB,gEAAW;AAC3B;AACA;AACA,gBAAgB,gEAAW;AAC3B,gBAAgB,gEAAW;AAC3B;AACA;AACA;AACA,gBAAgB,gEAAW;AAC3B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA,oCAAoC,yBAAyB,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA,QAAQ,gEAAW;AACnB;AACA;AACA;AACA,QAAQ,gEAAW;AACnB;AACA,wDAAwD,gBAAgB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAgB;AACxB;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,sDAAM;AACe;AACvB,wC;;;;;;;AC9XA;AAAA;AAAA;AAAA;AAAO;AACP;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;;;;;;AC/BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkB;AACnB,oC;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyE;AAC/B;AACI;AACA;AACF;AACA;AACwB;AACjB;AACE;AACF;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAQ,KAAK;AACrC;AACA,mBAAmB,oDAAS;AAC5B;AACA,0BAA0B,+DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,+DAAO,SAAS,+DAAO;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAO;AACnC;AACA;AACA,mCAAmC,uBAAuB;AAC1D,0CAA0C,8DAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAO;AAC/B;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA,wBAAwB,+DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY,sEAAa,KAAK;AAChE;AACA,kBAAkB,qEAAe;AACjC,oBAAoB,uEAAiB;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gDAAgD,+DAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uDAAQ;AAChD;AACA;AACA,sEAAsE,wDAAS;AAC/E;AACA,wEAAwE,wDAAS;AACjF;AACA,8BAA8B,sEAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA,wCAAwC,uDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wEAAW,gCAAgC,wEAAW;AACnF,gCAAgC,wEAAW,6BAA6B,wDAAS;AACjF;AACA;AACA;AACA;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA,yBAAyB,8DAAU;AACnC,6BAA6B,iEAAQ;AACrC,yBAAyB,+DAAO;AAChC;AACA;AACA;AACA;AACA,kCAAkC,iEAAQ;AAC1C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yBAAyB,+DAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB,qC;;;;;;AC3UA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,SAC+B;AAChC,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,aAAa;AACb;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;AAID;;;;;;;;;ACrpCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACW;AACZ;AAC+B;AACR;AACK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA,yDAAyD,6DAAa,cAAc,6DAAa;AACjG;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,gBAAgB,8EAAc;AAChG;AACA;AACA,wDAAwD,mDAAI;AAC5D;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAY;AACxB;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,CAAC,CAAC,wFAAsB;AACe;AACvC,yD;;;;;;;ACrEA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyC;AACG;AACJ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB,YAAY,6DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB;AACA,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB,iBAAiB,uDAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,kCAAkC,6DAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B;AACA,iBAAiB,6DAAS;AAC1B,iBAAiB,6DAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iEAAW;AACgB;AAC7B,+C;;;;;;ACnKA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;ACvLtC;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,SAC+B;AAChC,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,aAAa;AACb;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;AAID;;;;;;;;;ACrpCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+CAA+C,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,wC;;;;;;;ACzDA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACP;AAChC;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0DAAK,yBAAyB,iEAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAQ,OAAO,iEAAQ,WAAW,iEAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS,iEAAQ,OAAO,iEAAQ,WAAW,iEAAQ,8BAA8B,EAAE;AACvH,wCAAwC,cAAc,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,uC;;;;;;;AChHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB,yC;;;;;;;ACvFA;AAAA;AAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAQ,UAAU,uDAAQ,OAAO,uDAAQ,WAAW,uDAAQ,QAAQ,uDAAQ;AAChG,gBAAgB,uDAAQ,QAAQ,uDAAQ;AACxC;AACA;AACA,oBAAoB,uDAAQ,UAAU,uDAAQ,MAAM,uDAAQ,OAAO,uDAAQ,WAAW,uDAAQ,OAAO,uDAAQ,WAAW,uDAAQ;AAChI,gBAAgB,uDAAQ,QAAQ,uDAAQ,QAAQ,uDAAQ,QAAQ,uDAAQ;AACxE;AACA,eAAe,oDAAK;AACpB;AACA;AACA,CAAC;AACuB;AACxB,yC;;;;;;;AC1CA;AAAA;AACA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACe;AAChB,gC;;;;;;;ACzDA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC,qC;;;;;;;ACPA;AAAA;AAAA;AAAoD;AACb;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,4BAA4B,0DAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAS;AAC5B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,6BAA6B,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC8B;AAC/B,yC;;;;;;;;AC5HA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB,wC;;;;;;;;AChCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,gBAAgB,EAAE;AACrF;AACA,oCAAoC,sCAAsC,EAAE;AAC5E,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,2BAA2B,qDAAqD;AAChF;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsC;AACvC,6C;;;;;;;;AC5GA;AAAA;AAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAAa;AACrD;AACA;AACA,qBAAqB;AACrB;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AAC8B;AAC/B,0C;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AAC+C;AACtD;AACA;AACS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAW,SAAS,2DAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,KAAK;AACtC;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAe,0BAA0B,+DAAe;AACrG;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAAY;AAC7C;AACA;AACA,qCAAqC,yEAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yEAAY;AAC9C;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,sEAAsE,iEAAiB;AACvF;AACA;AACA;AACA,oEAAoE,yBAAyB,uDAAO;AACpG,yEAAyE,EAAE;AAC3E;AACA;AACA,0EAA0E,iEAAiB;AAC3F;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0DAAa;AACrC;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,yBAAyB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,wBAAwB;AACrF;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA,gDAAgD,yBAAyB,uDAAO;AAChF,mEAAmE,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,yEAAY;AACtD;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA,iCAAiC,sBAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yEAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAI;AACtC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,oCAAoC,mDAAI;AACxC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mCAAmC,mDAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,+BAA+B,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,gCAAgC,mDAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,+BAA+B,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB,uDAAO,iBAAiB,EAAE;AACvF,qDAAqD,2BAA2B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAA4C;AACnE;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAA4C;AACnE;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gEAAW;AACpD,yCAAyC,yEAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACiB;AACzB,0C;;;;;;;ACjnBA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6BAA6B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC,yC;;;;;;;ACnEA;AAAO;AACP,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;AC/FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACoD;AACI;AACP;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,gBAAgB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC+B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAK;AAC7B;AACA;AACA,YAAY,6EAAK;AACjB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,mDAAmD,EAAE;AACrD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA,4CAA4C,EAAE;AAC9C;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,qBAAqB;AACrB,iCAAiC,EAAE;AACnC,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,+BAA+B,qDAAM;AACrC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,0EAA0E,6EAAqB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mDAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,mBAAmB;AACrG;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA,wDAAwD;AACxD;AACA;AACA,6DAA6D,mDAAI;AACjE;AACA;AACA,qBAAqB,EAAE,EAAE;AACzB,aAAa;AACb,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6EAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+BAA+B,EAAE;AAC5E;AACA;AACA;AACA,2CAA2C,gCAAgC,EAAE;AAC7E;AACA;AACA,oBAAoB,6EAAK;AACzB;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA,gBAAgB,6EAAK;AACrB;AACA;AACA;AACA;AACA,gBAAgB,6EAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6EAAK;AACxB,2CAA2C;AAC3C;AACA,qBAAqB,EAAE;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B,kD;;;;;;;;AC/fA;AAAO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD,0C;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACwE;AACrC;AACvC;AACU;AACJ;AACuC;AACE;AACN;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,EAAE,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAAK;AACjC;AACA,6BAA6B,0DAAK;AAClC;AACA;AACA;AACA;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAa;AACrB;AACA,YAAY,0DAAa;AACzB;AACA;AACA;AACA,6CAA6C,gEAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uDAAU;AACtD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wCAAwC,uDAAU;AAClD;AACA;AACA;AACA;AACA;AACA,gDAAgD,gEAAW;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAK;AACrC;AACA;AACA,0BAA0B,yEAAY;AACtC,qDAAqD;AACrD;AACA,sBAAsB,mDAAI,8BAA8B,EAAE;AAC1D;AACA;AACA,yDAAyD;AACzD;AACA,0BAA0B,mDAAI,yBAAyB,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA,0BAA0B,yEAAY;AACtC;AACA;AACA;AACA,gBAAgB,0DAAK;AACrB,8BAA8B,gEAAW,0CAA0C,gEAAW;AAC9F,8BAA8B,yEAAY;AAC1C,uDAAuD;AACvD;AACA,0BAA0B,mDAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,mCAAmC,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB,EAAE,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+DAAe;AACxD,iCAAiC,+DAAe;AAChD,iCAAiC,+DAAe;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yBAAyB,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA,qBAAqB,0EAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,sCAAsC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,oDAAS;AACjB,YAAY,yEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB,6BAA6B,gEAAW;AACxC,0BAA0B,yEAAY;AACtC;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA,YAAY,0DAAK;AACjB;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAa;AAC1C;AACA,8BAA8B,uDAAO;AACrC,+BAA+B,wDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iEAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,WAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C,sCAAsC,uDAAO,4CAA4C,uDAAO;AAChG,wCAAwC,uDAAO,kDAAkD,uDAAO;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAO;AACxB,2BAA2B,iHAAwB;AACnD,iBAAiB,uDAAO;AACxB,2BAA2B,mHAAyB;AACpD,iBAAiB,uDAAO;AACxB,iBAAiB,uDAAO;AACxB,2BAA2B,6GAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uBAAuB,EAAE,uBAAuB,gBAAgB,EAAE;AACrH;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iIAAiI;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB,gCAAgC,mEAAS;AACzC;AACA;AACA;AACA,aAAa,mBAAmB,mDAAI,0BAA0B;AAC9D,aAAa,wBAAwB,mDAAI,0BAA0B;AACnE,aAAa,yBAAyB,mDAAI,2BAA2B;AACrE,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa,sBAAsB,mDAAI,4BAA4B;AACnE,aAAa,qBAAqB,mDAAI,2BAA2B;AACjE,aAAa,uBAAuB,mDAAI,2BAA2B;AACnE,aAAa,yBAAyB,mDAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB;AACA,4BAA4B,mEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAS;AAC7B;AACA,wBAAwB,yBAAyB;AACjD,wBAAwB,uBAAuB,mDAAI,6BAA6B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB,4BAA4B,mEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACgB;AACxB,yC;;;;;;;ACjtBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAsB,SAAI,IAAI,SAAI;AAClC,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACyE;AACW;AACjC;AACG;AACM;AACX;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,wCAAwC,6DAAa;AACrD;AACA;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yEAAY;AAC7D,YAAY,0DAAa;AACzB;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,oCAAoC,uDAAU;AAC9C,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA,iDAAiD;AACjD,sBAAsB,gEAAW;AACjC,kDAAkD,EAAE;AACpD;AACA;AACA,8DAA8D,yEAAY;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gEAAW;AACrC,0BAA0B,yEAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,aAAa,yEAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,yEAAY;AACjE;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yEAAY;AACzB,uCAAuC,uEAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0DAAa;AAC5D;AACA;AACA,aAAa,EAAE,EAAE;AACjB;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAS;AACjC;AACA,kDAAkD,0DAAa;AAC/D;AACA;AACA,aAAa,EAAE,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iCAAiC,gEAAW;AAC5C;AACA;AACA,iBAAiB,6DAAa;AAC9B;AACA;AACA,iBAAiB,6DAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAa;AACzC,+BAA+B,6DAAa;AAC5C,uBAAuB,0DAAK;AAC5B,kDAAkD,gEAAW;AAC7D,2BAA2B,oDAAI;AAC/B;AACA;AACA;AACA,eAAe,0DAAK;AACpB,0CAA0C,gEAAW;AACrD;AACA,mBAAmB,oDAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB,uBAAuB,oDAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gDAAgD;AAChD;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW;AACjC;AACA,2CAA2C;AAC3C,sBAAsB,gEAAW,cAAc,gEAAW,qBAAqB,gEAAW;AAC1F,mBAAmB,oDAAI;AACvB;AACA,wCAAwC,yDAAyD,EAAE;AACnG,4CAA4C;AAC5C;AACA,SAAS,EAAE,EAAE,EAAE;AACf;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW;AACjC;AACA,2CAA2C;AAC3C,sBAAsB,gEAAW,cAAc,gEAAW,qBAAqB,gEAAW;AAC1F,mBAAmB,oDAAI;AACvB;AACA,yCAAyC,wDAAwD,EAAE;AACnG,4CAA4C;AAC5C;AACA,SAAS,EAAE,EAAE,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAAK;AACnB,0BAA0B,gEAAW;AACrC;AACA,+CAA+C;AAC/C,0BAA0B,gEAAW,cAAc,gEAAW,qBAAqB,gEAAW;AAC9F,uBAAuB,oDAAI;AAC3B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gDAAgD;AAChD;AACA,aAAa,EAAE,EAAE,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAAK;AACnB,0BAA0B,gEAAW;AACrC;AACA,+CAA+C;AAC/C,0BAA0B,gEAAW,cAAc,gEAAW,qBAAqB,gEAAW;AAC9F,uBAAuB,oDAAI;AAC3B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gDAAgD;AAChD;AACA,aAAa,EAAE,EAAE,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW;AACjC;AACA,2CAA2C;AAC3C,sBAAsB,gEAAW,cAAc,gEAAW,qBAAqB,gEAAW;AAC1F,mBAAmB,oDAAI;AACvB;AACA;AACA,yCAAyC,0DAA0D,EAAE;AACrG,4CAA4C;AAC5C;AACA,SAAS,EAAE,EAAE,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC,yCAAyC,+CAA+C,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gDAAgD,uEAAkB;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA,uDAAuD,yEAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oDAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mEAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mEAAS;AACxC;AACA;AACA;AACA;AACA,iBAAiB,OAAO,YAAY,oBAAoB;AACxD,mDAAmD,UAAU,0BAA0B,oDAAI,wDAAwD,EAAE,EAAE;AACvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iEAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6DAAa;AACnD;AACA;AACA;AACA,sCAAsC,6DAAa;AACnD;AACA;AACA;AACA,sCAAsC,6DAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAI;AAC1B,aAAa;AACb;AACA;AACA;AACA,0BAA0B,oDAAI;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA,sBAAsB,oDAAI;AAC1B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,oDAAI;AAC1B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oDAAI;AAC9B;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mEAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA,8CAA8C,2BAA2B,EAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY;AACrC,yCAAyC,+CAA+C,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B,8C;;;;;;;ACjzBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC+C;AACN;AACU;AACc;AACN;AACN;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,mDAAI;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0DAAK;AAC7B;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0DAAa;AAC5D;AACA,aAAa,EAAE,EAAE;AACjB;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,0DAAa;AAC/D;AACA,aAAa,EAAE,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kBAAkB,0DAAK;AACvB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kBAAkB,0DAAK;AACvB;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA,wDAAwD;AACxD;AACA,uBAAuB,uDAAQ;AAC/B,sBAAsB,uDAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,EAAE,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,uBAAuB,uDAAQ;AAC/B,2BAA2B,uDAAQ;AACnC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,4CAA4C,uDAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA;AACA,8BAA8B,mDAAI;AAClC,qBAAqB;AACrB,aAAa;AACb;AACA;AACA;AACA,6BAA6B,uDAAQ;AACrC;AACA;AACA;AACA,0BAA0B,uDAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mEAAS;AACzC;AACA;AACA,CAAC,CAAC,sFAAsB;AACa;AACrC,qD;;;;;;;ACtNA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACI;AACwB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uDAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sFAAsB;AACY;AACpC,oD;;;;;;;AC5DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AAC6B;AACiB;AACjC;AACS;AACN;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAa;AACzB;AACA;AACA,8CAA8C,oCAAoC,uEAAkB,gBAAgB,EAAE;AACtH;AACA;AACA;AACA,oCAAoC,uDAAU;AAC9C,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,uBAAuB;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA,aAAa,yEAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,yEAAY;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,KAAK;AACjE;AACA,mBAAmB,0DAAK;AACxB;AACA,0BAA0B,yEAAY;AACtC,+CAA+C;AAC/C;AACA;AACA,uCAAuC,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B,EAAE;AACpE;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0DAAa;AACxD;AACA;AACA,SAAS,EAAE;AACX,eAAe,0DAAK;AACpB;AACA,sBAAsB,yEAAY;AAClC,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0DAAa;AAC3D;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA,iCAAiC,gEAAW;AAC5C;AACA;AACA,iBAAiB,6DAAa;AAC9B;AACA;AACA,iBAAiB,6DAAa;AAC9B;AACA;AACA;AACA,mCAAmC,6DAAa;AAChD;AACA;AACA;AACA,mBAAmB,0DAAK;AACxB;AACA,0BAA0B,yEAAY;AACtC,qDAAqD;AACrD;AACA,uBAAuB,mDAAI,2BAA2B,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAa;AAC5C;AACA;AACA,+BAA+B,6DAAa;AAC5C;AACA;AACA,+BAA+B,6DAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAK;AAC3B,sBAAsB,gEAAW,qBAAqB,gEAAW,yBAAyB,gEAAW;AACrG,mBAAmB,mDAAI;AACvB;AACA,mDAAmD,6DAA6D,EAAE;AAClH,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iEAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW,qBAAqB,gEAAW;AACjE,mBAAmB,mDAAI;AACvB;AACA,mDAAmD,2CAA2C,EAAE;AAChG,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC,yCAAyC,+CAA+C,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gDAAgD,uEAAkB;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW,qBAAqB,gEAAW;AACjE,mBAAmB,mDAAI;AACvB;AACA,mDAAmD,yCAAyC,EAAE;AAC9F,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB,sBAAsB,gEAAW,qBAAqB,gEAAW;AACjE,mBAAmB,mDAAI;AACvB;AACA,mDAAmD,2CAA2C,EAAE;AAChG,4CAA4C;AAC5C;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAY;AACxB;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA,YAAY,yEAAY;AACxB;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,wDAAwD,yEAAY;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mDAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mEAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mEAAS;AACxC;AACA;AACA;AACA;AACA,iBAAiB,OAAO,YAAY,oBAAoB;AACxD,mDAAmD,UAAU,0BAA0B,mDAAI,wDAAwD,EAAE,EAAE;AACvJ;AACA;AACA,CAAC;AAC2B;AAC5B,8C;;;;;;;ACtiBA;AAAA;AAAA;AAAqC;AACuB;AAC5D;AACA;AACA;AACA;AACA,+BAA+B,0DAAK;AACpC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA,sBAAsB,yEAAY;AAClC,kDAAkD;AAClD;AACA,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB,yC;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACA;AACK;AACyB;AACtB;AACT;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA;AACA,2BAA2B,yEAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC,CAAC,6EAAiB;AACe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0DAAK;AAC3B;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yEAAY;AACjC,kDAAkD,uEAAkB;AACpE;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa,yEAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iDAAiD,0DAAK;AACtD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,4BAA4B,yEAAY;AACxC,qBAAqB,mDAAI;AACzB;AACA;AACA,yBAAyB,mDAAI;AAC7B;AACA;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA;AACA,yBAAyB,mDAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,GAAG;AAC1C;AACA;AACA,4BAA4B,mDAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,8BAA8B,uDAAO;AACrC,4BAA4B,oDAAS,cAAc,wDAAQ;AAC3D;AACA,4BAA4B,wDAAQ;AACpC;AACA;AACA,gBAAgB,wEAAQ;AACxB,4CAA4C,gCAAgC,EAAE;AAC9E;AACA,+CAA+C,uDAAO;AACtD;AACA,iBAAiB;AACjB,6BAA6B,mDAAI;AACjC,2BAA2B,mDAAI;AAC/B;AACA;AACA;AACA;AACA,2BAA2B,mDAAI;AAC/B,+BAA+B,mDAAI;AACnC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mFAAuB;AACY;AACrC,oD;;;;;;;ACrOA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACgD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,CAAC,CAAC,8DAAiB;AACkB;AAC9B;AACP;AACA;AACA,oC;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACT;AACN;AACsB;AACM;AACL;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+BAA+B,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,+BAA+B,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA,aAAa,yEAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wDAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA;AACA,2DAA2D,mDAAI;AAC/D;AACA,gBAAgB,oDAAS;AACzB;AACA,2DAA2D,mDAAI;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,YAAY,8EAAc;AAC5F;AACA;AACA,CAAC,CAAC,+EAAkB;AACe;AACnC,qD;;;;;;;ACnKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACf;AACmB;AACL;AACc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,eAAe,mDAAI;AACnB;AACA;AACA,eAAe,gEAAW;AAC1B;AACA;AACA;AACA,oDAAoD,8EAAc,eAAe,8EAAc;AAC/F;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gCAAgC,0DAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iEAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2EAAgB;AACQ;AAC1B,2C;;;;;;;ACrFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACM;AACF;AACF;AACW;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,wDAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mDAAI;AAClC,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gBAAgB,oDAAS;AACzB;AACA;AACA,QAAQ,oDAAS;AACjB,wBAAwB,mEAAS;AACjC;AACA;AACA;AACA;AACA;AACA,uDAAuD,mDAAI;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,eAAe,8EAAc;AAC/F;AACA;AACA;AACA,wCAAwC,6DAAa;AACrD;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2EAAgB;AACU;AAC5B,6C;;;;;;;AC7FA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACmE;AACf;AACM;AACM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,uDAAQ;AAC/D,yDAAyD,uDAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mCAAmC,EAAE;AAC7E,aAAa;AACb;AACA;AACA;AACA,wCAAwC,mCAAmC,EAAE;AAC7E,aAAa;AACb;AACA,4BAA4B,mDAAI;AAChC;AACA;AACA;AACA;AACA;AACA,kBAAkB,kEAAqB;AACvC;AACA;AACA;AACA,wCAAwC,uDAAQ;AAChD;AACA;AACA,6CAA6C,uDAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,YAAY,8EAAc;AAC5F;AACA;AACA,eAAe,oDAAS;AACxB;AACA;AACA,eAAe,oDAAS;AACxB;AACA;AACA,CAAC,CAAC,+EAAkB;AACkB;AACtC,sD;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACoE;AACnF;AACsB;AACL;AACP;AACkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0DAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAc,YAAY,8EAAc;AAC5F;AACA;AACA,6BAA6B,qDAAK;AAClC;AACA;AACA,6DAA6D,6DAAa;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAS;AACjB,mCAAmC,mEAAS;AAC5C;AACA;AACA;AACA,2BAA2B,0DAAK;AAChC;AACA,6CAA6C;AAC7C,qBAAqB,mDAAI,iCAAiC,EAAE;AAC5D,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,qBAAqB,EAAE;AACvB;AACA;AACA;AACA,oDAAoD,mDAAI;AACxD;AACA;AACA,uBAAuB,0DAAK;AAC5B;AACA,6CAA6C;AAC7C,qBAAqB,mDAAI,uCAAuC,EAAE;AAClE;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6DAAa;AAC9C;AACA,+BAA+B,0DAAU;AACzC;AACA,2BAA2B,uDAAO;AAClC,4BAA4B,wDAAQ;AACpC;AACA;AACA;AACA,iDAAiD,iEAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAI;AACvB,uBAAuB,mDAAI;AAC3B;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAS,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uDAAO;AACjD,wCAAwC,wDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mDAAI;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yBAAyB;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC,CAAC,+EAAkB;AACkB;AACtC,wD;;;;;;;AC3OA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACc;AACqB;AAChB;AACd;AACW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yBAAyB,0DAAK;AAC9B;AACA;AACA,8BAA8B,+DAAU;AACxC,mEAAmE;AACnE;AACA;AACA;AACA,uBAAuB,oDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAS;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,4DAAO;AACf;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,0DAAK,6BAA6B;AAC9C;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAI;AACvB;AACA,QAAQ,0DAAK;AACb;AACA;AACA,kDAAkD;AAClD,YAAY,0DAAK;AACjB,YAAY,0DAAK;AACjB,iBAAiB,0DAAK;AACtB,gBAAgB,0DAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB,YAAY,0DAAK;AACjB,YAAY,0DAAK;AACjB;AACA,YAAY,0DAAK,6BAA6B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA,sBAAsB,yEAAY;AAClC,iDAAiD;AACjD;AACA,iDAAiD;AACjD;AACA,qBAAqB,EAAE;AACvB,iDAAiD;AACjD;AACA,iDAAiD;AACjD;AACA,qBAAqB,EAAE;AACvB,iDAAiD;AACjD;AACA,kBAAkB,mDAAI;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,iEAAiB;AAC9E;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,SAAS;AACT,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,iDAAiD;AACjD;AACA,iDAAiD;AACjD;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,iDAAiD;AACjD;AACA,sBAAsB,yEAAY;AAClC;AACA;AACA,qBAAqB,EAAE;AACvB;AACA,gCAAgC,0DAAK;AACrC;AACA,0BAA0B,yEAAY;AACtC;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA,sBAAsB,mDAAI;AAC1B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gCAAgC,2BAA2B,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iEAAiB;AAC9D;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACa;AACrB,sC;;;;;;;ACjQA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACmD;AACE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACQ;AAChB,gC;;;;;;;AC7EA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,MAAM;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACkB;AAC1B,2C;;;;;;;AC1DA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACiB;AACzB,0C;;;;;;;AChDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyD;AACrB;AACW;AACH;AAC0B;AACG;AACpB;AACtD;AACA;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B,4BAA4B,mDAAI;AAChC;AACA;AACA;AACA;AACA,YAAY,6FAAiB;AAC7B,6BAA6B,6FAAiB;AAC9C;AACA;AACA,6BAA6B,0FAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mEAAS;AACxB;AACA;AACA;AACA;AACA,mBAAmB,yEAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,kEAAkE,gBAAgB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,gBAAgB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0DAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,kBAAkB,mDAAI,uDAAuD,EAAE;AAC/E;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,kBAAkB,mDAAI,yDAAyD,EAAE;AACjF,2CAA2C;AAC3C;AACA,kDAAkD,EAAE;AACpD;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,kBAAkB,mDAAI,wDAAwD,EAAE;AAChF,2CAA2C;AAC3C;AACA,iDAAiD,EAAE;AACnD;AACA,QAAQ,0DAAK;AACb;AACA,2CAA2C;AAC3C;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,mDAAI,gDAAgD,EAAE,EAAE,EAAE;AACrF;AACA;AACA,oFAAoF,QAAQ,oDAAS,yBAAyB,EAAE;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iEAAW;AACS;AACtB,uC;;;;;;;AC9OA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACoC;AAC8C;AAC3C;AACQ;AACH;AACS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA,sBAAsB,mDAAI;AAC1B,4BAA4B,mDAAI;AAChC,+BAA+B,4DAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,mDAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,mEAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB,gEAAgE,oBAAoB,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,yBAAyB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oDAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,wBAAwB,uDAAQ,SAAS,uDAAQ,OAAO,uDAAQ,WAAW,uDAAQ;AACnF,YAAY,uDAAQ,QAAQ,uDAAQ,OAAO,uDAAQ;AACnD,0BAA0B,uDAAQ,SAAS,uDAAQ,QAAQ,uDAAQ;AACnE,YAAY,uDAAQ,QAAQ,uDAAQ,OAAO,uDAAQ,OAAO,uDAAQ;AAClE,mBAAmB,yEAAY;AAC/B;AACA;AACA;AACA;AACA,uBAAuB,0DAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA,YAAY,0DAAK;AACjB;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,kBAAkB,mDAAI,yDAAyD,EAAE;AACjF,2CAA2C;AAC3C;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,sBAAsB,EAAE;AACxB,8CAA8C;AAC9C;AACA;AACA,2BAA2B,mDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE,EAAE,EAAE;AACjB;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,kBAAkB,mDAAI,sDAAsD,EAAE;AAC9E,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,sBAAsB,EAAE;AACxB;AACA,QAAQ,0DAAK;AACb,6CAA6C;AAC7C;AACA,kBAAkB,mDAAI,sDAAsD,EAAE;AAC9E,2CAA2C;AAC3C;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,sBAAsB,EAAE;AACxB,6CAA6C,0BAA0B,EAAE;AACzE,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,sBAAsB,EAAE,EAAE,EAAE;AAC5B;AACA,QAAQ,0DAAK;AACb;AACA,2CAA2C;AAC3C;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,mDAAI,+CAA+C,EAAE;AAChF,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,mDAAI,+CAA+C,EAAE,EAAE,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oDAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mDAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mDAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,oDAAS;AACrB;AACA;AACA,iBAAiB,oDAAS;AAC1B;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uDAAQ;AACrD;AACA,iBAAiB;AACjB;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAI;AAC3B;AACA;AACA;AACA,yCAAyC,uDAAQ;AACjD,aAAa;AACb,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mDAAI;AAC/B,iBAAiB;AACjB;AACA;AACA,6BAA6B,mDAAI;AACjC,mCAAmC;AACnC;AACA,yBAAyB,uDAAQ;AACjC;AACA;AACA,yBAAyB,uDAAQ;AACjC;AACA;AACA,yBAAyB,uDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mDAAI;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iEAAW;AACc;AAC3B,6C;;;;;;;ACxrBA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACsC;AACM;AACG;AACa;AAC7D;AACA;AACA;AACA;AACA;AACA,sBAAsB,oDAAI;AAC1B,4BAA4B,oDAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gFAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mEAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iEAAW;AACa;AAC1B,2C;;;;;;;ACrEA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACmD;AACE;AACC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0EAAY;AAChC;AACA,sBAAsB,2DAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACgB;AACxB,yC;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC2D;AACN;AACc;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uFAAkB;AAClC;AACA;AACA;AACA,sBAAsB,2DAAW,SAAS,2DAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA,wDAAwD,sBAAsB,EAAE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,2BAA2B,EAAE;AACjF,oDAAoD,4BAA4B,EAAE;AAClF;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA,mCAAmC,oDAAI,8FAA8F,oDAAI;AACzI;AACA;AACA,mBAAmB,oDAAI;AACvB;AACA;AACA;AACA;AACA,uBAAuB,yEAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAM;AACkB;AAC1B,2C;;;;;;;AC/IA;AAAA;AAAA;AAAA;AAAqC;AACmB;AACyC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,kCAAkC,+DAAe;AACjD;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB,qCAAqC,oHAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA,gDAAgD,yBAAyB,EAAE;AAC3E,kCAAkC,6BAA6B,EAAE;AACjE;AACA;AACA;AACA,gBAAgB,0DAAK;AACrB,2CAA2C;AAC3C;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4CAA4C;AAC5C,sCAAsC,EAAE;AACxC,4CAA4C;AAC5C;AACA,qBAAqB,oDAAI,6CAA6C,EAAE,EAAE,EAAE,EAAE,EAAE;AAChF,2CAA2C;AAC3C,yCAAyC,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;AAC9B,gD;;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAqD;AAChB;AACiB;AACf;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE;AACA;AACA;AACA,aAAa;AACb;AACA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,4DAA4D,kBAAkB,EAAE;AAChF;AACA;AACA;AACA;AACA;AACA,oBAAoB,0DAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0DAAK;AACtC;AACA;AACA,oCAAoC,0DAAK;AACzC;AACA;AACA;AACA;AACA,uDAAuD,0BAA0B,EAAE;AACnF;AACA,gCAAgC,0DAAK;AACrC;AACA;AACA;AACA,mDAAmD;AACnD;AACA,sDAAsD;AACtD;AACA,2BAA2B,oDAAI;AAC/B,8EAA8E,EAAE,EAAE,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA,wCAAwC,0DAAK;AAC7C;AACA,2CAA2C,0DAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA,mCAAmC,0DAAK;AACxC;AACA,8DAA8D;AAC9D;AACA,uBAAuB,oDAAI;AAC3B,qEAAqE,EAAE;AACvE;AACA,kEAAkE;AAClE;AACA,2BAA2B,oDAAI;AAC/B,wEAAwE,EAAE;AAC1E;AACA;AACA,QAAQ,0DAAK;AACb,2CAA2C;AAC3C;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4CAA4C;AAC5C,sCAAsC,EAAE;AACxC,4CAA4C;AAC5C;AACA,qBAAqB,oDAAI,8CAA8C,EAAE,EAAE,EAAE,EAAE,EAAE;AACjF,2CAA2C;AAC3C;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4CAA4C;AAC5C,sCAAsC,EAAE;AACxC,4CAA4C;AAC5C;AACA,qBAAqB,oDAAI,8CAA8C,EAAE,EAAE,EAAE,EAAE,EAAE;AACjF;AACA;AACA,YAAY,0DAAK;AACjB,+CAA+C;AAC/C;AACA,kDAAkD;AAClD;AACA,uBAAuB,oDAAI;AAC3B,2EAA2E,EAAE,EAAE,EAAE;AACjF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iCAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iCAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAI;AACvB;AACA,mBAAmB,oDAAI;AACvB;AACA,mBAAmB,oDAAI;AACvB,eAAe,oDAAI;AACnB;AACA;AACA,2BAA2B,kEAAmB;AAC9C,gDAAgD,gBAAgB;AAChE;AACA,+BAA+B,yBAAyB;AACxD;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,sCAAsC,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8BAA8B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qBAAqB,EAAE;AACnF,4DAA4D,qBAAqB,EAAE;AACnF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gCAAgC,oCAAoC;AACpE;AACA;AACA,uDAAuD,8BAA8B,EAAE;AACvF,uDAAuD,8BAA8B,EAAE;AACvF;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,yBAAyB,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,sBAAsB,EAAE;AAC1F;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mEAAS;AACzC;AACA;AACA,CAAC;AAC+B;AAChC,kD;;;;;;;AC7aA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,mBAAmB;AAC/E;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gEAAgE,mBAAmB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qCAAqC;AACjG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,qCAAqC;AAClG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,qCAAqC;AACpG;AACA;AACA;AACA;AACA,CAAC;AAC+B;AAChC,6C;;;;;;;;;;;;;;;;;;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC,yCAAyC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B,iD;;;;;;;;AC7DA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACI;AACL;AACsC;AAC3E;AACkE;AACN;AAC5D,IAAI,iDAAwB;AAC5B;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oCAAK;AACpC;AACA,sBAAsB,qCAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAK;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,6DAA6D;AAC7D;AACA,kCAAkC,qCAAY;AAC9C,iEAAiE,EAAE;AACnE;AACA;AACA;AACA,uDAAuD;AACvD;AACA,kCAAkC,qCAAY;AAC9C,wDAAwD;AACxD;AACA,0CAA0C,EAAE,EAAE,EAAE;AAChD;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,8BAA8B,qCAAY;AAC1C,mEAAmE,EAAE;AACrE;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,8BAA8B,qCAAY;AAC1C;AACA,sCAAsC,EAAE;AACxC;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,kBAAI;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,yBAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA,6BAA6B,UAAU;AACvC;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAI;AAC1B;AACA;AACA,8BAA8B,kBAAI;AAClC,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,CAAC,CAAC,wDAAsB;AACY;AACpC,oD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClLsC;AAC6B;AAC9B;AACc;AACS;AAC5D,IAAI,mCAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,sBAAsB,oCAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qCAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+BAAa;AAClC;AACA,qBAAqB,+BAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAAK;AACpB;AACA,sBAAsB,qCAAY;AAClC,2CAA2C;AAC3C;AACA,wBAAwB,EAAE;AAC1B;AACA;AACA;AACA;AACA,iCAAiC,4BAAW;AAC5C;AACA;AACA,iBAAiB,+BAAa;AAC9B;AACA;AACA,iBAAiB,+BAAa;AAC9B;AACA;AACA,iBAAiB,+BAAa;AAC9B;AACA;AACA;AACA,sBAAsB,oCAAK;AAC3B;AACA,sBAAsB,qCAAY;AAClC,iDAAiD;AACjD;AACA,mBAAmB,kBAAI,2BAA2B,EAAE;AACpD,mDAAmD,6DAA6D,EAAE;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAAa;AAC5C;AACA;AACA,+BAA+B,+BAAa;AAC5C;AACA;AACA,+BAA+B,+BAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mCAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B,8C;;ACnKA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyD;AACwD;AAC7E;AACQ;AACS;AACN;AAC6B;AAC7E,IAAI,sBAAU;AACd;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,EAAE,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa,mBAAmB,kBAAI,0BAA0B;AAC9D,aAAa,wBAAwB,kBAAI,0BAA0B;AACnE,aAAa,yBAAyB,kBAAI;AAC1C;AACA,QAAQ,oCAAK;AACb;AACA,sBAAsB,qCAAY;AAClC,sBAAsB,6BAAW;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mBAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iCAAe;AACxD,iCAAiC,iCAAe,0BAA0B,iCAAe;AACzF;AACA;AACA;AACA,qBAAqB,mCAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,wDAAwD,yBAAyB,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4BAA4B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oCAAK;AACb,sBAAsB,4BAAW,0CAA0C,4BAAW;AACtF,sBAAsB,qCAAY;AAClC,mBAAmB,kBAAI;AACvB,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS,EAAE,EAAE;AACb,YAAY,qCAAY;AACxB,YAAY,oCAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,6CAA6C;AAC/F,uBAAuB;AACvB;AACA,gCAAgC,+BAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,4BAA4B,+BAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oCAAK;AACjB;AACA,0BAA0B,qCAAY;AACtC;AACA;AACA;AACA,gBAAgB,oCAAK;AACrB;AACA,gBAAgB,qCAAY;AAC5B,gBAAgB,oCAAK;AACrB;AACA;AACA;AACA,gBAAgB,oCAAK;AACrB;AACA;AACA;AACA;AACA,QAAQ,oCAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+BAAa;AAC1C;AACA,8BAA8B,yBAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kBAAkB,iCAAe;AACjC,oBAAoB,mCAAiB;AACrC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAM;AACc;AACtB,uC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxUA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqD;AACN;AACG;AACW;AACH;AAC3D,IAAI,8BAAc;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAW;AACjC;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+BAAS;AAC1B,2BAA2B,iCAAU;AACrC,iBAAiB,+BAAS;AAC1B,2BAA2B,4CAAe;AAC1C;AACA,2BAA2B,yCAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oBAAM;AACkB;AAC1B,2C;;ACnDA,IAAI,2BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACkF;AACzB;AACrB;AACW;AACM;AACN;AACH;AACU;AACJ;AACnD,IAAI,qCAAiB;AACrB,IAAI,2BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+BAAS,WAAW,+BAAS,QAAQ,+BAAS;AACvE;AACA;AACA,aAAa,KAAK,+BAAS,iBAAiB,sBAAI,iDAAiD;AACjG,aAAa,KAAK,+BAAS,cAAc,sBAAI,6CAA6C;AAC1F,aAAa,KAAK,+BAAS,mBAAmB,sBAAI;AAClD;AACA;AACA;AACA;AACA,4BAA4B,+BAAS;AACrC,6DAA6D,2BAA2B,+BAAS,UAAU,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6BAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAAS;AACpC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC,sBAAI;AACxC;AACA,YAAY,oCAAK;AACjB;AACA;AACA,YAAY,oCAAK;AACjB;AACA;AACA;AACA;AACA;AACA,6BAA6B,oCAAK;AAClC;AACA,2CAA2C;AAC3C,sBAAsB,4BAAW,qBAAqB,qCAAY;AAClE,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oCAAK;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oCAAK;AAC9B;AACA;AACA;AACA,YAAY,oCAAK;AACjB;AACA;AACA,sBAAsB,oCAAK;AAC3B;AACA;AACA;AACA,YAAY,oCAAK;AACjB;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA,QAAQ,oCAAK;AACb,2CAA2C;AAC3C;AACA,mBAAmB,sBAAI;AACvB,yCAAyC;AACzC,gDAAgD,EAAE;AAClD,uCAAuC,iCAAiC,EAAE;AAC1E,qBAAqB,EAAE;AACvB,wBAAwB,oCAAK;AAC7B;AACA;AACA,0BAA0B,oCAAK;AAC/B;AACA;AACA;AACA,sBAAsB,oCAAK;AAC3B;AACA;AACA;AACA,iCAAiC,oCAAK;AACtC,8CAA8C,8BAA8B,EAAE;AAC9E;AACA;AACA,2BAA2B,sBAAI;AAC/B;AACA;AACA;AACA,gBAAgB,oCAAK;AACrB,8CAA8C,+BAA+B,EAAE;AAC/E;AACA;AACA,2BAA2B,sBAAI;AAC/B;AACA;AACA,sCAAsC,oCAAK;AAC3C,8CAA8C,8FAA8F,EAAE;AAC9I;AACA;AACA,2BAA2B,sBAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yBAAW;AAClD;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,qCAAY;AACxB;AACA;AACA;AACA,gBAAgB,oCAAK;AACrB;AACA,0BAA0B,4BAAW;AACrC,6CAA6C,4BAAW;AACxD,4CAA4C,sBAAI;AAChD;AACA;AACA;AACA;AACA,4CAA4C,sBAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sBAAI;AAChD;AACA;AACA;AACA;AACA;AACA,4CAA4C,sBAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iDAAiD,4BAA4B,EAAE;AAC/E;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD,iDAAiD,eAAe,eAAe,eAAe;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4CAA4C,4BAAW;AACvD;AACA,YAAY,oCAAK;AACjB;AACA,gBAAgB,oCAAK;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAAK;AACpB,2BAA2B,eAAe,kBAAkB,eAAe;AAC3E;AACA,4CAA4C;AAC5C,sBAAsB,4BAAW;AACjC;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb,yCAAyC;AACzC;AACA,gDAAgD,EAAE;AAClD;AACA,4CAA4C;AAC5C,sBAAsB,4BAAW;AACjC;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb,uCAAuC,wCAAwC,EAAE;AACjF;AACA;AACA;AACA,sBAAsB,oCAAK;AAC3B,sBAAsB,4BAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe,eAAe,eAAe;AAC9F;AACA;AACA,SAAS;AACT,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,6CAA6C,6BAA6B,EAAE;AAC5E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC,6BAA6B,EAAE;AACpE;AACA;AACA;AACA;AACA,uBAAuB,sBAAI,2CAA2C,sBAAI;AAC1E,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC,6BAA6B,EAAE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+BAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB,EAAE;AAC1E;AACA;AACA,kBAAkB,6BAAe;AACjC,iCAAiC,+BAAiB,YAAY,+BAAiB;AAC/E;AACA,SAAS;AACT;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8BAAc;AACa;AAC7B,+C;;;;;;ACrfA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,SAC+B;AAChC,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,aAAa;AACb;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;AAID;;;;;;;;;ACrpCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACuC;AACiB;AACb;AACE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,yBAAyB,+DAAU;AACnC;AACA;AACA,yBAAyB,+DAAU;AACnC;AACA;AACA,yBAAyB,+DAAU;AACnC;AACA;AACA,yBAAyB,+DAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0DAAK,2BAA2B;AACxD;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,yCAAyC,6CAA6C;AACtF,kDAAkD;AAClD;AACA;AACA;AACA;AACA,0BAA0B,iEAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4EAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACqB;AACtB,uC;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,SAC+B;AAChC,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,aAAa;AACb;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;AAID;;;;;;;;;ACrpCA;AAAA;AAAA;AAAA;AAAA;AAA+C;AACV;AACS;AACP;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAc;AAC1C;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD,mCAAmC,yCAAyC,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,yDAAO;AACnD,gCAAgC,kCAAkC;AAClE,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mBAAmB,yDAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAQ;AACpC,yBAAyB,0DAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB,2C;;;;;;;;AC1OA;AAAA;AAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uDAAQ,OAAO,uDAAQ,WAAW,uDAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,uCAAuC,EAAE;AAChG;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uDAAQ;AAC/B;AACA,uBAAuB,uDAAQ;AAC/B;AACA,uBAAuB,uDAAQ;AAC/B;AACA,uBAAuB,uDAAQ;AAC/B;AACA,uBAAuB,uDAAQ;AAC/B;AACA,uBAAuB,uDAAQ;AAC/B;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA,CAAC;AAC8B;AAC/B,iD;;;;;;;AC7KA;AAAA;AAAuC;AACvC;AACA;AACA;AACA;AACA,YAAY,oDAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC+B;AAChC,yC;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAI,IAAI,SAAI;AAClC,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AAC8E;AACZ;AAChB;AACqB;AACf;AACc;AACJ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,4EAAiB;AAC7C;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6EAAK;AAChC;AACA,6BAA6B,6EAAK;AAClC;AACA;AACA;AACA;AACA,6BAA6B,oDAAK;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2DAAY;AAC5C,qCAAqC,sFAAqB;AAC1D,2BAA2B,yEAAc;AACzC;AACA;AACA;AACA;AACA,8BAA8B,oDAAK,cAAc;AACjD,4BAA4B,oDAAK,cAAc;AAC/C,qBAAqB,oDAAK,UAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAK;AACb,yDAAyD;AACzD,SAAS;AACT;AACA,QAAQ,oDAAK;AACb,yDAAyD;AACzD,SAAS;AACT;AACA,qBAAqB,uDAAQ,6BAA6B,0CAA0C,uDAAQ;AAC5G;AACA,QAAQ,oDAAK;AACb,yDAAyD;AACzD,SAAS;AACT;AACA,wCAAwC,oDAAK,uBAAuB,oDAAK,wBAAwB,oDAAK;AACtG,YAAY,uDAAQ;AACpB;AACA,QAAQ,oDAAK;AACb;AACA,6DAA6D;AAC7D;AACA,SAAS;AACT,qBAAqB,uDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,kCAAkC,EAAE;AAChG,QAAQ,oDAAK;AACb;AACA;AACA;AACA,YAAY,yEAAa;AACzB;AACA;AACA;AACA,6CAA6C,mEAAW;AACxD;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,sEAAU;AAC9C,gDAAgD,mEAAW;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,4EAAiB;AACvF;AACA;AACA,mCAAmC,6BAA6B,EAAE;AAClE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,gBAAgB,6EAAK;AACrB;AACA;AACA;AACA;AACA,oBAAoB,6EAAK;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oCAAoC,sBAAsB,EAAE;AAC5D,iCAAiC,kBAAkB,EAAE;AACrD,6CAA6C,sBAAsB,EAAE;AACrE;AACA;AACA;AACA,yBAAyB,6EAAK;AAC9B;AACA;AACA,iCAAiC,6EAAK;AACtC;AACA;AACA,sCAAsC,6EAAK;AAC3C;AACA;AACA,4BAA4B,6EAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6EAAK;AACrB;AACA;AACA,SAAS;AACT;AACA,QAAQ,6EAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6EAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6EAAK;AACb;AACA;AACA,YAAY,6EAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,6EAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,yEAAa;AACzB;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,sEAAU;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB,6EAAK;AAC5B;AACA;AACA,+BAA+B,6EAAK;AACpC;AACA;AACA;AACA,oCAAoC,6EAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sCAAsC,sDAAO;AAC7C;AACA;AACA;AACA,+EAA+E,4EAAiB;AAChG;AACA;AACA;AACA;AACA;AACA,oBAAoB,6EAAK;AACzB;AACA;AACA;AACA,aAAa;AACb,yCAAyC,sBAAsB,UAAU,EAAE;AAC3E;AACA;AACA,YAAY,6EAAK;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE,kCAAkC,sDAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kBAAkB;AAC3D,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,yBAAyB,6EAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,sEAAsE,gBAAgB,EAAE;AACxF;AACA;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,YAAY,IAAI,YAAY;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,qCAAqC,6BAA6B,EAAE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6EAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,0BAA0B,6EAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mDAAI;AACxC,2BAA2B,mBAAmB;AAC9C,2BAA2B,kBAAkB;AAC7C,2BAA2B,MAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6EAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sBAAsB,6EAAK;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,0EAAe;AAC3C;AACA;AACA,iCAAiC,0EAAe;AAChD;AACA;AACA,iCAAiC,0EAAe;AAChD;AACA;AACA;AACA,gDAAgD,6EAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,gDAAgD,oBAAoB;AACpE;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,4BAA4B,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6EAAK;AACxB;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,EAAE,EAAE;AACjB;AACA;AACA,eAAe,6EAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qFAAqB;AAC9C;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA,yBAAyB,qFAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wCAAwC,sDAAsD,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,4EAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,4EAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB,qC;;;;;;;AC7pCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,KAA4D;AAC7D,CAAC,SAC+B;AAChC,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,aAAa;AACb;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;AAID;;;;;;;;;ACrpCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACyB;AAC1B;AACW;AACM;AACjB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iBAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2DAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAAe;AACpE,yCAAyC,+DAAe;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0DAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,iCAAiC,EAAE;AAC3G,6BAA6B;AAC7B,yBAAyB;AACzB,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2DAAW;AAC5D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oCAAoC,2DAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAe;AACzC;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAe;AACzC;AACA,iBAAiB;AACjB,6CAA6C,UAAU,gBAAgB,EAAE,UAAU,EAAE,oBAAoB,iBAAiB,iCAAiC,EAAE,EAAE;AAC/J,aAAa,EAAE,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB,mDAAI;AACzB;AACA,mBAAmB,mDAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mDAAI;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0DAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,mDAAI,+BAA+B,mDAAI;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mDAAI,uCAAuC,UAAU;AACnE;AACA,mBAAmB,mDAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mDAAI;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0DAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,uBAAuB,mDAAI,8BAA8B,mDAAI,yCAAyC,UAAU;AAChH;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0DAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gCAAgC,iBAAiB;AACjD,mBAAmB,yEAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAK;AACpB;AACA;AACA;AACA,iDAAiD;AACjD;AACA,yBAAyB,mDAAI,2BAA2B,EAAE;AAC1D,+CAA+C;AAC/C;AACA,iDAAiD;AACjD;AACA;AACA;AACA,qCAAqC,EAAE;AACvC,iDAAiD;AACjD,8BAA8B,EAAE;AAChC,+CAA+C;AAC/C;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA,sCAAsC,iBAAiB,gBAAgB,EAAE,EAAE;AAC3E,yCAAyC,iBAAiB,iCAAiC,EAAE;AAC7F,aAAa;AACb,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,iCAAiC,EAAE;AACnG;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,iCAAiC,mEAAS;AAC1C,kDAAkD,UAAU,+BAA+B,EAAE,EAAE;AAC/F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0DAA0D,EAAE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAI;AACwB;AAC9B,2C;;;;;;;;ACtsBA;AAAA;AAAA;AAAA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC+C;AAC8B;AAC7E;AACA;AACA;AACA;AACA,iCAAiC,qEAAqB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,gBAAgB,EAAE;AACtF;AACA,oCAAoC,wCAAwC,EAAE;AAC9E;AACA,wCAAwC,uDAAO,qBAAqB,yCAAyC,0BAA0B,EAAE,aAAa;AACtJ;AACA,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB,uDAAO,mBAAmB,EAAE;AACrF,iDAAiD,yBAAyB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0DAAU;AAC9C,gCAAgC,uDAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA,qDAAqD,yBAAyB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC,6BAA6B,EAAE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAa;AAC7C;AACA,aAAa;AACb;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kEAAkE,WAAW,uBAAuB;AACpG;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,gBAAgB,EAAE;AAC5F;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA;AACA;AACA,uDAAuD,0BAA0B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,4BAA4B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuC;AACxC,+C;;;;;;;;AC5KA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B,8C;;;;;;;ACvBA;AAAA;AAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qEAAqB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,gBAAgB,EAAE;AAChG;AACA,oCAAoC,8CAA8C,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,gCAAgC,0BAA0B;AAC1D,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,yCAAyC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAiC;AACjE;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwC;AACzC,sD;;;;;;;;;;;;;;ACnKA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;ACvLtC;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqD;AACtD;AACA;AACA;AACA,IAAI,qCAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oBAAM;AACqB;AAC7B,+C;;;;;ACrEA,IAAI,2BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACmD;AACN;AACY;AAC1D;AACA;AACA;AACA,IAAI,8BAAU;AACd,IAAI,2BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uBAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yDAAyD,yBAAW;AACpE;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qCAAiB;AACG;AACtB,+C;;;;;;;;;;;;;;;;;;;;ACvLA,IAAI,+BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACsE;AACT;AACzB;AACM;AACA;AACE;AAC7C,IAAI,6CAAqB;AACzB,IAAI,+BAAS;AACb;AACA;AACA,0CAA0C,2BAA2B;AACrE;AACA;AACA;AACA,0BAA0B,4BAAW;AACrC,sBAAsB,yBAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oCAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,kBAAkB,MAAM;AACpD;AACA,kBAAkB,sBAAQ;AAC1B,2BAA2B,0BAAQ,SAAS,0BAAQ,OAAO,0BAAQ,QAAQ,0BAAQ,QAAQ,0BAAQ,QAAQ,0BAAQ;AACnH,SAAS;AACT,qCAAqC,0BAAQ;AAC7C,iCAAiC,sBAAQ;AACzC;AACA;AACA;AACA,gBAAgB,uBAAS;AACzB;AACA,SAAS;AACT,2BAA2B,mBAAK;AAChC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iCAAU;AACjD;AACA;AACA,uCAAuC,iCAAU;AACjD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,oCAAK;AACpB;AACA,2CAA2C;AAC3C,+DAA+D,EAAE;AACjE,2CAA2C;AAC3C,4DAA4D,EAAE;AAC9D;AACA;AACA;AACA;AACA,eAAe,oCAAK;AACpB;AACA,2CAA2C;AAC3C,+DAA+D,EAAE;AACjE,2CAA2C;AAC3C,4DAA4D,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oBAAM;AACyB;AACjC,mD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxJA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACiD;AACpB;AAC9B;AACA;AACA;AACA,IAAI,+BAAc;AAClB,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6BAAe;AAC5D,qCAAqC,6BAAe,0BAA0B,6BAAe;AAC7F;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA,CAAC,CAAC,oBAAI;AACoB;AAC1B,4C;;AC7EA,IAAI,6BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC2D;AACR;AACpD;AACA;AACA;AACA,IAAI,wCAAkB;AACtB,IAAI,6BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8BAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+BAAc;AACc;AAC9B,iD;;;;;AC1CA,IAAI,mBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC8D;AACL;AACrB;AACiB;AACxB;AAC9B;AACA;AACA;AACA,IAAI,sBAAU;AACd,IAAI,mBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qCAAY;AACpB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yBAAW;AAC5D,iDAAiD,yBAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6BAAe;AACpD,qCAAqC,6BAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,6CAA6C,yBAAW;AACxD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wEAAwE,sCAAsC,EAAE;AAChH;AACA,oDAAoD,kCAAkC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sBAAI;AAClC;AACA,oCAAoC,sBAAI;AACxC;AACA,kCAAkC,sBAAI;AACtC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oCAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2EAA2E;AACnI,oDAAoD,qBAAqB;AACzE,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6BAAe;AACrC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,+CAA+C,kBAAkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sBAAI;AACxC;AACA,kCAAkC,sBAAI;AACtC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gCAAgC,uBAAS;AACzC;AACA;AACA;AACA,sCAAsC,oCAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,yBAAW;AACpE;AACA;AACA;AACA,wDAAwD,2EAA2E;AACnI,oDAAoD,qBAAqB;AACzE;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAI,kCAAkC,sBAAI,0CAA0C,WAAW;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,qBAAqB;AACrE;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yBAAW;AAC5D;AACA;AACA,iDAAiD,yBAAW;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oBAAI;AACgB;AACtB,uC;;;;;;;;;;;;;;;;;;;;AC3tBsC;AACtC;AACA,IAAI,sBAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,sBAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,EAAE;AAC5B;AACA,+BAA+B,GAAG;AAClC,wDAAwD,GAAG;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,UAAU;AACtD;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,WAAW;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,kDAAkD,WAAW,EAAE,UAAU;AACzE;AACA;AACA;AACA;AACA;AACA,2EAA2E,WAAW;AACtF;AACA;AACA;AACA;AACA;AACA,iJAAiJ,UAAU,qBAAqB,WAAW;AAC3L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,0C;;ACnQoD;AACpD,+BAAiB;AACjB;AACA;AACA,+BAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;ACbyC;AACD;AACF;AACA;AACA;AACD;AACS;AACA;AACf;AACY;AACD;AACD;AACS;AACJ;AACN;AACE;AACE;AACE;AACO;AACC;AACI;AACJ;AACmB;AACD;AACF;AACJ;AACQ;AACF;AACJ;AACO;AACF;AACC;AACR;AACM;AACK;AACV;AACF;AACW;AACJ;AACX;AACE;AACzB;AACG;AACJ;AACM;AACd;AACW;AACC;AACK;AACV;AACH;AACE;AACG;AACG;AACN;AACI;AACO;AACf;AACT;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAI,OAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAG;AACnB;AACA;AACA;AACA;AACA,gBAAgB,OAAG;AACnB;AACA;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf,gBAAgB,OAAG;AACnB;AACA;AACA;AACA,oBAAoB,OAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,+B;;ACrGA,IAAI,oBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACoD;AAClB;AACnC,IAAI,wBAAW;AACf,IAAI,oBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAO;AAC/B;AACA;AACA;AACA,2BAA2B,4BAA4B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAS;AACY;AACvB,wC;;AC/FA,IAAI,uBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC6C;AACX;AACnC,IAAI,6BAAa;AACjB,IAAI,uBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,yBAAW;AACY;AACzB,2C;;ACvDA,IAAI,gBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AAC0D;AACd;AACK;AACf;AACnC,IAAI,gBAAO;AACX,IAAI,gBAAS;AACb;AACA;AACA;AACA;AACA,eAAe,OAAG;AAClB;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO,qBAAO,QAAQ;AACnD,YAAY,OAAG;AACf;AACA,mBAAmB,wBAAW;AAC9B;AACA;AACA,oCAAoC,oBAAoB;AACxD,YAAY,OAAG;AACf;AACA,mBAAmB,6BAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE,YAAY,OAAG;AACf;AACA;AACA,+DAA+D,sBAAQ,OAAO,sBAAQ,OAAO,sBAAQ;AACrG,yCAAyC,qBAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA,YAAY,OAAG;AACf;AACA;AACA;AACA;AACA,CAAC,CAAC,mBAAK;AACY;AACnB,oC;;;;;ACzEA,IAAI,gBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACiD;AACN;AACT;AACnC,IAAI,oBAAW;AACf,IAAI,gBAAS;AACb;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAI;AAC3B,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAI;AACtC;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAI;AACnC,2BAA2B,kBAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAO;AAC1B;AACA;AACA,CAAC,CAAC,uBAAS;AACY;AACvB,oC;;;;;ACrJ4C;AACe;AACjB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAQ;AACZ;AACA,wBAAwB,4BAAU;AAClC;AACA;AACA;AACA;AACA,gCAAgC,2CAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4DAA4D,4D;AAC5D;AACA;AACA;AACA;AACA,6CAA6C,wBAAwB,6BAA6B,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,iCAAiC,GAAG;AAC9K;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,yHAAyH,EAAE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,oCAAK;AAC/B,kDAAkD;AAClD;AACA,gHAAgH,EAAE;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kDAAkD;AAClD,+CAA+C;AAC/C;AACA,oJAAoJ,EAAE;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oCAAK;AAC/B,kDAAkD;AAClD,yFAAyF,OAAO;AAChG,8GAA8G,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kDAAkD;AAClD,+CAA+C;AAC/C,+HAA+H,EAAE;AACjI;AACA;AACA;AACA;AACA;AACA,0BAA0B,oCAAK;AAC/B,kDAAkD;AAClD;AACA,8GAA8G,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA,0BAA0B,oCAAK;AAC/B,kDAAkD;AAClD,qBAAqB,SAAS,GAAG,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,mBAAmB;AAC/B;AACA;AACA;AACA;AACA,gDAAgD,mBAAmB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAO;AAC9B;AACA;AACA;AACA,SAAS,GAAG,mBAAmB;AAC/B;AACA;AACA;AACA,8BAA8B,qBAAO;AACrC;AACA;AACA;AACA,qBAAqB,GAAG,mBAAmB;AAC3C,4CAA4C,mCAAmC,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACmB;AACb;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2CAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI,oCAAK;AACT;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,KAAK,EAAE,EAAE;AACT;AACA,QAAQ,oCAAK;AACb,8CAA8C;AAC9C;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb;AACA;AACA,qC;;ACtTqD;AACV;AACqB;AACpB;AACV;AACgD;AACf;AACnE,uBAAS;AACT;AACA;AACA;AACA;AACA,uBAAS;AACT;AACA;AACA,QAAQ,OAAG;AACX,YAAY,OAAG;AACf;AACA,mEAAmE,YAAY,oBAAW,GAAG,EAAE;AAC/F,+DAA+D,YAAY,gBAAO,qBAAqB,EAAE;AACzG,sEAAsE,YAAY,iDAAoB,UAAU,EAAE;AAClH,sEAAsE,YAAY,mEAA6B,UAAU,EAAE;AAC3H,gBAAgB,OAAG;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,CAAC,OAAG;AACtC;AACA;AACA,8BAA8B,kBAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,oBAAoB,qBAAO;AAC3B;AACA;AACA;AACA;AACA,aAAa;AACb,yCAAyC;AACzC;AACA;AACA,aAAa,EAAE,EAAE;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sC;;;;;ACxHsB;AACqB;AACV;AACO;AACH;AACP;AACW;AACzC,sC;;ACPuC;AACJ;AACmB;;AAEP;AACJ;;AAE3C;AACA,OAAO,cAAa;AACpB,KAAK,mBAAW;AAChB;;AAE+B;;AAE/B,0B","file":"eq.enterprise.js","sourcesContent":[" \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 = 112);\n","export var EntityAttrKind;\r\n(function (EntityAttrKind) {\r\n EntityAttrKind[EntityAttrKind[\"Data\"] = 0] = \"Data\";\r\n EntityAttrKind[EntityAttrKind[\"Virtual\"] = 1] = \"Virtual\";\r\n EntityAttrKind[EntityAttrKind[\"Lookup\"] = 2] = \"Lookup\";\r\n})(EntityAttrKind || (EntityAttrKind = {}));\r\n//# sourceMappingURL=entity_attr_kind.js.map","export var EditorTag = {\r\n /** Unknown tag value */\r\n Unknown: \"Unknown\",\r\n /** Edit tag value */\r\n Edit: \"EDIT\",\r\n /** DateTime tag value */\r\n DateTime: \"DATETIME\",\r\n /** List tag value */\r\n List: \"LIST\",\r\n /** CustomList tag value */\r\n CustomList: \"CUSTOMLIST\",\r\n /** File tag value */\r\n File: \"FILE\"\r\n};\r\n//# sourceMappingURL=editor_tag.js.map","import { DataType } from '../types/data_type';\r\nimport { EntityAttrKind } from '../types/entity_attr_kind';\r\nimport { utils } from '../utils/utils';\r\n/**\r\n * Represents one entity.\r\n */\r\nvar MetaEntity = /** @class */ (function () {\r\n /** The default constructor. */\r\n function MetaEntity(parent) {\r\n /** Returns false if this entity is read-only */\r\n this.isEditable = true;\r\n this.name = \"\";\r\n this.caption = \"\";\r\n this.description = \"\";\r\n this.parent = parent;\r\n this.attributes = new Array();\r\n this.subEntities = new Array();\r\n }\r\n /**\r\n * Loads entity from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param dto The JSON representation object.\r\n */\r\n MetaEntity.prototype.loadFromData = function (model, dto) {\r\n if (dto) {\r\n this.id = dto.id;\r\n this.name = dto.name;\r\n this.captionPlural = dto.namePlur;\r\n this.caption = dto.name;\r\n this.description = dto.desc;\r\n if (typeof (dto.ied) !== 'undefined')\r\n this.isEditable = dto.ied;\r\n this.subEntities = new Array();\r\n if (dto.ents) {\r\n for (var i = 0; i < dto.ents.length; i++) {\r\n var newEntity = model.createEntity(this);\r\n newEntity.loadFromData(model, dto.ents[i]);\r\n this.subEntities.push(newEntity);\r\n }\r\n }\r\n this.attributes = new Array();\r\n if (dto.attrs) {\r\n for (var i = 0; i < dto.attrs.length; i++) {\r\n var newAttr = model.createEntityAttr(this);\r\n newAttr.loadFromData(model, dto.attrs[i]);\r\n this.attributes.push(newAttr);\r\n }\r\n }\r\n }\r\n };\r\n MetaEntity.prototype.scan = function (processAttribute, processEntity) {\r\n var opts = { stop: false };\r\n var internalProcessEntity = function (entity) {\r\n if (processEntity)\r\n processEntity(entity, opts);\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var i = 0; (i < attrCount) && !opts.stop; i++) {\r\n var attr = entity.attributes[i];\r\n if (processAttribute) {\r\n processAttribute(attr, opts);\r\n }\r\n if (opts.stop)\r\n return;\r\n }\r\n }\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var i = 0; (i < subEntityCount) && !opts.stop; i++) {\r\n internalProcessEntity(entity.subEntities[i]);\r\n }\r\n }\r\n };\r\n internalProcessEntity(this);\r\n };\r\n MetaEntity.prototype.getFirstPrimaryAttr = function () {\r\n return this.getPrimaryAttrs()[0];\r\n };\r\n MetaEntity.prototype.getPrimaryAttrs = function () {\r\n return this.attributes.filter(function (attr) { return attr.isPrimaryKey; });\r\n };\r\n return MetaEntity;\r\n}());\r\nexport { MetaEntity };\r\nvar MetaEntityAttr = /** @class */ (function () {\r\n /** The default constructor. */\r\n function MetaEntityAttr(entity) {\r\n this.id = \"\";\r\n this.caption = \"{Unrecognized attribute}\";\r\n this.dataType = DataType.String;\r\n this.size = 0;\r\n this.isPrimaryKey = false;\r\n this.isForeignKey = false;\r\n this.isNullable = true;\r\n this.showOnView = true;\r\n this.isEditable = true;\r\n this.showOnCreate = true;\r\n this.showOnEdit = true;\r\n this.showInLookup = false;\r\n this.lookupAttr = \"\";\r\n this.expr = \"\";\r\n this.entity = entity;\r\n this.kind = EntityAttrKind.Data;\r\n }\r\n /**\r\n * Loads entity attribute from JSON representation object.\r\n * @param model The Data Model.\r\n * @param dto The JSON representation object.\r\n */\r\n MetaEntityAttr.prototype.loadFromData = function (model, dto) {\r\n if (dto) {\r\n this.id = dto.id;\r\n this.description = dto.desc;\r\n this.caption = dto.cptn;\r\n this.dataType = dto.dtype;\r\n this.isPrimaryKey = dto.ipk;\r\n this.isForeignKey = dto.ifk;\r\n this.size = dto.size;\r\n this.lookupAttr = dto.lattr;\r\n this.lookupEntity = dto.lent;\r\n this.dataAttr = dto.dattr;\r\n this.lookupDataAttr = dto.ldattr;\r\n var isDataType = utils.getDateDataTypes().indexOf(this.dataType);\r\n this.defaultValue = dto.defVal && isDataType ? new Date(dto.defVal) : dto.defVal;\r\n this.isNullable = utils.getIfDefined(dto.nul, this.isNullable);\r\n this.isEditable = utils.getIfDefined(dto.ied, this.isEditable);\r\n this.showOnView = utils.getIfDefined(dto.ivis || dto.sov, this.showOnView);\r\n this.showOnCreate = utils.getIfDefined(dto.soc, this.showOnCreate);\r\n this.showOnEdit = utils.getIfDefined(dto.soe, this.showOnEdit);\r\n this.showInLookup = utils.getIfDefined(dto.sil, this.showInLookup);\r\n this.kind = dto.kind;\r\n this.displayFormat = dto.dfmt;\r\n if (dto.udata)\r\n this.userData = dto.udata;\r\n if (dto.edtr) {\r\n this.defaultEditor = model.getEditorById(dto.edtr) || model.createValueEditor();\r\n }\r\n }\r\n };\r\n return MetaEntityAttr;\r\n}());\r\nexport { MetaEntityAttr };\r\n//# sourceMappingURL=meta_entity.js.map","import { EditorTag } from '../types/editor_tag';\r\nimport { DataType } from '../types/data_type';\r\n/**\r\n * Represents a value editor.\r\n */\r\nvar ValueEditor = /** @class */ (function () {\r\n /** The default constructor. */\r\n function ValueEditor() {\r\n this.id = \"\";\r\n this.tag = EditorTag.Unknown;\r\n this.resType = DataType.Unknown;\r\n this.defValue = \"\";\r\n }\r\n /**\r\n * Loads value editor from its JSON representation object.\r\n * @param data The JSON representation object.\r\n */\r\n ValueEditor.prototype.loadFromData = function (data) {\r\n if (data) {\r\n this.id = data.id;\r\n this.tag = data.tag;\r\n this.defValue = data.defval;\r\n this.resType = data.rtype;\r\n this.accept = data.accept;\r\n this.multiline = data.multiline;\r\n if (data.subType) {\r\n this.resType = data.subType;\r\n }\r\n if (data.name) {\r\n this.name = data.name;\r\n }\r\n if (data.values) {\r\n this.values = data.values;\r\n }\r\n }\r\n };\r\n ValueEditor.prototype.getValueText = function (value) {\r\n var result = \"\";\r\n if (!this.values)\r\n return result;\r\n if (Array.isArray(value)) {\r\n for (var _i = 0, _a = this.values; _i < _a.length; _i++) {\r\n var item = _a[_i];\r\n if (value.indexOf(item.id) >= 0) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n else {\r\n for (var _b = 0, _c = this.values; _b < _c.length; _b++) {\r\n var item = _c[_b];\r\n if (item.id === value) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n if (result) {\r\n result = result.substring(0, result.length - 1);\r\n }\r\n return result;\r\n };\r\n return ValueEditor;\r\n}());\r\nexport { ValueEditor };\r\n//# sourceMappingURL=value_editor.js.map","import { i18n } from '../i18n/i18n';\r\nimport { utils } from '../utils/utils';\r\nimport { EditorTag } from '../types/editor_tag';\r\nimport { DataType } from '../types/data_type';\r\nimport { MetaEntity, MetaEntityAttr } from './meta_entity';\r\nimport { ValueEditor } from './value_editor';\r\n/**\r\n * Represents a data model\r\n */\r\nvar MetaData = /** @class */ (function () {\r\n /** The default constructor. */\r\n function MetaData() {\r\n this.mainEntity = null;\r\n this.id = '__none';\r\n this.name = 'Empty model';\r\n this.rootEntity = this.createEntity();\r\n this.displayFormats = new Map();\r\n }\r\n /**\r\n * Gets the main entity of model\r\n * @return The main entity.\r\n */\r\n MetaData.prototype.getMainEntity = function () {\r\n return this.mainEntity;\r\n };\r\n MetaData.prototype.createEntity = function (parent) {\r\n return new MetaEntity(parent);\r\n };\r\n MetaData.prototype.createEntityAttr = function (parent) {\r\n return new MetaEntityAttr(parent);\r\n };\r\n MetaData.prototype.createValueEditor = function () {\r\n return new ValueEditor();\r\n };\r\n /**\r\n * Loads data model from JSON.\r\n * @param stringJson The JSON string.\r\n */\r\n MetaData.prototype.loadFromJSON = function (stringJson) {\r\n var model = JSON.parse(stringJson);\r\n this.loadFromData(model);\r\n };\r\n /**\r\n * Loads data model from its JSON representation object.\r\n * @param data The JSON representation object.\r\n */\r\n MetaData.prototype.loadFromData = function (data) {\r\n this.id = data.id;\r\n this.name = data.name;\r\n this.version = data.vers;\r\n //Editors\r\n this.editors = new Array();\r\n if (data.editors) {\r\n for (var i = 0; i < data.editors.length; i++) {\r\n var newEditor = this.createValueEditor();\r\n newEditor.loadFromData(data.editors[i]);\r\n this.editors.push(newEditor);\r\n }\r\n }\r\n //rootEntity\r\n this.rootEntity.loadFromData(this, data.entroot);\r\n //DataFormats\r\n this.displayFormats = new Map();\r\n if (data.displayFormats) {\r\n for (var dtypeStr in data.displayFormats) {\r\n var dtype = DataType[dtypeStr];\r\n var formats = data.displayFormats[dtypeStr] || new Array();\r\n this.displayFormats.set(dtype, formats);\r\n }\r\n }\r\n };\r\n /**\r\n * Gets the display formats.\r\n * @returns The display formats.\r\n */\r\n MetaData.prototype.getDisplayFormats = function () {\r\n return this.displayFormats;\r\n };\r\n /**\r\n * Gets the display formats for type\r\n * @param type The type\r\n * @returns An array of display formats\r\n */\r\n MetaData.prototype.getDisplayFormatsForType = function (type) {\r\n if (this.displayFormats.has(type)) {\r\n return this.displayFormats.get(type);\r\n }\r\n return [];\r\n };\r\n /**\r\n * Gets the default display format for the provided type\r\n * @param type The type\r\n * @returns The default type format or null\r\n */\r\n MetaData.prototype.getDefaultFormat = function (type) {\r\n if (this.displayFormats.has(type)) {\r\n return this.displayFormats.get(type).filter(function (f) { return f.isdef; })[0];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Sets data to data model.\r\n * @param model Its JSON representation object or JSON string.\r\n */\r\n MetaData.prototype.setData = function (model) {\r\n if (typeof model === 'string') {\r\n this.loadFromJSON(model);\r\n }\r\n else {\r\n this.loadFromData(model);\r\n }\r\n };\r\n /**\r\n * Checks wether the data model is empty.\r\n * @returns `true` if the data model is empty, otherwise `false`.\r\n */\r\n MetaData.prototype.isEmpty = function () {\r\n return this.rootEntity.subEntities.length === 0 && this.rootEntity.attributes.length === 0;\r\n };\r\n /**\r\n * Gets ID of the data model.\r\n * @returns The ID.\r\n */\r\n MetaData.prototype.getId = function () {\r\n return this.id;\r\n };\r\n /**\r\n * Gets name of the data model.\r\n * @returns The name.\r\n */\r\n MetaData.prototype.getName = function () {\r\n return this.name;\r\n };\r\n /**\r\n * Gets root entity of the data model.\r\n * @returns The root entity.\r\n */\r\n MetaData.prototype.getRootEntity = function () {\r\n return this.rootEntity;\r\n };\r\n /**\r\n * Finds editor by its ID.\r\n * @param editorId The editor ID.\r\n * @returns The value editor or `null`.\r\n */\r\n MetaData.prototype.getEditorById = function (editorId) {\r\n for (var _i = 0, _a = this.editors; _i < _a.length; _i++) {\r\n var editor = _a[_i];\r\n if (editor.id === editorId) {\r\n return editor;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified model (it's root entity and all its sub-entities).\r\n * @param attrId The attribute ID.\r\n * @returns The attribute or `null`.\r\n */\r\n MetaData.prototype.getAttributeById = function (attrId) {\r\n var attr = this.getEntityAttrById(this.getRootEntity(), attrId);\r\n if (!attr) {\r\n return null;\r\n }\r\n return attr;\r\n };\r\n /**\r\n * Checks wether attribute contains such property.\r\n * @param attrId The attribute ID.\r\n * @param propName The property name.\r\n * @returns `true` if the attribute contains the property, otherwise `false`.\r\n */\r\n MetaData.prototype.checkAttrProperty = function (attrId, propName) {\r\n var attribute = this.getAttributeById(attrId);\r\n if (attribute) {\r\n if (typeof attribute[propName] === 'undefined') {\r\n throw 'No such property: ' + propName;\r\n }\r\n if (attribute[propName]) {\r\n return true;\r\n }\r\n else if (attribute.lookupAttr) {\r\n attrId = attribute.lookupAttr;\r\n attribute = this.getAttributeById(attrId);\r\n return attribute && attribute[propName];\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else\r\n return false;\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified entity and all its sub-entities.\r\n * @param entity\r\n * @param attrId\r\n * @returns The attribute or `null`.\r\n */\r\n MetaData.prototype.getEntityAttrById = function (entity, attrId) {\r\n var idx;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (idx = 0; idx < attrCount; idx++) {\r\n if (entity.attributes[idx].id == attrId) {\r\n return entity.attributes[idx];\r\n }\r\n }\r\n }\r\n var res;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (idx = 0; idx < subEntityCount; idx++) {\r\n res = this.getEntityAttrById(entity.subEntities[idx], attrId);\r\n if (res)\r\n return res;\r\n }\r\n }\r\n return null;\r\n };\r\n MetaData.prototype.listByEntityWithFilter = function (entity, filterFunc) {\r\n var result = new Array();\r\n var caption;\r\n var ent = null;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\r\n ent = entity.subEntities[entIdx];\r\n if (!filterFunc || filterFunc(ent, null)) {\r\n caption = i18n.getText('Entities', ent.name);\r\n if (!caption) {\r\n caption = ent.caption;\r\n }\r\n var newEnt = utils.assign(this.createEntity(), { id: ent.name, text: caption, items: [], isEntity: true });\r\n newEnt.items = this.listByEntityWithFilter(ent, filterFunc);\r\n if (newEnt.items.length > 0)\r\n result.push(newEnt);\r\n }\r\n }\r\n }\r\n var attr = null;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\r\n attr = entity.attributes[attrIdx];\r\n if (!filterFunc || filterFunc(entity, attr)) {\r\n caption = i18n.getText('Attributes', attr.id);\r\n if (!caption)\r\n caption = attr.caption;\r\n var newEnt = utils.assign(this.createEntity(), { id: attr.id, text: caption, dataType: attr.dataType });\r\n result.push(newEnt);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n MetaData.prototype.listByEntity = function (entity, opts, filterFunc) {\r\n opts = opts || {};\r\n var resultEntities = [];\r\n var resultAttributes = [];\r\n var caption;\r\n var ent = null;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\r\n ent = entity.subEntities[entIdx];\r\n if (!filterFunc || filterFunc(ent, null)) {\r\n caption = i18n.getText('Entities', ent.name) || ent.caption;\r\n var newEnt = utils.assign(this.createEntity(), {\r\n id: ent.name,\r\n text: caption,\r\n items: [],\r\n isEntity: true,\r\n description: ent.description\r\n });\r\n var newOpts = utils.assign({}, opts);\r\n newOpts.includeRootData = false;\r\n newEnt.items = this.listByEntity(ent, newOpts, filterFunc);\r\n if (newEnt.items.length > 0) {\r\n resultEntities.push(newEnt);\r\n }\r\n }\r\n }\r\n }\r\n var attr = null;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\r\n attr = entity.attributes[attrIdx];\r\n if (!filterFunc || filterFunc(entity, attr)) {\r\n caption = i18n.getText('Attributes', attr.id) || attr.caption;\r\n resultAttributes.push(utils.assign(this.createEntityAttr(entity), {\r\n id: attr.id, text: caption,\r\n dataType: attr.dataType, lookupAttr: attr.lookupAttr,\r\n description: attr.description\r\n }));\r\n }\r\n }\r\n }\r\n var sortCheck = function (a, b) {\r\n if (a.text.toLowerCase() == b.text.toLowerCase()) {\r\n return 0;\r\n }\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) {\r\n return 1;\r\n }\r\n return -1;\r\n };\r\n if (opts.sortEntities) {\r\n resultEntities.sort(sortCheck);\r\n resultAttributes.sort(sortCheck);\r\n }\r\n var result;\r\n if (!opts.attrPlacement || opts.attrPlacement == 0) {\r\n result = resultEntities.concat(resultAttributes);\r\n }\r\n else {\r\n result = resultAttributes.concat(resultEntities);\r\n }\r\n if (opts.attrPlacement == 2) {\r\n result.sort(sortCheck);\r\n }\r\n if (opts.includeRootData) {\r\n caption = i18n.getText('Entities', entity.name);\r\n if (!caption)\r\n caption = entity.caption;\r\n return { id: entity.name, text: caption, items: result };\r\n }\r\n else {\r\n return result;\r\n }\r\n };\r\n /**\r\n * Clears data model.\r\n */\r\n MetaData.prototype.clear = function () {\r\n this.rootEntity = this.createEntity();\r\n this.editors = [];\r\n this.version = '';\r\n };\r\n /**\r\n * Add default value editors.\r\n */\r\n MetaData.prototype.addDefaultValueEditors = function () {\r\n var ve;\r\n ve = this.addOrUpdateValueEditor('_DTE', EditorTag.Edit, DataType.String);\r\n ve.defValue = '';\r\n this.addOrUpdateValueEditor('_DPDE', EditorTag.DateTime, DataType.DateTime);\r\n this.addOrUpdateValueEditor('_DPTE', EditorTag.DateTime, DataType.DateTime);\r\n };\r\n /**\r\n * Add or update a value editor.\r\n * @param id The id.\r\n * @param tag The tag.\r\n * @param resType The result type.\r\n * @returns The value editor.\r\n */\r\n MetaData.prototype.addOrUpdateValueEditor = function (id, tag, resType) {\r\n var ve = utils.findItemById(this.editors, id);\r\n if (!ve) {\r\n ve = this.createValueEditor();\r\n ve.id = id;\r\n this.editors.push(ve);\r\n }\r\n ve.tag = tag;\r\n ve.resType = resType;\r\n return ve;\r\n };\r\n /**\r\n * Gets entities tree.\r\n * @param opts The options.\r\n * @param filterFunc The filter function.\r\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\r\n * @returns The tree of the entities and their attributes according to options and the filter function\r\n */\r\n MetaData.prototype.getEntitiesTree = function (opts, filterFunc) {\r\n return this.listByEntity(this.getRootEntity(), opts, filterFunc);\r\n };\r\n /**\r\n * Gets entities tree due to filter.\r\n * @param filterFunc The filter function.\r\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\r\n * @returns The tree of the entities and their attributes according to the filter function\r\n */\r\n MetaData.prototype.getEntitiesTreeWithFilter = function (filterFunc) {\r\n return this.listByEntityWithFilter(this.getRootEntity(), filterFunc);\r\n };\r\n /**\r\n * Finds full entity path by attribute\r\n * @param attrId The attribute id.\r\n * @param sep The separator.\r\n * @returns The path.\r\n */\r\n MetaData.prototype.getFullEntityPathByAttr = function (attrId, sep) {\r\n sep = sep || ' ';\r\n return this.getEntityPathByAttr(this.getRootEntity(), attrId, sep, true);\r\n };\r\n /**\r\n * Finds entity path by attribute\r\n * @param entity The entity.\r\n * @param attrId The attribute id.\r\n * @param sep The separator.\r\n * @param root The root option.\r\n * @returns The path.\r\n */\r\n MetaData.prototype.getEntityPathByAttr = function (entity, attrId, sep, root) {\r\n if (!entity)\r\n return '';\r\n sep = sep || ' ';\r\n var entityCaption = '';\r\n if (entity.caption && !root) {\r\n var entityText = i18n.getText('Entities', entity.caption);\r\n entityCaption = entityText ? entityText : entity.caption;\r\n }\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var i = 0; i < attrCount; i++) {\r\n if (entity.attributes[i].id == attrId) {\r\n return entityCaption;\r\n }\r\n }\r\n }\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var i = 0; i < subEntityCount; i++) {\r\n var ent = entity.subEntities[i];\r\n var res = this.getEntityPathByAttr(ent, attrId, sep, false);\r\n if (res !== '') {\r\n if (entityCaption !== '')\r\n res = entityCaption + sep + res;\r\n return res;\r\n }\r\n }\r\n }\r\n return '';\r\n };\r\n /**\r\n * Gets the attribute text.\r\n * @param attr The attribute.\r\n * @param format The format.\r\n * @returns Formatted text.\r\n */\r\n MetaData.prototype.getAttributeText = function (attr, format) {\r\n var attrText = i18n.getText('Attributes', attr.id);\r\n if (!attrText) {\r\n attrText = attr.caption;\r\n }\r\n if (!format) {\r\n return attrText;\r\n }\r\n var result = '';\r\n var entityPath = this.getFullEntityPathByAttr(attr.id, ' ');\r\n if (entityPath) {\r\n result = format.replace(new RegExp('{attr}', 'g'), attrText);\r\n result = result.replace(new RegExp('{entity}', 'g'), entityPath);\r\n }\r\n else {\r\n result = attrText;\r\n }\r\n return result.trim();\r\n };\r\n /**\r\n * Scans model's entity tree and calls the callback functions for each attribute and entity.\r\n * @param processAttribute The callback function which is called for each attribute in model's entity tree.\r\n * The processed attribute is passed in the first function parameter.\r\n * @param processEntity The callback function which is called for each entity in tree.\r\n * The processed entity is passed in the first function parameter.\r\n */\r\n MetaData.prototype.runThroughEntities = function (processAttribute, processEntity) {\r\n this.getRootEntity().scan(processAttribute, processEntity);\r\n };\r\n /**\r\n * Finds first attribute by filter.\r\n * @param filterFunc The filter function. Takes EntityAttr object in parameter and returns boolean\r\n */\r\n MetaData.prototype.getFirstAttributeByFilter = function (filterFunc) {\r\n var res = null;\r\n this.runThroughEntities(function (attr, opts) {\r\n if (filterFunc(attr)) {\r\n opts.stop = true;\r\n res = attr;\r\n }\r\n }, null);\r\n return res;\r\n };\r\n return MetaData;\r\n}());\r\nexport { MetaData };\r\n//# sourceMappingURL=meta_data.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n/**\r\n * Defines aggregations settings for the current context.\r\n * Group, aggregate columns, grand totals, etc.\r\n */\r\nvar AggregationSettings = /** @class */ (function () {\r\n function AggregationSettings(colStore) {\r\n this.colStore = colStore;\r\n this.aggregates = [];\r\n this.groups = [];\r\n this.useGrandTotals = false;\r\n this.useRecordCount = false;\r\n this._caseSensitiveGroups = false;\r\n this.COUNT_FIELD_NAME = 'GRPRECCNT';\r\n }\r\n Object.defineProperty(AggregationSettings.prototype, \"caseSensitiveGroups\", {\r\n get: function () {\r\n return this._caseSensitiveGroups;\r\n },\r\n set: function (value) {\r\n this._caseSensitiveGroups = value;\r\n this.updateCompareProc();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AggregationSettings.prototype.updateCompareProc = function () {\r\n this.compareValues = this._caseSensitiveGroups\r\n ? this.strictCompare\r\n : this.caseInsensitiveCompare;\r\n };\r\n AggregationSettings.prototype.addGroup = function (settings) {\r\n var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);\r\n if (!this.colStore.validateColumns(cols))\r\n throw \"Invalid columns: \" + cols;\r\n if (this.hasColumnsInUse(cols))\r\n throw \"Can't add same columns to different groups/aggregates\";\r\n this.groups.push(__assign({ columns: cols }, settings));\r\n return this;\r\n };\r\n AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {\r\n var colId = typeof colIndexOrId == 'string'\r\n ? colIndexOrId\r\n : this.colStore.getColumnIds(colIndexOrId, colIndexOrId)[0];\r\n if (this.hasColumnsInUse([colId]) || !this.colStore.validateAggregate(colId, funcId))\r\n throw 'Invalid aggregation function for the column: ' + colId;\r\n this.aggregates.push({ colId: colId, funcId: funcId });\r\n return this;\r\n };\r\n AggregationSettings.prototype.addGrandTotals = function () {\r\n this.useGrandTotals = true;\r\n return this;\r\n };\r\n AggregationSettings.prototype.addCounts = function () {\r\n this.useRecordCount = true;\r\n return this;\r\n };\r\n AggregationSettings.prototype.getGroups = function () {\r\n var _this = this;\r\n var cols = [];\r\n var mappedGrops = this.groups.map(function (grp) {\r\n cols = cols.concat(grp.columns);\r\n return __assign(__assign({}, grp), { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });\r\n });\r\n return mappedGrops;\r\n };\r\n AggregationSettings.prototype.getInternalGroups = function () {\r\n return this.groups;\r\n };\r\n AggregationSettings.prototype.lastGroup = function () {\r\n var groups = this.getGroups();\r\n return groups[groups.length - 1];\r\n };\r\n AggregationSettings.prototype.getAggregates = function () {\r\n return this.aggregates;\r\n };\r\n AggregationSettings.prototype.hasAggregates = function () {\r\n return this.aggregates.length > 0;\r\n };\r\n AggregationSettings.prototype.hasGroups = function () {\r\n return this.groups.length > 0;\r\n };\r\n AggregationSettings.prototype.hasGrandTotals = function () {\r\n return this.useGrandTotals;\r\n };\r\n AggregationSettings.prototype.hasRecordCount = function () {\r\n return this.useRecordCount;\r\n };\r\n AggregationSettings.prototype.isEmpty = function () {\r\n return !(this.hasAggregates() || this.hasGroups() ||\r\n this.hasAggregates() || this.hasRecordCount());\r\n };\r\n AggregationSettings.prototype.drop = function () {\r\n console.warn('\"drop()\" method is obsolete. Use \"clear()\" instead');\r\n this.clear();\r\n };\r\n AggregationSettings.prototype.clear = function () {\r\n this.groups = [];\r\n this.aggregates = [];\r\n this.useGrandTotals = false;\r\n this.useRecordCount = false;\r\n this.caseSensitiveGroups = false;\r\n return this;\r\n };\r\n /**\r\n * Checks if all columns from the list passed in the parameter are \"unused\".\r\n * Here \"unused column\" means a column that is included neither in any group nor in the aggregates list.\r\n * @param cols - the array of column IDs\r\n * @returns true if all columns in the list are not used anywhere, othervise - fals\r\n */\r\n AggregationSettings.prototype.hasColumnsInUse = function (cols) {\r\n for (var _i = 0, _a = this.groups; _i < _a.length; _i++) {\r\n var group = _a[_i];\r\n var interCols = group.columns\r\n .filter(function (c) { return cols.indexOf(c) >= 0; });\r\n if (interCols.length > 0)\r\n return true;\r\n }\r\n for (var _b = 0, _c = this.aggregates; _b < _c.length; _b++) {\r\n var aggr = _c[_b];\r\n if (cols.indexOf(aggr.colId) >= 0)\r\n return true;\r\n }\r\n return false;\r\n };\r\n AggregationSettings.prototype.needAggrCalculation = function () {\r\n return (this.hasAggregates() || this.hasRecordCount())\r\n && (this.hasGrandTotals() || this.hasGroups());\r\n };\r\n AggregationSettings.prototype.saveToData = function () {\r\n return {\r\n groups: Array.from(this.groups),\r\n ugt: this.useGrandTotals,\r\n urc: this.useRecordCount,\r\n csg: this.caseSensitiveGroups,\r\n aggregates: Array.from(this.aggregates)\r\n };\r\n };\r\n AggregationSettings.prototype.loadFromData = function (data) {\r\n if (data) {\r\n if (typeof data.ugt !== 'undefined')\r\n this.useGrandTotals = data.ugt;\r\n if (typeof data.urc !== 'undefined')\r\n this.useRecordCount = data.urc;\r\n if (typeof data.csg !== 'undefined')\r\n this.caseSensitiveGroups = data.csg;\r\n if (data.groups) {\r\n this.groups = Array.from(data.groups);\r\n }\r\n if (data.aggregates) {\r\n this.aggregates = Array.from(data.aggregates);\r\n }\r\n }\r\n };\r\n AggregationSettings.prototype.buildGroupKey = function (group, row) {\r\n var caseInsensitive = !this.caseSensitiveGroups;\r\n var result = {};\r\n if (group) {\r\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\r\n var colId = _a[_i];\r\n var keyVal = row.getValue(colId);\r\n if (caseInsensitive && typeof (keyVal) === 'string') {\r\n keyVal = keyVal.toLowerCase();\r\n }\r\n result[colId] = keyVal;\r\n }\r\n }\r\n return result;\r\n };\r\n //returns true if value1 == value2\r\n AggregationSettings.prototype.strictCompare = function (value1, value2) {\r\n if (value1 instanceof Date) {\r\n return value1.getTime() === value2.getTime();\r\n }\r\n else\r\n return value1 === value2;\r\n };\r\n //makes a case insensative comparision of two values and return true if there are equal\r\n AggregationSettings.prototype.caseInsensitiveCompare = function (value1, value2) {\r\n if (value1 instanceof Date) {\r\n return value1.getTime() === value2.getTime();\r\n }\r\n else {\r\n var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;\r\n var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;\r\n return val1 === val2;\r\n }\r\n };\r\n return AggregationSettings;\r\n}());\r\nexport { AggregationSettings };\r\n//# sourceMappingURL=aggr_settings.js.map","/**\r\n * EasyData representation of GUID.\r\n */\r\nvar EasyGuid = /** @class */ (function () {\r\n function EasyGuid() {\r\n }\r\n /**\r\n * Generates new GUID.\r\n * @returns The string representation of GUID.\r\n */\r\n EasyGuid.newGuid = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n };\r\n return EasyGuid;\r\n}());\r\nexport { EasyGuid };\r\n//# sourceMappingURL=easy_guid.js.map","import { EasyGuid } from '../utils/easy_guid';\r\n/**\r\n * The representation of event emitter.\r\n */\r\nvar EventEmitter = /** @class */ (function () {\r\n /**\r\n * The default constructor.\r\n * @param source The source.\r\n */\r\n function EventEmitter(source) {\r\n this.silentMode = 0;\r\n this.events = new Array();\r\n this.source = source;\r\n }\r\n /**\r\n * Subscries to the event.\r\n * @param eventType The event type.\r\n * @param callback The callback.\r\n * @returns The subscribtion ID.\r\n */\r\n EventEmitter.prototype.subscribe = function (eventType, callback) {\r\n var event = this.getEventRecByType(eventType);\r\n var eventCallback = {\r\n id: EasyGuid.newGuid(),\r\n callback: callback\r\n };\r\n if (event) {\r\n event.eventCallbacks.push(eventCallback);\r\n }\r\n else {\r\n event = {\r\n type: eventType,\r\n eventCallbacks: new Array(eventCallback)\r\n };\r\n this.events.push(event);\r\n }\r\n return eventCallback.id;\r\n };\r\n /**\r\n * Unsubsribes from the event.\r\n * @param eventType The event type.\r\n * @param callbackId The subscribtion ID.\r\n */\r\n EventEmitter.prototype.unsubscribe = function (eventType, callbackId) {\r\n var event = this.getEventRecByType(eventType);\r\n if (event) {\r\n var index = -1;\r\n for (index = 0; index < event.eventCallbacks.length; index++) {\r\n if (event.eventCallbacks[index].id === callbackId) {\r\n break;\r\n }\r\n }\r\n if (index >= 0) {\r\n event.eventCallbacks.splice(index, 1);\r\n }\r\n }\r\n };\r\n /**\r\n * Fires the event.\r\n * @param eventType The event type.\r\n * @param data The event data.\r\n * @param postpone The postpone.\r\n * @param force To fire force. If value is `true`, ignores silent mode.\r\n */\r\n EventEmitter.prototype.fire = function (eventType, data, postpone, force) {\r\n if (postpone === void 0) { postpone = 0; }\r\n if (force === void 0) { force = false; }\r\n if (this.silentMode && !force) {\r\n return;\r\n }\r\n var eventRec = this.getEventRecByType(eventType);\r\n if (eventRec) {\r\n var eqevent_1 = {\r\n type: eventType,\r\n source: this.source,\r\n data: data\r\n };\r\n var emitAllFunc = function () {\r\n for (var _i = 0, _a = eventRec.eventCallbacks; _i < _a.length; _i++) {\r\n var callback = _a[_i];\r\n callback.callback(eqevent_1);\r\n }\r\n };\r\n if (postpone > 0) {\r\n setTimeout(emitAllFunc, postpone);\r\n }\r\n else {\r\n emitAllFunc();\r\n }\r\n }\r\n };\r\n /**\r\n * Enters to silent mode.\r\n */\r\n EventEmitter.prototype.enterSilentMode = function () {\r\n this.silentMode++;\r\n };\r\n /**\r\n * Exits from silent mode.\r\n */\r\n EventEmitter.prototype.exitSilentMode = function () {\r\n if (this.silentMode) {\r\n this.silentMode--;\r\n }\r\n };\r\n /**\r\n * Checks if emitter is in silent mode.\r\n * @return `true`, if silent mode is enable.\r\n */\r\n EventEmitter.prototype.isSilent = function () {\r\n return this.silentMode > 0;\r\n };\r\n EventEmitter.prototype.getEventRecByType = function (eventType) {\r\n for (var _i = 0, _a = this.events; _i < _a.length; _i++) {\r\n var event_1 = _a[_i];\r\n if (event_1.type == eventType) {\r\n return event_1;\r\n }\r\n }\r\n return null;\r\n };\r\n return EventEmitter;\r\n}());\r\nexport { EventEmitter };\r\n//# sourceMappingURL=event_emitter.js.map","export var liquid;\r\n(function (liquid) {\r\n function renderLiquidTemplate(template, vars) {\r\n var result = template;\r\n if (vars) {\r\n for (var v in vars) {\r\n var liquidVarRegexp = new RegExp('\\{\\{' + v + '\\}\\}', 'g');\r\n result = result.replace(liquidVarRegexp, vars[v]);\r\n }\r\n }\r\n return result;\r\n }\r\n liquid.renderLiquidTemplate = renderLiquidTemplate;\r\n})(liquid || (liquid = {}));\r\n//# sourceMappingURL=liquid.js.map","import { i18n } from './i18n';\r\ni18n.resetLocales();\r\n//# sourceMappingURL=load_default_locale_settings.js.map","//types\r\nexport * from './types/data_type';\r\nexport * from './types/entity_attr_kind';\r\nexport * from './types/editor_tag';\r\n//http\r\nexport * from './http/http_method';\r\nexport * from './http/http_request';\r\nexport * from './http/http_client';\r\n//meta data\r\nexport * from './meta/meta_data';\r\nexport * from './meta/meta_entity';\r\nexport * from './meta/value_editor';\r\nexport * from './data/aggr_settings';\r\nexport * from './data/data_column';\r\nexport * from './data/data_row';\r\nexport * from './data/easy_data_table';\r\n//event\r\nexport * from './event/event_emitter';\r\n//i18n\r\nexport * from './i18n/i18n';\r\n//utils\r\nexport * from './utils/easy_guid';\r\nexport * from './utils/string_utils';\r\nexport * from './utils/utils';\r\nexport * from './utils/liquid';\r\nimport './i18n/load_default_locale_settings';\r\nif (typeof Object.values !== 'function') {\r\n Object.values = function (obj) {\r\n return Object.keys(obj).map(function (key) { return obj[key]; });\r\n };\r\n}\r\nif (typeof Math.trunc !== 'function') {\r\n Math.trunc = function (x) {\r\n if (isNaN(x)) {\r\n return NaN;\r\n }\r\n if (x > 0) {\r\n return Math.floor(x);\r\n }\r\n return Math.ceil(x);\r\n };\r\n}\r\n//# sourceMappingURL=public_api.js.map","var Calendar = /** @class */ (function () {\r\n function Calendar(slot, options) {\r\n this.slot = slot;\r\n this.options = options || {};\r\n if (!this.options.yearRange) {\r\n this.options.yearRange = 'c-10:c+10';\r\n }\r\n }\r\n Object.defineProperty(Calendar.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'kdtp-cal';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Calendar.prototype.setDate = function (date) {\r\n this.currentDate = new Date(date);\r\n };\r\n Calendar.prototype.getDate = function () {\r\n return new Date(this.currentDate);\r\n };\r\n Calendar.prototype.dateChanged = function (apply) {\r\n if (this.options.onDateChanged) {\r\n this.options.onDateChanged(this.currentDate, apply);\r\n }\r\n };\r\n return Calendar;\r\n}());\r\nexport { Calendar };\r\n//# sourceMappingURL=calendar.js.map","import { getElementAbsolutePos } from '../utils/ui-utils';\r\nvar DateTimePicker = /** @class */ (function () {\r\n function DateTimePicker(options) {\r\n this.calendar = null;\r\n this.timePicker = null;\r\n this.options = options;\r\n this.render();\r\n }\r\n Object.defineProperty(DateTimePicker.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'kdtp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DateTimePicker.prototype.setDateTime = function (dateTime) {\r\n this.currentDateTime = new Date(dateTime);\r\n if (this.calendar) {\r\n this.calendar.setDate(this.currentDateTime);\r\n }\r\n if (this.timePicker) {\r\n this.timePicker.setTime(this.currentDateTime);\r\n }\r\n };\r\n DateTimePicker.prototype.getDateTime = function () {\r\n return new Date(this.currentDateTime);\r\n };\r\n DateTimePicker.prototype.render = function () {\r\n var _this = this;\r\n if (this.options.showCalendar) {\r\n this.calendar = this.createCalendar({\r\n yearRange: this.options.yearRange,\r\n showDateTimeInput: this.options.showDateTimeInput,\r\n timePickerIsUsed: this.options.showTimePicker,\r\n oneClickDateSelection: this.options.oneClickDateSelection,\r\n onDateChanged: function (date, apply) {\r\n _this.currentDateTime = date;\r\n if (_this.timePicker) {\r\n _this.timePicker.setTime(_this.currentDateTime);\r\n }\r\n if (_this.options.showTimePicker) {\r\n _this.dateTimeChanged();\r\n }\r\n if (apply) {\r\n _this.apply(_this.currentDateTime);\r\n }\r\n }\r\n });\r\n if (this.calendar)\r\n this.calendar.render();\r\n }\r\n if (this.options.showTimePicker) {\r\n this.timePicker = this.createTimePicker({\r\n onTimeChanged: function (time) {\r\n _this.currentDateTime.setHours(time.getHours());\r\n _this.currentDateTime.setMinutes(time.getMinutes());\r\n if (_this.calendar) {\r\n _this.calendar.setDate(_this.currentDateTime);\r\n }\r\n _this.dateTimeChanged();\r\n }\r\n });\r\n if (this.timePicker)\r\n this.timePicker.render();\r\n }\r\n this.setDateTime(new Date());\r\n };\r\n DateTimePicker.prototype.createCalendar = function (options) {\r\n return null;\r\n };\r\n DateTimePicker.prototype.createTimePicker = function (options) {\r\n return null;\r\n };\r\n DateTimePicker.prototype.show = function (anchor) {\r\n if (this.options.beforeShow) {\r\n this.options.beforeShow();\r\n }\r\n var pos = getElementAbsolutePos(anchor || document.body);\r\n this.slot.style.top = pos.y + anchor.clientHeight + 'px';\r\n this.slot.style.left = pos.x + 'px';\r\n };\r\n DateTimePicker.prototype.apply = function (date) {\r\n if (this.options.onApply) {\r\n this.options.onApply(date);\r\n }\r\n this.destroy();\r\n };\r\n DateTimePicker.prototype.cancel = function () {\r\n if (this.options.onCancel) {\r\n this.options.onCancel();\r\n }\r\n this.destroy();\r\n };\r\n DateTimePicker.prototype.destroy = function () {\r\n if (this.slot && this.slot.parentElement) {\r\n this.slot.parentElement.removeChild(this.slot);\r\n }\r\n };\r\n DateTimePicker.prototype.dateTimeChanged = function () {\r\n if (this.options.onDateTimeChanged) {\r\n this.options.onDateTimeChanged(this.currentDateTime);\r\n }\r\n };\r\n return DateTimePicker;\r\n}());\r\nexport { DateTimePicker };\r\n//# sourceMappingURL=date_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { Calendar } from './calendar';\r\nvar DefaultCalendar = /** @class */ (function (_super) {\r\n __extends(DefaultCalendar, _super);\r\n function DefaultCalendar(slot, options) {\r\n var _this = _super.call(this, slot, options) || this;\r\n _this.daysOfWeek = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n _this.months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n _this.calendarBody = null;\r\n _this.isManualInputChanging = false;\r\n for (var i = 0; i < _this.daysOfWeek.length; i++) {\r\n _this.daysOfWeek[i] = i18n.getShortWeekDayName(i + 1);\r\n }\r\n for (var i = 0; i < _this.months.length; i++) {\r\n _this.months[i] = i18n.getLongMonthName(i + 1);\r\n }\r\n return _this;\r\n }\r\n DefaultCalendar.prototype.setDate = function (date) {\r\n _super.prototype.setDate.call(this, date);\r\n this.selectedMonth = this.currentDate.getMonth();\r\n this.selectedYear = this.currentDate.getFullYear();\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.render = function () {\r\n var _this = this;\r\n var header = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-header\");\r\n if (this.options.showDateTimeInput) {\r\n header\r\n .addChildElement(this.renderManualDateInput());\r\n }\r\n else {\r\n header\r\n .addChild('span', function (builder) { return _this.headerTextElem = builder.toDOM(); });\r\n }\r\n domel(this.slot)\r\n .addChildElement(this.renderCalendarButtons());\r\n this.calendarBody = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-body\")\r\n .toDOM();\r\n };\r\n DefaultCalendar.prototype.getInputDateFormat = function () {\r\n var settings = i18n.getLocaleSettings();\r\n return (this.options.timePickerIsUsed)\r\n ? settings.editDateFormat + \" \" + settings.editTimeFormat\r\n : settings.editDateFormat;\r\n };\r\n DefaultCalendar.prototype.renderManualDateInput = function () {\r\n var _this = this;\r\n var format = this.getInputDateFormat();\r\n var builder = domel('input')\r\n .attr('placeholder', format)\r\n .addClass(this.cssPrefix + \"-header-input\");\r\n builder\r\n .mask(format.replace('yyyy', '9999')\r\n .replace('MM', '99')\r\n .replace('dd', '99')\r\n .replace('HH', '99')\r\n .replace('mm', '99')\r\n .replace('ss', '99'))\r\n .on('input', function (ev) {\r\n builder.removeClass('error');\r\n try {\r\n _this.isManualInputChanging = true;\r\n var newDate = dataUtils.strToDateTime(_this.manualInputElem.value, format);\r\n _this.currentDate = newDate;\r\n _this.jump(_this.currentDate.getFullYear(), _this.currentDate.getMonth());\r\n _this.dateChanged(false);\r\n }\r\n catch (e) {\r\n builder.addClass('error');\r\n }\r\n finally {\r\n _this.isManualInputChanging = false;\r\n }\r\n })\r\n .on('keydown', function (ev) {\r\n if (ev.keyCode === 13) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (_this.manualInputElem.className.indexOf('error') < 0\r\n && !_this.isManualInputChanging)\r\n _this.dateChanged(true);\r\n }\r\n })\r\n .on('focus', function () {\r\n setTimeout(function () {\r\n _this.manualInputElem.selectionStart = 0;\r\n _this.manualInputElem.selectionEnd = 0;\r\n }, 50);\r\n });\r\n this.manualInputElem = builder.toDOM();\r\n return this.manualInputElem;\r\n };\r\n DefaultCalendar.prototype.updateDisplayedDateValue = function () {\r\n if (this.manualInputElem) {\r\n if (!this.isManualInputChanging) {\r\n var format = this.getInputDateFormat();\r\n this.manualInputElem.value = dataUtils.dateTimeToStr(this.currentDate, format);\r\n this.manualInputElem.focus();\r\n }\r\n }\r\n else if (this.headerTextElem) {\r\n var locale = i18n.getCurrentLocale();\r\n this.headerTextElem.innerText = this.currentDate.toLocaleString(locale == 'en' ? undefined : locale, {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n });\r\n }\r\n };\r\n DefaultCalendar.prototype.renderCalendarButtons = function () {\r\n var _this = this;\r\n var builder = domel('nav')\r\n .addClass(this.cssPrefix + \"-nav\")\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-prev\")\r\n .on('click', function () {\r\n _this.prev();\r\n })\r\n .addChild('span', function (builder) { return builder.html('‹'); }); })\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-selectors\")\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-month\")\r\n .addChild('select', function (builder) {\r\n builder\r\n .on('change', function () {\r\n _this.jump(_this.selectedYear, parseInt(_this.selectMonthElem.value));\r\n });\r\n var _loop_1 = function (i) {\r\n builder.addChild('option', function (builder) { return builder\r\n .attr('value', i.toString())\r\n .text(_this.months[i]); });\r\n };\r\n for (var i = 0; i < _this.months.length; i++) {\r\n _loop_1(i);\r\n }\r\n _this.selectMonthElem = builder.toDOM();\r\n }); })\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-year\")\r\n .addChild('select', function (builder) { return _this.selectYearElem = builder\r\n .on('change', function () {\r\n _this.jump(parseInt(_this.selectYearElem.value), _this.selectedMonth);\r\n })\r\n .toDOM(); }); }); })\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-next\")\r\n .on('click', function () {\r\n _this.next();\r\n })\r\n .addChild('span', function (builder) { return builder.html('›'); }); });\r\n return builder.toDOM();\r\n };\r\n DefaultCalendar.prototype.prev = function () {\r\n this.selectedYear = (this.selectedMonth === 0) ? this.selectedYear - 1 : this.selectedYear;\r\n this.selectedMonth = (this.selectedMonth === 0) ? 11 : this.selectedMonth - 1;\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.next = function () {\r\n this.selectedYear = (this.selectedMonth === 11) ? this.selectedYear + 1 : this.selectedYear;\r\n this.selectedMonth = (this.selectedMonth + 1) % 12;\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.rerenderSelectYear = function () {\r\n var match = /c-(\\d*):c\\+(\\d*)/g.exec(this.options.yearRange);\r\n var minusYear = 0;\r\n var plusYear = 1;\r\n if (match !== null) {\r\n minusYear = parseInt(match[1]);\r\n plusYear = parseInt(match[2]);\r\n }\r\n this.selectYearElem.innerHTML = '';\r\n for (var i = 0; i <= minusYear + plusYear; i++) {\r\n var op = document.createElement(\"option\");\r\n var year = this.selectedYear - minusYear + i;\r\n op.value = year.toString();\r\n op.innerText = year.toString();\r\n this.selectYearElem.appendChild(op);\r\n }\r\n };\r\n DefaultCalendar.prototype.jump = function (year, month) {\r\n this.selectedYear = year;\r\n this.selectedMonth = month;\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.rerenderMonth = function () {\r\n var _this = this;\r\n //header text\r\n this.updateDisplayedDateValue();\r\n this.rerenderSelectYear();\r\n var firstDay = (new Date(this.selectedYear, this.selectedMonth)).getDay();\r\n var daysInMonth = new Date(this.selectedYear, this.selectedMonth + 1, 0).getDate();\r\n this.calendarBody.innerHTML = \"\";\r\n this.selectYearElem.value = this.selectedYear.toString();\r\n this.selectMonthElem.value = this.selectedMonth.toString();\r\n this.daysOfWeek.forEach(function (day, idx) {\r\n domel('div', _this.calendarBody)\r\n .addClass(_this.cssPrefix + \"-weekday\")\r\n .addClass(idx == 0 || idx == 6 ? _this.cssPrefix + \"-weekend\" : '')\r\n .text(day);\r\n });\r\n // Add empty cells before first day\r\n for (var i = 0; i < firstDay; i++) {\r\n domel('div', this.calendarBody)\r\n .addClass(this.cssPrefix + \"-day-empty\");\r\n }\r\n // Add all month days\r\n var today = new Date();\r\n for (var day = 1; day <= daysInMonth; day++) {\r\n var builder = domel('div', this.calendarBody)\r\n .addClass(this.cssPrefix + \"-day\")\r\n .attr('data-date', day.toString())\r\n .text(day.toString())\r\n .on('click', function (e) {\r\n _this.currentDate.setFullYear(_this.selectedYear);\r\n _this.currentDate.setMonth(_this.selectedMonth);\r\n _this.currentDate.setDate(parseInt(e.target.getAttribute('data-date')));\r\n _this.dateChanged(_this.options.oneClickDateSelection);\r\n });\r\n if (day === today.getDate() && this.selectedYear === today.getFullYear() && this.selectedMonth === today.getMonth()) {\r\n builder.addClass(this.cssPrefix + \"-day-current\");\r\n }\r\n if (day === this.currentDate.getDate() && this.selectedYear === this.currentDate.getFullYear() && this.selectedMonth === this.currentDate.getMonth()) {\r\n builder.addClass(this.cssPrefix + \"-day-selected\");\r\n }\r\n var dayOfWeek = (firstDay + day - 1) % 7;\r\n if (dayOfWeek == 0 || dayOfWeek == 6) {\r\n builder.addClass(this.cssPrefix + \"-weekend\");\r\n }\r\n }\r\n // Add empty cells after last day\r\n var cellsDrawnInLastRow = (firstDay + daysInMonth) % 7;\r\n var cellsToDraw = cellsDrawnInLastRow == 0 ? 0 : 7 - cellsDrawnInLastRow;\r\n for (var i = 0; i < cellsToDraw; i++) {\r\n domel('div', this.calendarBody)\r\n .addClass(this.cssPrefix + \"-day-empty\");\r\n }\r\n };\r\n DefaultCalendar.prototype.dateChanged = function (apply) {\r\n _super.prototype.dateChanged.call(this, apply);\r\n this.rerenderMonth();\r\n };\r\n return DefaultCalendar;\r\n}(Calendar));\r\nexport { DefaultCalendar };\r\n//# sourceMappingURL=default_calendar.js.map","var TimePicker = /** @class */ (function () {\r\n function TimePicker(slot, options) {\r\n this.slot = slot;\r\n this.options = options || {};\r\n }\r\n Object.defineProperty(TimePicker.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'kdtp-tp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TimePicker.prototype.setTime = function (time) {\r\n this.currentTime = new Date(time);\r\n };\r\n TimePicker.prototype.getTime = function () {\r\n return new Date(this.currentTime);\r\n };\r\n TimePicker.prototype.timeChanged = function () {\r\n if (this.options.onTimeChanged) {\r\n this.options.onTimeChanged(this.currentTime);\r\n }\r\n };\r\n return TimePicker;\r\n}());\r\nexport { TimePicker };\r\n//# sourceMappingURL=time_picker.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { TimePicker } from './time_picker';\r\nvar DefaultTimePicker = /** @class */ (function (_super) {\r\n __extends(DefaultTimePicker, _super);\r\n function DefaultTimePicker() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultTimePicker.prototype.setTime = function (time) {\r\n _super.prototype.setTime.call(this, time);\r\n this.updateDisplayedTime();\r\n this.hoursInput.valueAsNumber = time.getHours();\r\n this.minutesInput.valueAsNumber = time.getMinutes();\r\n };\r\n DefaultTimePicker.prototype.render = function () {\r\n var _this = this;\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-time\")\r\n .addChild('span', function (builder) { return _this.timeText = builder.toDOM(); })\r\n .toDOM();\r\n var slidersBuilder = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-sliders\");\r\n slidersBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-time-row\")\r\n .title('Hours')\r\n .addChild('input', function (builder) { return _this.hoursInput = builder\r\n .addClass(_this.cssPrefix + \"-input-hours\")\r\n .type('range')\r\n .attr('min', '0')\r\n .attr('max', '23')\r\n .attr('step', '1')\r\n .on('input', function (e) {\r\n _this.currentTime.setHours(_this.hoursInput.valueAsNumber);\r\n _this.updateDisplayedTime();\r\n _this.timeChanged();\r\n })\r\n .toDOM(); }); });\r\n slidersBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-time-row\")\r\n .title('Minutes')\r\n .addChild('input', function (builder) { return _this.minutesInput = builder\r\n .addClass(_this.cssPrefix + \"-input-minutes\")\r\n .type('range')\r\n .attr('min', '0')\r\n .attr('max', '59')\r\n .attr('step', '1')\r\n .on('input', function (e) {\r\n _this.currentTime.setMinutes(_this.minutesInput.valueAsNumber);\r\n _this.updateDisplayedTime();\r\n _this.timeChanged();\r\n })\r\n .toDOM(); }); });\r\n return this.slot;\r\n };\r\n DefaultTimePicker.prototype.updateDisplayedTime = function () {\r\n var locale = i18n.getCurrentLocale();\r\n var timeToDraw = this.currentTime.toLocaleString(locale == 'en' ? undefined : locale, {\r\n hour: \"numeric\",\r\n minute: \"numeric\"\r\n });\r\n this.timeText.innerText = timeToDraw;\r\n };\r\n return DefaultTimePicker;\r\n}(TimePicker));\r\nexport { DefaultTimePicker };\r\n//# sourceMappingURL=default_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { DateTimePicker } from './date_time_picker';\r\nimport { DefaultCalendar } from './default_calendar';\r\nimport { DefaultTimePicker } from './default_time_picker';\r\nimport { getElementAbsolutePos } from '../utils/ui-utils';\r\nvar DefaultDateTimePicker = /** @class */ (function (_super) {\r\n __extends(DefaultDateTimePicker, _super);\r\n function DefaultDateTimePicker() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultDateTimePicker.prototype.render = function () {\r\n var _this = this;\r\n var sb = domel('div', document.body)\r\n .addClass(\"\" + this.cssPrefix)\r\n .attr('tabIndex', '0')\r\n .setStyle('position', 'absolute')\r\n .setStyle('top', '-1000px')\r\n .setStyle('left', '-1000px')\r\n .on('keydown', function (ev) {\r\n if (ev.keyCode === 27) { // ESC is pressed\r\n _this.cancel();\r\n }\r\n else if (ev.keyCode === 13) { // Enter is pressed\r\n _this.apply(_this.getDateTime());\r\n }\r\n return false;\r\n });\r\n if (this.options.zIndex) {\r\n sb.setStyle('z-index', \"\" + this.options.zIndex);\r\n }\r\n this.slot = sb.toDOM();\r\n _super.prototype.render.call(this);\r\n this.renderButtons();\r\n this.globalMouseDownHandler = function (e) {\r\n var event = window.event || e;\r\n var o = event.srcElement || event.target;\r\n var isOutside = !_this.slot.contains(event.target);\r\n if (isOutside) {\r\n document.removeEventListener('mousedown', _this.globalMouseDownHandler, true);\r\n _this.cancel();\r\n }\r\n return true;\r\n };\r\n };\r\n DefaultDateTimePicker.prototype.renderButtons = function () {\r\n var _this = this;\r\n var builder = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-buttons\")\r\n .addChild('button', function (b) { return _this.nowButton = b\r\n .addClass(_this.cssPrefix + \"-button \" + _this.cssPrefix + \"-button-now\")\r\n .text(i18n.getText('ButtonNow'))\r\n .on('click', function () {\r\n _this.setDateTime(new Date());\r\n _this.dateTimeChanged();\r\n return false;\r\n })\r\n .toDOM(); });\r\n if (this.options.showTimePicker || !this.options.oneClickDateSelection) {\r\n builder.addChild('button', function (b) { return _this.submitButton = b\r\n .addClass(_this.cssPrefix + \"-button \" + _this.cssPrefix + \"-button-apply\")\r\n .text(i18n.getText('ButtonApply'))\r\n .on('click', function () {\r\n _this.apply(_this.getDateTime());\r\n return false;\r\n })\r\n .toDOM(); });\r\n }\r\n builder.addChild('button', function (b) { return _this.submitButton = b\r\n .addClass(_this.cssPrefix + \"-button \" + _this.cssPrefix + \"-button-cancel\")\r\n .text(i18n.getText('ButtonCancel'))\r\n .on('click', function () {\r\n _this.cancel();\r\n return false;\r\n })\r\n .toDOM(); });\r\n };\r\n DefaultDateTimePicker.prototype.createCalendar = function (options) {\r\n this.calendarSlot =\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-cal\")\r\n .toDOM();\r\n return new DefaultCalendar(this.calendarSlot, options);\r\n };\r\n DefaultDateTimePicker.prototype.createTimePicker = function (options) {\r\n this.timePickerSlot =\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-tp\")\r\n .toDOM();\r\n return new DefaultTimePicker(this.timePickerSlot, options);\r\n };\r\n DefaultDateTimePicker.prototype.show = function (anchor) {\r\n var _this = this;\r\n if (this.options.showDateTimeInput) {\r\n if (this.options.beforeShow) {\r\n this.options.beforeShow();\r\n }\r\n var anchorPos = getElementAbsolutePos(anchor || document.body);\r\n var parentPos = getElementAbsolutePos(anchor ? anchor.parentElement || anchor : document.body);\r\n this.slot.style.top = parentPos.y + 'px';\r\n this.slot.style.left = anchorPos.x + 'px';\r\n }\r\n else {\r\n _super.prototype.show.call(this, anchor);\r\n this.slot.focus();\r\n }\r\n setTimeout(function () {\r\n document.addEventListener('mousedown', _this.globalMouseDownHandler, true);\r\n }, 1);\r\n };\r\n return DefaultDateTimePicker;\r\n}(DateTimePicker));\r\nexport { DefaultDateTimePicker };\r\n//# sourceMappingURL=default_date_time_picker.js.map","import { i18n } from '@easydata/core';\r\nfunction addEasyDataUITexts() {\r\n i18n.updateDefaultTexts({\r\n GridPageInfo: '{FirstPageRecordNum} - {LastPageRecordNum} of {Total} records',\r\n GridItemsPerPage: 'items per page',\r\n ButtonOK: \"OK\",\r\n ButtonCancel: \"Cancel\",\r\n ButtonApply: 'Apply',\r\n ButtonNow: 'Now',\r\n LblTotal: 'Total'\r\n });\r\n}\r\naddEasyDataUITexts();\r\n//# sourceMappingURL=text_resources.js.map","// grid\r\nexport * from './grid/easy_grid';\r\nexport * from './grid/easy_grid_options';\r\nexport * from './grid/easy_grid_columns';\r\nexport * from './grid/easy_grid_cell_renderer';\r\n//datetimepicker\r\nexport * from './datetimepicker/calendar';\r\nexport * from './datetimepicker/date_time_picker';\r\nexport * from './datetimepicker/default_calendar';\r\nexport * from './datetimepicker/default_date_time_picker';\r\nexport * from './datetimepicker/default_time_picker';\r\nexport * from './datetimepicker/time_picker';\r\n// utils\r\nexport * from './utils/browser_utils';\r\nexport * from './utils/dom_elem_builder';\r\nexport * from './utils/drag_manager';\r\nexport * from './utils/mask';\r\nexport * from './utils/ui-utils';\r\n//dialogs\r\nexport * from './dialogs/default_dialog_service';\r\nexport * from './dialogs/dialog_service';\r\nimport './i18n/text_resources';\r\nimport { DefaultDialogService } from './dialogs/default_dialog_service';\r\n// export dialogs to use outside of context as global\r\nvar dialogs = new DefaultDialogService();\r\nexport { dialogs };\r\n//# sourceMappingURL=public_api.js.map","export var eqconsts;\r\n(function (eqconsts) {\r\n /**\r\n * Defines some commonly used constants\r\n */\r\n var ConstLists = /** @class */ (function () {\r\n function ConstLists() {\r\n /**\r\n * Contains macros for the special dates (like Today, First day of the month, etc)\r\n */\r\n this.SpecDateValues = [\r\n { id: '${Today}', key: 'Today', isDefault: true },\r\n { id: '${Yesterday}', key: 'Yesterday' },\r\n { id: '${Tomorrow}', key: 'Tomorrow' },\r\n { id: '${FirstDayOfMonth}', key: 'FirstDayOfMonth' },\r\n { id: '${FirstDayOfYear}', key: 'FirstDayOfYear' }\r\n ];\r\n /**\r\n * Contains macros for the special times (like Now, Noon, etc)\r\n */\r\n this.SpecTimeValues = [\r\n { id: '${Now}', key: 'Now', isDefault: true },\r\n { id: '${HourStart}', key: 'HourStart' },\r\n { id: '${Midnight}', key: 'Midnight' },\r\n { id: '${Noon}', key: 'Noon' }\r\n ];\r\n /**\r\n * Boolean values macros (true and false)\r\n */\r\n this.BooleanValues = [\r\n { id: '${false}', key: 'False' },\r\n { id: '${true}', key: 'True', isDefault: true }\r\n ];\r\n }\r\n return ConstLists;\r\n }());\r\n /**\r\n * Contains some constants (macros) with special date/time and boolean values.\r\n */\r\n eqconsts.constLists = new ConstLists();\r\n /**\r\n * Constants representing various types of relationships between conditions\r\n */\r\n eqconsts.predicateLinkTypeList = [\r\n { id: 'All', key: 'LinkTypeAll' },\r\n { id: 'Any', key: 'LinkTypeAny' },\r\n { id: 'None', key: 'LinkTypeNone' },\r\n { id: 'NotAll', key: 'LinkTypeNotAll' }\r\n ];\r\n})(eqconsts || (eqconsts = {}));\r\n//# sourceMappingURL=constants.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { EqModelLoader } from '../main/model_loader';\r\nvar EqServerModelLoader = /** @class */ (function (_super) {\r\n __extends(EqServerModelLoader, _super);\r\n function EqServerModelLoader(context) {\r\n return _super.call(this, context) || this;\r\n }\r\n EqServerModelLoader.prototype.init = function () {\r\n };\r\n EqServerModelLoader.prototype.sendLoadModelRequest = function (options) {\r\n var _this = this;\r\n var context = this.getContext();\r\n var http = context.getServices().getHttpClient();\r\n var url = context.resolveEndpoint('GetModel', { modelId: options.modelId });\r\n http.get(url)\r\n .then(function (responseData) {\r\n if (!responseData.model) {\r\n _this.modelLoadingRejectFunc(new Error('Wrong response format for \"GetModel\" request'));\r\n }\r\n _this.modelLoadingResolveFunc(responseData.model);\r\n })\r\n .catch(function (error) {\r\n _this.modelLoadingRejectFunc(error);\r\n });\r\n };\r\n return EqServerModelLoader;\r\n}(EqModelLoader));\r\nexport { EqServerModelLoader };\r\n//# sourceMappingURL=eqs_model_loader.js.map","var EqServerDataFetcher = /** @class */ (function () {\r\n function EqServerDataFetcher(context) {\r\n this.context = context;\r\n }\r\n EqServerDataFetcher.prototype.fetchData = function (fetchOptions) {\r\n var query = fetchOptions.query || this.context.getQuery();\r\n var queryId = query.getId();\r\n var requestData = {\r\n 'options': fetchOptions.options\r\n };\r\n if (typeof (fetchOptions.queryId) !== 'undefined') {\r\n requestData.queryId = fetchOptions.queryId;\r\n }\r\n else {\r\n requestData.query = query.toJSONData();\r\n }\r\n if (fetchOptions.debug) {\r\n requestData.debug = fetchOptions.debug;\r\n }\r\n if (fetchOptions.chunk) {\r\n requestData.chunk = fetchOptions.chunk;\r\n }\r\n if (fetchOptions.data) {\r\n requestData.data = fetchOptions.data;\r\n }\r\n if (typeof (fetchOptions.aux) != 'undefined') {\r\n requestData.aux = fetchOptions.aux;\r\n }\r\n var url = this.context.resolveEndpoint('FetchData', { modelId: query.getModel().getId(), queryId: queryId });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.post(url, requestData)\r\n .then(function (data) { return data; });\r\n };\r\n return EqServerDataFetcher;\r\n}());\r\nexport { EqServerDataFetcher };\r\n//# sourceMappingURL=eqs_data_fetcher.js.map","var EqServerQuerySynchronizer = /** @class */ (function () {\r\n function EqServerQuerySynchronizer(context) {\r\n this.context = context;\r\n }\r\n EqServerQuerySynchronizer.prototype.syncQuery = function (options) {\r\n options = options || {};\r\n var query = options.query || this.context.getQuery();\r\n var ops = options.options || {};\r\n var requestData = {\r\n 'query': query.toJSONData(),\r\n 'options': ops,\r\n };\r\n if (options.data) {\r\n requestData.data = options.data;\r\n }\r\n var url = this.context.resolveEndpoint('SyncQuery', { modelId: query.getModel().getId(), queryId: query.getId() });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.post(url, requestData)\r\n .then(function (responseData) { return responseData; });\r\n };\r\n return EqServerQuerySynchronizer;\r\n}());\r\nexport { EqServerQuerySynchronizer };\r\n//# sourceMappingURL=eqs_query_synchronizer.js.map","import { utils as dataUtils } from '@easydata/core';\r\nvar EqServerValueListResolver = /** @class */ (function () {\r\n function EqServerValueListResolver(context) {\r\n this.context = context;\r\n }\r\n EqServerValueListResolver.prototype.loadValueList = function (options) {\r\n var modelId = options.modelId || this.context.getModel().getId();\r\n var requestData = dataUtils.assign({ modelId: modelId }, options.params);\r\n var editorId = requestData.editorId;\r\n var http = this.context.getServices().getHttpClient();\r\n var url = this.context.resolveEndpoint('GetValueList', { modelId: modelId, listId: editorId });\r\n var queryParams = {};\r\n if (options && options.params && options.params.queryParams) {\r\n queryParams = options.params.queryParams;\r\n }\r\n return http.get(url, { queryParams: queryParams })\r\n .then(function (responseData) {\r\n if (responseData && responseData.values) {\r\n return responseData.values;\r\n }\r\n else {\r\n throw new Error('Wrong response format. No \"values\" property');\r\n }\r\n });\r\n };\r\n return EqServerValueListResolver;\r\n}());\r\nexport { EqServerValueListResolver };\r\n//# sourceMappingURL=eqs_value_list_resolver.js.map","var EqQueryFileLoader = /** @class */ (function () {\r\n function EqQueryFileLoader(context) {\r\n this.context = context;\r\n }\r\n EqQueryFileLoader.prototype.getQueryFile = function (options) {\r\n var query = options.query || this.context.getQuery();\r\n var url = this.context.resolveEndpoint('GetQueryFile', { modelId: query.getModel().getId(),\r\n format: options.format || 'xml' });\r\n var http = this.context.getServices().getHttpClient();\r\n var actionResult = http.post(url, {\r\n query: query.toJSONData()\r\n });\r\n var request = actionResult.getRequest();\r\n return actionResult.then(function (responseData) {\r\n var blob = new Blob([responseData]);\r\n var dispositionHeader = request.getXMLHttpRequest().getResponseHeader(\"Content-Disposition\");\r\n var fileName = dispositionHeader\r\n ? dispositionHeader.match(/filename=\"(.*)\"/)[1]\r\n : 'query.json';\r\n if (options.fileName) {\r\n fileName = options.fileName\r\n + fileName.substring(fileName.lastIndexOf('.'));\r\n }\r\n if (window.navigator['msSaveOrOpenBlob']) {\r\n // Internet Explorer\r\n window.navigator['msSaveOrOpenBlob'](blob, fileName);\r\n }\r\n else {\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n a.style.display = \"none\";\r\n a.href = window.URL.createObjectURL(blob);\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(a.href);\r\n document.body.removeChild(a);\r\n }\r\n });\r\n };\r\n EqQueryFileLoader.prototype.uploadQueryFile = function (options) {\r\n options = options || {};\r\n var query = options.query || this.context.getQuery();\r\n var url = this.context.resolveEndpoint('UploadQueryFile', { modelId: query.getModel().getId() });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.post(url, options.data, {\r\n dataType: 'form-data'\r\n })\r\n .then(function (responseData) {\r\n return responseData.query;\r\n });\r\n };\r\n return EqQueryFileLoader;\r\n}());\r\nexport { EqQueryFileLoader };\r\n//# sourceMappingURL=eqs_query_file_loader.js.map","import { HttpClient } from '@easydata/core';\r\nimport { Query } from '../query/query';\r\nimport { DataModel } from '../dm/data_model';\r\nimport { BrowserQueryStorage } from '../main/query_storage';\r\nimport { EqServerModelLoader } from '../eqs/eqs_model_loader';\r\nimport { EqServerDataFetcher } from '../eqs/eqs_data_fetcher';\r\nimport { EqServerQuerySynchronizer } from '../eqs/eqs_query_synchronizer';\r\nimport { EqServerValueListResolver } from '../eqs/eqs_value_list_resolver';\r\nimport { EqQueryFileLoader } from '../eqs/eqs_query_file_loader';\r\nimport { DefaultAggregatesCalculator } from '../data/eq_aggr_container';\r\nvar EqServiceProvider = /** @class */ (function () {\r\n function EqServiceProvider(context) {\r\n this.context = context;\r\n this.modelLoader = null;\r\n this.queryStorage = null;\r\n this.querySynchronizer = null;\r\n this.dataFetcher = null;\r\n this.valueListResolver = null;\r\n this.queryFileLoader = null;\r\n this.aggrCalculator = null;\r\n this.httpClient = new HttpClient();\r\n this.httpClient.defaultHeaders['x-eqjs-version'] = '7.2.0';\r\n this.modelResolver = function (_) { return new DataModel(); };\r\n this.modelStorageResolver = null;\r\n this.queryResolver = function (context) { return new Query(context.getModel()); };\r\n this.modelLoaderResolver = function (context) { return new EqServerModelLoader(context); };\r\n this.queryStorageResolver = function (context) { return new BrowserQueryStorage(context); };\r\n this.querySynchronizerResolver = function (context) { return new EqServerQuerySynchronizer(context); };\r\n this.vlrResolver = function (context) { return new EqServerValueListResolver(context); };\r\n this.dataFetcherResolver = function (context) { return new EqServerDataFetcher(context); };\r\n this.queryFileLoaderResolver = function (context) { return new EqQueryFileLoader(context); };\r\n this.aggrCalculatoResolver = function (context) { return new DefaultAggregatesCalculator(context); };\r\n }\r\n EqServiceProvider.prototype.reset = function () {\r\n this.modelStorage = null;\r\n this.modelLoader = null;\r\n this.queryStorage = null;\r\n this.querySynchronizer = null;\r\n };\r\n EqServiceProvider.prototype.getHttpClient = function () {\r\n return this.httpClient;\r\n };\r\n EqServiceProvider.prototype.createDataModel = function () {\r\n if (!this.modelResolver) {\r\n throw 'Model resolver is not defined';\r\n }\r\n return this.modelResolver(this.context);\r\n };\r\n EqServiceProvider.prototype.createQuery = function () {\r\n if (!this.queryResolver) {\r\n throw 'Query resolver is not defined';\r\n }\r\n return this.queryResolver(this.context);\r\n };\r\n EqServiceProvider.prototype.getModelLoader = function () {\r\n if (!this.modelLoader) {\r\n if (!this.modelLoaderResolver) {\r\n throw 'ModelLoaderResolver is not defined';\r\n }\r\n this.modelLoader = this.modelLoaderResolver(this.context);\r\n }\r\n return this.modelLoader;\r\n };\r\n EqServiceProvider.prototype.getModelStorage = function () {\r\n if (!this.modelStorage) {\r\n if (!this.modelStorageResolver) {\r\n throw 'ModelStorageResolver is not defined';\r\n }\r\n this.modelStorage = this.modelStorageResolver(this.context);\r\n }\r\n return this.modelStorage;\r\n };\r\n EqServiceProvider.prototype.getQueryStorage = function () {\r\n if (!this.queryStorage) {\r\n if (!this.queryStorageResolver) {\r\n throw 'QueryStorageResolver is not defined';\r\n }\r\n this.queryStorage = this.queryStorageResolver(this.context);\r\n }\r\n return this.queryStorage;\r\n };\r\n EqServiceProvider.prototype.getQuerySynchronizer = function () {\r\n if (!this.querySynchronizer) {\r\n if (!this.querySynchronizerResolver) {\r\n throw 'QuerySynchronizerResolver is not defined';\r\n }\r\n this.querySynchronizer = this.querySynchronizerResolver(this.context);\r\n }\r\n return this.querySynchronizer;\r\n };\r\n EqServiceProvider.prototype.getDataFetcher = function () {\r\n if (!this.dataFetcher) {\r\n if (!this.dataFetcherResolver) {\r\n throw 'DataFetcherResolver is not defined';\r\n }\r\n this.dataFetcher = this.dataFetcherResolver(this.context);\r\n }\r\n return this.dataFetcher;\r\n };\r\n EqServiceProvider.prototype.getValueListResolver = function () {\r\n if (!this.valueListResolver) {\r\n if (!this.vlrResolver) {\r\n throw 'Resolver for ValueListResolver is not defined';\r\n }\r\n this.valueListResolver = this.vlrResolver(this.context);\r\n }\r\n return this.valueListResolver;\r\n };\r\n EqServiceProvider.prototype.getQueryFileLoader = function () {\r\n if (!this.queryFileLoader) {\r\n if (!this.queryFileLoaderResolver) {\r\n throw 'Resolver for QueryFileLoader is not defined';\r\n }\r\n this.queryFileLoader = this.queryFileLoaderResolver(this.context);\r\n }\r\n return this.queryFileLoader;\r\n };\r\n EqServiceProvider.prototype.getAggregatesCalculator = function () {\r\n if (!this.aggrCalculator) {\r\n if (!this.aggrCalculatoResolver) {\r\n throw 'Resolver for AggregatesCalculator is not defined';\r\n }\r\n this.aggrCalculator = this.aggrCalculatoResolver(this.context);\r\n }\r\n return this.aggrCalculator;\r\n };\r\n EqServiceProvider.prototype.registerDataModelResolver = function (resolver) {\r\n this.modelResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerQueryResolver = function (resolver) {\r\n this.queryResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerModelLoaderResolver = function (resolver) {\r\n this.modelLoaderResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerModelStorageResolver = function (resolver) {\r\n this.modelStorageResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerQueryStorageResolver = function (resolver) {\r\n this.queryStorageResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerDataFetcherResolver = function (resolver) {\r\n this.dataFetcherResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerQuerySyncronizerResolver = function (resolver) {\r\n this.querySynchronizerResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerValueListResolver = function (resolver) {\r\n this.vlrResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerQueryFileLoaderResolver = function (resolver) {\r\n this.queryFileLoaderResolver = resolver;\r\n };\r\n EqServiceProvider.prototype.registerAggregatesCalculator = function (resolver) {\r\n this.aggrCalculatoResolver = resolver;\r\n };\r\n return EqServiceProvider;\r\n}());\r\nexport { EqServiceProvider };\r\n//# sourceMappingURL=eq_services.js.map","/** Represents groups of widgets. Used to identify widgets */\r\nexport var WidgetGroup;\r\n(function (WidgetGroup) {\r\n /** None widget group. */\r\n WidgetGroup[WidgetGroup[\"None\"] = 0] = \"None\";\r\n /** The group of widgets responsible for the Model. */\r\n WidgetGroup[WidgetGroup[\"Model\"] = 1] = \"Model\";\r\n /** The group of widgets responsible for the Query. */\r\n WidgetGroup[WidgetGroup[\"Query\"] = 2] = \"Query\";\r\n /** The group of widgets responsible for the Result. */\r\n WidgetGroup[WidgetGroup[\"Result\"] = 4] = \"Result\";\r\n /** The group of widgets responsible for the statement. */\r\n WidgetGroup[WidgetGroup[\"Statement\"] = 8] = \"Statement\";\r\n /** The group of widgets responsible for tracking Query status. */\r\n WidgetGroup[WidgetGroup[\"QueryStatus\"] = 16] = \"QueryStatus\";\r\n /** All. */\r\n WidgetGroup[WidgetGroup[\"All\"] = 65535] = \"All\";\r\n})(WidgetGroup || (WidgetGroup = {}));\r\n//# sourceMappingURL=widget_group.js.map","export var EqAction;\r\n(function (EqAction) {\r\n EqAction[\"LoadModel\"] = \"LoadModel\";\r\n EqAction[\"LoadQuery\"] = \"LoadQuery\";\r\n EqAction[\"LoadQueryList\"] = \"LoadQueryList\";\r\n EqAction[\"NewQuery\"] = \"NewQuery\";\r\n EqAction[\"SaveQuery\"] = \"SaveQuery\";\r\n EqAction[\"RemoveQuery\"] = \"RemoveQuery\";\r\n EqAction[\"SyncQuery\"] = \"SyncQuery\";\r\n EqAction[\"FetchData\"] = \"FetchData\";\r\n EqAction[\"GetValueList\"] = \"GetValueList\";\r\n EqAction[\"ExportResult\"] = \"ExportResult\";\r\n EqAction[\"GetQueryFile\"] = \"GetQueryFile\";\r\n EqAction[\"UploadQueryFile\"] = \"UploadQueryFile\";\r\n})(EqAction || (EqAction = {}));\r\n//# sourceMappingURL=eq_actions.js.map","export var EqActionResult;\r\n(function (EqActionResult) {\r\n EqActionResult[EqActionResult[\"Error\"] = 0] = \"Error\";\r\n EqActionResult[EqActionResult[\"Success\"] = 1] = \"Success\";\r\n})(EqActionResult || (EqActionResult = {}));\r\n//# sourceMappingURL=action.js.map","var EqServerExporter = /** @class */ (function () {\r\n function EqServerExporter(context) {\r\n this.context = context;\r\n }\r\n EqServerExporter.prototype.setFormat = function (format, responseType) {\r\n this.format = format;\r\n this.responseType = responseType;\r\n };\r\n EqServerExporter.prototype.export = function (exportOptions) {\r\n exportOptions = exportOptions || {};\r\n var http = this.context.getServices().getHttpClient();\r\n var format = this.format || \"csv\";\r\n var query = exportOptions.query || this.context.getQuery();\r\n var modelId = query.getModel().getId();\r\n var requestData = {\r\n 'settings': exportOptions.settings,\r\n };\r\n if (typeof (exportOptions.queryId) !== 'undefined') {\r\n requestData.queryId = exportOptions.queryId;\r\n }\r\n else {\r\n requestData.query = query.toJSONData();\r\n }\r\n if (exportOptions.data) {\r\n requestData.data = exportOptions.data;\r\n }\r\n var url = this.context.resolveEndpoint('ExportResult', { modelId: modelId, format: format });\r\n var actionResult = http.post(url, requestData, { responseType: this.responseType });\r\n var request = actionResult.getRequest();\r\n return actionResult.then(function (responseData) {\r\n var blob = new Blob([responseData]);\r\n var dispositionHeader = request.getXMLHttpRequest().getResponseHeader(\"Content-Disposition\");\r\n var filename = dispositionHeader\r\n ? dispositionHeader.match(/filename=\"(.*)\"/)[1]\r\n : 'export-data.' + format;\r\n if (window.navigator['msSaveOrOpenBlob']) {\r\n // Internet Explorer\r\n window.navigator['msSaveOrOpenBlob'](blob, filename);\r\n }\r\n else {\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n a.style.display = \"none\";\r\n a.href = window.URL.createObjectURL(blob);\r\n a.download = filename;\r\n a.click();\r\n window.URL.revokeObjectURL(a.href);\r\n document.body.removeChild(a);\r\n }\r\n });\r\n };\r\n return EqServerExporter;\r\n}());\r\nexport { EqServerExporter };\r\n//# sourceMappingURL=eqs_exporter.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { EasyDataTable, EventEmitter, utils as dataUtils } from '@easydata/core';\r\nimport { i18n } from '@easydata/core';\r\nimport { EqServiceProvider } from '../common/eq_services';\r\nimport { QueryChangePart } from '../query/query_events';\r\nimport { EqActionResult } from './action';\r\nimport { WidgetGroup } from '../types/widget_group';\r\nimport { equtils } from '../utils/utils';\r\nimport { EqAction } from './eq_actions';\r\nimport { EqServerExporter } from '../eqs/eqs_exporter';\r\nimport { EasyQueryDataLoader } from '../data/eq_data_loader';\r\n/**\r\n * Encapsulates all information about EasyQuery components on some webpage\r\n * and provides some basic operation over those components\r\n * Each context includes the following main components:\r\n * - one data model,\r\n * - one query,\r\n * - one result set\r\n * - several UI widgets.\r\n */\r\nvar EqContext = /** @class */ (function () {\r\n function EqContext() {\r\n var _this = this;\r\n this.servicesInitialized = false;\r\n this.internalListCache = {};\r\n this.loadModelOnStart = true;\r\n this.loadQueryOnStart = false;\r\n this.useStoredQueryOnFetch = false;\r\n this.debugMode = false;\r\n this._backendInfo = {\r\n type: 'EQN-ANC',\r\n subType: 'asp-net-core-razor'\r\n };\r\n //----------- endpoint processing functions --------------\r\n this.endpointVarsRegex = /\\{.*?\\}/g;\r\n this.elasticPaging = false;\r\n this._predefinedListRequestHandlers = {\r\n '_DSDE': function (params, onResult) {\r\n var data = _this.getModel().getAllDateMacros()\r\n .map(function (macroId) {\r\n return { id: '${{' + macroId + '}}', text: i18n.getText(macroId) };\r\n });\r\n onResult(data);\r\n return true;\r\n },\r\n '_DSTE': function (params, onResult) {\r\n var data = _this.getModel().getAllTimeMacros()\r\n .map(function (macroId) {\r\n return { id: '${{' + macroId + '}}', text: i18n.getText(macroId) };\r\n });\r\n onResult(data);\r\n return true;\r\n }\r\n };\r\n this._listRequestHandler = function (options, onResult) {\r\n if (options == null || !options.listName)\r\n return;\r\n var query = _this.getQuery();\r\n var params = dataUtils.assign({ listName: options.listName }, options.editorParams);\r\n var reqParams = {};\r\n var attrPattern = /@{{(.+?)}}/;\r\n for (var prop in params) {\r\n if (!params[prop])\r\n continue;\r\n var match = params[prop].match(attrPattern);\r\n if (match) {\r\n var paramValue = query.getOneValueForAttr(match[1]);\r\n if (!paramValue) {\r\n paramValue = '';\r\n }\r\n reqParams[prop] = params[prop].replace(attrPattern, paramValue);\r\n }\r\n }\r\n var requestParams = {\r\n listName: reqParams.listName,\r\n editorId: options.editorId,\r\n queryParams: reqParams\r\n };\r\n var list = _this.getListFromCache(options);\r\n if (list && list.length > 0) {\r\n onResult(list);\r\n return;\r\n }\r\n var processed = false;\r\n var predefinedHandler = _this._predefinedListRequestHandlers[options.editorId];\r\n if (predefinedHandler) {\r\n processed = predefinedHandler(options, onResult);\r\n }\r\n if (!processed && _this.clientListRequestHandler) {\r\n processed = _this.clientListRequestHandler(options, onResult);\r\n }\r\n if (!processed) {\r\n _this.loadValueList({\r\n params: requestParams,\r\n success: function (data) {\r\n if (data) {\r\n _this.addListToCache(options, data);\r\n }\r\n onResult(data);\r\n },\r\n error: function (message) {\r\n onResult(null);\r\n }\r\n });\r\n }\r\n };\r\n this.baseEndpoint = 'api/easyquery';\r\n this.eqServices = new EqServiceProvider(this);\r\n this.widgets = new Array();\r\n this.eventEmitter = new EventEmitter(this);\r\n this.exporters = new Map();\r\n this.endpoints = new Map();\r\n this.dataLoader = new EasyQueryDataLoader(this);\r\n this.resultTable = new EasyDataTable({\r\n loader: this.dataLoader,\r\n onUpdate: this.onResultTableUpdate.bind(this)\r\n });\r\n this.resultTable.id = 'ResultTable';\r\n this.errorHandlerId = this.addEventListener('error', function (context, status) {\r\n status.result = EqActionResult.Error;\r\n var msgTitle = status.action ? status.action + ' error' : 'Error';\r\n var msgText = status.text ? status.text : '';\r\n if (status.sourceError && status.sourceError.message !== msgText) {\r\n msgText += '\\n' + status.sourceError;\r\n }\r\n console.error(msgTitle + ': ' + msgText);\r\n });\r\n }\r\n EqContext.prototype.getServices = function () {\r\n return this.eqServices;\r\n };\r\n EqContext.prototype.registerExporter = function (format, resolver) {\r\n this.exporters.set(format, resolver);\r\n };\r\n EqContext.prototype.registerServerExporter = function (format, responseType) {\r\n this.registerExporter(format, function (context) {\r\n var exporter = new EqServerExporter(context);\r\n exporter.setFormat(format, responseType);\r\n return exporter;\r\n });\r\n };\r\n EqContext.prototype.getExporter = function (format) {\r\n var resolver = this.exporters.get(format);\r\n if (resolver) {\r\n return resolver(this);\r\n }\r\n return null;\r\n };\r\n EqContext.prototype.getExportFormats = function () {\r\n return Array.from(this.exporters.keys());\r\n };\r\n EqContext.prototype.addDefaultExporters = function () {\r\n this.registerServerExporter('csv', '');\r\n this.registerServerExporter('excel-html', '');\r\n };\r\n EqContext.prototype.resolveEndpoint = function (endpointKey, options) {\r\n options = options || {};\r\n var result = this.endpoints.get(endpointKey);\r\n if (!result) {\r\n throw endpointKey + ' endpoint is not defined';\r\n }\r\n var matches = result.match(this.endpointVarsRegex);\r\n if (matches) {\r\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\r\n var match = matches_1[_i];\r\n var opt = match.substring(1, match.length - 1);\r\n var optVal = options[opt];\r\n if (!optVal) {\r\n if (opt == 'modelId') {\r\n optVal = this.getModel().getId();\r\n }\r\n else if (opt == 'queryId') {\r\n optVal = this.getQuery().getId();\r\n }\r\n else {\r\n throw \"Parameter [\" + opt + \"] is not defined\";\r\n }\r\n }\r\n result = result.replace(match, optVal);\r\n }\r\n }\r\n return result;\r\n };\r\n EqContext.prototype.setEndpoint = function (key, value) {\r\n this.endpoints.set(key, value);\r\n };\r\n EqContext.prototype.setEnpointIfNotExist = function (key, value) {\r\n if (!this.endpoints.has(key))\r\n this.endpoints.set(key, value);\r\n };\r\n EqContext.prototype.setDefaultEndpoints = function (endpointBase) {\r\n this.setEnpointIfNotExist('GetModel', equtils.combinePath(endpointBase, 'models/{modelId}'));\r\n this.setEnpointIfNotExist('GetQuery', equtils.combinePath(endpointBase, 'models/{modelId}/queries/{queryId}'));\r\n this.setEnpointIfNotExist('SaveQuery', equtils.combinePath(endpointBase, 'models/{modelId}/queries/{queryId}'));\r\n this.setEnpointIfNotExist('SyncQuery', equtils.combinePath(endpointBase, 'models/{modelId}/queries/{queryId}/sync'));\r\n this.setEnpointIfNotExist('NewQuery', equtils.combinePath(endpointBase, 'models/{modelId}/queries'));\r\n this.setEnpointIfNotExist('RemoveQuery', equtils.combinePath(endpointBase, 'models/{modelId}/queries/{queryId}'));\r\n this.setEnpointIfNotExist('GetQueryList', equtils.combinePath(endpointBase, 'models/{modelId}/queries'));\r\n this.setEnpointIfNotExist('FetchData', equtils.combinePath(endpointBase, 'models/{modelId}/fetch'));\r\n this.setEnpointIfNotExist('GetValueList', equtils.combinePath(endpointBase, 'models/{modelId}/valuelists/{listId}'));\r\n this.setEnpointIfNotExist('ExportResult', equtils.combinePath(endpointBase, 'models/{modelId}/export/{format}'));\r\n this.setEnpointIfNotExist('GetQueryFile', equtils.combinePath(endpointBase, 'models/{modelId}/getqueryfile/{format}'));\r\n this.setEnpointIfNotExist('UploadQueryFile', equtils.combinePath(endpointBase, 'models/{modelId}/uploadqueryfile'));\r\n };\r\n EqContext.prototype.initStart = function () {\r\n this.servicesInitialized = true;\r\n };\r\n /**\r\n * Initializes the context\r\n * @param options\r\n */\r\n EqContext.prototype.init = function (options) {\r\n var _this = this;\r\n if (!this.servicesInitialized)\r\n this.initStart();\r\n options = options || {};\r\n if (typeof (options.debugMode) !== 'undefined') {\r\n this.debugMode = options.debugMode;\r\n }\r\n if (typeof (options.chunkSize) !== 'undefined') {\r\n this.resultTable.chunkSize = options.chunkSize;\r\n }\r\n if (typeof (options.elasticPaging) !== 'undefined') {\r\n this.elasticPaging = options.elasticPaging;\r\n }\r\n if (options.listCache) {\r\n this.setExternalListCache(options.listCache);\r\n }\r\n if (options.locale) {\r\n i18n.setCurrentLocale(options.locale);\r\n }\r\n if (options.localeSettings) {\r\n i18n.updateLocaleSettings(options.localeSettings);\r\n }\r\n if (options.endpoint) {\r\n this.baseEndpoint = options.endpoint;\r\n console.warn('The `endpoint` option is deprecated.\\n'\r\n + 'Please use `context.useEndpoint(endpointURL)` function instead.');\r\n }\r\n this.setDefaultEndpoints(this.baseEndpoint);\r\n if (options.modelStorageResolver) {\r\n var eqServices = this.getServices();\r\n eqServices.registerModelStorageResolver(options.modelStorageResolver);\r\n }\r\n this.loadQueryOnStart = false;\r\n if (options.loadQueryOnStart) {\r\n this.loadQueryOnStart = options.loadQueryOnStart;\r\n }\r\n this.loadModelOnStart = true;\r\n if (typeof options.loadModelOnStart !== 'undefined') {\r\n this.loadModelOnStart = options.loadModelOnStart;\r\n }\r\n if (options.handlers) {\r\n if (options.handlers.onInit) {\r\n this.addEventListener('ready', options.handlers.onInit);\r\n }\r\n if (options.handlers.afterLoadModel) {\r\n this.addEventListener('loadModel', options.handlers.afterLoadModel);\r\n }\r\n if (options.handlers.afterLoadQuery) {\r\n this.addEventListener('loadQuery', options.handlers.afterLoadQuery);\r\n }\r\n if (options.handlers.afterSyncQuery) {\r\n this.addEventListener('syncQuery', options.handlers.afterSyncQuery);\r\n }\r\n if (options.handlers.afterFetchData) {\r\n this.addEventListener('fetchData', options.handlers.afterFetchData);\r\n }\r\n if (options.handlers.afterExportResult) {\r\n this.addEventListener('exportResult', options.handlers.afterExportResult);\r\n }\r\n if (options.handlers.onProcessStart) {\r\n this.addEventListener('processStart', options.handlers.onProcessStart);\r\n }\r\n if (options.handlers.onProcessEnd) {\r\n this.addEventListener('processEnd', options.handlers.onProcessEnd);\r\n }\r\n if (options.handlers.onError) {\r\n this.removeEventListener('error', this.errorHandlerId);\r\n this.addEventListener('error', options.handlers.onError);\r\n }\r\n if (options.handlers.onListRequest) {\r\n this.clientListRequestHandler = options.handlers.onListRequest;\r\n }\r\n if (options.handlers.beforeLoadModel) {\r\n this.beforeLoadModel = options.handlers.beforeLoadModel;\r\n }\r\n if (options.handlers.beforeLoadQuery) {\r\n this.beforeLoadQuery = options.handlers.beforeLoadQuery;\r\n }\r\n if (options.handlers.beforeSyncQuery) {\r\n this.beforeSyncQuery = options.handlers.beforeSyncQuery;\r\n }\r\n if (options.handlers.beforeFetchData) {\r\n this.beforeFetchData = options.handlers.beforeFetchData;\r\n }\r\n if (options.handlers.beforeExportResult) {\r\n this.beforeExportResult = options.handlers.beforeExportResult;\r\n }\r\n }\r\n this.initialQuery = options.initialQuery;\r\n this.defaultQueryId = options.defaultQueryId || '';\r\n this.defaultModelId = options.defaultModelId || '__default';\r\n var modelLoader = this.eqServices.getModelLoader();\r\n modelLoader.init(options);\r\n var queryStorage = this.eqServices.getQueryStorage();\r\n queryStorage.init(options);\r\n if (options.useDefaultExporters !== false) {\r\n this.addDefaultExporters();\r\n }\r\n if (options.serverExporters) {\r\n this.exporters.clear();\r\n for (var _i = 0, _a = options.serverExporters; _i < _a.length; _i++) {\r\n var format = _a[_i];\r\n var responseType = format == 'csv' || format == 'excel-html' ? '' : 'arraybuffer';\r\n this.registerServerExporter(format, responseType);\r\n }\r\n }\r\n var query = this.getQuery();\r\n if (options.defaultQueryId) {\r\n query.setId(options.defaultQueryId);\r\n }\r\n //init widgets\r\n this.widgets.forEach(function (widget) {\r\n var widgetOptions = {};\r\n if (options.widgets && options.widgets[widget.getWidgetType()]) {\r\n widgetOptions = options.widgets[widget.getWidgetType()];\r\n }\r\n widget.init(_this, widgetOptions);\r\n });\r\n if (this.loadModelOnStart) {\r\n this.loadDefaultModel();\r\n }\r\n else {\r\n this.fireEvent('ready');\r\n }\r\n };\r\n Object.defineProperty(EqContext.prototype, \"backendInfo\", {\r\n get: function () {\r\n return this._backendInfo;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets endpoint for all EasyQuery actions. Should be called before `init` and\r\n * `useEnterprise` methods\r\n * @param endpoint\r\n * @example\r\n * ```\r\n * view.getContext()\r\n * .useEndpoint('/api/easyquery')\r\n * .useEnterprise(function () {\r\n * view.init();\r\n * });\r\n * ```\r\n */\r\n EqContext.prototype.useEndpoint = function (endpoint) {\r\n this.baseEndpoint = endpoint;\r\n return this;\r\n };\r\n /**\r\n * Allows to specify the type of backend service.\r\n *\r\n * @param backendInfo - the structure that contains information about the app used on the backend\r\n * Possible values for `ptag` property: 'EQN-ANC' - ASP.NET Core or 'EQN-ASP' - for ASP.NET 4 backend\r\n */\r\n EqContext.prototype.useBackend = function (backendInfo) {\r\n if (backendInfo.type) {\r\n this._backendInfo.type = backendInfo.type;\r\n }\r\n if (backendInfo.subType) {\r\n this._backendInfo.subType = backendInfo.subType;\r\n }\r\n else {\r\n switch (this._backendInfo.type) {\r\n case 'EQN-ANC':\r\n this._backendInfo.subType = 'asp-net-core-razor';\r\n break;\r\n case 'EQN-ASP':\r\n this._backendInfo.subType = 'asp-net-4-mvc';\r\n break;\r\n default:\r\n this._backendInfo.subType = 'other';\r\n break;\r\n }\r\n }\r\n return this;\r\n };\r\n /**\r\n * Add a new widget to the context.\r\n * After that the widget will start to receive messages from other context components.\r\n * @param widget\r\n */\r\n EqContext.prototype.addWidget = function (widget) {\r\n this.widgets.push(widget);\r\n };\r\n /**\r\n * Returns all widgets with current type.\r\n * @param widgetType The widget type\r\n */\r\n EqContext.prototype.getAllWidgetsByType = function (widgetType) {\r\n return this.widgets\r\n .filter(function (widget) { return widget.getWidgetType() === widgetType; });\r\n };\r\n /**\r\n * Returns first registerd widget with current type\r\n * @param widgetType The widget type\r\n */\r\n EqContext.prototype.getWidgetByType = function (widgetType) {\r\n var widgets = this.getAllWidgetsByType(widgetType);\r\n return widgets.length > 0 ? widgets[0] : null;\r\n };\r\n /**\r\n * This method is called automatically when some change was made either in context's data model or query\r\n * @param groups\r\n */\r\n EqContext.prototype.refreshWidgets = function (groups) {\r\n if (groups === void 0) { groups = WidgetGroup.All; }\r\n this.widgets.forEach(function (widget) {\r\n if (widget.belongsToGroup(groups)) {\r\n widget.refresh();\r\n }\r\n });\r\n };\r\n /**\r\n * Register a new handler for 'query changed' event\r\n * @param callback\r\n */\r\n EqContext.prototype.addQueryChangedCallback = function (callback) {\r\n this.getQuery().addChangedCallback(callback);\r\n };\r\n /**\r\n * Removes the function from the list of registerd handlers for 'query changed' event\r\n * @param callback\r\n */\r\n EqContext.prototype.removeQueryChangedCallback = function (callback) {\r\n this.getQuery().removeChangedCallback(callback);\r\n };\r\n /**\r\n * Creates a new query object using the current instance of EqServices\r\n */\r\n EqContext.prototype.createQuery = function () {\r\n return this.eqServices.createQuery();\r\n };\r\n /**\r\n * Gets the current query\r\n */\r\n EqContext.prototype.getQuery = function () {\r\n if (!this.query) {\r\n if (!this.servicesInitialized) {\r\n throw new Error(\"Can't create query until the context is initialized\");\r\n }\r\n this.query = this.createQuery();\r\n }\r\n return this.query;\r\n };\r\n /**\r\n * Gets the current data model\r\n */\r\n EqContext.prototype.getModel = function () {\r\n if (!this.dataModel) {\r\n this.dataModel = this.eqServices.createDataModel();\r\n }\r\n return this.dataModel;\r\n };\r\n /**\r\n * Sets the content of the current data model\r\n */\r\n EqContext.prototype.loadModelFromData = function (modelPlainData) {\r\n this.getQuery().loadModelData(modelPlainData);\r\n this.dataModel = this.getQuery().getModel();\r\n };\r\n /**\r\n * Sets the ID of the default model\r\n * @param modelId\r\n */\r\n EqContext.prototype.setDefaultModelId = function (modelId) {\r\n this.defaultModelId = modelId;\r\n };\r\n /**\r\n * Notifies context components about starting of some long process (e.g. model loading)\r\n * This method raises onProcessStart event in the context and all its widgets\r\n * @param message\r\n * @param groups\r\n */\r\n EqContext.prototype.startProcess = function (message, groups) {\r\n this.eventEmitter.fire('processStart', message);\r\n this.widgets.forEach(function (widget) {\r\n if (widget.belongsToGroup(groups)) {\r\n widget.onProcessStart();\r\n }\r\n });\r\n };\r\n /**\r\n * Notifies all context components about the finishing of some long process\r\n * @param status\r\n * @param groups\r\n */\r\n EqContext.prototype.endProcess = function (status, groups) {\r\n this.eventEmitter.fire('processEnd', status);\r\n if (status.result === EqActionResult.Error) {\r\n this.throwError(status);\r\n }\r\n this.widgets.forEach(function (widget) {\r\n if (widget.belongsToGroup(groups)) {\r\n widget.onProcessEnd();\r\n }\r\n });\r\n };\r\n /**\r\n * Throws the error passed in the function parameter.\r\n * If onError event handler is defined - we call that method.\r\n * Otherwise - just place the error message to the browser console.\r\n * @param error\r\n */\r\n EqContext.prototype.throwError = function (status) {\r\n status.result = EqActionResult.Error;\r\n this.eventEmitter.fire('error', status);\r\n };\r\n /**\r\n * If `defaultModelId` property is define - this method calls `loadModel` function in the broker\r\n * to load the model with such ID.\r\n */\r\n EqContext.prototype.loadDefaultModel = function () {\r\n var _this = this;\r\n this.loadModel({\r\n modelId: this.defaultModelId,\r\n silent: true,\r\n success: function () {\r\n _this.refreshWidgets(WidgetGroup.Model);\r\n var query = _this.getQuery();\r\n _this.fireEvent('initialModelLoad');\r\n if (_this.initialQuery) {\r\n query.loadFromData(_this.initialQuery, {\r\n changeStatus: false\r\n });\r\n }\r\n if (_this.loadQueryOnStart) {\r\n _this.loadQuery({\r\n queryId: _this.defaultQueryId,\r\n modelId: _this.defaultModelId,\r\n success: function () {\r\n _this.refreshWidgets(WidgetGroup.Query);\r\n //if we load query on start - then we should call 'ready' event only after its successful loading\r\n _this.fireEvent('ready');\r\n }\r\n });\r\n }\r\n else {\r\n _this.refreshWidgets(WidgetGroup.Query);\r\n _this.fireEvent('ready');\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Clears the content of the current query\r\n */\r\n EqContext.prototype.clearQuery = function () {\r\n var query = this.getQuery();\r\n query.clear();\r\n query.fireChangedEvent({\r\n part: QueryChangePart.All\r\n });\r\n };\r\n /**\r\n * Clears all query results (the data set and the statement, if any)\r\n */\r\n EqContext.prototype.clearResult = function () {\r\n this.resultTable.clear(); // do not set resultTable to null. Just clear\r\n this.resultStatement = null;\r\n this.resultContent = null;\r\n };\r\n /**\r\n * Sets the external 'list cache' provider - an object which implements `ExternalListCache` inteface\r\n * @param cache\r\n */\r\n EqContext.prototype.setExternalListCache = function (cache) {\r\n this.externalListCache = cache;\r\n };\r\n EqContext.prototype.getListFromCache = function (params) {\r\n var key = this.getListCacheKey(params);\r\n if (this.externalListCache) {\r\n return this.externalListCache.get(key);\r\n }\r\n else {\r\n return this.internalListCache[key];\r\n }\r\n };\r\n EqContext.prototype.getListCacheKey = function (params) {\r\n var key = params.listName == 'SQL' ? 'SQL_' + params.editorId : params.listName;\r\n if (params.queryParams) {\r\n key += '_' + Object.keys(params.queryParams).filter(function (k) { return k != 'listName'; })\r\n .map(function (k) { return params.queryParams[k]; })\r\n .join('_');\r\n }\r\n return key;\r\n };\r\n EqContext.prototype.addListToCache = function (params, list) {\r\n var key = this.getListCacheKey(params);\r\n if (this.externalListCache) {\r\n this.externalListCache.set(key, list);\r\n }\r\n else {\r\n this.internalListCache[key] = list;\r\n }\r\n };\r\n /**\r\n * Clears the current list cache.\r\n */\r\n EqContext.prototype.resetListCache = function () {\r\n if (this.externalListCache) {\r\n this.externalListCache.clear();\r\n }\r\n else {\r\n this.internalListCache = {};\r\n }\r\n };\r\n /**\r\n * Gets the handler for 'GetList' requests\r\n */\r\n EqContext.prototype.getListRequestHandler = function () {\r\n return this._listRequestHandler;\r\n };\r\n /**\r\n * Adds the translations of the EasyQuery messages for some locale\r\n * @param locale - the ISO code of the locale (like `en` or `uk`)\r\n * @param localeInfo - Locale settings and translations of EasyQuery texts and messages.\r\n * We expected an object with the struture of LocaleInfo interface here.\r\n */\r\n EqContext.prototype.addLocale = function (locale, localeInfo) {\r\n i18n.addLocale(locale, localeInfo);\r\n };\r\n EqContext.prototype.addEventListener = function (eventType, handler) {\r\n var _this = this;\r\n return this.eventEmitter.subscribe(eventType, function (event) { return handler(_this, event.data); });\r\n };\r\n /**\r\n * Remove event handler for event type .\r\n * @param eventType The event type.\r\n * @param handlerId The handler id.\r\n */\r\n EqContext.prototype.removeEventListener = function (eventType, handlerId) {\r\n this.eventEmitter.unsubscribe(eventType, handlerId);\r\n };\r\n EqContext.prototype.fireEvent = function (eventType, data) {\r\n this.eventEmitter.fire(eventType, data);\r\n };\r\n EqContext.prototype.getBaseEndpoint = function () {\r\n return this.baseEndpoint;\r\n };\r\n /**\r\n * Sends a `loadValueList` requesthe server and processes the response.\r\n * @param options A map of options to pass to `loadValueList` function.\r\n */\r\n EqContext.prototype.loadValueList = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n this.startProcess({\r\n action: EqAction.GetValueList,\r\n text: 'Loading values'\r\n }, WidgetGroup.Result);\r\n var valueListResolver = this.eqServices.getValueListResolver();\r\n valueListResolver.loadValueList(options)\r\n .then(function (values) {\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.GetValueList,\r\n text: 'Values loaded'\r\n }, WidgetGroup.Result);\r\n if (options.success) {\r\n options.success(values);\r\n }\r\n })\r\n .catch(function (error) {\r\n var editorId = options && options.params ? options.params.editorId : 'undefined';\r\n var errorMessage = \"Can't load the value list for editor \" + editorId + \".\\n \" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.GetValueList,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Result);\r\n if (options.error) {\r\n options.error(errorMessage, 'GetValueList');\r\n }\r\n });\r\n };\r\n /**\r\n * Starts the process of the model loading.\r\n * This method can initiate a request to EasyQueryServer backend or get the model from OData or GraphQL endpoint\r\n * The content of the `options` parameter depends on concrete loader implementation.\r\n * @param options A map of options to pass to `loadModel` function (can be ommited)\r\n * @example\r\n * context.loadModel()\r\n * .then(model => {\r\n * alert(\"Model loaded!\");\r\n * });\r\n */\r\n EqContext.prototype.loadModel = function (options) {\r\n var _this = this;\r\n if (this.beforeLoadModel) {\r\n this.beforeLoadModel(this, options);\r\n }\r\n var modelId = options.modelId || '__default';\r\n var silent = options.silent || false;\r\n this.startProcess({\r\n action: EqAction.LoadModel,\r\n text: 'Loading model: ' + modelId\r\n }, WidgetGroup.Model);\r\n var modelLoader = this.eqServices.getModelLoader();\r\n return modelLoader.startModelLoading(options)\r\n .then(function (value) {\r\n if (value) {\r\n _this.loadModelFromData(value);\r\n if (_this.dataModel.isEmpty()) {\r\n console.warn(\"Empty model has been loaded. Model ID: \" + _this.dataModel.getId());\r\n }\r\n }\r\n else {\r\n console.warn('Model has not been changed.');\r\n }\r\n _this.fireEvent('loadModel');\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.LoadModel,\r\n text: 'Model loaded: ' + modelId\r\n }, WidgetGroup.Model);\r\n if (!silent) {\r\n _this.clearQuery();\r\n _this.clearResult();\r\n _this.refreshWidgets();\r\n }\r\n if (options.success) {\r\n options.success(_this.getModel());\r\n }\r\n return _this.getModel();\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't load model \" + modelId + \".\\n \" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.LoadModel,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Model);\r\n if (options.error) {\r\n options.error(errorMessage, \"LoadModel\");\r\n }\r\n return _this.getModel();\r\n });\r\n };\r\n EqContext.prototype.callWhenModelLoaded = function (callFunc) {\r\n var modelLoader = this.eqServices.getModelLoader();\r\n modelLoader.getModelPromise().then(function () {\r\n callFunc();\r\n });\r\n };\r\n /**\r\n * Loads the query\r\n * @param options\r\n * The content of the `options` parameter depends on `QueryStorage` implementation.\r\n * Usually it contains `success`, `error` callbacks and `queryId` property of the query to load.\r\n * @example\r\n * context.loadQuery({\r\n * queryId: \"query-id\"\r\n * });\r\n */\r\n EqContext.prototype.loadQuery = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var modelLoader = this.eqServices.getModelLoader();\r\n this.clearResult();\r\n modelLoader.getModelPromise()\r\n .then(function () {\r\n options = options || {};\r\n var queryId = options.queryId;\r\n var silent = options.silent || false;\r\n if (_this.beforeLoadQuery) {\r\n _this.beforeLoadQuery(_this, options);\r\n }\r\n _this.startProcess({\r\n action: EqAction.LoadQuery,\r\n text: \"Query loading: \" + queryId\r\n }, WidgetGroup.Query);\r\n var queryStorage = _this.eqServices.getQueryStorage();\r\n queryStorage.loadQuery(options)\r\n .then(function (data) {\r\n if (data) {\r\n _this.query.loadFromData(data, {\r\n validate: false\r\n });\r\n }\r\n _this.fireEvent('loadQuery');\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.LoadQuery,\r\n text: 'Query loaded: ' + queryId\r\n }, WidgetGroup.Query);\r\n _this.query.resetModified();\r\n if (!silent) {\r\n _this.query.fireChangedEvent({\r\n part: QueryChangePart.Properties,\r\n wasModified: _this.query.isModified()\r\n });\r\n _this.refreshWidgets();\r\n }\r\n if (options.success) {\r\n options.success(_this.query);\r\n }\r\n })\r\n .catch(function (error) {\r\n var query = _this.getQuery();\r\n error.message = \"Can't load query [\" + query.getId() + \"]\\n\" + (error.message || \"\");\r\n if (options.error) {\r\n options.error(error.message, EqAction.LoadQuery);\r\n }\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.LoadQuery,\r\n text: error.message,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n /**\r\n * Loads the list of queries available for the current user.\r\n * @param options\r\n * The content of the `options` parameter depends on `QueryStorage` implementation.\r\n * Usually it contains `success`, `error` callbacks\r\n */\r\n EqContext.prototype.loadQueryList = function (options) {\r\n var _this = this;\r\n var modelLoader = this.eqServices.getModelLoader();\r\n modelLoader.getModelPromise()\r\n .then(function () {\r\n _this.startQueryListLoading(options);\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't load the list of available queries.\\n \" + error.message;\r\n _this.throwError({\r\n action: EqAction.LoadQueryList,\r\n text: errorMessage,\r\n sourceError: error\r\n });\r\n });\r\n };\r\n EqContext.prototype.startQueryListLoading = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var queryStorage = this.eqServices.getQueryStorage();\r\n var queryListLoadingPromise = queryStorage.getQueryList(options);\r\n queryListLoadingPromise\r\n .then(function (queries) {\r\n if (options.success) {\r\n options.success(queries);\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't load the list of available queries.\\n \" + error.message;\r\n if (options.error) {\r\n options.error(errorMessage, 'LoadQueryList');\r\n }\r\n else {\r\n _this.throwError({\r\n action: EqAction.LoadQueryList,\r\n text: errorMessage,\r\n sourceError: error\r\n });\r\n }\r\n });\r\n };\r\n /**\r\n * Creates a new query and returns its content back to the client-side.\r\n * @param options\r\n * The content of the `options` parameter depends on `QueryStorage` implementation.\r\n * Usually it contains `success`, `error` callbacks and `silent` option\r\n * @example\r\n * context.newQuery({\r\n * silent: true\r\n * });\r\n */\r\n EqContext.prototype.newQuery = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var clearQuery = typeof options.clearQuery !== 'undefined' ? options.clearQuery : true;\r\n this.query.reset(clearQuery);\r\n if (options.queryId) {\r\n this.query.setId(options.queryId);\r\n }\r\n if (options.name) {\r\n this.query.setName(options.name);\r\n }\r\n if (options.description) {\r\n this.query.setDescription(options.description);\r\n }\r\n var silent = options.silent || false;\r\n var useStorage = true;\r\n if (typeof options.useStorage !== 'undefined') {\r\n useStorage = options.useStorage;\r\n }\r\n var onNewQuery = function () {\r\n var query = _this.getQuery();\r\n query.isNewbie = true;\r\n if (!silent) {\r\n query.fireChangedEvent({\r\n part: QueryChangePart.All,\r\n wasModified: query.isModified()\r\n });\r\n }\r\n };\r\n if (useStorage) {\r\n this.startProcess({\r\n action: EqAction.NewQuery,\r\n text: 'New query creation...'\r\n }, WidgetGroup.Query);\r\n var queryStorage = this.eqServices.getQueryStorage();\r\n queryStorage.newQuery(options)\r\n .then(function (queryData) {\r\n if (queryData) {\r\n _this.query.loadFromData(queryData);\r\n }\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.NewQuery,\r\n text: 'A new query has been created'\r\n }, WidgetGroup.Query);\r\n onNewQuery();\r\n if (options.success) {\r\n options.success();\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't create a new query.\\n\" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.NewQuery,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n if (options.error) {\r\n options.error(errorMessage, \"NewQuery\");\r\n }\r\n });\r\n }\r\n else {\r\n onNewQuery();\r\n }\r\n return this.query;\r\n };\r\n /**\r\n * Saves the current query to some storage on the server-side.\r\n * @param options\r\n * The content of the `options` parameter depends on `QueryStorage` implementation.\r\n * Usually it contains `success` and `error` callbacks\r\n */\r\n EqContext.prototype.saveQuery = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var query = this.getQuery();\r\n this.startProcess({\r\n action: EqAction.SaveQuery,\r\n text: 'Query saving: ' + query.getId()\r\n }, WidgetGroup.Query);\r\n var queryStorage = this.eqServices.getQueryStorage();\r\n queryStorage.saveQuery(options)\r\n .then(function (data) {\r\n _this.endProcess({\r\n action: EqAction.SaveQuery,\r\n result: EqActionResult.Success,\r\n text: \"Query saved: \" + query.getId()\r\n }, WidgetGroup.Query);\r\n if (data) {\r\n query.loadFromData(data);\r\n }\r\n query.resetModified();\r\n query.isNewbie = false;\r\n if (options.success) {\r\n options.success();\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't save query \" + query.getId() + \".\\n \" + error.message;\r\n _this.endProcess({\r\n action: EqAction.SaveQuery,\r\n result: EqActionResult.Error,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n if (options.error) {\r\n options.error(errorMessage, EqAction.SaveQuery);\r\n }\r\n });\r\n };\r\n /**\r\n * Removes the current query from some storage on the server-side.\r\n * @param options\r\n * The content of the `options` parameter depends on `QueryStorage` implementation.\r\n * Usually it contains `success` and `error` callbacks\r\n */\r\n EqContext.prototype.removeQuery = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var query = this.getQuery();\r\n this.startProcess({\r\n action: EqAction.RemoveQuery,\r\n text: 'Query deleting: ' + query.getId()\r\n }, WidgetGroup.Query);\r\n var queryStorage = this.eqServices.getQueryStorage();\r\n queryStorage.removeQuery(options)\r\n .then(function () {\r\n query.reset();\r\n _this.endProcess({\r\n action: EqAction.RemoveQuery,\r\n result: EqActionResult.Success,\r\n text: \"Query deleted: \" + query.getId()\r\n }, WidgetGroup.Query);\r\n if (options.success) {\r\n options.success();\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't remove query \" + query.getId() + \".\\n \" + error.message;\r\n _this.endProcess({\r\n action: EqAction.RemoveQuery,\r\n result: EqActionResult.Error,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n if (options.error) {\r\n options.error(errorMessage, 'RemoveQuery');\r\n }\r\n });\r\n };\r\n /**\r\n * Syncronizes the current query.\r\n * @param options\r\n * The content of the `options` parameter depends on `QuerySyncronizer` implementation.\r\n * Usually it contains `success` and `error` callbacks\r\n */\r\n EqContext.prototype.syncQuery = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var query = this.getQuery();\r\n if (this.beforeSyncQuery) {\r\n this.beforeSyncQuery(this, options);\r\n }\r\n this.startProcess({\r\n action: EqAction.SyncQuery,\r\n text: 'Query syncing: ' + query.getId()\r\n }, WidgetGroup.Query);\r\n var querySyncrhonizer = this.eqServices.getQuerySynchronizer();\r\n querySyncrhonizer.syncQuery(options)\r\n .then(function (result) {\r\n _this.resultStatement = result && result.statement\r\n ? result.statement\r\n : '';\r\n _this.fireEvent('syncQuery');\r\n _this.refreshWidgets(WidgetGroup.Statement);\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.SyncQuery,\r\n text: 'Query synced: ' + query.getId()\r\n }, WidgetGroup.Query);\r\n if (result) {\r\n if (result.querySaved) {\r\n var q = result.query;\r\n if (q) {\r\n query.setId(q.id);\r\n query.setName(q.name);\r\n query.setDescription(q.desc);\r\n query.extraData = q.extraData;\r\n }\r\n query.resetModified();\r\n _this.refreshWidgets(WidgetGroup.QueryStatus);\r\n }\r\n if (options.success) {\r\n options.success(result);\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't synchronize query \" + query.getId() + \".\\n \" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.SyncQuery,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n if (options.error) {\r\n options.error(errorMessage, 'SyncQuery');\r\n }\r\n });\r\n };\r\n /**\r\n * Fetches the data (usuall by executing current query) and processes the result.\r\n * @param options\r\n * The `options` parameter in addition to the options defined in FetchDataOptions structure may also contain `success` and `error` callbacks.\r\n * @example\r\n * context.fetchData({ success: function(result) {\r\n * //do whatever you want with the result\r\n * }})\r\n *\r\n */\r\n EqContext.prototype.fetchData = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n var elasticPaging = typeof (options.elasticPaging) !== 'undefined'\r\n ? options.elasticPaging\r\n : this.elasticPaging;\r\n this.resultTable.elasticChunks = elasticPaging;\r\n options.chunk = options.chunk ||\r\n {\r\n offset: 0,\r\n limit: this.resultTable.chunkSize,\r\n needTotal: !elasticPaging\r\n };\r\n if (this.debugMode) {\r\n options.debug = 'Fetching the result set. Initial chunk';\r\n }\r\n if (!this.query.tryValidate({\r\n checkExpressions: true\r\n })) {\r\n return;\r\n }\r\n //just to support the old way of catching \"group fetch\" operation finish\r\n if (options.groupFetchSuccess) {\r\n this.afterGroupFetch = options.groupFetchSuccess;\r\n }\r\n if (this.resultTable.elasticChunks) {\r\n options.chunk.limit++;\r\n }\r\n this.fetchDataChunk(__assign(__assign({}, options), { success: function (result) {\r\n if (result.statement) {\r\n _this.resultStatement = result.statement;\r\n _this.refreshWidgets(WidgetGroup.Statement);\r\n }\r\n var aggrCalculator = _this.getServices().getAggregatesCalculator();\r\n aggrCalculator.reset();\r\n _this.resultContent = result;\r\n if (result.resultSet) {\r\n _this.resultTable.clear();\r\n _this.resultTable.id = _this.query.getId();\r\n var resultSet = result.resultSet;\r\n for (var _i = 0, _a = resultSet.cols; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n _this.resultTable.columns.add(col);\r\n }\r\n if (result.meta && typeof (result.meta.totalRecords) !== 'undefined') {\r\n _this.resultTable.setTotal(result.meta.totalRecords);\r\n }\r\n var count = resultSet.rows.length;\r\n if (_this.resultTable.elasticChunks && count === options.chunk.limit) {\r\n resultSet.rows.splice(resultSet.rows.length - 1, 1);\r\n }\r\n for (var _b = 0, _c = resultSet.rows; _b < _c.length; _b++) {\r\n var row = _c[_b];\r\n _this.resultTable.addRow(row);\r\n }\r\n if (_this.resultTable.elasticChunks) {\r\n _this.resultTable['total'] = (count < options.chunk.limit)\r\n ? resultSet.rows.length\r\n : 0;\r\n }\r\n _this.resultTable.fireUpdated();\r\n }\r\n if (options.success) {\r\n options.success(result);\r\n }\r\n } }));\r\n };\r\n EqContext.prototype.getQueryFile = function (options) {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.startProcess({\r\n action: EqAction.GetQueryFile,\r\n text: 'Getting query file: ' + query.getId()\r\n }, WidgetGroup.Query);\r\n var queryFileLoader = this.getServices().getQueryFileLoader();\r\n queryFileLoader.getQueryFile(options)\r\n .then(function () {\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.GetQueryFile,\r\n text: 'Getting query file: ' + query.getId()\r\n }, WidgetGroup.Result);\r\n if (options.success) {\r\n options.success();\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't get file for query \" + query.getId() + \".\\n \" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.GetQueryFile,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n if (options.error) {\r\n options.error(errorMessage, 'GetQueryFile');\r\n }\r\n });\r\n };\r\n EqContext.prototype.uploadQueryFile = function (options) {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.startProcess({\r\n action: EqAction.UploadQueryFile,\r\n text: 'Uploading query file: ' + query.getId()\r\n }, WidgetGroup.Query);\r\n var queryFileLoader = this.getServices().getQueryFileLoader();\r\n queryFileLoader.uploadQueryFile(options)\r\n .then(function (data) {\r\n query.loadFromData(data);\r\n _this.fireEvent('loadQuery');\r\n _this.refreshWidgets();\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.UploadQueryFile,\r\n text: 'Uploading query file: ' + query.getId()\r\n }, WidgetGroup.Result);\r\n if (options.success) {\r\n options.success();\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Can't upload a file for query \" + query.getId() + \".\\n \" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.UploadQueryFile,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Query);\r\n if (options.error) {\r\n options.error(errorMessage, 'UploadQueryFile');\r\n }\r\n });\r\n };\r\n EqContext.prototype.fetchDataChunk = function (options) {\r\n var _this = this;\r\n var queryId = this.getQuery().getId();\r\n var fetchOptions = options || {};\r\n if (this.useStoredQueryOnFetch) {\r\n fetchOptions.queryId = this.query.getId();\r\n }\r\n if (this.beforeFetchData) {\r\n this.beforeFetchData(this, fetchOptions);\r\n }\r\n this.startProcess({\r\n action: EqAction.FetchData,\r\n text: 'Fetching data for the query: ' + queryId\r\n }, WidgetGroup.Result);\r\n var dataFetcher = this.eqServices.getDataFetcher();\r\n dataFetcher.fetchData(fetchOptions)\r\n .then(function (result) {\r\n if (result.statement) {\r\n _this.resultStatement = result.statement;\r\n }\r\n _this.resultContent = result;\r\n // we need to call success callback before firing fetchData,\r\n // because otherwise, it won't update the result table \r\n // in the context before afterFetchData callback is called.\r\n if (fetchOptions.success) {\r\n fetchOptions.success(result);\r\n }\r\n _this.fireEvent('fetchData');\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.FetchData,\r\n text: 'Data fetching is finished for the query: ' + queryId\r\n }, WidgetGroup.Result);\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Data fetching error for the query \" + queryId + \". \\n\" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.FetchData,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Result);\r\n if (fetchOptions.error) {\r\n fetchOptions.error(errorMessage, EqAction.FetchData);\r\n }\r\n });\r\n };\r\n EqContext.prototype.onResultTableUpdate = function () {\r\n var _this = this;\r\n var aggrSettings = this.query.getAggregationSettings();\r\n var calculator = this.getServices().getAggregatesCalculator();\r\n if (aggrSettings.needAggrCalculation() && calculator.needRecalculation()) {\r\n calculator.calculate({\r\n maxLevel: aggrSettings.getGroups().length + 1,\r\n resultObtained: function (result, level) {\r\n if (_this.afterGroupFetch) {\r\n _this.afterGroupFetch(result);\r\n }\r\n },\r\n errorOccurred: function (error) {\r\n var errorMessage = \"Data fetching error on group level \" + error.level + \" query. \\n\" + error.message;\r\n _this.throwError({\r\n action: EqAction.FetchData,\r\n text: errorMessage,\r\n sourceError: error\r\n });\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Fetches the data for a drill-down query (if defined) and processes the result.\r\n * @param options\r\n */\r\n EqContext.prototype.fetchDrillDownData = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n options.chunk = options.chunk ||\r\n {\r\n offset: 0,\r\n limit: this.resultTable.chunkSize,\r\n needTotal: true\r\n };\r\n var query = options.query;\r\n var queryId = query.getId();\r\n this.startProcess({\r\n action: EqAction.FetchData,\r\n text: 'DrillDown executing: ' + queryId\r\n }, WidgetGroup.Result);\r\n var queryExecutor = this.eqServices.getDataFetcher();\r\n queryExecutor.fetchData(options)\r\n .then(function (result) {\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.FetchData,\r\n text: 'DrillDown execution error: ' + queryId\r\n }, WidgetGroup.Result);\r\n if (options.success) {\r\n options.success(result);\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Drill-down data fetching error for query \" + queryId + \". \\n\" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.FetchData,\r\n text: errorMessage,\r\n }, WidgetGroup.Result);\r\n if (options.error) {\r\n options.error(errorMessage, 'DrillDown');\r\n }\r\n else {\r\n _this.throwError({\r\n action: EqAction.FetchData,\r\n text: errorMessage\r\n });\r\n }\r\n });\r\n };\r\n /**\r\n * Fetches the data for defined by this context and exports them to the specified format.\r\n * @param options\r\n * The content of the `options` parameter depends on `EqExporter` implementation.\r\n * Usually it contains `format` property which defines the format of the exported data (e.g. `csv`),\r\n * and `success` and `error` callbacks\r\n * @example\r\n * context.exportResult({\r\n * format: csv\r\n * });\r\n *\r\n */\r\n EqContext.prototype.exportResult = function (options) {\r\n var _this = this;\r\n options = options || {};\r\n if (this.beforeExportResult) {\r\n this.beforeExportResult(this, options);\r\n }\r\n var format = options.format;\r\n if (format) {\r\n var exporter = this.getExporter(format);\r\n if (exporter) {\r\n var queryId_1 = this.getQuery().getId();\r\n if (this.useStoredQueryOnFetch) {\r\n options.queryId = queryId_1;\r\n }\r\n this.startProcess({\r\n action: EqAction.ExportResult,\r\n text: 'Exporting result for query: ' + queryId_1\r\n }, WidgetGroup.Result);\r\n var localeSettings = i18n.getLocaleSettings();\r\n options.settings = localeSettings;\r\n var aggrSettings = this.query.getAggregationSettings();\r\n if (aggrSettings.hasAggregates()\r\n && (aggrSettings.hasGrandTotals() || aggrSettings.hasGroups())) {\r\n options.aggregates = aggrSettings.saveToData();\r\n }\r\n exporter.export(options)\r\n .then(function (result) {\r\n _this.fireEvent('exportResult');\r\n _this.endProcess({\r\n result: EqActionResult.Success,\r\n action: EqAction.ExportResult,\r\n text: \"The result set for query [\" + queryId_1 + \"] has been successfully exported\"\r\n }, WidgetGroup.Result);\r\n if (options.success) {\r\n options.success();\r\n }\r\n })\r\n .catch(function (error) {\r\n var errorMessage = \"Error on exporting data for query \" + queryId_1 + \". \\n\" + error.message;\r\n _this.endProcess({\r\n result: EqActionResult.Error,\r\n action: EqAction.ExportResult,\r\n text: errorMessage,\r\n sourceError: error\r\n }, WidgetGroup.Result);\r\n if (options.error) {\r\n options.error(errorMessage, 'ExportResult');\r\n }\r\n });\r\n }\r\n }\r\n };\r\n return EqContext;\r\n}());\r\nexport { EqContext };\r\n//# sourceMappingURL=context.js.map","import { utils } from '@easydata/core';\r\n/**\r\n * Represents a widget - a visual element with \"knows\" how to render itself.\r\n * Some widgets just display some information from the context (like the generated SQL or the result set).\r\n * Others - allow user to interact with them to define query conditions or columns.\r\n */\r\nvar Widget = /** @class */ (function () {\r\n /**\r\n Initializes a new instance of the `Widget` class\r\n * @param slot - an HTML element in which we should place our widget.\r\n */\r\n function Widget(slot) {\r\n this.slot = slot;\r\n this._id = utils.generateId(this.getWidgetType());\r\n }\r\n Object.defineProperty(Widget.prototype, \"id\", {\r\n get: function () {\r\n return this._id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initializes the widget and assign it to some context\r\n * @param context\r\n * @param options\r\n */\r\n Widget.prototype.init = function (context, options) {\r\n this.context = context;\r\n };\r\n /**\r\n * Returns current context (the one this widget belongs to)\r\n */\r\n Widget.prototype.getContext = function () {\r\n return this.context;\r\n };\r\n /**\r\n * Refreshes the widget's content\r\n */\r\n Widget.prototype.refresh = function () {\r\n this.refreshCore();\r\n };\r\n /**\r\n * This function is called from `refresh` function.\r\n * It does nothing in the base `Widget` class\r\n * but can be overridden in derived classes\r\n * to implement the functionality specific for a particular widget\r\n */\r\n Widget.prototype.refreshCore = function () {\r\n };\r\n /**\r\n * This function is called on the start of some process this widget participates in.\r\n * For example, some widgets can show a spinner or a progress bar\r\n * at the beginning of some long process (e.g. model loading).\r\n */\r\n Widget.prototype.onProcessStart = function () {\r\n this.onProcessStartCore();\r\n };\r\n /**\r\n * This function is called from `onProcessStart` function.\r\n * It does nothing in the base `Widget` class\r\n * but can be overridden in derived classes\r\n * to implement the functionality specific for a particular widget.\r\n */\r\n Widget.prototype.onProcessStartCore = function () {\r\n };\r\n /**\r\n * This function is called on the end of some process this widget participates in.\r\n * For example, some widgets should be updated on model loading\r\n * or after the execution of the current query\r\n */\r\n Widget.prototype.onProcessEnd = function () {\r\n this.onProcessEndCore();\r\n };\r\n /**\r\n * This function is called from `onProcessEnd` function.\r\n * It does nothing in the base `Widget` class\r\n * but can be overridden in derived classes\r\n * to implement the functionality specific for a particular widget.\r\n */\r\n Widget.prototype.onProcessEndCore = function () {\r\n };\r\n /**\r\n * Returns `true` if the widget belongs to one of the groups specified in the parameter\r\n * @param groups\r\n */\r\n Widget.prototype.belongsToGroup = function (groups) {\r\n if (typeof groups != 'undefined' && groups != null) {\r\n if ((groups & this.group) === 0)\r\n return false;\r\n }\r\n return true;\r\n };\r\n Widget.prototype.destroy = function () {\r\n this.destroyCore();\r\n };\r\n Widget.prototype.destroyCore = function () {\r\n };\r\n return Widget;\r\n}());\r\nexport { Widget };\r\n//# sourceMappingURL=widget.js.map","var EqVersionInfo = /** @class */ (function () {\r\n function EqVersionInfo(major, minor, update) {\r\n this.major = major;\r\n this.minor = minor;\r\n this.update = update;\r\n }\r\n EqVersionInfo.prototype.toString = function () {\r\n return this.major + \".\" + this.minor + \".\" + this.update;\r\n };\r\n return EqVersionInfo;\r\n}());\r\nexport var versionInfo = new EqVersionInfo(6, 2, 0);\r\n//# sourceMappingURL=version_info.js.map","import { i18n } from '@easydata/core';\r\nfunction addEasyQueryCoreTexts() {\r\n i18n.updateDefaultTexts({\r\n NewQueryName: '[New query]',\r\n //DateTime macroses\r\n Today: 'Today',\r\n Yesterday: 'Yesterday',\r\n Tomorrow: 'Tomorrow',\r\n FirstDayOfMonth: 'First day of the month',\r\n LastDayOfMonth: 'Last day of the month',\r\n FirstDayOfWeek: 'First day of the week',\r\n FirstDayOfYear: 'First day of the year',\r\n FirstDayOfNextWeek: 'First day of the next week',\r\n FirstDayOfNextMonth: 'First day of the next month',\r\n FirstDayOfNextYear: 'First day of the next year',\r\n Now: 'Now',\r\n HourStart: 'This hour start',\r\n Midnight: 'Midnight',\r\n Noon: 'Noon',\r\n Entities: {},\r\n Attributes: {},\r\n Operators: {},\r\n AggreateFunctions: {}\r\n });\r\n}\r\naddEasyQueryCoreTexts();\r\n//# sourceMappingURL=text_resources.js.map","export * from './utils/utils';\r\nexport * from './utils/constants';\r\nexport * from './common/eq_services';\r\nexport * from './common/tree';\r\nexport * from './data/eq_data_loader';\r\nexport * from './data/google_data_converter';\r\nexport * from './data/eq_aggr_container';\r\nexport * from './types/data_kind';\r\nexport * from './types/link_type';\r\nexport * from './types/cond_tag';\r\nexport * from './types/cond_part';\r\nexport * from './types/expr_tag';\r\nexport * from './types/eq_editor_tag';\r\nexport * from './types/widget_group';\r\nexport * from './dm/aggr_function';\r\nexport * from './dm/data_model';\r\nexport * from './dm/entity';\r\nexport * from './dm/operator';\r\nexport * from './dm/value_editor';\r\nexport * from './main/eq_actions';\r\nexport * from './main/model_loader';\r\nexport * from './main/model_storage';\r\nexport * from './main/query_storage';\r\nexport * from './main/context';\r\nexport * from './main/widget';\r\nexport * from './main/action';\r\nexport * from './query/query_column';\r\nexport * from './query/condition';\r\nexport * from './query/expression';\r\nexport * from './query/query';\r\nexport * from './query/query_events';\r\nexport * from './eqs/eqs_exporter';\r\nexport * from './eqs/eqs_model_loader';\r\nexport * from './eqs/eqs_data_fetcher';\r\nexport * from './eqs/eqs_query_synchronizer';\r\nexport * from './eqs/eqs_value_list_resolver';\r\nexport * from './eqs/eqs_query_file_loader';\r\nexport * from './utils/format_parser';\r\nexport * from './utils/version_info';\r\n//for backward compatibility\r\nexport { i18n } from '@easydata/core';\r\nimport './i18n/text_resources';\r\n//# sourceMappingURL=public_api.js.map","import { eqCssMobile } from './utils';\r\nexport var browserUtils;\r\n(function (browserUtils) {\r\n var _isFirefox = null;\r\n var _isIE = null;\r\n function isIE() {\r\n return eval('/*@cc_on!@*/false || !!document.documentMode');\r\n }\r\n browserUtils.isIE = isIE;\r\n function isFirefox() {\r\n if (_isFirefox === null) {\r\n var ua = navigator.userAgent;\r\n _isFirefox = ua.toLowerCase().indexOf('firefox') > -1;\r\n }\r\n return _isFirefox;\r\n }\r\n browserUtils.isFirefox = isFirefox;\r\n var _detectedIsMobileMode = false;\r\n var _isMobileMode = undefined;\r\n var detectIsMobileMode = function () {\r\n var oldValue = isMobileMode();\r\n _detectedIsMobileMode = window.matchMedia('only screen and (max-width: 840px)').matches\r\n || window.matchMedia('only screen and (max-height: 420px)').matches;\r\n var newValue = isMobileMode();\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n };\r\n detectIsMobileMode();\r\n window.addEventListener('resize', function () { return detectIsMobileMode(); });\r\n function isMobileMode() {\r\n if (_isMobileMode !== undefined) {\r\n return _isMobileMode;\r\n }\r\n else {\r\n return _detectedIsMobileMode;\r\n }\r\n }\r\n browserUtils.isMobileMode = isMobileMode;\r\n function setIsMobileMode(value) {\r\n var oldValue = isMobileMode();\r\n _isMobileMode = value;\r\n var newValue = isMobileMode();\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n }\r\n browserUtils.setIsMobileMode = setIsMobileMode;\r\n var mobileModeChangeHandler;\r\n function onMobileModeChanged(callback) {\r\n mobileModeChangeHandler = callback;\r\n }\r\n browserUtils.onMobileModeChanged = onMobileModeChanged;\r\n function getMobileCssClass() {\r\n return isMobileMode() ? eqCssMobile : null;\r\n }\r\n browserUtils.getMobileCssClass = getMobileCssClass;\r\n})(browserUtils || (browserUtils = {}));\r\n//# sourceMappingURL=browser_utils.js.map","import { domel } from '@easydata/ui';\r\nexport function getViewportSize() {\r\n var width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n var height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n}\r\nexport function findHighestZIndex(elem) {\r\n var highest = 0;\r\n while (elem !== null) {\r\n var zindex = document.defaultView.getComputedStyle(elem, null)\r\n .getPropertyValue(\"z-index\");\r\n if (zindex != 'auto') {\r\n var numZIndex = parseInt(zindex);\r\n if (numZIndex > highest) {\r\n highest = numZIndex;\r\n }\r\n }\r\n elem = elem.parentElement;\r\n }\r\n return highest;\r\n}\r\n// simetimes setting focus in the main thread doesn't work correctly (in Firefox). So we need to 'hack' it.\r\nexport function safeFocus(element) {\r\n setTimeout(function (_) {\r\n if (element) {\r\n element.focus();\r\n }\r\n }, 100);\r\n}\r\nexport var eqCssPrefix = 'eqjs';\r\nexport var eqCssMobile = 'eqjs-mobile';\r\nexport function makeElementMaximizable(element) {\r\n domel(element)\r\n .addClass(eqCssPrefix + \"-maximizable\")\r\n .addChild('div', function (b) {\r\n b.addClass(eqCssPrefix + \"-max-button\")\r\n .on('click', function (e) {\r\n e.preventDefault();\r\n domel(element)\r\n .toggleClass(eqCssPrefix + \"-maximized\");\r\n });\r\n });\r\n}\r\n//# sourceMappingURL=utils.js.map","/** Represents chart types. */\r\nexport var ChartType;\r\n(function (ChartType) {\r\n ChartType[ChartType[\"Column\"] = 3] = \"Column\";\r\n ChartType[ChartType[\"Histogram\"] = 4] = \"Histogram\";\r\n ChartType[ChartType[\"Bar\"] = 5] = \"Bar\";\r\n ChartType[ChartType[\"Combo\"] = 6] = \"Combo\";\r\n ChartType[ChartType[\"Area\"] = 7] = \"Area\";\r\n ChartType[ChartType[\"Line\"] = 9] = \"Line\";\r\n ChartType[ChartType[\"Pie\"] = 10] = \"Pie\";\r\n ChartType[ChartType[\"Polar\"] = 11] = \"Polar\";\r\n ChartType[ChartType[\"Doughnut\"] = 12] = \"Doughnut\";\r\n ChartType[ChartType[\"Radar\"] = 13] = \"Radar\";\r\n ChartType[ChartType[\"SteppedLine\"] = 14] = \"SteppedLine\";\r\n})(ChartType || (ChartType = {}));\r\n//# sourceMappingURL=chart_type.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { mask } from './mask';\r\nvar DomElementBuilder = /** @class */ (function () {\r\n function DomElementBuilder(tag, parent) {\r\n if (typeof tag === \"string\") {\r\n this.element = document.createElement(tag);\r\n }\r\n else {\r\n this.element = tag;\r\n }\r\n if (parent && this.element.parentElement !== parent) {\r\n parent.appendChild(this.element);\r\n }\r\n }\r\n DomElementBuilder.prototype.addChild = function (tag, childBuilder) {\r\n var builder = domel(tag, this.element);\r\n if (childBuilder) {\r\n childBuilder(builder);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.addChildElement = function (element) {\r\n if (element) {\r\n this.element.appendChild(element);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.attr = function (attrId, attrValue) {\r\n this.element.setAttribute(attrId, attrValue);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.id = function (value) {\r\n return this.attr(\"id\", value);\r\n };\r\n DomElementBuilder.prototype.focus = function () {\r\n this.element.focus();\r\n return this;\r\n };\r\n DomElementBuilder.prototype.title = function (value) {\r\n return this.attr('title', value);\r\n };\r\n DomElementBuilder.prototype.data = function (dataId, dataValue) {\r\n if (dataValue === void 0) { dataValue = null; }\r\n if (dataValue === null) {\r\n this.element.removeAttribute('data-' + dataId);\r\n return this;\r\n }\r\n else {\r\n return this.attr('data-' + dataId, dataValue);\r\n }\r\n };\r\n DomElementBuilder.prototype.show = function () {\r\n return this.removeStyle('display');\r\n };\r\n DomElementBuilder.prototype.hide = function (toHide) {\r\n if (toHide === void 0) { toHide = true; }\r\n return (toHide) ? this.setStyle('display', 'none') : this;\r\n };\r\n DomElementBuilder.prototype.visible = function (isVisible) {\r\n if (isVisible === void 0) { isVisible = true; }\r\n return isVisible ? this.setStyle('visibility', 'visible') : this.setStyle('visibility', 'hidden');\r\n };\r\n DomElementBuilder.prototype.isVisible = function () {\r\n return !!(this.element.offsetWidth || this.element.offsetHeight || this.element.getClientRects().length);\r\n };\r\n DomElementBuilder.prototype.addClass = function (className) {\r\n var classNames = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n classNames[_i - 1] = arguments[_i];\r\n }\r\n if (className) {\r\n var fullList = __spreadArrays(className.trim().split(\" \"), classNames);\r\n for (var i = 0; i < fullList.length; i++)\r\n this.element.classList.add(fullList[i]);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.removeClass = function (className) {\r\n var classNames = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n classNames[_i - 1] = arguments[_i];\r\n }\r\n if (className) {\r\n var fullList = __spreadArrays(className.trim().split(\" \"), classNames);\r\n for (var i = 0; i < fullList.length; i++)\r\n this.element.classList.remove(fullList[i]);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.toggleClass = function (className, force) {\r\n if (force === void 0) { force = undefined; }\r\n if (className) {\r\n this.element.classList.toggle(className, force);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.on = function (eventType, listener) {\r\n var eventTypes = eventType.split(' ');\r\n for (var i = 0; i < eventTypes.length; i++) {\r\n this.element.addEventListener(eventTypes[i], listener);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.off = function (eventType, listener) {\r\n var eventTypes = eventType.split(' ');\r\n for (var i = 0; i < eventTypes.length; i++) {\r\n this.element.removeEventListener(eventTypes[i], listener);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.setStyle = function (styleId, styleValue) {\r\n this.element.style.setProperty(styleId, styleValue);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.removeStyle = function (styleId) {\r\n this.element.style.removeProperty(styleId);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.text = function (text) {\r\n this.element.innerText = text;\r\n return this;\r\n };\r\n DomElementBuilder.prototype.html = function (html) {\r\n this.element.innerHTML = html;\r\n return this;\r\n };\r\n DomElementBuilder.prototype.clear = function () {\r\n var oldElem = this.element;\r\n this.element = document.createElement(this.element.tagName);\r\n oldElem.replaceWith(this.element);\r\n };\r\n DomElementBuilder.prototype.addText = function (text) {\r\n var textEl = document.createTextNode(text);\r\n this.element.appendChild(textEl);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.addHtml = function (html) {\r\n this.element.innerHTML += html;\r\n return this;\r\n };\r\n DomElementBuilder.prototype.toDOM = function () {\r\n return this.element;\r\n };\r\n DomElementBuilder.prototype.appendTo = function (parent) {\r\n if (parent) {\r\n parent.appendChild(this.element);\r\n }\r\n return this;\r\n };\r\n return DomElementBuilder;\r\n}());\r\nexport { DomElementBuilder };\r\nvar DomTextAreaElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomTextAreaElementBuilder, _super);\r\n function DomTextAreaElementBuilder(element, parent) {\r\n var _this = this;\r\n if (element) {\r\n _this = _super.call(this, element, parent) || this;\r\n }\r\n else {\r\n _this = _super.call(this, \"textarea\", parent) || this;\r\n }\r\n return _this;\r\n }\r\n DomTextAreaElementBuilder.prototype.name = function (value) {\r\n this.element.name = value;\r\n return this;\r\n };\r\n DomTextAreaElementBuilder.prototype.rows = function (rows) {\r\n this.element.rows = rows;\r\n return this;\r\n };\r\n DomTextAreaElementBuilder.prototype.cols = function (cols) {\r\n this.element.cols = cols;\r\n return this;\r\n };\r\n DomTextAreaElementBuilder.prototype.value = function (value) {\r\n this.element.value = value;\r\n return this;\r\n };\r\n return DomTextAreaElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomTextAreaElementBuilder };\r\nvar DomInputElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomInputElementBuilder, _super);\r\n function DomInputElementBuilder(element, parent) {\r\n var _this = this;\r\n if (element) {\r\n _this = _super.call(this, element, parent) || this;\r\n }\r\n else {\r\n _this = _super.call(this, \"input\", parent) || this;\r\n }\r\n return _this;\r\n }\r\n DomInputElementBuilder.prototype.name = function (value) {\r\n this.element.name = value;\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.type = function (value) {\r\n this.element.type = value;\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.size = function (value) {\r\n this.element.size = value;\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.value = function (value) {\r\n if (value instanceof Date) {\r\n this.element.valueAsDate = value;\r\n }\r\n else if (typeof value === \"number\") {\r\n this.element.valueAsNumber = value;\r\n }\r\n else {\r\n this.element.value = value;\r\n }\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.mask = function (maskPattern) {\r\n mask(this.element, maskPattern);\r\n return this;\r\n };\r\n return DomInputElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomInputElementBuilder };\r\nvar DomSelectElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomSelectElementBuilder, _super);\r\n function DomSelectElementBuilder(element, parent) {\r\n var _this = this;\r\n if (element) {\r\n _this = _super.call(this, element, parent) || this;\r\n }\r\n else {\r\n _this = _super.call(this, \"select\", parent) || this;\r\n }\r\n return _this;\r\n }\r\n DomSelectElementBuilder.prototype.addOption = function (value) {\r\n var option = document.createElement('option');\r\n if (typeof value === \"string\") {\r\n option.value = value;\r\n option.innerHTML = value;\r\n }\r\n else {\r\n option.value = value.value;\r\n option.innerHTML = value.title || value.value;\r\n option.selected = value.selected || false;\r\n }\r\n this.element.appendChild(option);\r\n return this;\r\n };\r\n DomSelectElementBuilder.prototype.value = function (value) {\r\n this.element.value = value;\r\n return this;\r\n };\r\n return DomSelectElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomSelectElementBuilder };\r\nexport function domel(tag, parent) {\r\n if (tag === \"div\" || tag instanceof HTMLDivElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n if (tag === \"span\" || tag instanceof HTMLSpanElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"a\" || tag instanceof HTMLAnchorElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"button\" || tag instanceof HTMLButtonElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"img\" || tag instanceof HTMLImageElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"input\" || tag instanceof HTMLInputElement) {\r\n return new DomInputElementBuilder(tag instanceof HTMLInputElement ? tag : null, parent);\r\n }\r\n else if (tag === \"textarea\" || tag instanceof HTMLTextAreaElement) {\r\n return new DomTextAreaElementBuilder(tag instanceof HTMLTextAreaElement ? tag : null, parent);\r\n }\r\n else if (tag === \"select\" || tag instanceof HTMLSelectElement) {\r\n return new DomSelectElementBuilder(tag instanceof HTMLSelectElement ? tag : null, parent);\r\n }\r\n return new DomElementBuilder(tag, parent);\r\n}\r\n//# sourceMappingURL=dom_elem_builder.js.map","/** Represents the common types of the data. */\r\nexport var DataType;\r\n(function (DataType) {\r\n /** Unknown type value*/\r\n DataType[DataType[\"Unknown\"] = 0] = \"Unknown\";\r\n /** String value*/\r\n DataType[DataType[\"String\"] = 1] = \"String\";\r\n /** 8-bit integer value */\r\n DataType[DataType[\"Byte\"] = 2] = \"Byte\";\r\n /** 16-bit integer value */\r\n DataType[DataType[\"Word\"] = 3] = \"Word\";\r\n /** 32-bit integer value */\r\n DataType[DataType[\"Int32\"] = 4] = \"Int32\";\r\n /** 64-bit integer value */\r\n DataType[DataType[\"Int64\"] = 5] = \"Int64\";\r\n /** Boolean value */\r\n DataType[DataType[\"Bool\"] = 6] = \"Bool\";\r\n /** Floating-point numeric value */\r\n DataType[DataType[\"Float\"] = 7] = \"Float\";\r\n /** Money value */\r\n DataType[DataType[\"Currency\"] = 8] = \"Currency\";\r\n /** Binary-coded decimal value */\r\n DataType[DataType[\"BCD\"] = 9] = \"BCD\";\r\n /** Date value */\r\n DataType[DataType[\"Date\"] = 10] = \"Date\";\r\n /** Time value */\r\n DataType[DataType[\"Time\"] = 11] = \"Time\";\r\n /** Date and time value */\r\n DataType[DataType[\"DateTime\"] = 12] = \"DateTime\";\r\n /** Autoincrement 32-bit integer value */\r\n DataType[DataType[\"Autoinc\"] = 13] = \"Autoinc\";\r\n /** MEMO value (text with unlimited length) */\r\n DataType[DataType[\"Memo\"] = 14] = \"Memo\";\r\n /** BLOB value (any data with unlimited length) */\r\n DataType[DataType[\"Blob\"] = 15] = \"Blob\";\r\n /** Fixed character value */\r\n DataType[DataType[\"FixedChar\"] = 16] = \"FixedChar\";\r\n /** The unique identifier */\r\n DataType[DataType[\"Guid\"] = 17] = \"Guid\";\r\n /*-------- Spatial data types ----------*/\r\n /** Any geometry data */\r\n DataType[DataType[\"Geometry\"] = 18] = \"Geometry\";\r\n /** Any data that represents some geography objects */\r\n DataType[DataType[\"Geography\"] = 19] = \"Geography\";\r\n})(DataType || (DataType = {}));\r\n//# sourceMappingURL=data_type.js.map","/** Contains several constant definitions for expressions tag */\r\nexport var ExprTag;\r\n(function (ExprTag) {\r\n /** Unknown expression */\r\n ExprTag[ExprTag[\"Unknown\"] = 0] = \"Unknown\";\r\n /** Constant expression */\r\n ExprTag[ExprTag[\"Constant\"] = 1] = \"Constant\";\r\n /** Entity attributre expression */\r\n ExprTag[ExprTag[\"EntityAttribute\"] = 2] = \"EntityAttribute\";\r\n /** Parent entity attribute expression */\r\n ExprTag[ExprTag[\"ParentEntityAttribute\"] = 3] = \"ParentEntityAttribute\";\r\n /** Agrregate function expression */\r\n ExprTag[ExprTag[\"AggregateFunction\"] = 4] = \"AggregateFunction\";\r\n /** Parent column expression */\r\n ExprTag[ExprTag[\"ParentColumn\"] = 5] = \"ParentColumn\";\r\n /** Query expression */\r\n ExprTag[ExprTag[\"Query\"] = 11] = \"Query\";\r\n /** Custom sql expression */\r\n ExprTag[ExprTag[\"CustomSql\"] = 21] = \"CustomSql\";\r\n})(ExprTag || (ExprTag = {}));\r\n//# sourceMappingURL=expr_tag.js.map","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { getElementAbsolutePos, getScrollPos, getWinSize, getViewportSize } from '@easydata/ui';\r\nimport { browserUtils } from './browser_utils';\r\nimport { findHighestZIndex } from './utils';\r\nvar MenuLevel = /** @class */ (function () {\r\n function MenuLevel(options) {\r\n this.isFilteringMode = false;\r\n this.showSelected = false;\r\n //menu, items, levelIndex\r\n this.parentMenu = options.menu || null;\r\n this.parentLevel = options.parent || null;\r\n this.parentElement = options.container || document.body;\r\n this.levelIndex = options.levelIndex || 0;\r\n this.levelDiv = null;\r\n this.domWriteItemsId = options.domWriteItemsId || false;\r\n this.menuId = options.menuId || '';\r\n this.itemRenderedCallback = options.itemRenderedCallback || null;\r\n //we need to define special \"apply\" item for this level\r\n this._applyItem = { id: null, text: null, itemDiv: null };\r\n this.items = options.items || [];\r\n this.activeItem = null;\r\n this.selectedItem = null;\r\n this.initialized = false;\r\n this.showSelected = options.showSelected;\r\n this.updated = 0;\r\n this.renderContent();\r\n }\r\n Object.defineProperty(MenuLevel.prototype, \"applyItem\", {\r\n get: function () {\r\n return this._applyItem;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(MenuLevel.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-menu';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n MenuLevel.prototype.getItems = function () {\r\n return this.items;\r\n };\r\n MenuLevel.prototype.setItems = function (items) {\r\n this.items = items;\r\n };\r\n MenuLevel.prototype.renderContent = function () {\r\n var _this = this;\r\n if (!this.items) {\r\n return;\r\n }\r\n var self = this;\r\n //define internal variables used in this function\r\n var itemBgColor = this.parentMenu.style.colors.bgON || \"white\";\r\n var itemFgColor = this.parentMenu.style.colors.fgON || \"black\";\r\n var itemOverBgColor = this.parentMenu.style.colors.bgOVER || \"LightSteelBlue\";\r\n var itemFontFamily = this.parentMenu.style.itemStyle.fontFamily || \"\";\r\n var itemFontSize = this.parentMenu.style.itemStyle.fontSize || \"14px\";\r\n var multiselect = this.parentMenu.options.multiselect;\r\n var isSubQuery = this.parentMenu.options.isSubQuery;\r\n //add base DIV element which is also used to show the shadow\r\n var baseDivBuilder = domel('div')\r\n .addClass(browserUtils.getMobileCssClass());\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n baseDivBuilder\r\n .setStyle('backgroundColor', itemBgColor)\r\n .setStyle('border', '1px solid')\r\n .setStyle('borderColor', itemBgColor)\r\n .setStyle('backgroundColor', this.parentMenu.style.colors.border)\r\n .setStyle('margin', '-2px 2px 2px -2px')\r\n .setStyle('width', 'auto')\r\n .setStyle('height', 'auto');\r\n }\r\n baseDivBuilder\r\n .setStyle('z-index', this.parentMenu.zIndex)\r\n .setStyle('position', 'absolute')\r\n .setStyle('display', 'none');\r\n var baseDiv = baseDivBuilder.toDOM();\r\n baseDiv['menuLevel'] = this;\r\n var applyItem = this._applyItem;\r\n //if multiselect option is on - then we should add special \"apply\" item\r\n if (multiselect && this.levelIndex === 0 && this.parentMenu.options.hideButtons !== true) {\r\n var applyDiv = document.createElement(\"div\");\r\n applyDiv.classList.add(this.cssPrefix + \"-applyDiv\");\r\n applyDiv['menuItem'] = applyItem;\r\n this.applyBtn = document.createElement('button');\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n applyDiv.style.borderBottom = '1px solid';\r\n applyDiv.style.padding = '5px';\r\n applyDiv.style.marginBottom = '5px';\r\n this.applyBtn.style.padding = '0 5px';\r\n this.applyBtn.style.cursor = \"pointer\";\r\n }\r\n var applyTextNode = document.createTextNode(this.parentMenu.options.buttons.submit);\r\n this.applyBtn.appendChild(applyTextNode);\r\n applyDiv.appendChild(this.applyBtn);\r\n //cancel btn\r\n var cancelBtn = document.createElement('button');\r\n cancelBtn.classList.add(this.cssPrefix + \"-cancel\");\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n cancelBtn.style.padding = '0 5px';\r\n cancelBtn.style.cursor = 'pointer';\r\n cancelBtn.style.marginLeft = '15px';\r\n }\r\n var cancelText = document.createTextNode(this.parentMenu.options.buttons.cancel);\r\n cancelBtn.appendChild(cancelText);\r\n applyDiv.appendChild(cancelBtn);\r\n baseDiv.appendChild(applyDiv);\r\n applyItem.itemDiv = applyDiv;\r\n this.applyBtn.addEventListener('click', function () {\r\n _this.submit(_this._applyItem);\r\n });\r\n cancelBtn.addEventListener('click', function () {\r\n _this.parentMenu.hideMenu();\r\n });\r\n }\r\n // if too many items - then we add a special \"search\" item\r\n // or there is an options to show always\r\n if (this.parentLevel == null\r\n && (this.parentMenu.options.searchBoxAlwaysShown || this.items.length >= this.parentMenu.options.showSearchBoxAfter)) {\r\n var searchDivBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-searchDiv\");\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n searchDivBuilder\r\n .setStyle('border-bottom', '1px solid #666')\r\n .setStyle('background-color', itemBgColor)\r\n .setStyle('border-color', this.parentMenu.style.colors.border);\r\n if (itemFontFamily != \"\") {\r\n searchDivBuilder.setStyle('font-family', itemFontFamily);\r\n }\r\n searchDivBuilder\r\n .setStyle('font-size', itemFontSize)\r\n .setStyle('color', itemFgColor)\r\n .setStyle('cursor', 'pointer')\r\n .setStyle('text-align', 'left')\r\n .setStyle('padding', '5px');\r\n }\r\n var searchEditBoxBuilder = domel('input')\r\n .id('searchBox')\r\n .name('searchBox')\r\n .type('text')\r\n .size(16)\r\n .addClass(this.cssPrefix + \"-searchBox\")\r\n .on('input', function (ev) {\r\n _this.deactivateItem(_this.activeItem);\r\n _this.renderItems(_this.searchBox.value);\r\n })\r\n .on('keydown', function (ev) {\r\n var keyCode = ev.keyCode;\r\n switch (keyCode) {\r\n case 13: //enter\r\n if (_this.activeItem) {\r\n _this.activeItem.itemDiv.click();\r\n }\r\n break;\r\n case 38: // up\r\n _this.moveActiveItemUp();\r\n break;\r\n case 40: // down\r\n _this.moveActiveItemDown();\r\n break;\r\n case 39: // right\r\n if (!_this.searchBox.value) {\r\n _this.openSubLevel(_this.activeItem);\r\n }\r\n break;\r\n }\r\n });\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n searchEditBoxBuilder\r\n .setStyle('font-family', 'monospace')\r\n .setStyle('font-size', '8pt')\r\n .setStyle('width', '100%');\r\n }\r\n if (isSubQuery) {\r\n searchEditBoxBuilder.addClass('eqjs-dialog');\r\n }\r\n this.searchBox = searchEditBoxBuilder.toDOM();\r\n this.searchDiv = searchDivBuilder.toDOM();\r\n this.searchDiv.appendChild(this.searchBox);\r\n baseDiv.appendChild(this.searchDiv);\r\n }\r\n var scrollDiv = document.createElement(\"div\");\r\n scrollDiv.tabIndex = 1;\r\n domel(scrollDiv)\r\n .addClass(this.cssPrefix + \"-scrollDiv\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n scrollDiv.style.overflowX = \"hidden\";\r\n scrollDiv.style.overflowY = \"auto\";\r\n scrollDiv.style.position = \"relative\";\r\n baseDiv.appendChild(scrollDiv);\r\n this.levelDiv = baseDiv;\r\n this.scrollDiv = scrollDiv;\r\n if (this.menuId) {\r\n this.levelDiv.id = this.menuId;\r\n }\r\n if (this.parentLevel) {\r\n this.levelDiv.style.zIndex\r\n = this.parentLevel.levelDiv.style.zIndex;\r\n }\r\n this.renderItems();\r\n var scrollDivKeyDownHandler = function (event) {\r\n switch (event.which) {\r\n case 13: // enter\r\n if (_this.parentMenu.options.multiselect) {\r\n _this.parentMenu.getRootLevel().applyBtn.click();\r\n }\r\n else {\r\n if (_this.activeItem) {\r\n _this.activeItem.itemDiv.click();\r\n }\r\n }\r\n break;\r\n case 32: // space\r\n if (_this.activeItem) {\r\n _this.activeItem.itemDiv.click();\r\n }\r\n break;\r\n case 37: // left\r\n if (_this.parentLevel && !_this.isFilteringMode) {\r\n _this.deactivateItem(_this.activeItem);\r\n _this.parentLevel.focus();\r\n }\r\n break;\r\n case 39: // right\r\n _this.openSubLevel(_this.activeItem);\r\n break;\r\n case 38: // up\r\n _this.moveActiveItemUp();\r\n break;\r\n case 40: // down\r\n _this.moveActiveItemDown();\r\n break;\r\n default: return; // exit this handler for other keys\r\n }\r\n event.preventDefault(); // prevent the default action (scroll / move caret) \r\n };\r\n scrollDiv.addEventListener(\"keydown\", scrollDivKeyDownHandler);\r\n if (browserUtils.isMobileMode()) {\r\n this.closeDiv =\r\n domel('div', baseDiv)\r\n .addClass('eqjs-menu-close-btn')\r\n .addText(i18n.getText('ButtonClose'))\r\n .on('click', function () {\r\n _this.parentMenu.hideMenu();\r\n })\r\n .toDOM();\r\n }\r\n };\r\n MenuLevel.prototype.moveActiveItemDown = function () {\r\n var items = this.isFilteringMode ? this.filteredItems : this.items;\r\n if (this.activeItem) {\r\n var idx = items.indexOf(this.activeItem);\r\n if (idx < items.length - 1) {\r\n this.activateItem(items[idx + 1], false);\r\n }\r\n }\r\n else {\r\n this.activateItem(items[0], false);\r\n }\r\n };\r\n MenuLevel.prototype.moveActiveItemUp = function () {\r\n var items = this.isFilteringMode ? this.filteredItems : this.items;\r\n if (this.activeItem) {\r\n var idx = items.indexOf(this.activeItem);\r\n if (idx > 0) {\r\n this.activateItem(items[idx - 1], false);\r\n }\r\n }\r\n else {\r\n this.activateItem(items[items.length - 1], false);\r\n }\r\n };\r\n MenuLevel.prototype.openSubLevel = function (menuItem) {\r\n if (menuItem && menuItem.items && !this.isFilteringMode) {\r\n this.showSubLevel(menuItem);\r\n menuItem.subLevel.activateItem(menuItem.subLevel.items[0]);\r\n }\r\n };\r\n MenuLevel.prototype.focusScrollDiv = function () {\r\n this.scrollDiv.focus();\r\n };\r\n MenuLevel.prototype.turnCheckboxes = function (items) {\r\n //turn checkboxes on for selected items\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item.itemCheckbox)\r\n item.itemCheckbox.checked = this.isItemSelected(item);\r\n if (item.items) {\r\n this.turnCheckboxes(item.items);\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.isItemSelected = function (item) {\r\n if (item.items) {\r\n for (var i = 0; i < item.items.length; i++) {\r\n if (this.isItemSelected(item.items[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n else {\r\n return item.selected;\r\n }\r\n };\r\n MenuLevel.prototype.setItemSelected = function (item, value) {\r\n if (item.items) {\r\n for (var i = 0; i < item.items.length; i++) {\r\n this.setItemSelected(item.items[i], value);\r\n }\r\n }\r\n else {\r\n item.selected = value;\r\n }\r\n };\r\n MenuLevel.prototype.submitItems = function (items, selectedItems) {\r\n for (var j = 0; j < items.length; j++) {\r\n if (items[j].items) {\r\n this.submitItems(items[j].items, selectedItems);\r\n }\r\n else {\r\n if (items[j].selected) {\r\n selectedItems.push(items[j]);\r\n }\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.allSubitemsAreFiltered = function (items, filterCallback) {\r\n for (var i = 0; i < items.length; i++) {\r\n if (filterCallback(items[i]))\r\n return false;\r\n }\r\n return true;\r\n };\r\n MenuLevel.prototype.isItemDiv = function (element) {\r\n return element['menuItem'] ? true : false;\r\n };\r\n MenuLevel.prototype.isLevelDiv = function (element) {\r\n return element['menuLevel'] ? true : false;\r\n };\r\n MenuLevel.prototype.getMenuItem = function (element) {\r\n var el = element;\r\n while (!this.isItemDiv(el)) {\r\n if (this.isLevelDiv(el)) {\r\n throw \"Can't get menu item\";\r\n }\r\n el = el.parentElement;\r\n }\r\n return el['menuItem'];\r\n };\r\n MenuLevel.prototype.renderItemsWithoutFilter = function () {\r\n var _this = this;\r\n this.isFilteringMode = false;\r\n var scrollDiv = this.scrollDiv;\r\n var multiselect = this.parentMenu.options.multiselect;\r\n var activateOnMouseOver = this.parentMenu.options.activateOnMouseOver;\r\n var itemFgColor = this.parentMenu.style.colors.fgON || 'black';\r\n var itemOverBgColor = this.parentMenu.style.colors.bgOVER || 'LightSteelBlue';\r\n var itemFontSize = this.parentMenu.style.itemStyle.fontSize || '14px';\r\n var itemFilterCallback = this.parentMenu.getItemFilterCallback();\r\n scrollDiv.innerHTML = \"\";\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (!item || !item.text)\r\n continue;\r\n if (itemFilterCallback) {\r\n if (!itemFilterCallback(item))\r\n continue;\r\n if (item.items && this.allSubitemsAreFiltered(item.items, itemFilterCallback))\r\n continue;\r\n }\r\n item.data = function (propName) {\r\n return _this[propName];\r\n };\r\n if (typeof (item.selected) == \"undefined\") {\r\n item.selected = false;\r\n }\r\n if (item.selected && this.selectedItem == null) {\r\n this.selectedItem = item;\r\n }\r\n var itemDiv = document.createElement(\"div\");\r\n domel(itemDiv)\r\n .addClass(this.cssPrefix + \"-itemDiv\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n if (item.selected && this.showSelected && !multiselect) {\r\n itemDiv.classList.add(this.cssPrefix + \"-selected\");\r\n }\r\n ;\r\n if (this.domWriteItemsId && this.menuId) {\r\n itemDiv.id = 'item-' + this.menuId + '-' + item.id;\r\n }\r\n scrollDiv.appendChild(itemDiv);\r\n itemDiv['menuItem'] = item;\r\n itemDiv['menuLevel'] = this;\r\n item.itemDiv = itemDiv;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n itemDiv.style.fontSize = itemFontSize;\r\n itemDiv.style.color = itemFgColor;\r\n itemDiv.style.paddingLeft = \"15px\";\r\n itemDiv.style.paddingRight = \"6px\";\r\n itemDiv.style.cursor = \"pointer\";\r\n }\r\n if (item.text == '---') {\r\n itemDiv.appendChild(document.createElement('hr'));\r\n }\r\n else {\r\n if (multiselect) {\r\n var cb = document.createElement(\"input\");\r\n cb.type = \"checkbox\";\r\n cb.id = \"cb\" + item.id;\r\n cb.checked = this.isItemSelected(item);\r\n cb.defaultChecked = this.isItemSelected(item);\r\n itemDiv.appendChild(cb);\r\n item.itemCheckbox = cb;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n cb.style.margin = \"4px 10px 0 0\";\r\n cb.style.verticalAlign = \"top\";\r\n }\r\n }\r\n var itemText = item.text;\r\n if (this.parentMenu.options.showItemIds) {\r\n itemText = item.id + ':' + itemText;\r\n }\r\n var itemTextNode = document.createTextNode(itemText);\r\n itemDiv.appendChild(itemTextNode);\r\n if (item.items && item.items.length > 0) {\r\n itemDiv.classList.add(this.cssPrefix + \"-itemDiv-hasChildren\");\r\n var arrowSpan = document.createElement('span');\r\n arrowSpan.classList.add(this.cssPrefix + \"-itemDiv-arrow\");\r\n itemDiv.appendChild(arrowSpan);\r\n var arrowText = document.createTextNode('>');\r\n arrowSpan.appendChild(arrowText);\r\n }\r\n var itemClickHandler = function (ev) {\r\n var menuItem = _this.getMenuItem(ev.target);\r\n if (multiselect) {\r\n if (!menuItem.items || ev.target == menuItem.itemCheckbox) {\r\n var itemSelected = _this.isItemSelected(menuItem);\r\n _this.setItemSelected(menuItem, !itemSelected);\r\n menuItem.itemCheckbox.checked = !itemSelected;\r\n _this.parentMenu.refreshCheckboxes();\r\n }\r\n else {\r\n _this.activateItem(menuItem);\r\n }\r\n }\r\n else {\r\n _this.activateItem(menuItem);\r\n _this.submit(menuItem);\r\n }\r\n return false;\r\n };\r\n itemDiv.removeEventListener(\"click\", itemClickHandler);\r\n itemDiv.addEventListener('click', itemClickHandler);\r\n itemDiv.addEventListener('mouseenter', function (ev) {\r\n var item = _this.getMenuItem(ev.target);\r\n _this.parentMenu.isCursorInside = true;\r\n if (activateOnMouseOver) {\r\n _this.activateItem(item);\r\n }\r\n });\r\n itemDiv.addEventListener('mouseleave', function (ev) {\r\n var item = _this.getMenuItem(ev.target);\r\n _this.parentMenu.isCursorInside = false;\r\n setTimeout(function () {\r\n if (!_this.parentMenu.isCursorInside) {\r\n if (activateOnMouseOver && item == _this.activeItem && !item.subLevel) {\r\n _this.deactivateItem(item);\r\n }\r\n }\r\n }, 200);\r\n });\r\n }\r\n if (this.itemRenderedCallback) {\r\n this.itemRenderedCallback(this.menuId, itemDiv);\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.renderItemsWithFilter = function (filter) {\r\n this.isFilteringMode = true;\r\n var scrollDiv = this.scrollDiv;\r\n scrollDiv.innerHTML = \"\";\r\n var filterSections = filter.split('>');\r\n var pureFilterTexts = filterSections.map(function (section) { return section.replace(/\\*/g, ''); });\r\n var items = this.filterItems(this.items, filterSections);\r\n this.filteredItems = [];\r\n for (var i = 0; i < items.length; i++) {\r\n this.renderItemWithFilter(items[i], pureFilterTexts, 0);\r\n }\r\n };\r\n MenuLevel.prototype.matchesFilter = function (text, regexp) {\r\n if (text && regexp) {\r\n return regexp.test(text);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n MenuLevel.prototype.filterItems = function (items, filterSections) {\r\n var resultItems = [];\r\n var filter = filterSections.length > 0 ? filterSections[0] : '';\r\n var restFilterSections = filterSections.length > 1 ? filterSections.slice(1) : filterSections;\r\n var filterRegexp = filter ? new RegExp(filter.replace(/\\*/g, '.+?'), 'i') : null;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item.items) {\r\n var groupItem = dataUtils.assign({}, item);\r\n var groupItemMatches = this.matchesFilter(item.text, filterRegexp);\r\n //if we have only one filter section (or an empty filter)\r\n if (filterSections.length < 2) {\r\n //if current group item matches the filter -> show all sub-items\r\n if (groupItemMatches && filterSections.length < 2) {\r\n groupItem.items = dataUtils.createArrayFrom(item.items);\r\n }\r\n else {\r\n groupItem.items = this.filterItems(item.items, restFilterSections);\r\n }\r\n }\r\n //if we have more than 1 filter section and there is a match -> filter sub-items as well\r\n else if (groupItemMatches) {\r\n groupItem.items = this.filterItems(item.items, restFilterSections);\r\n }\r\n //otherwise we skip this group at all\r\n else {\r\n groupItem.items = [];\r\n }\r\n if (groupItem.items.length > 0) {\r\n resultItems.push(groupItem);\r\n }\r\n }\r\n else {\r\n if (this.matchesFilter(item.text, filterRegexp)) {\r\n resultItems.push(item);\r\n }\r\n }\r\n }\r\n return resultItems;\r\n };\r\n MenuLevel.prototype.renderItemWithFilter = function (item, filterTexts, level) {\r\n var _this = this;\r\n var scrollDiv = this.scrollDiv;\r\n var levelFilterText = level < filterTexts.length ? filterTexts[level] : filterTexts[filterTexts.length - 1];\r\n var multiselect = this.parentMenu.options.multiselect;\r\n var activateOnMouseOver = this.parentMenu.options.activateOnMouseOver;\r\n var itemFgColor = this.parentMenu.style.colors.fgON || 'black';\r\n var itemOverBgColor = this.parentMenu.style.colors.bgOVER || 'LightSteelBlue';\r\n var itemFontSize = this.parentMenu.style.itemStyle.fontSize || '14px';\r\n var itemFilterCallback = this.parentMenu.getItemFilterCallback();\r\n if (!item || !item.text)\r\n return;\r\n if (itemFilterCallback) {\r\n if (!itemFilterCallback(item))\r\n return;\r\n if (item.items && this.allSubitemsAreFiltered(item.items, itemFilterCallback))\r\n return;\r\n }\r\n item.data = function (propName) {\r\n return this[propName];\r\n };\r\n if (typeof (item.selected) == \"undefined\") {\r\n item.selected = false;\r\n }\r\n if (item.selected && this.selectedItem == null) {\r\n this.selectedItem = item;\r\n }\r\n var itemDiv = document.createElement(\"div\");\r\n domel(itemDiv)\r\n .addClass(this.cssPrefix + \"-itemDiv\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n itemDiv.style.marginLeft = level * 10 + \"px\";\r\n if (item.selected && !multiselect) {\r\n itemDiv.classList.add(this.cssPrefix + \"-selected\");\r\n }\r\n ;\r\n if (this.domWriteItemsId && this.menuId) {\r\n itemDiv.id = 'item-' + this.menuId + '-' + item.id;\r\n }\r\n scrollDiv.appendChild(itemDiv);\r\n itemDiv['menuItem'] = item;\r\n itemDiv['menuLevel'] = this;\r\n item.itemDiv = itemDiv;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n itemDiv.style.fontSize = itemFontSize;\r\n itemDiv.style.color = itemFgColor;\r\n itemDiv.style.paddingLeft = \"15px\";\r\n itemDiv.style.paddingRight = \"6px\";\r\n itemDiv.style.cursor = \"pointer\";\r\n }\r\n if (item.text == '---') {\r\n itemDiv.appendChild(document.createElement('hr'));\r\n }\r\n else {\r\n if (multiselect) {\r\n var cb = document.createElement(\"input\");\r\n cb.type = \"checkbox\";\r\n cb.id = \"cb\" + item.id;\r\n cb.checked = this.isItemSelected(item);\r\n cb.defaultChecked = this.isItemSelected(item);\r\n itemDiv.appendChild(cb);\r\n item.itemCheckbox = cb;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n cb.style.margin = \"4px 10px 0 0\";\r\n cb.style.verticalAlign = \"top\";\r\n }\r\n }\r\n var itemText = document.createElement('span');\r\n itemText.innerHTML = this.highlightText(item.text, levelFilterText);\r\n itemDiv.appendChild(itemText);\r\n if (item.items && item.items.length > 0) {\r\n itemDiv.classList.add(this.cssPrefix + \"-itemDiv-filter-hasChildren\");\r\n }\r\n else {\r\n this.filteredItems.push(item);\r\n var itemClickHandler = function (event) {\r\n if (multiselect) {\r\n if (!item.items || event.target == item.itemCheckbox) {\r\n var itemSelected = _this.isItemSelected(item);\r\n _this.setItemSelected(item, !itemSelected);\r\n item.itemCheckbox.checked = !itemSelected;\r\n _this.parentMenu.refreshCheckboxes();\r\n }\r\n else {\r\n _this.activateItem(item);\r\n }\r\n }\r\n else {\r\n _this.activateItem(item);\r\n _this.submit(item);\r\n }\r\n return false;\r\n };\r\n itemDiv.removeEventListener(\"click\", itemClickHandler);\r\n itemDiv.addEventListener('click', itemClickHandler);\r\n itemDiv.addEventListener('mouseenter', function (ev) {\r\n ;\r\n _this.parentMenu.isCursorInside = true;\r\n if (activateOnMouseOver) {\r\n _this.activateItem(item);\r\n }\r\n });\r\n itemDiv.addEventListener('mouseleave', function (ev) {\r\n _this.parentMenu.isCursorInside = false;\r\n setTimeout(function () {\r\n if (!_this.parentMenu.isCursorInside) {\r\n if (activateOnMouseOver && item == _this.activeItem && !item.subLevel) {\r\n _this.deactivateItem(item);\r\n }\r\n }\r\n }, 200);\r\n });\r\n }\r\n }\r\n if (item.items) {\r\n for (var i = 0; i < item.items.length; i++) {\r\n this.renderItemWithFilter(item.items[i], filterTexts, level + 1);\r\n }\r\n }\r\n if (this.itemRenderedCallback) {\r\n this.itemRenderedCallback(this.menuId, itemDiv);\r\n }\r\n };\r\n MenuLevel.prototype.highlightText = function (content, text) {\r\n if (text && text.length > 0) {\r\n var lowerText = text.toLowerCase();\r\n var lowerContent = content.toLowerCase();\r\n var insertValue1 = \"\";\r\n var insertValue2 = \"\";\r\n var startIndex = lowerContent.indexOf(lowerText);\r\n if (startIndex >= 0) {\r\n var pos = 0;\r\n var value = content;\r\n var indexInMas = [];\r\n while (true) {\r\n var index = lowerContent.indexOf(lowerText, pos);\r\n if (index >= 0) {\r\n indexInMas.push(index);\r\n pos = index + text.length;\r\n }\r\n else {\r\n pos++;\r\n }\r\n if (pos >= value.length - 1) {\r\n break;\r\n }\r\n }\r\n if (indexInMas.length > 0) {\r\n content = '';\r\n for (var i = 0; i < indexInMas.length; i++) {\r\n if (i === 0) {\r\n content += value.substring(0, indexInMas[i]);\r\n }\r\n content += insertValue1 + value.substring(indexInMas[i], indexInMas[i] + text.length) + insertValue2;\r\n if (i < indexInMas.length - 1) {\r\n content += value.substring(indexInMas[i] + text.length, indexInMas[i + 1]);\r\n }\r\n else {\r\n content += value.substring(indexInMas[i] + text.length);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n };\r\n MenuLevel.prototype.renderItems = function (filter) {\r\n if (!filter && !browserUtils.isMobileMode()) {\r\n this.renderItemsWithoutFilter();\r\n }\r\n else {\r\n filter = filter || '';\r\n this.renderItemsWithFilter(filter.toLowerCase());\r\n }\r\n };\r\n MenuLevel.prototype.activateItem = function (menuItem, openSubLevel) {\r\n if (openSubLevel === void 0) { openSubLevel = true; }\r\n if (this.activeItem != null) {\r\n this.deactivateItem(this.activeItem);\r\n }\r\n this.activeItem = menuItem;\r\n var rowElement = menuItem.itemDiv;\r\n rowElement.classList.add('active');\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n var itemBgColor = this.parentMenu.style.colors.bgON;\r\n var itemFgColor = this.parentMenu.style.colors.fgON;\r\n var itemOverBgColor = this.parentMenu.style.colors.bgOVER;\r\n var itemOverFgColor = this.parentMenu.style.colors.fgOVER || \"\";\r\n var itemClass = this.parentMenu.style.itemClass || \"\";\r\n var itemClassOver = this.parentMenu.style.itemClassOver || \"\";\r\n if (itemClassOver != \"\") {\r\n rowElement.style.backgroundColor = \"\";\r\n rowElement.style.color = \"\";\r\n }\r\n else {\r\n rowElement.style.backgroundColor = itemOverBgColor;\r\n rowElement.style.color = itemOverFgColor;\r\n }\r\n }\r\n if (menuItem.items && !this.isFilteringMode && openSubLevel) {\r\n this.showSubLevel(menuItem);\r\n }\r\n };\r\n MenuLevel.prototype.deactivateItem = function (menuItem) {\r\n if (!menuItem)\r\n return;\r\n var rowElement = menuItem.itemDiv;\r\n rowElement.classList.remove('active');\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n var itemBgColor = this.parentMenu.style.colors.bgON;\r\n var itemFgColor = this.parentMenu.style.colors.fgON;\r\n var itemClass = this.parentMenu.style.itemClass || \"\";\r\n if (itemClass != \"\") {\r\n rowElement.style.backgroundColor = \"\";\r\n rowElement.style.color = \"\";\r\n }\r\n else {\r\n rowElement.style.backgroundColor = itemBgColor;\r\n rowElement.style.color = itemFgColor;\r\n }\r\n }\r\n if (menuItem.subLevel) {\r\n menuItem.subLevel.hide();\r\n }\r\n this.activeItem = null;\r\n };\r\n MenuLevel.prototype.showSubLevel = function (menuItem) {\r\n if (!menuItem.subLevel) {\r\n var levelId = '';\r\n if (this.menuId) {\r\n levelId = this.menuId + \"-\" + menuItem.id;\r\n }\r\n menuItem.subLevel = new MenuLevel({\r\n showSelected: this.showSelected,\r\n menu: this.parentMenu,\r\n parent: this,\r\n container: this.parentElement,\r\n items: menuItem.items,\r\n levelIndex: this.levelIndex + 1,\r\n domWriteItemsId: this.domWriteItemsId,\r\n menuId: levelId,\r\n itemRenderedCallback: this.itemRenderedCallback\r\n });\r\n }\r\n var pos = getElementAbsolutePos(menuItem.itemDiv);\r\n var scroll = getScrollPos();\r\n var winSize = getWinSize();\r\n //show menu to the side that have more space available\r\n var leftSpace = pos.x - scroll.left;\r\n var rightSpace = winSize.width - leftSpace - menuItem.itemDiv.offsetWidth;\r\n pos.x += menuItem.itemDiv.offsetParent.offsetWidth;\r\n pos.y += 1;\r\n menuItem.subLevel.showAt(pos.x, pos.y, true, true);\r\n menuItem.subLevel.levelDiv.style.width = '';\r\n menuItem.subLevel.levelDiv.style.right = '';\r\n if ((rightSpace >= menuItem.subLevel.levelDiv.offsetWidth) || (rightSpace >= leftSpace)) { //show level to the right\r\n if (rightSpace < menuItem.subLevel.levelDiv.offsetWidth) {\r\n menuItem.subLevel.levelDiv.style.right = -scroll.left + 'px';\r\n }\r\n }\r\n else { //show level to the left\r\n if (leftSpace < menuItem.subLevel.levelDiv.offsetWidth) {\r\n menuItem.subLevel.levelDiv.style.left = scroll.left + 4 + 'px';\r\n }\r\n else {\r\n menuItem.subLevel.levelDiv.style.left = '';\r\n }\r\n menuItem.subLevel.levelDiv.style.right = getViewportSize().width - pos.x + menuItem.itemDiv.offsetWidth - 6 + 'px';\r\n }\r\n menuItem.subLevel.levelDiv.style.visibility = 'visible';\r\n menuItem.subLevel.focus();\r\n };\r\n MenuLevel.prototype.adjustTopPos = function (top) {\r\n var winSize = getWinSize();\r\n var levelBottom = top - getScrollPos().top + this.levelDiv.offsetHeight;\r\n var res = top;\r\n if (levelBottom > winSize.height - 5) {\r\n res -= levelBottom - winSize.height + 5;\r\n if (res < getScrollPos().top) {\r\n res = getScrollPos().top + 10;\r\n }\r\n }\r\n return res;\r\n };\r\n MenuLevel.prototype.showAt = function (x, y, adjustTopPos, hidden) {\r\n if (!this.items) {\r\n return;\r\n }\r\n this.initLevelDiv();\r\n //crocodile\r\n this.turnCheckboxes(this.items);\r\n this.renderItems();\r\n var levelStyle = this.levelDiv.style;\r\n if (hidden) {\r\n this.levelDiv.style.visibility = 'hidden';\r\n }\r\n levelStyle.display = 'block';\r\n levelStyle.left = x + 'px';\r\n levelStyle.top = y + 'px';\r\n this.scrollDiv.style.width = \"auto\";\r\n this.scrollDiv.style.height = \"auto\";\r\n //adjusting level top position\r\n if (adjustTopPos) {\r\n y = this.adjustTopPos(y);\r\n levelStyle.top = y + 'px';\r\n }\r\n //setting minimal level width if it is defined\r\n var minItemWidth = this.parentMenu.minItemWidth;\r\n if (minItemWidth > 0 && this.scrollDiv.offsetWidth < minItemWidth) {\r\n for (var i = 0; i < this.items.length; i++) {\r\n this.items[i].itemDiv.style.width = minItemWidth + \"px\";\r\n }\r\n }\r\n var maxItemWidth = this.parentMenu.maxItemWidth;\r\n if (maxItemWidth > 0 && this.scrollDiv.offsetWidth > maxItemWidth) {\r\n for (var i = 0; i < this.items.length; i++) {\r\n this.items[i].itemDiv.style.width = maxItemWidth + \"px\";\r\n this.items[i].itemDiv.style.overflowX = \"hidden\";\r\n }\r\n }\r\n var winSize = getWinSize();\r\n //adjustinng maximum height of the menu level if it does not fit to browser window\r\n var maxHeight = winSize.height - (y - getScrollPos().top) - 15; //document.documentElement.scrollTop\r\n if (this.parentMenu.maxHeight > 0 && maxHeight > this.parentMenu.maxHeight) {\r\n maxHeight = this.parentMenu.maxHeight;\r\n }\r\n if (this._applyItem != null && this._applyItem.itemDiv != null) {\r\n maxHeight -= this._applyItem.itemDiv.offsetHeight + 5;\r\n }\r\n if (this.searchDiv != null) {\r\n maxHeight -= this.searchDiv.offsetHeight;\r\n }\r\n if (this.closeDiv != null) {\r\n maxHeight -= this.closeDiv.offsetHeight;\r\n }\r\n if (this.levelDiv.offsetHeight > maxHeight) {\r\n var newHeight = maxHeight;\r\n if (newHeight < 50) {\r\n newHeight = 50;\r\n }\r\n this.scrollDiv.style.height = newHeight + \"px\";\r\n }\r\n else {\r\n this.scrollDiv.style.height = \"auto\";\r\n }\r\n this.activeItem = null;\r\n };\r\n MenuLevel.prototype.focus = function () {\r\n var _this = this;\r\n window.setTimeout(function () {\r\n _this.scrollDiv.focus();\r\n if (_this.searchBox != null) {\r\n if (_this.parentMenu.options.searchBoxAutoFocus) {\r\n _this.searchBox.focus();\r\n }\r\n _this.searchBox.value = \"\";\r\n }\r\n }, 100);\r\n };\r\n MenuLevel.prototype.hide = function () {\r\n if (this.activeItem !== null) {\r\n if (this.activeItem.subLevel) {\r\n this.activeItem.subLevel.hide();\r\n }\r\n }\r\n if (this.levelDiv) {\r\n var levelStyle = this.levelDiv.style;\r\n levelStyle.display = 'none';\r\n if (this.initialized) {\r\n this.parentElement.removeChild(this.levelDiv);\r\n this.initialized = false;\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.initLevelDiv = function () {\r\n if (!this.initialized) {\r\n this.parentElement.appendChild(this.levelDiv);\r\n domel(this.levelDiv)\r\n .addClass(this.cssPrefix + \"-levelDiv\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n this.initialized = true;\r\n }\r\n };\r\n MenuLevel.prototype.submit = function (menuItem) {\r\n if (menuItem != null) {\r\n if (!menuItem.items) {\r\n this.parentMenu.hideMenu();\r\n var selectedItems = [];\r\n if (menuItem == this._applyItem) {\r\n this.submitItems(this.items, selectedItems);\r\n }\r\n this.parentMenu.submitMenu(menuItem, selectedItems);\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.remove = function () {\r\n //remove old level elements\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.subLevel) {\r\n item.subLevel.remove();\r\n }\r\n }\r\n if (this.levelDiv) {\r\n this.levelDiv.innerHTML = \"\";\r\n var parentNode = this.levelDiv.parentNode;\r\n if (parentNode != null) {\r\n parentNode.removeChild(this.levelDiv);\r\n }\r\n }\r\n this.levelDiv = null;\r\n };\r\n MenuLevel.prototype.update = function (newItems) {\r\n this.remove();\r\n //create new level\r\n this.items = newItems;\r\n this.activeItem = null;\r\n this.selectedItem = null;\r\n this._applyItem.itemDiv = null;\r\n this.initialized = false;\r\n this.updated++;\r\n this.renderContent();\r\n };\r\n MenuLevel.prototype.refreshCheckboxes = function () {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.itemCheckbox) {\r\n item.itemCheckbox.checked = this.isItemSelected(item);\r\n }\r\n if (item.subLevel) {\r\n item.subLevel.refreshCheckboxes();\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.refreshItems = function () {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.itemDiv) {\r\n if (item.hidden) {\r\n item.itemDiv.style.display = \"none\";\r\n }\r\n else {\r\n item.itemDiv.style.display = \"block\";\r\n }\r\n }\r\n if (item.subLevel) {\r\n item.subLevel.refreshItems();\r\n }\r\n }\r\n };\r\n MenuLevel.prototype.findItem = function (searchedText) {\r\n var txt = searchedText.toLowerCase();\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.text.toLowerCase().indexOf(txt) == 0) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n };\r\n return MenuLevel;\r\n}());\r\nvar PopupMenu = /** @class */ (function () {\r\n function PopupMenu(options) {\r\n var _this = this;\r\n this.isCursorInside = false;\r\n this.mouseIsOverBlock = false;\r\n this.mouseIsOverLink = false;\r\n this.toId = null;\r\n this.active = false;\r\n this.ancorFocused = null;\r\n this.options = {\r\n items: [],\r\n buttons: {\r\n submit: i18n.getText('ButtonApply'),\r\n cancel: i18n.getText('ButtonCancel')\r\n },\r\n itemFilterCallback: null,\r\n useDefaultStyles: false,\r\n multiselect: false,\r\n adjustHeight: true,\r\n showSearchBoxAfter: 30,\r\n activateOnMouseOver: true,\r\n container: document.body,\r\n domWriteItemsId: false,\r\n itemRenderedCallback: null,\r\n showItemIds: false\r\n };\r\n if (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n if (this.options.hideButtons) {\r\n this.options.submitOnBlur = true;\r\n }\r\n this.menuId = PopupMenu.lastMenuID++;\r\n this.updateProps();\r\n this.rootLevel = new MenuLevel({\r\n menu: this,\r\n items: this.options.items,\r\n levelIndex: 0,\r\n container: this.options.container,\r\n domWriteItemsId: this.options.domWriteItemsId,\r\n menuId: this.options.id,\r\n itemRenderedCallback: this.options.itemRenderedCallback,\r\n showSelected: this.options.showSelected,\r\n });\r\n this.rootLevel.levelDiv.classList.add(this.cssPrefix + \"-rootLevel\");\r\n if (this.options.zIndex)\r\n this.rootLevel.levelDiv.style.zIndex = \"\" + this.options.zIndex;\r\n this.menuKeyUpHandler = function (e) {\r\n if (e.which == 27) {\r\n _this.hideMenu();\r\n e.stopImmediatePropagation();\r\n }\r\n };\r\n this.globalMouseDownHandler = function (e) {\r\n if (!_this.active)\r\n return true;\r\n var event = window.event || e;\r\n var o = event.srcElement || event.target;\r\n var isOutside = true;\r\n while (o) {\r\n if (o.tagName && o.tagName.toLowerCase() == 'div') {\r\n // it is added in renderContent of MenuLevel class\r\n if (o.menuLevel) {\r\n if (o.menuLevel.parentMenu == _this) {\r\n isOutside = false;\r\n break;\r\n }\r\n }\r\n }\r\n o = o.parentNode || o.parentElement;\r\n }\r\n if (isOutside) {\r\n if (_this.options.submitOnBlur) {\r\n _this.rootLevel.submit(_this.rootLevel.applyItem);\r\n }\r\n _this.hideMenu();\r\n }\r\n return true;\r\n };\r\n this.render();\r\n }\r\n Object.defineProperty(PopupMenu.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-menu';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PopupMenu.prototype.getItems = function () {\r\n return this.rootLevel.getItems();\r\n };\r\n PopupMenu.prototype.updateProps = function () {\r\n this.style = {};\r\n this.style.colors = { border: \"#666666\", shadow: \"#888888\", bgON: \"white\", fgON: \"black\", bgOVER: \"#B6BDD2\", fgOVER: \"black\" };\r\n this.style.itemStyle = { fontSize: \"14px\" };\r\n this.minItemWidth = 0;\r\n this.maxItemWidth = 0;\r\n this.maxHeight = 0;\r\n this.zIndex = \"\" + this.options.zIndex;\r\n this.commandTemplate = \"\";\r\n this.args = [];\r\n this.active = false;\r\n };\r\n PopupMenu.prototype.render = function () {\r\n };\r\n PopupMenu.prototype.clearItemsMenuProps = function (items) {\r\n if (!items)\r\n return;\r\n for (var i = 0; i < items.length; i++) {\r\n this.clearItemMenuProps(items[i]);\r\n }\r\n };\r\n PopupMenu.prototype.clearItemMenuProps = function (item) {\r\n //don't clear properties they belong this menu\r\n if (item.subLevel && item.subLevel.parentMenu == this)\r\n return;\r\n if (item.subLevel) {\r\n item.subLevel.remove();\r\n item.subLevel = null;\r\n }\r\n if (item.itemDiv) {\r\n item.itemDiv = null;\r\n }\r\n if (item.items) {\r\n this.clearItemsMenuProps(item.items);\r\n }\r\n };\r\n PopupMenu.prototype.setSelectedItems = function (items, selectedIds) {\r\n var itemsLength = items ? items.length : 0;\r\n for (var i = 0; i < itemsLength; i++) {\r\n var item = items[i];\r\n if (item.items) {\r\n this.setSelectedItems(item.items, selectedIds);\r\n }\r\n else {\r\n item.selected = selectedIds.indexOf(item.id) >= 0;\r\n }\r\n }\r\n };\r\n PopupMenu.prototype.getRootLevel = function () {\r\n return this.rootLevel;\r\n };\r\n PopupMenu.prototype.getItemFilterCallback = function () {\r\n return this.itemFilterCallback;\r\n };\r\n PopupMenu.prototype.showMenu = function (options) {\r\n this.ancorFocused = options.anchor == document.activeElement ? options.anchor : null;\r\n this.clearItemsMenuProps(this.options.items);\r\n this.itemSelectedCallback = options.itemSelectedCallback || null;\r\n this.menuClosedCallback = options.menuClosedCallback || null;\r\n this.itemFilterCallback = options.itemFilterCallback || null;\r\n if (options.items) {\r\n this.options.items = options.items;\r\n this.rootLevel.setItems(options.items);\r\n }\r\n if (options.onMenuItemSelected) {\r\n this.options.onMenuItemSelected = options.onMenuItemSelected;\r\n }\r\n var selectedIds = options.selectedIds || null;\r\n if (selectedIds) {\r\n if (typeof selectedIds === \"string\") {\r\n selectedIds = selectedIds.split(\",\");\r\n }\r\n }\r\n else {\r\n selectedIds = [];\r\n }\r\n this.active = true;\r\n this.setSelectedItems(this.options.items, selectedIds);\r\n if (browserUtils.isMobileMode()) {\r\n this.rootLevel.showAt(0, 0, true, true);\r\n this.rootLevel.levelDiv.style.top = '0px';\r\n this.rootLevel.levelDiv.style.bottom = '0px';\r\n this.rootLevel.levelDiv.style.right = '0px';\r\n this.rootLevel.levelDiv.style.position = 'fixed';\r\n this.rootLevel.levelDiv.style.fontSize = '20px';\r\n }\r\n else {\r\n var anchor = options.anchor || document.documentElement;\r\n var srcPos = getElementAbsolutePos(anchor);\r\n var anchorHeight = anchor.offsetHeight;\r\n var anchorWidth = anchor.offsetHeight;\r\n var pos = {\r\n x: srcPos.x,\r\n y: srcPos.y + anchorHeight + 2\r\n };\r\n var scroll_1 = getScrollPos();\r\n var winSize = getWinSize();\r\n //show menu to the side that have more space available\r\n var leftSpace = pos.x + anchorWidth - scroll_1.left;\r\n var rightSpace = winSize.width - leftSpace + anchorWidth;\r\n pos.x += 2;\r\n this.rootLevel.showAt(pos.x, pos.y, true, true);\r\n this.rootLevel.levelDiv.style.width = '';\r\n this.rootLevel.levelDiv.style.right = '';\r\n if (!this.rootLevel.levelDiv.style.zIndex) {\r\n // z-index is at least 10000 and more if anchor has bigger\r\n this.rootLevel.levelDiv.style.zIndex = \"\" + Math.max(10000, findHighestZIndex(anchor) + 1);\r\n }\r\n if ((rightSpace >= this.rootLevel.levelDiv.offsetWidth) || (rightSpace >= leftSpace)) {\r\n //show level to the right\r\n if (rightSpace < this.rootLevel.levelDiv.offsetWidth) {\r\n this.rootLevel.levelDiv.style.right = -scroll_1.left + 'px';\r\n }\r\n }\r\n else {\r\n //show level to the left\r\n if (leftSpace < this.rootLevel.levelDiv.offsetWidth) {\r\n this.rootLevel.levelDiv.style.left = scroll_1.left + 4 + 'px';\r\n }\r\n else {\r\n this.rootLevel.levelDiv.style.left = '';\r\n }\r\n this.rootLevel.levelDiv.style.right = getViewportSize().width - pos.x - anchorWidth + 'px';\r\n }\r\n this.rootLevel.levelDiv.style.fontSize = '14px';\r\n }\r\n this.rootLevel.levelDiv.style.visibility = 'visible';\r\n this.rootLevel.focus();\r\n document.addEventListener('keyup', this.menuKeyUpHandler);\r\n document.addEventListener('mousedown', this.globalMouseDownHandler, true);\r\n };\r\n PopupMenu.prototype.hideMenu = function () {\r\n document.removeEventListener('mousedown', this.globalMouseDownHandler, true);\r\n document.removeEventListener('keyup', this.menuKeyUpHandler);\r\n this.rootLevel.hide();\r\n if (this.ancorFocused) {\r\n this.ancorFocused.focus();\r\n }\r\n if (this.menuClosedCallback) {\r\n this.menuClosedCallback();\r\n }\r\n };\r\n PopupMenu.prototype.submitMenu = function (menuItem, selectedItems) {\r\n if (this.itemSelectedCallback) {\r\n this.itemSelectedCallback(menuItem, selectedItems);\r\n }\r\n };\r\n PopupMenu.prototype.knockMenuStyle = function (menu) {\r\n menu.removeAttribute('style');\r\n var ul = menu.querySelectorAll('ul').item(0);\r\n var hasUlStyle = ul && ul.style ? true : false;\r\n if (hasUlStyle !== false) {\r\n ul.setAttribute('style', '');\r\n }\r\n };\r\n PopupMenu.prototype.refreshItems = function () {\r\n this.rootLevel.refreshItems();\r\n };\r\n PopupMenu.prototype.refreshCheckboxes = function () {\r\n this.rootLevel.refreshCheckboxes();\r\n };\r\n PopupMenu.lastMenuID = 0;\r\n return PopupMenu;\r\n}());\r\nexport { PopupMenu };\r\n//# sourceMappingURL=popup_menu.js.map","/**\r\n * Represents parts of Query Panel which can be editable\r\n */\r\nexport var QPEditablePart;\r\n(function (QPEditablePart) {\r\n QPEditablePart[QPEditablePart[\"None\"] = 0] = \"None\";\r\n QPEditablePart[QPEditablePart[\"Value\"] = 1] = \"Value\";\r\n QPEditablePart[QPEditablePart[\"Attribute\"] = 2] = \"Attribute\";\r\n QPEditablePart[QPEditablePart[\"Operator\"] = 4] = \"Operator\";\r\n QPEditablePart[QPEditablePart[\"Addition\"] = 8] = \"Addition\";\r\n QPEditablePart[QPEditablePart[\"Removal\"] = 16] = \"Removal\";\r\n QPEditablePart[QPEditablePart[\"All\"] = 255] = \"All\";\r\n QPEditablePart[QPEditablePart[\"NoAddition\"] = -9] = \"NoAddition\";\r\n QPEditablePart[QPEditablePart[\"NoRemoval\"] = -17] = \"NoRemoval\";\r\n QPEditablePart[QPEditablePart[\"FixedConditionList\"] = 5] = \"FixedConditionList\";\r\n})(QPEditablePart || (QPEditablePart = {}));\r\n//# sourceMappingURL=qp_editable_part.js.map","import * as strf from './string_utils';\r\nimport { DataType } from '../types/data_type';\r\nimport { i18n } from '../i18n/i18n';\r\nexport var utils;\r\n(function (utils) {\r\n function getAllDataTypes() {\r\n return Object.values(DataType).filter(function (item) { return typeof item === \"number\"; });\r\n }\r\n utils.getAllDataTypes = getAllDataTypes;\r\n function getDateDataTypes() {\r\n return [DataType.Time, DataType.Date, DataType.DateTime];\r\n }\r\n utils.getDateDataTypes = getDateDataTypes;\r\n function getStringDataTypes() {\r\n return [DataType.String, DataType.Memo, DataType.FixedChar];\r\n }\r\n utils.getStringDataTypes = getStringDataTypes;\r\n var _numericTypes = [DataType.Byte, DataType.Word, DataType.Int32,\r\n DataType.Int64, DataType.Float, DataType.Currency, DataType.Autoinc];\r\n function getNumericDataTypes() {\r\n return _numericTypes;\r\n }\r\n utils.getNumericDataTypes = getNumericDataTypes;\r\n var _intTypes = [DataType.Byte, DataType.Word, DataType.Int32, DataType.Int64, DataType.Autoinc];\r\n //-------------- object functions -------------------\r\n /**\r\n * Copy the content of all objests passed in `args` parameters into `target`\r\n * and returns the result\r\n * NB: This function copies only the first level properties.\r\n * For a deep copy please use `assignDeep`\r\n * @param target - the target object\r\n * @param args - an array of the source objects\r\n */\r\n function assign(target) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n for (var i = 0; i < args.length; i++) {\r\n var source = args[i];\r\n if (source) {\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n utils.assign = assign;\r\n /**\r\n * Copy the content of all objests passed in `args` parameters into `target`\r\n * and returns the result\r\n * NB: This function make a deep copy -\r\n * so `assignDeep` will be called recursively for all object properties\r\n * on the first level.\r\n * @param target - the target object\r\n * @param sources - an array of the source objects\r\n */\r\n function assignDeep(target) {\r\n var sources = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n sources[_i - 1] = arguments[_i];\r\n }\r\n return assignDeepCore(new WeakMap(), target, sources);\r\n }\r\n utils.assignDeep = assignDeep;\r\n function assignDeepCore(hashSet, target, sources) {\r\n if (!target) {\r\n target = {};\r\n }\r\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\r\n var source = sources_1[_i];\r\n if (source) {\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n var sourceVal = source[key];\r\n if (sourceVal !== null && typeof sourceVal === 'object') {\r\n if (hashSet.has(sourceVal)) {\r\n target[key] = hashSet.get(sourceVal);\r\n }\r\n else {\r\n if (Array.isArray(sourceVal)) {\r\n target[key] = createArrayFrom(sourceVal);\r\n hashSet.set(sourceVal, target[key]);\r\n }\r\n else {\r\n if (typeof target[key] == 'undefined' || target[key] == null) {\r\n target[key] = Object.create(Object.getPrototypeOf(sourceVal));\r\n }\r\n hashSet.set(sourceVal, target[key]);\r\n assignDeepCore(hashSet, target[key], [sourceVal]);\r\n }\r\n }\r\n }\r\n else {\r\n target[key] = sourceVal;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n function getIfDefined(value, defaultValue) {\r\n return (typeof value !== 'undefined') ? value : defaultValue;\r\n }\r\n utils.getIfDefined = getIfDefined;\r\n function IsDefinedAndNotNull(value) {\r\n return typeof value !== 'undefined' && value !== null;\r\n }\r\n utils.IsDefinedAndNotNull = IsDefinedAndNotNull;\r\n function copyArrayTo(collection1, collection2) {\r\n var len1 = collection1.length;\r\n var len2 = collection2.length;\r\n for (var i = 0; i < len1 && i < len2; i++) {\r\n collection2[i] = collection1[i];\r\n }\r\n }\r\n utils.copyArrayTo = copyArrayTo;\r\n function createArrayFrom(collection) {\r\n var result = [];\r\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\r\n var item = collection_1[_i];\r\n result.push(item);\r\n }\r\n return result;\r\n }\r\n utils.createArrayFrom = createArrayFrom;\r\n /**\r\n * Searches an array of the objects which implement ItemWithId by ID\r\n * Returs the found object or null.\r\n * @param array\r\n * @param id\r\n */\r\n function findItemById(array, id) {\r\n var arrLength = array.length;\r\n for (var idx = 0; idx < arrLength; idx++) {\r\n if (array[idx].id === id)\r\n return array[idx];\r\n }\r\n return null;\r\n }\r\n utils.findItemById = findItemById;\r\n function findItemIndexById(array, id) {\r\n var arrLength = array.length;\r\n for (var idx = 0; idx < arrLength; idx++) {\r\n if (array[idx].id === id)\r\n return idx;\r\n }\r\n return -1;\r\n }\r\n utils.findItemIndexById = findItemIndexById;\r\n /**\r\n * Searches an array of the objects which implement ItemWithId by ID\r\n * Returs the index of the found element, or -1 if nothing was found.\r\n * @param array\r\n * @param id\r\n */\r\n function indexOfArrayItem(arr, item) {\r\n if (arr.indexOf) {\r\n return arr.indexOf(item);\r\n }\r\n else {\r\n var len = arr.length;\r\n for (var i = 0; i < len; i++) {\r\n if (item == arr[i]) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n }\r\n utils.indexOfArrayItem = indexOfArrayItem;\r\n /**\r\n * Moves an item in some array to a new position\r\n * @param array\r\n * @param index1\r\n * @param index2\r\n */\r\n function moveArrayItem(array, index1, index2) {\r\n if (index1 >= array.length) {\r\n throw 'Index out of bounds: ' + index1;\r\n }\r\n if (index2 >= array.length) {\r\n index2 = array.length - 1;\r\n }\r\n var item = array.splice(index1, 1)[0];\r\n array.splice(index2, 0, item);\r\n }\r\n utils.moveArrayItem = moveArrayItem;\r\n /**\r\n * Searches for a particular item in the array are removes that item if found.\r\n * @param arr\r\n * @param value\r\n */\r\n function removeArrayItem(arr, value) {\r\n var index = arr.indexOf(value);\r\n if (index != -1) {\r\n return arr.splice(index, 1)[0];\r\n }\r\n }\r\n utils.removeArrayItem = removeArrayItem;\r\n function insertArrayItem(arr, index, value) {\r\n arr.splice(index, 0, value);\r\n }\r\n utils.insertArrayItem = insertArrayItem;\r\n function fillArray(arr, value, start, end) {\r\n if (start === void 0) { start = 0; }\r\n var len = arr.length >>> 0;\r\n var relativeStart = start >> 0;\r\n var k = relativeStart < 0 ?\r\n Math.max(len + relativeStart, 0) :\r\n Math.min(relativeStart, len);\r\n var relativeEnd = end === undefined ?\r\n len : end >> 0;\r\n var final = relativeEnd < 0 ?\r\n Math.max(len + relativeEnd, 0) :\r\n Math.min(relativeEnd, len);\r\n while (k < final) {\r\n arr[k] = value;\r\n k++;\r\n }\r\n return arr;\r\n }\r\n utils.fillArray = fillArray;\r\n //------------ DOM utils ------------\r\n /**\r\n * Calculates the shift on which we need to move our element horizontally\r\n * to find current window\r\n * @param absLeft\r\n * @param width\r\n */\r\n function shiftToFitWindow(absLeft, width) {\r\n var body = document.getElementsByTagName('body')[0];\r\n var winWidth = window.innerWidth || document.documentElement.clientWidth || body.clientWidth;\r\n var absRight = absLeft + width;\r\n var shift = 0;\r\n if (absRight > winWidth) {\r\n shift = winWidth - absRight - 10;\r\n if (absLeft + shift < 0) {\r\n shift = 10 - absLeft;\r\n }\r\n }\r\n return shift;\r\n }\r\n utils.shiftToFitWindow = shiftToFitWindow;\r\n /**\r\n * Returns `true` if the value passed in the parameter is an object\r\n * @param val\r\n */\r\n function isObject(val) {\r\n if (val === null) {\r\n return false;\r\n }\r\n return ((typeof val === 'function') || (typeof val === 'object'));\r\n }\r\n utils.isObject = isObject;\r\n /**\r\n * Returns `true` if the `DataType` value passed in the parameter\r\n * represents some numeric type\r\n * @param dtype\r\n */\r\n function isNumericType(dtype) {\r\n var index = _numericTypes.indexOf(dtype);\r\n return (index >= 0);\r\n }\r\n utils.isNumericType = isNumericType;\r\n /**\r\n * Returns `true` if the `DataType` value passed in the parameter\r\n * represents some numeric type\r\n * @param dtype\r\n */\r\n function isIntType(dtype) {\r\n var index = _intTypes.indexOf(dtype);\r\n return (index >= 0);\r\n }\r\n utils.isIntType = isIntType;\r\n /**\r\n * Returns `true` if the value passed in the parameter is an a numeric value\r\n * @param val\r\n */\r\n function isNumeric(val) {\r\n return !isNaN(parseFloat(val)) && isFinite(val);\r\n }\r\n utils.isNumeric = isNumeric;\r\n /**\r\n * Returns `true` if two data types passed in parameters\r\n * are compatible - so it's safe to copy the values between\r\n * two expressions with these two types\r\n * @param type1\r\n * @param type2\r\n */\r\n function areCompatibleDataTypes(type1, type2) {\r\n return typeof type1 == \"undefined\" || typeof type2 == \"undefined\" || type1 == DataType.Unknown || type2 == DataType.Unknown\r\n || (type1 == type2) || (type1 == DataType.Date && type2 == DataType.DateTime)\r\n || (type1 == DataType.DateTime && type2 == DataType.Date);\r\n }\r\n utils.areCompatibleDataTypes = areCompatibleDataTypes;\r\n /**\r\n * Returns `true` if the property with named `propName`\r\n * in the object `obj` has some value\r\n * @param obj\r\n * @param propName\r\n */\r\n function isPropSet(obj, propName) {\r\n return obj[propName] || obj[propName.toLowerCase()] || obj[propName.toUpperCase()];\r\n }\r\n utils.isPropSet = isPropSet;\r\n //-------------- ID generator -----------\r\n var prefixIdLen = 4;\r\n var symbols = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n var magicTicks = 636712160627685350;\r\n /**\r\n * Generates an unique ID\r\n */\r\n function generateId(prefix) {\r\n if (!prefix) {\r\n prefix = 'easy';\r\n }\r\n var prfx = (prefix.length > prefixIdLen) ? squeezeMoniker(prefix, prefixIdLen) : prefix;\r\n if (prfx && prfx.length > 0) {\r\n prfx += \"-\";\r\n }\r\n //adding 2 random symbols\r\n var randValue = strf.repeatString(\"\", 2);\r\n ;\r\n var maxSymbolIndex = symbols.length - 1;\r\n randValue = replaceAtString(randValue, 0, symbols[getRandomInt(0, maxSymbolIndex)]);\r\n randValue = replaceAtString(randValue, 1, symbols[getRandomInt(0, maxSymbolIndex)]);\r\n //generating main ID part (64-base representation of the current value of the time ticks)\r\n var ticksNum64 = intToNum36(getNowTicks() - magicTicks);\r\n return prfx + randValue + ticksNum64;\r\n }\r\n utils.generateId = generateId;\r\n function intToNum36(value) {\r\n var targetBase = 36;\r\n var i = 14;\r\n var buffer = strf.repeatString(\"\", i);\r\n var rest = value;\r\n do {\r\n buffer = replaceAtString(buffer, i--, symbols[rest % targetBase]);\r\n rest = Math.floor(rest /= targetBase);\r\n } while (rest > 0);\r\n return strf.reverseString(buffer.trim());\r\n }\r\n function squeezeMoniker(str, maxlen) {\r\n var parts = str.split('-');\r\n var pml = 1;\r\n var ptt = maxlen;\r\n if (parts.length < maxlen) {\r\n pml = maxlen / parts.length;\r\n ptt = parts.length;\r\n }\r\n var result = \"\";\r\n for (var i = 0; i < ptt; i++) {\r\n result += squeeze(parts[i], pml);\r\n }\r\n return result;\r\n }\r\n function squeeze(str, maxlen) {\r\n var len = str.length;\r\n if (len > maxlen) {\r\n var step = len / maxlen;\r\n var result = \"\";\r\n result += str[0];\r\n var nextIndex = step;\r\n var ch = void 0;\r\n for (var i = 1; i < len; i++) {\r\n ch = str[i];\r\n if (i + 1 > nextIndex) {\r\n result += ch;\r\n nextIndex += step;\r\n }\r\n }\r\n return result;\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n function replaceAtString(str, index, value) {\r\n return str.substr(0, index) + value + str.substr(index + value.length);\r\n }\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n }\r\n function getNowTicks() {\r\n return (621355968e9 + (new Date()).getTime() * 1e4);\r\n }\r\n function safeParseInt(str) {\r\n var res = parseInt(str);\r\n if (isNaN(res))\r\n throw \"\\\"\" + str + \"\\\" is not a valid number\";\r\n return res;\r\n }\r\n function getDaysInMonth(month, year) {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n // ------------- date/time functions -------------------\r\n // TO DO: improve to process all datetime cases\r\n function strToDateTime(value, format) {\r\n if (!value || value.length == 0)\r\n return new Date();\r\n var normalizedValue = value.replace(/[^a-zA-Z0-9_]/g, '-');\r\n var normalizedFormat = format.replace(/[^a-zA-Z0-9_]/g, '-');\r\n var formatItems = normalizedFormat.split('-');\r\n var dateItems = normalizedValue.split('-');\r\n var monthIndex = formatItems.indexOf(\"MM\");\r\n var dayIndex = formatItems.indexOf(\"dd\");\r\n var yearIndex = formatItems.indexOf(\"yyyy\");\r\n var hourIndex = formatItems.indexOf(\"HH\");\r\n var minutesIndex = formatItems.indexOf(\"mm\");\r\n var secondsIndex = formatItems.indexOf(\"ss\");\r\n var today = new Date();\r\n try {\r\n var year = yearIndex > -1 && yearIndex < dateItems.length\r\n ? safeParseInt(dateItems[yearIndex])\r\n : today.getFullYear();\r\n var month = monthIndex > -1 && monthIndex < dateItems.length\r\n ? safeParseInt(dateItems[monthIndex]) - 1\r\n : today.getMonth() - 1;\r\n if (month > 11)\r\n throw '';\r\n var day = dayIndex > -1 && dayIndex < dateItems.length\r\n ? safeParseInt(dateItems[dayIndex])\r\n : today.getDate();\r\n if (day > getDaysInMonth(month, year))\r\n throw '';\r\n var hour = hourIndex > -1 && hourIndex < dateItems.length\r\n ? safeParseInt(dateItems[hourIndex])\r\n : 0;\r\n if (hour > 23)\r\n throw '';\r\n var minute = minutesIndex > -1 && minutesIndex < dateItems.length\r\n ? safeParseInt(dateItems[minutesIndex])\r\n : 0;\r\n if (minute > 59)\r\n throw '';\r\n var second = secondsIndex > -1 && secondsIndex < dateItems.length\r\n ? safeParseInt(dateItems[secondsIndex])\r\n : 0;\r\n if (second > 59)\r\n throw '';\r\n return new Date(year, month, day, hour, minute, second);\r\n }\r\n catch (_a) {\r\n throw value + \" is not a valid date.\";\r\n }\r\n }\r\n utils.strToDateTime = strToDateTime;\r\n function strToTime(str) {\r\n var timeItems = str.split(':');\r\n try {\r\n var hour = timeItems.length > 0 ? safeParseInt(timeItems[0]) : 0;\r\n if (hour > 23)\r\n throw '';\r\n var minute = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\r\n if (minute > 59)\r\n throw '';\r\n var second = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\r\n if (second > 59)\r\n throw '';\r\n return new Date(0, 0, 0, hour, minute, second);\r\n }\r\n catch (_a) {\r\n throw str + \" is not a valid time.\";\r\n }\r\n }\r\n utils.strToTime = strToTime;\r\n var DT_FORMAT_RGEX = /\\[([^\\]]+)]|y{2,4}|M{1,4}|d{1,2}|H{1,2}|h{1,2}|m{2}|s{2}|t{2}/g;\r\n /**\r\n * Returns string representation of the date/time value according to the custom format (second parameter)\r\n * The format is compatible with the one used in .NET: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings\r\n * @param date\r\n * @param format\r\n */\r\n function dateTimeToStr(date, format) {\r\n var year = date.getFullYear();\r\n var yearStr = year.toString();\r\n var month = date.getMonth() + 1;\r\n var day = date.getDate();\r\n var hour = date.getHours();\r\n var minute = date.getMinutes();\r\n var second = date.getSeconds();\r\n var hour12 = hour % 12 || 12; //the remainder of the division by 12. Or 12 if it's 0\r\n var isPm = hour > 11;\r\n var matches = {\r\n yyyy: yearStr,\r\n yy: yearStr.substring(yearStr.length - 2),\r\n MMMM: i18n.getLongMonthName(month),\r\n MMM: i18n.getShortMonthName(month),\r\n MM: (month < 10) ? '0' + month : month.toString(),\r\n M: month.toString(),\r\n dd: (day < 10) ? '0' + day : day.toString(),\r\n d: day.toString(),\r\n HH: (hour < 10) ? '0' + hour : hour.toString(),\r\n H: hour.toString(),\r\n hh: (hour12 < 10) ? '0' + hour12 : hour12.toString(),\r\n h: hour12.toString(),\r\n tt: isPm ? 'PM' : 'AM',\r\n mm: (minute < 10) ? '0' + minute : minute.toString(),\r\n ss: (second < 10) ? '0' + second : second.toString()\r\n };\r\n return format.replace(DT_FORMAT_RGEX, function (match, $1) {\r\n return $1 || matches[match];\r\n });\r\n }\r\n utils.dateTimeToStr = dateTimeToStr;\r\n /**\r\n * Converts a numeric value to the string taking into the account the decimal separator\r\n * @param value - the number to convert\r\n * @param decimalSeparator - the symbol that represents decimal separator. If not specified the function gets the one from the current locale settings.\r\n */\r\n function numberToStr(number, decimalSeparator) {\r\n decimalSeparator = decimalSeparator || i18n.getLocaleSettings().decimalSeparator;\r\n return number.toString().replace('.', decimalSeparator);\r\n }\r\n utils.numberToStr = numberToStr;\r\n})(utils || (utils = {}));\r\n//# sourceMappingURL=utils.js.map","/** Represents expression kinds.*/\r\nexport var DataKind;\r\n(function (DataKind) {\r\n /** Represents one value of some type: one constant or one attribute (field).*/\r\n DataKind[DataKind[\"Scalar\"] = 0] = \"Scalar\";\r\n /** The same as Scalar but represents only one constant value of some type.*/\r\n DataKind[DataKind[\"Const\"] = 1] = \"Const\";\r\n /** The same as Scalar but represents only one attribute.*/\r\n DataKind[DataKind[\"Attribute\"] = 2] = \"Attribute\";\r\n /** Represents a list of scalar values. */\r\n DataKind[DataKind[\"List\"] = 4] = \"List\";\r\n /** Special expression kind which represents a sub query.*/\r\n DataKind[DataKind[\"Query\"] = 5] = \"Query\";\r\n /** Special expression kind which represents a binding to parent column.*/\r\n DataKind[DataKind[\"ParentColumn\"] = 6] = \"ParentColumn\";\r\n})(DataKind || (DataKind = {}));\r\n//# sourceMappingURL=data_kind.js.map","export var QueryChangePart;\r\n(function (QueryChangePart) {\r\n QueryChangePart[QueryChangePart[\"Conditions\"] = 1] = \"Conditions\";\r\n QueryChangePart[QueryChangePart[\"Columns\"] = 2] = \"Columns\";\r\n QueryChangePart[QueryChangePart[\"SortingColumns\"] = 4] = \"SortingColumns\";\r\n QueryChangePart[QueryChangePart[\"Properties\"] = 32] = \"Properties\";\r\n QueryChangePart[QueryChangePart[\"ExtraData\"] = 64] = \"ExtraData\";\r\n QueryChangePart[QueryChangePart[\"Facets\"] = 128] = \"Facets\";\r\n QueryChangePart[QueryChangePart[\"Aggregation\"] = 256] = \"Aggregation\";\r\n QueryChangePart[QueryChangePart[\"All\"] = 511] = \"All\";\r\n})(QueryChangePart || (QueryChangePart = {}));\r\nexport var QueryChangeAction;\r\n(function (QueryChangeAction) {\r\n QueryChangeAction[QueryChangeAction[\"Add\"] = 1] = \"Add\";\r\n QueryChangeAction[QueryChangeAction[\"Modify\"] = 2] = \"Modify\";\r\n QueryChangeAction[QueryChangeAction[\"Delete\"] = 4] = \"Delete\";\r\n QueryChangeAction[QueryChangeAction[\"Activate\"] = 8] = \"Activate\";\r\n QueryChangeAction[QueryChangeAction[\"All\"] = 127] = \"All\";\r\n})(QueryChangeAction || (QueryChangeAction = {}));\r\n//# sourceMappingURL=query_events.js.map","import { DataType } from '@easydata/core';\r\nimport { i18n } from '@easydata/core';\r\nimport { FormatParser } from \"./format_parser\";\r\nimport { LinkType } from '../types/link_type';\r\nexport var equtils;\r\n(function (equtils) {\r\n /**\r\n * Adds two paths and returns the result\r\n * Correctly processes leading and trailing slashes\r\n * @param path1\r\n * @param path2\r\n */\r\n function combinePath(path1, path2) {\r\n var result = path1;\r\n if (result != null && result.length > 0) {\r\n if (result.charAt(result.length - 1) != '/')\r\n result += \"/\";\r\n result += path2;\r\n }\r\n else {\r\n result = path2;\r\n }\r\n return result;\r\n }\r\n equtils.combinePath = combinePath;\r\n /**\r\n * Converts a string to a `LinkType` value\r\n * @param str\r\n */\r\n function strToLinkType(str) {\r\n if (str == \"All\") {\r\n return LinkType.All;\r\n }\r\n else if (str == \"NotAll\") {\r\n return LinkType.NotAll;\r\n }\r\n else if (str == \"Any\") {\r\n return LinkType.Any;\r\n }\r\n else {\r\n return LinkType.None;\r\n }\r\n }\r\n equtils.strToLinkType = strToLinkType;\r\n /**\r\n * Converts a `LinkType` value to a string\r\n * @param type\r\n */\r\n function linkTypeToStr(type) {\r\n if (type === LinkType.All) {\r\n return \"All\";\r\n }\r\n else if (type === LinkType.NotAll) {\r\n return \"NotAll\";\r\n }\r\n else if (type == LinkType.Any) {\r\n return \"Any\";\r\n }\r\n else {\r\n return \"None\";\r\n }\r\n }\r\n equtils.linkTypeToStr = linkTypeToStr;\r\n /**\r\n * Parses the operator's format string and returns a list of tokens\r\n * @param operator\r\n */\r\n function parseOperatorFormat(operator) {\r\n var format = i18n.getText('Operators', operator.id, 'format');\r\n if (!format) {\r\n format = i18n.getText('Operators', operator.id, 'displayFormat');\r\n }\r\n if (!format) {\r\n format = operator.displayFormat;\r\n }\r\n var parser = new FormatParser(format);\r\n return parser.parse();\r\n }\r\n equtils.parseOperatorFormat = parseOperatorFormat;\r\n //----------- value converstion utils --------------\r\n /**\r\n * Converts a value from one DataType to another\r\n * @param value\r\n * @param fromDataType - the original data type\r\n * @param toDataType - the data type we want to get\r\n */\r\n function convertValue(value, fromDataType, toDataType) {\r\n switch (toDataType) {\r\n case DataType.String:\r\n return value;\r\n case (DataType.Autoinc, DataType.Byte, DataType.Int32, DataType.Int64, DataType.Word):\r\n var resInt = parseInt(value);\r\n return isNaN(resInt) ? '' : resInt.toString();\r\n case (DataType.Currency, DataType.Float):\r\n var resFloat = parseFloat(value);\r\n return isNaN(resFloat) ? '' : resFloat.toString();\r\n default:\r\n return '';\r\n }\r\n }\r\n equtils.convertValue = convertValue;\r\n})(equtils || (equtils = {}));\r\n//# sourceMappingURL=utils.js.map","export var FacetType;\r\n(function (FacetType) {\r\n FacetType[\"DataGrid\"] = \"DATA_GRID\";\r\n FacetType[\"Chart\"] = \"CHART\";\r\n FacetType[\"PivotTable\"] = \"PIVOT_TABLE\";\r\n})(FacetType || (FacetType = {}));\r\n//# sourceMappingURL=facet_type.js.map","/** Represents type of linking of conditions in group (predicate).*/\r\nexport var LinkType;\r\n(function (LinkType) {\r\n /**\r\n * None of the conditions must be truth (all must be false).\r\n * In SQL it will look like: `NOT (Condition1 OR Condition2 OR ...)`.\r\n */\r\n LinkType[LinkType[\"None\"] = 0] = \"None\";\r\n /** At least one condition must be truth. In SQL they are connected by `OR` operator.*/\r\n LinkType[LinkType[\"Any\"] = 1] = \"Any\";\r\n /**\r\n * Not all conditions must be truth (at least one must false).\r\n * In SQL it will look like: `NOT(Condition1 AND Condition2 AND ...)`.\r\n */\r\n LinkType[LinkType[\"NotAll\"] = 2] = \"NotAll\";\r\n /** All conditions must be truth, in result SQL they are connected by `AND` operator;*/\r\n LinkType[LinkType[\"All\"] = 3] = \"All\";\r\n})(LinkType || (LinkType = {}));\r\n//# sourceMappingURL=link_type.js.map","import { DataType } from '../types/data_type';\r\nimport { utils } from '../utils/utils';\r\n/**\r\n * Contains internatialization functionality.\r\n */\r\nexport var i18n;\r\n(function (i18n) {\r\n var englishUSLocaleSettings = {\r\n shortDateFormat: 'MM/dd/yyyy',\r\n longDateFormat: 'dd MMM, yyyy',\r\n editDateFormat: 'MM/dd/yyyy',\r\n shortTimeFormat: 'HH:mm',\r\n editTimeFormat: 'HH:mm',\r\n longTimeFormat: 'HH:mm:ss',\r\n shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n longMonthNames: ['January', 'February', 'March', 'April', 'May', 'June',\r\n 'July', 'August', 'September', 'October', 'November', 'December'],\r\n shortWeekDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n longWeekDayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n decimalSeparator: '.',\r\n currency: 'USD'\r\n };\r\n var defaultLocale = {\r\n localeId: 'en-US',\r\n englishName: 'English',\r\n displayName: 'English',\r\n texts: {\r\n ButtonOK: 'OK',\r\n ButtonCancel: 'Cancel',\r\n Yes: 'Yes',\r\n No: 'No',\r\n True: 'True',\r\n False: 'False'\r\n },\r\n settings: englishUSLocaleSettings\r\n };\r\n var allLocales = {\r\n 'en-US': defaultLocale\r\n };\r\n var currentLocale;\r\n var mappers = [];\r\n function mapInfo(info) {\r\n for (var _i = 0, mappers_1 = mappers; _i < mappers_1.length; _i++) {\r\n var mapper = mappers_1[_i];\r\n mapper(info);\r\n }\r\n }\r\n function addMapper(mapper) {\r\n mappers.push(mapper);\r\n }\r\n i18n.addMapper = addMapper;\r\n /**\r\n * Gets added locales with their names.\r\n * @returns The locales.\r\n */\r\n function getLocales() {\r\n var result = [];\r\n for (var locale in allLocales) {\r\n result.push({\r\n locale: locale,\r\n englishName: allLocales[locale].englishName,\r\n displayName: allLocales[locale].displayName\r\n });\r\n }\r\n return result.sort(function (a, b) {\r\n if (a.englishName > b.englishName) {\r\n return 1;\r\n }\r\n else if (a.englishName === b.englishName) {\r\n return 0;\r\n }\r\n return -1;\r\n });\r\n }\r\n i18n.getLocales = getLocales;\r\n /**\r\n * Gets the current locale ID.\r\n * @returns The locale.\r\n */\r\n function getCurrentLocale() {\r\n return currentLocale.localeId;\r\n }\r\n i18n.getCurrentLocale = getCurrentLocale;\r\n /**\r\n * Sets the curent locale.\r\n * @deprecated Use setCurrentLocale instead\r\n * @param l The locale.\r\n */\r\n function setLocale(l) {\r\n console.warn('This method is deprecated. Use setCurrentLocale instead');\r\n setCurrentLocale(l);\r\n }\r\n i18n.setLocale = setLocale;\r\n /**\r\n * Sets the curent locale.\r\n * @param localeId The locale.\r\n */\r\n function setCurrentLocale(localeId) {\r\n var newLocale = allLocales[localeId];\r\n if (newLocale) {\r\n utils.assignDeep(currentLocale, newLocale);\r\n }\r\n else {\r\n currentLocale.englishName = localeId;\r\n currentLocale.displayName = localeId;\r\n currentLocale.texts = utils.assignDeep({}, defaultLocale.texts);\r\n }\r\n currentLocale.localeId = localeId;\r\n }\r\n i18n.setCurrentLocale = setCurrentLocale;\r\n /**\r\n * Returns localized text by the key defined in parameter.\r\n * Here we get the text of the resource string assigned to CmdClickToAddCondition key:\r\n *\r\n ```\r\n const text = i18n.getText('CmdClickToAddCondition')\r\n ```\r\n * @param args The keys of the resource string.\r\n * @returns Text of the resource defined by key or null if the key is not found\r\n *\r\n */\r\n function getText() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var textsObj = currentLocale.texts;\r\n var resText = '';\r\n if (args && args.length) {\r\n var argLength = args.length;\r\n for (var i = 0; i < argLength; i++) {\r\n resText = textsObj[args[i]];\r\n if (typeof resText === 'object') {\r\n textsObj = resText;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return resText;\r\n }\r\n i18n.getText = getText;\r\n function getLocaleSettings() {\r\n return currentLocale.settings;\r\n }\r\n i18n.getLocaleSettings = getLocaleSettings;\r\n function getOneLocaleSetting(key) {\r\n return currentLocale.settings[key];\r\n }\r\n i18n.getOneLocaleSetting = getOneLocaleSetting;\r\n function getShortMonthName(monthNum) {\r\n var settings = getLocaleSettings();\r\n if (monthNum > 0 && monthNum < 13) {\r\n return settings.shortMonthNames[monthNum - 1];\r\n }\r\n else {\r\n throw 'Wrong month number: ' + monthNum;\r\n }\r\n }\r\n i18n.getShortMonthName = getShortMonthName;\r\n function getLongMonthName(monthNum) {\r\n var settings = getLocaleSettings();\r\n if (monthNum > 0 && monthNum < 13) {\r\n return settings.longMonthNames[monthNum - 1];\r\n }\r\n else {\r\n throw 'Wrong month number: ' + monthNum;\r\n }\r\n }\r\n i18n.getLongMonthName = getLongMonthName;\r\n function getShortWeekDayName(dayNum) {\r\n var settings = getLocaleSettings();\r\n if (dayNum > 0 && dayNum < 8) {\r\n return settings.shortWeekDayNames.length >= dayNum\r\n ? settings.shortWeekDayNames[dayNum - 1]\r\n : dayNum.toString();\r\n }\r\n else {\r\n throw 'Wrong month number: ' + dayNum;\r\n }\r\n }\r\n i18n.getShortWeekDayName = getShortWeekDayName;\r\n function getLongWeekDayName(dayNum) {\r\n var settings = getLocaleSettings();\r\n if (dayNum > 0 && dayNum < 8) {\r\n return settings.longWeekDayNames.length >= dayNum\r\n ? settings.longWeekDayNames[dayNum - 1]\r\n : dayNum.toString();\r\n }\r\n else {\r\n throw 'Wrong month number: ' + dayNum;\r\n }\r\n }\r\n i18n.getLongWeekDayName = getLongWeekDayName;\r\n /**\r\n * Updates the locale settings (date/time formats, separators, etc) for the specified locale.\r\n * @param settingsToUpdate a LocaleSettings object\r\n */\r\n function updateLocaleSettings(settingsToUpdate) {\r\n if (!currentLocale.settings) {\r\n currentLocale.settings = utils.assignDeep({}, englishUSLocaleSettings);\r\n }\r\n currentLocale.settings = utils.assignDeep(currentLocale.settings, settingsToUpdate);\r\n }\r\n i18n.updateLocaleSettings = updateLocaleSettings;\r\n /**\r\n * Updates the texts for the current locale\r\n * @param texts A plain JS object that contains textual resources\r\n */\r\n function updateLocaleTexts(texts) {\r\n if (typeof texts !== 'object') {\r\n console.error('Wrong parameter type in updateLocaleTexts function call.' +\r\n 'The first parameter (localeId) is not necessary. Use updateLocaleTexts(texts) instead');\r\n return;\r\n }\r\n mapInfo({ localeId: currentLocale.localeId, texts: texts });\r\n utils.assignDeep(currentLocale.texts, texts);\r\n }\r\n i18n.updateLocaleTexts = updateLocaleTexts;\r\n function updateDefaultTexts(texts) {\r\n for (var localeId in allLocales) {\r\n var locale = allLocales[localeId];\r\n locale.texts = utils.assignDeep({}, texts, locale.texts);\r\n }\r\n currentLocale.texts = utils.assignDeep({}, texts, currentLocale.texts);\r\n }\r\n i18n.updateDefaultTexts = updateDefaultTexts;\r\n /**\r\n * Updates the information for the specified locale.\r\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\r\n * If the locale does exist yet - it will be added\r\n * @param localeInfo a LocaleInfo object that contains the locale settings and textual resources\r\n */\r\n function updateLocaleInfo(localeId, localeData) {\r\n mapInfo(localeData);\r\n var localeInfoToUpdate = currentLocale;\r\n if (localeId) {\r\n if (!localeData.localeId) {\r\n localeData.localeId = localeId;\r\n }\r\n localeInfoToUpdate = allLocales[localeId];\r\n if (!localeInfoToUpdate) {\r\n localeInfoToUpdate = utils.assignDeep({}, defaultLocale);\r\n allLocales[localeId] = localeInfoToUpdate;\r\n }\r\n }\r\n utils.assignDeep(localeInfoToUpdate, localeData);\r\n }\r\n i18n.updateLocaleInfo = updateLocaleInfo;\r\n /**\r\n * Adds the locale.\r\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\r\n * If the locale does exist yet - it will be created\r\n * @param localeInfo - a LocaleInfo object that contains the locale settings and textual resources\r\n */\r\n function addLocale(localeId, localeInfo) {\r\n updateLocaleInfo(localeId, localeInfo);\r\n }\r\n i18n.addLocale = addLocale;\r\n /**\r\n * Overwrites some locale settings (date/time formats) with the formats used in browser's current language\r\n */\r\n function determineSettingsByLocale(localeId) {\r\n var now = new Date(2020, 5, 7, 19, 34, 56, 88);\r\n var dateOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\r\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\r\n var dateStr = now.toLocaleDateString(localeId, dateOptions);\r\n var timeStr = now.toLocaleTimeString(localeId, timeOptions);\r\n var dateFormat = dateStr\r\n .replace('07', 'dd')\r\n .replace('7', 'd')\r\n .replace('06', 'MM')\r\n .replace('6', 'M')\r\n .replace('2020', 'yyyy')\r\n .replace('20', 'yy');\r\n var timeFormat = timeStr\r\n .replace('19', 'HH')\r\n .replace('07', 'hh')\r\n .replace('7', 'h')\r\n .replace('34', 'mm')\r\n .replace('56', 'ss')\r\n .replace('PM', 'tt');\r\n if (!currentLocale.settings) {\r\n currentLocale.settings = {};\r\n }\r\n var localeSettings = {\r\n shortDateFormat: dateFormat,\r\n shortTimeFormat: timeFormat\r\n };\r\n updateLocaleSettings(localeSettings);\r\n }\r\n function loadBrowserLocaleSettings() {\r\n var lang = typeof navigator === 'object' ? navigator.language : undefined;\r\n determineSettingsByLocale(lang);\r\n }\r\n function resetLocales() {\r\n if (!currentLocale) {\r\n currentLocale = utils.assignDeep({}, defaultLocale);\r\n loadBrowserLocaleSettings();\r\n }\r\n }\r\n i18n.resetLocales = resetLocales;\r\n function dateTimeToStr(dateTime, dataType, format) {\r\n if (format) {\r\n if (format == 'd') {\r\n format = buildShortDateTimeFormat(DataType.Date);\r\n }\r\n else if (format == 'D') {\r\n format = buildLongDateTimeFormat(DataType.Date);\r\n }\r\n else if (format == 'f') {\r\n format = buildShortDateTimeFormat(DataType.DateTime);\r\n }\r\n else if (format == 'F') {\r\n format = buildLongDateTimeFormat(DataType.DateTime);\r\n }\r\n }\r\n else {\r\n format = buildShortDateTimeFormat(dataType);\r\n }\r\n return utils.dateTimeToStr(dateTime, format);\r\n }\r\n i18n.dateTimeToStr = dateTimeToStr;\r\n function buildShortDateTimeFormat(dataType) {\r\n var localeSettings = getLocaleSettings();\r\n var format;\r\n switch (dataType) {\r\n case DataType.Date:\r\n format = localeSettings.shortDateFormat;\r\n break;\r\n case DataType.Time:\r\n format = localeSettings.shortTimeFormat;\r\n break;\r\n default:\r\n format = localeSettings.shortDateFormat + ' ' + localeSettings.shortTimeFormat;\r\n break;\r\n }\r\n return format;\r\n }\r\n function buildLongDateTimeFormat(dataType) {\r\n var localeSettings = getLocaleSettings();\r\n var format;\r\n switch (dataType) {\r\n case DataType.Date:\r\n format = localeSettings.longDateFormat;\r\n break;\r\n case DataType.Time:\r\n format = localeSettings.longTimeFormat;\r\n break;\r\n default:\r\n format = localeSettings.longDateFormat + ' ' + localeSettings.longTimeFormat;\r\n break;\r\n }\r\n return format;\r\n }\r\n function numberToStr(number, format) {\r\n if (format && format.length > 0) {\r\n var type = format.charAt(0).toUpperCase();\r\n if (type === 'S') {\r\n return formatWithSequence(number, format.slice(1));\r\n }\r\n else if (['D', 'F', 'C'].indexOf(type) >= 0) {\r\n var locale = getCurrentLocale();\r\n return number.toLocaleString(locale, getNumberFormatOptions(format));\r\n }\r\n else {\r\n return convertWithMask(Math.trunc(number), format);\r\n }\r\n }\r\n var localeSettings = getLocaleSettings();\r\n return utils.numberToStr(number, localeSettings.decimalSeparator);\r\n }\r\n i18n.numberToStr = numberToStr;\r\n function booleanToStr(bool, format) {\r\n if (format && format.length > 0) {\r\n var type = format.charAt(0).toUpperCase();\r\n if (type === 'S') {\r\n var values = format.slice(1).split('|');\r\n if (values.length > 1) {\r\n var value = values[(bool) ? 1 : 0];\r\n return i18n.getText(value) || value;\r\n }\r\n }\r\n }\r\n return \"\" + bool;\r\n }\r\n i18n.booleanToStr = booleanToStr;\r\n var cachedSequenceFormats = {};\r\n function formatWithSequence(number, format) {\r\n if (!cachedSequenceFormats[format]) {\r\n // parse and save in cache format values \r\n var values_2 = format.split('|')\r\n .filter(function (v) { return v.length > 0; })\r\n .map(function (v) { return v.split('='); });\r\n cachedSequenceFormats[format] = {};\r\n if (values_2.length > 0) {\r\n if (values_2[0].length > 1) {\r\n for (var _i = 0, values_1 = values_2; _i < values_1.length; _i++) {\r\n var value = values_1[_i];\r\n cachedSequenceFormats[format][Number.parseInt(value[1])] = value[0];\r\n }\r\n }\r\n else {\r\n values_2.forEach(function (value, index) {\r\n cachedSequenceFormats[format][index] = value[0];\r\n });\r\n }\r\n }\r\n }\r\n var values = cachedSequenceFormats[format];\r\n if (values[number] !== undefined) {\r\n var value = values[number];\r\n return i18n.getText(value) || value;\r\n }\r\n return number.toString();\r\n }\r\n function convertWithMask(number, mask) {\r\n var value = number.toString();\r\n var result = '';\r\n var index = value.length - 1;\r\n for (var i = mask.length - 1; i >= 0; i--) {\r\n var ch = mask.charAt(i);\r\n if (ch === '#' || ch === '0') {\r\n if (index >= 0) {\r\n result += value.charAt(index);\r\n index--;\r\n }\r\n else {\r\n if (ch === '0') {\r\n result += 0;\r\n }\r\n }\r\n }\r\n else {\r\n result += ch;\r\n }\r\n }\r\n return result.split('').reverse().join('');\r\n }\r\n function getNumberFormatOptions(format) {\r\n var localeSettings = getLocaleSettings();\r\n var type = format[0].toUpperCase();\r\n var digits = (format.length > 1)\r\n ? Number.parseInt(format.slice(1))\r\n : type == 'D' ? 1 : 2;\r\n switch (type) {\r\n case 'D':\r\n return {\r\n style: 'decimal',\r\n useGrouping: false,\r\n minimumIntegerDigits: digits\r\n };\r\n case 'C':\r\n return {\r\n style: 'currency',\r\n currency: localeSettings.currency,\r\n minimumFractionDigits: digits\r\n };\r\n default:\r\n return {\r\n style: 'decimal',\r\n minimumFractionDigits: digits,\r\n maximumFractionDigits: digits\r\n };\r\n }\r\n }\r\n})(i18n || (i18n = {}));\r\n//# sourceMappingURL=i18n.js.map","import { browserUtils } from './browser_utils';\r\n/**\r\n * Wraps all the elements inside \"parent\" by \"wrapper\" element\r\n * @param parent The element to add wrapper to.\r\n * @param wrapper The element that will wrap child elements.\r\n */\r\nexport function wrapInner(parent, wrapper) {\r\n parent.appendChild(wrapper);\r\n while (parent.firstChild !== wrapper) {\r\n wrapper.appendChild(parent.firstChild);\r\n }\r\n}\r\n/**\r\n * Creates ands adds a new [[HTMLElement]] to \"parent\"\r\n * @param parent The element to add new element to.\r\n * @param tag Html tag of the new element.\r\n * @param options The options. In particular, options.cssClass sets the new element class.\r\n * @returns New element.\r\n */\r\nexport function addElement(parent, tag, options) {\r\n var element = document.createElement(tag);\r\n var opts = options || {};\r\n if (opts.cssClass) {\r\n element.className = opts.cssClass;\r\n }\r\n parent.appendChild(element);\r\n return element;\r\n}\r\n/**\r\n * Adds css class to the html element.\r\n * @param element The element to add css class to.\r\n * @param className The name of the css class to be added.\r\n */\r\nexport function addCssClass(element, className) {\r\n element.className = (element.className)\r\n ? element.className + ' ' + className\r\n : className;\r\n}\r\n/**\r\n * Hides the html element.\r\n * @param element The element to be hidden.\r\n */\r\nexport function hideElement(element) {\r\n element.style.display = 'none';\r\n}\r\n/**\r\n * Shows the html element.\r\n * @param element The element to be shown.\r\n * @param display The value of \"display\" style to be set. Default value is \"block\".\r\n */\r\nexport function showElement(element, display) {\r\n if (!display) {\r\n display = '';\r\n }\r\n element.style.display = display;\r\n}\r\n/**\r\n * Hides the \"first\" element and shows the \"second\".\r\n * @param first The element to be hidden.\r\n * @param second The element to be shown.\r\n * @param options The options. The following options are applied:\r\n * - display - the value of \"display\" style to be set. Default value is \"block\"\r\n * - duration - the duration of fading in and out\r\n * - complete - the callback to be called when toggle is complete\r\n */\r\nexport function toggleVisibility(first, second, options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.display) {\r\n options.display = '';\r\n }\r\n if (!options.duration) {\r\n options.duration = 200;\r\n }\r\n //TODO: later we need to make it fading in and out\r\n hideElement(first);\r\n showElement(second, options.display);\r\n if (options.complete) {\r\n options.complete();\r\n }\r\n}\r\n/**\r\n * Checks if element is visible\r\n * @param element The element to check.\r\n * @returns `true` if visible, otherwise - `false`.\r\n */\r\nexport function isVisible(element) {\r\n return element.style.display != 'none'\r\n && element.offsetWidth != 0\r\n && element.offsetHeight != 0;\r\n}\r\nexport function createBrowserEvent(eventName) {\r\n var event;\r\n if (typeof (Event) === 'function') {\r\n event = new Event(eventName);\r\n }\r\n else {\r\n event = document.createEvent('Event');\r\n event.initEvent(eventName, true, true);\r\n }\r\n return event;\r\n}\r\nexport function getViewportSize() {\r\n var width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n var height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n}\r\nexport function getDocSize() {\r\n if (browserUtils.IsIE())\r\n return getWinSize();\r\n var width = Math.max(document.documentElement.clientWidth, document.body.clientWidth || 0);\r\n var height = Math.max(document.documentElement.clientHeight, document.body.clientHeight || 0);\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n}\r\nexport function getScrollPos() {\r\n var body = document.body;\r\n var docElem = document.documentElement;\r\n return {\r\n top: window.pageYOffset || docElem.scrollTop || body.scrollTop,\r\n left: window.pageXOffset || docElem.scrollLeft || body.scrollLeft\r\n };\r\n}\r\nexport function getElementAbsolutePos(element) {\r\n var res = { x: 0, y: 0 };\r\n if (element !== null) {\r\n var position = offset(element);\r\n res = { x: position.left, y: position.top };\r\n }\r\n return res;\r\n}\r\nfunction offset(element) {\r\n var defaultBoundingClientRect = { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\r\n var box;\r\n try {\r\n box = element.getBoundingClientRect();\r\n }\r\n catch (_a) {\r\n box = defaultBoundingClientRect;\r\n }\r\n var body = document.body;\r\n var docElem = document.documentElement;\r\n var scollPos = getScrollPos();\r\n var scrollTop = scollPos.top;\r\n var scrollLeft = scollPos.left;\r\n var clientTop = docElem.clientTop || body.clientTop || 0;\r\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n var top = box.top + scrollTop - clientTop;\r\n var left = box.left + scrollLeft - clientLeft;\r\n return { top: Math.round(top), left: Math.round(left) };\r\n}\r\nexport function getWinSize() {\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n };\r\n}\r\nexport function slideDown(target, duration, callback) {\r\n target.style.removeProperty('display');\r\n var display = window.getComputedStyle(target).display;\r\n if (display === 'none')\r\n display = 'block';\r\n target.style.display = display;\r\n var height = target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.height = 0 + 'px';\r\n target.style.paddingTop = 0 + 'px';\r\n target.style.paddingBottom = 0 + 'px';\r\n target.style.marginTop = 0 + 'px';\r\n target.style.marginBottom = 0 + 'px';\r\n target.offsetHeight;\r\n target.style.boxSizing = 'border-box';\r\n target.style.transitionProperty = \"height, margin, padding\";\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.height = height + 'px';\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n window.setTimeout(function () {\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n target.style.removeProperty('box-sizing');\r\n if (callback) {\r\n callback();\r\n }\r\n }, duration);\r\n}\r\nexport function slideUp(target, duration, callback) {\r\n target.style.transitionProperty = 'height, margin, padding';\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.boxSizing = 'border-box';\r\n target.style.height = target.offsetHeight + 'px';\r\n target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.height = 0 + 'px';\r\n target.style.paddingTop = 0 + 'px';\r\n target.style.paddingBottom = 0 + 'px';\r\n target.style.marginTop = 0 + 'px';\r\n target.style.marginBottom = 0 + 'px';\r\n window.setTimeout(function () {\r\n target.style.display = 'none';\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n target.style.removeProperty('box-sizing');\r\n if (callback) {\r\n callback();\r\n }\r\n }, duration);\r\n}\r\nexport var eqCssPrefix = 'eqjs';\r\nexport var eqCssMobile = 'eqjs-mobile';\r\n//# sourceMappingURL=ui-utils.js.map","/**\r\n * Represents a type of condition.\r\n * Current we have 2 possible types: a simple condition or a predicate - a group of conditions\r\n*/\r\nexport var CondTag;\r\n(function (CondTag) {\r\n /** An unknown type of condition (just in case).*/\r\n CondTag[CondTag[\"Unknown\"] = 0] = \"Unknown\";\r\n /** A simple condition (e.g. SomeField > SomeValue).*/\r\n CondTag[CondTag[\"Simple\"] = 1] = \"Simple\";\r\n /** A predicate (a group of conditions).*/\r\n CondTag[CondTag[\"Group\"] = 51] = \"Group\";\r\n})(CondTag || (CondTag = {}));\r\n//# sourceMappingURL=cond_tag.js.map","import { DataType } from '@easydata/core';\r\nimport { equtils } from '../utils/utils';\r\nimport { DataKind } from '../types/data_kind';\r\nimport { ExprTag } from '../types/expr_tag';\r\n/**\r\n * Represents expression object.\r\n */\r\nvar Expression = /** @class */ (function () {\r\n /** The default constructor. */\r\n function Expression(parent) {\r\n var _this = this;\r\n this.parent = parent;\r\n /** The tag. */\r\n this.tag = ExprTag.Constant;\r\n /** The data kind. */\r\n this.kind = DataKind.Scalar;\r\n /** The data type. */\r\n this.dataType = DataType.Unknown;\r\n /** The value. */\r\n this._value = ''; //DO NOT forget remove any\r\n /**\r\n * The distinct option. (e.g `SELECT DISTINCT`)\r\n */\r\n this.distinct = false;\r\n this._isDefaultValue = false;\r\n this.getText = function () { return _this.text || _this._value; };\r\n this.args = new Array();\r\n }\r\n Expression.prototype.getParent = function () {\r\n return this.parent;\r\n };\r\n Expression.prototype.getModel = function () {\r\n return this.parent.getQuery().getModel();\r\n };\r\n /**\r\n * Loads expression from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param data The JSON representation object.\r\n */\r\n Expression.prototype.loadFromData = function (model, data) {\r\n if (data) {\r\n this.tag = data.tag;\r\n if (data.val) {\r\n this._value = data.val;\r\n this.text = data.txt;\r\n }\r\n else if (data.id) {\r\n this.kind = DataKind.Attribute;\r\n this._value = data.id;\r\n this.text = data.txt;\r\n }\r\n if (typeof data.dtype !== 'undefined') {\r\n this.dataType = data.dtype;\r\n }\r\n if (this.tag == ExprTag.EntityAttribute\r\n || this.tag == ExprTag.ParentEntityAttribute) {\r\n this.kind = DataKind.Attribute;\r\n //We don't load other info for EntityAttr\r\n }\r\n else {\r\n if (typeof data.kind !== 'undefined') {\r\n this.kind = data.kind;\r\n }\r\n if (data.query) {\r\n this.subQuery = this.parent.getQuery().createSubQuery();\r\n this.subQuery.loadFromDataOrJson(data.query);\r\n }\r\n if (typeof data.distinct !== 'undefined') {\r\n this.distinct = data.distinct;\r\n }\r\n if (data.func) {\r\n this.func = data.func;\r\n if (data.args) {\r\n for (var i = 0; i < data.args.length; i++) {\r\n var arg = new Expression(this.parent);\r\n arg.loadFromData(model, data.args[i]);\r\n this.args.push(arg);\r\n }\r\n }\r\n }\r\n if (data.sql) {\r\n this.sql = data.sql;\r\n this.baseAttrId = data.baseAttrId;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Saves expression from JSON representation object.\r\n * @returns The JSON representation object.\r\n */\r\n Expression.prototype.saveToData = function () {\r\n var obj = {\r\n tag: this.tag\r\n };\r\n obj.dtype = this.dataType;\r\n //Do not save other info for EntityAttr\r\n if (this.tag == ExprTag.EntityAttribute || this.tag == ExprTag.ParentEntityAttribute) {\r\n if (this._value) {\r\n obj.id = this._value;\r\n obj.val = this._value;\r\n }\r\n if (this.text) {\r\n obj.txt = this.text;\r\n }\r\n //Do not save other info for EntityAttr\r\n }\r\n else {\r\n if (this.subQuery) {\r\n obj.query = this.subQuery.toJSONData();\r\n }\r\n if (typeof this.kind !== \"undefined\") {\r\n obj.kind = this.kind;\r\n }\r\n if (this._value) {\r\n obj.val = this._value;\r\n }\r\n if (this.text) {\r\n obj.txt = this.text;\r\n }\r\n if (this.distinct) {\r\n obj.distinct = this.distinct;\r\n }\r\n if (this.func) {\r\n obj.func = this.func;\r\n obj.args = [];\r\n for (var i = 0; i < this.args.length; i++) {\r\n obj.args.push(this.args[i].saveToData());\r\n }\r\n }\r\n if (this.sql) {\r\n obj.sql = this.sql;\r\n obj.baseAttrId = this.baseAttrId;\r\n }\r\n }\r\n return obj;\r\n };\r\n Expression.prototype.getIndex = function () {\r\n return this.parent.getExpressionIndex(this);\r\n };\r\n Object.defineProperty(Expression.prototype, \"value\", {\r\n get: function () {\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Expression.prototype.setValue = function (val, silent) {\r\n if (silent === void 0) { silent = false; }\r\n this.setContent(val, undefined, silent);\r\n };\r\n Expression.prototype.setContent = function (val, txt, silent) {\r\n if (silent === void 0) { silent = false; }\r\n var oldValue = this.value;\r\n if (this.kind == DataKind.Attribute && val) {\r\n var attr = this.getModel().getAttributeById(val);\r\n if (!attr) {\r\n throw \"No such entity attribute:\" + val;\r\n }\r\n this.dataType = attr.dataType;\r\n }\r\n this._value = val;\r\n if (typeof txt !== 'undefined') {\r\n this.text = txt;\r\n }\r\n else if (typeof this.text !== 'undefined') {\r\n this.text = val;\r\n }\r\n this._isDefaultValue = false;\r\n if (!silent) {\r\n this.parent.expressionChanged(this, oldValue);\r\n }\r\n };\r\n Expression.prototype.isEmpty = function () {\r\n return !(this.text || this._value);\r\n };\r\n Expression.prototype.hasText = function () {\r\n return this.text && this.text.length > 0;\r\n };\r\n Expression.prototype.tryCopyValueFrom = function (expr) {\r\n if (this.kind == expr.kind) {\r\n if (this.dataType == expr.dataType) {\r\n this.setContent(expr.value.length ? expr.value : this._value, (expr.text && expr.text.length) ? expr.text : this.text, true);\r\n }\r\n else {\r\n var val = equtils.convertValue(expr.value, expr.dataType, this.dataType);\r\n this.setContent(val.length ? val : this._value, (expr.text && expr.text.length) ? expr.text : this.text, true);\r\n }\r\n this.subQuery = expr.subQuery;\r\n this.sql = expr.sql;\r\n this.baseAttrId = expr.baseAttrId;\r\n }\r\n else if (!this._isDefaultValue) {\r\n this.setContent('', '', true);\r\n this.subQuery = null;\r\n this.sql = null;\r\n this.baseAttrId = null;\r\n }\r\n };\r\n return Expression;\r\n}());\r\nexport { Expression };\r\n//# sourceMappingURL=expression.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { ValueEditor } from '@easydata/core';\r\n/**\r\n * Represents a value editor.\r\n */\r\nvar EqValueEditor = /** @class */ (function (_super) {\r\n __extends(EqValueEditor, _super);\r\n /** The default constructor. */\r\n function EqValueEditor() {\r\n return _super.call(this) || this;\r\n }\r\n /**\r\n * Loads value editor from its JSON representation object.\r\n * @param data The JSON representation object.\r\n */\r\n EqValueEditor.prototype.loadFromData = function (data) {\r\n _super.prototype.loadFromData.call(this, data);\r\n if (data) {\r\n if (data.sql) {\r\n this.statement = data.sql;\r\n }\r\n if (data.extraParams) {\r\n this.extraParams = data.extraParams;\r\n }\r\n }\r\n };\r\n return EqValueEditor;\r\n}(ValueEditor));\r\nexport { EqValueEditor };\r\n//# sourceMappingURL=value_editor.js.map","import { utils, ColumnAlignment } from '@easydata/core';\r\nimport { CellRendererType } from \"./easy_grid_cell_renderer\";\r\nvar DEFAULT_WIDTH_STRING = 250;\r\nvar ROW_NUM_WIDTH = 60;\r\nexport var GridColumnAlign;\r\n(function (GridColumnAlign) {\r\n GridColumnAlign[GridColumnAlign[\"NONE\"] = 1] = \"NONE\";\r\n GridColumnAlign[GridColumnAlign[\"LEFT\"] = 2] = \"LEFT\";\r\n GridColumnAlign[GridColumnAlign[\"CENTER\"] = 3] = \"CENTER\";\r\n GridColumnAlign[GridColumnAlign[\"RIGHT\"] = 4] = \"RIGHT\";\r\n})(GridColumnAlign || (GridColumnAlign = {}));\r\nfunction MapAlignment(alignment) {\r\n switch (alignment) {\r\n case ColumnAlignment.Left:\r\n return GridColumnAlign.LEFT;\r\n case ColumnAlignment.Center:\r\n return GridColumnAlign.CENTER;\r\n case ColumnAlignment.Right:\r\n return GridColumnAlign.RIGHT;\r\n default:\r\n return GridColumnAlign.NONE;\r\n }\r\n}\r\nvar GridColumn = /** @class */ (function () {\r\n function GridColumn(column, grid, isRowNum) {\r\n if (isRowNum === void 0) { isRowNum = false; }\r\n this._label = null;\r\n this._description = null;\r\n //public left: number;\r\n this.align = GridColumnAlign.NONE;\r\n this.isVisible = true;\r\n this.isRowNum = false;\r\n this.dataColumn = column;\r\n this.grid = grid;\r\n var widthOptions = grid.options.columnWidths || {};\r\n if (column) {\r\n if (column.style.alignment) {\r\n this.align = MapAlignment(column.style.alignment);\r\n }\r\n this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;\r\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);\r\n this._description = column.description;\r\n }\r\n else if (isRowNum) {\r\n this.isRowNum = true;\r\n this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;\r\n this._label = '';\r\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(CellRendererType.NUMBER);\r\n }\r\n if (grid && grid.options && grid.options.onGetCellRenderer) {\r\n this.cellRenderer = grid.options.onGetCellRenderer(this, this.cellRenderer) || this.cellRenderer;\r\n }\r\n }\r\n Object.defineProperty(GridColumn.prototype, \"label\", {\r\n get: function () {\r\n return this._label ? this._label : this.isRowNum ? '' : this.dataColumn.label;\r\n },\r\n set: function (value) {\r\n this._label = this.label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(GridColumn.prototype, \"description\", {\r\n /** Get column description. */\r\n get: function () {\r\n return this._description;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GridColumn.prototype, \"type\", {\r\n get: function () {\r\n return this.dataColumn ? this.dataColumn.type : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GridColumn;\r\n}());\r\nexport { GridColumn };\r\nvar GridColumnList = /** @class */ (function () {\r\n function GridColumnList(columnList, grid) {\r\n this.items = [];\r\n this.grid = grid;\r\n this.sync(columnList);\r\n }\r\n GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {\r\n if (hasRowNumCol === void 0) { hasRowNumCol = true; }\r\n this.clear();\r\n var rowNumCol = new GridColumn(null, this.grid, true);\r\n this.add(rowNumCol);\r\n if (!hasRowNumCol) {\r\n rowNumCol.isVisible = false;\r\n }\r\n if (columnList) {\r\n for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {\r\n var column = _a[_i];\r\n var col = new GridColumn(column, this.grid);\r\n if (this.grid.options.onSyncGridColumn) {\r\n this.grid.options.onSyncGridColumn(col);\r\n }\r\n this.add(col);\r\n }\r\n }\r\n };\r\n Object.defineProperty(GridColumnList.prototype, \"count\", {\r\n get: function () {\r\n return this.items.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n GridColumnList.prototype.add = function (col) {\r\n var index = this.items.length;\r\n this.items.push(col);\r\n return index;\r\n };\r\n GridColumnList.prototype.put = function (index, col) {\r\n if (index >= 0 && index < this.items.length) {\r\n this.items[index] = col;\r\n }\r\n };\r\n GridColumnList.prototype.move = function (col, newIndex) {\r\n var oldIndex = this.items.indexOf(col);\r\n if (oldIndex >= 0 && oldIndex != newIndex)\r\n utils.moveArrayItem(this.items, oldIndex, newIndex);\r\n };\r\n GridColumnList.prototype.get = function (index) {\r\n if (index >= 0 && index < this.items.length) {\r\n return this.items[index];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n // public getIndex(name: string) : number {\r\n // return this.mapper[name];\r\n // }\r\n GridColumnList.prototype.getItems = function () {\r\n return this.items;\r\n };\r\n GridColumnList.prototype.removeAt = function (index) {\r\n var col = this.get(index);\r\n this.items.splice(index, 1);\r\n //delete this.mapper[col.name];\r\n };\r\n GridColumnList.prototype.clear = function () {\r\n this.items = [];\r\n //this.mapper = {};\r\n };\r\n return GridColumnList;\r\n}());\r\nexport { GridColumnList };\r\n//# sourceMappingURL=easy_grid_columns.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { MetaEntity, MetaEntityAttr } from '@easydata/core';\r\n/**\r\n * Represents one entity.\r\n */\r\nvar Entity = /** @class */ (function (_super) {\r\n __extends(Entity, _super);\r\n /** The default constructor. */\r\n function Entity(parent) {\r\n var _this = _super.call(this, parent) || this;\r\n _this.useInConditions = false;\r\n _this.useInResult = false;\r\n _this.useInSorting = false;\r\n return _this;\r\n }\r\n /**\r\n * Loads entity from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param data The JSON representation object.\r\n */\r\n Entity.prototype.loadFromData = function (model, data) {\r\n _super.prototype.loadFromData.call(this, model, data);\r\n if (data) {\r\n this.useInConditions = data.uic;\r\n this.useInResult = data.uir;\r\n this.useInSorting = data.uis;\r\n }\r\n };\r\n Entity.prototype.scan = function (processAttribute, processEntity) {\r\n _super.prototype.scan.call(this, function (attr, opts) { return processAttribute && processAttribute(attr, opts); }, function (entity, opts) { return processEntity && processEntity(entity, opts); });\r\n };\r\n return Entity;\r\n}(MetaEntity));\r\nexport { Entity };\r\n/**\r\n * Represents entity attribute.\r\n */\r\nvar EntityAttr = /** @class */ (function (_super) {\r\n __extends(EntityAttr, _super);\r\n /** The default constructor. */\r\n function EntityAttr(entity) {\r\n var _this = _super.call(this, entity) || this;\r\n /**\r\n * The parameters associated with this entity attribute\r\n */\r\n _this.params = [];\r\n _this.useInConditions = true;\r\n _this.useInResult = true;\r\n _this.useInSorting = true;\r\n _this.defaultOperator = \"\";\r\n _this.operators = new Array();\r\n _this.lookupAttr = \"\";\r\n _this.expr = \"\";\r\n return _this;\r\n }\r\n /**\r\n * Loads entity attribute from JSON representation object.\r\n * @param model The Data Model.\r\n * @param data The JSON representation object.\r\n */\r\n EntityAttr.prototype.loadFromData = function (model, data) {\r\n _super.prototype.loadFromData.call(this, model, data);\r\n if (data) {\r\n this.useInConditions = data.uic;\r\n this.useInResult = data.uir;\r\n this.useInSorting = data.uis;\r\n this.expr = data.sql;\r\n this.defaultOperator = data.defOperator;\r\n this.operators = data.ops;\r\n if (data.udata)\r\n this.userData = data.udata;\r\n }\r\n };\r\n return EntityAttr;\r\n}(MetaEntityAttr));\r\nexport { EntityAttr };\r\n//# sourceMappingURL=entity.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { ConditionPart } from '@easyquery/core';\r\nimport { BaseElementRenderer } from '../base_element_renderer';\r\nvar ExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(ExpressionRenderer, _super);\r\n function ExpressionRenderer(panel, expression, valueEditor, slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.panel = panel;\r\n _this.expression = expression;\r\n _this.valueEditor = valueEditor;\r\n return _this;\r\n }\r\n Object.defineProperty(ExpressionRenderer.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ExpressionRenderer.prototype.render = function (isEditMode) {\r\n if (isEditMode === void 0) { isEditMode = false; }\r\n _super.prototype.render.call(this, isEditMode);\r\n if (this.panel.options.onExpressionRendered) {\r\n this.panel.options.onExpressionRendered(this.expression, this.element);\r\n }\r\n return this.element;\r\n };\r\n ExpressionRenderer.prototype.getContext = function () {\r\n return this.panel.getContext();\r\n };\r\n ExpressionRenderer.prototype.isReadOnly = function () {\r\n var parent = this.expression.getParent();\r\n return !parent.enabled || parent.isReadOnly();\r\n };\r\n ExpressionRenderer.prototype.isEditable = function () {\r\n return !this.isReadOnly();\r\n };\r\n ExpressionRenderer.prototype.getClassesToAdd = function () {\r\n return this.cssPrefix + \"-condelement \" + this.cssPrefix + \"-valueelement\";\r\n };\r\n ExpressionRenderer.prototype.getLabelText = function () {\r\n var result = !this.expression.isEmpty()\r\n ? this.expression.value\r\n : this.getEmptyText();\r\n return result;\r\n };\r\n ExpressionRenderer.prototype.getEmptyText = function () {\r\n return this.panel.options.emptyTextValue || i18n.getText('MsgEmptyScalarValue'); //'[enter value]';\r\n };\r\n ExpressionRenderer.prototype.setValue = function (value, silent) {\r\n this.expression.setValue(value);\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.Value);\r\n }\r\n };\r\n ExpressionRenderer.prototype.getValue = function () {\r\n return this.expression.value;\r\n };\r\n ExpressionRenderer.prototype.validateInput = function (value) {\r\n return { success: true, value: value };\r\n };\r\n ExpressionRenderer.prototype.showValidationError = function (message, target) {\r\n this.getContext().throwError({\r\n action: \"ui.validation\",\r\n \"text\": message\r\n });\r\n };\r\n ExpressionRenderer.prototype.isEmptyValue = function () {\r\n var v = this.getValue();\r\n return (typeof (v) === \"undefined\" || v === null || !v);\r\n };\r\n ExpressionRenderer.prototype.adjustWidth = function () {\r\n };\r\n return ExpressionRenderer;\r\n}(BaseElementRenderer));\r\nexport { ExpressionRenderer };\r\n//# sourceMappingURL=expression_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { ExprTag } from \"@easyquery/core\";\r\nimport { CustomListExpressionRenderer } from \"./list_expression_renderer\";\r\nvar BindToParentColumnExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(BindToParentColumnExpressionRenderer, _super);\r\n function BindToParentColumnExpressionRenderer(panel, expression, editor, slot) {\r\n var _this = _super.call(this, panel, expression, editor, slot) || this;\r\n _this.expression.tag = ExprTag.ParentColumn;\r\n return _this;\r\n }\r\n BindToParentColumnExpressionRenderer.prototype.fillMenuItemsList = function (onComplete) {\r\n var query = this.panel.getQuery().getParentQuery();\r\n var parent = this.expression.getParent();\r\n var attrDataType = parent.expressions[0].dataType;\r\n this.menuItemsList = query\r\n .getColumns()\r\n .filter(function (col) { return col.expr.dataType == attrDataType; })\r\n .map(function (col) {\r\n return { id: col.id, text: col.caption };\r\n });\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n };\r\n return BindToParentColumnExpressionRenderer;\r\n}(CustomListExpressionRenderer));\r\nexport { BindToParentColumnExpressionRenderer };\r\n//# sourceMappingURL=bind_to_parent_column_expression_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { DataType, utils as dataUtils } from '@easydata/core';\r\nimport { Widget, WidgetGroup, eqconsts, CondTag, EqValueEditor, EqEditorTag, DataKind, QueryChangePart, QueryChangeAction, ConditionPart } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { eqDragManager, DropEffect } from '@easydata/ui';\r\nimport { QPEditablePart } from '../types/qp_editable_part';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { SimpleConditionRenderer } from './renderers/querypanel/condition_renderer';\r\nimport { ConditionGroupRenderer } from './renderers/querypanel/condition_group_renderer';\r\nimport { InputExpressionRenderer } from './renderers/querypanel/input_expression_renderer';\r\nimport { AttributeExpressionRenderer } from './renderers/querypanel/attribute_expression_renderer';\r\nimport { AddRowRenderer } from './renderers/querypanel/addrow_renderer';\r\nimport { ListExpressionRenderer, SqlListExpressionRenderer, CustomListExpressionRenderer } from './renderers/querypanel/list_expression_renderer';\r\nimport { OperatorRenderer } from './renderers/querypanel/operator_renderer';\r\nimport { DateTimeExpressionRenderer } from './renderers/querypanel/datetime_expression_render';\r\nimport { SubQueryExpressionRenderer } from './renderers/querypanel/subquery_expression_renderer';\r\nimport { eqCssPrefix, eqCssMobile, safeFocus } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { BindToParentColumnExpressionRenderer } from './renderers/querypanel/bind_to_parent_column_expression_renderer';\r\n/**\r\n * The query panel wiget, implemented without JQuery.\r\n */\r\nvar QueryPanel = /** @class */ (function (_super) {\r\n __extends(QueryPanel, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function QueryPanel(slot, customQuery) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n editableParts: QPEditablePart.All,\r\n isSubQuery: false,\r\n activeCondition: null,\r\n entitiesPopupHandler: null,\r\n entitiesListFilter: null,\r\n menuContainer: document.body,\r\n showRootRow: true,\r\n showAddRow: true,\r\n showCheckboxes: false,\r\n allowParameterization: false,\r\n allowInJoinConditions: false,\r\n showPoweredBy: false,\r\n buttons: {\r\n condition: null,\r\n group: null\r\n },\r\n alwaysShowButtonsInGroups: false,\r\n alwaysShowButtonsInConditions: false,\r\n showConjunctions: true,\r\n accentActiveCondition: true,\r\n activateRootOnStart: true,\r\n yearRange: 'c-10:c+10',\r\n oneClickDateSelection: true,\r\n showDateTimeInput: false,\r\n attrElementFormat: '{entity} {attr}',\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n itemRenderedCallback: null\r\n },\r\n allowDragDrop: true,\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n subQueryDialogWidth: 600,\r\n subQueryDialogHeight: 300,\r\n dialogZIndex: 100000,\r\n numberListSeparators: [',', ';'],\r\n autoEditNewCondition: false,\r\n onConditionRendered: null,\r\n onGetConditionRenderer: null,\r\n onGetExpressionRenderer: null,\r\n onGetOperatorRenderer: null,\r\n onOperatorRendered: null,\r\n onGetAddRowRenderer: null,\r\n defaultQuery: null\r\n };\r\n _this.customQuery = null;\r\n _this.landingSlot = domel('div')\r\n .addClass(_this.cssPrefix + \"-cond-landing-slot\")\r\n .addChildElement(domel('div')\r\n .toDOM())\r\n .toDOM();\r\n if (!_this.slot.classList.contains(_this.cssPrefix + \"-panel\")) {\r\n _this.slot.classList.add(_this.cssPrefix + \"-panel\");\r\n }\r\n _this.group = WidgetGroup.Query;\r\n if (customQuery) {\r\n _this.customQuery = customQuery;\r\n }\r\n return _this;\r\n }\r\n Object.defineProperty(QueryPanel.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n QueryPanel.prototype.getWidgetType = function () {\r\n return 'queryPanel';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n QueryPanel.prototype.init = function (context, options) {\r\n var _this = this;\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n //detach previously defined query observer (if any)\r\n this.detachQueryObserver();\r\n this.attachQueryObserver();\r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n var model_1 = this.getContext().getModel();\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttr\"],\r\n onDragEnter: function (container, ev) {\r\n _this.slot.classList.add(eqCssPrefix + \"-drophover\");\r\n ev.dragImage.classList.add('eqjs-sortable-helper');\r\n _this.showLandingSlot();\r\n var attrId = ev.data.attrId;\r\n if (!model_1.checkAttrProperty(attrId, \"useInConditions\")) {\r\n ev.dropEffect = DropEffect.Forbid;\r\n }\r\n },\r\n onDragOver: function (container, ev) {\r\n },\r\n onDragLeave: function (container, ev) {\r\n ev.dragImage.classList.remove('eqjs-sortable-helper');\r\n ev.dragImage.style.removeProperty('width');\r\n _this.slot.classList.remove(eqCssPrefix + \"-drophover\");\r\n _this.hideLangindSlot();\r\n },\r\n onDrop: function (container, ev) {\r\n var query = _this.getQuery();\r\n var descr = {\r\n parent: query.getRootCondition(),\r\n attributeId: ev.data.attrId\r\n };\r\n var cond = query.addSimpleCondition(descr);\r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n QueryPanel.prototype.destroyCore = function () {\r\n eqDragManager.removeDropContainer(this.slot);\r\n this.detachQueryObserver();\r\n this.slot.innerHTML = '';\r\n };\r\n QueryPanel.prototype.getEntitiesMenu = function () {\r\n return this.entitiesMenu;\r\n };\r\n QueryPanel.prototype.getConditionMenu = function () {\r\n return this.conditionMenu;\r\n };\r\n QueryPanel.prototype.getLinkTypeMenu = function () {\r\n return this.linkTypeMenu;\r\n };\r\n QueryPanel.prototype.getConditionGroupMenu = function (isRoot) {\r\n if (isRoot === void 0) { isRoot = false; }\r\n return isRoot ? this.rootGroupMenu : this.groupMenu;\r\n };\r\n QueryPanel.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n //if something has changed, and that change is related to conditions\r\n var edata = event.data;\r\n if (!edata || (edata.part != QueryChangePart.Conditions && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n var focusedBefore = document.activeElement;\r\n var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n var conds = edata.changee;\r\n var modifyCondition_1 = function (cond, autoEdit) {\r\n var el = _this.slot.querySelector(\"div[data-id=\" + cond.id + \"]\");\r\n if (el) {\r\n autoEdit = autoEdit\r\n && ((edata.condPart & ConditionPart.Operator) === ConditionPart.Operator)\r\n && cond.expressions.length > 1\r\n && (cond.expressions[1]._isDefaultValue || cond.expressions[1].value == '' ||\r\n cond.expressions[1].value == null);\r\n var isActive = el.classList.contains('active');\r\n var renderer = _this.getConditionRenderer(cond, el);\r\n if (renderer) {\r\n var newEl = renderer.render(autoEdit);\r\n if (isActive) {\r\n _this.toggleConditionPicked(cond);\r\n }\r\n if (isFocusInside && !autoEdit) {\r\n var focusElem = newEl.querySelector('a') || newEl.querySelector('.eqjs-qp-condition-button');\r\n if (focusElem) {\r\n safeFocus(focusElem);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var autoEdit_1 = _this.options.autoEditNewCondition;\r\n if (Array.isArray(conds)) {\r\n conds.forEach(function (cond) { return modifyCondition_1(cond, autoEdit_1); });\r\n autoEdit_1 = false;\r\n }\r\n else {\r\n modifyCondition_1(conds, autoEdit_1);\r\n }\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n var conds = edata.changee;\r\n var addCondition_1 = function (cond) {\r\n var renderer = _this.getConditionRenderer(cond);\r\n if (renderer) {\r\n var parent_1 = cond.getParent();\r\n var parentEl = _this.slot.querySelector(\"div[data-id=\" + parent_1.id + \"]\");\r\n if (parentEl) {\r\n var newCondContainer = parentEl.lastChild;\r\n if (newCondContainer) {\r\n var el = renderer.render(_this.options.autoEditNewCondition);\r\n newCondContainer.appendChild(el);\r\n el.scrollIntoView(false);\r\n if (isFocusInside && !_this.options.autoEditNewCondition) {\r\n el.querySelector(\"a\").focus();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n if (Array.isArray(conds)) {\r\n conds.forEach(function (cond) { return addCondition_1(cond); });\r\n }\r\n else {\r\n addCondition_1(conds);\r\n }\r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n var conds = edata.changee;\r\n var deleteCondition_1 = function (cond) {\r\n var el = _this.slot.querySelector(\"div[data-id=\" + cond.id + \"]\");\r\n if (el) {\r\n var parent_2 = _this.slot.querySelector(\"div[data-id=\" + cond.getParent().id + \"] > .eqjs-qp-row-group\");\r\n ;\r\n var next = el.nextSibling;\r\n var prev = el.previousSibling;\r\n el.parentElement.removeChild(el);\r\n if (isFocusInside) {\r\n var focusCond = next || prev || parent_2;\r\n var focusElem = focusCond.querySelector('a') || focusCond.querySelector('.eqjs-qp-condition-button');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n };\r\n if (Array.isArray(conds)) {\r\n conds.forEach(function (cond) { return deleteCondition_1(cond); });\r\n }\r\n else {\r\n deleteCondition_1(conds);\r\n }\r\n break;\r\n }\r\n default:\r\n _this.refresh();\r\n break;\r\n }\r\n });\r\n };\r\n QueryPanel.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n QueryPanel.prototype.getQuery = function () {\r\n if (this.customQuery) {\r\n return this.customQuery;\r\n }\r\n return this.context.getQuery();\r\n };\r\n QueryPanel.prototype.refreshCore = function () {\r\n this.clear();\r\n this.render();\r\n };\r\n QueryPanel.prototype.setOptions = function (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n // dateFormatValue & dateFormatDisplay back compatibility\r\n if (this.options.dateFormatValue) {\r\n i18n.updateLocaleSettings({\r\n editDateFormat: this.options.dateFormatValue\r\n });\r\n }\r\n if (this.options.dateFormatDisplay) {\r\n i18n.updateLocaleSettings({\r\n shortDateFormat: this.options.dateFormatDisplay\r\n });\r\n }\r\n if (typeof this.options.editableParts === \"undefined\") {\r\n this.options.editableParts = QPEditablePart.All;\r\n }\r\n if (browserUtils.isMobileMode()) {\r\n this.options.buttons = this.options.buttons || {};\r\n this.options.buttons.condition = [\"menu\"];\r\n this.options.buttons.group = [\"menu\"];\r\n }\r\n };\r\n QueryPanel.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n QueryPanel.prototype.render = function () {\r\n try {\r\n this.entitiesMenu = this.createEntitiesMenu();\r\n this.createConditionMenus();\r\n this.createLinkTypeMenu();\r\n this.rootContainer = domel('div', this.slot)\r\n .toDOM();\r\n domel(this.slot)\r\n .removeClass(eqCssMobile)\r\n .addClass(browserUtils.getMobileCssClass());\r\n var query = this.getQuery();\r\n var root = query.getRootCondition();\r\n var renderer = this.getConditionRenderer(root, this.rootContainer);\r\n if (renderer) {\r\n renderer.render();\r\n }\r\n if (this.options.showAddRow) {\r\n this.addRowElement = domel('div', this.slot)\r\n .toDOM();\r\n var addrowRenderer = this.getAddRowRenderer(this.addRowElement);\r\n if (addrowRenderer)\r\n addrowRenderer.render();\r\n }\r\n }\r\n catch (err) {\r\n var error = err;\r\n this.context.throwError({\r\n action: \"QueryPanel rendering\",\r\n text: error.message,\r\n sourceError: error\r\n });\r\n }\r\n };\r\n QueryPanel.prototype.getConditionRenderer = function (condition, slot) {\r\n var renderer;\r\n if (this.options.onGetConditionRenderer) {\r\n renderer = this.options.onGetConditionRenderer(condition, slot);\r\n if (renderer) {\r\n return renderer;\r\n }\r\n }\r\n switch (condition.tag) {\r\n case CondTag.Simple:\r\n return new SimpleConditionRenderer(this, condition, slot);\r\n case CondTag.Group:\r\n return new ConditionGroupRenderer(this, condition, slot);\r\n }\r\n return null;\r\n };\r\n QueryPanel.prototype.getExpressionRenderer = function (expression, slot) {\r\n if (!expression) {\r\n throw 'Expression is not defined in the condition';\r\n }\r\n var model = this.getContext().getModel();\r\n var condition = expression.getParent();\r\n var operator = model.getOperatorById(condition.getOperatorId());\r\n var attribute = model.getAttributeByIdSafe(condition.expressions[0].value);\r\n var operand = model.getOperand(attribute, operator, expression.getIndex());\r\n var editor;\r\n var tag;\r\n if (operand && operand.editor && operand.editor.tag !== EqEditorTag.Unknown) {\r\n editor = operand.editor;\r\n }\r\n else if (attribute && attribute.defaultEditor) {\r\n editor = attribute.defaultEditor;\r\n }\r\n else {\r\n editor = new EqValueEditor();\r\n }\r\n tag = editor.tag;\r\n var exprType = expression.dataType;\r\n if (exprType == DataType.Unknown) {\r\n exprType = attribute.dataType;\r\n }\r\n if (expression.kind === DataKind.Attribute) {\r\n if (expression.getIndex() === 0) { // Base attribute expression\r\n return new AttributeExpressionRenderer(this, expression, this.entitiesMenu, slot);\r\n }\r\n else {\r\n var attributeMenu = this.createEntitiesMenu(function (ent, attr) {\r\n if (attr) {\r\n return attr.useInConditions && attr.dataType === exprType;\r\n }\r\n return true;\r\n });\r\n return new AttributeExpressionRenderer(this, expression, attributeMenu, slot);\r\n }\r\n }\r\n else if (expression.kind === DataKind.Query) {\r\n tag = EqEditorTag.SubQuery;\r\n }\r\n else if (expression.kind === DataKind.Scalar) {\r\n if (tag == EqEditorTag.Unknown && (expression.dataType === DataType.Date\r\n || expression.dataType === DataType.DateTime || expression.dataType === DataType.Time)) {\r\n tag = EqEditorTag.DateTime;\r\n }\r\n }\r\n else if (expression.kind == DataKind.ParentColumn) {\r\n tag = EqEditorTag.BindToParentColumn;\r\n }\r\n if (this.options.onGetExpressionRenderer) {\r\n var renderer = this.options.onGetExpressionRenderer(this, expression, editor, slot);\r\n if (renderer) {\r\n return renderer;\r\n }\r\n }\r\n switch (tag) {\r\n case EqEditorTag.List:\r\n return new ListExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.SqlList:\r\n return new SqlListExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.CustomList:\r\n return new CustomListExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.DateTime:\r\n return new DateTimeExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.SubQuery:\r\n return new SubQueryExpressionRenderer(this, expression, editor, slot);\r\n //move to ERS later\r\n case EqEditorTag.BindToParentColumn:\r\n return new BindToParentColumnExpressionRenderer(this, expression, editor, slot);\r\n default:\r\n return new InputExpressionRenderer(this, expression, editor, slot);\r\n }\r\n };\r\n QueryPanel.prototype.getOperatorRenderer = function (condition, text, slot) {\r\n var renderer;\r\n if (this.options.onGetOperatorRenderer)\r\n renderer = this.options.onGetOperatorRenderer(condition, text, slot);\r\n if (renderer)\r\n return renderer;\r\n return new OperatorRenderer(this, condition, text, slot);\r\n };\r\n QueryPanel.prototype.getAddRowRenderer = function (slot) {\r\n var renderer;\r\n if (this.options.onGetAddRowRenderer)\r\n renderer = this.options.onGetAddRowRenderer(slot);\r\n if (renderer)\r\n return renderer;\r\n return new AddRowRenderer(this, this.entitiesMenu, slot);\r\n };\r\n QueryPanel.prototype.createEntitiesMenu = function (filterFunc) {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-EntitiesMenu';\r\n var entitiesList = model.getEntitiesTree({\r\n addUIC: true,\r\n addUIR: false,\r\n addUIS: false,\r\n attrPlacement: this.options.attrPlacement,\r\n sortEntities: this.options.sortEntities\r\n }, filterFunc);\r\n var options = {\r\n items: entitiesList,\r\n adjustHeight: this.options.adjustEntitiesMenuHeight,\r\n id: menuId,\r\n domWriteItemsId: this.options.domWriteItemsId\r\n };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n return new PopupMenu(options);\r\n };\r\n QueryPanel.prototype.showEntitiesMenu = function (options) {\r\n this.entitiesMenu.showMenu(options);\r\n };\r\n QueryPanel.prototype.createConditionMenus = function () {\r\n //ConditionMenu\r\n {\r\n var query = this.getQuery();\r\n var menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-ConditionMenu';\r\n var items = [\r\n {\r\n id: \"enable\",\r\n text: i18n.getText('MenuEnable')\r\n },\r\n {\r\n id: \"delete\",\r\n text: i18n.getText('CmdDelete')\r\n }\r\n ];\r\n if (query.isEx()) {\r\n if (this.options.allowParameterization || this.options.allowInJoinConditions) {\r\n items.push({ id: \"delimiter\", text: \"---\" });\r\n }\r\n ;\r\n if (this.options.allowParameterization) {\r\n items.push({\r\n id: \"param\",\r\n text: i18n.getText('MenuParameterization')\r\n });\r\n }\r\n ;\r\n if (this.options.allowInJoinConditions) {\r\n items.push({\r\n id: \"inJoin\",\r\n text: i18n.getText('MenuJoinCond')\r\n });\r\n }\r\n ;\r\n }\r\n var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.conditionMenu = new PopupMenu(options);\r\n }\r\n //groupMenu\r\n {\r\n var menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-GroupMenu';\r\n var items = [\r\n {\r\n id: \"enable\",\r\n text: i18n.getText('MenuEnable')\r\n },\r\n {\r\n id: \"delete\",\r\n text: i18n.getText('CmdDelete')\r\n },\r\n {\r\n id: \"delimiter\",\r\n text: \"---\"\r\n },\r\n {\r\n id: \"addCondition\",\r\n text: i18n.getText('CmdAddCondition')\r\n },\r\n {\r\n id: \"addGroup\",\r\n text: i18n.getText('CmdAddCondGroup')\r\n }\r\n ];\r\n var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.groupMenu = new PopupMenu(options);\r\n }\r\n //rootGroupMenu\r\n {\r\n var menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-RootGroupMenu';\r\n var items = [\r\n {\r\n id: \"addCondition\",\r\n text: i18n.getText('CmdAddCondition')\r\n },\r\n {\r\n id: \"addGroup\",\r\n text: i18n.getText('CmdAddCondGroup')\r\n }\r\n ];\r\n var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.rootGroupMenu = new PopupMenu(options);\r\n }\r\n };\r\n QueryPanel.prototype.createLinkTypeMenu = function () {\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-LinkTypeMenu';\r\n }\r\n var typeList = eqconsts.predicateLinkTypeList;\r\n var itemList = typeList.map(function (item) {\r\n return {\r\n id: item.id,\r\n text: i18n.getText(item.key)\r\n };\r\n });\r\n var options = { items: itemList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.linkTypeMenu = new PopupMenu(options);\r\n };\r\n QueryPanel.prototype.toggleConditionPicked = function (condition, force) {\r\n if (force === void 0) { force = undefined; }\r\n var el;\r\n var isActive;\r\n if (condition) {\r\n el = this.slot.querySelector(\"div[data-id=\" + condition.id + \"][data-condrow], div[data-id=\" + condition.id + \"] > div[data-group-row]\");\r\n if (el) {\r\n isActive = el.classList.contains('active');\r\n }\r\n }\r\n //clear 'active' in all rows\r\n var rows = this.slot.querySelectorAll(\".\" + this.cssPrefix + \"-row\");\r\n for (var i = 0; i < rows.length; i++) {\r\n var row = rows[i];\r\n if (row.hasAttribute('data-group-row')) {\r\n if (!this.options.alwaysShowButtonsInGroups) {\r\n domel(row)\r\n .data(\"show-buttons\", null);\r\n }\r\n }\r\n else {\r\n if (!this.options.alwaysShowButtonsInConditions) {\r\n domel(row)\r\n .data(\"show-buttons\", null);\r\n }\r\n }\r\n domel(row)\r\n .removeClass('active');\r\n }\r\n if (el && !isActive) {\r\n domel(el)\r\n .addClass('active')\r\n .data(\"show-buttons\", \"\");\r\n }\r\n };\r\n QueryPanel.prototype.showLandingSlot = function () {\r\n var container = this.slot.querySelector('.eqjs-qp-conditions-root');\r\n if (container) {\r\n container.appendChild(this.landingSlot);\r\n this.landingSlot.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n }\r\n };\r\n QueryPanel.prototype.hideLangindSlot = function () {\r\n if (this.landingSlot.parentElement) {\r\n this.landingSlot.parentElement.removeChild(this.landingSlot);\r\n }\r\n };\r\n return QueryPanel;\r\n}(Widget));\r\nexport { QueryPanel };\r\n//# sourceMappingURL=query_panel.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { eqconsts, DataKind, ConditionPart, } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nvar ListExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(ListExpressionRenderer, _super);\r\n function ListExpressionRenderer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.menuItemsList = [];\r\n _this.showWhenReady = false;\r\n return _this;\r\n }\r\n ListExpressionRenderer.prototype.isEditable = function () {\r\n return !this.isReadOnly()\r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value);\r\n };\r\n ListExpressionRenderer.prototype.setValue = function (value, silent) {\r\n if (silent === void 0) { silent = false; }\r\n var newValue = this.adjustNewValue(value);\r\n if (value !== this.expression.value) {\r\n var text = this.getValueText(value);\r\n this.expression.setContent(newValue, text);\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.Value);\r\n }\r\n }\r\n return true;\r\n };\r\n ListExpressionRenderer.prototype.getValueText = function (value) {\r\n var result = \"\";\r\n if (Array.isArray(value)) {\r\n for (var _i = 0, _a = this.menuItemsList; _i < _a.length; _i++) {\r\n var item = _a[_i];\r\n if (value.indexOf(item.id) >= 0) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n else {\r\n for (var _b = 0, _c = this.menuItemsList; _b < _c.length; _b++) {\r\n var item = _c[_b];\r\n if (item.id === value) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n if (result) {\r\n result = result.substring(0, result.length - 1);\r\n }\r\n return result;\r\n };\r\n ListExpressionRenderer.prototype.getEmptyText = function () {\r\n return this.panel.options.emptyTextList || i18n.getText('MsgEmptyListValue');\r\n };\r\n ListExpressionRenderer.prototype.getListName = function () {\r\n return this.valueEditor.name;\r\n };\r\n ListExpressionRenderer.prototype.renderEditor = function () {\r\n var _this = this;\r\n this.fillMenuItemsList(function () {\r\n _this.renderMenuBlock();\r\n });\r\n };\r\n ListExpressionRenderer.prototype.getLabelText = function () {\r\n if (!this.expression.isEmpty()) {\r\n return this.expression.getText();\r\n }\r\n else {\r\n return this.getEmptyText();\r\n }\r\n };\r\n ListExpressionRenderer.prototype.showLoader = function () {\r\n //NOTHING TO DO\r\n };\r\n ListExpressionRenderer.prototype.hideLoader = function () {\r\n //NOTHING TO DO\r\n };\r\n ListExpressionRenderer.prototype.showEditor = function () {\r\n var _this = this;\r\n if (this.menu) {\r\n this.menu.showMenu({\r\n anchor: this.labelElement,\r\n selectedIds: this.getValuesAsArray(),\r\n itemSelectedCallback: function (item, selectedItems) {\r\n if (!_this.menu.options.multiselect) {\r\n _this.setValue(item.id);\r\n }\r\n else if (selectedItems) {\r\n var selectedIds = [];\r\n var selLength = selectedItems.length;\r\n for (var i = 0; i < selLength; i++)\r\n selectedIds.push(selectedItems[i].id);\r\n _this.setValue(selectedIds);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n this.showWhenReady = true;\r\n this.showLoader();\r\n }\r\n };\r\n ListExpressionRenderer.prototype.closeEditor = function () {\r\n this.menu.hideMenu();\r\n };\r\n ListExpressionRenderer.prototype.renderMenuBlock = function () {\r\n var multiSelect = false;\r\n if (this.expression) {\r\n multiSelect = this.expression.kind === DataKind.List;\r\n }\r\n var queryPanel = this.panel;\r\n var options = {\r\n items: this.menuItemsList,\r\n multiselect: multiSelect,\r\n container: queryPanel ? queryPanel.options.menuContainer : null,\r\n showSelected: true,\r\n showItemIds: queryPanel ? queryPanel.options.showIdsForListItems : false\r\n };\r\n if (queryPanel) {\r\n dataUtils.assignDeep(options, queryPanel.options.menuOptions);\r\n }\r\n ;\r\n var menuId = this.element.id;\r\n if (menuId) {\r\n options.id = menuId + '-EditorMenu';\r\n }\r\n if (queryPanel) {\r\n options.domWriteItemsId = queryPanel.options.domWriteItemsId;\r\n }\r\n ;\r\n options.buttons = {\r\n submit: i18n.getText('ButtonApply'),\r\n cancel: i18n.getText('ButtonCancel')\r\n };\r\n this.menu = new PopupMenu(options);\r\n };\r\n ListExpressionRenderer.prototype.getValuesAsArray = function () {\r\n if (this.expression.kind !== DataKind.List) {\r\n return [this.expression.value];\r\n }\r\n else {\r\n if (this.expression.value) {\r\n //splits value by ',' \r\n var res = this.expression.value.match(/\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"|[^,]+/g);\r\n return res\r\n ? res.map(function (a) {\r\n if (a.charAt(0) == '\"' && a.charAt(a.length - 1) == '\"') {\r\n a = a.substring(1, a.length - 1);\r\n return a.replace(/\\\"/g, '\"');\r\n }\r\n else {\r\n return a;\r\n }\r\n })\r\n : [];\r\n }\r\n else\r\n return [];\r\n }\r\n };\r\n ListExpressionRenderer.prototype.adjustNewValue = function (newValue) {\r\n if (Array.isArray(newValue)) {\r\n return newValue.map(function (a) {\r\n if (a.indexOf(',') >= 0) {\r\n a = a.replace(/\"/g, '\\\"');\r\n return '\"' + a + '\"';\r\n }\r\n else {\r\n return a;\r\n }\r\n }).join(',');\r\n }\r\n else {\r\n return newValue;\r\n }\r\n };\r\n ListExpressionRenderer.prototype.fillMenuItemsList = function (onComplete) {\r\n this.menuItemsList = this.valueEditor.values;\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n };\r\n ListExpressionRenderer.prototype.takeDefaultValue = function () {\r\n if (!this.menuItemsList)\r\n return;\r\n var itemLen = this.menuItemsList.length;\r\n var defValue = this.valueEditor.defValue;\r\n for (var i = 0; i < itemLen; i++) {\r\n var item = this.menuItemsList[i];\r\n if (item.isDefault || defValue == item.id) {\r\n this.setValue(item.id, true);\r\n break;\r\n }\r\n }\r\n };\r\n return ListExpressionRenderer;\r\n}(ExpressionRenderer));\r\nexport { ListExpressionRenderer };\r\nvar CustomListExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(CustomListExpressionRenderer, _super);\r\n function CustomListExpressionRenderer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isLoading = false;\r\n _this.onClickTemp = null;\r\n return _this;\r\n }\r\n CustomListExpressionRenderer.prototype.renderEditor = function () {\r\n var _this = this;\r\n if (this.isLoading)\r\n return;\r\n this.isLoading = true;\r\n this.fillMenuItemsList(function () {\r\n _this.isLoading = false;\r\n if (_this.isEmptyValue()) {\r\n _this.takeDefaultValue();\r\n }\r\n if (!_this.expression.isEmpty() && _this.expression._isDefaultValue) {\r\n var text = _this.getValueText(_this.expression.value);\r\n _this.expression.setContent(_this.expression.value, text);\r\n _this.expression.getParent().fireChangedEvent();\r\n }\r\n _this.renderMenuBlock();\r\n if (_this.showWhenReady) {\r\n _this.showWhenReady = false;\r\n _this.hideLoader();\r\n _this.showEditor();\r\n }\r\n });\r\n };\r\n CustomListExpressionRenderer.prototype.showLoader = function () {\r\n this.labelElement.style.display = 'none';\r\n if (!this.loaderElement) {\r\n this.loaderElement = domel('div', this.element)\r\n .addClass(this.cssPrefix + \"-ve-loader\")\r\n .toDOM();\r\n }\r\n this.loaderElement.style.display = 'block';\r\n };\r\n CustomListExpressionRenderer.prototype.hideLoader = function () {\r\n this.loaderElement.style.display = 'none';\r\n this.labelElement.removeAttribute('style');\r\n };\r\n CustomListExpressionRenderer.prototype.fillMenuItemsList = function (onComplete) {\r\n var _this = this;\r\n var listName = this.getListName();\r\n var listRequestHandler = this.panel.getContext().getListRequestHandler();\r\n if (eqconsts.constLists[listName]) {\r\n this.menuItemsList = eqconsts.constLists[listName];\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n }\r\n else if (listRequestHandler) {\r\n listRequestHandler({\r\n listName: listName,\r\n editorId: this.valueEditor.id,\r\n editorParams: this.valueEditor.extraParams,\r\n value: this.getValue()\r\n }, function (list) {\r\n _this.menuItemsList = list;\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n });\r\n }\r\n };\r\n return CustomListExpressionRenderer;\r\n}(ListExpressionRenderer));\r\nexport { CustomListExpressionRenderer };\r\nvar SqlListExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(SqlListExpressionRenderer, _super);\r\n function SqlListExpressionRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SqlListExpressionRenderer.prototype.fillMenuItemsList = function (onComplete) {\r\n var _this = this;\r\n var context = this.panel.getContext();\r\n var editor = this.valueEditor;\r\n var listRequestHandler = context.getListRequestHandler();\r\n if (listRequestHandler) {\r\n var requestData = {\r\n listName: \"SQL\",\r\n editorId: this.valueEditor.id,\r\n editorParams: this.valueEditor.extraParams,\r\n value: this.getValue()\r\n };\r\n //requestData.sql = editor.sql;\r\n listRequestHandler(requestData, function (list) {\r\n _this.menuItemsList = list;\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n });\r\n }\r\n };\r\n return SqlListExpressionRenderer;\r\n}(CustomListExpressionRenderer));\r\nexport { SqlListExpressionRenderer };\r\n//# sourceMappingURL=list_expression_renderer.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { EditorTag } from \"@easydata/core\";\r\n/** Represents editor tags*/\r\nexport var EqEditorTag = __assign(__assign({}, EditorTag), { \r\n /** SqlList tag value */\r\n SqlList: \"SQLLIST\", \r\n /** SubQuery tag value */\r\n SubQuery: \"SUBQUERY\", \r\n /** Bind to parent column tag value */\r\n BindToParentColumn: \"BINDTOPARENTCOLUMN\" });\r\n//# sourceMappingURL=eq_editor_tag.js.map","import { DataType, utils as dataUtils } from '@easydata/core';\r\nimport { Expression } from './expression';\r\nimport { QueryChangePart, QueryChangeAction } from './query_events';\r\n/** Represents sorting direction. */\r\nexport var SortDirection;\r\n(function (SortDirection) {\r\n /** No sorting. */\r\n SortDirection[SortDirection[\"None\"] = 0] = \"None\";\r\n /** Ascending order. */\r\n SortDirection[SortDirection[\"Ascending\"] = 1] = \"Ascending\";\r\n /** Descending order. */\r\n SortDirection[SortDirection[\"Descending\"] = 2] = \"Descending\";\r\n})(SortDirection || (SortDirection = {}));\r\n/**\r\n * Represents some column which will be queried\r\n */\r\nvar QueryColumn = /** @class */ (function () {\r\n /** the default constructor. */\r\n function QueryColumn(query, justsorted) {\r\n if (justsorted === void 0) { justsorted = false; }\r\n this.query = query;\r\n this.justsorted = justsorted;\r\n /** Column is enabled */\r\n this.enabled = true;\r\n /** The parameters associated with this column */\r\n this.params = [];\r\n this._isHidden = false;\r\n this._id = dataUtils.generateId('col');\r\n this.caption = '';\r\n this.sorting = SortDirection.None;\r\n this.sortIndex = -1;\r\n this.expr = new Expression(this);\r\n this.blockId = '';\r\n }\r\n Object.defineProperty(QueryColumn.prototype, \"id\", {\r\n get: function () {\r\n return this._id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n QueryColumn.prototype.getModel = function () {\r\n return this.query.getModel();\r\n };\r\n QueryColumn.prototype.getQuery = function () {\r\n return this.query;\r\n };\r\n /** Indicates whether this column is read-only */\r\n QueryColumn.prototype.isReadOnly = function () {\r\n return false;\r\n };\r\n /** Indicates whether this column is just-sorted */\r\n QueryColumn.prototype.isJustSorted = function () {\r\n return this.justsorted;\r\n };\r\n QueryColumn.prototype.setReadOnly = function (value) {\r\n //do nothing. Read-only columns are not supported here\r\n };\r\n /** Indicates whether this column is invisible */\r\n QueryColumn.prototype.isHidden = function () {\r\n return this._isHidden;\r\n };\r\n QueryColumn.prototype.setHidden = function (value) {\r\n this._isHidden = value;\r\n };\r\n QueryColumn.prototype.getDataType = function () {\r\n if (this.expr.dataType === DataType.Unknown) {\r\n var attrId = null;\r\n if (this.expr.func) {\r\n if (this.expr.func == \"COUNT\" || this.expr.func == \"CNTDST\")\r\n return DataType.Int64;\r\n attrId = this.expr.args[0].value;\r\n }\r\n else {\r\n attrId = this.expr.value;\r\n }\r\n var attr = this.query.getModel()\r\n .getAttributeById(attrId);\r\n if (attr)\r\n return attr.dataType;\r\n }\r\n return this.expr.dataType;\r\n };\r\n /**\r\n * Loads column from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param colData The JSON representation object.\r\n */\r\n QueryColumn.prototype.loadFromData = function (model, colData) {\r\n if (colData) {\r\n if (colData.id) {\r\n this._id = colData.id;\r\n }\r\n this.caption = colData.cptn;\r\n if (typeof colData.srt !== 'undefined') {\r\n this.sorting = colData.srt;\r\n this.sortIndex = (typeof colData.srtidx !== 'undefined')\r\n ? colData.srtidx\r\n : -1;\r\n }\r\n if (colData.enabled === false) {\r\n this.enabled = colData.enabled;\r\n }\r\n this.expr.loadFromData(model, colData.expr);\r\n this.blockId = colData.blockId;\r\n this.displayFormat = colData.dfmt;\r\n this.groupFooterColumnTemlate = colData.gfct;\r\n if (colData.hidden) {\r\n this.setHidden(true);\r\n }\r\n }\r\n };\r\n /**\r\n * Saves the column to a data transfer object (ready for sending to the server-side) .\r\n * @returns An plain object that represents the column.\r\n */\r\n QueryColumn.prototype.saveToData = function () {\r\n var obj = {};\r\n obj.id = this._id;\r\n if (typeof this.caption !== 'undefined') {\r\n obj.cptn = this.caption;\r\n }\r\n if (typeof this.sorting !== 'undefined' && this.sorting != SortDirection.None) {\r\n obj.srt = this.sorting;\r\n obj.srtidx = this.sortIndex;\r\n }\r\n obj.expr = this.expr.saveToData();\r\n if (this.blockId) {\r\n obj.blockId = this.blockId;\r\n }\r\n if (this.enabled === false) {\r\n obj.enabled = this.enabled;\r\n }\r\n obj.dfmt = this.displayFormat;\r\n obj.gfct = this.groupFooterColumnTemlate;\r\n if (this.isHidden()) {\r\n obj.hidden = true;\r\n }\r\n return obj;\r\n };\r\n QueryColumn.prototype.fireChangedEvent = function () {\r\n this.query.fireChangedEvent({\r\n part: (this.justsorted)\r\n ? QueryChangePart.SortingColumns\r\n : QueryChangePart.Columns,\r\n action: QueryChangeAction.Modify,\r\n changee: this\r\n });\r\n };\r\n QueryColumn.prototype.getExpressionIndex = function (expr) {\r\n return 0;\r\n };\r\n QueryColumn.prototype.expressionChanged = function (expr, oldValue) {\r\n };\r\n return QueryColumn;\r\n}());\r\nexport { QueryColumn };\r\n//# sourceMappingURL=query_column.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { EventEmitter, utils as dataUtils, AggregationSettings, DataType } from '@easydata/core';\r\nimport { i18n } from '@easydata/core';\r\nimport { equtils } from '../utils/utils';\r\nimport { DataModel } from '../dm/data_model';\r\nimport { Expression } from './expression';\r\nimport { QueryColumn, SortDirection } from './query_column';\r\nimport { Condition } from './condition';\r\nimport { DataKind } from '../types/data_kind';\r\nimport { LinkType } from '../types/link_type';\r\nimport { ExprTag } from '../types/expr_tag';\r\nimport { CondTag } from '../types/cond_tag';\r\nimport { QueryChangePart } from './query_events';\r\n/**\r\n * The error that appears when the query is not valid\r\n */\r\nvar InvalidQueryError = /** @class */ (function (_super) {\r\n __extends(InvalidQueryError, _super);\r\n /**\r\n * Creates an instance of error type.\r\n * @param message The error message\r\n */\r\n function InvalidQueryError(message) {\r\n var _this = _super.call(this, message) || this;\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(_this, InvalidQueryError);\r\n }\r\n _this.name = 'InvalidQueryError';\r\n return _this;\r\n }\r\n return InvalidQueryError;\r\n}(Error));\r\nexport { InvalidQueryError };\r\n/**\r\n * Represents Query.\r\n */\r\nvar Query = /** @class */ (function () {\r\n /**\r\n * The default constructor.\r\n * @param model The data model.\r\n * @param data JSON representation object.\r\n * @param options The options.\r\n * @throws {InvalidQueryError} The error throws when query is not valid.\r\n */\r\n function Query(model, data, options) {\r\n var _this = this;\r\n /**\r\n * Contains user-defined extra data for current query.\r\n */\r\n this.extraData = {};\r\n this.innerData = {};\r\n this.isNewbie = true;\r\n this._isModified = false;\r\n this._enableAggregation = false;\r\n this.parentQuery = null;\r\n this.drillDowns = [];\r\n this.eventEmitter = new EventEmitter(this);\r\n this.root = new Condition(this, CondTag.Group);\r\n this.extraConditions = new Condition(this, CondTag.Group);\r\n this.columns = new Array();\r\n this.justsorted = new Array();\r\n if (!this.id) {\r\n this.regenerateId();\r\n }\r\n this.setDefaultName();\r\n this.description = \"\";\r\n this.model = (model) ? model : new DataModel();\r\n if (data) {\r\n this.loadFromData(data);\r\n }\r\n this.attributeExprTag = (options) ? options.attrTag || ExprTag.EntityAttribute : ExprTag.EntityAttribute;\r\n this.clientListRequestHandler = (options) ? options.clientListRequestHandler : new Array();\r\n this.serverListRequestHandler = (options) ? options.serverListRequestHandler : new Array();\r\n this.timezoneOffset = (new Date()).getTimezoneOffset();\r\n this.aggrSettings = new AggregationSettings(this);\r\n if (options) {\r\n this.parentQuery = options.parent;\r\n }\r\n this.addChangedCallback(function (ev) {\r\n if (ev.data\r\n && ((ev.data.part & QueryChangePart.Columns) > 0)\r\n && !ev.data.aggregation) {\r\n if (_this._enableAggregation && _this.updateAggregationSettings()) {\r\n _this.fireChangedEvent({\r\n part: QueryChangePart.Aggregation\r\n });\r\n }\r\n }\r\n });\r\n }\r\n Query.prototype.isModified = function () {\r\n return this._isModified;\r\n };\r\n Query.prototype.resetModified = function () {\r\n this._isModified = false;\r\n };\r\n Object.defineProperty(Query.prototype, \"enableAggregation\", {\r\n get: function () {\r\n return this._enableAggregation;\r\n },\r\n set: function (value) {\r\n var oldValue = this._enableAggregation;\r\n this._enableAggregation = value;\r\n if (!oldValue && value) {\r\n this.processQueryForAggregation();\r\n var aggrCols = this.columns.filter(function (c) { return c.enabled\r\n && c.expr.tag == ExprTag.AggregateFunction; });\r\n }\r\n if (!this._enableAggregation) {\r\n this.aggrSettings.clear();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Query.prototype.updateAggregationSettings = function () {\r\n var hasChanged = false;\r\n var aggrSettings = this.getAggregationSettings();\r\n for (var i = aggrSettings.groups.length - 1; i >= 0; i--) {\r\n var group = aggrSettings.groups[i];\r\n var _loop_1 = function (j) {\r\n var colId = group.columns[j];\r\n if (!this_1.columns.find(function (col) { return col.id === colId; })) {\r\n group.columns.splice(j, 1);\r\n hasChanged = true;\r\n }\r\n };\r\n var this_1 = this;\r\n for (var j = group.columns.length - 1; j >= 0; j--) {\r\n _loop_1(j);\r\n }\r\n if (group.columns.length == 0) {\r\n aggrSettings.groups.slice(i, 1);\r\n }\r\n }\r\n var aggregates = aggrSettings.getAggregates();\r\n var _loop_2 = function (i) {\r\n var aggr = aggregates[i];\r\n if (!this_2.columns.find(function (col) { return col.id === aggr.colId; })) {\r\n aggregates.splice(i, 1);\r\n hasChanged = true;\r\n }\r\n };\r\n var this_2 = this;\r\n for (var i = aggregates.length - 1; i >= 0; i--) {\r\n _loop_2(i);\r\n }\r\n return hasChanged;\r\n };\r\n Query.prototype.createSubQuery = function () {\r\n return new Query(this.model);\r\n };\r\n Query.prototype.useAggregation = function (settingsTuner, silent) {\r\n if (silent === void 0) { silent = false; }\r\n this.aggrSettings.clear();\r\n settingsTuner(this.aggrSettings);\r\n if (this.enableAggregation) {\r\n this.processQueryForAggregation(silent);\r\n }\r\n else if (!silent) {\r\n console.warn('Aggregation is turned off. Turn it on with query.enableAggregation = true');\r\n return;\r\n }\r\n };\r\n Query.prototype.useDefaultAggregation = function () {\r\n var _this = this;\r\n this._enableAggregation = true;\r\n this.useAggregation(function (settings) {\r\n var aggrCols = _this.columns.filter(function (c) { return c.enabled\r\n && c.expr.tag == ExprTag.AggregateFunction; });\r\n if (aggrCols.length) {\r\n // query contains aggregate columns\r\n var colsToGroup = _this.columns.filter(function (c) { return c.enabled\r\n && c.expr.tag == ExprTag.EntityAttribute; });\r\n var aggrsToAdd = [];\r\n for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {\r\n var col = aggrCols_1[_i];\r\n aggrsToAdd.push({ id: col.id, func: col.expr.func });\r\n _this.changeColumnType(col, ExprTag.EntityAttribute);\r\n }\r\n for (var _a = 0, aggrsToAdd_1 = aggrsToAdd; _a < aggrsToAdd_1.length; _a++) {\r\n var aggr = aggrsToAdd_1[_a];\r\n settings.addAggregateColumn(aggr.id, aggr.func);\r\n }\r\n for (var _b = 0, colsToGroup_1 = colsToGroup; _b < colsToGroup_1.length; _b++) {\r\n var col = colsToGroup_1[_b];\r\n settings.addGroup({ columns: [col.id], name: col.caption });\r\n }\r\n settings.addGrandTotals();\r\n _this.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n wasModified: false\r\n });\r\n }\r\n else {\r\n // query does not has any aggr columns\r\n var colToAggr = _this.getColumns()\r\n .filter(function (c) { return c.enabled && c.expr.tag == ExprTag.EntityAttribute\r\n && _this.model.getAttributeById(c.expr.value).dataType === DataType.Currency; })[0];\r\n var colToGroup = _this.getColumns()\r\n .filter(function (c) { return c.enabled && c.expr.tag == ExprTag.EntityAttribute\r\n && _this.model.getAttributeById(c.expr.value).dataType === DataType.String; })[0];\r\n if ((!colToAggr && !settings.hasAggregates()) || !colToGroup)\r\n return;\r\n settings.addGrandTotals()\r\n .addAggregateColumn(colToAggr.id, 'SUM')\r\n .addGroup({ columns: [colToGroup.id], name: 'Default' });\r\n }\r\n });\r\n };\r\n Query.prototype.processQueryForAggregation = function (silent) {\r\n if (silent === void 0) { silent = false; }\r\n var aggrSettings = this.getAggregationSettings();\r\n var groups = aggrSettings.getGroups();\r\n if (groups.length > 0) {\r\n var groupColIds = groups[groups.length - 1].columns;\r\n //take the list of grouped columns from the latest group\r\n var groupedCols = [];\r\n var sortedCols = [];\r\n for (var _i = 0, _a = this.getColumns(); _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n if (groupColIds.indexOf(col.id) >= 0) {\r\n groupedCols.push(col);\r\n }\r\n else if (col.sorting != SortDirection.None) {\r\n sortedCols.push(col);\r\n }\r\n }\r\n var sortIndex_1 = 0;\r\n groupedCols.forEach(function (col) {\r\n if (col.sorting == SortDirection.None) {\r\n col.sorting = SortDirection.Ascending;\r\n }\r\n col.sortIndex = sortIndex_1++;\r\n });\r\n sortedCols.forEach(function (col) {\r\n col.sortIndex = sortIndex_1++;\r\n });\r\n if (!silent) {\r\n this.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n aggregation: true,\r\n wasModified: false\r\n });\r\n }\r\n }\r\n };\r\n Query.prototype.getAggregationSettings = function () {\r\n return this.aggrSettings;\r\n };\r\n Query.prototype.getColumnIds = function (from, to) {\r\n to = to || from;\r\n return this.columns.slice(from, to - from + 1)\r\n .map(function (c) { return c.id; });\r\n };\r\n /**\r\n * Checks if the columns with IDs passed in function's parameter exist and are valid\r\n */\r\n Query.prototype.validateColumns = function (colIds) {\r\n var enabledColIds = this.columns.filter(function (c) { return c.enabled; }).map(function (c) { return c.id; });\r\n var prevIndex = -1;\r\n for (var _i = 0, colIds_1 = colIds; _i < colIds_1.length; _i++) {\r\n var col = colIds_1[_i];\r\n var index = enabledColIds.indexOf(col);\r\n if (index < 0)\r\n return false;\r\n if (prevIndex > index)\r\n return false;\r\n prevIndex = index;\r\n }\r\n return true;\r\n };\r\n Query.prototype.validateAggregate = function (colId, funcId) {\r\n var col = this.columns.filter(function (c) { return c.enabled && c.id === colId; })[0];\r\n var func = this.model.findAggrFunctionById(funcId);\r\n if (!func || !col || func.appliedTypes.indexOf(col.expr.dataType) < 0)\r\n return false;\r\n return true;\r\n };\r\n Query.prototype.isEx = function () {\r\n return false;\r\n };\r\n /**\r\n * Resets the query: clears all its conditions and columns, regenerate the ID and sets the default name.\r\n * @param silent Indicates whether we need to avoid firing the QueryChanged event.\r\n */\r\n Query.prototype.reset = function (clearQuery) {\r\n if (clearQuery === void 0) { clearQuery = true; }\r\n if (clearQuery) {\r\n this.clear();\r\n }\r\n this.regenerateId();\r\n this.setDefaultName();\r\n this._isModified = false;\r\n this.isNewbie = true;\r\n };\r\n Query.prototype.hasEnabledAggrColumns = function () {\r\n return this.columns.filter(function (col) { return col.enabled\r\n && col.expr.tag === ExprTag.AggregateFunction; }).length > 0;\r\n };\r\n Query.prototype.setDefaultName = function () {\r\n this.setName(i18n.getText('NewQueryName'));\r\n return this.getName();\r\n };\r\n /**\r\n * Validates wether the query corresponds to the model.\r\n * @param options Validate options.\r\n * @throws {InvalidQueryError} If query is not valid.\r\n */\r\n Query.prototype.validate = function (options) {\r\n options = options || {};\r\n var entityAttrNotExistError = \"EntityAttribute isn't declared in the model: \";\r\n var wrongExprTag = \"The expression has wrond tag: \";\r\n if (!this.model) {\r\n throw new InvalidQueryError(\"Model is not declared\");\r\n }\r\n if (this.columns) {\r\n for (var _i = 0, _a = this.columns; _i < _a.length; _i++) {\r\n var column = _a[_i];\r\n if (column.expr.tag == ExprTag.EntityAttribute\r\n || column.expr.tag === ExprTag.ParentEntityAttribute) {\r\n var attr = this.model.getAttributeById(column.expr.value);\r\n if (!attr) {\r\n throw new InvalidQueryError(entityAttrNotExistError + column.expr.value);\r\n }\r\n }\r\n else if (column.expr.tag === ExprTag.AggregateFunction) {\r\n var attr = this.model.getAttributeById(column.expr.args[0].value);\r\n if (!attr) {\r\n throw new InvalidQueryError(entityAttrNotExistError + column.expr.args[0].value);\r\n }\r\n }\r\n else if (column.expr.tag !== ExprTag.CustomSql) {\r\n throw new InvalidQueryError(wrongExprTag + column.expr.tag);\r\n }\r\n }\r\n }\r\n if (this.root && this.root.getConditions()) {\r\n this.validateConditionGroup(this.root, options);\r\n }\r\n };\r\n Query.prototype.getAggregatedColumns = function () {\r\n return this.getColumns().filter(function (col) { return col.enabled\r\n && col.expr.tag === ExprTag.AggregateFunction; });\r\n };\r\n /**\r\n * Validates wether the query corresponds to the model.\r\n * @param options Validate options.\r\n * @returns `true` if it is valid, otherwise `false`\r\n */\r\n Query.prototype.tryValidate = function (options) {\r\n try {\r\n this.validate(options);\r\n return true;\r\n }\r\n catch (e) {\r\n if (e instanceof InvalidQueryError) {\r\n return false;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n };\r\n Query.prototype.validateConditionGroup = function (curCond, options) {\r\n if (curCond.isGroup()) {\r\n for (var _i = 0, _a = curCond.getConditions(); _i < _a.length; _i++) {\r\n var condition = _a[_i];\r\n if (!condition.enabled)\r\n continue;\r\n this.validateConditionGroup(condition, options);\r\n }\r\n }\r\n else if (curCond.expressions[0].tag === ExprTag.EntityAttribute) {\r\n var attrId = curCond.expressions[0].value;\r\n var attr = this.model.getAttributeById(attrId);\r\n if (!attr) {\r\n throw new InvalidQueryError(\"EntityAttribute isn't declared in the model: \" + attrId);\r\n }\r\n if (!options.checkExpressions)\r\n return;\r\n for (var i = 1; i < curCond.expressions.length; i++) {\r\n var expr = curCond.expressions[i];\r\n if (expr.tag !== ExprTag.Constant)\r\n continue;\r\n //validate number exprs\r\n if (dataUtils.isNumericType(expr.dataType)) {\r\n if (!expr.value)\r\n continue;\r\n var values = [];\r\n if (expr.kind === DataKind.List) {\r\n values = expr.value.split(/\\s*,\\s*/);\r\n }\r\n else {\r\n values = [expr.value];\r\n }\r\n for (var _b = 0, values_1 = values; _b < values_1.length; _b++) {\r\n var value = values_1[_b];\r\n var parsedVal = +value;\r\n if (isNaN(parsedVal)) {\r\n throw new InvalidQueryError(\"Expression constant is NaN in condition:\" + curCond.id);\r\n }\r\n if (dataUtils.isIntType(expr.dataType) && parsedVal != parseInt(value, 10)) {\r\n throw new InvalidQueryError(\"Expression constant is wrong interger in condition: \" + curCond.id);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Sets data to the query.\r\n * @param data JSON representation object or JSON string\r\n * @param changeStatus Indicate whether we should change the \"isModified\" status (by default == `true`)\r\n */\r\n Query.prototype.loadFromDataOrJson = function (data, options) {\r\n if (data) {\r\n if (typeof data === \"string\") {\r\n this.loadFromJson(data, options);\r\n }\r\n else {\r\n this.loadFromData(data, options);\r\n }\r\n }\r\n };\r\n /**\r\n * Loads query from JSON.\r\n * @param json The JSON string.\r\n * @param options The options.\r\n * @throws {InvalidQueryError} The error throws when query is not valid.\r\n */\r\n Query.prototype.loadFromJson = function (json, options) {\r\n var data = JSON.parse(json);\r\n this.loadFromData(data, options);\r\n };\r\n /**\r\n * Loads query from data representation.\r\n * @param data The query DTO.\r\n * @param options The options.\r\n * @throws {InvalidQueryError} The error throws when query is not valid.\r\n */\r\n Query.prototype.loadFromData = function (data, options) {\r\n var _this = this;\r\n options = dataUtils.assign({\r\n changeStatus: true,\r\n validate: true\r\n }, options || {});\r\n var noErrors = false;\r\n this.clear();\r\n this.clearDrillDowns();\r\n if (data) {\r\n this.id = data.id;\r\n this.root.loadFromData(this.model, data.root);\r\n if (data.root && data.root.conds) {\r\n for (var i = 0; i < data.root.conds.length; i++) {\r\n var condData = data.root.conds[i];\r\n if (condData.conds && !this.isEx()) {\r\n console.error(\"Community version doesn't support working with groups.\");\r\n continue;\r\n }\r\n var cond = this.createCondition();\r\n cond.loadFromData(this.model, condData);\r\n this.root.addCondition(cond);\r\n }\r\n }\r\n this.name = data.name;\r\n this.description = data.desc;\r\n this.justsorted = [];\r\n if (data.justsortcols) {\r\n for (var i = 0; i < data.justsortcols.length; i++) {\r\n var newCol = this.createColumn(true);\r\n newCol.loadFromData(this.model, data.justsortcols[i]);\r\n this.justsorted.push(newCol);\r\n }\r\n }\r\n if (data.cols) {\r\n for (var i = 0; i < data.cols.length; i++) {\r\n var newCol = this.createColumn();\r\n newCol.loadFromData(this.model, data.cols[i]);\r\n this.columns.push(newCol);\r\n }\r\n }\r\n if (data.extraData) {\r\n this.extraData = data.extraData;\r\n }\r\n this.innerData = data.innerData || this.innerData;\r\n if (this.innerData && this.innerData.aggr) {\r\n this._enableAggregation = this.innerData.aggr.enabled || false;\r\n this.useAggregation(function (settings) {\r\n settings.loadFromData(_this.innerData.aggr);\r\n }, true);\r\n }\r\n if (data.dds && data.dds.length) {\r\n for (var _i = 0, _a = data.dds; _i < _a.length; _i++) {\r\n var dd = _a[_i];\r\n var query = this.addDrillDown();\r\n query.loadFromData(dd);\r\n }\r\n }\r\n }\r\n noErrors = true;\r\n if (noErrors) {\r\n if (options.changeStatus) {\r\n this.isNewbie = false;\r\n this._isModified = false;\r\n }\r\n }\r\n if (options.validate) {\r\n this.validate();\r\n }\r\n };\r\n /**\r\n *\r\n */\r\n Query.prototype.addDrillDown = function () {\r\n var query = this.model.createQuery();\r\n query.parentQuery = this;\r\n this.drillDowns.push(query);\r\n return query;\r\n };\r\n Query.prototype.getDrillDowns = function () {\r\n return this.drillDowns;\r\n };\r\n Query.prototype.getParentQuery = function () {\r\n return this.parentQuery;\r\n };\r\n /**\r\n *\r\n */\r\n Query.prototype.findColumnById = function (colId) {\r\n for (var _i = 0, _a = this.columns; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n if (col.id === colId)\r\n return col;\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets DataModel object associated with this query.\r\n * @retruns The data model.\r\n */\r\n Query.prototype.getModel = function () {\r\n return this.model;\r\n };\r\n /**\r\n * Sets DataModel object associated with this query.\r\n * @param model The data model.\r\n */\r\n Query.prototype.setModel = function (model) {\r\n this.model = model;\r\n };\r\n /**\r\n * Loads data model.\r\n * @param model JSON representation object or JSON string.\r\n */\r\n Query.prototype.loadModelData = function (model) {\r\n this.model.setData(model);\r\n };\r\n /**\r\n * Returns JSON representation of this query.\r\n * @retruns JSON string.\r\n */\r\n Query.prototype.toJSON = function () {\r\n return JSON.stringify(this.toJSONData());\r\n };\r\n /**\r\n * Returns JSON representation of this query.\r\n * @retruns JSON representation object.\r\n */\r\n Query.prototype.toJSONData = function () {\r\n var _this = this;\r\n var obj = {\r\n modelId: this.model ? this.model.getId() : null,\r\n modelName: this.model ? this.model.getName() : null\r\n };\r\n obj.id = this.id;\r\n obj.name = this.name;\r\n if (this.description) {\r\n obj.desc = this.description;\r\n }\r\n obj.cols = [];\r\n for (var i = 0; i < this.columns.length; i++) {\r\n obj.cols.push(this.columns[i].saveToData());\r\n }\r\n obj.justsortcols = [];\r\n for (var i = 0; i < this.justsorted.length; i++) {\r\n obj.justsortcols.push(this.justsorted[i].saveToData());\r\n }\r\n if (this.extraData) {\r\n obj.extraData = this.extraData;\r\n }\r\n if (this.innerData) {\r\n obj.innerData = this.innerData;\r\n obj.innerData.aggr = this.aggrSettings.saveToData();\r\n obj.innerData.aggr.enabled = this._enableAggregation;\r\n }\r\n var rootCondToData = function (condGroup) {\r\n var result = condGroup.saveToData();\r\n result.conds = [];\r\n var conditions = condGroup.getConditions();\r\n for (var i = 0; i < conditions.length; i++) {\r\n if (conditions[i].isGroup() && !_this.isEx()) {\r\n console.error(\"Community version doesn't support working with groups.\");\r\n continue;\r\n }\r\n result.conds.push(conditions[i].saveToData());\r\n }\r\n return result;\r\n };\r\n obj.root = rootCondToData(this.root);\r\n obj.extraConds = rootCondToData(this.extraConditions);\r\n if (this.drillDowns.length > 0) {\r\n obj.dds = [];\r\n for (var _i = 0, _a = this.drillDowns; _i < _a.length; _i++) {\r\n var dd = _a[_i];\r\n obj.dds.push(dd.toJSONData());\r\n }\r\n }\r\n obj.timezoneOffset = this.timezoneOffset;\r\n obj.locale = i18n.getCurrentLocale();\r\n return obj;\r\n };\r\n /**\r\n * Checks wether query does not contains any condtion.\r\n * @retruns `true` if query does not contain any condition, otherwise `false`.\r\n */\r\n Query.prototype.isEmptyConditions = function () {\r\n return this.root.isEmpty();\r\n };\r\n /**\r\n * Checks wether query does not contains any column.\r\n * @retruns `true` if query does not contain any column, otherwise `false`.\r\n */\r\n Query.prototype.isEmptyColumns = function () {\r\n return !this.columns || this.columns.length === 0;\r\n };\r\n /**\r\n * Checks wether query does not contains any column and any condition.\r\n * @retruns `true` if query does not contain any column and any condition, otherwise `false`.\r\n */\r\n Query.prototype.isEmpty = function () {\r\n return this.isEmptyColumns() && this.isEmptyConditions();\r\n };\r\n /**\r\n * Clears the query (all conditions, columns, extraData, etc).\r\n */\r\n Query.prototype.clear = function () {\r\n this._enableAggregation = false;\r\n this.aggrSettings.clear();\r\n this.clearColumns();\r\n this.clearConditions();\r\n this.clearExtraConditions();\r\n this.innerData = {};\r\n this.extraData = {};\r\n };\r\n /**\r\n * Clears all columns in query\r\n */\r\n Query.prototype.clearColumns = function () {\r\n this.columns = [];\r\n this.justsorted = [];\r\n };\r\n /**\r\n * Clears all conditions in query.\r\n */\r\n Query.prototype.clearConditions = function () {\r\n this.root.clearConditions();\r\n this.root.linkType = LinkType.All;\r\n this.root.enabled = true;\r\n };\r\n /**\r\n * Clears all extra conditions in query\r\n */\r\n Query.prototype.clearExtraConditions = function () {\r\n this.extraConditions.clearConditions();\r\n };\r\n /**\r\n * Clears all drill downs\r\n */\r\n Query.prototype.clearDrillDowns = function () {\r\n this.drillDowns = [];\r\n };\r\n /**\r\n * Gets query ID.\r\n * @returns The ID>\r\n */\r\n Query.prototype.getId = function () {\r\n return this.id;\r\n };\r\n /**\r\n * Sets query ID.\r\n * @param id New Query ID.\r\n */\r\n Query.prototype.setId = function (id) {\r\n this.id = id;\r\n };\r\n /**\r\n * Regenerates current query ID.\r\n * @param id New Query ID.\r\n */\r\n Query.prototype.regenerateId = function () {\r\n this.id = dataUtils.generateId(\"quer\");\r\n };\r\n /**\r\n * Gets name of the query.\r\n * @retruns The name.\r\n */\r\n Query.prototype.getName = function () {\r\n return this.name;\r\n };\r\n /**\r\n * Sets name of the query\r\n * @param name New name.\r\n */\r\n Query.prototype.setName = function (name) {\r\n this.name = name;\r\n };\r\n /**\r\n * Gets description of the query.\r\n * @retruns The description.\r\n */\r\n Query.prototype.getDescription = function () {\r\n return this.description;\r\n };\r\n /**\r\n * Sets description of the query\r\n * @param description New description.\r\n */\r\n Query.prototype.setDescription = function (description) {\r\n this.description = description;\r\n };\r\n /**\r\n * Get array of columns.\r\n * @retruns Columns.\r\n */\r\n Query.prototype.getColumns = function () {\r\n return this.columns;\r\n };\r\n /**\r\n * Gets array of columns that are used as keys\r\n * for totals.\r\n */\r\n Query.prototype.getUsedInTotalsColumns = function () {\r\n var aggrs = this.getAggregatedColumns();\r\n if (aggrs.length === 0)\r\n return [];\r\n var cols = this.getColumns()\r\n .filter(function (col) { return col.enabled && col.expr.tag === ExprTag.EntityAttribute; });\r\n if (cols.length)\r\n cols.pop();\r\n return cols;\r\n };\r\n /**\r\n * Get array of columns used only in sorting.\r\n * @retruns Columns.\r\n */\r\n Query.prototype.getJustSortedColumns = function () {\r\n return this.justsorted;\r\n };\r\n /**\r\n * Gets array of columns used in sorting\r\n * @retruns Columns\r\n */\r\n Query.prototype.getSortedColumns = function () {\r\n var sortedCols = new Array();\r\n var cols = this.getColumns()\r\n .concat(this.getJustSortedColumns());\r\n for (var i = 0; i < cols.length; i++) {\r\n var col = cols[i];\r\n if (col.sortIndex >= 0) {\r\n sortedCols.push(col);\r\n }\r\n }\r\n sortedCols.sort(function (col1, col2) {\r\n return col1.sortIndex - col2.sortIndex;\r\n });\r\n return sortedCols;\r\n };\r\n /**\r\n * Gets Colummn sorting index.\r\n * @param col The column.\r\n * @retruns The index.\r\n */\r\n Query.prototype.getColumnSortIndex = function (col) {\r\n if (col.sorting != SortDirection.None) {\r\n if (col.sortIndex < 0) {\r\n var cols = this.getColumns()\r\n .concat(this.getJustSortedColumns());\r\n return dataUtils.indexOfArrayItem(cols, col);\r\n }\r\n else {\r\n return col.sortIndex;\r\n }\r\n }\r\n return -1;\r\n };\r\n Query.prototype.createColumn = function (justsorted) {\r\n if (justsorted === void 0) { justsorted = false; }\r\n return new QueryColumn(this, justsorted);\r\n };\r\n Query.prototype.getColumnById = function (id) {\r\n return dataUtils.findItemById(this.columns, id);\r\n };\r\n /**\r\n * Adds a new column with specified parameters\r\n * @param desriptor The descriptor of the new column. Can contain different parameters like:\r\n * `attribute` - a reference to a EntityAttr object,\r\n * `attributeId` - an ID of the entity attribute we need (if we don't indicate `attribute`),\r\n * `index`, sorting`, 'sortIndex` and other\r\n *\r\n * @param author The author of this operation. This parameter is used in EasyQuery widgets only to indicate which of the initiates the change.\r\n * @retruns The column.\r\n * @example\r\n * query.addColumn({\r\n * attributeId: 'Customers.CompanyName',\r\n * sortIndex: SortDirection.Ascending\r\n * }});\r\n */\r\n Query.prototype.addColumn = function (descriptor, author) {\r\n var columns = (descriptor.justsorted)\r\n ? this.justsorted\r\n : this.columns;\r\n var newColumn;\r\n if (descriptor.column) {\r\n newColumn = descriptor.column;\r\n }\r\n else {\r\n newColumn = this.createColumn(descriptor.justsorted);\r\n var attr = void 0;\r\n if (descriptor.attribute) {\r\n attr = descriptor.attribute;\r\n }\r\n else if (descriptor.attributeId) {\r\n attr = this.model.getAttributeById(descriptor.attributeId);\r\n if (!attr) {\r\n throw new Error(\"Incorrect attribute id (\" + descriptor.attributeId + \"): addColumn\");\r\n }\r\n }\r\n else {\r\n throw new Error('Not enought data for addColumn operation. Need attribute or attributeId');\r\n }\r\n if (!attr.useInResult) {\r\n if (attr.lookupAttr) {\r\n attr = this.model.getAttributeById(attr.lookupAttr);\r\n }\r\n if (!attr || !attr.useInResult) {\r\n throw new Error(\"Can't use this attribute for a column\");\r\n }\r\n }\r\n if (descriptor.aggrFuncId && descriptor.cusomtSql) {\r\n console.warn(\"Column cannot be created using aggrFuncId and customSql at the same time. \" +\r\n \"cusomSql will be used.\");\r\n }\r\n if (descriptor.cusomtSql) {\r\n newColumn.caption = 'Custom SQL Column';\r\n newColumn.expr.tag = ExprTag.CustomSql;\r\n newColumn.expr.baseAttrId = attr.id;\r\n newColumn.expr.sql = descriptor.cusomtSql;\r\n newColumn.expr.kind = DataKind.Query;\r\n newColumn.expr.dataType = DataType.Unknown;\r\n }\r\n else if (descriptor.aggrFuncId) {\r\n var funcId = descriptor.aggrFuncId;\r\n newColumn.caption = attr.caption + ' '\r\n + this.model.getAggrFunctionCaption(descriptor.aggrFuncId);\r\n newColumn.expr.tag = ExprTag.AggregateFunction;\r\n newColumn.expr.func = descriptor.aggrFuncId;\r\n newColumn.expr.kind = DataKind.Scalar;\r\n newColumn.expr.dataType = funcId == 'COUNT' || funcId == 'CNTDST' ? 4 : attr.dataType;\r\n newColumn.expr.distinct = false;\r\n var arg = new Expression(newColumn);\r\n arg.setValue(attr.id, true);\r\n arg.tag = ExprTag.EntityAttribute;\r\n arg.dataType = attr.dataType;\r\n newColumn.expr.args.push(arg);\r\n }\r\n else {\r\n newColumn.caption = attr.caption;\r\n newColumn.expr.setValue(attr.id, true);\r\n newColumn.expr.tag = ExprTag.EntityAttribute;\r\n newColumn.expr.dataType = attr.dataType;\r\n }\r\n newColumn.caption = descriptor.caption || newColumn.caption;\r\n newColumn.sorting = descriptor.sorting || SortDirection.None;\r\n newColumn.sortIndex = descriptor.sortIndex || -1;\r\n newColumn.enabled = dataUtils.getIfDefined(descriptor.enabled, true);\r\n newColumn.setReadOnly(dataUtils.getIfDefined(descriptor.readonly, false));\r\n }\r\n if (descriptor.index && descriptor.index >= 0 && descriptor.index < columns.length) {\r\n columns.splice(descriptor.index, 0, newColumn);\r\n }\r\n else {\r\n columns.push(newColumn);\r\n }\r\n return newColumn;\r\n };\r\n /**\r\n * Adds a new column with specified index.\r\n * @param column The column or array of columns\r\n * @param index The index of new column\r\n * @param author The author.\r\n * @example\r\n * const column = new Column();\r\n * column.caption = \"Company name\";\r\n *\r\n * query.addColumn(column, 1)\r\n */\r\n Query.prototype.addColumnObj = function (column, index, author) {\r\n var columns = this.columns;\r\n if (typeof column.length == \"undefined\") {\r\n if (typeof index == \"number\") {\r\n columns.splice(index, 0, column);\r\n }\r\n else {\r\n columns.push(column);\r\n }\r\n }\r\n else {\r\n if (typeof index == \"number\") {\r\n columns.push.apply(columns, [index, 0].concat(column));\r\n }\r\n else {\r\n columns.push.apply(columns, [].concat(column));\r\n }\r\n }\r\n };\r\n /**\r\n * Changes column to Aggregate function, custom expression or simple column.\r\n * @param column The column to change.\r\n * @param tag New column expression tag.\r\n * @param args The arguments (Contains aggregate function id)\r\n */\r\n Query.prototype.changeColumnType = function (column, tag, args) {\r\n if (column.isJustSorted())\r\n return;\r\n args = args || {};\r\n column.caption = (typeof args.caption !== 'undefined')\r\n ? args.caption\r\n : '';\r\n if (tag === ExprTag.AggregateFunction) {\r\n if (!args.funcId)\r\n throw Error('\"funcId\" argument is not defined');\r\n if (column.expr.tag == ExprTag.AggregateFunction) {\r\n column.expr.func = args.funcId;\r\n return;\r\n }\r\n var expr = new Expression(column);\r\n expr.tag = ExprTag.AggregateFunction;\r\n expr.func = args.funcId;\r\n expr.distinct = false;\r\n expr.dataType = args.funcId == 'COUNT' || args.funcId == 'CNTDST' ? 4 : column.expr.dataType;\r\n var arg = new Expression(column);\r\n arg.loadFromData(this.model, column.expr.saveToData());\r\n expr.args.push(arg);\r\n column.expr = expr;\r\n }\r\n else if (tag === ExprTag.CustomSql) {\r\n var attrId = (column.expr.tag == ExprTag.AggregateFunction)\r\n ? column.expr.args[0].value\r\n : column.expr.value;\r\n var sqlText = '';\r\n if (this.model) {\r\n sqlText = this.model.getAttributeById(attrId).expr;\r\n }\r\n var customSqlExpr = new Expression(column);\r\n customSqlExpr.tag = ExprTag.CustomSql;\r\n customSqlExpr.dataType = DataType.String; //the default data type\r\n customSqlExpr.sql = sqlText;\r\n customSqlExpr.baseAttrId = attrId;\r\n column.expr = customSqlExpr;\r\n }\r\n else if (tag === ExprTag.EntityAttribute) {\r\n if (column.expr.tag === ExprTag.EntityAttribute\r\n || column.expr.tag === ExprTag.ParentEntityAttribute) {\r\n return;\r\n }\r\n var exprId = (column.expr.tag === ExprTag.CustomSql)\r\n ? column.expr.baseAttrId\r\n : column.expr.args[0].value;\r\n var attr = this.model.getAttributeById(exprId);\r\n var expr = new Expression(column);\r\n expr.tag = ExprTag.EntityAttribute;\r\n expr.dataType = attr != null ? attr.dataType : DataType.Unknown;\r\n expr.setValue(exprId, true);\r\n column.expr = expr;\r\n }\r\n };\r\n /**\r\n * Moves the column with specified index to another position.\r\n * @param index1 The index of the column that should be moved.\r\n * @param index2 The index of the position the column should be moved to\r\n * @param author The author\r\n */\r\n Query.prototype.moveColumn = function (index1, index2) {\r\n var columns = this.getColumns();\r\n dataUtils.moveArrayItem(columns, index1, index2);\r\n };\r\n /**\r\n * Removes the column.\r\n * @param column The column to be removed.\r\n * @param author The author\r\n */\r\n Query.prototype.removeColumn = function (column, author) {\r\n var columns = (column.isJustSorted())\r\n ? this.getJustSortedColumns()\r\n : this.getColumns();\r\n dataUtils.removeArrayItem(columns, column);\r\n };\r\n /**\r\n * Adds a condition group - a group of simple conditions (predicates) linked by AND or OR\r\n * @param descriptor The descriptor of the new condition group.\r\n * @returns The new search condition.\r\n */\r\n Query.prototype.addConditionGroup = function (descriptor, addChildCondition) {\r\n if (addChildCondition === void 0) { addChildCondition = true; }\r\n console.error(\"Community version doesn't support working with groups.\");\r\n return null;\r\n };\r\n Query.prototype.addExtraConditionGroup = function (descriptor, addChildCondition) {\r\n if (addChildCondition === void 0) { addChildCondition = true; }\r\n console.error(\"Community version doesn't support working with groups.\");\r\n return null;\r\n };\r\n Query.prototype.createCondition = function (tag) {\r\n if (tag === void 0) { tag = CondTag.Simple; }\r\n return new Condition(this, tag);\r\n };\r\n /**\r\n * Adds a new simple condition (a predicate)\r\n * @param descriptor The descriptor which defines different parameters of the new condition\r\n * @returns The new condition.\r\n */\r\n Query.prototype.addSimpleCondition = function (descriptor) {\r\n var parent = descriptor.parent || this.getRootCondition();\r\n var model = this.getModel();\r\n if (!model)\r\n return null;\r\n if (!descriptor.attribute && !descriptor.attributeId) {\r\n throw new Error(\"Either `attribute` or `attributeId` parameter must have a value\");\r\n }\r\n if (!descriptor.attribute) {\r\n descriptor.attribute = model.getAttributeById(descriptor.attributeId);\r\n if (!descriptor.attribute) {\r\n throw new Error(\"Could not find this attribute: \" + descriptor.attributeId);\r\n }\r\n }\r\n if (!descriptor.operator && descriptor.operatorId) {\r\n descriptor.operator = model.getOperatorById(descriptor.operatorId);\r\n }\r\n if (!descriptor.operator) {\r\n descriptor.operator = model.getDefaultOperatorForAttr(descriptor.attribute);\r\n }\r\n var cond = this.createSimpleConditionObject(descriptor.attribute, descriptor.operator, descriptor.value);\r\n parent.addCondition(cond);\r\n cond.enabled = dataUtils.getIfDefined(descriptor.enabled, true);\r\n cond.setReadOnly(dataUtils.getIfDefined(descriptor.readonly, false));\r\n return cond;\r\n };\r\n Query.prototype.addSimpleExtraCondition = function (descriptor) {\r\n descriptor.parent = descriptor.parent || this.extraConditions;\r\n return this.addSimpleCondition(descriptor);\r\n };\r\n Query.prototype.createSimpleConditionObject = function (attr, operator, inputValues) {\r\n if (!attr || !attr.useInConditions) {\r\n var attrCaption = attr ? attr.caption : 'NULL';\r\n throw \"Can't add a condition with such attribute: \" + attrCaption;\r\n }\r\n var cond = this.createCondition(CondTag.Simple);\r\n cond.setOperatorId(operator.id, true);\r\n var attrExpr = new Expression(cond);\r\n attrExpr.setValue(attr.id, true);\r\n attrExpr.tag = this.attributeExprTag;\r\n attrExpr.kind = DataKind.Attribute;\r\n attrExpr.dataType = attr.dataType;\r\n cond.expressions.push(attrExpr);\r\n var model = this.getModel();\r\n var valCount = operator.paramCount;\r\n var values = dataUtils.fillArray(new Array(valCount - 1), null);\r\n if (inputValues !== null && typeof inputValues !== \"undefined\") {\r\n if (Array.isArray(inputValues)) {\r\n dataUtils.copyArrayTo(inputValues, values);\r\n }\r\n else if (valCount > 0) {\r\n values[0] = inputValues;\r\n }\r\n }\r\n var valLength = values.length;\r\n for (var i = 0; i < valLength; i++) {\r\n var operand = model.getOperand(attr, operator, i + 1);\r\n cond.addExpressionByOperand(operand, values[i]);\r\n }\r\n return cond;\r\n };\r\n /**\r\n * Removes several columns passed as array.\r\n * @param columnsToRemove The list of columns to be removed.\r\n * @param author The author.\r\n */\r\n Query.prototype.removeColumns = function (columnsToRemove, author) {\r\n var justSortedColumns = columnsToRemove.filter(function (c) { return c.isJustSorted(); });\r\n var columns = columnsToRemove.filter(function (c) { return !c.isJustSorted(); });\r\n function removeFromArray(arr, arrToRemove) {\r\n var ctrLen = arrToRemove.length;\r\n for (var i = 0; i < ctrLen; i++) {\r\n var index = arr.indexOf(arrToRemove[i]);\r\n if (index >= 0) {\r\n arr.splice(index, 1);\r\n }\r\n }\r\n }\r\n if (columns.length > 0) {\r\n removeFromArray(this.getColumns(), columns);\r\n }\r\n if (justSortedColumns.length > 0) {\r\n removeFromArray(this.getJustSortedColumns(), justSortedColumns);\r\n }\r\n };\r\n /**\r\n * Fires process event.\r\n * @param data The data.\r\n */\r\n Query.prototype.fireProcessEvent = function (data) {\r\n this.eventEmitter.fire('query.process', data);\r\n };\r\n Query.prototype.fireChangedEvent = function (params, postpone, wasModified) {\r\n params = params || { part: QueryChangePart.All };\r\n if (typeof (postpone) != 'undefined' || typeof (wasModified) != 'undefined') {\r\n params.postpone = postpone || 0;\r\n params.wasModified = wasModified;\r\n console.warn('Method with \\'postpone\\' and \\'wasModified\\' args is deprecated. Pass params in data object');\r\n }\r\n this._isModified = typeof (params.wasModified) != 'undefined'\r\n ? params.wasModified\r\n : true;\r\n var eventData = params || {\r\n part: QueryChangePart.All\r\n };\r\n this.eventEmitter.fire('query.change', eventData, params.postpone || 0);\r\n };\r\n Query.prototype.fireColumnsChangedEvent = function (action, column, justsorted) {\r\n if (justsorted === void 0) { justsorted = false; }\r\n this.fireChangedEvent({\r\n part: (justsorted)\r\n ? QueryChangePart.SortingColumns\r\n : QueryChangePart.Columns,\r\n action: action,\r\n changee: column\r\n });\r\n };\r\n Query.prototype.fireConditionsChangedEvent = function (action, condition) {\r\n this.fireChangedEvent({\r\n part: QueryChangePart.Conditions,\r\n action: action,\r\n changee: condition\r\n });\r\n };\r\n /**\r\n * Runs through condition with this callback.\r\n * @param processCondition The function to process condition.\r\n */\r\n Query.prototype.runThroughConditions = function (processCondition) {\r\n var processGroup = function (predicate) {\r\n for (var i = 0; i < predicate.getConditions().length; i++) {\r\n var cond = predicate.getConditions()[i];\r\n if (cond.isGroup()) {\r\n processGroup(cond);\r\n }\r\n else {\r\n if (processCondition)\r\n processCondition(cond);\r\n }\r\n }\r\n };\r\n processGroup(this.getRootCondition());\r\n };\r\n /**\r\n * Gets one value for the attribute\r\n * @param attrId The attribute ID.\r\n * @retruns The value.\r\n */\r\n Query.prototype.getOneValueForAttr = function (attrId) {\r\n var res = null;\r\n this.runThroughConditions(function (cond) {\r\n if (cond.enabled) {\r\n var expr = cond.expressions[0];\r\n var opid = cond.getOperatorId();\r\n if (expr.value == attrId && cond.expressions[1] &&\r\n (opid == \"Equal\" || opid == \"InList\" || opid == \"StartsWith\")) {\r\n res = cond.expressions[1].value;\r\n }\r\n }\r\n });\r\n return res;\r\n };\r\n /**\r\n * Gets root predicate\r\n * @retruns The condition.\r\n */\r\n Query.prototype.getRootCondition = function () {\r\n return this.root;\r\n };\r\n /**\r\n * Add process callback\r\n * @param callback The callback.\r\n * @retruns The callback ID.\r\n */\r\n Query.prototype.addProcessCallback = function (callback) {\r\n return this.eventEmitter.subscribe('query.process', callback);\r\n };\r\n /**\r\n * Remove process callback\r\n * @param callbackId The callback ID.\r\n */\r\n Query.prototype.removeProcessCallback = function (callbackId) {\r\n this.eventEmitter.unsubscribe('query.process', callbackId);\r\n };\r\n /**\r\n * Add changed callback\r\n * @param callback The callback ID.\r\n */\r\n Query.prototype.addChangedCallback = function (callback) {\r\n return this.eventEmitter.subscribe('query.change', callback);\r\n };\r\n /**\r\n * Remove changed callback\r\n * @param callbackId The callback ID.\r\n */\r\n Query.prototype.removeChangedCallback = function (callbackId) {\r\n this.eventEmitter.unsubscribe('query.change', callbackId);\r\n };\r\n /**\r\n * Retruns conditions text\r\n */\r\n Query.prototype.getConditionsText = function () {\r\n var _this = this;\r\n var model = this.getModel();\r\n if (!model)\r\n return '';\r\n var getConditionGroupText = function (group) {\r\n var result = '', conjKey = \"Conj\" + equtils.linkTypeToStr(group.linkType), conjText = i18n.getText(conjKey), condText, i;\r\n for (i = 0; i < group.getConditions().length; i++) {\r\n condText = \"\";\r\n var cond = group.getConditions()[i];\r\n if (cond.enabled || typeof (cond.enabled) === \"undefined\") {\r\n if (cond.isGroup()) {\r\n condText = getConditionGroupText(cond);\r\n if (condText) {\r\n condText = \"(\" + condText + \")\";\r\n }\r\n }\r\n else {\r\n var opId = cond.getOperatorId();\r\n var operator = model.getOperatorById(opId);\r\n var parts = equtils.parseOperatorFormat(operator);\r\n var plen = parts.length;\r\n for (var pi = 0; pi < plen; pi++) {\r\n var part = parts[pi];\r\n var txt = part.text;\r\n if (part.type == \"expression\") {\r\n var expr = cond.expressions[part.index];\r\n if (expr.kind == DataKind.Attribute || expr.tag == ExprTag.EntityAttribute) {\r\n var attr = model.getAttributeById(expr.value);\r\n txt = model.getAttributeText(attr, \"{entity} {attr}\");\r\n }\r\n else {\r\n txt = expr.getText();\r\n if (_this.model.isDateMacro(txt) || _this.model.isTimeMacro(txt)) {\r\n var macroText = txt.substring(3, txt.length - 2);\r\n var res = i18n.getText(macroText);\r\n txt = res || txt;\r\n }\r\n }\r\n }\r\n if (pi > 0)\r\n condText += \" \";\r\n condText += txt;\r\n }\r\n }\r\n }\r\n if (condText) {\r\n if (i > 0 && result) {\r\n result += \" \" + conjText + \" \";\r\n }\r\n result += condText;\r\n }\r\n }\r\n if (group.linkType == LinkType.None || group.linkType == LinkType.NotAll) {\r\n result = \"not ( \" + result + \" )\";\r\n }\r\n return result;\r\n };\r\n return getConditionGroupText(this.getRootCondition());\r\n };\r\n /**\r\n * Retruns conditions text\r\n */\r\n Query.prototype.getConditionsTextAsHtml = function () {\r\n var _this = this;\r\n var model = this.getModel();\r\n if (!model)\r\n return '
';\r\n var quoteExprText = function (expr) {\r\n if (expr.kind == DataKind.Query) {\r\n return \"<\" + expr.getText() + \">\";\r\n }\r\n else if (expr.kind == DataKind.List) {\r\n return \"[\" + expr.getText() + \"]\";\r\n }\r\n else if (expr.dataType == DataType.String\r\n || expr.dataType == DataType.Memo\r\n || expr.dataType == DataType.FixedChar) {\r\n return \""\" + expr.getText() + \""\";\r\n }\r\n else {\r\n var txt = expr.getText();\r\n if (_this.model.isDateMacro(txt) || _this.model.isTimeMacro(txt)) {\r\n var macroText = txt.substring(3, txt.length - 2);\r\n var res = i18n.getText(macroText);\r\n txt = res || txt;\r\n }\r\n return txt;\r\n }\r\n };\r\n var getConditionGroupText = function (group) {\r\n var result = '', conjKey = \"Conj\" + equtils.linkTypeToStr(group.linkType), conjText = \"\" + i18n.getText(conjKey) + \"\", condText, i;\r\n for (i = 0; i < group.getConditions().length; i++) {\r\n condText = \"\";\r\n var cond = group.getConditions()[i];\r\n if (cond.enabled || typeof (cond.enabled) === \"undefined\") {\r\n if (cond.isGroup()) {\r\n condText = getConditionGroupText(cond);\r\n if (condText) {\r\n condText = \"(\" + condText + \")\";\r\n }\r\n }\r\n else {\r\n var opId = cond.getOperatorId();\r\n var operator = model.getOperatorById(opId);\r\n var parts = equtils.parseOperatorFormat(operator);\r\n var plen = parts.length;\r\n for (var pi = 0; pi < plen; pi++) {\r\n var part = parts[pi];\r\n var txt = part.text;\r\n if (part.type == \"expression\") {\r\n var expr = cond.expressions[part.index];\r\n if (expr.kind == DataKind.Attribute || expr.tag == ExprTag.EntityAttribute) {\r\n var attr = model.getAttributeById(expr.value);\r\n txt = \"\" + model.getAttributeText(attr, \"{entity} {attr}\") + \"\";\r\n }\r\n else {\r\n txt = \"\" + quoteExprText(expr) + \"\";\r\n }\r\n }\r\n else if (part.type == \"operator\") {\r\n txt = \"\" + txt + \"\";\r\n }\r\n if (pi > 0)\r\n condText += \" \";\r\n condText += txt;\r\n }\r\n }\r\n }\r\n if (condText) {\r\n if (i > 0 && result) {\r\n result += \" \" + conjText + \" \";\r\n }\r\n result += condText;\r\n }\r\n }\r\n if (group.linkType == LinkType.None || group.linkType == LinkType.NotAll) {\r\n result = \"not ( \" + result + \" )\";\r\n }\r\n return result;\r\n };\r\n return \"
\" + getConditionGroupText(this.getRootCondition()) + \"
\";\r\n };\r\n return Query;\r\n}());\r\nexport { Query };\r\n//# sourceMappingURL=query.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { ExprTag } from '@easyquery/core';\r\nimport { createBrowserEvent, domel } from '@easydata/ui';\r\nimport { ColumnRendererCP } from './column_renderer_cp';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nvar SimpleColumnRendererCP = /** @class */ (function (_super) {\r\n __extends(SimpleColumnRendererCP, _super);\r\n function SimpleColumnRendererCP() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SimpleColumnRendererCP.prototype.getClassesToAdd = function () {\r\n return _super.prototype.getClassesToAdd.call(this) + \" \" + this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-column-entattr\";\r\n };\r\n SimpleColumnRendererCP.prototype.renderExpressionBlock = function () {\r\n var _this = this;\r\n return domel(\"div\")\r\n .addClass(this.cssPrefix + \"-expr-block\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-colelement\", _this.cssPrefix + \"-attrelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(_this.renderBaseExpression()); })\r\n .toDOM();\r\n };\r\n SimpleColumnRendererCP.prototype.renderBaseExpression = function () {\r\n var _this = this;\r\n var attrCaption = this.getAttributeCaption(this.baseAttr);\r\n if (this.isEditable()) {\r\n return domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .title(attrCaption)\r\n .text(attrCaption) //TO DO:add localization\r\n .on('click', function (ev) {\r\n ev.stopPropagation();\r\n _this.panel.showEntitiesMenu({\r\n anchor: ev.target,\r\n selectedIds: null,\r\n itemSelectedCallback: _this.baseExpressionItemSelectedCallback.bind(_this),\r\n itemFilterCallback: function (item) { return item.id !== '__AddAll__'; }\r\n });\r\n return false;\r\n })\r\n .toDOM();\r\n }\r\n return domel('span')\r\n .text(attrCaption)\r\n .title(attrCaption)\r\n .toDOM();\r\n };\r\n SimpleColumnRendererCP.prototype.baseExpressionItemSelectedCallback = function (data, item) {\r\n var attrid = data.id;\r\n this.column.expr.setValue(attrid, true);\r\n this.column.caption = '';\r\n this.fireColumnChanged();\r\n return false;\r\n };\r\n SimpleColumnRendererCP.prototype.getUIS = function () {\r\n var arg = this.column.expr.args[0];\r\n if (arg) {\r\n var model = this.panel.getContext().getModel();\r\n return model.checkAttrProperty(arg.value, \"useInSorting\");\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n SimpleColumnRendererCP.prototype.changeTypeHandler = function (ev) {\r\n var _this = this;\r\n this.keepShowingButtons = true;\r\n this.functionMenu.showMenu({\r\n anchor: ev.target,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n _this.processExtraButtonMenuItems(data.id, null);\r\n return false;\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock) {\r\n _this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n };\r\n SimpleColumnRendererCP.prototype.changeTypeToCustomSql = function () {\r\n var _this = this;\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.CustomSql);\r\n var parentElement = this.element.parentElement;\r\n setTimeout(function () {\r\n //focus CustomSQL Edit\r\n var newElement = parentElement.querySelector(\"div[data-id='\" + _this.column.id + \"'] div[class*='\" + _this.cssPrefix + \"-expr-block'] div[class*='\" + _this.cssPrefix + \"-colelement'] a\");\r\n if (newElement)\r\n newElement.click();\r\n }, 500);\r\n this.fireColumnChanged();\r\n };\r\n SimpleColumnRendererCP.prototype.changeTypeToAggr = function (funcId) {\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.AggregateFunction, { funcId: funcId });\r\n this.fireColumnChanged();\r\n };\r\n SimpleColumnRendererCP.prototype.processExtraButtonMenuItems = function (action, evt) {\r\n if (action === \"CUSTOMSQL\") {\r\n this.changeTypeToCustomSql();\r\n }\r\n else {\r\n this.changeTypeToAggr(action);\r\n }\r\n return true;\r\n };\r\n SimpleColumnRendererCP.prototype.getExtraButtonMenuItems = function () {\r\n var items = [];\r\n var funcs = this.panel.getContext().getModel().getAggrFunctions();\r\n var toInclude = true;\r\n var funcAllowed = true;\r\n var item = null;\r\n var attribute = this.getAttribute();\r\n var funcCaption;\r\n for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {\r\n var func = funcs_1[_i];\r\n toInclude = func.getAppliedTypesOrDefault().indexOf(attribute.dataType) >= 0;\r\n if (this.column.expr.func === func.id && !toInclude) {\r\n funcAllowed = false;\r\n }\r\n if (toInclude) {\r\n funcCaption = this.panel.getContext().getModel().getAggrFunctionCaption(func.id);\r\n item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n }\r\n for (var idx = 0; idx < funcs.length; idx++) {\r\n if (!funcs[idx])\r\n continue;\r\n }\r\n if (!funcAllowed) {\r\n this.column.expr.func = items[0].id;\r\n }\r\n //Add \"Custom Expression\" menu\r\n var columnsPanel = this.panel;\r\n if (columnsPanel.areCustomExpressionsAllowed()) {\r\n item = {\r\n id: 'CustomSqlDivider',\r\n text: '---'\r\n };\r\n items.push(item);\r\n funcCaption = i18n.getText('CustomExpression');\r\n item = {\r\n id: 'CUSTOMSQL',\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n return [{\r\n id: '__group',\r\n text: i18n.getText('ColTypeGroup'),\r\n items: items\r\n }];\r\n };\r\n return SimpleColumnRendererCP;\r\n}(ColumnRendererCP));\r\nexport { SimpleColumnRendererCP };\r\n//# sourceMappingURL=simple_column_renderer.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nvar ResultFacet = /** @class */ (function () {\r\n function ResultFacet(container, options) {\r\n var _this = this;\r\n this.container = container;\r\n this.title = i18n.getText('Facets', 'DefaultFacetTitle');\r\n this.cssPrefix = 'eqjs-facet';\r\n this.dialogTitle = i18n.getText('Facets', 'DefaultDlgTitle');\r\n this.options = {};\r\n this.canDisplayFlag = true;\r\n this.downloadAllClickHandler = function () {\r\n var resultTable = _this.getContext().resultTable;\r\n if (!resultTable.elasticChunks) {\r\n var nextChunkStart_1 = resultTable.getCachedRows().length;\r\n var recordsToLoad_1 = resultTable.getTotal() - resultTable.getCachedCount();\r\n var ds = _this.getDialogService();\r\n var dlg_1 = ds.openProgress({\r\n title: i18n.getText('Facets', 'LoadDataDlgTitle'),\r\n content: i18n.getText('Facets', 'LoadDataDlgContent')\r\n .replace('{loadedRecs}', '0')\r\n .replace('{totalRecs}', \"\" + recordsToLoad_1),\r\n onSubmit: function () { return _this.refresh(); },\r\n determinated: true\r\n });\r\n var loadedRecords_1 = 0;\r\n setTimeout(function () {\r\n resultTable.getRows({ offset: nextChunkStart_1, limit: recordsToLoad_1 })\r\n .then(function (_) {\r\n loadedRecords_1 += _.length;\r\n var progress = loadedRecords_1 / recordsToLoad_1;\r\n dlg_1.updateContent(i18n.getText('Facets', 'LoadDataDlgContent')\r\n .replace('{loadedRecs}', \"\" + loadedRecords_1)\r\n .replace('{totalRecs}', \"\" + recordsToLoad_1));\r\n dlg_1.updateProgress(progress);\r\n })\r\n .catch(function (error) {\r\n dlg_1.submit();\r\n _this.getContext().throwError(error);\r\n });\r\n }, 10);\r\n }\r\n else {\r\n var ds = _this.getDialogService();\r\n var dlg_2 = ds.openProgress({\r\n title: i18n.getText('Facets', 'LoadDataDlgTitle'),\r\n onSubmit: function () { return _this.refresh(); },\r\n determinated: false\r\n });\r\n _this.loadElasticChunk()\r\n .then(function (_) {\r\n dlg_2.submit();\r\n })\r\n .catch(function (error) {\r\n dlg_2.submit();\r\n _this.getContext().throwError(error);\r\n });\r\n }\r\n };\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n ResultFacet.prototype.init = function (slot) {\r\n this.slot = slot;\r\n this.contentDiv = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-content\")\r\n .toDOM();\r\n this.displayMessageDiv = domel('div', this.slot).hide().toDOM();\r\n };\r\n ResultFacet.prototype.showSettingsDialog = function () {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n var ds = _this.getDialogService();\r\n var content = _this.renderDialogContent();\r\n var dlg = ds.open({\r\n title: _this.dialogTitle,\r\n body: content,\r\n cancelable: true,\r\n closable: false,\r\n onSubmit: function () {\r\n var submited = _this.submitSettingsDialog();\r\n if (submited) {\r\n resolve(true);\r\n }\r\n return submited;\r\n },\r\n onCancel: function () {\r\n resolve(false);\r\n }\r\n });\r\n _this.afterDialogOpened(dlg);\r\n });\r\n };\r\n ResultFacet.prototype.afterDialogOpened = function (dlg) {\r\n };\r\n ResultFacet.prototype.renderDialogContent = function () {\r\n var fieldsContainer;\r\n var b = domel('div')\r\n .addClass('kfrm-form')\r\n .addChild('div', function (b) { return fieldsContainer = b\r\n .addClass(\"\" + (browserUtils.isIE()\r\n ? 'kfrm-fields-ie col-ie-1-4 label-align-right'\r\n : 'kfrm-fields col-a-1 label-align-right'))\r\n .toDOM(); });\r\n this.renderFormFields(b.toDOM(), fieldsContainer);\r\n return b.toDOM();\r\n };\r\n ResultFacet.prototype.renderFormFields = function (form, fieldsContainer) {\r\n var _this = this;\r\n var cont = fieldsContainer;\r\n if (browserUtils.isIE()) {\r\n cont = domel('div', fieldsContainer)\r\n .addClass('kfrm-field-ie')\r\n .toDOM();\r\n }\r\n domel(cont)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'tab_name')\r\n .addText(i18n.getText('Facets', 'TabNameLabel')); })\r\n .addChild('input', function (b) { return b\r\n .id('facetTabName')\r\n .name('tab_name')\r\n .type('text')\r\n .attr('value', _this.title); });\r\n };\r\n ResultFacet.prototype.submitSettingsDialog = function () {\r\n var tabNameInput = document.querySelector('#facetTabName');\r\n if (tabNameInput.value.length == 0)\r\n return false;\r\n this.title = tabNameInput.value;\r\n return true;\r\n };\r\n ResultFacet.prototype.getDialogService = function () {\r\n return this.getContext()\r\n .getServices()\r\n .getDialogService();\r\n };\r\n ResultFacet.prototype.canDisplay = function () {\r\n var context = this.getContext();\r\n var resultTable = context.resultTable;\r\n return (resultTable.getCachedCount() == resultTable.getTotal());\r\n };\r\n ResultFacet.prototype.showErrorMessage = function (message) {\r\n this.displayMessageDiv.innerHTML = message;\r\n this.displayMessageDiv.classList.add(this.cssPrefix + \"-error-message\");\r\n domel(this.displayMessageDiv).show();\r\n };\r\n ResultFacet.prototype.showUnableDisplayMessage = function (message) {\r\n var context = this.getContext();\r\n var resultTable = context.resultTable;\r\n this.displayMessageDiv.innerHTML = message || i18n.getText('Facets', 'ErrNotEnoughData')\r\n .replace('{totalRecs}', \"\" + resultTable.getTotal())\r\n .replace('{cachedRecs}', \"\" + resultTable.getCachedCount())\r\n .replace(/\\[(.*)\\]/g, \"$1\");\r\n var link = this.displayMessageDiv.querySelector(\"a.\" + this.cssPrefix + \"-download-all-link\");\r\n if (link) {\r\n link.addEventListener('click', this.downloadAllClickHandler);\r\n }\r\n domel(this.contentDiv).hide();\r\n domel(this.displayMessageDiv).show();\r\n };\r\n ResultFacet.prototype.hideUnableDisplayMessage = function () {\r\n domel(this.displayMessageDiv).hide();\r\n domel(this.contentDiv).show();\r\n };\r\n ResultFacet.prototype.getContext = function () {\r\n return this.container.getContext();\r\n };\r\n ResultFacet.prototype.getQuery = function () {\r\n return this.getContext().getQuery();\r\n };\r\n ResultFacet.prototype.saveToData = function () {\r\n return { title: this.title, type: this.getType() };\r\n };\r\n ResultFacet.prototype.loadFromData = function (data) {\r\n if (data) {\r\n this.title = data.title;\r\n }\r\n };\r\n ResultFacet.prototype.refresh = function () {\r\n this.hideUnableDisplayMessage();\r\n if (this.canDisplay()) {\r\n this.refreshCore();\r\n }\r\n else {\r\n this.showUnableDisplayMessage();\r\n }\r\n };\r\n ResultFacet.prototype.loadElasticChunk = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var resultTable, nextChunkStart;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n resultTable = this.getContext().resultTable;\r\n nextChunkStart = resultTable.getCachedRows().length;\r\n //next chunk\r\n return [2 /*return*/, resultTable.getRows({ offset: nextChunkStart, limit: resultTable.chunkSize })\r\n .then(function (_) {\r\n return resultTable.totalIsKnown()\r\n ? Promise.resolve()\r\n : _this.loadElasticChunk();\r\n })];\r\n });\r\n });\r\n };\r\n ResultFacet.prototype.onResize = function () {\r\n };\r\n return ResultFacet;\r\n}());\r\nexport { ResultFacet };\r\n//# sourceMappingURL=result_facet.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\nvar LocaleWidget = /** @class */ (function (_super) {\r\n __extends(LocaleWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function LocaleWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.changeLocale = function () {\r\n var newLocale = _this.selectEl.value;\r\n i18n.setCurrentLocale(newLocale);\r\n _this.context.refreshWidgets(WidgetGroup.All);\r\n };\r\n _this.group = WidgetGroup.None;\r\n return _this;\r\n }\r\n LocaleWidget.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.clear();\r\n this.render();\r\n };\r\n LocaleWidget.prototype.getWidgetType = function () {\r\n return 'changeLocale';\r\n };\r\n LocaleWidget.prototype.render = function () {\r\n var locales = i18n.getLocales();\r\n if (locales.length > 1) {\r\n this.selectEl = document.createElement('select');\r\n for (var _i = 0, locales_1 = locales; _i < locales_1.length; _i++) {\r\n var locale = locales_1[_i];\r\n var optionEl = document.createElement('option');\r\n optionEl.value = locale.locale;\r\n optionEl.innerHTML = this.displayLocaleName(locale);\r\n this.selectEl.appendChild(optionEl);\r\n }\r\n this.selectEl.value = i18n.getCurrentLocale();\r\n this.selectEl.classList.add('eqv-select');\r\n this.selectEl.addEventListener('change', this.changeLocale);\r\n this.slot.appendChild(this.selectEl);\r\n }\r\n };\r\n LocaleWidget.prototype.displayLocaleName = function (locale) {\r\n if (locale.englishName && locale.displayName) {\r\n return locale.englishName + \" - \" + locale.displayName;\r\n }\r\n else if (locale.englishName) {\r\n return locale.englishName;\r\n }\r\n else if (locale.displayName) {\r\n return locale.displayName;\r\n }\r\n return locale.locale;\r\n };\r\n LocaleWidget.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n LocaleWidget.prototype.destroyCore = function () {\r\n this.clear();\r\n };\r\n return LocaleWidget;\r\n}(Widget));\r\nexport { LocaleWidget };\r\n//# sourceMappingURL=locale_widget.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n/**\r\n * The widget responsed for rendering the name of the current query.\r\n */\r\nvar QueryNameWidget = /** @class */ (function (_super) {\r\n __extends(QueryNameWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The HTML element where our widget should be placed.\r\n */\r\n function QueryNameWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.queryEventCallbackId = null;\r\n _this.group = WidgetGroup.Query | WidgetGroup.QueryStatus;\r\n return _this;\r\n }\r\n QueryNameWidget.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n };\r\n Object.defineProperty(QueryNameWidget.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-query-name';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n QueryNameWidget.prototype.getWidgetType = function () {\r\n return 'queryName';\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n QueryNameWidget.prototype.refreshCore = function () {\r\n this.render();\r\n };\r\n QueryNameWidget.prototype.render = function () {\r\n this.slot.classList.add(\"\" + this.cssPrefix);\r\n var mobClass = browserUtils.getMobileCssClass();\r\n if (mobClass) {\r\n this.slot.classList.add(mobClass);\r\n }\r\n if (!this.nameSlot) {\r\n this.nameSlot = document.createElement('div');\r\n this.nameSlot.classList.add(this.cssPrefix + \"-text\");\r\n this.nameSlot.classList.add(this.cssPrefix + \"-theme\");\r\n this.slot.appendChild(this.nameSlot);\r\n }\r\n if (!this.asteriskSlot) {\r\n this.asteriskSlot = document.createElement('span');\r\n this.asteriskSlot.innerHTML = \"*\";\r\n this.asteriskSlot.classList.add(this.cssPrefix + \"-asterisk\");\r\n this.slot.appendChild(this.asteriskSlot);\r\n }\r\n if (!this.tooltipSlot) {\r\n this.tooltipSlot = document.createElement('span');\r\n this.tooltipSlot.classList.add(this.cssPrefix + \"-tooltip\");\r\n this.tooltipSlot.classList.add(this.cssPrefix + \"-theme\");\r\n this.slot.appendChild(this.tooltipSlot);\r\n }\r\n // Update\r\n var queryName = this.context.getQuery().getName();\r\n this.nameSlot.textContent = queryName;\r\n this.tooltipSlot.textContent = queryName;\r\n this.asteriskSlot.style.visibility = this.context.getQuery().isModified() ? \"visible\" : \"hidden\";\r\n };\r\n QueryNameWidget.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n this.nameSlot = null;\r\n this.tooltipSlot = null;\r\n this.asteriskSlot = null;\r\n };\r\n QueryNameWidget.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.context.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n _this.refreshCore();\r\n });\r\n };\r\n QueryNameWidget.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.context.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n QueryNameWidget.prototype.destroyCore = function () {\r\n this.clear();\r\n this.detachQueryObserver();\r\n };\r\n return QueryNameWidget;\r\n}(Widget));\r\nexport { QueryNameWidget };\r\n//# sourceMappingURL=queryname_widget.js.map","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { EqContext, WidgetGroup } from '@easyquery/core';\r\nimport { DefaultDialogService, addElement, domel } from '@easydata/ui';\r\nimport { EasyGridWidget } from '../widgets/easy_grid_widget';\r\nimport { ChartJsWidget } from '../widgets/charts/chart_widget_chartjs';\r\nimport { EntitiesPanel } from '../widgets/entities_panel';\r\nimport { ColumnsPanel } from '../widgets/columns_panel';\r\nimport { ColumnsBar } from '../widgets/columns_bar';\r\nimport { LocaleWidget } from '../widgets/locale_widget';\r\nimport { QueryPanel } from '../widgets/query_panel';\r\nimport { ProcessWidget } from '../widgets/process_widget';\r\nimport { FilterBar } from '../widgets/filter_bar';\r\nimport { SortingBar } from '../widgets/sorting_bar';\r\nimport { QueryNameWidget } from '../widgets/queryname_widget';\r\nimport { StatementPanel } from '../widgets/statement_panel';\r\nimport { ResultFacetsPanel } from '../widgets/result_facets_panel';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { ExportWidget } from '../widgets/export_widget';\r\nimport { AggregationBar } from '../widgets/aggregation_bar';\r\nvar View = /** @class */ (function () {\r\n // Widgets END\r\n function View() {\r\n this.domRoots = [document];\r\n this.defaultViewOptions = {\r\n enableExport: true,\r\n disableConfirmationOnQueryChange: false,\r\n queryFileExtensions: 'text/xml,application/json',\r\n result: {\r\n clearResultOnQueryChange: true,\r\n showChart: true,\r\n showProcessIndicator: true\r\n },\r\n widgets: {\r\n resultGrid: {\r\n addColumns: false\r\n }\r\n },\r\n handlers: {}\r\n };\r\n this.viewOptions = {};\r\n this.resultOptions = {};\r\n this.enableExport = false;\r\n this.resetContext();\r\n this.renderSpinner();\r\n }\r\n View.prototype.resetContext = function () {\r\n this.context = new EqContext();\r\n this.context\r\n .getServices()\r\n .registerDialogServiceResolver(function () { return new DefaultDialogService(); });\r\n };\r\n View.prototype.init = function (options) {\r\n try {\r\n this.context.initStart();\r\n // to support shadow DOM rendering\r\n if (options && options.shadowRoots)\r\n this.domRoots = this.domRoots.concat(options.shadowRoots);\r\n this.viewOptions = this.initOptions(options);\r\n this.resultOptions = dataUtils.assignDeep(this.defaultViewOptions.result, this.viewOptions.result);\r\n this.initWidgets(this.viewOptions);\r\n this.context.init(this.viewOptions);\r\n this.initDone();\r\n }\r\n catch (err) {\r\n this.context.throwError({ action: 'Init', sourceError: err });\r\n }\r\n };\r\n View.prototype.initOptions = function (options) {\r\n options = dataUtils.assignDeep(this.defaultViewOptions, options);\r\n // support old format \r\n if (!options.widgets.easyGrid) {\r\n options.widgets.easyGrid = options.widgets.resultGrid || {};\r\n }\r\n // map columnTitleFormat option to widgets that have similar option\r\n if (options.columnTitleFormat) {\r\n options.widgets.entitiesPanel = options.widgets.entitiesPanel || {};\r\n options.widgets.entitiesPanel.columnTitleFormat = options.widgets.entitiesPanel.columnTitleFormat || options.columnTitleFormat;\r\n options.widgets.columnsBar = options.widgets.columnsBar || {};\r\n options.widgets.columnsBar.titleElementFormat = options.widgets.columnsBar.titleElementFormat || options.columnTitleFormat;\r\n options.widgets.columnsPanel = options.widgets.columnsPanel || {};\r\n options.widgets.columnsPanel.titleElementFormat = options.widgets.columnsPanel.titleElementFormat || options.columnTitleFormat;\r\n }\r\n //to support old paging options (should be removed in the next versions)\r\n options.widgets.easyGrid.paging =\r\n dataUtils.assignDeep({}, options.result.paging, options.widgets.easyGrid.paging);\r\n this.enableExport = options.enableExport || false;\r\n if (!options.widgets.exportWidget) {\r\n options.widgets.exportWidget = {};\r\n }\r\n options.widgets.exportWidget.enableExport = this.enableExport;\r\n return options;\r\n };\r\n View.prototype.initWidgets = function (options) {\r\n var queryPanel = \"QueryPanel\";\r\n var columnsPanel = \"ColumnsPanel\";\r\n var entitiesPanel = \"EntitiesPanel\";\r\n var resultPanel = \"ResultPanel\";\r\n var columnsBar = \"ColumnsBar\";\r\n var sortingBar = \"SortingBar\";\r\n var filterBar = \"FilterBar\";\r\n var processBar = \"ProcessBar\";\r\n var statementPanel = \"StatementPanel\";\r\n var changeLocale = \"ChangeLocale\";\r\n var queryNameLabel = \"QueryNameLabel\";\r\n var facetsPanel = \"ResultFacetsPanel\";\r\n var resultCount = \"ResultCount\";\r\n var exportButton = \"ExportButton\";\r\n var aggregationBar = \"AggregationBar\";\r\n if (options.slots) {\r\n queryNameLabel = options.slots.queryNameLabel || queryNameLabel;\r\n queryPanel = options.slots.queryPanel || queryPanel;\r\n columnsPanel = options.slots.columnsPanel || columnsPanel;\r\n columnsBar = options.slots.columnsBar || columnsBar;\r\n entitiesPanel = options.slots.entitiesPanel || entitiesPanel;\r\n resultPanel = options.slots.resultPanel || resultPanel;\r\n statementPanel = options.slots.statementPanel || statementPanel;\r\n processBar = options.slots.processBar || processBar;\r\n changeLocale = options.slots.changeLocale || changeLocale;\r\n facetsPanel = options.slots.facetsPanel || facetsPanel;\r\n resultCount = options.slots.resultCountSpan || resultCount;\r\n filterBar = options.slots.filterBar || filterBar;\r\n exportButton = options.slots.exportButtons || exportButton;\r\n aggregationBar = options.slots.aggregationBar || aggregationBar;\r\n }\r\n var epElement = this.resolveElement(entitiesPanel);\r\n if (epElement && !this.entitiesPanelWidget) {\r\n this.entitiesPanelWidget = this.createEntitiesPanelWidget(epElement);\r\n this.context.addWidget(this.entitiesPanelWidget);\r\n }\r\n var cpElement = this.resolveElement(columnsPanel);\r\n if (cpElement && !this.columnsPanelWidget) {\r\n this.columnsPanelWidget = this.createColumnsPanelWidget(cpElement);\r\n this.context.addWidget(this.columnsPanelWidget);\r\n }\r\n var cbElement = this.resolveElement(columnsBar);\r\n if (cbElement && !this.columnsBarWidget) {\r\n this.columnsBarWidget = this.createColumnsBarWidget(cbElement);\r\n this.context.addWidget(this.columnsBarWidget);\r\n }\r\n var qpElement = this.resolveElement(queryPanel);\r\n if (qpElement && !this.queryPanelWidget) {\r\n this.queryPanelWidget = this.createQueryPanelWidget(qpElement);\r\n this.context.addWidget(this.queryPanelWidget);\r\n }\r\n this.resultPanelSlot = this.resolveElement(resultPanel);\r\n if (this.resultPanelSlot) {\r\n if (!this.resultGridWidget) {\r\n var gridPanel = addElement(this.resultPanelSlot, 'div', { cssClass: 'eqv-result-grid' });\r\n this.resultGridWidget = this.createResultGridWidget(gridPanel);\r\n this.context.addWidget(this.resultGridWidget);\r\n }\r\n if (this.resultOptions.showChart && !this.chartWidget) {\r\n var chartPanel = addElement(this.resultPanelSlot, 'div', { cssClass: 'eqv-chart-panel' });\r\n chartPanel.style.display = 'none';\r\n this.chartWidget = this.createChartWidget(chartPanel);\r\n this.context.addWidget(this.chartWidget);\r\n }\r\n }\r\n var qnElement = this.resolveElement(queryNameLabel);\r\n if (qnElement && !this.queryNameWidget) {\r\n this.queryNameWidget = this.createQueryNameWidget(qnElement);\r\n this.context.addWidget(this.queryNameWidget);\r\n }\r\n var fbElement = this.resolveElement(filterBar);\r\n if (fbElement && !this.filterBarWidget) {\r\n this.filterBarWidget = this.createFilterBarWidget(fbElement);\r\n this.context.addWidget(this.filterBarWidget);\r\n }\r\n var sbElement = this.resolveElement(sortingBar);\r\n if (sbElement && !this.sortingBarWidget) {\r\n this.sortingBarWidget = this.createSortingBarWidget(sbElement);\r\n this.context.addWidget(this.sortingBarWidget);\r\n }\r\n var pbElement = this.resolveElement(processBar);\r\n if (pbElement && !this.processWidget) {\r\n this.processWidget = this.createProcessWidget(pbElement);\r\n this.context.addWidget(this.processWidget);\r\n }\r\n var stElement = this.resolveElement(statementPanel);\r\n if (stElement && !this.statementPanelWidget) {\r\n this.statementPanelWidget = this.createStatementPanelWidget(stElement);\r\n this.context.addWidget(this.statementPanelWidget);\r\n }\r\n var clElement = this.resolveElement(changeLocale);\r\n if (clElement) {\r\n var widget = this.createLocaleWidget(clElement);\r\n this.context.addWidget(widget);\r\n }\r\n var fpElement = this.resolveElement(facetsPanel);\r\n if (fpElement && !this.resultFacetPanelWidget) {\r\n this.resultFacetPanelWidget = this.createResultFacetsPanel(fpElement);\r\n this.context.addWidget(this.resultFacetPanelWidget);\r\n }\r\n var ewElement = this.resolveElement(exportButton);\r\n if (ewElement && !this.exportWidget) {\r\n this.exportWidget = this.createExportWidget(ewElement);\r\n this.context.addWidget(this.exportWidget);\r\n }\r\n this.resultCountSlot = this.resolveElement(resultCount);\r\n var aggrbElement = this.resolveElement(aggregationBar);\r\n if (aggrbElement && !this.aggregationBarWidget) {\r\n this.aggregationBarWidget = this.createAggregationBarWidget(aggrbElement);\r\n this.context.addWidget(this.aggregationBarWidget);\r\n }\r\n };\r\n View.prototype.initDone = function () { };\r\n View.prototype.resolveElement = function (elementOrId) {\r\n if (typeof elementOrId === 'string') {\r\n for (var _i = 0, _a = this.domRoots; _i < _a.length; _i++) {\r\n var domRoot = _a[_i];\r\n var el = domRoot.getElementById(elementOrId);\r\n if (el)\r\n return el;\r\n }\r\n return null;\r\n }\r\n return elementOrId;\r\n };\r\n View.prototype.resolveElementsByClassName = function (className) {\r\n var result = [];\r\n for (var _i = 0, _a = this.domRoots; _i < _a.length; _i++) {\r\n var domRoot = _a[_i];\r\n var elemList = domRoot.querySelectorAll('.' + className);\r\n for (var i = 0; i < elemList.length; i++) {\r\n result.push(elemList[i]);\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * Shows records count.\r\n * @param count The value to show.\r\n */\r\n View.prototype.displayRecordsCount = function (count) {\r\n if (this.resultCountSlot && (typeof count !== 'undefined')) {\r\n this.resultCountSlot.style.display = \"inline\";\r\n this.resultCountSlot.innerHTML = i18n.getText(\"MsgResultCount\").replace(\"{0}\", count.toString());\r\n }\r\n };\r\n View.prototype.getContext = function () {\r\n return this.context;\r\n };\r\n /**\r\n * Sets dialog service for the view\r\n * @param dialogService The dialog service.\r\n */\r\n View.prototype.setDialogService = function (dialogService) {\r\n this.context.getServices()\r\n .registerDialogServiceResolver(function () { return dialogService; });\r\n };\r\n /** @deprecated `executeQuery` is deprecated. Use `fetchData` instead*/\r\n View.prototype.executeQuery = function (options) {\r\n console.warn('`executeQuery` is deprecated. Use `fetchData` instead');\r\n this.fetchData(options);\r\n };\r\n /**\r\n * Fetches the data according to the query and other options defined in the context.\r\n * @param options The options.\r\n */\r\n View.prototype.fetchData = function (options) {\r\n var _this = this;\r\n options = options || { refresh: true };\r\n this.context.clearResult();\r\n //don't run fetch if the query is empty\r\n if (this.context.getQuery().isEmpty() && !this.resultOptions.fetchEmptyQueries)\r\n return;\r\n this.showResultSpinner();\r\n this.context.fetchData({\r\n elasticPaging: options.elasticPaging,\r\n success: function (result) {\r\n _this.hideResultSpinner();\r\n _this.toggleExportButtons();\r\n _this.displayRecordsCount(_this.context.resultTable.getTotal());\r\n if (options.refresh === true) {\r\n _this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n if (options.callback) {\r\n options.callback();\r\n }\r\n if (options.success) {\r\n options.success();\r\n }\r\n },\r\n error: function () {\r\n _this.hideResultSpinner();\r\n }\r\n });\r\n };\r\n View.prototype.toggleExportButtons = function () {\r\n if (this.enableExport && this.context.resultTable\r\n && this.context.resultTable.getCachedCount() > 0) {\r\n this.enableExportButtons();\r\n }\r\n else {\r\n this.disableExportButtons();\r\n }\r\n };\r\n View.prototype.enableExportButtons = function () {\r\n // Nothing to do\r\n };\r\n View.prototype.disableExportButtons = function () {\r\n // Nothing to do\r\n };\r\n View.prototype.renderSpinner = function () {\r\n var html = '
';\r\n ;\r\n this._spinnerDiv = domel('div')\r\n .addClass(\"eqjs-result-spinner\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-progress-win8\", browserUtils.getMobileCssClass())\r\n .addHtml(html); })\r\n .toDOM();\r\n };\r\n View.prototype.showResultSpinner = function () {\r\n if (this.resultOptions.showProcessIndicator && this.resultPanelSlot) {\r\n if (!this._spinnerDiv.parentNode) {\r\n for (var i = 0; i < this.resultPanelSlot.children.length; i++) {\r\n var el = this.resultPanelSlot.children[i];\r\n domel(el).hide();\r\n }\r\n this.resultPanelSlot.appendChild(this._spinnerDiv);\r\n }\r\n }\r\n };\r\n View.prototype.hideResultSpinner = function () {\r\n if (this.resultOptions.showProcessIndicator && this.resultPanelSlot) {\r\n if (this._spinnerDiv.parentNode) {\r\n this._spinnerDiv.parentNode.removeChild(this._spinnerDiv);\r\n for (var i = 0; i < this.resultPanelSlot.children.length; i++) {\r\n var el = this.resultPanelSlot.children[i];\r\n domel(el).show();\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Creates the widget that represents Chart Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createChartWidget = function (slotElement) {\r\n if (this.resultOptions.chartWidgetResolver) {\r\n return this.resultOptions.chartWidgetResolver(slotElement);\r\n }\r\n else {\r\n return new ChartJsWidget(slotElement);\r\n }\r\n };\r\n /**\r\n * Creates the widget that represents Grid Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createResultGridWidget = function (slotElement) {\r\n if (this.resultOptions.resultGridResolver) {\r\n return this.resultOptions.resultGridResolver(slotElement);\r\n }\r\n else {\r\n return new EasyGridWidget(slotElement);\r\n }\r\n };\r\n /**\r\n * Creates the widget that represents Entity Panel.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createEntitiesPanelWidget = function (slot) {\r\n return new EntitiesPanel(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Columns Panel.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createColumnsPanelWidget = function (slot) {\r\n return new ColumnsPanel(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Query Panel.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createQueryPanelWidget = function (slot) {\r\n return new QueryPanel(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Locale Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createLocaleWidget = function (slot) {\r\n return new LocaleWidget(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Process Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createProcessWidget = function (slot) {\r\n return new ProcessWidget(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Columns Bar.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createColumnsBarWidget = function (slot) {\r\n return new ColumnsBar(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Filter Bar.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createFilterBarWidget = function (slot) {\r\n return new FilterBar(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Sorting Bar.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createSortingBarWidget = function (slot) {\r\n return new SortingBar(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Query Name Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n View.prototype.createQueryNameWidget = function (slot) {\r\n return new QueryNameWidget(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Statement Panel Widget.\r\n * @param slot\r\n */\r\n View.prototype.createStatementPanelWidget = function (slot) {\r\n return new StatementPanel(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Result Facets Panel Widget.\r\n * @param slot\r\n */\r\n View.prototype.createResultFacetsPanel = function (slot) {\r\n return new ResultFacetsPanel(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Export funcionality.\r\n * @param slot\r\n */\r\n View.prototype.createExportWidget = function (slot) {\r\n return new ExportWidget(slot);\r\n };\r\n /**\r\n * Creates the widget that represents Aggregation Bar Widget.\r\n * @param slot\r\n */\r\n View.prototype.createAggregationBarWidget = function (slot) {\r\n return new AggregationBar(slot);\r\n };\r\n View.prototype.detach = function () {\r\n if (this.entitiesPanelWidget) {\r\n this.entitiesPanelWidget.destroy();\r\n this.entitiesPanelWidget = null;\r\n }\r\n if (this.columnsPanelWidget) {\r\n this.columnsPanelWidget.destroy();\r\n this.columnsPanelWidget = null;\r\n }\r\n if (this.queryPanelWidget) {\r\n this.queryPanelWidget.destroy();\r\n this.queryPanelWidget = null;\r\n }\r\n if (this.columnsBarWidget) {\r\n this.columnsBarWidget.destroy();\r\n this.columnsBarWidget = null;\r\n }\r\n if (this.resultGridWidget) {\r\n this.resultGridWidget.destroy();\r\n this.resultGridWidget = null;\r\n }\r\n if (this.chartWidget) {\r\n this.chartWidget.destroy();\r\n this.chartWidget = null;\r\n }\r\n if (this.queryNameWidget) {\r\n this.queryNameWidget.destroy();\r\n this.queryNameWidget = null;\r\n }\r\n if (this.processWidget) {\r\n this.processWidget.destroy();\r\n this.processWidget = null;\r\n }\r\n if (this.localeWidget) {\r\n this.localeWidget.destroy();\r\n this.localeWidget = null;\r\n }\r\n if (this.statementPanelWidget) {\r\n this.statementPanelWidget.destroy();\r\n this.statementPanelWidget = null;\r\n }\r\n if (this.filterBarWidget) {\r\n this.filterBarWidget.destroy();\r\n this.filterBarWidget = null;\r\n }\r\n if (this.sortingBarWidget) {\r\n this.sortingBarWidget.destroy();\r\n this.sortingBarWidget = null;\r\n }\r\n if (this.statementWidget) {\r\n this.statementWidget.destroy();\r\n this.statementWidget = null;\r\n }\r\n if (this.exportWidget) {\r\n this.exportWidget.destroy();\r\n this.exportWidget = null;\r\n }\r\n if (this.resultFacetPanelWidget) {\r\n this.resultFacetPanelWidget.destroy();\r\n this.resultFacetPanelWidget = null;\r\n }\r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.innerHTML = '';\r\n this.resultCountSlot = null;\r\n }\r\n if (this.resultPanelSlot) {\r\n this.resultPanelSlot.innerHTML = '';\r\n this.resultPanelSlot = null;\r\n }\r\n this.domRoots = [document];\r\n this.resetContext();\r\n };\r\n return View;\r\n}());\r\nexport { View };\r\n//# sourceMappingURL=view.js.map","import { DataType, utils as dataUtils } from '@easydata/core';\r\nimport { EqValueEditor } from './value_editor';\r\nimport { DataKind } from '../types/data_kind';\r\n/**\r\n * Represents a logical expression or predicate, like comparisions or `LIKE` predicate.\r\n */\r\nvar Operator = /** @class */ (function () {\r\n /** The default constructor. */\r\n function Operator() {\r\n this.id = \"\";\r\n this.expr = \"\";\r\n this.constValueFormat = \"{const}\";\r\n this.caption = \"{Unrecognized operator}\";\r\n this.displayFormat = \"{expr1} [[{unrecognized operator}]] {expr2}\";\r\n this.isRange = false;\r\n this.caseIns = false;\r\n this.paramCount = 2;\r\n this.defaultOperand = new Operand();\r\n this.appliedTypes = [];\r\n this.operands = new Array();\r\n }\r\n /**\r\n * Loads operator from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param data The JSON representation object.\r\n */\r\n Operator.prototype.loadFromData = function (model, data) {\r\n if (data) {\r\n this.id = data.id;\r\n this.caption = data.cptn;\r\n this.caseIns = data.caseIns;\r\n this.isRange = data.isRange;\r\n this.displayFormat = data.fmt;\r\n this.paramCount = data.pcnt;\r\n this.expr = data.expr;\r\n this.appliedTypes = data.dtypes || this.appliedTypes;\r\n if (data.defOperand) {\r\n this.defaultOperand.loadFromData(model, data.defOperand);\r\n }\r\n if (data.editor) {\r\n this.defaultOperand.editor = model.getEditorById(data.editor) || new EqValueEditor();\r\n }\r\n if (data.operands) {\r\n for (var i = 0; i < data.operands.length; i++) {\r\n var newOperand = new Operand();\r\n newOperand.loadFromData(model, data.operands[i]);\r\n if (data.editor) {\r\n newOperand.editor = model.getEditorById(data.editor) || new EqValueEditor();\r\n }\r\n this.operands.push(newOperand);\r\n }\r\n }\r\n }\r\n };\r\n return Operator;\r\n}());\r\nexport { Operator };\r\n/**\r\n * Represents one operand in some operator's expression\r\n */\r\nvar Operand = /** @class */ (function () {\r\n /** The default constructor. */\r\n function Operand() {\r\n this.kind = DataKind.Scalar;\r\n this.dataType = DataType.Unknown;\r\n this.editor = new EqValueEditor();\r\n this.defValue = \"\";\r\n }\r\n /**\r\n * Loads operand from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param data The JSON representation object.\r\n */\r\n Operand.prototype.loadFromData = function (model, operand) {\r\n this.kind = operand.kind;\r\n this.dataType = operand.dtype;\r\n this.defValue = operand.val;\r\n this.defText = operand.txt;\r\n ;\r\n if (operand.editor) {\r\n this.editor = model.getEditorById(operand.editor) || new EqValueEditor();\r\n }\r\n };\r\n /**\r\n * Copies operand from other operand.\r\n * @param scr The operand.\r\n */\r\n Operand.prototype.copyFrom = function (src) {\r\n dataUtils.assign(this, src);\r\n };\r\n return Operand;\r\n}());\r\nexport { Operand };\r\n//# sourceMappingURL=operator.js.map","export var AutoResizeColumns;\r\n(function (AutoResizeColumns) {\r\n AutoResizeColumns[AutoResizeColumns[\"Always\"] = 0] = \"Always\";\r\n AutoResizeColumns[AutoResizeColumns[\"Once\"] = 1] = \"Once\";\r\n AutoResizeColumns[AutoResizeColumns[\"Never\"] = 2] = \"Never\";\r\n})(AutoResizeColumns || (AutoResizeColumns = {}));\r\n//# sourceMappingURL=easy_grid_options.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { equtils, QueryChangeAction } from '@easyquery/core';\r\nimport { createBrowserEvent, domel } from '@easydata/ui';\r\nimport { TextRenderer } from './text_renderer';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nexport var ConditionAction;\r\n(function (ConditionAction) {\r\n ConditionAction[ConditionAction[\"AddCondition\"] = 0] = \"AddCondition\";\r\n ConditionAction[ConditionAction[\"AddGroup\"] = 1] = \"AddGroup\";\r\n ConditionAction[ConditionAction[\"Enable\"] = 2] = \"Enable\";\r\n ConditionAction[ConditionAction[\"Delete\"] = 4] = \"Delete\";\r\n ConditionAction[ConditionAction[\"Menu\"] = 5] = \"Menu\";\r\n ConditionAction[ConditionAction[\"Parameterized\"] = 6] = \"Parameterized\";\r\n ConditionAction[ConditionAction[\"InJoin\"] = 7] = \"InJoin\";\r\n})(ConditionAction || (ConditionAction = {}));\r\nvar ConditionRenderer = /** @class */ (function () {\r\n function ConditionRenderer(panel, condition, slot) {\r\n this.panel = panel;\r\n this.condition = condition;\r\n this.element = slot || domel('div').toDOM();\r\n }\r\n Object.defineProperty(ConditionRenderer.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ConditionRenderer.prototype.refresh = function () {\r\n this.render();\r\n };\r\n ConditionRenderer.prototype.clear = function () {\r\n if (this.element) {\r\n this.element.className = '';\r\n this.element.removeAttribute('data-id');\r\n this.element.removeAttribute('style');\r\n domel(this.element)\r\n .html('');\r\n }\r\n };\r\n ConditionRenderer.prototype.render = function (autoAppear) {\r\n this.clear();\r\n //this.preRender();\r\n this.coreRender(autoAppear);\r\n if (this.panel.options.onConditionRendered) {\r\n this.panel.options.onConditionRendered(this.condition, this.element);\r\n }\r\n return this.element;\r\n };\r\n ConditionRenderer.prototype.isEditable = function () {\r\n return this.condition.enabled && !this.condition.isReadOnly();\r\n };\r\n return ConditionRenderer;\r\n}());\r\nexport { ConditionRenderer };\r\nvar SimpleConditionRenderer = /** @class */ (function (_super) {\r\n __extends(SimpleConditionRenderer, _super);\r\n function SimpleConditionRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SimpleConditionRenderer.prototype.getClassesToAdd = function () {\r\n var result = this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-condition\";\r\n result += this.condition.isInJoin() ? \" \" + this.cssPrefix + \"-condition-injoin\" : '';\r\n result += this.condition.isParameterized() ? \" \" + this.cssPrefix + \"-condition-parameterized\" : '';\r\n if (!browserUtils.isMobileMode()) {\r\n var level = this.condition.getLevel();\r\n if (level > 0)\r\n result += \" \" + this.cssPrefix + \"-level-\" + level;\r\n }\r\n result += this.condition.enabled ? '' : \" \" + this.cssPrefix + \"-disabled\";\r\n if (this.condition.enabled) {\r\n result += this.condition.isReadOnly() ? \" \" + this.cssPrefix + \"-readonly\" : '';\r\n }\r\n return result;\r\n };\r\n SimpleConditionRenderer.prototype.coreRender = function (autoAppear) {\r\n var _this = this;\r\n var model = this.panel.getContext().getModel();\r\n var operator = model.getOperatorById(this.condition.getOperatorId());\r\n var arrFormat = equtils.parseOperatorFormat(operator);\r\n var item = null;\r\n var arrLength = arrFormat.length;\r\n var builder = domel('div');\r\n if (this.element && this.element.parentNode) {\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n this.element = builder.toDOM();\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .data('id', this.condition.id)\r\n .data('condrow', '')\r\n .addChildElement(this.renderCheckbox())\r\n .addChildElement(this.renderConjunction());\r\n var mayAppear = autoAppear;\r\n var minLength = operator == model.nullOperator\r\n ? Math.min(arrLength, this.condition.expressions.length + 1)\r\n : arrLength;\r\n var _loop_1 = function (idx) {\r\n item = arrFormat[idx];\r\n if (item.type === 'operator') {\r\n var renderer = this_1.panel.getOperatorRenderer(this_1.condition, item.text);\r\n if (renderer) {\r\n builder.addChildElement(renderer.render());\r\n }\r\n }\r\n else if (item.type === 'expression') {\r\n var toAppear = mayAppear && (item.index > 0);\r\n var exprRenderer_1 = this_1.panel.getExpressionRenderer(this_1.condition.expressions[item.index]);\r\n if (exprRenderer_1) {\r\n var el = exprRenderer_1.render(toAppear);\r\n builder.addChildElement(el);\r\n setTimeout(function () {\r\n exprRenderer_1.adjustWidth();\r\n }, 100);\r\n }\r\n mayAppear = mayAppear && !toAppear;\r\n }\r\n else if (item.type === 'text') {\r\n builder.addChildElement(new TextRenderer(this_1.panel, item.text).render());\r\n }\r\n };\r\n var this_1 = this;\r\n for (var idx = 0; idx < minLength; idx++) {\r\n _loop_1(idx);\r\n }\r\n if (this.panel.options.accentActiveCondition || browserUtils.isMobileMode()) {\r\n builder.on('click', function (ev) {\r\n ev.stopPropagation();\r\n _this.panel.toggleConditionPicked(_this.condition);\r\n _this.adjustButtonsVisibility();\r\n if (!browserUtils.isMobileMode()) {\r\n _this.element.dispatchEvent(createBrowserEvent(\"mouseenter\"));\r\n }\r\n return false;\r\n });\r\n }\r\n builder\r\n .addChildElement(this.renderButtonsBlock());\r\n if (!browserUtils.isMobileMode()) {\r\n builder\r\n .on('mouseenter', function (event) {\r\n _this.isMouseOverBlock = true;\r\n _this.enterButtonBlock();\r\n event.stopPropagation();\r\n return false;\r\n })\r\n .on('mouseleave', function (event) {\r\n _this.isMouseOverBlock = false;\r\n if (!_this.keepShowingButtons && domel(_this.buttonsBlock).isVisible()) {\r\n _this.leaveButtonBlock();\r\n }\r\n event.stopPropagation();\r\n return false;\r\n });\r\n }\r\n };\r\n SimpleConditionRenderer.prototype.setConditionParameterized = function (value) {\r\n this.condition.setParameterized(value);\r\n this.condition.fireChangedEvent();\r\n };\r\n SimpleConditionRenderer.prototype.setConditionInJoin = function (value) {\r\n this.condition.setInJoin(value);\r\n this.condition.fireChangedEvent();\r\n };\r\n SimpleConditionRenderer.prototype.getConditionMenu = function () {\r\n return this.panel.getConditionMenu();\r\n };\r\n SimpleConditionRenderer.prototype.renderConjunction = function () {\r\n var parent = this.condition.getParent();\r\n if (!parent)\r\n return null;\r\n var isFirstConditionInGroup = dataUtils.findItemIndexById(parent.getConditions(), this.condition.id) == 0;\r\n if (this.panel.options.showConjunctions && !isFirstConditionInGroup) {\r\n var linkTypeStr = equtils.linkTypeToStr(this.condition.getParent().linkType);\r\n var conjuctionText = i18n.getText(\"Conj\" + linkTypeStr);\r\n return domel(\"span\")\r\n .text(conjuctionText)\r\n .title(conjuctionText)\r\n .addClass(this.cssPrefix + \"-condelement \" + this.cssPrefix + \"-condition-conjuction\")\r\n .toDOM();\r\n }\r\n return null;\r\n };\r\n SimpleConditionRenderer.prototype.renderCheckbox = function () {\r\n var _this = this;\r\n if (this.panel.options.showCheckboxes && !this.condition.isReadOnly()) {\r\n return domel(\"div\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .attr('tabIndex', '0')\r\n .addClass(this.cssPrefix + \"-condelement \" + this.cssPrefix + \"-condition-checkbox\")\r\n .addClass(\"\" + (this.condition.enabled ? 'enabled' : ''))\r\n .on('click', function () {\r\n _this.condition.enabled = !_this.condition.enabled;\r\n _this.condition.fireChangedEvent();\r\n return false;\r\n })\r\n .on('keypress', function (evt) { if ([13, 32].includes(evt.keyCode)) {\r\n evt.target.click();\r\n } })\r\n .toDOM();\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n SimpleConditionRenderer.prototype.isConditionActive = function () {\r\n return this.element.classList.contains(\"active\");\r\n };\r\n SimpleConditionRenderer.prototype.hideButtons = function () {\r\n domel(this.element).data(\"show-buttons\", null);\r\n };\r\n SimpleConditionRenderer.prototype.showButtons = function () {\r\n domel(this.element).data(\"show-buttons\", \"\");\r\n };\r\n SimpleConditionRenderer.prototype.adjustButtonsVisibility = function () {\r\n if (this.panel.options.alwaysShowButtonsInConditions\r\n || (this.panel.options.accentActiveCondition && this.isConditionActive())) {\r\n this.showButtons();\r\n }\r\n };\r\n SimpleConditionRenderer.prototype.enterButtonBlock = function () {\r\n this.showButtons();\r\n };\r\n SimpleConditionRenderer.prototype.leaveButtonBlock = function () {\r\n if (!this.panel.options.alwaysShowButtonsInConditions\r\n && (!this.isConditionActive() || !this.panel.options.accentActiveCondition)) {\r\n this.hideButtons();\r\n }\r\n };\r\n SimpleConditionRenderer.prototype.conditionMenuHandler = function (action, evt) {\r\n var _this = this;\r\n switch (action) {\r\n case ConditionAction.AddCondition:\r\n if (!this.condition.isGroup())\r\n return;\r\n var entMenu = this.panel.getEntitiesMenu();\r\n if (entMenu) {\r\n entMenu.showMenu({\r\n anchor: evt.target,\r\n itemSelectedCallback: function (item) {\r\n var query = _this.panel.getQuery();\r\n var descr = {\r\n parent: _this.condition,\r\n attributeId: item.id\r\n };\r\n var cond = query.addSimpleCondition(descr);\r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n break;\r\n case ConditionAction.AddGroup:\r\n if (!this.condition.isGroup())\r\n return;\r\n var query = this.panel.getQuery();\r\n var descr = {\r\n parent: this.condition\r\n };\r\n var group = this.panel.getQuery().addConditionGroup(descr);\r\n if (group) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, group);\r\n }\r\n break;\r\n case ConditionAction.Enable:\r\n this.condition.enabled = !this.condition.enabled;\r\n this.condition.fireChangedEvent();\r\n break;\r\n case ConditionAction.Delete:\r\n var parent_1 = this.condition.getParent();\r\n if (!parent_1)\r\n return;\r\n var conditions = parent_1.getConditions();\r\n var idx = conditions.indexOf(this.condition);\r\n if (idx >= 0) {\r\n conditions.splice(idx, 1);\r\n this.condition.getQuery().fireConditionsChangedEvent(QueryChangeAction.Delete, this.condition);\r\n }\r\n break;\r\n case ConditionAction.Menu:\r\n var condMenu = this.getConditionMenu();\r\n this.keepShowingButtons = true;\r\n condMenu.showMenu({\r\n anchor: evt.target,\r\n selectedIds: this.getConditionMenuSelectedItems(),\r\n itemSelectedCallback: function (item) {\r\n var action;\r\n switch (item.id) {\r\n case \"enable\":\r\n action = ConditionAction.Enable;\r\n break;\r\n case \"delete\":\r\n action = ConditionAction.Delete;\r\n break;\r\n case \"param\":\r\n action = ConditionAction.Parameterized;\r\n break;\r\n case \"inJoin\":\r\n action = ConditionAction.InJoin;\r\n break;\r\n case \"addCondition\":\r\n action = ConditionAction.AddCondition;\r\n break;\r\n case \"addGroup\":\r\n action = ConditionAction.AddGroup;\r\n break;\r\n }\r\n _this.conditionMenuHandler(action, evt);\r\n },\r\n itemFilterCallback: function (item) {\r\n var result = _this.condition.enabled || item.id === \"enable\" || item.id === \"delete\";\r\n if (item.id === \"enable\") {\r\n var parent_2 = _this.condition.getParent();\r\n result = result && parent_2 && parent_2.enabled;\r\n }\r\n else if (item.id === \"delete\") {\r\n result = result && ((_this.panel.options.editableParts & QPEditablePart.Removal) === QPEditablePart.Removal);\r\n }\r\n else if (item.id === \"addGroup\" || item.id === \"addCondition\") {\r\n result = result && ((_this.panel.options.editableParts & QPEditablePart.Addition) === QPEditablePart.Addition);\r\n }\r\n return result;\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock)\r\n _this.leaveButtonBlock();\r\n }\r\n });\r\n break;\r\n case ConditionAction.Parameterized:\r\n this.condition.setParameterized(!this.condition.isParameterized());\r\n this.condition.fireChangedEvent();\r\n break;\r\n case ConditionAction.InJoin:\r\n this.condition.setInJoin(!this.condition.isInJoin());\r\n this.condition.fireChangedEvent();\r\n break;\r\n }\r\n evt.stopPropagation();\r\n return false;\r\n };\r\n SimpleConditionRenderer.prototype.getConditionMenuSelectedItems = function () {\r\n var arrSelected = [];\r\n if (this.condition.enabled) {\r\n arrSelected.push(\"enable\");\r\n }\r\n ;\r\n if (this.condition.isParameterized()) {\r\n arrSelected.push(\"param\");\r\n }\r\n ;\r\n if (this.condition.isInJoin()) {\r\n arrSelected.push(\"inJoin\");\r\n }\r\n ;\r\n return arrSelected;\r\n };\r\n SimpleConditionRenderer.prototype.renderButtonsBlock = function () {\r\n var _this = this;\r\n var onButtonMouseEnter = function (evt) {\r\n domel(evt.target)\r\n .addClass(_this.cssPrefix + \"-condition-button-active\");\r\n };\r\n var onButtonMouseLeave = function (evt) {\r\n domel(evt.target)\r\n .removeClass(_this.cssPrefix + \"-condition-button-active\");\r\n };\r\n var builder = domel(\"div\")\r\n .addClass(this.cssPrefix + \"-condition-buttonsBlock\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n this.buttonsBlock = builder.toDOM();\r\n if (this.condition.isReadOnly()) {\r\n return this.buttonsBlock;\r\n }\r\n var buttonsToShow = this.getButtonsToShow();\r\n if (buttonsToShow.indexOf(\"addCondition\") >= 0 && this.condition.enabled\r\n && ((this.panel.options.editableParts & QPEditablePart.Addition) == QPEditablePart.Addition)) {\r\n builder.addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-button-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-condition-button \" + _this.cssPrefix + \"-condition-button-addCondition\")\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdAddCondition'))\r\n .on('click', function (evt) { return _this.conditionMenuHandler(ConditionAction.AddCondition, evt); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave);\r\n });\r\n });\r\n }\r\n ;\r\n var showAddGroupBtn = buttonsToShow.indexOf(\"addGroup\") >= 0 || buttonsToShow.indexOf(\"addPredicate\") >= 0;\r\n if (showAddGroupBtn && this.condition.enabled\r\n && ((this.panel.options.editableParts & QPEditablePart.Addition) == QPEditablePart.Addition)) {\r\n builder.addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-button-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-condition-button \" + _this.cssPrefix + \"-condition-button-addPredicate\")\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdAddCondGroup'))\r\n .on('click', function (evt) { return _this.conditionMenuHandler(ConditionAction.AddGroup, evt); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave);\r\n });\r\n });\r\n }\r\n ;\r\n if (this.getButtonsToShow().indexOf(\"enable\") >= 0 && this.condition.getParent() && this.condition.getParent().enabled) {\r\n builder.addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-button-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-condition-button \" + _this.cssPrefix + \"-condition-button-enable\")\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .addClass(_this.condition.enabled ? 'enabled' : '')\r\n .on('click', function (evt) { return _this.conditionMenuHandler(ConditionAction.Enable, evt); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave);\r\n });\r\n });\r\n }\r\n ;\r\n if (this.getButtonsToShow().indexOf(\"delete\") >= 0 && this.condition.getParent()\r\n && ((this.panel.options.editableParts & QPEditablePart.Removal) == QPEditablePart.Removal)) {\r\n builder.addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-button-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-condition-button \" + _this.cssPrefix + \"-condition-button-delete\")\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdDelete'))\r\n .on('click', function (evt) { return _this.conditionMenuHandler(ConditionAction.Delete, evt); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave);\r\n });\r\n });\r\n }\r\n ;\r\n if (this.getButtonsToShow().indexOf(\"menu\") >= 0) {\r\n builder.addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-button-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", function (b) {\r\n b.addClass(_this.cssPrefix + \"-condition-button \" + _this.cssPrefix + \"-condition-button-menu\")\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('ButtonMenu'))\r\n .on('click', function (evt) { return _this.conditionMenuHandler(ConditionAction.Menu, evt); });\r\n if (!browserUtils.isMobileMode()) {\r\n b\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave);\r\n }\r\n });\r\n });\r\n }\r\n ;\r\n this.adjustButtonsVisibility();\r\n return this.buttonsBlock;\r\n };\r\n SimpleConditionRenderer.prototype.getButtonsToShow = function () {\r\n return this.panel.options.buttons && this.panel.options.buttons.condition && Array.isArray(this.panel.options.buttons.condition) ? this.panel.options.buttons.condition : [\"enable\", \"delete\"];\r\n };\r\n return SimpleConditionRenderer;\r\n}(ConditionRenderer));\r\nexport { SimpleConditionRenderer };\r\n//# sourceMappingURL=condition_renderer.js.map","export var HttpMethod;\r\n(function (HttpMethod) {\r\n HttpMethod[\"Trace\"] = \"TRACE\";\r\n HttpMethod[\"Options\"] = \"OPTIONS\";\r\n HttpMethod[\"Get\"] = \"GET\";\r\n HttpMethod[\"Put\"] = \"PUT\";\r\n HttpMethod[\"Post\"] = \"POST\";\r\n HttpMethod[\"Delete\"] = \"DELETE\";\r\n})(HttpMethod || (HttpMethod = {}));\r\n//# sourceMappingURL=http_method.js.map","import { utils } from '@easydata/core';\r\nimport { getElementAbsolutePos } from './ui-utils';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nvar touchEventIsDefined = typeof TouchEvent !== 'undefined';\r\nexport var DropEffect;\r\n(function (DropEffect) {\r\n DropEffect[\"None\"] = \"none\";\r\n DropEffect[\"Allow\"] = \"allow\";\r\n DropEffect[\"Forbid\"] = \"forbid\";\r\n})(DropEffect || (DropEffect = {}));\r\nvar EqDragEvent = /** @class */ (function () {\r\n function EqDragEvent(item, dragImage, sourceEvent) {\r\n this.dropEffect = DropEffect.Allow;\r\n this.pageX = 0;\r\n this.pageY = 0;\r\n this.item = item;\r\n this.dragImage = dragImage;\r\n this.data = item.data;\r\n this.sourceEvent = sourceEvent;\r\n if (sourceEvent && sourceEvent instanceof MouseEvent) {\r\n this.pageX = sourceEvent.pageX,\r\n this.pageY = sourceEvent.pageY;\r\n }\r\n if (sourceEvent && touchEventIsDefined && sourceEvent instanceof TouchEvent\r\n && sourceEvent.touches[0]) {\r\n this.pageX = sourceEvent.touches[0].pageX,\r\n this.pageY = sourceEvent.touches[0].pageY;\r\n }\r\n }\r\n return EqDragEvent;\r\n}());\r\nexport { EqDragEvent };\r\nvar Position = /** @class */ (function () {\r\n function Position(ev) {\r\n if (ev && ev instanceof MouseEvent) {\r\n this.x = ev.pageX,\r\n this.y = ev.pageY;\r\n }\r\n if (ev && touchEventIsDefined && ev instanceof TouchEvent && ev.touches[0]) {\r\n this.x = ev.touches[0].pageX,\r\n this.y = ev.touches[0].pageY;\r\n }\r\n }\r\n return Position;\r\n}());\r\nvar DragManager = /** @class */ (function () {\r\n function DragManager() {\r\n this.delta = 5;\r\n this.draggableItem = null;\r\n this.dragImage = null;\r\n this.finishedSuccessfully = false;\r\n this.mouseDownPosition = null;\r\n this.containerDescriptors = [];\r\n this.containerDescriptorIndex = -1;\r\n this.dropEffect = DropEffect.None;\r\n this.classPrefix = 'eqjs-drop';\r\n this.DRAG_DISABLED_ATTR = 'drag-disabled';\r\n }\r\n DragManager.prototype.registerDraggableItem = function (descriptor) {\r\n var _this = this;\r\n var element = descriptor.element;\r\n if (!element) {\r\n throw Error(\"Element in draggle item is null or undefined\");\r\n }\r\n element.ondragstart = function () {\r\n return false;\r\n };\r\n var detectDragging = function (ev) {\r\n if (element.hasAttribute(_this.DRAG_DISABLED_ATTR)) {\r\n return;\r\n }\r\n ev.preventDefault();\r\n if (ev instanceof MouseEvent) {\r\n ev.stopPropagation();\r\n }\r\n var cursorPosition = new Position(ev);\r\n if (Math.abs(cursorPosition.x - _this.mouseDownPosition.x) > _this.delta\r\n || Math.abs(cursorPosition.y - _this.mouseDownPosition.y) > _this.delta) {\r\n startDragging(ev);\r\n }\r\n };\r\n var mouseMoveEventListener = function (ev) {\r\n _this.mouseMoveDragListener(ev);\r\n };\r\n var startDragging = function (ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n element.removeEventListener('mousemove', detectDragging);\r\n element.removeEventListener('touchmove', detectDragging);\r\n _this.finishedSuccessfully = false;\r\n if (descriptor.beforeDragStart)\r\n descriptor.beforeDragStart();\r\n _this.dragImage = domel('div')\r\n .setStyle('position', 'absolute')\r\n .setStyle('z-index', '65530')\r\n .toDOM();\r\n document.body.appendChild(_this.dragImage);\r\n _this.dragImage.appendChild(element.cloneNode(true));\r\n if (descriptor.renderer) {\r\n descriptor.renderer(_this.dragImage);\r\n }\r\n _this.dropEffect = DropEffect.None;\r\n _this.updateCusror(_this.dropEffect);\r\n _this.updateImageClass(_this.dropEffect);\r\n _this.draggableItem = {\r\n element: element,\r\n scope: descriptor.scope,\r\n data: descriptor.data\r\n };\r\n _this.updateDragItemPosition(ev);\r\n var event = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\r\n event.dropEffect = _this.dropEffect;\r\n if (descriptor.onDragStart) {\r\n descriptor.onDragStart(event);\r\n }\r\n if (_this.dropEffect !== event.dropEffect) {\r\n _this.dropEffect = event.dropEffect;\r\n _this.updateImageClass(_this.dropEffect);\r\n }\r\n document.addEventListener('mousemove', mouseMoveEventListener, true);\r\n document.addEventListener('touchmove', mouseMoveEventListener, true);\r\n };\r\n var mouseDownListener = function (ev) {\r\n if (touchEventIsDefined && ev instanceof TouchEvent) {\r\n ev.preventDefault();\r\n }\r\n _this.mouseDownPosition = new Position(ev);\r\n element.addEventListener('mousemove', detectDragging);\r\n element.addEventListener('touchmove', detectDragging);\r\n document.addEventListener('mouseup', mouseUpListener);\r\n document.addEventListener('touchend', mouseUpListener);\r\n };\r\n element.addEventListener('mousedown', mouseDownListener);\r\n element.addEventListener('touchstart', mouseDownListener);\r\n var mouseUpListener = function (ev) {\r\n _this.mouseDownPosition = null;\r\n element.removeEventListener('mousemove', detectDragging);\r\n element.removeEventListener('touchmove', detectDragging);\r\n document.removeEventListener('mousemove', mouseMoveEventListener, true);\r\n document.removeEventListener('touchmove', mouseMoveEventListener, true);\r\n if (_this.draggableItem) {\r\n endDraggind(ev);\r\n }\r\n };\r\n var endDraggind = function (ev) {\r\n try {\r\n if (_this.containerDescriptorIndex >= 0) {\r\n var dropContDesc = _this.containerDescriptors[_this.containerDescriptorIndex];\r\n var container = {\r\n element: dropContDesc.element,\r\n scopes: dropContDesc.scopes,\r\n data: dropContDesc.data\r\n };\r\n var event_1 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\r\n try {\r\n if (container.scopes.indexOf(_this.draggableItem.scope) >= 0\r\n && _this.dropEffect === DropEffect.Allow) {\r\n _this.finishedSuccessfully = true;\r\n if (dropContDesc.onDrop) {\r\n dropContDesc.onDrop(container, event_1);\r\n }\r\n }\r\n }\r\n finally {\r\n if (dropContDesc.onDragLeave) {\r\n dropContDesc.onDragLeave(container, event_1);\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n try {\r\n var event_2 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\r\n event_2.data.finishedSuccessfully = _this.finishedSuccessfully;\r\n if (descriptor.onDragEnd) {\r\n descriptor.onDragEnd(event_2);\r\n }\r\n }\r\n finally {\r\n _this.draggableItem = null;\r\n if (_this.dragImage && _this.dragImage.parentElement) {\r\n _this.dragImage.parentElement.removeChild(_this.dragImage);\r\n }\r\n _this.dragImage = null;\r\n _this.finishedSuccessfully = false;\r\n document.removeEventListener('mouseup', mouseUpListener);\r\n document.removeEventListener('touchend', mouseUpListener);\r\n }\r\n }\r\n };\r\n };\r\n DragManager.prototype.registerDropContainer = function (descriptor) {\r\n var element = descriptor.element;\r\n if (!element) {\r\n throw Error(\"Element in drop container is null or undefined\");\r\n }\r\n this.containerDescriptors.push(descriptor);\r\n };\r\n DragManager.prototype.removeDropContainer = function (descriptorOrSlot) {\r\n var descs = this.containerDescriptors\r\n .filter(function (desc) { return desc === descriptorOrSlot\r\n || desc.element == descriptorOrSlot; });\r\n if (descs) {\r\n for (var _i = 0, descs_1 = descs; _i < descs_1.length; _i++) {\r\n var desc = descs_1[_i];\r\n utils.removeArrayItem(this.containerDescriptors, desc);\r\n }\r\n }\r\n };\r\n DragManager.prototype.mouseMoveDragListener = function (ev) {\r\n if (ev instanceof MouseEvent) {\r\n ev.preventDefault();\r\n }\r\n ev.stopPropagation();\r\n this.updateDragItemPosition(ev);\r\n if (this.containerDescriptorIndex == -1) {\r\n for (var i = 0; i < this.containerDescriptors.length; i++) {\r\n var descriptor = this.containerDescriptors[i];\r\n if (this.detectDragEnterEvent(descriptor.element, ev)) {\r\n this.containerDescriptorIndex = i;\r\n break;\r\n }\r\n }\r\n if (this.containerDescriptorIndex >= 0) {\r\n this.dragEnterEvent(ev);\r\n }\r\n }\r\n else {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n if (this.detectDragLeaveEvent(descriptor.element, ev)) {\r\n this.dragLeaveEvent(ev);\r\n this.containerDescriptorIndex = -1;\r\n }\r\n }\r\n if (this.containerDescriptorIndex >= 0) {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n var container = {\r\n element: descriptor.element,\r\n scopes: descriptor.scopes,\r\n data: descriptor.data\r\n };\r\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\r\n var event_3 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\r\n event_3.dropEffect = this.dropEffect;\r\n if (descriptor.onDragOver) {\r\n descriptor.onDragOver(container, event_3);\r\n }\r\n }\r\n }\r\n };\r\n DragManager.prototype.updateCusror = function (dropEffect) {\r\n switch (dropEffect) {\r\n case DropEffect.Allow:\r\n this.setCursorStyle(this.dragImage, 'grabbing');\r\n break;\r\n case DropEffect.Forbid:\r\n this.setCursorStyle(this.dragImage, 'no-drop');\r\n break;\r\n default:\r\n this.setCursorStyle(this.dragImage, 'grabbing');\r\n break;\r\n }\r\n };\r\n DragManager.prototype.updateImageClass = function (dropEffect) {\r\n this.dragImage.classList.remove(this.classPrefix + \"-allow\");\r\n this.dragImage.classList.remove(this.classPrefix + \"-forbid\");\r\n this.dragImage.classList.remove(this.classPrefix + \"-none\");\r\n switch (dropEffect) {\r\n case DropEffect.Allow:\r\n this.dragImage.classList.add(this.classPrefix + \"-allow\");\r\n break;\r\n case DropEffect.None:\r\n this.dragImage.classList.add(this.classPrefix + \"-none\");\r\n break;\r\n case DropEffect.Forbid:\r\n this.dragImage.classList.add(this.classPrefix + \"-forbid\");\r\n break;\r\n default:\r\n this.dragImage.classList.add(this.classPrefix + \"-none\");\r\n break;\r\n }\r\n };\r\n DragManager.prototype.setCursorStyle = function (element, cursor) {\r\n if (element) {\r\n element.style.cursor = cursor;\r\n for (var i = 0; i < element.children.length; i++) {\r\n this.setCursorStyle(element.children[i], cursor);\r\n }\r\n }\r\n };\r\n DragManager.prototype.updateDragItemPosition = function (ev) {\r\n if (this.dragImage) {\r\n var pos = new Position(ev);\r\n this.dragImage.style.top = (pos.y - this.dragImage.offsetHeight / 2) + 'px';\r\n this.dragImage.style.left = (pos.x - this.dragImage.offsetWidth / 2) + 'px';\r\n }\r\n };\r\n DragManager.prototype.dragEnterEvent = function (ev) {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n var container = {\r\n element: descriptor.element,\r\n scopes: descriptor.scopes,\r\n data: descriptor.data\r\n };\r\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\r\n var event_4 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\r\n event_4.dropEffect = DropEffect.Allow;\r\n if (descriptor.onDragEnter) {\r\n descriptor.onDragEnter(container, event_4);\r\n }\r\n this.dropEffect = event_4.dropEffect;\r\n this.updateCusror(this.dropEffect);\r\n this.updateImageClass(this.dropEffect);\r\n }\r\n else {\r\n if (this.dropEffect !== DropEffect.Forbid) {\r\n this.dropEffect = DropEffect.None;\r\n this.updateCusror(this.dropEffect);\r\n this.updateImageClass(this.dropEffect);\r\n }\r\n }\r\n };\r\n DragManager.prototype.dragLeaveEvent = function (ev) {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n var container = {\r\n element: descriptor.element,\r\n scopes: descriptor.scopes,\r\n data: descriptor.data\r\n };\r\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\r\n var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\r\n event_5.dropEffect = DropEffect.None;\r\n if (descriptor.onDragLeave) {\r\n descriptor.onDragLeave(container, event_5);\r\n }\r\n this.dropEffect = event_5.dropEffect;\r\n this.updateCusror(this.dropEffect);\r\n this.updateImageClass(this.dropEffect);\r\n }\r\n };\r\n DragManager.prototype.detectDragEnterEvent = function (container, ev) {\r\n var containerPos = getElementAbsolutePos(container);\r\n var pos = new Position(ev);\r\n if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {\r\n return false;\r\n }\r\n if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n DragManager.prototype.detectDragLeaveEvent = function (container, ev) {\r\n var containerPos = getElementAbsolutePos(container);\r\n var pos = new Position(ev);\r\n if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight\r\n && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n return DragManager;\r\n}());\r\nexport { DragManager };\r\n//global variable\r\nexport var eqDragManager = new DragManager();\r\n//# sourceMappingURL=drag_manager.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { DataType, MetaData, utils as dataUtils } from '@easydata/core';\r\nimport { i18n } from '@easydata/core';\r\nimport { AggrFunction } from './aggr_function';\r\nimport { Operator, Operand } from './operator';\r\nimport { Entity, EntityAttr } from './entity';\r\nimport { EqValueEditor } from './value_editor';\r\nimport { DataKind } from '../types/data_kind';\r\nimport { EqEditorTag } from '../types/eq_editor_tag';\r\nimport { Query } from '../query/query';\r\nimport { ExprTag } from '../types/expr_tag';\r\nimport { Tree } from '../common/tree';\r\n/**\r\n * Represents a data model\r\n */\r\nvar DataModel = /** @class */ (function (_super) {\r\n __extends(DataModel, _super);\r\n /** The default constructor. */\r\n function DataModel() {\r\n var _this = _super.call(this) || this;\r\n _this.mainEntity = null;\r\n _this.nullAttribute = new EntityAttr(null);\r\n _this.nullOperator = new Operator();\r\n _this.operators = new Array();\r\n _this.rootEntity = new Entity();\r\n _this.aggrFunctions = new Array();\r\n _this.dateMacros = ['Today', 'Yesterday',\r\n 'Tomorrow', 'FirstDayOfMonth', 'LastDayOfMonth',\r\n 'FirstDayOfWeek', 'FirstDayOfYear', 'FirstDayOfNextWeek', 'FirstDayOfPrevMonth',\r\n 'FirstDayOfNextMonth', 'FirstDayOfNextYear', 'FirstDayOfPrevYear', 'FirstDayOfPrevWeek'];\r\n _this.timeMacros = ['Now', 'HourStart', 'Midnight', 'Noon'];\r\n _this.links = [];\r\n return _this;\r\n }\r\n /**\r\n * Gets the main entity of model\r\n * @return The main entity.\r\n */\r\n DataModel.prototype.getMainEntity = function () {\r\n return this.mainEntity;\r\n };\r\n /**\r\n * Loads data model from JSON.\r\n * @param stringJson The JSON string.\r\n */\r\n DataModel.prototype.loadFromJSON = function (stringJson) {\r\n var model = JSON.parse(stringJson);\r\n this.loadFromData(model);\r\n };\r\n /**\r\n * Loads data model from its JSON representation object.\r\n * @param data The JSON representation object.\r\n */\r\n DataModel.prototype.loadFromData = function (data) {\r\n _super.prototype.loadFromData.call(this, data);\r\n //Operators\r\n this.operators = new Array();\r\n if (data.operators) {\r\n for (var i = 0; i < data.operators.length; i++) {\r\n var newOperator = new Operator();\r\n newOperator.loadFromData(this, data.operators[i]);\r\n this.operators.push(newOperator);\r\n }\r\n }\r\n //rootEntity\r\n this.rootEntity.loadFromData(this, data.entroot);\r\n //Aggr Functions\r\n this.aggrFunctions = new Array();\r\n if (data.aggrfuncs) {\r\n for (var i = 0; i < data.aggrfuncs.length; i++) {\r\n var newAggrFunc = new AggrFunction();\r\n newAggrFunc.loadFromData(data.aggrfuncs[i]);\r\n this.aggrFunctions.push(newAggrFunc);\r\n }\r\n }\r\n };\r\n /**\r\n * Gets the data model object.\r\n * @returns Tha data model.\r\n */\r\n DataModel.prototype.getObject = function () {\r\n return this;\r\n };\r\n /**\r\n * Sets data to data model.\r\n * @param model Its JSON representation object or JSON string.\r\n */\r\n DataModel.prototype.setData = function (model) {\r\n if (typeof model === 'string') {\r\n this.loadFromJSON(model);\r\n }\r\n else {\r\n this.loadFromData(model);\r\n }\r\n };\r\n /**\r\n * Creates entity.\r\n * @param parent The parent entity.\r\n * @returns The Entity.\r\n */\r\n DataModel.prototype.createEntity = function (parent) {\r\n return new Entity(parent);\r\n };\r\n /**\r\n * Creates entity attribute.\r\n * @param parent The parent entity.\r\n * @returns The entity attribute.\r\n */\r\n DataModel.prototype.createEntityAttr = function (parent) {\r\n return new EntityAttr(parent);\r\n };\r\n /**\r\n * Creates new EqValueEditor\r\n * @returns An instance of EqValueEditor class\r\n */\r\n DataModel.prototype.createValueEditor = function () {\r\n return new EqValueEditor();\r\n };\r\n /**\r\n * Creates query.\r\n * @returns The Query.\r\n */\r\n DataModel.prototype.createQuery = function () {\r\n return new Query(this);\r\n };\r\n /**\r\n * Gets root entity of the data model.\r\n * @returns The root entity.\r\n */\r\n DataModel.prototype.getRootEntity = function () {\r\n return this.rootEntity;\r\n };\r\n /**\r\n * Finds editor by its ID.\r\n * @param editorId The editor ID.\r\n * @returns The value editor or `null`.\r\n */\r\n DataModel.prototype.getEditorById = function (editorId) {\r\n return _super.prototype.getEditorById.call(this, editorId);\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified model (it's root entity and all its sub-entities).\r\n * @param attrId The attribute ID.\r\n * @returns The attribute or `null`.\r\n */\r\n DataModel.prototype.getAttributeById = function (attrId) {\r\n var attr = this.getEntityAttrById(this.getRootEntity(), attrId);\r\n if (!attr) {\r\n return null;\r\n }\r\n return attr;\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified model (it's root entity and all its sub-entities).\r\n * @param attrId The attribute ID.\r\n * @returns The attribute or `nullAttribute`.\r\n */\r\n DataModel.prototype.getAttributeByIdSafe = function (attrId) {\r\n var attr = this.getAttributeById(attrId);\r\n if (!attr)\r\n return this.nullAttribute;\r\n return attr;\r\n };\r\n /**\r\n * Checks wether attribute contains such property.\r\n * @param attrId The attribute ID.\r\n * @param propName The property name.\r\n * @returns `true` if the attribute contains the property, otherwise `false`.\r\n */\r\n DataModel.prototype.checkAttrProperty = function (attrId, propName) {\r\n var attribute = this.getAttributeById(attrId);\r\n if (attribute) {\r\n if (typeof attribute[propName] === 'undefined') {\r\n throw 'No such property: ' + propName;\r\n }\r\n if (attribute[propName]) {\r\n return true;\r\n }\r\n else if (attribute.lookupAttr) {\r\n attrId = attribute.lookupAttr;\r\n attribute = this.getAttributeById(attrId);\r\n return attribute && attribute[propName];\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else\r\n return false;\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified entity and all its sub-entities.\r\n * @param entity\r\n * @param attrId\r\n * @returns The attribute or `null`.\r\n */\r\n DataModel.prototype.getEntityAttrById = function (entity, attrId) {\r\n return _super.prototype.getEntityAttrById.call(this, entity, attrId);\r\n };\r\n DataModel.prototype._listByEntityWithFilter = function (entity, filterFunc) {\r\n var result = new Array();\r\n var caption;\r\n var ent = null;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\r\n ent = entity.subEntities[entIdx];\r\n if (!filterFunc || filterFunc(ent, null)) {\r\n caption = i18n.getText('Entities', ent.name);\r\n if (!caption) {\r\n caption = ent.caption;\r\n }\r\n var newEnt = dataUtils.assign(new Entity(), { id: ent.name, text: caption, items: [], isEntity: true });\r\n newEnt.items = this._listByEntityWithFilter(ent, filterFunc);\r\n if (newEnt.items.length > 0)\r\n result.push(newEnt);\r\n }\r\n }\r\n }\r\n var attr = null;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\r\n attr = entity.attributes[attrIdx];\r\n if (!filterFunc || filterFunc(entity, attr)) {\r\n caption = i18n.getText('Attributes', attr.id);\r\n if (!caption)\r\n caption = attr.caption;\r\n var newEnt = dataUtils.assign(new Entity(), { id: attr.id, text: caption, dataType: attr.dataType });\r\n result.push(newEnt);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n DataModel.prototype._listByEntity = function (entity, opts, filterFunc) {\r\n opts = opts || {};\r\n var resultEntities = [];\r\n var resultAttributes = [];\r\n var caption;\r\n var ent = null;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\r\n ent = entity.subEntities[entIdx];\r\n if (!filterFunc || filterFunc(ent, null)) {\r\n if (opts.addUIC !== false && ent.useInConditions !== false ||\r\n opts.addUIR !== false && ent.useInResult !== false ||\r\n opts.addUIS !== false && ent.useInSorting !== false) {\r\n caption = i18n.getText('Entities', ent.name) || ent.caption;\r\n var newEnt = dataUtils.assign(new Entity(), {\r\n id: ent.name,\r\n text: caption,\r\n items: [],\r\n isEntity: true,\r\n description: ent.description\r\n });\r\n var newOpts = dataUtils.assign({}, opts);\r\n newOpts.includeRootData = false;\r\n newEnt.items = this._listByEntity(ent, newOpts, filterFunc);\r\n if (newEnt.items.length > 0) {\r\n resultEntities.push(newEnt);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var attr = null;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\r\n attr = entity.attributes[attrIdx];\r\n if (!filterFunc || filterFunc(entity, attr)) {\r\n if (opts.addUIC !== false && attr.useInConditions !== false ||\r\n opts.addUIR !== false && attr.useInResult !== false ||\r\n opts.addUIS !== false && attr.useInSorting !== false) {\r\n caption = i18n.getText('Attributes', attr.id) || attr.caption;\r\n resultAttributes.push(dataUtils.assign(new EntityAttr(entity), { id: attr.id, text: caption, dataType: attr.dataType, lookupAttr: attr.lookupAttr, description: attr.description }));\r\n }\r\n }\r\n }\r\n }\r\n var sortCheck = function (a, b) {\r\n if (a.text.toLowerCase() == b.text.toLowerCase()) {\r\n return 0;\r\n }\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) {\r\n return 1;\r\n }\r\n return -1;\r\n };\r\n if (opts.sortEntities) {\r\n resultEntities.sort(sortCheck);\r\n resultAttributes.sort(sortCheck);\r\n }\r\n var result;\r\n if (!opts.attrPlacement || opts.attrPlacement == 0) {\r\n result = resultEntities.concat(resultAttributes);\r\n }\r\n else {\r\n result = resultAttributes.concat(resultEntities);\r\n }\r\n if (opts.attrPlacement == 2) {\r\n result.sort(sortCheck);\r\n }\r\n if (opts.includeRootData) {\r\n caption = i18n.getText('Entities', entity.name);\r\n if (!caption)\r\n caption = entity.caption;\r\n return { id: entity.name, text: caption, items: result };\r\n }\r\n else {\r\n return result;\r\n }\r\n };\r\n /**\r\n * Clears data model.\r\n */\r\n DataModel.prototype.clear = function () {\r\n _super.prototype.clear.call(this);\r\n this.operators = [];\r\n this.aggrFunctions = [];\r\n };\r\n /**\r\n * Add or update an operator.\r\n * @param desc The operator descriptor.\r\n * @returns The operator.\r\n */\r\n DataModel.prototype.addOrUpdateOperator = function (desc) {\r\n var op = dataUtils.findItemById(this.operators, desc.id);\r\n if (!op) {\r\n op = new Operator();\r\n op.id = desc.id;\r\n this.operators.push(op);\r\n }\r\n op.caption = desc.caption;\r\n op.expr = desc.expr || '';\r\n op.displayFormat = desc.format;\r\n op.defaultOperand = new Operand();\r\n op.defaultOperand.kind = desc.kind || DataKind.Scalar;\r\n if (desc.appliedTypes)\r\n op.appliedTypes = desc.appliedTypes;\r\n if (desc.paramCount > 0) {\r\n op.paramCount = desc.paramCount;\r\n }\r\n this.runThroughEntities(function (attr, opts) {\r\n if (attr.operators.indexOf(op.id) < 0 && op.appliedTypes.indexOf(attr.dataType) >= 0) {\r\n attr.operators.push(op.id);\r\n }\r\n });\r\n return op;\r\n };\r\n /**\r\n * Removes an operator.\r\n * @param id The id.\r\n * @param soft If `false` - removes operators from model and attributes. Otherwise only\r\n * from attributes.\r\n */\r\n DataModel.prototype.removeOperator = function (id, soft) {\r\n if (soft === void 0) { soft = false; }\r\n var op = dataUtils.findItemById(this.operators, id);\r\n if (op) {\r\n if (!soft)\r\n dataUtils.removeArrayItem(this.operators, op);\r\n this.runThroughEntities(function (attr, opts) {\r\n dataUtils.removeArrayItem(attr.operators, op.id);\r\n });\r\n }\r\n };\r\n /**\r\n * Get operators for data type.\r\n * @param type The data type\r\n * @return The array of operator ids.\r\n */\r\n DataModel.prototype.getOperatorIdsByDataType = function (type) {\r\n switch (type) {\r\n case DataType.String:\r\n case DataType.Memo:\r\n return 'StartsWith,EndsWith,Contains,Equal,InList,NotStartsWith,NotEndsWith,NotContains,NotEqual,NotInList,IsNull,IsNotNull'.split(',');\r\n case DataType.Guid:\r\n return 'Equal,NotEqual'.split(',');\r\n case DataType.Date:\r\n case DataType.DateTime:\r\n return 'DateWithinToday,DateWithinThisWeek,DateWithinPrevWeek,DateWithinThisMonth,DateWithinPrevMonth,DateWithinThisYear,DateWithinPrevYear,DateBeforePrecise,DateAfterPrecise,DatePeriodPrecise,IsNull,IsNotNull'.split(',');\r\n case DataType.Time:\r\n return 'TimeBeforePrecise,TimeAfterPrecise,TimePeriodPrecise,IsNull,IsNotNull'.split(',');\r\n case DataType.Byte:\r\n case DataType.Word:\r\n case DataType.Int32:\r\n case DataType.Int64:\r\n case DataType.Float:\r\n case DataType.Currency:\r\n case DataType.BCD:\r\n case DataType.Autoinc:\r\n case DataType.Unknown:\r\n return 'Equal,Between,LessThan,LessOrEqual,GreaterThan,GreaterOrEqual,InList,NotEqual,NotBetween,NotInList,IsNull,IsNotNull'.split(',');\r\n case DataType.Bool:\r\n return 'IsTrue,NotTrue'.split(',');\r\n default:\r\n var result = [];\r\n for (var _i = 0, _a = this.operators; _i < _a.length; _i++) {\r\n var op = _a[_i];\r\n if (op.appliedTypes.indexOf(type) >= 0)\r\n result.push(op.id);\r\n }\r\n return result;\r\n }\r\n };\r\n /**\r\n * Builds entities tree used in query.\r\n * @param query The query.\r\n */\r\n DataModel.prototype.buildQueryPath = function (query) {\r\n var entity = this.mainEntity || this.rootEntity;\r\n var tree = this.createTreeNodeFromEntity(entity);\r\n tree.setParents();\r\n return tree;\r\n };\r\n DataModel.prototype.createTreeNodeFromEntity = function (entity) {\r\n var tree = new Tree(entity);\r\n for (var _i = 0, _a = entity.subEntities; _i < _a.length; _i++) {\r\n var subEnentity = _a[_i];\r\n tree.addChild(this.createTreeNodeFromEntity(subEnentity));\r\n }\r\n return tree;\r\n };\r\n /**\r\n * Get Entities used in query.\r\n * @param query The query.\r\n */\r\n DataModel.prototype.getEntitiesInQuery = function (query) {\r\n if (query.model.id !== this.id)\r\n throw Error('Model mithmatch');\r\n var entities = [];\r\n var columns = query.getColumns();\r\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\r\n var column = columns_1[_i];\r\n if (!column.enabled)\r\n continue;\r\n this.addEntityByExpression(entities, column.expr);\r\n }\r\n var rootCond = query.getRootCondition();\r\n this.fillEntitiesByCondtionGroup(entities, rootCond);\r\n return entities;\r\n };\r\n DataModel.prototype.findAggrFunctionById = function (funcId) {\r\n for (var _i = 0, _a = this.aggrFunctions; _i < _a.length; _i++) {\r\n var func = _a[_i];\r\n if (func.id === funcId)\r\n return func;\r\n }\r\n return null;\r\n };\r\n DataModel.prototype.fillEntitiesByCondtionGroup = function (entities, root) {\r\n for (var _i = 0, _a = root.getConditions(); _i < _a.length; _i++) {\r\n var condition = _a[_i];\r\n if (!condition.isGroup()) {\r\n for (var _b = 0, _c = condition.expressions; _b < _c.length; _b++) {\r\n var expr = _c[_b];\r\n this.addEntityByExpression(entities, expr);\r\n if (expr.args) {\r\n for (var _d = 0, _e = expr.args; _d < _e.length; _d++) {\r\n var arg = _e[_d];\r\n this.addEntityByExpression(entities, arg);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.fillEntitiesByCondtionGroup(entities, condition);\r\n }\r\n }\r\n };\r\n DataModel.prototype.addEntityByExpression = function (entities, expr) {\r\n if (expr.tag !== ExprTag.EntityAttribute)\r\n return;\r\n var attrId = expr.baseAttrId || expr.value;\r\n if (attrId) {\r\n var attr = this.getAttributeById(attrId);\r\n if (attr) {\r\n if (attr.entity && dataUtils.indexOfArrayItem(entities, attr.entity) < 0) {\r\n entities.push(attr.entity);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Finds link between two entities.\r\n * @param entityFrom The entity `from`.\r\n * @param entityTo The entity `to`.\r\n * @return The link.\r\n */\r\n DataModel.prototype.findLink = function (entityFrom, entityTo) {\r\n for (var _i = 0, _a = this.links; _i < _a.length; _i++) {\r\n var link = _a[_i];\r\n if (link.entityFrom == entityFrom\r\n && link.entityTo == entityTo)\r\n return link;\r\n }\r\n return null;\r\n };\r\n /**\r\n * Get links with the entity.\r\n * @param entity The entity.\r\n * @return The link.\r\n */\r\n DataModel.prototype.getLinksByEntity = function (entity) {\r\n var result = [];\r\n for (var _i = 0, _a = this.links; _i < _a.length; _i++) {\r\n var link = _a[_i];\r\n if (link.entityFrom == entity || link.entityTo == entity) {\r\n result.push(link);\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * Gets entities tree.\r\n * @param opts The options.\r\n * @param filterFunc The filter function.\r\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\r\n * @returns The tree of the entities and their attributes according to options and the filter function\r\n */\r\n DataModel.prototype.getEntitiesTree = function (opts, filterFunc) {\r\n return this._listByEntity(this.getRootEntity(), opts, filterFunc);\r\n };\r\n /**\r\n * Gets entities tree due to filter.\r\n * @param filterFunc The filter function.\r\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\r\n * @returns The tree of the entities and their attributes according to the filter function\r\n */\r\n DataModel.prototype.getEntitiesTreeWithFilter = function (filterFunc) {\r\n return this._listByEntityWithFilter(this.getRootEntity(), filterFunc);\r\n };\r\n /**\r\n * Finds full entity path by attribute\r\n * @param attrId The attribute id.\r\n * @param sep The separator.\r\n * @returns The path.\r\n */\r\n DataModel.prototype.getFullEntityPathByAttr = function (attrId, sep) {\r\n sep = sep || ' ';\r\n return this.getEntityPathByAttr(this.getRootEntity(), attrId, sep, true);\r\n };\r\n /**\r\n * Finds entity path by attribute\r\n * @param entity The entity.\r\n * @param attrId The attribute id.\r\n * @param sep The separator.\r\n * @param root The root option.\r\n * @returns The path.\r\n */\r\n DataModel.prototype.getEntityPathByAttr = function (entity, attrId, sep, root) {\r\n return _super.prototype.getEntityPathByAttr.call(this, entity, attrId, sep, root);\r\n };\r\n /**\r\n * Gets the attribute text.\r\n * @param attr The attribute.\r\n * @param format The format.\r\n * @returns Formatted text.\r\n */\r\n DataModel.prototype.getAttributeText = function (attr, format) {\r\n return _super.prototype.getAttributeText.call(this, attr, format);\r\n };\r\n DataModel.prototype.getFirstUICAttr = function () {\r\n return this.getFirstUICAttrInEntity(this.getRootEntity());\r\n };\r\n /**\r\n * Gets first `UIC` attribute in specified entity\r\n * (`UIC` stands for `use in conditions` - so such attribute can be used in conditions)\r\n * @param entity Entity object to search our attribute in.\r\n * @returns The entity attribute or `null`\r\n */\r\n DataModel.prototype.getFirstUICAttrInEntity = function (entity) {\r\n if (entity.useInConditions !== false) {\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var i = 0; i < attrCount; i++) {\r\n if (entity.attributes[i].useInConditions) {\r\n return entity.attributes[i];\r\n }\r\n }\r\n }\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var i = 0; i < subEntityCount; i++) {\r\n var result = this.getFirstUICAttrInEntity(entity.subEntities[i]);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Scans model's entity tree and calls the callback functions for each attribute and entity.\r\n * @param processAttribute The callback function which is called for each attribute in model's entity tree.\r\n * The processed attribute is passed in the first function parameter.\r\n * @param processEntity The callback function which is called for each entity in tree.\r\n * The processed entity is passed in the first function parameter.\r\n */\r\n DataModel.prototype.runThroughEntities = function (processAttribute, processEntity) {\r\n this.getRootEntity().scan(processAttribute, processEntity);\r\n };\r\n /**\r\n * Finds first attribute by filter.\r\n * @param filterFunc The filter function. Takes EntityAttr object in parameter and returns boolean\r\n */\r\n DataModel.prototype.getFirstAttributeByFilter = function (filterFunc) {\r\n var res = null;\r\n this.runThroughEntities(function (attr, opts) {\r\n if (filterFunc(attr)) {\r\n opts.stop = true;\r\n res = attr;\r\n }\r\n }, null);\r\n return res;\r\n };\r\n /**\r\n * Finds operator in model by its ID.\r\n * This function runs through all operators inside specified model and returns the one with specified ID.\r\n * @param operatorId An operator ID.\r\n * @returns The operator or `null`.\r\n */\r\n DataModel.prototype.findOperatorById = function (operatorId) {\r\n if (this.operators.length > 0) {\r\n var opCount = this.operators.length;\r\n for (var idx = 0; idx < opCount; idx++) {\r\n if (this.operators[idx].id == operatorId) {\r\n return this.operators[idx];\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Finds operator in model by its ID.\r\n * his function runs through all operators inside specified model and returns the one with specified ID.\r\n * @param operatorId Operator ID.\r\n * @returns The operator or special `NullOperator` object if operator is not found.\r\n */\r\n DataModel.prototype.getOperatorById = function (operatorId) {\r\n var op = this.findOperatorById(operatorId);\r\n if (!op)\r\n return this.nullOperator;\r\n return op;\r\n };\r\n DataModel.prototype.getDefaultOperatorIdForAttr = function (attr) {\r\n if (attr.defaultOperator) {\r\n return attr.defaultOperator;\r\n }\r\n else if (attr.operators.length > 0) {\r\n return attr.operators[0];\r\n }\r\n else {\r\n return this.nullOperator.id;\r\n }\r\n };\r\n /**\r\n * Gets caption of the aggregate function.\r\n * @param funcId The function id.\r\n * @returns The caption.\r\n */\r\n DataModel.prototype.getAggrFunctionCaption = function (funcId) {\r\n var funcTexts = i18n.getText('AggregateFunctions', funcId);\r\n var funcCaption = funcTexts ? funcTexts.caption : i18n.getText('Aggr' + funcId.replace(' ', '') + '_Caption');\r\n if (funcCaption) {\r\n return funcCaption;\r\n }\r\n var func = dataUtils.findItemById(this.aggrFunctions, funcId);\r\n if (!func || !func.caption)\r\n return funcId;\r\n return func.caption;\r\n };\r\n /**\r\n * Gets format of the aggregate function.\r\n * @param funcId The function id.\r\n * @returns The caption.\r\n */\r\n DataModel.prototype.getAggrFunctionFormat = function (funcId) {\r\n var funcTexts = i18n.getText('AggregateFunctions', funcId);\r\n var funcFormat = funcTexts ? funcTexts.displayFormat : i18n.getText('Aggr' + funcId.replace(' ', '') + '_Format');\r\n if (funcFormat) {\r\n return funcFormat;\r\n }\r\n var func = dataUtils.findItemById(this.aggrFunctions, funcId);\r\n if (!func || !func.displayFormat)\r\n return '';\r\n return func.displayFormat;\r\n };\r\n /**\r\n * Gets default operator for an attribute.\r\n * @param attr The attribute.\r\n * @returns The operator.\r\n */\r\n DataModel.prototype.getDefaultOperatorForAttr = function (attr) {\r\n var operatorId = this.getDefaultOperatorIdForAttr(attr);\r\n return this.getOperatorById(operatorId);\r\n };\r\n /**\r\n * Gets operand.\r\n * @param attr The attribute.\r\n * @param operator The operator.\r\n * @param index The index.\r\n * @returns The operand.\r\n */\r\n DataModel.prototype.getOperand = function (attr, operator, index) {\r\n var defOperand = new Operand();\r\n if (operator && operator.defaultOperand) {\r\n defOperand.copyFrom(operator.defaultOperand);\r\n if (!defOperand.defValue) {\r\n defOperand.defValue = '';\r\n }\r\n if (!defOperand.defText) {\r\n defOperand.defText = '';\r\n }\r\n }\r\n else {\r\n defOperand.kind = DataKind.Scalar;\r\n defOperand.dataType = attr.dataType;\r\n defOperand.defValue = '';\r\n defOperand.defText = '';\r\n defOperand.editor = null;\r\n }\r\n var result = defOperand;\r\n if (result.dataType === DataType.Unknown && attr) {\r\n result.dataType = attr.dataType;\r\n }\r\n if (operator && (index >= 0)) {\r\n if (operator.operands && operator.operands[index - 1]) {\r\n result = dataUtils.assign(result, operator.operands[index - 1]);\r\n }\r\n }\r\n ;\r\n if (!result.editor) {\r\n if (defOperand.editor) {\r\n result.editor = defOperand.editor;\r\n }\r\n else if (defOperand.kind === DataKind.Query) {\r\n result.editor.tag = EqEditorTag.SubQuery;\r\n }\r\n else if (attr && attr.defaultEditor) {\r\n result.editor = attr.defaultEditor;\r\n }\r\n else if (result.dataType === DataType.Date || result.dataType === DataType.DateTime\r\n || result.dataType === DataType.Time) {\r\n result.editor.tag = EqEditorTag.DateTime;\r\n }\r\n else {\r\n result.editor.tag = EqEditorTag.Edit;\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * Gets the list of aggegate functions.\r\n * @returns AN array of aggregate functions.\r\n */\r\n DataModel.prototype.getAggrFunctions = function () {\r\n return this.aggrFunctions;\r\n };\r\n /**\r\n * Checks wether macro value is date.\r\n * @param macroExpr The macro value.\r\n * @retruns `true` if the macro value is date, otherwise `false`.\r\n */\r\n DataModel.prototype.isDateMacro = function (macroExpr, macroProcessor) {\r\n var match = macroExpr.match(/\\${{?(.*?)}?}/);\r\n if (match != null) {\r\n var macroId = match[1];\r\n if (dataUtils.indexOfArrayItem(this.dateMacros, macroId) >= 0) {\r\n if (macroProcessor) {\r\n macroProcessor(macroId);\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Checks whether the expression passed in the parameter is an time macro.\r\n * @param macroExpr The macro expression\r\n * @retruns `true` if the expression is a time macro (like Now), otherwise `false`.\r\n */\r\n DataModel.prototype.isTimeMacro = function (macroExpr, macroProcessor) {\r\n var match = macroExpr.match(/\\${{?(.*?)}?}/);\r\n if (match != null) {\r\n var macroId = match[1];\r\n if (dataUtils.indexOfArrayItem(this.timeMacros, macroId) >= 0) {\r\n if (macroProcessor) {\r\n macroProcessor(macroId);\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * Gets date by its macro value.\r\n * @param macroExpr The macro value.\r\n * @returns The date or `null`\r\n */\r\n DataModel.prototype.getDateMacroValue = function (macroExpr) {\r\n var d = new Date();\r\n var res = this.isDateMacro(macroExpr, function (macroId) {\r\n switch (macroId) {\r\n case 'Today':\r\n break;\r\n case 'Yesterday':\r\n d.setDate(d.getDate() - 1);\r\n break;\r\n case 'Tomorrow':\r\n d.setDate(d.getDate() + 1);\r\n break;\r\n case 'FirstDayOfMonth':\r\n d.setDate(1);\r\n break;\r\n case 'LastDayOfMonth':\r\n d.setMonth(d.getMonth() + 1, 0);\r\n break;\r\n case 'FirstDayOfPrevWeek':\r\n var day = d.getDay();\r\n day = (day == 0) ? 1 : 8 - day; //We start week from Monday, but js - from Sunday\r\n d.setDate(d.getDate() - day);\r\n break;\r\n case 'FirstDayOfWeek':\r\n var day = d.getDay();\r\n day = (day == 0) ? 6 : day - 1; //We start week from Monday, but js - from Sunday\r\n d.setDate(d.getDate() - day);\r\n break;\r\n case 'FirstDayOfYear':\r\n d.setMonth(0, 1);\r\n break;\r\n case 'FirstDayOfNextWeek':\r\n var day = d.getDay();\r\n day = (day == 0) ? 1 : 8 - day; //We start week from Monday, but js - from Sunday\r\n d.setDate(d.getDate() + day);\r\n break;\r\n case 'FirstDayOfNextMonth':\r\n d.setMonth(d.getMonth() + 1, 1);\r\n break;\r\n case 'FirstDayOfPrevMonth':\r\n d.setMonth(d.getMonth() - 1, 1);\r\n break;\r\n case 'FirstDayOfPrevYear':\r\n d.setFullYear(d.getFullYear() - 1, 0, 1);\r\n break;\r\n case 'FirstDayOfNextYear':\r\n d.setFullYear(d.getFullYear() + 1, 0, 1);\r\n break;\r\n }\r\n ;\r\n });\r\n return res ? d : null;\r\n };\r\n /**\r\n * Gets the date value by a macro expression of the expression itself.\r\n * @param macroExpr The macro value.\r\n * @returns The date or macro valu.\r\n */\r\n DataModel.prototype.getDateOrMacroValue = function (macroExpr) {\r\n var d = this.getDateMacroValue(macroExpr);\r\n return d ? d : macroExpr;\r\n };\r\n /**\r\n * Gets time by its macro value.\r\n * @param macroExpr The macro value.\r\n * @returns The date or `null`.\r\n */\r\n DataModel.prototype.getTimeMacroValue = function (macroExpr) {\r\n var d = new Date();\r\n var res = this.isDateMacro(macroExpr, function (macroId) {\r\n switch (macroId) {\r\n case 'Now':\r\n break;\r\n case 'HourStart':\r\n d.setMinutes(0, 0, 0);\r\n break;\r\n case 'Midnight':\r\n d.setHours(0, 0, 0, 0);\r\n break;\r\n case 'Noon':\r\n d.setHours(12, 0, 0, 0);\r\n break;\r\n }\r\n ;\r\n });\r\n return res ? d : null;\r\n };\r\n /**\r\n * Gets time or macro by macro value.\r\n * @param macroValue The macro value.\r\n * @returns The time or macro valu.\r\n */\r\n DataModel.prototype.getTimeOrMacroValue = function (time) {\r\n var t = this.getTimeMacroValue(time);\r\n return t ? t : time;\r\n };\r\n // /**\r\n // * Gets all date marcos.\r\n // * @returns The array of marcos\r\n // */\r\n DataModel.prototype.getAllDateMacros = function () {\r\n return this.dateMacros;\r\n };\r\n /**\r\n * Gets all time marcos.\r\n * @returns The array of marcos\r\n */\r\n DataModel.prototype.getAllTimeMacros = function () {\r\n return this.timeMacros;\r\n };\r\n return DataModel;\r\n}(MetaData));\r\nexport { DataModel };\r\n//# sourceMappingURL=data_model.js.map","import { i18n, DataType } from '@easydata/core';\r\nimport { GridColumnAlign } from './easy_grid_columns';\r\nvar cssPrefix = \"keg\";\r\nexport var DFMT_REGEX = /{0:(.*?)}/g;\r\nexport var CellRendererType;\r\n(function (CellRendererType) {\r\n CellRendererType[CellRendererType[\"STRING\"] = 1] = \"STRING\";\r\n CellRendererType[CellRendererType[\"NUMBER\"] = 2] = \"NUMBER\";\r\n CellRendererType[CellRendererType[\"DATETIME\"] = 3] = \"DATETIME\";\r\n CellRendererType[CellRendererType[\"BOOL\"] = 4] = \"BOOL\";\r\n})(CellRendererType || (CellRendererType = {}));\r\nvar StringCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n var text = value ? value.toString().replace(/\\n/g, '\\u21B5 ') : '';\r\n cellValueElement.innerText = text;\r\n cellValueElement.title = text;\r\n if (column.align == GridColumnAlign.NONE) {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-align-left\");\r\n }\r\n};\r\nvar NumberCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n var strValue = (value || '').toString();\r\n if (typeof value == 'number') {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.numberToStr(value, $1);\r\n });\r\n }\r\n else {\r\n strValue = value.toLocaleString();\r\n }\r\n }\r\n cellValueElement.innerText = strValue;\r\n cellValueElement.title = strValue;\r\n if (column.align == GridColumnAlign.NONE) {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-align-right\");\r\n }\r\n};\r\nvar DateTimeCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n var isDate = Object.prototype.toString.call(value) === '[object Date]';\r\n var strValue = (value || '').toString();\r\n if (isDate) {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.dateTimeToStr(value, column.type, $1);\r\n });\r\n }\r\n else {\r\n var locale = i18n.getCurrentLocale();\r\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\r\n switch (column.type) {\r\n case DataType.Date:\r\n strValue = value.toLocaleDateString(locale);\r\n break;\r\n case DataType.Time:\r\n strValue = value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n case DataType.DateTime:\r\n strValue = value.toLocaleDateString(locale) + \" \" + value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n }\r\n }\r\n }\r\n cellValueElement.innerText = strValue;\r\n cellValueElement.title = strValue;\r\n if (column.align == GridColumnAlign.NONE) {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-align-right\");\r\n }\r\n};\r\nvar BoolCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.booleanToStr(value, $1);\r\n });\r\n return StringCellRendererDefault(strValue, column, cellValueElement, rowElement);\r\n }\r\n else {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-bool\");\r\n cellValueElement.classList.add(cssPrefix + \"-\" + (value ? 'cell-value-true' : 'cell-value-false'));\r\n }\r\n};\r\nvar GridCellRendererStore = /** @class */ (function () {\r\n function GridCellRendererStore(options) {\r\n this.renderers = {};\r\n this.defaultRenderers = {};\r\n this.registerRenderer('StringDefault', StringCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);\r\n this.registerRenderer('NumberDefault', NumberCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);\r\n this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);\r\n this.registerRenderer('BoolDefault', BoolCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);\r\n }\r\n GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {\r\n var cellType = this.getCellType(columnType);\r\n return this.defaultRenderers[CellRendererType[cellType]];\r\n };\r\n GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {\r\n return this.defaultRenderers[CellRendererType[rendererType]];\r\n };\r\n GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {\r\n if (renderer) {\r\n this.defaultRenderers[CellRendererType[cellType]] = renderer;\r\n }\r\n };\r\n GridCellRendererStore.prototype.getRenderer = function (name) {\r\n return this.renderers[name];\r\n };\r\n GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {\r\n this.renderers[name] = renderer;\r\n };\r\n GridCellRendererStore.prototype.getCellType = function (dataType) {\r\n switch (dataType) {\r\n case DataType.Autoinc:\r\n case DataType.Byte:\r\n case DataType.Word:\r\n case DataType.Currency:\r\n case DataType.Float:\r\n case DataType.Int32:\r\n case DataType.Int64:\r\n return CellRendererType.NUMBER;\r\n case DataType.Date:\r\n case DataType.DateTime:\r\n case DataType.Time:\r\n return CellRendererType.DATETIME;\r\n case DataType.Bool:\r\n return CellRendererType.BOOL;\r\n default:\r\n return CellRendererType.STRING;\r\n }\r\n };\r\n return GridCellRendererStore;\r\n}());\r\nexport { GridCellRendererStore };\r\n//# sourceMappingURL=easy_grid_cell_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { DataKind, ExprTag, SortDirection, QueryChangePart, QueryChangeAction, Widget, WidgetGroup } from '@easyquery/core';\r\nimport { eqDragManager, DropEffect, getElementAbsolutePos, domel } from '@easydata/ui';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { AggrFuncColumnRendererCB } from './renderers/columnsbar/aggrfunc_column_renderer';\r\nimport { SimpleColumnRendererCB } from './renderers/columnsbar/simple_column_renderer';\r\nvar ColumnsBar = /** @class */ (function (_super) {\r\n __extends(ColumnsBar, _super);\r\n function ColumnsBar(slot, customQuery) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n isSubQuery: false,\r\n activeColumn: null,\r\n showAddRow: true,\r\n showHeader: true,\r\n showColumnTitles: true,\r\n allowAggrColumns: true,\r\n allowDuplicates: true,\r\n allowCustomExpressions: false,\r\n allowSorting: true,\r\n attrElementFormat: '{entity} {attr}',\r\n titleElementFormat: null,\r\n alwaysShowButtons: false,\r\n accentActiveColumn: true,\r\n allowDragDrop: true,\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n adjustHeight: true,\r\n itemRenderedCallback: null\r\n },\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n columnRenderedCallback: null,\r\n customExpressionText: 0,\r\n };\r\n _this.landingSlot = domel('div')\r\n .addClass(eqCssPrefix + \"-highlight\")\r\n .toDOM();\r\n _this.landingIndex = -1;\r\n _this.sortMenuList = [\r\n { id: 'None', text: i18n.getText('CmdNotSorted') },\r\n { id: 'Ascending', text: i18n.getText('CmdAscending') },\r\n { id: 'Descending', text: i18n.getText('CmdDescending') },\r\n { id: '---', text: '---' }\r\n ];\r\n _this.moveMenuList = [\r\n { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },\r\n { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },\r\n { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },\r\n { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }\r\n ];\r\n domel(_this.slot)\r\n .addClass(_this.cssPrefix + \"-panel\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n _this.group = WidgetGroup.Query;\r\n _this.customQuery = customQuery;\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnsBar.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return \"eqjs-cb\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnsBar.prototype.getWidgetType = function () {\r\n return 'columnsBar';\r\n };\r\n ColumnsBar.prototype.init = function (context, options) {\r\n var _this = this;\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n this.detachQueryObserver();\r\n this.attachQueryObserver();\r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttrSort\"],\r\n onDragEnter: function (container, ev) {\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragOver: function (container, ev) {\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragLeave: function (container, ev) {\r\n ev.dropEffect = DropEffect.Forbid;\r\n _this.hideLandingSlot();\r\n },\r\n onDrop: function (container, ev) {\r\n var query = _this.getQuery();\r\n var columns = query.getColumns();\r\n var index = columns.indexOf(ev.data.column);\r\n _this.moveColumnCore(index, _this.landingIndex);\r\n }\r\n });\r\n }\r\n };\r\n ColumnsBar.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n //if something has changed, and that change is related to columns\r\n var edata = event.data;\r\n if (!edata || (edata.part != QueryChangePart.Columns\r\n && edata.part != QueryChangePart.Aggregation\r\n && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n var focusedBefore = document.activeElement;\r\n var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n var columns = edata.changee;\r\n var modifyColumn_1 = function (column) {\r\n var colEl = _this.columnsBlock.querySelector(\"div[data-id='\" + column.id + \"']\");\r\n if (colEl) {\r\n var newEl = _this.renderColumn(column, colEl);\r\n if (isFocusInside) {\r\n var focusElem = newEl.querySelector('a');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return modifyColumn_1(col); });\r\n }\r\n else {\r\n modifyColumn_1(columns);\r\n }\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n var columns = edata.changee;\r\n var addColumn_1 = function (column) {\r\n var index = query.getColumns().indexOf(column);\r\n _this.addColumnElement(column, index);\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return addColumn_1(col); });\r\n }\r\n else {\r\n addColumn_1(columns);\r\n }\r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n var columns = edata.changee;\r\n var deleteColumn_1 = function (column) {\r\n var colEl = _this.columnsBlock.querySelector(\"div[data-id='\" + column.id + \"']\");\r\n if (colEl) {\r\n var next = colEl.nextSibling;\r\n var prev = colEl.previousSibling;\r\n _this.columnsBlock.removeChild(colEl);\r\n if (isFocusInside) {\r\n var focusCond = next || prev || _this.addRowButton;\r\n var focusElem = focusCond.querySelector('a');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return deleteColumn_1(col); });\r\n }\r\n else {\r\n deleteColumn_1(columns);\r\n }\r\n break;\r\n }\r\n default:\r\n _this.refresh();\r\n break;\r\n }\r\n });\r\n };\r\n ColumnsBar.prototype.getQuery = function () {\r\n return this.customQuery\r\n ? this.customQuery\r\n : this.getContext().getQuery();\r\n };\r\n ColumnsBar.prototype.destroyCore = function () {\r\n eqDragManager.removeDropContainer(this.slot);\r\n this.detachQueryObserver();\r\n this.slot.innerHTML = '';\r\n };\r\n ColumnsBar.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n ColumnsBar.prototype.setOptions = function (options) {\r\n this.options = dataUtils.assignDeep(this.options, options);\r\n };\r\n ColumnsBar.prototype.showLandingSlot = function (pageX, pageY) {\r\n var elements = this.columnsBlock.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row]\");\r\n var columnSlots = [];\r\n for (var i = 0; i < elements.length; i++) {\r\n if (elements[i].style.display !== 'none') {\r\n columnSlots.push(elements[i]);\r\n }\r\n }\r\n if (columnSlots.length === 0) {\r\n this.landingIndex = 0;\r\n return;\r\n }\r\n var landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth\r\n && pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight) {\r\n return;\r\n }\r\n var newLandingIndex = this.landingIndex;\r\n for (var i = 0; i < columnSlots.length; i++) {\r\n var colSlot = columnSlots[i];\r\n var absPos = getElementAbsolutePos(colSlot);\r\n var colWidth = colSlot.offsetWidth;\r\n var colHeight = colSlot.offsetHeight;\r\n var paddingWidth = 0.2 * colWidth;\r\n var paddingHeight = 2;\r\n if (pageX >= absPos.x + paddingWidth && pageX <= absPos.x + colWidth - paddingWidth\r\n && pageY >= absPos.y + paddingHeight && pageY <= absPos.y + colHeight - paddingHeight) {\r\n if (pageX > landingPos.x)\r\n newLandingIndex = i + 1;\r\n else\r\n newLandingIndex = i;\r\n break;\r\n }\r\n }\r\n if (newLandingIndex != this.landingIndex || this.landingSlot.parentElement) {\r\n this.landingIndex = newLandingIndex;\r\n if (this.landingIndex <= 0) {\r\n this.columnsBlock.insertBefore(this.landingSlot, columnSlots[0]);\r\n }\r\n if (this.landingIndex < columnSlots.length) {\r\n this.columnsBlock.insertBefore(this.landingSlot, columnSlots[this.landingIndex]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n }\r\n }\r\n };\r\n ColumnsBar.prototype.hideLandingSlot = function () {\r\n this.landingIndex = -1;\r\n if (this.landingSlot.parentElement) {\r\n this.landingSlot.parentElement.removeChild(this.landingSlot);\r\n }\r\n };\r\n ColumnsBar.prototype.onProcessStartCore = function () {\r\n };\r\n ColumnsBar.prototype.onProcessEndCore = function () {\r\n };\r\n ColumnsBar.prototype.refreshCore = function () {\r\n this.clear();\r\n this.render();\r\n };\r\n ColumnsBar.prototype.clear = function () {\r\n // if (this.addRowButton) {\r\n // this.addRowButton.innerHTML = \"\";\r\n // this.addRowButton.className = \"\";\r\n // }\r\n // this.columnsBlock.innerHTML = \"\";\r\n this.slot.innerHTML = '';\r\n };\r\n ColumnsBar.prototype.renderAddRowButton = function () {\r\n var _this = this;\r\n domel(this.addRowButton)\r\n .addClass(eqCssPrefix + \"-addrow\", this.cssPrefix + \"-addrow\", eqCssPrefix + \"-addrow-empty\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .title(i18n.getText('CmdClickToAddColumn'))\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', function (e) {\r\n e.preventDefault();\r\n _this.showEntitiesMenu({\r\n anchor: e.target,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n var attrid = data.id;\r\n _this.addNewColumn(attrid);\r\n return false;\r\n }\r\n });\r\n }); });\r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n };\r\n ColumnsBar.prototype.render = function () {\r\n var _this = this;\r\n this.createEntitiesMenu();\r\n if (this.options.allowSorting) {\r\n this.createSortMenu();\r\n }\r\n this.createMoveMenu();\r\n this.columnsBlock =\r\n domel('div')\r\n .addClass(this.cssPrefix + \"-columns\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n if (this.options.showAddRow) {\r\n this.addRowButton =\r\n domel('div')\r\n .toDOM();\r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n else {\r\n domel(this.slot)\r\n .addChildElement(this.addRowButton);\r\n }\r\n this.renderAddRowButton();\r\n }\r\n domel(this.slot)\r\n .addChildElement(this.columnsBlock)\r\n .addChildElement(this.renderColumnButtonsBlockMobile());\r\n var query = this.getQuery();\r\n var columns = query.getColumns();\r\n columns.forEach(function (column, index) {\r\n var slot = _this.renderColumn(column);\r\n _this.columnsBlock.appendChild(slot);\r\n });\r\n };\r\n ColumnsBar.prototype.renderColumnButtonsBlockMobile = function () {\r\n var _this = this;\r\n this.columnButtonsBlockMobileArrow = domel('i').toDOM();\r\n this.columnButtonsBlockMobile = domel('div')\r\n .addClass(this.cssPrefix + \"-column-buttonsBlock\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.columnButtonsBlockMobileArrow)\r\n .hide()\r\n .toDOM();\r\n this.buttonsBlockSortingButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(this.cssPrefix + \"-column-button\", this.cssPrefix + \"-column-sortbutton-none\")\r\n .toDOM();\r\n domel(this.buttonsBlockSortingButton)\r\n .on('touchstart click', function (ev) {\r\n ev.stopPropagation();\r\n _this.currentColumnRenderer.buttonSortingClickHandler.call(_this.currentColumnRenderer, ev, _this.buttonsBlockSortingButton);\r\n _this.toggleColumnPicked(null);\r\n _this.hideColumnButtonsMobile();\r\n return false;\r\n });\r\n this.buttonsBlockTypeButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(this.cssPrefix + \"-column-button\", this.cssPrefix + \"-column-button-type\")\r\n .on('touchstart click', function (ev) {\r\n ev.stopPropagation();\r\n _this.currentColumnRenderer.buttonTypeClickHandler.call(_this.currentColumnRenderer, ev);\r\n _this.toggleColumnPicked(null);\r\n _this.hideColumnButtonsMobile();\r\n return false;\r\n })\r\n .toDOM();\r\n this.buttonsBlockFormatButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(this.cssPrefix + \"-column-button\", this.cssPrefix + \"-column-button-format\")\r\n .on('touchstart click', function (ev) {\r\n ev.stopPropagation();\r\n _this.currentColumnRenderer.buttonFormatClickHandler.call(_this.currentColumnRenderer, ev);\r\n _this.toggleColumnPicked(null);\r\n _this.hideColumnButtonsMobile();\r\n return false;\r\n })\r\n .toDOM();\r\n this.buttonsBlockDeleteButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(this.cssPrefix + \"-column-button\", this.cssPrefix + \"-column-button-delete\")\r\n .on('touchstart click', function (ev) {\r\n ev.stopPropagation();\r\n _this.currentColumnRenderer.buttonDeleteClickHandler.call(_this.currentColumnRenderer, ev);\r\n _this.toggleColumnPicked(null);\r\n _this.hideColumnButtonsMobile();\r\n return false;\r\n })\r\n .toDOM();\r\n domel('div', this.columnButtonsBlockMobile)\r\n .addClass(this.cssPrefix + \"-column-button-close-block\")\r\n .on('touchstart click', function () {\r\n _this.toggleColumnPicked(null);\r\n _this.hideColumnButtonsMobile();\r\n });\r\n return this.columnButtonsBlockMobile;\r\n };\r\n ColumnsBar.prototype.showColumnButtonsMobile = function (column, columnRenderer, columnElement) {\r\n this.currentActiveColumn = column;\r\n this.currentColumnRenderer = columnRenderer;\r\n //calculate coordinates\r\n var rect = columnElement.getBoundingClientRect();\r\n var top = columnElement.offsetTop;\r\n var left = columnElement.offsetLeft;\r\n domel(this.columnButtonsBlockMobileArrow)\r\n .setStyle('left', (left + rect.width / 2).toString() + 'px');\r\n if (rect.top > 100) {\r\n domel(this.columnButtonsBlockMobile)\r\n .removeClass('show-below')\r\n .setStyle('top', (top - rect.height).toString() + 'px');\r\n }\r\n else {\r\n domel(this.columnButtonsBlockMobile)\r\n .addClass('show-below')\r\n .setStyle('top', (top + rect.height).toString() + 'px');\r\n }\r\n //show/hide separate buttons\r\n if (column.enabled && !column.isReadOnly()) {\r\n domel(this.buttonsBlockSortingButton).show();\r\n domel(this.buttonsBlockTypeButton).show();\r\n if (columnRenderer.formatButtonIsShown()) {\r\n domel(this.buttonsBlockFormatButton).show();\r\n }\r\n else {\r\n domel(this.buttonsBlockFormatButton).hide();\r\n }\r\n }\r\n else {\r\n domel(this.buttonsBlockSortingButton).hide();\r\n domel(this.buttonsBlockTypeButton).hide();\r\n }\r\n //show\r\n if (column.isReadOnly()) {\r\n domel(this.columnButtonsBlockMobile).hide();\r\n }\r\n else {\r\n domel(this.columnButtonsBlockMobile).show();\r\n }\r\n };\r\n ColumnsBar.prototype.hideColumnButtonsMobile = function () {\r\n domel(this.columnButtonsBlockMobile).hide();\r\n };\r\n ColumnsBar.prototype.renderColumn = function (column, elem) {\r\n var _this = this;\r\n var renderer = this.getColumnRenderer(column, elem);\r\n if (renderer) {\r\n var columnSlot_1 = renderer.render();\r\n renderer.onShowButtonsMobile = function () {\r\n _this.showColumnButtonsMobile(column, renderer, columnSlot_1);\r\n };\r\n renderer.onHideButtonsMobile = function () {\r\n _this.hideColumnButtonsMobile();\r\n };\r\n return columnSlot_1;\r\n }\r\n return null;\r\n };\r\n ColumnsBar.prototype.getColumnRenderer = function (column, slot) {\r\n switch (column.expr.tag) {\r\n case ExprTag.AggregateFunction:\r\n return new AggrFuncColumnRendererCB(this, column, slot);\r\n case ExprTag.CustomSql:\r\n // return new CustomSqlColumnRendererCB(this, column, slot);\r\n case ExprTag.EntityAttribute:\r\n case ExprTag.ParentEntityAttribute:\r\n return new SimpleColumnRendererCB(this, column, slot);\r\n }\r\n return null;\r\n };\r\n ColumnsBar.prototype.addNewColumn = function (attrId, index) {\r\n var _this = this;\r\n var model = this.getContext().getModel();\r\n var query = this.getQuery();\r\n var getColumnByAttrId = function (attrid) {\r\n var attribute = model.getAttributeById(attrid);\r\n if (!attribute) {\r\n return null;\r\n }\r\n if (!attribute.useInResult) {\r\n if (attribute.lookupAttr) {\r\n attrid = attribute.lookupAttr;\r\n attribute = model.getAttributeById(attrid);\r\n if (!attribute || !attribute.useInResult) {\r\n return null;\r\n }\r\n }\r\n else\r\n return null;\r\n }\r\n var column = query.createColumn();\r\n column.caption = _this.getDefaultColumnCaption(attribute);\r\n column.sorting = SortDirection.None;\r\n column.sortIndex = -1;\r\n column.expr.tag = ExprTag.EntityAttribute;\r\n column.expr.kind = DataKind.Attribute;\r\n column.expr.dataType = attribute.dataType;\r\n column.expr.setValue(attrid, true);\r\n column.params.concat(attribute.params);\r\n return column;\r\n };\r\n if (!this.getQuery()) {\r\n return;\r\n }\r\n var colToAdd, col;\r\n if (Array.isArray(attrId)) {\r\n colToAdd = [];\r\n for (var i = 0; i < attrId.length; i++) {\r\n col = getColumnByAttrId(attrId[i]);\r\n if (col) {\r\n colToAdd.push(col);\r\n }\r\n }\r\n }\r\n else\r\n colToAdd = getColumnByAttrId(attrId);\r\n this.addColumn(colToAdd, index);\r\n return colToAdd;\r\n };\r\n ColumnsBar.prototype.toggleColumnPicked = function (column) {\r\n var el;\r\n var isActive;\r\n if (column) {\r\n el = this.columnsBlock.querySelector(\"div[data-id=\" + column.id + \"]\");\r\n if (el) {\r\n isActive = el.classList.contains('active');\r\n }\r\n }\r\n //clear 'active' in all rows\r\n var rows = this.columnsBlock.querySelectorAll(\".\" + this.cssPrefix + \"-row\");\r\n for (var i = 0; i < rows.length; i++) {\r\n var row = rows[i];\r\n domel(row)\r\n .removeClass('active')\r\n .data(\"show-buttons\", null);\r\n }\r\n if (el && !isActive) {\r\n domel(el)\r\n .addClass('active')\r\n .data(\"show-buttons\", \"\");\r\n }\r\n };\r\n ColumnsBar.prototype.addColumn = function (column, index) {\r\n var query = this.getQuery();\r\n if (!query) {\r\n return;\r\n }\r\n if (Array.isArray(column))\r\n column = this.checkColumnsArray(column);\r\n else\r\n column = this.checkColumn(column);\r\n if (!column || (Array.isArray(column) && column.length == 0)) {\r\n return;\r\n }\r\n query.addColumnObj(column, index, self);\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n action: QueryChangeAction.Add,\r\n changee: column\r\n });\r\n };\r\n //adds one column to the bar on the specified position\r\n ColumnsBar.prototype.addColumnElement = function (column, index) {\r\n var rows = this.columnsBlock.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row]\");\r\n var newColBlock = this.renderColumn(column);\r\n if (rows.length > 0) {\r\n if (index < rows.length - 1) {\r\n this.columnsBlock.insertBefore(newColBlock, rows[index]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n }\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n }\r\n if (this.options.columnRenderedCallback) {\r\n this.options.columnRenderedCallback(newColBlock);\r\n }\r\n };\r\n ColumnsBar.prototype.checkColumnsArray = function (cols) {\r\n var i = 0, len = cols.length;\r\n var result = [];\r\n for (var i_1 = 0; i_1 < len; i_1++) {\r\n if (this.checkColumn(cols[i_1]))\r\n result.push(cols[i_1]);\r\n }\r\n return result;\r\n };\r\n ColumnsBar.prototype.checkColumn = function (col) {\r\n if (!this.options.allowDuplicates) {\r\n var query = this.getQuery();\r\n var columns = query.getColumns();\r\n var colJson = JSON.stringify(col.expr);\r\n for (var i = 0; i < columns.length; i++) {\r\n var qcolJson = JSON.stringify(columns[i].expr);\r\n if (qcolJson === colJson) {\r\n return null;\r\n }\r\n }\r\n }\r\n return col;\r\n };\r\n ColumnsBar.prototype.getDefaultColumnCaption = function (attr) {\r\n var format = this.options.titleElementFormat || this.options.attrElementFormat;\r\n var model = this.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n ColumnsBar.prototype.getColumnsBlock = function () {\r\n return this.columnsBlock;\r\n };\r\n ColumnsBar.prototype.showEntitiesMenu = function (menuOptions) {\r\n this.entitiesMenu && this.entitiesMenu.showMenu(menuOptions);\r\n };\r\n ColumnsBar.prototype.createEntitiesMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n var entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false, attrPlacement: this.options.attrPlacement, sortEntities: this.options.sortEntities });\r\n var options = { items: entitiesList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.entitiesMenu = new PopupMenu(options);\r\n };\r\n ColumnsBar.prototype.createSortMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-SortMenu';\r\n }\r\n var items = this.sortMenuList.concat(this.moveMenuList);\r\n var menuOptions = { \"items\": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n menuOptions.searchBoxAlwaysShown = false;\r\n this.sortMenu = new PopupMenu(menuOptions);\r\n };\r\n ColumnsBar.prototype.createMoveMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-MoveMenu';\r\n }\r\n var items = this.moveMenuList;\r\n var menuOptions = { \"items\": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n this.moveMenu = new PopupMenu(menuOptions);\r\n menuOptions.searchBoxAlwaysShown = false;\r\n };\r\n ColumnsBar.prototype.moveColumn = function (column, direction) {\r\n var query = this.getQuery();\r\n var columns = query.getColumns();\r\n var index = columns.indexOf(column);\r\n if (index >= 0) {\r\n switch (direction) {\r\n case 'MoveTop':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, 0);\r\n break;\r\n case 'MoveUp':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index - 1);\r\n break;\r\n case 'MoveDown':\r\n if (index == columns.length - 1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index + 1);\r\n break;\r\n case 'MoveBottom':\r\n if (index == columns.length - 1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, columns.length - 1);\r\n break;\r\n }\r\n ;\r\n }\r\n };\r\n ColumnsBar.prototype.moveColumnCore = function (index1, index2) {\r\n var query = this.getQuery();\r\n if (!query)\r\n return;\r\n var rows = this.columnsBlock.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row]\");\r\n var colToMove = rows[index1];\r\n if (index2 <= 0) {\r\n this.columnsBlock.insertBefore(colToMove, this.columnsBlock[0]);\r\n }\r\n else if (index2 < rows.length) {\r\n this.columnsBlock.insertBefore(colToMove, rows[index2]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(colToMove);\r\n }\r\n query.moveColumn(index1, index2);\r\n query.fireColumnsChangedEvent(QueryChangeAction.All);\r\n };\r\n ColumnsBar.prototype.areCustomExpressionsAllowed = function () {\r\n var query = this.getQuery();\r\n return query.isEx() && this.options.allowCustomExpressions;\r\n };\r\n ColumnsBar.globalCounter = 0;\r\n return ColumnsBar;\r\n}(Widget));\r\nexport { ColumnsBar };\r\n//# sourceMappingURL=columns_bar.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { ExprTag } from '@easyquery/core';\r\nimport { createBrowserEvent } from '@easydata/ui';\r\nimport { ColumnRendererCB } from './column_renderer_cb';\r\nvar SimpleColumnRendererCB = /** @class */ (function (_super) {\r\n __extends(SimpleColumnRendererCB, _super);\r\n function SimpleColumnRendererCB() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SimpleColumnRendererCB.prototype.getClassesToAdd = function () {\r\n return _super.prototype.getClassesToAdd.call(this) + \" \" + this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-column-entattr\";\r\n };\r\n SimpleColumnRendererCB.prototype.baseExpressionItemSelectedCallback = function (data, item) {\r\n var attrid = data.id;\r\n //this.column.expr.id = attrid;\r\n this.column.expr.setValue(attrid, true);\r\n this.column.caption = '';\r\n this.refresh();\r\n this.fireColumnChanged();\r\n };\r\n SimpleColumnRendererCB.prototype.getUIS = function () {\r\n var arg = this.column.expr.args[0];\r\n if (arg) {\r\n var model = this.bar.getContext().getModel();\r\n return model.checkAttrProperty(arg.value, \"useInSorting\");\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n SimpleColumnRendererCB.prototype.changeTypeToCustomSql = function () {\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.CustomSql);\r\n this.fireColumnChanged();\r\n };\r\n SimpleColumnRendererCB.prototype.changeTypeToAggr = function (funcId) {\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.AggregateFunction, { funcId: funcId });\r\n this.fireColumnChanged();\r\n };\r\n SimpleColumnRendererCB.prototype.changeColumnTypeHandler = function (ev) {\r\n var _this = this;\r\n this.functionMenu.showMenu({\r\n anchor: ev.target,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n if (data.id == \"CUSTOMSQL\") {\r\n _this.changeTypeToCustomSql();\r\n }\r\n else {\r\n _this.changeTypeToAggr(data.id);\r\n }\r\n return false;\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock) {\r\n _this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n };\r\n return SimpleColumnRendererCB;\r\n}(ColumnRendererCB));\r\nexport { SimpleColumnRendererCB };\r\n//# sourceMappingURL=simple_column_renderer.js.map","import { domel } from '@easydata/ui';\r\nimport { browserUtils } from '../../utils/browser_utils';\r\nvar BaseElementRenderer = /** @class */ (function () {\r\n function BaseElementRenderer(slot) {\r\n this.element = slot || domel('div').toDOM();\r\n }\r\n BaseElementRenderer.prototype.refresh = function () {\r\n this.render();\r\n };\r\n BaseElementRenderer.prototype.render = function (isEditMode) {\r\n var _this = this;\r\n if (isEditMode === void 0) { isEditMode = false; }\r\n this.labelElement = this.renderLabelElement();\r\n domel(this.element)\r\n .html('')\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.labelElement);\r\n if (this.isEditable()) {\r\n this.renderEditor();\r\n if (isEditMode) {\r\n setTimeout(function () { return _this.showEditor(); }, 50);\r\n }\r\n }\r\n return this.element;\r\n };\r\n BaseElementRenderer.prototype.isEditable = function () {\r\n return true;\r\n };\r\n BaseElementRenderer.prototype.renderLabelElement = function () {\r\n var _this = this;\r\n var displayedText = this.getLabelText();\r\n if (this.isEditable()) {\r\n return domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .title(displayedText)\r\n .text(displayedText)\r\n .on('click', function (ev) {\r\n ev.preventDefault();\r\n _this.showEditor();\r\n return false;\r\n })\r\n .toDOM();\r\n }\r\n else {\r\n return domel('span')\r\n .title(displayedText)\r\n .text(displayedText)\r\n .toDOM();\r\n }\r\n };\r\n BaseElementRenderer.prototype.getClassesToAdd = function () {\r\n return '';\r\n };\r\n BaseElementRenderer.prototype.getLabelText = function () {\r\n return this.getEmptyText();\r\n };\r\n BaseElementRenderer.prototype.getEmptyText = function () {\r\n return '';\r\n };\r\n return BaseElementRenderer;\r\n}());\r\nexport { BaseElementRenderer };\r\n//# sourceMappingURL=base_element_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { BaseElementRenderer } from './base_element_renderer';\r\nvar DropDownRenderer = /** @class */ (function (_super) {\r\n __extends(DropDownRenderer, _super);\r\n function DropDownRenderer(slot) {\r\n return _super.call(this, slot) || this;\r\n }\r\n DropDownRenderer.prototype.showEditor = function () {\r\n var _this = this;\r\n var menu = this.getMenu();\r\n if (menu) {\r\n menu.showMenu({\r\n anchor: this.labelElement,\r\n itemSelectedCallback: function (item) {\r\n _this.itemSelected(item.id);\r\n return false;\r\n }\r\n });\r\n }\r\n };\r\n DropDownRenderer.prototype.closeEditor = function () {\r\n var menu = this.getMenu();\r\n if (menu)\r\n menu.hideMenu();\r\n };\r\n return DropDownRenderer;\r\n}(BaseElementRenderer));\r\nexport { DropDownRenderer };\r\n//# sourceMappingURL=dropdown_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { WidgetGroup, QueryChangeAction, ExprTag, QueryChangePart, SortDirection } from '@easyquery/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { EasyGrid } from '@easydata/ui';\r\nimport { Grid } from './grid';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nvar EasyGridWidget = /** @class */ (function (_super) {\r\n __extends(EasyGridWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function EasyGridWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.hasCustomTotalsSettings = false;\r\n //!!!! DO NOT forget to add types for options\r\n _this.options = { autoRefresh: true };\r\n _this.group = WidgetGroup.Result;\r\n return _this;\r\n }\r\n EasyGridWidget.prototype.getWidgetType = function () {\r\n return 'easyGrid';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n EasyGridWidget.prototype.init = function (context, options) {\r\n var _this = this;\r\n _super.prototype.init.call(this, context, options);\r\n var gridOptions = __assign(__assign({}, options), { slot: this.slot, dataTable: context.resultTable });\r\n this.options = dataUtils.assign(this.options, options);\r\n gridOptions.onPlusButtonClick = function (ev) { return _this.addColumnClickHandler(ev); };\r\n gridOptions.onColumnMoved = function (ev) { return _this.columnMovedHandler(ev); };\r\n if (gridOptions.aggregates) {\r\n this.hasCustomTotalsSettings = true;\r\n }\r\n else {\r\n gridOptions.aggregates = { settings: context.getQuery().getAggregationSettings(), calculator: null };\r\n }\r\n gridOptions.aggregates.calculator = this.context.getServices()\r\n .getAggregatesCalculator();\r\n this.destroy();\r\n this.grid = new EasyGrid(gridOptions);\r\n if (this.options.autoRefresh) {\r\n this.attachQueryObserver();\r\n }\r\n };\r\n EasyGridWidget.prototype.refreshCore = function () {\r\n this.clear();\r\n this.updateTotalsSettings();\r\n this.render();\r\n };\r\n EasyGridWidget.prototype.render = function () {\r\n this.createEntitiesMenu();\r\n this.grid.refresh();\r\n };\r\n EasyGridWidget.prototype.attachQueryObserver = function () {\r\n };\r\n EasyGridWidget.prototype.destroyCore = function () {\r\n this.detachQueryObserver();\r\n if (this.grid)\r\n this.grid.destroy();\r\n this.slot.innerHTML = '';\r\n };\r\n EasyGridWidget.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.getContext().getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n EasyGridWidget.prototype.updateTotalsSettings = function () {\r\n var context = this.getContext();\r\n if (!this.hasCustomTotalsSettings) {\r\n var settings = context.getQuery().getAggregationSettings();\r\n this.grid.options.aggregates.settings = settings;\r\n }\r\n };\r\n EasyGridWidget.prototype.createEntitiesMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n var entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false });\r\n var options = { items: entitiesList, id: menuId };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.entitiesMenu = new PopupMenu(options);\r\n };\r\n EasyGridWidget.prototype.getModel = function () {\r\n return this.context.getModel();\r\n };\r\n EasyGridWidget.prototype.getQuery = function () {\r\n return this.context.getQuery();\r\n };\r\n EasyGridWidget.prototype.clear = function () {\r\n if (this.grid)\r\n this.grid.clear();\r\n };\r\n EasyGridWidget.prototype.addColumnClickHandler = function (ev) {\r\n var _this = this;\r\n this.entitiesMenu.showMenu({\r\n anchor: ev.sourceEvent.target,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n var attrid = data.id;\r\n _this.addNewColumn(attrid);\r\n return false;\r\n }\r\n });\r\n };\r\n EasyGridWidget.prototype.columnMovedHandler = function (ev) {\r\n var query = this.getQuery();\r\n var oldIndex = dataUtils.findItemIndexById(query.getColumns(), ev.columnId);\r\n if (oldIndex >= 0) {\r\n query.moveColumn(oldIndex, ev.newIndex);\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n action: QueryChangeAction.All,\r\n source: this\r\n });\r\n }\r\n };\r\n EasyGridWidget.prototype.addNewColumn = function (attrId) {\r\n var _this = this;\r\n var model = this.getContext().getModel();\r\n var query = this.getContext().getQuery();\r\n var getColumnByAttrId = function (attrid) {\r\n var attribute = model.getAttributeById(attrid);\r\n if (!attribute) {\r\n return null;\r\n }\r\n if (!attribute.useInSorting) {\r\n if (attribute.lookupAttr) {\r\n attrid = attribute.lookupAttr;\r\n attribute = model.getAttributeById(attrid);\r\n if (!attribute || !attribute.useInSorting) {\r\n return null;\r\n }\r\n }\r\n else\r\n return null;\r\n }\r\n var column = query.createColumn();\r\n column.caption = _this.getDefaultColumnCaption(attribute);\r\n column.sorting = SortDirection.None;\r\n column.sortIndex = -1;\r\n column.expr.tag = ExprTag.EntityAttribute;\r\n //column.expr.id = attrid;\r\n column.expr.setValue(attrid, true);\r\n column.params.concat(attribute.params);\r\n return column;\r\n };\r\n if (!this.getContext().getQuery()) {\r\n return;\r\n }\r\n return this.addColumn(getColumnByAttrId(attrId));\r\n };\r\n EasyGridWidget.prototype.getDefaultColumnCaption = function (attr) {\r\n var format = this.options.titleElementFormat || this.options.attrElementFormat;\r\n var model = this.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n EasyGridWidget.prototype.addColumn = function (column) {\r\n var query = this.getContext().getQuery();\r\n if (!query) {\r\n return;\r\n }\r\n column = this.checkColumn(column);\r\n if (!column) {\r\n return;\r\n }\r\n column = query.addColumn({\r\n caption: column.caption,\r\n attributeId: column.expr.value,\r\n sorting: column.sorting,\r\n sortIndex: column.sortIndex\r\n });\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n action: QueryChangeAction.Add,\r\n changee: column,\r\n source: this\r\n });\r\n return column;\r\n };\r\n EasyGridWidget.prototype.checkColumn = function (col) {\r\n var query = this.getContext().getQuery();\r\n var columns = query.getColumns();\r\n var colJson = JSON.stringify(col.expr.saveToData());\r\n for (var i = 0; i < columns.length; i++) {\r\n var qcolJson = JSON.stringify(columns[i].expr.saveToData());\r\n if (qcolJson === colJson) {\r\n return null;\r\n }\r\n }\r\n return col;\r\n };\r\n return EasyGridWidget;\r\n}(Grid));\r\nexport { EasyGridWidget };\r\n//# sourceMappingURL=easy_grid_widget.js.map","import { domel } from '@easydata/ui';\r\nimport { i18n } from '@easyquery/core';\r\nvar ExportDialog = /** @class */ (function () {\r\n function ExportDialog(context) {\r\n this.context = context;\r\n this.promise = null;\r\n }\r\n ExportDialog.prototype.show = function (defFormat) {\r\n var _this = this;\r\n if (defFormat === void 0) { defFormat = null; }\r\n if (!this.promise) {\r\n var formats = this.context.getExportFormats();\r\n if (formats.length == 0)\r\n throw Error(\"No exporter has been registered.\");\r\n defFormat = defFormat || formats[0];\r\n this.promise = new Promise(function (resolve, reject) {\r\n var ds = _this.context.getServices().getDialogService();\r\n var body = domel('div')\r\n .addClass('kdlg-form-section')\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-form')\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-fields col-a-1 label-align-right')\r\n .addChild('label', function (b) { return b\r\n .addClass('kdlg-form-label', 'kflex-20')\r\n .attr('for', 'export_format')\r\n .addText(i18n.getText('ExportDlgFmtLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .addChild('select', function (b) {\r\n b\r\n .attr('name', 'export_format')\r\n .id('exportFormat');\r\n for (var _i = 0, _a = _this.context.getExportFormats(); _i < _a.length; _i++) {\r\n var format = _a[_i];\r\n b.addOption({\r\n value: format,\r\n title: i18n.getText(format) || format,\r\n selected: defFormat == format\r\n });\r\n }\r\n }); }); }); })\r\n .toDOM();\r\n ds.open({\r\n title: i18n.getText('ExportDlgTitle'),\r\n body: body,\r\n onSubmit: function () {\r\n var format = body.querySelector('#exportFormat').value;\r\n _this.context.exportResult({\r\n format: format,\r\n success: resolve,\r\n error: reject\r\n });\r\n return true;\r\n }\r\n });\r\n });\r\n }\r\n return this.promise.finally(function () { return _this.promise = null; });\r\n };\r\n return ExportDialog;\r\n}());\r\nexport { ExportDialog };\r\n//# sourceMappingURL=export_dialog.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { addElement } from '@easydata/ui';\r\nimport { ChartWidget } from './chart_widget';\r\nimport { ChartType } from './chart_type';\r\nvar ChartJsWidget = /** @class */ (function (_super) {\r\n __extends(ChartJsWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n * @param provider The provider.\r\n */\r\n function ChartJsWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.colors = [\r\n '#4dc9f6',\r\n '#f67019',\r\n '#f53794',\r\n '#537bc4',\r\n '#acc236',\r\n '#166a8f',\r\n '#00a950',\r\n '#58595b',\r\n '#8549ba'\r\n ];\r\n _this.chartLabels = [];\r\n _this.chartColumns = [];\r\n _this.hasChartTypes = [\r\n ChartType.Column,\r\n ChartType.Bar,\r\n ChartType.Area,\r\n ChartType.Line,\r\n ChartType.SteppedLine,\r\n ChartType.Doughnut,\r\n ChartType.Polar,\r\n ChartType.Radar,\r\n ChartType.Pie\r\n // ChartType.Bubble,\r\n // ChartType.Scatter\r\n ];\r\n _this.options.legend = {\r\n show: false,\r\n position: 'bottom'\r\n };\r\n return _this;\r\n }\r\n ChartJsWidget.prototype.getWidgetType = function () {\r\n return 'chartChartJs';\r\n };\r\n ChartJsWidget.hasChartJs = function () {\r\n return typeof Chart !== 'undefined';\r\n };\r\n ChartJsWidget.prototype.canDraw = function () {\r\n return ChartJsWidget.hasChartJs();\r\n };\r\n ChartJsWidget.prototype.initChart = function () {\r\n if (ChartJsWidget.hasChartJs() && this.labelColumn >= 0\r\n && this.dataColumns && this.dataColumns.length > 0) {\r\n this.updateChartColumns();\r\n }\r\n };\r\n ChartJsWidget.prototype.drawCore = function () {\r\n if (ChartJsWidget.hasChartJs() && this.dataTable\r\n && this.dataTable.getCachedCount() > 0) {\r\n var config = this.generateConfig();\r\n var chartCanvas = this.getChartCanvas(this.chartDiv);\r\n var chartContext = chartCanvas.getContext('2d');\r\n new Chart(chartContext, config);\r\n }\r\n };\r\n ChartJsWidget.prototype.updateChartColumns = function () {\r\n if (this.dataTable) {\r\n this.chartLabels = [];\r\n this.chartColumns = [];\r\n var rows = this.dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n this.chartLabels.push(rows[i].getValue(this.labelColumn));\r\n this.chartColumns.push(rows[i].getValue(this.dataColumns[0]));\r\n }\r\n }\r\n };\r\n ChartJsWidget.prototype.getChartCanvas = function (slot) {\r\n var result;\r\n //find canvas element\r\n var canvases = slot.getElementsByTagName('canvas');\r\n if (canvases && canvases.length > 0) {\r\n result = canvases[0];\r\n }\r\n else {\r\n result = addElement(slot, 'canvas');\r\n }\r\n return result;\r\n };\r\n ChartJsWidget.prototype.generateConfig = function () {\r\n var dataColors = [];\r\n var datasetName = this.dataTable.columns.get(this.dataColumns[0]).label;\r\n var fillValue = true;\r\n var borderColor;\r\n if (this.chartType == ChartType.Pie\r\n || this.chartType == ChartType.Doughnut\r\n || this.chartType == ChartType.Polar\r\n || this.chartType == ChartType.Bar\r\n || this.chartType == ChartType.Column) {\r\n for (var i = 0; i < this.chartLabels.length; i++) {\r\n dataColors.push(this.colors[i % this.colors.length]);\r\n }\r\n }\r\n else {\r\n dataColors = [this.colors[3]];\r\n }\r\n if (this.chartType == ChartType.Line\r\n || this.chartType == ChartType.SteppedLine) {\r\n fillValue = false;\r\n borderColor = this.colors[3];\r\n }\r\n this.options.legend = this.options.legend || {};\r\n var dataset1 = {\r\n data: this.chartColumns,\r\n backgroundColor: dataColors,\r\n borderColor: borderColor,\r\n label: datasetName,\r\n fill: fillValue\r\n };\r\n if (this.chartType == ChartType.SteppedLine) {\r\n dataset1.stepped = this.chartType === ChartType.SteppedLine, // >= 3.0.0\r\n dataset1.steppedLine = this.chartType === ChartType.SteppedLine; // <= 3.0.0\r\n }\r\n var displayLegend = this.options.legend.show && (this.chartType == ChartType.Pie\r\n || this.chartType == ChartType.Radar || this.chartType == ChartType.Polar\r\n || this.chartType == ChartType.Doughnut);\r\n return {\r\n type: this.getChartType(),\r\n data: {\r\n datasets: [dataset1],\r\n labels: this.chartLabels\r\n },\r\n options: {\r\n legend: {\r\n display: displayLegend,\r\n position: this.options.legend.position || 'bottom'\r\n },\r\n title: {\r\n display: true,\r\n text: datasetName\r\n }\r\n }\r\n };\r\n };\r\n ChartJsWidget.prototype.getChartType = function () {\r\n switch (this.chartType) {\r\n case ChartType.Column:\r\n return \"bar\";\r\n case ChartType.Bar:\r\n return \"horizontalBar\";\r\n case ChartType.Area:\r\n case ChartType.SteppedLine:\r\n case ChartType.Line:\r\n return \"line\";\r\n case ChartType.Doughnut:\r\n return \"doughnut\";\r\n case ChartType.Polar:\r\n return \"polarArea\";\r\n case ChartType.Radar:\r\n return \"radar\";\r\n case ChartType.Pie:\r\n return \"pie\";\r\n default:\r\n return \"pie\";\r\n }\r\n };\r\n return ChartJsWidget;\r\n}(ChartWidget));\r\nexport { ChartJsWidget };\r\n//# sourceMappingURL=chart_widget_chartjs.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup, } from '@easyquery/core';\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { addCssClass, showElement, hideElement, toggleVisibility, isVisible } from '@easydata/ui';\r\nimport { ChartType } from './chart_type';\r\nvar ChartWidget = /** @class */ (function (_super) {\r\n __extends(ChartWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n * @param provider The provider.\r\n */\r\n function ChartWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.chartType = ChartType.Pie;\r\n _this.supportedChartTypes = [];\r\n _this.dataTable = null;\r\n _this.potentialLabelColumns = [];\r\n _this.potentialDataColumns = [];\r\n _this.labelColumn = -1;\r\n _this.dataColumns = [];\r\n _this.options = {\r\n chartType: ChartType.Pie,\r\n showOnPaging: false,\r\n hideSettings: false,\r\n legend: {\r\n show: false,\r\n position: 'right'\r\n }\r\n };\r\n _this.element = slot;\r\n _this.group = WidgetGroup.Result;\r\n return _this;\r\n }\r\n Object.defineProperty(ChartWidget.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-chart';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n ChartWidget.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.dataTable = context.resultTable;\r\n this.setOptions(options);\r\n };\r\n /**\r\n * Checks, if widget has data.\r\n * @returns `true` if has data, otherwise - `false`.\r\n */\r\n ChartWidget.prototype.hasData = function () {\r\n var result = this.dataTable != null;\r\n if (result) {\r\n result = this.dataTable.getCachedCount() > 0;\r\n }\r\n return result;\r\n };\r\n /**\r\n * Checks, if there ara colums for chart\r\n * @returns `true` if there are columns, otherwise - `false`.\r\n */\r\n ChartWidget.prototype.hasColumnsForChart = function () {\r\n return this.potentialLabelColumns.length > 0 && this.potentialDataColumns.length > 0;\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n ChartWidget.prototype.refreshCore = function () {\r\n this.prepareChartData();\r\n this.render();\r\n };\r\n ChartWidget.prototype.setOptions = function (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n this.supportedChartTypes = this.getSupportedChartTypes();\r\n if (this.supportedChartTypes.length == 0) {\r\n throw Error(\"Chart widget should support at least one chart type\");\r\n }\r\n if (options.chartType && this.supportedChartTypes.indexOf(options.chartType) >= 0) {\r\n this.chartType = options.chartType;\r\n }\r\n else {\r\n this.chartType = this.supportedChartTypes[0];\r\n }\r\n };\r\n ChartWidget.prototype.getOptions = function () {\r\n return this.options;\r\n };\r\n ChartWidget.prototype.getChartTypeName = function (ct) {\r\n switch (ct) {\r\n case ChartType.Area:\r\n return i18n.getText('ChartType', 'Area');\r\n case ChartType.Bar:\r\n return i18n.getText('ChartType', 'Bar');\r\n case ChartType.Column:\r\n return i18n.getText('ChartType', 'Column');\r\n case ChartType.Combo:\r\n return i18n.getText('ChartType', 'Combo');\r\n case ChartType.Doughnut:\r\n return i18n.getText('ChartType', 'Doughnut');\r\n case ChartType.Polar:\r\n return i18n.getText('ChartType', 'Polar');\r\n case ChartType.Radar:\r\n return i18n.getText('ChartType', 'Radar');\r\n case ChartType.Histogram:\r\n return i18n.getText('ChartType', 'Histogram');\r\n case ChartType.Line:\r\n return i18n.getText('ChartType', 'Line');\r\n case ChartType.SteppedLine:\r\n return i18n.getText('ChartType', 'SteppedLine');\r\n default:\r\n return i18n.getText('ChartType', 'Pie');\r\n }\r\n };\r\n ChartWidget.prototype.updateSettings = function (settings, updateColumns) {\r\n if (updateColumns === void 0) { updateColumns = true; }\r\n if (typeof settings.showLegend !== 'undefined') {\r\n this.options.legend = this.options.legend || {};\r\n this.options.legend.show = settings.showLegend;\r\n }\r\n this.chartType = settings.type;\r\n this.labelColumn = settings.labelColumn;\r\n this.dataColumns[0] = settings.dataColumn;\r\n if (updateColumns)\r\n this.updateChartColumns();\r\n };\r\n /**\r\n * Prepares data for chart.\r\n */\r\n ChartWidget.prototype.prepareChartData = function () {\r\n var _this = this;\r\n if (this.dataTable) {\r\n this.potentialLabelColumns = [];\r\n this.potentialDataColumns = [];\r\n var colNum = this.dataTable.columns.count;\r\n for (var i = 0; i < colNum; i++) {\r\n var column = this.dataTable.columns.get(i);\r\n var colType = column.type;\r\n var colLabel = column.label;\r\n this.potentialLabelColumns.push({ idx: i, label: colLabel });\r\n if (dataUtils.isNumericType(colType)) {\r\n this.potentialDataColumns.push({ idx: i, label: colLabel });\r\n }\r\n }\r\n ;\r\n if (this.labelColumn != -1) {\r\n if (!this.potentialLabelColumns\r\n .filter(function (c) { return c.idx == _this.labelColumn; })\r\n .length) {\r\n this.labelColumn = -1;\r\n }\r\n }\r\n else {\r\n this.labelColumn = (this.potentialLabelColumns.length > 0)\r\n ? this.potentialLabelColumns[0].idx : -1;\r\n }\r\n if (this.dataColumns.length) {\r\n var ids_1 = this.potentialDataColumns.map(function (d) { return d.idx; });\r\n this.dataColumns = this.dataColumns.filter(function (v) { return ids_1.indexOf(v) >= 0; });\r\n if (!this.dataColumns.length) {\r\n this.dataColumns = (this.potentialDataColumns.length > 0)\r\n ? [].concat(this.potentialDataColumns[0].idx)\r\n : [];\r\n }\r\n }\r\n else {\r\n this.dataColumns = (this.potentialDataColumns.length > 0)\r\n ? [].concat(this.potentialDataColumns[0].idx)\r\n : [];\r\n }\r\n this.initChart();\r\n }\r\n };\r\n ChartWidget.prototype.getSupportedChartTypes = function () {\r\n var _this = this;\r\n var chartTypes = this.options.supportedChartTypes\r\n ? this.options.supportedChartTypes\r\n : Object.keys(ChartType).map(function (key) { return ChartType[key]; });\r\n return chartTypes.filter(function (type) { return _this.hasChartTypes.indexOf(type) >= 0; });\r\n };\r\n ChartWidget.prototype.getCurrentChartType = function () {\r\n return this.chartType;\r\n };\r\n ChartWidget.prototype.render = function () {\r\n var _this = this;\r\n this.clear();\r\n if (this.hasData() && this.hasColumnsForChart()\r\n && (this.context.resultTable.getTotal()\r\n == this.context.resultTable.getCachedCount())) {\r\n var headerDiv = document.createElement('div');\r\n addCssClass(headerDiv, this.cssPrefix + \"-header\");\r\n var mainDiv = document.createElement('div');\r\n addCssClass(mainDiv, this.cssPrefix + \"-main\");\r\n if (this.canDraw()) {\r\n var chartTypeSelector = document.createElement('select');\r\n for (var _i = 0, _a = this.supportedChartTypes; _i < _a.length; _i++) {\r\n var ct = _a[_i];\r\n var sopt = document.createElement('option');\r\n sopt.value = ct.toString();\r\n sopt.text = this.getChartTypeName(ct);\r\n chartTypeSelector.appendChild(sopt);\r\n }\r\n chartTypeSelector.value = this.chartType.toString();\r\n headerDiv.appendChild(chartTypeSelector);\r\n chartTypeSelector.addEventListener('change', function (ev) {\r\n var ctkey = ev.target.value;\r\n _this.chartType = parseInt(ctkey);\r\n _this.refresh();\r\n });\r\n this.settingsDiv = document.createElement('div');\r\n addCssClass(this.settingsDiv, this.cssPrefix + \"-settings\");\r\n hideElement(this.settingsDiv);\r\n mainDiv.appendChild(this.settingsDiv);\r\n this.chartDiv = document.createElement('div');\r\n addCssClass(this.chartDiv, this.cssPrefix + \"-content\");\r\n hideElement(this.chartDiv);\r\n mainDiv.appendChild(this.chartDiv);\r\n this.initSettingsDiv();\r\n var chartSettingsBtn = document.createElement('div');\r\n addCssClass(chartSettingsBtn, this.cssPrefix + \"-settings-icon\");\r\n chartSettingsBtn.title = \"Settings\";\r\n headerDiv.appendChild(chartSettingsBtn);\r\n chartSettingsBtn.addEventListener('click', function (ev) {\r\n _this.toggleSettings();\r\n });\r\n this.drawChart(100);\r\n }\r\n else {\r\n this.addContentDiv(mainDiv, 'Unable to render the chart. None of the supported chart libraries (ChartJS, Google Charts, etc) is found.');\r\n }\r\n if (!this.options.hideSettings) {\r\n this.element.appendChild(headerDiv);\r\n }\r\n this.element.appendChild(mainDiv);\r\n this.element.style.display = \"\";\r\n }\r\n else {\r\n this.element.style.display = \"none\";\r\n }\r\n };\r\n ChartWidget.prototype.addContentDiv = function (mainDiv, text) {\r\n var contentDiv = document.createElement('div');\r\n addCssClass(contentDiv, this.cssPrefix + \"-no-data\");\r\n contentDiv.innerText = text;\r\n mainDiv.appendChild(contentDiv);\r\n };\r\n /**\r\n * Clears the chart.\r\n */\r\n ChartWidget.prototype.clear = function () {\r\n this.element.innerHTML = '';\r\n };\r\n /**\r\n * Draws chart with a delay.\r\n * @param delay The delay.\r\n */\r\n ChartWidget.prototype.drawChart = function (delay) {\r\n var _this = this;\r\n showElement(this.chartDiv);\r\n if (delay > 0) {\r\n setTimeout(function () { return _this.drawCore(); }, delay);\r\n }\r\n else {\r\n this.drawCore();\r\n }\r\n };\r\n /**\r\n * Inititializes the settings div.\r\n */\r\n ChartWidget.prototype.initSettingsDiv = function () {\r\n var _this = this;\r\n var settingsHeader = document.createElement('div');\r\n settingsHeader.textContent = 'SETTINGS';\r\n addCssClass(settingsHeader, this.cssPrefix + \"-settings-header\");\r\n this.settingsDiv.appendChild(settingsHeader);\r\n // Label column\r\n var labelDiv = document.createElement('div');\r\n addCssClass(labelDiv, this.cssPrefix + \"-settings-single\");\r\n this.settingsDiv.appendChild(labelDiv);\r\n var labelColumnSelectorCaption = document.createElement('span');\r\n showElement(labelColumnSelectorCaption);\r\n labelColumnSelectorCaption.textContent = 'Label column';\r\n labelDiv.appendChild(labelColumnSelectorCaption);\r\n var labelColumnSelector = document.createElement('select');\r\n showElement(labelColumnSelector);\r\n labelDiv.appendChild(labelColumnSelector);\r\n for (var _i = 0, _a = this.potentialLabelColumns; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n var sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n labelColumnSelector.appendChild(sopt);\r\n }\r\n if (this.labelColumn >= 0) {\r\n labelColumnSelector.value = this.labelColumn.toString();\r\n }\r\n labelColumnSelector.addEventListener('change', function (ev) {\r\n _this.labelColumn = parseInt(ev.target.value);\r\n _this.updateChartColumns();\r\n _this.toggleSettings(function () {\r\n _this.drawChart(100);\r\n });\r\n });\r\n // Data column\r\n var dataDiv = document.createElement('div');\r\n addCssClass(dataDiv, this.cssPrefix + \"-settings-single\");\r\n this.settingsDiv.appendChild(dataDiv);\r\n var dataColumnSelectorCaption = document.createElement('span');\r\n showElement(dataColumnSelectorCaption);\r\n dataColumnSelectorCaption.textContent = 'Data column';\r\n dataDiv.appendChild(dataColumnSelectorCaption);\r\n var dataColumnSelector = document.createElement('select');\r\n showElement(dataColumnSelector);\r\n dataDiv.appendChild(dataColumnSelector);\r\n for (var _b = 0, _c = this.potentialDataColumns; _b < _c.length; _b++) {\r\n var col = _c[_b];\r\n var sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n dataColumnSelector.appendChild(sopt);\r\n }\r\n if (this.dataColumns.length > 0 && this.dataColumns[0] >= 0) {\r\n dataColumnSelector.value = this.dataColumns[0].toString();\r\n }\r\n dataColumnSelector.addEventListener('change', function (ev) {\r\n _this.dataColumns[0] = parseInt(ev.target.value);\r\n _this.updateChartColumns();\r\n _this.toggleSettings(function () {\r\n _this.drawChart(100);\r\n });\r\n });\r\n };\r\n ChartWidget.prototype.getPotentialLabelColumns = function () {\r\n return this.potentialLabelColumns;\r\n };\r\n ChartWidget.prototype.getPotentialDataColumns = function () {\r\n return this.potentialDataColumns;\r\n };\r\n ChartWidget.prototype.getLabelColumnIndex = function () {\r\n return this.labelColumn;\r\n };\r\n ChartWidget.prototype.getDataColumnIndex = function () {\r\n return this.dataColumns[0];\r\n };\r\n /**\r\n * Toggles settings.\r\n * @param callback The callback.\r\n */\r\n ChartWidget.prototype.toggleSettings = function (callback) {\r\n var first;\r\n var second;\r\n if (isVisible(this.chartDiv)) {\r\n first = this.chartDiv;\r\n second = this.settingsDiv;\r\n }\r\n else {\r\n first = this.settingsDiv;\r\n second = this.chartDiv;\r\n }\r\n toggleVisibility(first, second, {\r\n complete: callback\r\n });\r\n };\r\n return ChartWidget;\r\n}(Widget));\r\nexport { ChartWidget };\r\n//# sourceMappingURL=chart_widget.js.map","export function repeatString(str, times) {\r\n var result = \"\";\r\n for (var i = 0; i < times; i++) {\r\n result += str;\r\n }\r\n return result;\r\n}\r\nexport function reverseString(str) {\r\n return str.split(\"\").reverse().join(\"\");\r\n}\r\nexport function strEndsWith(str, symbol) {\r\n return str && str.lastIndexOf(symbol) == (str.length - symbol.length);\r\n}\r\n/**\r\n * Adds two paths and returns the result\r\n * Correctly processes leading and trailing slashes\r\n * @param path1\r\n * @param path2\r\n */\r\nexport function combinePath(path1, path2) {\r\n var result = path1;\r\n if (result != null && result.length > 0) {\r\n if (result.charAt(result.length - 1) != '/')\r\n result += \"/\";\r\n result += path2;\r\n }\r\n else {\r\n result = path2;\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=string_utils.js.map","var DataRow = /** @class */ (function () {\r\n function DataRow(columns, values) {\r\n this.columns = columns;\r\n this.values = values;\r\n }\r\n DataRow.prototype.toArray = function () {\r\n return Array.from(this.values);\r\n };\r\n DataRow.prototype.size = function () {\r\n return this.values.length;\r\n };\r\n DataRow.prototype.getValue = function (colIdOrIndex) {\r\n var index;\r\n if (typeof colIdOrIndex === \"string\") {\r\n index = this.columns.getIndex(colIdOrIndex);\r\n if (index === undefined) {\r\n throw new RangeError(\"No column with id '\" + colIdOrIndex + \"'\");\r\n }\r\n }\r\n else {\r\n index = colIdOrIndex;\r\n }\r\n if (index >= this.values.length)\r\n throw new RangeError(\"Out of range: \" + index);\r\n return this.values[index];\r\n };\r\n DataRow.prototype.setValue = function (colIdOrIndex, value) {\r\n var index;\r\n if (typeof colIdOrIndex === \"string\") {\r\n index = this.columns.getIndex(colIdOrIndex);\r\n if (index === undefined) {\r\n throw new RangeError(\"No column with id '\" + colIdOrIndex + \"'\");\r\n }\r\n }\r\n else {\r\n index = colIdOrIndex;\r\n }\r\n if (index >= this.values.length)\r\n throw new RangeError(\"Out of range: \" + index);\r\n this.values[index] = value;\r\n };\r\n return DataRow;\r\n}());\r\nexport { DataRow };\r\n//# sourceMappingURL=data_row.js.map","import { DataType, EditorTag, utils as dataUtils } from '@easydata/core';\r\nimport { Expression } from './expression';\r\nimport { DataKind } from '../types/data_kind';\r\nimport { LinkType } from '../types/link_type';\r\nimport { CondTag } from '../types/cond_tag';\r\nimport { ExprTag } from '../types/expr_tag';\r\nimport { QueryChangePart, QueryChangeAction } from './query_events';\r\nimport { EqValueEditor } from '../dm/value_editor';\r\nimport { EqEditorTag } from '../types/eq_editor_tag';\r\nimport { ConditionPart } from '../types/cond_part';\r\n/**\r\n * Represents some condition.\r\n */\r\nvar Condition = /** @class */ (function () {\r\n /**\r\n * The default constructor.\r\n * @param tag The condition tag\r\n */\r\n function Condition(query, tag) {\r\n this.query = query;\r\n /**\r\n * The linking type.\r\n */\r\n this.linkType = LinkType.All; //only for predicates\r\n this.parent = null;\r\n this._id = dataUtils.generateId('cond');\r\n this.justAdded = false;\r\n this.tag = tag || CondTag.Unknown;\r\n this.enabled = true;\r\n this.operatorId = '';\r\n this.blockId = '';\r\n this.expressions = new Array();\r\n this.conditions = new Array();\r\n }\r\n Object.defineProperty(Condition.prototype, \"id\", {\r\n get: function () {\r\n return this._id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Condition.prototype, \"enabled\", {\r\n get: function () {\r\n return this._enabled && (!this.getParent() || this.getParent().enabled);\r\n },\r\n set: function (value) {\r\n this._enabled = value && (!this.getParent() || this.getParent().enabled);\r\n this.conditions && this.conditions.forEach(function (cond) {\r\n cond.enabled = value;\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Condition.prototype.getQuery = function () {\r\n return this.query;\r\n };\r\n Condition.prototype.getModel = function () {\r\n return this.query.getModel();\r\n };\r\n Condition.prototype.getParent = function () {\r\n return this.parent;\r\n };\r\n Condition.prototype.setParent = function (parent) {\r\n this.parent = parent;\r\n };\r\n Condition.prototype.getConditions = function () {\r\n return this.conditions;\r\n };\r\n Condition.prototype.isEmpty = function () {\r\n return this.conditions.length === 0;\r\n };\r\n Condition.prototype.isGroup = function () {\r\n return (this.tag == CondTag.Group) || (this.parent == null);\r\n };\r\n Condition.prototype.getLevel = function () {\r\n var parent = this.getParent();\r\n return parent ? parent.getLevel() + 1 : 0;\r\n };\r\n /**\r\n * Indicates whether this condition is read-only.\r\n */\r\n Condition.prototype.isReadOnly = function () {\r\n return false;\r\n };\r\n Condition.prototype.setReadOnly = function (value) {\r\n };\r\n /**\r\n * The value indicating whether this condition is parameterized.\r\n */\r\n Condition.prototype.isParameterized = function () {\r\n return false;\r\n };\r\n Condition.prototype.setParameterized = function (value) {\r\n };\r\n /**\r\n * Indicates whether this condition must be placed into `JOIN` clause in result `SQL`.\r\n */\r\n Condition.prototype.isInJoin = function () {\r\n return false;\r\n };\r\n Condition.prototype.setInJoin = function (value) {\r\n };\r\n Condition.prototype.clearConditions = function () {\r\n this.conditions = [];\r\n };\r\n Condition.prototype.addCondition = function (cond) {\r\n cond.setParent(this);\r\n return this.conditions.push(cond);\r\n };\r\n Condition.prototype.removeConditionAt = function (index) {\r\n this.conditions.splice(index, 1);\r\n };\r\n /**\r\n * Loads condtion from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param data The JSON representation object.\r\n */\r\n Condition.prototype.loadFromData = function (model, data) {\r\n if (data) {\r\n this.tag = data.tag;\r\n if (!this.tag) {\r\n this.tag = (!this.parent || this.conditions.length > 0) ? CondTag.Group : CondTag.Simple;\r\n }\r\n if (typeof data.enabled !== 'undefined') {\r\n this.enabled = data.enabled;\r\n }\r\n if (typeof data.disabled !== 'undefined') {\r\n this.enabled = !data.disabled;\r\n }\r\n if (this.tag == CondTag.Simple) {\r\n this.operatorId = data.op;\r\n if (data.exprs) {\r\n for (var i = 0; i < data.exprs.length; i++) {\r\n var newExpr = new Expression(this);\r\n newExpr.loadFromData(model, data.exprs[i]);\r\n this.expressions.push(newExpr);\r\n }\r\n }\r\n }\r\n this.linkType = data.linking;\r\n }\r\n };\r\n /**\r\n * Saves condition to JSON representation object.\r\n * @returns The JSON representation object.\r\n */\r\n Condition.prototype.saveToData = function () {\r\n var obj = {};\r\n obj.tag = this.tag;\r\n if (!this.enabled) {\r\n obj.enabled = this.enabled;\r\n }\r\n if (this.tag == CondTag.Simple) {\r\n obj.op = this.operatorId;\r\n obj.exprs = [];\r\n for (var i = 0; i < this.expressions.length; i++) {\r\n obj.exprs.push(this.expressions[i].saveToData());\r\n }\r\n }\r\n if (this.tag == CondTag.Group) {\r\n //if condition group\r\n obj.linking = this.linkType;\r\n }\r\n return obj;\r\n };\r\n Condition.prototype.fireChangedEvent = function (condPart) {\r\n if (condPart === void 0) { condPart = ConditionPart.All; }\r\n this.query.fireChangedEvent({\r\n part: QueryChangePart.Conditions,\r\n action: QueryChangeAction.Modify,\r\n changee: this,\r\n condPart: condPart\r\n });\r\n };\r\n Condition.prototype.getExpressionIndex = function (expr) {\r\n return this.expressions.indexOf(expr, 0);\r\n };\r\n Condition.prototype.expressionChanged = function (expr, oldValue) {\r\n if (expr.getIndex() == 0 && expr.tag == ExprTag.EntityAttribute) {\r\n //this is a base entity attribute, we need to re-pack the whole condition\r\n this.tuneOperatorForAttr(expr.value);\r\n }\r\n };\r\n Condition.prototype.getOperatorId = function () {\r\n return this.operatorId;\r\n };\r\n Condition.prototype.setOperatorId = function (newOperatorId, silent) {\r\n if (silent === void 0) { silent = false; }\r\n var oldOperatorId = this.operatorId;\r\n this.operatorId = newOperatorId;\r\n if (!silent) {\r\n var model = this.getModel();\r\n var operator = model.getOperatorById(newOperatorId);\r\n var attrId = this.expressions[0].value;\r\n var attr = model.getAttributeById(attrId);\r\n this.tuneValueExpressions(attr, operator, attr.id, oldOperatorId);\r\n }\r\n };\r\n Condition.prototype.tuneOperatorForAttr = function (oldAttrId) {\r\n var model = this.getModel();\r\n var attrId = this.expressions[0].value;\r\n var attr = model.getAttributeById(attrId);\r\n if (attr != null) {\r\n var newOperator = this.getModel().getDefaultOperatorForAttr(attr);\r\n var oldOperatorId = this.operatorId;\r\n this.operatorId = newOperator.id;\r\n this.tuneValueExpressions(attr, newOperator, oldAttrId, oldOperatorId);\r\n }\r\n };\r\n Condition.prototype.tuneValueExpressions = function (attr, operator, oldAttrId, oldOperatorId) {\r\n var model = this.getModel();\r\n if (!operator)\r\n return;\r\n var exprCount = this.expressions.length;\r\n var oldAttr = oldAttrId ? model.getAttributeById(oldAttrId) : null;\r\n var oldOperator = null;\r\n if (oldOperatorId) {\r\n oldOperator = model.getOperatorById(oldOperatorId);\r\n }\r\n if (oldOperator && oldOperator.paramCount == operator.paramCount) {\r\n //add necessary expressions\r\n var i = 1;\r\n while (i < operator.paramCount) {\r\n var oldOperand = model.getOperand(attr, oldOperator, i);\r\n var operand = model.getOperand(attr, operator, i);\r\n if (operand.dataType == DataType.Unknown) {\r\n operand.dataType = attr.dataType;\r\n }\r\n var editor = operand.editor && operand.editor.tag !== EditorTag.Unknown\r\n ? operand.editor\r\n : (attr.defaultEditor && attr.defaultEditor.tag !== EditorTag.Unknown\r\n ? attr.defaultEditor\r\n : new EqValueEditor());\r\n if (i >= exprCount) {\r\n var valExpr = this.createValueExpr(operand);\r\n this.expressions.push(valExpr);\r\n }\r\n else {\r\n var oldExpr = this.expressions[i];\r\n //create new value expression according to the corresponding operand\r\n var newExpr = this.createValueExpr(operand);\r\n if (this.areCompitableEditors(oldOperand.editor, editor)) {\r\n newExpr.tryCopyValueFrom(oldExpr);\r\n }\r\n this.expressions[i] = newExpr;\r\n }\r\n i++;\r\n }\r\n if (exprCount > i) {\r\n //remove all redundant expressions\r\n this.expressions.splice(i, exprCount - i);\r\n }\r\n }\r\n else {\r\n this.expressions.splice(1, this.expressions.length - 1);\r\n for (var i = 1; i < operator.paramCount; i++) {\r\n var operand = model.getOperand(attr, operator, i);\r\n if (operand.dataType == DataType.Unknown) {\r\n operand.dataType = attr.dataType;\r\n }\r\n var valExpr = this.createValueExpr(operand);\r\n this.expressions.push(valExpr);\r\n }\r\n }\r\n };\r\n Condition.prototype.areCompitableEditors = function (oldEditor, newEditor) {\r\n if (newEditor.tag == EqEditorTag.CustomList || newEditor.tag == EqEditorTag.List\r\n || newEditor.tag == EqEditorTag.SqlList || newEditor.tag == EditorTag.Unknown) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n Condition.prototype.addExpressionByOperand = function (operand, val) {\r\n if (val === void 0) { val = null; }\r\n var expr = this.createValueExpr(operand, val);\r\n this.expressions.push(expr);\r\n return expr;\r\n };\r\n Condition.prototype.createValueExpr = function (operand, val) {\r\n if (val === void 0) { val = null; }\r\n var valueNotDefined = val === null || typeof val === 'undefined';\r\n var value = val ? val : operand.defValue;\r\n var text = val ? val : operand.defText;\r\n var result = new Expression(this);\r\n if (operand.kind === DataKind.Query) {\r\n result.tag = ExprTag.Query;\r\n result.dataType = operand.dataType;\r\n result.kind = operand.kind;\r\n result.setContent(value, text, true);\r\n }\r\n else if (operand.kind === DataKind.Attribute) {\r\n if (!valueNotDefined) {\r\n var defAttr = this.getModel().getFirstAttributeByFilter(function (attr) {\r\n return attr.useInConditions == true && (!operand.dataType || attr.dataType == operand.dataType);\r\n });\r\n value = defAttr ? defAttr.id : null;\r\n }\r\n result.tag = ExprTag.EntityAttribute;\r\n result.kind = operand.kind;\r\n result.dataType = operand.dataType;\r\n result.setContent(value, text, true);\r\n }\r\n else {\r\n if (valueNotDefined) {\r\n if (operand.defValue && operand.defValue != \"\") {\r\n value = operand.defValue;\r\n }\r\n else {\r\n if (operand.editor && operand.editor.defValue) {\r\n value = operand.editor.defValue;\r\n }\r\n else {\r\n value = '';\r\n }\r\n }\r\n if (operand.editor) {\r\n text = operand.editor.getValueText(value);\r\n }\r\n }\r\n result.tag = ExprTag.Constant;\r\n result.dataType = operand.dataType;\r\n result.kind = operand.kind;\r\n result.setContent(value, text, true);\r\n result._isDefaultValue = valueNotDefined;\r\n }\r\n return result;\r\n };\r\n return Condition;\r\n}());\r\nexport { Condition };\r\n//# sourceMappingURL=condition.js.map","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { ConditionPart, } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { ListExpressionRenderer } from './list_expression_renderer';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nvar AttributeExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(AttributeExpressionRenderer, _super);\r\n function AttributeExpressionRenderer(panel, expression, entitiesMenu, slot) {\r\n var _this = _super.call(this, panel, expression, null, slot) || this;\r\n _this.menu = entitiesMenu;\r\n return _this;\r\n }\r\n AttributeExpressionRenderer.prototype.renderEditor = function () {\r\n //create menu\r\n };\r\n AttributeExpressionRenderer.prototype.getLabelText = function () {\r\n var model = this.panel.getContext().getModel();\r\n var attrId = this.expression.value;\r\n var attrObj = attrId ? model.getAttributeByIdSafe(attrId) : null;\r\n var attrFormat = this.panel.options.attrElementFormat;\r\n return attrObj ? model.getAttributeText(attrObj, attrFormat) : this.getEmptyText();\r\n };\r\n AttributeExpressionRenderer.prototype.setValue = function (value, silent) {\r\n if (silent === void 0) { silent = false; }\r\n silent = silent && value !== this.expression.value;\r\n var result = _super.prototype.setValue.call(this, value, true);\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.EntityAttr | ConditionPart.Operator);\r\n }\r\n return result;\r\n };\r\n AttributeExpressionRenderer.prototype.isEditable = function () {\r\n return !this.isReadOnly()\r\n && ((this.panel.options.editableParts & QPEditablePart.Attribute) === QPEditablePart.Attribute);\r\n };\r\n AttributeExpressionRenderer.prototype.getEmptyText = function () {\r\n return this.panel.options.emptyTextAttribute || i18n.getText('MsgEmptyAttrValue');\r\n };\r\n AttributeExpressionRenderer.prototype.getClassesToAdd = function () {\r\n return this.cssPrefix + \"-condelement \" + this.cssPrefix + \"-attrelement\";\r\n };\r\n AttributeExpressionRenderer.prototype.adjustWidth = function () {\r\n if (browserUtils.isMobileMode()) {\r\n return;\r\n }\r\n var elWidth = this.element.clientWidth;\r\n var parWidth = this.element.parentElement.clientWidth;\r\n if (elWidth > parWidth / 2) {\r\n domel(this.element)\r\n .addClass(this.cssPrefix + \"-attrelement-wide\");\r\n }\r\n };\r\n return AttributeExpressionRenderer;\r\n}(ListExpressionRenderer));\r\nexport { AttributeExpressionRenderer };\r\n//# sourceMappingURL=attribute_expression_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { DataType } from '@easydata/core';\r\nimport { ChartWidget } from './chart_widget';\r\nimport { ChartType } from './chart_type';\r\nvar GoogleChartWidget = /** @class */ (function (_super) {\r\n __extends(GoogleChartWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n * @param provider The provider.\r\n */\r\n function GoogleChartWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.hasChartTypes = [\r\n ChartType.Column,\r\n ChartType.Bar,\r\n ChartType.Histogram,\r\n ChartType.Combo,\r\n ChartType.Area,\r\n ChartType.Line,\r\n ChartType.SteppedLine,\r\n ChartType.Pie,\r\n ChartType.Doughnut\r\n ];\r\n _this.options.legend = {\r\n show: true,\r\n position: 'right'\r\n };\r\n return _this;\r\n }\r\n GoogleChartWidget.prototype.getWidgetType = function () {\r\n return 'chartGoogle';\r\n };\r\n GoogleChartWidget.prototype.canDraw = function () {\r\n return GoogleChartWidget.hasGoogleCharts();\r\n };\r\n GoogleChartWidget.hasGoogleCharts = function () {\r\n return typeof google !== 'undefined' && typeof google.charts !== 'undefined';\r\n };\r\n GoogleChartWidget.prototype.initChart = function () {\r\n if (GoogleChartWidget.hasGoogleCharts() && this.labelColumn >= 0\r\n && this.dataColumns && this.dataColumns.length > 0) {\r\n this.googleDataView =\r\n new google.visualization.DataView(this.convertToGoogleFormat());\r\n this.updateChartColumns();\r\n }\r\n };\r\n GoogleChartWidget.prototype.convertToGoogleType = function (type) {\r\n switch (type) {\r\n case DataType.Date:\r\n return \"date\";\r\n case DataType.DateTime:\r\n return \"datetime\";\r\n case DataType.Time:\r\n return \"timeofday\";\r\n case DataType.Byte:\r\n case DataType.Word:\r\n case DataType.Int32:\r\n case DataType.Int64:\r\n case DataType.Currency:\r\n case DataType.Float:\r\n return \"number\";\r\n default:\r\n return \"string\";\r\n }\r\n };\r\n GoogleChartWidget.prototype.convertToGoogleValue = function (value, type) {\r\n switch (type) {\r\n case DataType.Bool:\r\n return value ? value.toString() : null;\r\n default:\r\n return value;\r\n }\r\n };\r\n GoogleChartWidget.prototype.convertToGoogleFormat = function () {\r\n var googleTable = new google.visualization.DataTable();\r\n var columns = this.dataTable.columns;\r\n for (var i = 0; i < columns.count; i++) {\r\n var column = columns.get(i);\r\n googleTable.addColumn(this.convertToGoogleType(column.type), column.label, column.id);\r\n }\r\n var rows = this.dataTable.getCachedRows();\r\n googleTable.addRows(rows.length);\r\n for (var i = 0; i < rows.length; i++) {\r\n var row = rows[i];\r\n for (var j = 0; j < columns.count; j++) {\r\n googleTable.setCell(i, j, this.convertToGoogleValue(row.getValue(j), columns.get(j).type));\r\n }\r\n }\r\n return googleTable;\r\n };\r\n GoogleChartWidget.prototype.drawCore = function () {\r\n if (this.googleDataView != null) {\r\n this.options.legend = this.options.legend || {};\r\n var chartOptions = {\r\n width: \"100%\",\r\n height: \"100%\",\r\n chartArea: { width: this.getChartAreaWidth }\r\n };\r\n if (this.chartType == ChartType.Doughnut) {\r\n chartOptions.pieHole = 0.4;\r\n }\r\n if (!this.options.legend.show) {\r\n chartOptions.legend = 'none';\r\n }\r\n else {\r\n chartOptions.legend = { position: this.options.legend.position };\r\n }\r\n var chart = this.createChart(this.chartDiv);\r\n chart.draw(this.googleDataView, chartOptions);\r\n }\r\n };\r\n GoogleChartWidget.prototype.getChartAreaWidth = function (chartType) {\r\n if (chartType == ChartType.Pie) {\r\n return \"100%\";\r\n }\r\n else {\r\n return \"50%\";\r\n }\r\n };\r\n GoogleChartWidget.prototype.updateChartColumns = function () {\r\n if (this.googleDataView) {\r\n this.googleDataView.setColumns([].concat(this.labelColumn).concat(this.dataColumns));\r\n }\r\n };\r\n GoogleChartWidget.prototype.createChart = function (slot) {\r\n switch (this.chartType) {\r\n case ChartType.Column:\r\n return new google.visualization.ColumnChart(slot);\r\n case ChartType.Histogram:\r\n return new google.visualization.Histogram(slot);\r\n case ChartType.Bar:\r\n return new google.visualization.BarChart(slot);\r\n case ChartType.Combo:\r\n return new google.visualization.ComboChart(slot);\r\n case ChartType.Area:\r\n return new google.visualization.AreaChart(slot);\r\n case ChartType.Line:\r\n return new google.visualization.LineChart(slot);\r\n case ChartType.SteppedLine:\r\n return new google.visualization.SteppedAreaChart(slot);\r\n case ChartType.Pie:\r\n case ChartType.Doughnut:\r\n return new google.visualization.PieChart(slot);\r\n default:\r\n return new google.visualization.PieChart(slot);\r\n }\r\n };\r\n return GoogleChartWidget;\r\n}(ChartWidget));\r\nexport { GoogleChartWidget };\r\n//# sourceMappingURL=chart_widget_google.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var 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 * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","var HttpRequest = /** @class */ (function () {\r\n function HttpRequest(xhr, descriptor) {\r\n this.xhr = xhr;\r\n this.method = descriptor.method;\r\n this.url = descriptor.url;\r\n this.headers = descriptor.headers;\r\n this.queryParams = descriptor.queryParams;\r\n this.data = descriptor.data;\r\n }\r\n HttpRequest.prototype.setHeader = function (name, value) {\r\n this.headers[name] = value;\r\n };\r\n HttpRequest.prototype.setQueryParam = function (name, value) {\r\n this.queryParams[name] = value;\r\n };\r\n HttpRequest.prototype.getXMLHttpRequest = function () {\r\n return this.xhr;\r\n };\r\n HttpRequest.prototype.getResponseHeaders = function () {\r\n if (this.xhr.readyState == this.xhr.HEADERS_RECEIVED) {\r\n var headers = this.xhr.getAllResponseHeaders();\r\n var arr = headers.trim().split(/[\\r\\n]+/);\r\n // Create a map of header names to values\r\n var headerMap = {};\r\n for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {\r\n var line = arr_1[_i];\r\n var parts = line.split(': ');\r\n var header = parts.shift();\r\n var value = parts.join(': ');\r\n headerMap[header] = value;\r\n }\r\n return headerMap;\r\n }\r\n return {};\r\n };\r\n HttpRequest.prototype.open = function () {\r\n var _this = this;\r\n if (this.xhr.readyState !== this.xhr.UNSENT)\r\n return;\r\n var url = this.url;\r\n if (this.queryParams && Object.keys(this.queryParams).length > 0) {\r\n url += encodeURI('?' + Object.keys(this.queryParams)\r\n .map(function (param) { return param + '=' + _this.queryParams[param]; })\r\n .join('&'));\r\n }\r\n this.xhr.open(this.method, url, true);\r\n this.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n for (var header in this.headers) {\r\n this.xhr.setRequestHeader(header, this.headers[header]);\r\n }\r\n };\r\n HttpRequest.prototype.abort = function () {\r\n this.xhr.abort();\r\n };\r\n return HttpRequest;\r\n}());\r\nexport { HttpRequest };\r\n//# sourceMappingURL=http_request.js.map","import { DataType } from '../types/data_type';\r\nimport { utils } from '../utils/utils';\r\nexport var ColumnAlignment;\r\n(function (ColumnAlignment) {\r\n ColumnAlignment[ColumnAlignment[\"None\"] = 0] = \"None\";\r\n ColumnAlignment[ColumnAlignment[\"Left\"] = 1] = \"Left\";\r\n ColumnAlignment[ColumnAlignment[\"Center\"] = 2] = \"Center\";\r\n ColumnAlignment[ColumnAlignment[\"Right\"] = 3] = \"Right\";\r\n})(ColumnAlignment || (ColumnAlignment = {}));\r\nvar DataColumn = /** @class */ (function () {\r\n function DataColumn(desc) {\r\n if (!desc)\r\n throw Error(\"Options are required\");\r\n if (!desc.id)\r\n throw Error(\"Field Id is required\");\r\n if (!desc.label)\r\n throw Error(\"Label is required\");\r\n this.id = desc.id;\r\n this.type = utils.getIfDefined(desc.type, DataType.String);\r\n this.label = desc.label;\r\n this.originAttrId = desc.originAttrId;\r\n this.isAggr = desc.isAggr || false;\r\n this.displayFormat = desc.dfmt;\r\n this.groupFooterColumnTemplate = desc.gfct;\r\n this.style = desc.style || {};\r\n this.description = desc.description;\r\n this.calculatedWidth = 0;\r\n }\r\n return DataColumn;\r\n}());\r\nexport { DataColumn };\r\nvar DataColumnList = /** @class */ (function () {\r\n function DataColumnList() {\r\n this.items = [];\r\n this.mapper = {};\r\n this._dateColumnIdx = [];\r\n }\r\n Object.defineProperty(DataColumnList.prototype, \"count\", {\r\n get: function () {\r\n return this.items.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DataColumnList.prototype.add = function (colOrDesc) {\r\n var col;\r\n if (colOrDesc instanceof DataColumn) {\r\n col = colOrDesc;\r\n }\r\n else {\r\n col = new DataColumn(colOrDesc);\r\n }\r\n var index = this.items.length;\r\n this.items.push(col);\r\n this.mapper[col.id] = index;\r\n if ([DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0) {\r\n this._dateColumnIdx.push(index);\r\n }\r\n return index;\r\n };\r\n DataColumnList.prototype.updateDateColumnIdx = function () {\r\n this._dateColumnIdx = this.getItems()\r\n .filter(function (col) { return [DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0; })\r\n .map(function (col, index) { return index; });\r\n };\r\n DataColumnList.prototype.put = function (index, col) {\r\n if (index >= 0 && index < this.count) {\r\n this.items[index] = col;\r\n this.updateDateColumnIdx();\r\n }\r\n };\r\n DataColumnList.prototype.move = function (col, newIndex) {\r\n var oldIndex = this.items.indexOf(col);\r\n if (oldIndex >= 0 && oldIndex != newIndex) {\r\n utils.moveArrayItem(this.items, oldIndex, newIndex);\r\n this.updateDateColumnIdx();\r\n }\r\n };\r\n DataColumnList.prototype.get = function (index) {\r\n if (index >= 0 && index < this.count) {\r\n return this.items[index];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DataColumnList.prototype.getIndex = function (id) {\r\n return this.mapper[id];\r\n };\r\n DataColumnList.prototype.getItems = function () {\r\n return this.items;\r\n };\r\n DataColumnList.prototype.getDateColumnIndexes = function () {\r\n return this._dateColumnIdx;\r\n };\r\n DataColumnList.prototype.removeAt = function (index) {\r\n var col = this.get(index);\r\n this.items.splice(index, 1);\r\n var removeDate = this._dateColumnIdx.indexOf(index);\r\n if (removeDate >= 0) {\r\n this._dateColumnIdx.splice(removeDate, 1);\r\n }\r\n delete this.mapper[col.id];\r\n };\r\n DataColumnList.prototype.clear = function () {\r\n this.items = [];\r\n this._dateColumnIdx = [];\r\n this.mapper = {};\r\n };\r\n return DataColumnList;\r\n}());\r\nexport { DataColumnList };\r\n//# sourceMappingURL=data_column.js.map","/**\r\n * Represents a parser for format expressions in operators\r\n */\r\nvar FormatParser = /** @class */ (function () {\r\n function FormatParser(format) {\r\n this.start(format);\r\n }\r\n /**\r\n * Starts parsing of the format string passed in the parameter\r\n * @param format\r\n */\r\n FormatParser.prototype.start = function (format) {\r\n this.formatStr = format;\r\n this.pos = 0;\r\n this.exprNum = 0;\r\n this.tokenText = '';\r\n };\r\n /**\r\n * Skips all spcaes till the beginning of next token\r\n */\r\n FormatParser.prototype.skipSpaces = function () {\r\n while (this.pos < this.formatStr.length && this.formatStr.charAt(this.pos) === ' ')\r\n this.pos++;\r\n };\r\n /**\r\n * Scans the source and gets the next token\r\n */\r\n FormatParser.prototype.next = function () {\r\n this.skipSpaces();\r\n if (this.pos >= this.formatStr.length)\r\n return false;\r\n var npos = 0;\r\n if (this.formatStr.charAt(this.pos) === '{') {\r\n npos = this.formatStr.indexOf('}', this.pos);\r\n if (npos < 0)\r\n return false;\r\n this.tokenText = this.formatStr.substring(this.pos, npos + 1);\r\n if (this.tokenText.indexOf('{expr') === 0) {\r\n this.token = 'expression';\r\n this.exprNum = parseInt(this.tokenText.substring(5, this.tokenText.length));\r\n }\r\n this.pos = npos + 1;\r\n }\r\n else if (this.formatStr.charAt(this.pos) === '[' && this.pos < this.formatStr.length - 1 && this.formatStr.charAt(this.pos + 1) === '[') {\r\n this.pos += 2;\r\n npos = this.formatStr.indexOf(']]', this.pos);\r\n this.token = 'operator';\r\n this.tokenText = this.formatStr.substring(this.pos, npos);\r\n this.pos = npos + 2;\r\n }\r\n else {\r\n this.token = 'text';\r\n var npos1 = this.formatStr.indexOf('{', this.pos);\r\n if (npos1 < 0)\r\n npos1 = this.formatStr.length;\r\n var npos2 = this.formatStr.indexOf('[[', this.pos);\r\n if (npos2 < 0)\r\n npos2 = this.formatStr.length;\r\n npos = Math.min(npos1, npos2);\r\n this.tokenText = this.formatStr.substring(this.pos, npos).trim();\r\n this.pos = npos;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Returns current token\r\n */\r\n FormatParser.prototype.getToken = function () {\r\n return {\r\n type: this.token,\r\n text: this.tokenText,\r\n index: this.exprNum - 1\r\n };\r\n };\r\n /**\r\n * Parses all source string passed in constructor and returns the list of tokens\r\n */\r\n FormatParser.prototype.parse = function () {\r\n var result = [];\r\n while (this.next()) {\r\n result.push(this.getToken());\r\n }\r\n return result;\r\n };\r\n return FormatParser;\r\n}());\r\nexport { FormatParser };\r\n//# sourceMappingURL=format_parser.js.map","import { DataType, utils } from '@easydata/core';\r\n/**\r\n * Represents an aggregate function\r\n */\r\nvar AggrFunction = /** @class */ (function () {\r\n /** The default constructor. */\r\n function AggrFunction() {\r\n this.id = \"\";\r\n this.caption = \"\";\r\n this.sqlExpr = \"\";\r\n this.displayFormat = \"\";\r\n this.appliedTypes = [];\r\n }\r\n /**\r\n * Loads an aggregate function from its JSON representation object\r\n * @param aggrFunction The JSON representation object\r\n */\r\n AggrFunction.prototype.loadFromData = function (aggrFunction) {\r\n if (aggrFunction) {\r\n this.id = aggrFunction.id;\r\n this.caption = aggrFunction.cptn;\r\n this.displayFormat = aggrFunction.fmt;\r\n this.sqlExpr = aggrFunction.expr;\r\n this.appliedTypes = aggrFunction.dtypes || this.appliedTypes;\r\n }\r\n };\r\n AggrFunction.prototype.getAppliedTypesOrDefault = function () {\r\n if (this.appliedTypes.length > 0)\r\n return this.appliedTypes;\r\n if (this.id === 'SUM' || this.id === 'AVG') {\r\n return [DataType.Autoinc, DataType.Byte, DataType.Currency, DataType.Float, DataType.Int32,\r\n DataType.Int64, DataType.Word];\r\n }\r\n else if (this.id === 'MIN' || this.id === 'MAX') {\r\n return [DataType.Autoinc, DataType.BCD, DataType.Byte, DataType.Currency, DataType.Date, DataType.DateTime, DataType.Time,\r\n DataType.Float, DataType.Int32, DataType.Int64, DataType.Word];\r\n }\r\n return utils.getAllDataTypes();\r\n };\r\n return AggrFunction;\r\n}());\r\nexport { AggrFunction };\r\n//# sourceMappingURL=aggr_function.js.map","var Tree = /** @class */ (function () {\r\n function Tree(value) {\r\n if (value === void 0) { value = null; }\r\n this.childs = [];\r\n this.value = null;\r\n this.parent = null;\r\n if (value) {\r\n if (Array.isArray(value)) {\r\n this.value = value[0];\r\n if (value.length > 1) {\r\n this.addChild(new Tree(value.slice(1)));\r\n }\r\n }\r\n else if (value instanceof Tree) {\r\n this.value = value.value;\r\n this.childs = value.childs;\r\n }\r\n else {\r\n this.value = value;\r\n }\r\n }\r\n }\r\n Tree.prototype.contains = function (value) {\r\n if (this.value === value)\r\n return true;\r\n for (var _i = 0, _a = this.childs; _i < _a.length; _i++) {\r\n var child = _a[_i];\r\n if (child.contains(value))\r\n return true;\r\n }\r\n return false;\r\n };\r\n Tree.prototype.findNode = function (value) {\r\n if (this.value === value)\r\n return this;\r\n for (var _i = 0, _a = this.childs; _i < _a.length; _i++) {\r\n var child = _a[_i];\r\n var result = child.findNode(value);\r\n if (result)\r\n return result;\r\n }\r\n return null;\r\n };\r\n Tree.prototype.addChild = function (child) {\r\n child.parent = this;\r\n this.childs.push(child);\r\n };\r\n Tree.prototype.setParents = function () {\r\n for (var _i = 0, _a = this.childs; _i < _a.length; _i++) {\r\n var child = _a[_i];\r\n child.parent = this;\r\n child.setParents();\r\n }\r\n };\r\n return Tree;\r\n}());\r\nexport { Tree };\r\n//# sourceMappingURL=tree.js.map","export var ConditionPart;\r\n(function (ConditionPart) {\r\n ConditionPart[ConditionPart[\"EntityAttr\"] = 2] = \"EntityAttr\";\r\n ConditionPart[ConditionPart[\"Operator\"] = 4] = \"Operator\";\r\n ConditionPart[ConditionPart[\"Value\"] = 8] = \"Value\";\r\n ConditionPart[ConditionPart[\"All\"] = 14] = \"All\";\r\n})(ConditionPart || (ConditionPart = {}));\r\n//# sourceMappingURL=cond_part.js.map","import { utils as dataUtils } from '@easydata/core';\r\nimport { Query } from '../query/query';\r\nvar BrowserQueryStorage = /** @class */ (function () {\r\n function BrowserQueryStorage(context) {\r\n this.context = context;\r\n console.warn('BrowserQueryStorage is used for managing queries');\r\n }\r\n BrowserQueryStorage.prototype.init = function (options) {\r\n var keyPrefix = 'eq';\r\n if (options && options.keyPrefix) {\r\n keyPrefix = options.keyPrefix;\r\n }\r\n this.queryListKey = keyPrefix + '-querylist';\r\n this.queryKeyPrefix = keyPrefix;\r\n };\r\n BrowserQueryStorage.prototype.getQueryList = function (options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n try {\r\n var itemsString = localStorage.getItem(_this.queryListKey);\r\n if (itemsString) {\r\n resolve(JSON.parse(itemsString));\r\n }\r\n resolve([]);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n ;\r\n });\r\n };\r\n BrowserQueryStorage.prototype.newQuery = function (options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var query = new Query(_this.context.getModel());\r\n query.reset();\r\n query.setDefaultName();\r\n if (options) {\r\n if (options.query) {\r\n query.loadFromData(options.query.toJSONData());\r\n }\r\n if (options.queryId) {\r\n query.setId(options.queryId);\r\n }\r\n if (options.name) {\r\n query.setName(options.name);\r\n }\r\n if (options.description) {\r\n query.setDescription(options.description);\r\n }\r\n }\r\n _this._saveQuery(query);\r\n resolve(query.toJSONData());\r\n });\r\n };\r\n BrowserQueryStorage.prototype.loadQuery = function (options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n try {\r\n var queryItem = localStorage.getItem(_this.queryKeyPrefix + '-' + options.queryId);\r\n if (queryItem) {\r\n resolve(JSON.parse(queryItem));\r\n }\r\n throw new Error('Query is not found: ' + options.queryId);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n });\r\n };\r\n BrowserQueryStorage.prototype.saveQuery = function (options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n try {\r\n var modelId = options.modelId || _this.context.getModel().getId();\r\n var query = options.query || _this.context.getQuery();\r\n _this._saveQuery(query);\r\n resolve(null);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n });\r\n };\r\n BrowserQueryStorage.prototype._saveQuery = function (query) {\r\n var queryList = [];\r\n var itemsString = localStorage.getItem(this.queryListKey);\r\n if (itemsString) {\r\n queryList = JSON.parse(itemsString);\r\n }\r\n var item = dataUtils.findItemById(queryList, query.getId());\r\n if (!item) {\r\n item = { id: query.getId(), name: query.getName(), text: query.getDescription() };\r\n queryList.push(item);\r\n }\r\n item.name = query.getName();\r\n item.text = query.getDescription();\r\n localStorage.setItem(this.queryListKey, JSON.stringify(queryList));\r\n localStorage.setItem(this.queryKeyPrefix + '-' + query.getId(), query.toJSON());\r\n };\r\n BrowserQueryStorage.prototype.removeQuery = function (options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n try {\r\n var modelId = options.modelId || _this.context.getModel().getId();\r\n var queryId_1 = options.queryId || _this.context.getQuery().getId();\r\n var queryList = [];\r\n var itemsString = localStorage.getItem(_this.queryListKey);\r\n if (itemsString) {\r\n queryList = JSON.parse(itemsString);\r\n }\r\n queryList = queryList.filter(function (item) { return item.id != queryId_1; });\r\n localStorage.setItem(_this.queryListKey, JSON.stringify(queryList));\r\n localStorage.removeItem(_this.queryKeyPrefix + '-' + queryId_1);\r\n resolve();\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n });\r\n };\r\n return BrowserQueryStorage;\r\n}());\r\nexport { BrowserQueryStorage };\r\n//# sourceMappingURL=query_storage.js.map","var EqModelLoader = /** @class */ (function () {\r\n function EqModelLoader(context) {\r\n this.context = context;\r\n this.modelPromise = null;\r\n }\r\n EqModelLoader.prototype.init = function (options) {\r\n };\r\n EqModelLoader.prototype.getContext = function () {\r\n return this.context;\r\n };\r\n EqModelLoader.prototype.createModelLoadingPromise = function () {\r\n var _this = this;\r\n this.modelPromise = new Promise(function (resolve, reject) {\r\n _this.modelLoadingResolveFunc = resolve;\r\n _this.modelLoadingRejectFunc = reject;\r\n });\r\n };\r\n /**\r\n * Returns the `Promise` of the model loading process\r\n */\r\n EqModelLoader.prototype.getModelPromise = function () {\r\n return this.modelPromise\r\n || Promise.reject(new Error(\"Model has been never loaded.\"));\r\n };\r\n EqModelLoader.prototype.startModelLoading = function (options) {\r\n this.createModelLoadingPromise();\r\n this.sendLoadModelRequest(options);\r\n return this.modelPromise;\r\n };\r\n return EqModelLoader;\r\n}());\r\nexport { EqModelLoader };\r\n//# sourceMappingURL=model_loader.js.map","var EqAggregatesContainer = /** @class */ (function () {\r\n function EqAggregatesContainer(context) {\r\n this.context = context;\r\n this.levels = {};\r\n }\r\n EqAggregatesContainer.prototype.getAggregateData = function (level, groupKey) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var processFunc = function (data) {\r\n // map values\r\n var keyStr = _this.groupKeyToStr(groupKey);\r\n var value = data.get(keyStr);\r\n if (value) {\r\n resolve(value);\r\n }\r\n else {\r\n reject(\"Can't find data for \" + keyStr);\r\n }\r\n };\r\n var desc = _this.getLevelDesc(level, false);\r\n if (desc && desc.data) {\r\n processFunc(desc.data);\r\n }\r\n else {\r\n desc.receivedCallbacks.push(processFunc);\r\n }\r\n });\r\n };\r\n EqAggregatesContainer.prototype.setAggregateData = function (level, data) {\r\n var desc = this.getLevelDesc(level, true);\r\n desc.data = data;\r\n if (desc.receivedCallbacks) {\r\n for (var _i = 0, _a = desc.receivedCallbacks; _i < _a.length; _i++) {\r\n var callback = _a[_i];\r\n callback(desc.data);\r\n }\r\n }\r\n desc.receivedCallbacks = [];\r\n };\r\n EqAggregatesContainer.prototype.updateAggregateData = function (level, groupKey, values) {\r\n var desc = this.getLevelDesc(level, true);\r\n var key = this.groupKeyToStr(groupKey);\r\n desc.data.set(key, values);\r\n };\r\n EqAggregatesContainer.prototype.groupKeyToStr = function (groupKey) {\r\n return JSON.stringify(groupKey);\r\n };\r\n EqAggregatesContainer.prototype.getLevelDesc = function (level, createIfNotExists) {\r\n var desc = this.levels[level];\r\n if (!desc && createIfNotExists) {\r\n desc = {\r\n receivedCallbacks: [],\r\n data: new Map()\r\n };\r\n this.levels[level] = desc;\r\n }\r\n return desc;\r\n };\r\n EqAggregatesContainer.prototype.clear = function () {\r\n this.levels = [];\r\n };\r\n return EqAggregatesContainer;\r\n}());\r\nexport { EqAggregatesContainer };\r\nvar DefaultAggregatesCalculator = /** @class */ (function () {\r\n function DefaultAggregatesCalculator(context) {\r\n this.context = context;\r\n this.aggrs = null;\r\n }\r\n DefaultAggregatesCalculator.prototype.getAggrContainer = function () {\r\n return this.aggrs;\r\n };\r\n DefaultAggregatesCalculator.prototype.calculate = function (options) {\r\n console.warn(\"Grand totals and sub totals aggregation calculation can be used in Enterprise version only\");\r\n options = options || {};\r\n options.maxLevel = options.maxLevel >= 0\r\n ? options.maxLevel : 0;\r\n this.aggrs = new EqAggregatesContainer(this.context);\r\n var query = this.context.createQuery();\r\n query.loadFromData(this.context.getQuery().toJSONData());\r\n var settings = this.context.getQuery().getAggregationSettings();\r\n var aggrColId = settings.getAggregates().map(function (a) { return a.colId; });\r\n var columns = query.getColumns()\r\n .filter(function (col) { return aggrColId.indexOf(col.id) < 0; });\r\n for (var i = 0; i < columns.length; i++) {\r\n columns[i].enabled = false;\r\n }\r\n if (settings.hasGrandTotals()) {\r\n this.aggrs.setAggregateData(0, new Map());\r\n if (options.resultObtained)\r\n options.resultObtained({}, 0);\r\n }\r\n var groups = settings.getGroups();\r\n for (var level = 1; level <= groups.length && level <= options.maxLevel; level++) {\r\n this.aggrs.setAggregateData(level, new Map());\r\n if (options.resultObtained)\r\n options.resultObtained({}, level);\r\n }\r\n return Promise.resolve();\r\n };\r\n DefaultAggregatesCalculator.prototype.needRecalculation = function () {\r\n return true;\r\n };\r\n DefaultAggregatesCalculator.prototype.reset = function () {\r\n };\r\n return DefaultAggregatesCalculator;\r\n}());\r\nexport { DefaultAggregatesCalculator };\r\n//# sourceMappingURL=eq_aggr_container.js.map","import { EasyDataTable } from '@easydata/core';\r\nvar EasyQueryDataLoader = /** @class */ (function () {\r\n function EasyQueryDataLoader(context) {\r\n this.context = context;\r\n }\r\n EasyQueryDataLoader.prototype.loadChunk = function (chunk) {\r\n var _this = this;\r\n // We have to refactor page logic in view to make it simplier to integrate \r\n // different grids\r\n this.dataLoadPromise = new Promise(function (resolve, reject) {\r\n var fetchOptions = {\r\n chunk: chunk,\r\n success: function (result) {\r\n var dataTable = new EasyDataTable({\r\n loader: _this.context.dataLoader,\r\n chunkSize: _this.context.resultTable.chunkSize\r\n });\r\n var resultSet = result.resultSet;\r\n for (var _i = 0, _a = resultSet.cols; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n dataTable.columns.add(col);\r\n }\r\n dataTable.setTotal(result.meta.totalRecords);\r\n for (var _b = 0, _c = resultSet.rows; _b < _c.length; _b++) {\r\n var row = _c[_b];\r\n dataTable.addRow(row);\r\n }\r\n var totalRecords = 0;\r\n if (result.meta && result.meta.totalRecords) {\r\n totalRecords = result.meta.totalRecords;\r\n }\r\n resolve({\r\n table: dataTable,\r\n total: totalRecords,\r\n hasNext: !chunk.needTotal || chunk.offset + chunk.limit < totalRecords\r\n });\r\n },\r\n error: function (error) { return reject(error); }\r\n };\r\n if (_this.context.debugMode) {\r\n fetchOptions.debug = \"Data Chunk. Offset: \" + chunk.offset;\r\n }\r\n _this.context.fetchDataChunk(fetchOptions);\r\n });\r\n return this.dataLoadPromise;\r\n };\r\n return EasyQueryDataLoader;\r\n}());\r\nexport { EasyQueryDataLoader };\r\n//# sourceMappingURL=eq_data_loader.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { Widget, WidgetGroup, ExprTag, QueryChangePart, QueryChangeAction } from '@easyquery/core';\r\nimport { eqDragManager } from '@easydata/ui';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n/**\r\n * The entities panel wiget, implemented without JQuery.\r\n */\r\nvar EntitiesPanel = /** @class */ (function (_super) {\r\n __extends(EntitiesPanel, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function EntitiesPanel(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.queryChangedCallbackId = null;\r\n _this.group = WidgetGroup.Model | WidgetGroup.Query;\r\n _this.panel = slot;\r\n return _this;\r\n }\r\n Object.defineProperty(EntitiesPanel.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-ep';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EntitiesPanel.prototype.getWidgetType = function () {\r\n return 'entitiesPanel';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n EntitiesPanel.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n this.renderProgressBlock();\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n EntitiesPanel.prototype.refreshCore = function () {\r\n this.render();\r\n if (this.options.syncWithColumns) {\r\n this.refreshCheckedStateByColumns();\r\n }\r\n };\r\n EntitiesPanel.prototype.onProcessStartCore = function () {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (!this.progressBlock.parentNode)\r\n this.panel.appendChild(this.progressBlock);\r\n }\r\n };\r\n EntitiesPanel.prototype.onProcessEndCore = function () {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (this.progressBlock.parentNode)\r\n this.panel.removeChild(this.progressBlock);\r\n }\r\n };\r\n EntitiesPanel.prototype.destroyCore = function () {\r\n this.slot.innerHTML = '';\r\n };\r\n EntitiesPanel.prototype.setOptions = function (options) {\r\n var _this = this;\r\n this.options = {\r\n showToolbar: true,\r\n syncWithColumns: false,\r\n showSelectAllButton: false,\r\n showClearSelectionButton: true,\r\n showAddColumnButton: true,\r\n showAddConditionButton: true,\r\n showCheckboxes: true,\r\n showTooltips: true,\r\n draggableAttributes: true,\r\n showAttributes: { useInConditions: true, useInResult: true, useInSorting: false },\r\n showFilterBox: false,\r\n filterBoxMode: 0,\r\n showIndicatorOnLoad: true,\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n autoClearSelection: true,\r\n entityRenderedCallback: null,\r\n attributeRenderedCallback: null,\r\n columnTitleFormat: '{attr}'\r\n };\r\n if (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n if (this.queryChangedCallbackId) {\r\n var query = this.context.getQuery();\r\n query.removeChangedCallback(this.queryChangedCallbackId);\r\n }\r\n if (this.options.syncWithColumns) {\r\n var query = this.context.getQuery();\r\n this.queryChangedCallbackId = query.addChangedCallback(function (ev) {\r\n var edata = ev.data;\r\n if (!edata || (edata.part != QueryChangePart.Columns && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n _this.refreshCheckedStateByColumns();\r\n });\r\n }\r\n };\r\n EntitiesPanel.prototype.render = function () {\r\n var model = this.context.getModel();\r\n ;\r\n this.clear();\r\n this.panel.classList.add(this.cssPrefix + \"-panel\");\r\n this.panel.classList.add(browserUtils.getMobileCssClass());\r\n this.rootEntityBlock = document.createElement('div');\r\n if (model != null && !model.isEmpty()) {\r\n var entTree = model.getEntitiesTree({\r\n addUIC: this.options.showAttributes.useInConditions,\r\n addUIR: this.options.showAttributes.useInResult,\r\n addUIS: this.options.showAttributes.useInSorting,\r\n attrPlacement: this.options.attrPlacement,\r\n sortEntities: this.options.sortEntities,\r\n includeRootData: true\r\n });\r\n this.entityTreeBlock = this.renderEntity(entTree, this.rootEntityBlock, 0);\r\n this.panel.appendChild(this.entityTreeBlock);\r\n }\r\n if (this.options.showFilterBox) {\r\n this.createFilterBox();\r\n }\r\n else {\r\n this.rootEntityBlock.style.top = '0';\r\n }\r\n if (this.options.showToolbar && !this.options.syncWithColumns) {\r\n this.createToolPanel();\r\n }\r\n else {\r\n this.rootEntityBlock.style.bottom = '0';\r\n }\r\n };\r\n EntitiesPanel.prototype.renderEntity = function (entity, block, offset) {\r\n var _this = this;\r\n var entityBlock;\r\n var entityNode = document.createElement('div');\r\n entityNode.classList.add(this.cssPrefix + \"-entity-node\");\r\n entityNode.classList.add(browserUtils.getMobileCssClass());\r\n var entityChildren = document.createElement('div');\r\n entityChildren.classList.add(this.cssPrefix + \"-entity-children\");\r\n entityChildren.classList.add(browserUtils.getMobileCssClass());\r\n var nodeLabel = document.createElement('label');\r\n nodeLabel.classList.add(this.cssPrefix + \"-entity-node-label\");\r\n var nodeInput = document.createElement('input');\r\n nodeInput.type = 'checkbox';\r\n nodeInput.title = entity.text;\r\n var nodeToggleButton = document.createElement('a');\r\n nodeToggleButton.href = 'javascript:void(0)';\r\n nodeToggleButton.title = i18n.getText(\"EntityToggle\") + \" \" + entity.text;\r\n nodeToggleButton.classList.add(this.cssPrefix + \"-entity-node-button\");\r\n var attrNode, attrLabel, attrInput;\r\n var currentOffset = offset;\r\n var isAttributeInTree = function (attrId, entityBlock) {\r\n var res = entityBlock.querySelectorAll(\".\" + _this.cssPrefix + \"-entity-attr[data-id=\\\"\" + attrId + \"\\\"]\");\r\n return res.length > 0;\r\n };\r\n if (block) {\r\n entityBlock = block;\r\n entityBlock.innerHTML = '';\r\n }\r\n else {\r\n entityBlock = document.createElement('div');\r\n }\r\n entityBlock.classList.add(this.cssPrefix + \"-entity\");\r\n entityBlock.classList.add(browserUtils.getMobileCssClass());\r\n if (entity.id && entity.id != \"\") {\r\n nodeLabel.innerText = entity.text;\r\n entityNode.appendChild(nodeLabel); //caption\r\n if (this.options.showCheckboxes) {\r\n nodeLabel.insertBefore(nodeInput, nodeLabel.firstChild);\r\n }\r\n entityNode.insertBefore(nodeToggleButton, entityNode.firstChild);\r\n if (this.options.showTooltips && entity.description) {\r\n nodeLabel.setAttribute('title', entity.description);\r\n }\r\n for (var i = 0; i < currentOffset; i++) {\r\n var divElem = document.createElement('div');\r\n divElem.classList.add(this.cssPrefix + \"-entity-offset\");\r\n entityNode.insertBefore(divElem, entityNode.firstChild);\r\n }\r\n entityBlock.appendChild(entityNode);\r\n entityChildren.hidden = true;\r\n currentOffset++;\r\n }\r\n var itemsLength = entity.items ? entity.items.length : 0;\r\n var _loop_1 = function (i) {\r\n var item = entity.items[i];\r\n if (item.isEntity) {\r\n entityChildren.appendChild(this_1.renderEntity(item, null, currentOffset));\r\n }\r\n else {\r\n if (!item.lookupAttr || !(isAttributeInTree(item.lookupAttr, entityChildren))) {\r\n attrLabel = document.createElement('label');\r\n attrLabel.innerText = item.text;\r\n attrLabel.classList.add(this_1.cssPrefix + \"-entity-attr-label\");\r\n if (this_1.options.showCheckboxes) {\r\n attrInput = document.createElement('input');\r\n attrInput.type = 'checkbox';\r\n attrInput.title = item.text;\r\n attrLabel.insertBefore(attrInput, attrLabel.firstChild);\r\n if (this_1.options.syncWithColumns) {\r\n attrInput.addEventListener('change', function (ev) {\r\n var model = _this.context.getModel();\r\n var query = _this.context.getQuery();\r\n var checkbox = ev.currentTarget;\r\n var attrId = checkbox.parentElement.parentElement.getAttribute('data-id');\r\n if (model.checkAttrProperty(attrId, \"useInResult\")) {\r\n if (checkbox.checked) {\r\n var attr = model.getAttributeById(attrId);\r\n var caption = model.getAttributeText(attr, _this.options.columnTitleFormat);\r\n var column = query.addColumn({\r\n attribute: attr,\r\n caption: caption\r\n });\r\n query.fireColumnsChangedEvent(QueryChangeAction.Add, column);\r\n }\r\n else {\r\n var columns = query.getColumns()\r\n .filter(function (col) { return col.expr.tag === ExprTag.EntityAttribute\r\n && col.expr.value === attrId; });\r\n if (columns.length > 0) {\r\n query.removeColumn(columns[0], null);\r\n query.fireColumnsChangedEvent(QueryChangeAction.Delete, columns[0]);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (this_1.options.showTooltips && item.description) {\r\n attrLabel.setAttribute('title', item.description);\r\n }\r\n for (var j = 0; j < currentOffset + 1; j++) {\r\n var divElem = document.createElement('div');\r\n divElem.classList.add(this_1.cssPrefix + \"-entity-offset\");\r\n attrLabel.insertBefore(divElem, attrLabel.firstChild);\r\n }\r\n attrNode = document.createElement('div');\r\n attrNode.classList.add(this_1.cssPrefix + \"-entity-attr\");\r\n if (entityNode.innerHTML.length == 0) {\r\n attrNode.classList.add(this_1.cssPrefix + \"-entity-attr-root\");\r\n }\r\n attrNode.innerHTML = \"\";\r\n attrNode.appendChild(attrLabel);\r\n attrNode.setAttribute('data-id', item.id);\r\n if (this_1.options.draggableAttributes) {\r\n eqDragManager.registerDraggableItem({\r\n element: attrNode,\r\n scope: \"entityAttr\",\r\n data: { attrId: item.id },\r\n renderer: function (dragImage) {\r\n dragImage.innerHTML = '';\r\n var attrLabel = document.createElement('span');\r\n attrLabel.innerText = item.text;\r\n dragImage.appendChild(attrLabel);\r\n }\r\n });\r\n }\r\n if (this_1.options.attributeRenderedCallback) {\r\n this_1.options.attributeRenderedCallback(attrNode);\r\n }\r\n entityChildren.appendChild(attrNode);\r\n }\r\n }\r\n };\r\n var this_1 = this;\r\n for (var i = 0; i < itemsLength; i++) {\r\n _loop_1(i);\r\n }\r\n if (entityChildren.innerHTML.length) {\r\n entityBlock.appendChild(entityChildren);\r\n nodeToggleButton.addEventListener('click', function (event) {\r\n entityChildren.hidden = !entityChildren.hidden;\r\n var element = event.target;\r\n var className = _this.cssPrefix + \"-entity-node-button-open\";\r\n if (element.classList.contains(className)) {\r\n element.classList.remove(className);\r\n }\r\n else {\r\n element.classList.add(className);\r\n }\r\n event.preventDefault();\r\n });\r\n }\r\n if (entityChildren) {\r\n var checkboxes = entityChildren.querySelectorAll(\".\" + this.cssPrefix + \"-entity-attr > label > input\");\r\n for (var i = 0; i < checkboxes.length; i++) {\r\n var checkbox = checkboxes[i];\r\n checkbox.addEventListener('click', function (event) {\r\n var element = event.target;\r\n if (element.checked && !nodeInput.checked) {\r\n nodeInput.checked = true;\r\n }\r\n else if (entityChildren.querySelectorAll('input:checked').length === 0) {\r\n nodeInput.checked = false;\r\n }\r\n event.stopPropagation();\r\n });\r\n }\r\n }\r\n nodeInput.addEventListener('click', function (event) {\r\n var element = event.target;\r\n var entities = entityChildren.querySelectorAll('label input');\r\n for (var i = 0; i < entities.length; i++) {\r\n var entity_1 = entities[i];\r\n entity_1.checked = element.checked;\r\n }\r\n if (_this.options.syncWithColumns) {\r\n var query = _this.context.getQuery();\r\n var model = _this.context.getModel();\r\n var attrList_2 = [];\r\n var attrElems = Array.from(entityChildren.querySelectorAll(\".\" + _this.cssPrefix + \"-entity-attr\"));\r\n for (var _i = 0, attrElems_1 = attrElems; _i < attrElems_1.length; _i++) {\r\n var elem = attrElems_1[_i];\r\n var attrId = elem.getAttribute('data-id');\r\n if (model.checkAttrProperty(attrId, 'useInResult')) {\r\n attrList_2.push(attrId);\r\n }\r\n }\r\n if (element.checked) {\r\n for (var _a = 0, attrList_1 = attrList_2; _a < attrList_1.length; _a++) {\r\n var attrId = attrList_1[_a];\r\n query.addColumn({ attributeId: attrId });\r\n }\r\n }\r\n else {\r\n var columns = query.getColumns()\r\n .filter(function (col) { return col.expr.tag === ExprTag.EntityAttribute\r\n && attrList_2.indexOf(col.expr.value) >= 0; });\r\n query.removeColumns(columns, null);\r\n }\r\n query.fireColumnsChangedEvent();\r\n }\r\n event.stopPropagation();\r\n });\r\n if (block != this.rootEntityBlock && this.options.entityRenderedCallback) {\r\n this.options.entityRenderedCallback(entityBlock);\r\n }\r\n return entityBlock;\r\n };\r\n EntitiesPanel.prototype.createFilterBox = function () {\r\n var _this = this;\r\n this.filterBoxBlock = document.createElement('div');\r\n this.filterBoxBlock.classList.add(this.cssPrefix + \"-filter-box\");\r\n this.filterBoxBlock.classList.add(browserUtils.getMobileCssClass());\r\n this.filterBoxInput = document.createElement('input');\r\n this.filterBoxInput.classList.add(this.cssPrefix + \"-filter-box-input\");\r\n this.filterBoxInput.addEventListener('input', function (e) {\r\n var attrs = _this.panel.querySelectorAll(\".\" + _this.cssPrefix + \"-entity-attr\");\r\n for (var i = 0; i < attrs.length; i++) {\r\n var attr = attrs[i];\r\n attr.hidden = !_this.checkFilterAttribute(attr);\r\n }\r\n var entities = _this.panel.querySelectorAll(\":scope > .\" + _this.cssPrefix + \"-entity\");\r\n for (var i = 0; i < entities.length; i++) {\r\n var entity = entities[i];\r\n var attrs_1 = entity.querySelectorAll(\".\" + _this.cssPrefix + \"-entity-attr\");\r\n var displayAttrCount = 0;\r\n for (var i_1 = 0; i_1 < attrs_1.length; i_1++) {\r\n if (attrs_1[i_1].style.display !== 'None') {\r\n displayAttrCount++;\r\n }\r\n }\r\n entity.hidden = displayAttrCount === 0;\r\n }\r\n if (_this.filterBoxInput.value === '')\r\n _this.collapseAll();\r\n else\r\n _this.expandAll();\r\n });\r\n this.filterBoxBlock.appendChild(this.filterBoxInput);\r\n this.panel.insertBefore(this.filterBoxBlock, this.panel.firstChild);\r\n };\r\n EntitiesPanel.prototype.createToolPanel = function () {\r\n var _this = this;\r\n var defClass = this.cssPrefix + \"-tool-panel\";\r\n var toolPanelBlock = document.createElement('div');\r\n toolPanelBlock.classList.add(defClass);\r\n toolPanelBlock.classList.add(browserUtils.getMobileCssClass());\r\n var toolSelectAll = document.createElement('div');\r\n toolSelectAll.classList.add(defClass + \"-select-all\");\r\n toolSelectAll.title = 'Select all';\r\n var toolDeselectAll = document.createElement('div');\r\n toolDeselectAll.classList.add(defClass + \"-deselect-all\");\r\n toolDeselectAll.title = 'Clear selection';\r\n var toolAddColumns = document.createElement('div');\r\n toolAddColumns.classList.add(defClass + \"-add-columns\");\r\n toolAddColumns.title = 'Add column';\r\n var toolAddCond = document.createElement('div');\r\n toolAddCond.classList.add(defClass + \"-add-cond\");\r\n toolAddCond.title = 'Add condition';\r\n var toolLeftBlock = document.createElement('div');\r\n toolLeftBlock.classList.add(defClass + \"-left-side\");\r\n var toolRightBlock = document.createElement('div');\r\n toolRightBlock.classList.add(defClass + \"-right-side\");\r\n var model = this.context.getModel();\r\n if (this.options.showSelectAllButton) {\r\n toolSelectAll.title = i18n.getText(\"ButtonSelectAll\");\r\n toolLeftBlock.appendChild(toolSelectAll);\r\n toolSelectAll.addEventListener('click', function () {\r\n _this.selectAll();\r\n });\r\n }\r\n if (this.options.showClearSelectionButton) {\r\n toolDeselectAll.title = i18n.getText(\"ButtonDeselectAll\");\r\n toolLeftBlock.appendChild(toolDeselectAll);\r\n toolDeselectAll.addEventListener('click', function () {\r\n _this.deselectAll();\r\n });\r\n }\r\n if (this.options.showAddColumnButton) {\r\n toolAddColumns.title = i18n.getText(\"ButtonAddColumns\");\r\n toolRightBlock.appendChild(toolAddColumns);\r\n toolAddColumns.addEventListener('click', function () {\r\n var attrElements = _this.panel.querySelectorAll(\".\" + _this.cssPrefix + \"-entity-attr\");\r\n var attrList = [];\r\n var attrId;\r\n var query = _this.context.getQuery();\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"start\"\r\n });\r\n for (var i = 0; i < attrElements.length; i++) {\r\n var attrElement = attrElements[i];\r\n var input = attrElement.getElementsByTagName('input')[0];\r\n if (input.checked) {\r\n attrId = attrElement.getAttribute('data-id');\r\n if (model.checkAttrProperty(attrId, \"useInResult\")) {\r\n attrList.push(attrId);\r\n }\r\n }\r\n }\r\n for (var _i = 0, attrList_3 = attrList; _i < attrList_3.length; _i++) {\r\n var attrId_1 = attrList_3[_i];\r\n var attr = model.getAttributeById(attrId_1);\r\n var caption = model.getAttributeText(attr, _this.options.columnTitleFormat);\r\n query.addColumn({\r\n attribute: attr,\r\n caption: caption\r\n });\r\n }\r\n query.fireChangedEvent();\r\n if (_this.options.autoClearSelection) {\r\n _this.deselectAll();\r\n }\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"finish\"\r\n });\r\n });\r\n }\r\n if (this.options.showAddConditionButton) {\r\n toolAddCond.title = i18n.getText(\"ButtonAddConditions\");\r\n toolRightBlock.appendChild(toolAddCond);\r\n toolAddCond.addEventListener('click', function () {\r\n var attrElements = _this.panel.querySelectorAll(\".\" + _this.cssPrefix + \"-entity-attr\");\r\n var attrList = [];\r\n var attrId;\r\n var query = _this.context.getQuery();\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"start\"\r\n });\r\n for (var i = 0; i < attrElements.length; i++) {\r\n var attrElement = attrElements[i];\r\n var input = attrElement.getElementsByTagName('input')[0];\r\n if (input.checked) {\r\n attrId = attrElement.getAttribute('data-id');\r\n if (model.checkAttrProperty(attrId, \"useInConditions\")) {\r\n attrList.push(attrId);\r\n }\r\n }\r\n }\r\n for (var _i = 0, attrList_4 = attrList; _i < attrList_4.length; _i++) {\r\n var attrId_2 = attrList_4[_i];\r\n query.addSimpleCondition({\r\n attributeId: attrId_2\r\n });\r\n }\r\n query.fireChangedEvent();\r\n if (_this.options.autoClearSelection) {\r\n _this.deselectAll();\r\n }\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"finish\"\r\n });\r\n });\r\n }\r\n toolPanelBlock.appendChild(toolLeftBlock);\r\n toolPanelBlock.appendChild(toolRightBlock);\r\n this.panel.appendChild(toolPanelBlock);\r\n };\r\n EntitiesPanel.prototype.checkFilterAttribute = function (attr) {\r\n var inputElem = attr.querySelector('label input');\r\n if (inputElem.checked) {\r\n return true;\r\n }\r\n var labelElem = attr.querySelector('label');\r\n var attrCaption = labelElem.textContent;\r\n if (this.checkFilterText(attrCaption)) {\r\n return true;\r\n }\r\n var entityNode = attr.parentElement.parentElement.querySelector(\".\" + this.cssPrefix + \"-entity-node\");\r\n var entityCaption = entityNode.querySelector('label').textContent;\r\n if (this.checkFilterText(entityCaption)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n EntitiesPanel.prototype.checkFilterText = function (value) {\r\n var filterText = this.filterBoxInput.value;\r\n if (filterText == \"\")\r\n return true;\r\n if (this.options.filterBoxMode == 0 && value.toLowerCase().indexOf(filterText.toLowerCase()) >= 0)\r\n return true;\r\n if (this.options.filterBoxMode == 1 && value.toLowerCase().indexOf(filterText.toLowerCase()) == 0)\r\n return true;\r\n return false;\r\n };\r\n EntitiesPanel.prototype.refreshCheckedStateByColumns = function () {\r\n this.deselectAll();\r\n var query = this.context.getQuery();\r\n var exprColumns = query.getColumns()\r\n .filter(function (col) { return col.expr.tag === ExprTag.EntityAttribute; });\r\n for (var _i = 0, exprColumns_1 = exprColumns; _i < exprColumns_1.length; _i++) {\r\n var column = exprColumns_1[_i];\r\n var attrNode = this.rootEntityBlock\r\n .querySelector(\".\" + this.cssPrefix + \"-entity-attr[data-id=\\\"\" + column.expr.value + \"\\\"]\");\r\n var checkbox = attrNode.querySelector(\"label > input\");\r\n checkbox.checked = true;\r\n var entChildren = attrNode.parentElement;\r\n while (entChildren\r\n && entChildren.classList\r\n .contains(this.cssPrefix + \"-entity-children\")) {\r\n entChildren.hidden = false;\r\n var entElem = entChildren.parentElement;\r\n if (entElem && entChildren !== entElem.firstElementChild) {\r\n checkbox = entElem.firstElementChild\r\n .querySelector(\"label > input\");\r\n checkbox.checked = true;\r\n entChildren = entElem.parentElement;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n EntitiesPanel.prototype.expandAll = function () {\r\n for (var i = 0; i < this.rootEntityBlock.childNodes.length; i++) {\r\n var child = this.rootEntityBlock.childNodes[0];\r\n var childs = child.querySelectorAll(\".\" + this.cssPrefix + \"-entity-children\");\r\n for (var j = 0; j < childs.length; j++) {\r\n var elem = childs[j];\r\n elem.hidden = false;\r\n }\r\n }\r\n var nodeButtons = this.rootEntityBlock.querySelectorAll(\".\" + this.cssPrefix + \"-entity-node-button\");\r\n for (var i = 0; i < nodeButtons.length; i++) {\r\n var elem = nodeButtons[i];\r\n elem.classList.add(this.cssPrefix + \"-entity-node-button-open\");\r\n }\r\n };\r\n EntitiesPanel.prototype.collapseAll = function () {\r\n for (var i = 0; i < this.rootEntityBlock.childNodes.length; i++) {\r\n var child = this.rootEntityBlock.childNodes[0];\r\n var childs = child.querySelectorAll(\".\" + this.cssPrefix + \"-entity-children\");\r\n for (var j = 0; j < childs.length; j++) {\r\n var elem = childs[j];\r\n elem.hidden = true;\r\n }\r\n }\r\n var nodeButtons = this.rootEntityBlock.querySelectorAll(\".\" + this.cssPrefix + \"-entity-node-button\");\r\n for (var i = 0; i < nodeButtons.length; i++) {\r\n var elem = nodeButtons[i];\r\n elem.classList.remove(this.cssPrefix + \"-entity-node-button-open\");\r\n }\r\n };\r\n EntitiesPanel.prototype.selectAll = function () {\r\n var inputs = this.entityTreeBlock.querySelectorAll('input');\r\n for (var i = 0; i < inputs.length; i++) {\r\n var input = inputs[i];\r\n input.checked = true;\r\n }\r\n };\r\n EntitiesPanel.prototype.deselectAll = function () {\r\n var inputs = this.entityTreeBlock.querySelectorAll('input');\r\n for (var i = 0; i < inputs.length; i++) {\r\n var input = inputs[i];\r\n input.checked = false;\r\n }\r\n };\r\n EntitiesPanel.prototype.renderProgressBlock = function () {\r\n this.progressBlock = document.createElement('div');\r\n this.progressBlock.classList.add(eqCssPrefix + \"-progress-win8\");\r\n this.progressBlock.classList.add(browserUtils.getMobileCssClass());\r\n this.progressBlock.innerHTML = '
';\r\n };\r\n EntitiesPanel.prototype.clear = function () {\r\n this.panel.innerHTML = \"\";\r\n };\r\n return EntitiesPanel;\r\n}(Widget));\r\nexport { EntitiesPanel };\r\n//# sourceMappingURL=entities_panel.js.map","export var browserUtils;\r\n(function (browserUtils) {\r\n var _isFirefox = null;\r\n var _isIE = null;\r\n function IsIE() {\r\n // return eval('/*@cc_on!@*/false || !!document.documentMode');\r\n if (_isIE === null) {\r\n var ua = navigator.userAgent;\r\n /* MSIE used to detect old browsers and Trident used to newer ones*/\r\n _isIE = ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\r\n }\r\n return _isIE;\r\n }\r\n browserUtils.IsIE = IsIE;\r\n function IsEdge() {\r\n return !IsIE() && eval('!!window.StyleMedia');\r\n }\r\n browserUtils.IsEdge = IsEdge;\r\n function IsFirefox() {\r\n if (_isFirefox === null) {\r\n var ua = navigator.userAgent;\r\n _isFirefox = ua.toLowerCase().indexOf('firefox') > -1;\r\n }\r\n return _isFirefox;\r\n }\r\n browserUtils.IsFirefox = IsFirefox;\r\n var _detectedIsMobileMode = false;\r\n var _isMobileMode = undefined;\r\n var detectIsMobileMode = function () {\r\n var oldValue = isMobileMode();\r\n _detectedIsMobileMode = window.matchMedia('only screen and (max-width: 840px)').matches\r\n || window.matchMedia('only screen and (max-height: 420px)').matches;\r\n var newValue = isMobileMode();\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n };\r\n detectIsMobileMode();\r\n window.addEventListener('resize', function () { return detectIsMobileMode(); });\r\n function isMobileMode() {\r\n if (_isMobileMode !== undefined) {\r\n return _isMobileMode;\r\n }\r\n else {\r\n return _detectedIsMobileMode;\r\n }\r\n }\r\n browserUtils.isMobileMode = isMobileMode;\r\n function setIsMobileMode(value) {\r\n var oldValue = isMobileMode();\r\n _isMobileMode = value;\r\n var newValue = isMobileMode();\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n }\r\n browserUtils.setIsMobileMode = setIsMobileMode;\r\n var mobileModeChangeHandler;\r\n function onMobileModeChanged(callback) {\r\n mobileModeChangeHandler = callback;\r\n }\r\n browserUtils.onMobileModeChanged = onMobileModeChanged;\r\n function getMobileCssClass() {\r\n return isMobileMode() ? 'k-mobile' : null;\r\n }\r\n browserUtils.getMobileCssClass = getMobileCssClass;\r\n})(browserUtils || (browserUtils = {}));\r\n//# sourceMappingURL=browser_utils.js.map","export function mask(input, maskPattern) {\r\n var d = { 9: '[0-9]', a: '[a-z]' };\r\n var mask = maskPattern.split('');\r\n var keyDownHandler = function (e) {\r\n // backspace key or delete key\r\n if (e.keyCode === 8 || e.keyCode === 46) {\r\n e.preventDefault();\r\n var mskd = [];\r\n var startSelection = input.selectionStart;\r\n if (startSelection == 0)\r\n return;\r\n var selection = startSelection;\r\n var onlyLodash = true;\r\n for (var index = mask.length - 1; index >= 0; index--) {\r\n var el = mask[index];\r\n if (d[el]) {\r\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\r\n if (t && index != startSelection - 1) {\r\n onlyLodash = false;\r\n }\r\n if (index === startSelection - 1)\r\n selection--;\r\n mskd.push(t && index != startSelection - 1\r\n ? input.value.charAt(index)\r\n : '_');\r\n }\r\n else {\r\n if (index === selection - 1)\r\n selection--;\r\n if (startSelection - 1 === index)\r\n startSelection--;\r\n mskd.push(el);\r\n }\r\n }\r\n input.value = !onlyLodash ? mskd.reverse().join('') : '';\r\n input.selectionStart = input.selectionEnd = selection < 0 ? 0 : selection;\r\n var event_1 = document.createEvent('Event');\r\n event_1.initEvent('input', true, true);\r\n input.dispatchEvent(event_1);\r\n }\r\n };\r\n var keyPressHandler = function (e) {\r\n var char = String.fromCharCode(e.charCode);\r\n if (char) {\r\n e.preventDefault();\r\n var mskd_1 = [];\r\n var selectionStart_1 = input.selectionStart;\r\n var selection_1 = selectionStart_1;\r\n mask.forEach(function (el, index) {\r\n if (d[el]) {\r\n var ch = (index != selectionStart_1)\r\n ? input.value.charAt(index)\r\n : char;\r\n var t = new RegExp(d[el], 'i').test(ch);\r\n mskd_1.push(t ? ch : '_');\r\n if (t && selectionStart_1 === index)\r\n selection_1++;\r\n }\r\n else {\r\n mskd_1.push(el);\r\n if (selection_1 === index)\r\n selection_1++;\r\n if (selectionStart_1 === index)\r\n selectionStart_1++;\r\n }\r\n });\r\n input.value = mskd_1.join('');\r\n input.selectionStart = input.selectionEnd = selection_1;\r\n var event_2 = document.createEvent('Event');\r\n event_2.initEvent('input', true, true);\r\n input.dispatchEvent(event_2);\r\n }\r\n };\r\n var inputHandler = function (e) {\r\n if (e.type === 'focus' && input.value !== '')\r\n return;\r\n var mskd = [];\r\n var startSelection = input.selectionStart;\r\n mask.forEach(function (el, index) {\r\n if (d[el]) {\r\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\r\n mskd.push(t ? input.value.charAt(index) : '_');\r\n }\r\n else {\r\n mskd.push(el);\r\n }\r\n });\r\n input.value = mskd.join('');\r\n input.selectionStart = input.selectionEnd = startSelection;\r\n };\r\n input.addEventListener('keydown', keyDownHandler);\r\n input.addEventListener('keypress', keyPressHandler);\r\n input.addEventListener('input', inputHandler);\r\n input.addEventListener('focus', inputHandler);\r\n}\r\n//# sourceMappingURL=mask.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, utils, liquid } from '@easydata/core';\r\nimport { DialogFooterAlignment } from './dialog_service';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nvar cssPrefix = \"kdlg\";\r\nvar DefaultDialogService = /** @class */ (function () {\r\n function DefaultDialogService() {\r\n }\r\n DefaultDialogService.prototype.openConfirm = function (title, content, callback) {\r\n var _this = this;\r\n var template = \"
\" + content + \"
\";\r\n var options = {\r\n title: title,\r\n closable: false,\r\n submitable: true,\r\n cancelable: true,\r\n body: template\r\n };\r\n if (callback) {\r\n options.onSubmit = function () {\r\n callback(true);\r\n };\r\n options.onCancel = function () {\r\n callback(false);\r\n };\r\n this.open(options);\r\n return;\r\n }\r\n return new Promise(function (resolve) {\r\n options.onSubmit = function () {\r\n resolve(true);\r\n };\r\n options.onCancel = function () {\r\n resolve(false);\r\n };\r\n _this.open(options);\r\n });\r\n };\r\n DefaultDialogService.prototype.openPrompt = function (title, content, defVal, callback) {\r\n var _this = this;\r\n var template = \"
\\n
\\n \\n \\n
\\n
\";\r\n var options = {\r\n title: title,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n body: template,\r\n arrangeParents: false,\r\n beforeOpen: function () {\r\n var input = document.getElementById(cssPrefix + \"-dialog-form-input\");\r\n if (defVal) {\r\n input.value = defVal;\r\n }\r\n input.focus();\r\n }\r\n };\r\n var processInput = function (callback) {\r\n var input = document.getElementById(cssPrefix + \"-dialog-form-input\");\r\n var result = input.value;\r\n if (result && result.replace(/\\s/g, '').length > 0) {\r\n callback(result);\r\n return true;\r\n }\r\n input.classList.add('eqjs-invalid');\r\n return false;\r\n };\r\n if (callback) {\r\n options.onSubmit = function () {\r\n return processInput(callback);\r\n };\r\n options.onCancel = function () {\r\n callback(\"\");\r\n };\r\n this.open(options);\r\n return;\r\n }\r\n return new Promise(function (resolve) {\r\n options.onSubmit = function () {\r\n return processInput(resolve);\r\n };\r\n options.onCancel = function () {\r\n resolve(\"\");\r\n };\r\n _this.open(options);\r\n });\r\n };\r\n DefaultDialogService.prototype.open = function (options, data) {\r\n var _this = this;\r\n var dialog = new DefaultDialog(options, data);\r\n var onDestroy = options.onDestroy;\r\n options.onDestroy = function (dlg) {\r\n _this.untrack(dlg);\r\n onDestroy && onDestroy(dlg);\r\n };\r\n dialog.open();\r\n this.track(dialog);\r\n return dialog;\r\n };\r\n DefaultDialogService.prototype.createSet = function (options) {\r\n return new DefaultDialogSet(options, this);\r\n };\r\n DefaultDialogService.prototype.untrack = function (dlg) {\r\n var index = DefaultDialogService.openDialogs.indexOf(dlg);\r\n if (index >= 0) {\r\n DefaultDialogService.openDialogs.splice(index, 1);\r\n }\r\n };\r\n DefaultDialogService.prototype.track = function (dlg) {\r\n DefaultDialogService.openDialogs.push(dlg);\r\n };\r\n DefaultDialogService.prototype.openProgress = function (options) {\r\n var _this = this;\r\n var dialog = new DefaultProgressDialog(options);\r\n var onDestroy = options.onDestroy;\r\n options.onDestroy = function (dlg) {\r\n _this.untrack(dlg);\r\n onDestroy && onDestroy(dlg);\r\n };\r\n dialog.open();\r\n this.track(dialog);\r\n return dialog;\r\n };\r\n DefaultDialogService.prototype.getAllDialogs = function () {\r\n return Array.from(DefaultDialogService.openDialogs);\r\n };\r\n DefaultDialogService.prototype.closeAllDialogs = function () {\r\n for (var _i = 0, _a = Array.from(DefaultDialogService.openDialogs); _i < _a.length; _i++) {\r\n var dialog = _a[_i];\r\n dialog.close();\r\n }\r\n };\r\n DefaultDialogService.openDialogs = [];\r\n return DefaultDialogService;\r\n}());\r\nexport { DefaultDialogService };\r\nvar DefaultDialog = /** @class */ (function () {\r\n function DefaultDialog(options, data) {\r\n var _this = this;\r\n this.options = options;\r\n this.submitHandler = function (token) {\r\n if (_this.options.onSubmit && _this.options.onSubmit(_this, token) === false) {\r\n return false;\r\n }\r\n _this.destroy();\r\n return true;\r\n };\r\n this.cancelHandler = function () {\r\n if (_this.options.onCancel) {\r\n _this.options.onCancel(_this);\r\n }\r\n _this.destroy();\r\n };\r\n this.keydownHandler = function (ev) {\r\n if (ev.keyCode == 13 && _this.isActiveDialog()) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (_this.submitHandler()) {\r\n window.removeEventListener('keydown', _this.keydownHandler, false);\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n this.dialogId = utils.generateId('dlg');\r\n this.data = data;\r\n this.slot =\r\n domel('div', document.body)\r\n .attr('tab-index', '-1')\r\n .data('dialog-id', this.dialogId)\r\n .addClass(cssPrefix + \"-modal\", 'is-active')\r\n .focus()\r\n .addChild('div', function (b) { return b\r\n .addClass('kdlg-modal-background'); })\r\n .addChild('div', function (b) { return _this.windowElement = b\r\n .addClass(cssPrefix + \"-modal-window\")\r\n .addChild('header', function (b) {\r\n _this.headerElement = b\r\n .addClass(cssPrefix + \"-header\")\r\n .addChild('p', function (b) { return b\r\n .addClass(cssPrefix + \"-header-title\")\r\n .addText(options.title); })\r\n .toDOM();\r\n if (options.closable !== false)\r\n b.addChild('button', function (b) { return b\r\n .addClass(cssPrefix + \"-modal-close\")\r\n .on('click', function () {\r\n _this.cancelHandler();\r\n })\r\n .focus(); });\r\n })\r\n .addChild('div', function (b) {\r\n b.addClass(cssPrefix + \"-alert-container\");\r\n _this.alertElement = b.toDOM();\r\n })\r\n .addChild('section', function (b) {\r\n _this.bodyElement = b\r\n .addClass(cssPrefix + \"-body\")\r\n .toDOM();\r\n if (typeof options.body === 'string') {\r\n var html = liquid.renderLiquidTemplate(options.body, data);\r\n b.addHtml(html);\r\n }\r\n else {\r\n b.addChildElement(options.body);\r\n }\r\n })\r\n .addChild('footer', function (b) {\r\n var alignClass = null;\r\n if (options.footerAlignment && options.footerAlignment == DialogFooterAlignment.Center) {\r\n alignClass = 'align-center';\r\n }\r\n else {\r\n alignClass = 'align-right';\r\n }\r\n _this.footerElement = b\r\n .addClass(cssPrefix + \"-footer\")\r\n .toDOM();\r\n b.addClass(alignClass);\r\n if (options.submitable === false)\r\n return;\r\n b.addChild('button', function (bb) {\r\n bb.id(_this.dialogId + '-btn-submit')\r\n .addClass('kfrm-button', 'is-info')\r\n .addText(options.submitButtonText || i18n.getText('ButtonOK'));\r\n if (options.recaptchaSiteKey) {\r\n bb.data('sitekey', options.recaptchaSiteKey);\r\n bb.addClass('g-recaptcha');\r\n bb.on('click', function (e) {\r\n if (grecaptcha) {\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute(options.recaptchaSiteKey, { action: 'submit' })\r\n .then(function (token) {\r\n _this.submitHandler(token);\r\n });\r\n });\r\n }\r\n else {\r\n _this.submitHandler();\r\n }\r\n });\r\n }\r\n else {\r\n bb.on('click', function (e) {\r\n _this.submitHandler();\r\n });\r\n }\r\n bb.focus();\r\n });\r\n if (options.cancelable !== false)\r\n b.addChild('button', function (bb) { return bb\r\n .id(_this.dialogId + '-btn-cancel')\r\n .addClass('kfrm-button')\r\n .addText(options.cancelButtonText || i18n.getText('ButtonCancel'))\r\n .on('click', function (e) {\r\n _this.cancelHandler();\r\n }); });\r\n })\r\n .toDOM(); })\r\n .toDOM();\r\n }\r\n DefaultDialog.prototype.getData = function () {\r\n return this.data;\r\n };\r\n DefaultDialog.prototype.getRootElement = function () {\r\n return this.slot;\r\n };\r\n DefaultDialog.prototype.getSubmitButtonElement = function () {\r\n return document.getElementById(this.dialogId + '-btn-submit');\r\n };\r\n DefaultDialog.prototype.getCancelButtonElement = function () {\r\n return document.getElementById(this.dialogId + '-btn-cancel');\r\n };\r\n DefaultDialog.prototype.open = function () {\r\n var _this = this;\r\n if (this.options.beforeOpen) {\r\n this.options.beforeOpen(this);\r\n }\r\n domel(this.slot).show();\r\n if (this.options.arrangeParents) {\r\n this.arrangeParents(true);\r\n }\r\n var windowDiv = this.slot\r\n .querySelector(\".\" + cssPrefix + \"-modal-window\");\r\n if (this.options.height) {\r\n windowDiv.style.height = typeof this.options.height === 'string'\r\n ? this.options.height\r\n : this.options.height + \"px\";\r\n }\r\n if (this.options.width) {\r\n windowDiv.style.width = typeof this.options.width === 'string'\r\n ? this.options.width\r\n : this.options.width + \"px\";\r\n }\r\n if (this.options.submitOnEnter) {\r\n window.addEventListener('keydown', this.keydownHandler, false);\r\n }\r\n //clear alert on change in any input element \r\n this.slot.querySelectorAll('input')\r\n .forEach(function (element) {\r\n return element.addEventListener('input', function () {\r\n _this.clearAlert();\r\n if (_this.options.onInput) {\r\n _this.options.onInput(_this);\r\n }\r\n });\r\n });\r\n if (this.options.onShow) {\r\n this.options.onShow(this);\r\n }\r\n };\r\n DefaultDialog.prototype.submit = function () {\r\n this.submitHandler();\r\n };\r\n DefaultDialog.prototype.cancel = function () {\r\n this.cancelHandler();\r\n };\r\n DefaultDialog.prototype.close = function () {\r\n this.destroy();\r\n };\r\n DefaultDialog.prototype.disableButtons = function () {\r\n var buttons = this.slot.querySelectorAll('button');\r\n buttons.forEach(function (button) { return button.disabled = true; });\r\n };\r\n DefaultDialog.prototype.enableButtons = function () {\r\n var buttons = this.slot.querySelectorAll('button');\r\n buttons.forEach(function (button) { return button.disabled = false; });\r\n };\r\n DefaultDialog.prototype.showAlert = function (text, reason, replace) {\r\n var alert = domel('div')\r\n .addClass(cssPrefix + \"-alert \" + (reason || ''))\r\n .addChild('span', function (b) { return b\r\n .addClass(cssPrefix + \"-alert-closebtn\")\r\n .text('×')\r\n .on('click', function (ev) {\r\n var alert = ev.target.parentElement;\r\n alert.parentElement.removeChild(alert);\r\n }); })\r\n .addText(text)\r\n .toDOM();\r\n if (replace === true) {\r\n this.clearAlert();\r\n }\r\n this.alertElement.appendChild(alert);\r\n };\r\n DefaultDialog.prototype.clearAlert = function () {\r\n this.alertElement.innerHTML = '';\r\n };\r\n DefaultDialog.prototype.destroy = function () {\r\n var elem = document.querySelectorAll(\"[data-dialog-id=\\\"\" + this.dialogId + \"\\\"]\");\r\n if (elem.length <= 0)\r\n return;\r\n if (this.options.arrangeParents) {\r\n this.arrangeParents(false);\r\n }\r\n document.body.removeChild(this.slot);\r\n if (this.options.submitOnEnter) {\r\n window.removeEventListener('keydown', this.keydownHandler, false);\r\n }\r\n if (this.options.onDestroy) {\r\n this.options.onDestroy(this);\r\n }\r\n };\r\n DefaultDialog.prototype.isActiveDialog = function () {\r\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal');\r\n return windowDivs[windowDivs.length - 1] === this.slot;\r\n };\r\n DefaultDialog.prototype.arrangeParents = function (turnOn) {\r\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal-window');\r\n for (var i = 0; i < windowDivs.length - 1; i++) {\r\n if (turnOn) {\r\n var offset = i == 0 ? 20 : i * 40 + 20;\r\n domel(windowDivs[i])\r\n .setStyle('margin-top', offset + \"px\")\r\n .setStyle('margin-left', offset + \"px\");\r\n }\r\n else {\r\n domel(windowDivs[i])\r\n .removeStyle('margin-top')\r\n .removeStyle('margin-left');\r\n }\r\n }\r\n };\r\n return DefaultDialog;\r\n}());\r\nexport { DefaultDialog };\r\nvar DefaultProgressDialog = /** @class */ (function (_super) {\r\n __extends(DefaultProgressDialog, _super);\r\n function DefaultProgressDialog(options, data) {\r\n var _this = this;\r\n var contentElement;\r\n var progressElement;\r\n var body = domel('div')\r\n .addChild('div', function (b) { return contentElement = b\r\n .text(options.content || '')\r\n .toDOM(); })\r\n .addChild('div', function (b) {\r\n b\r\n .addClass(cssPrefix + \"-progress-line\")\r\n .addChild('div', function (b) {\r\n progressElement = b\r\n .addClass('fill')\r\n .toDOM();\r\n if (options.determinated) {\r\n b.setStyle('width', '0%');\r\n }\r\n else {\r\n b.addClass('indeterminate');\r\n }\r\n });\r\n })\r\n .toDOM();\r\n _this = _super.call(this, {\r\n title: options.title,\r\n body: body,\r\n beforeOpen: options.beforeOpen,\r\n onSubmit: options.onSubmit,\r\n width: options.width,\r\n height: options.height,\r\n submitable: false,\r\n cancelable: false,\r\n closable: false,\r\n onDestroy: options.onDestroy\r\n }, data) || this;\r\n _this.contentElement = contentElement;\r\n _this.progressElement = progressElement;\r\n return _this;\r\n }\r\n DefaultProgressDialog.prototype.updateContent = function (content) {\r\n this.contentElement.innerText = content;\r\n };\r\n DefaultProgressDialog.prototype.updateProgress = function (progress) {\r\n var _this = this;\r\n progress = this.in01(progress);\r\n this.progressElement.style.width = progress * 100 + \"%\";\r\n if (progress === 1) {\r\n // postpone for 0.5s for smooth closing\r\n setTimeout(function () {\r\n _this.submit();\r\n }, 500);\r\n }\r\n };\r\n DefaultProgressDialog.prototype.in01 = function (num) {\r\n if (num > 1)\r\n return 1;\r\n if (num < 0)\r\n return 0;\r\n return num;\r\n };\r\n return DefaultProgressDialog;\r\n}(DefaultDialog));\r\nexport { DefaultProgressDialog };\r\nvar DefaultDialogSet = /** @class */ (function () {\r\n function DefaultDialogSet(options, dialogService) {\r\n this.options = options;\r\n this.dialogService = dialogService;\r\n this.currentDialog = null;\r\n this.currentIndex = 0;\r\n this.options = options;\r\n this.dialogService = dialogService;\r\n }\r\n DefaultDialogSet.prototype.getCurrent = function () {\r\n return this.currentDialog;\r\n };\r\n DefaultDialogSet.prototype.openNext = function (data) {\r\n return this.open(this.currentIndex + 1, data);\r\n };\r\n DefaultDialogSet.prototype.openPrev = function (data) {\r\n return this.open(this.currentIndex - 1, data);\r\n };\r\n DefaultDialogSet.prototype.open = function (page, data) {\r\n if (page < 0) {\r\n this.currentIndex = 0;\r\n }\r\n else if (page >= this.options.length) {\r\n this.currentIndex = this.options.length - 1;\r\n }\r\n else {\r\n this.currentIndex = page;\r\n }\r\n if (this.currentDialog) {\r\n try {\r\n this.currentDialog.close();\r\n }\r\n catch (e) { }\r\n }\r\n var dlgOptions = this.options[this.currentIndex];\r\n this.currentDialog = this.dialogService.open(dlgOptions, data);\r\n return this.currentDialog;\r\n };\r\n DefaultDialogSet.prototype.close = function () {\r\n if (this.currentDialog) {\r\n this.currentDialog.close();\r\n this.currentDialog = null;\r\n }\r\n };\r\n return DefaultDialogSet;\r\n}());\r\nexport { DefaultDialogSet };\r\n//# sourceMappingURL=default_dialog_service.js.map","export var DialogFooterAlignment;\r\n(function (DialogFooterAlignment) {\r\n DialogFooterAlignment[DialogFooterAlignment[\"Left\"] = 1] = \"Left\";\r\n DialogFooterAlignment[DialogFooterAlignment[\"Center\"] = 2] = \"Center\";\r\n DialogFooterAlignment[DialogFooterAlignment[\"Right\"] = 3] = \"Right\";\r\n})(DialogFooterAlignment || (DialogFooterAlignment = {}));\r\n//# sourceMappingURL=dialog_service.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { DataKind, SortDirection, ExprTag, Widget, WidgetGroup, QueryChangePart, QueryChangeAction } from '@easyquery/core';\r\nimport { eqDragManager, DropEffect, getElementAbsolutePos, domel } from '@easydata/ui';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { eqCssPrefix, eqCssMobile } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { AggrFuncColumnRendererCP } from './renderers/columnspanel/aggrfunc_column_renderer';\r\nimport { CustomSqlColumnRendererCP } from './renderers/columnspanel/customsql_column_renderer';\r\nimport { SimpleColumnRendererCP } from './renderers/columnspanel/simple_column_renderer';\r\nvar ColumnsPanel = /** @class */ (function (_super) {\r\n __extends(ColumnsPanel, _super);\r\n function ColumnsPanel(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n isSubQuery: false,\r\n activeColumn: null,\r\n showAddRow: true,\r\n showHeader: true,\r\n showColumnTitles: true,\r\n allowAggrColumns: true,\r\n allowDuplicates: true,\r\n allowCustomExpressions: false,\r\n allowSorting: true,\r\n attrElementFormat: '{entity} {attr}',\r\n titleElementFormat: null,\r\n buttons: null,\r\n alwaysShowButtons: false,\r\n accentActiveColumn: true,\r\n allowDragDrop: true,\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n adjustHeight: true,\r\n itemRenderedCallback: null\r\n },\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n columnRenderedCallback: null,\r\n customExpressionText: 0,\r\n allowHiddenColumns: false,\r\n showAddAllForEntity: false\r\n };\r\n _this.landingSlot = domel('div')\r\n .addClass(_this.cssPrefix + \"-col-landing-slot\")\r\n .addChildElement(domel('div')\r\n .toDOM())\r\n .toDOM();\r\n _this.landingIndex = -1;\r\n _this.slot.classList.add(_this.cssPrefix + \"-panel\");\r\n _this.group = WidgetGroup.Query;\r\n return _this;\r\n }\r\n Object.defineProperty(ColumnsPanel.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qc';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnsPanel.prototype.getWidgetType = function () {\r\n return 'columnsPanel';\r\n };\r\n ColumnsPanel.prototype.init = function (context, options) {\r\n var _this = this;\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n var model = context.getModel();\r\n this.detachQueryObserver();\r\n this.attachQueryObserver();\r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttr\", \"entityAttrSort\"],\r\n onDragEnter: function (container, ev) {\r\n _this.slot.classList.add(eqCssPrefix + \"-drophover\");\r\n if (ev.item.scope === \"entityAttrSort\") {\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n }\r\n else {\r\n var attrId = ev.data.attrId;\r\n if (!model.checkAttrProperty(attrId, \"useInResult\")) {\r\n ev.dropEffect = DropEffect.Forbid;\r\n }\r\n ev.dragImage.classList.add('eqjs-sortable-helper');\r\n }\r\n },\r\n onDragOver: function (container, ev) {\r\n var attrId = ev.data.attrId;\r\n if (ev.item.scope === \"entityAttrSort\" ||\r\n model.checkAttrProperty(attrId, \"useInResult\")) {\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n }\r\n },\r\n onDragLeave: function (container, ev) {\r\n if (ev.item.scope === \"entityAttrSort\") {\r\n ev.dropEffect = DropEffect.Forbid;\r\n }\r\n else {\r\n ev.dragImage.classList.remove('eqjs-sortable-helper');\r\n ev.dragImage.style.removeProperty('width');\r\n }\r\n _this.slot.classList.remove(eqCssPrefix + \"-drophover\");\r\n _this.hideLandingSlot();\r\n },\r\n onDrop: function (container, ev) {\r\n if (ev.item.scope == \"entityAttrSort\") {\r\n var query = _this.getQuery();\r\n var columns = query.getColumns();\r\n var index = columns.indexOf(ev.data.column);\r\n _this.moveColumnCore(index, _this.landingIndex);\r\n }\r\n else {\r\n var attrId = ev.data.attrId;\r\n _this.addNewColumn(attrId, _this.landingIndex);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n ColumnsPanel.prototype.renderBaseElements = function () {\r\n var _this = this;\r\n var minusHeight = 0;\r\n if (this.options.showHeader) {\r\n var headerBuilder = domel('div', this.slot)\r\n .hide()\r\n .addClass(this.cssPrefix + \"-header\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-header-expression\")\r\n .text(i18n.getText('HeaderExpression')); });\r\n if (this.options.showColumnTitles !== false) {\r\n headerBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-header-title\")\r\n .text(i18n.getText('HeaderTitle')); });\r\n }\r\n this.headerElement = headerBuilder.toDOM();\r\n minusHeight += this.headerElement.offsetHeight;\r\n }\r\n this.columnsBlock =\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-columns\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n if (this.options.showAddRow) {\r\n this.addRowElement =\r\n domel('div', this.slot)\r\n .addClass(eqCssPrefix + \"-addrow\", this.cssPrefix + \"-addrow\", eqCssPrefix + \"-addrow-empty\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .text(i18n.getText('CmdClickToAddColumn'))\r\n .on('click', function (e) {\r\n e.preventDefault();\r\n _this.showEntitiesMenu({\r\n anchor: e.target,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n if (data.id === '__AddAll__' && data.extra && Array.isArray(data.extra.ids)) {\r\n data.extra.ids.forEach(function (attrId) { return _this.addNewColumn(attrId); });\r\n }\r\n else {\r\n var attrid = data.id;\r\n _this.addNewColumn(attrid);\r\n }\r\n return false;\r\n }\r\n });\r\n }); })\r\n .toDOM();\r\n minusHeight += this.addRowElement.offsetHeight;\r\n }\r\n this.columnsBlock.style.maxHeight = this.slot.offsetHeight - minusHeight - 25 + \"px\";\r\n };\r\n ColumnsPanel.prototype.destroyCore = function () {\r\n eqDragManager.removeDropContainer(this.slot);\r\n this.detachQueryObserver();\r\n this.slot.innerHTML = '';\r\n };\r\n ColumnsPanel.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n //if something has changed, and that change is related to columns\r\n var edata = event.data;\r\n if (!edata || (edata.part != QueryChangePart.Columns\r\n && edata.part != QueryChangePart.Aggregation\r\n && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n var focusedBefore = document.activeElement;\r\n var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n var columns = edata.changee;\r\n var modifyColumn_1 = function (column) {\r\n var colEl = _this.columnsBlock.querySelector(\"div[data-id='\" + column.id + \"']\");\r\n if (colEl) {\r\n var renderer = _this.getColumnRenderer(column, colEl);\r\n if (renderer) {\r\n var newEl = renderer.render();\r\n if (isFocusInside) {\r\n var focusElem = newEl.querySelector('a') || newEl.querySelector('.eqjs-column-button');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return modifyColumn_1(col); });\r\n }\r\n else {\r\n modifyColumn_1(columns);\r\n }\r\n _this.agjustHeaderVisibility();\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n var columns = edata.changee;\r\n var addColumn_1 = function (column) {\r\n var index = query.getColumns().indexOf(column);\r\n var newEl = _this.addColumnElement(column, index);\r\n if (isFocusInside) {\r\n newEl.querySelector(\"a\").focus();\r\n }\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return addColumn_1(col); });\r\n }\r\n else {\r\n addColumn_1(columns);\r\n }\r\n _this.agjustHeaderVisibility();\r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n var columns = edata.changee;\r\n var deleteColumn_1 = function (column) {\r\n var colEl = _this.columnsBlock.querySelector(\"div[data-id='\" + column.id + \"']\");\r\n if (colEl) {\r\n var next = colEl.nextSibling;\r\n var prev = colEl.previousSibling;\r\n _this.columnsBlock.removeChild(colEl);\r\n if (isFocusInside) {\r\n var focusCond = next || prev || _this.addRowElement;\r\n var focusElem = focusCond.querySelector('a') || focusCond.querySelector('.eqjs-column-button');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n };\r\n _this.agjustHeaderVisibility();\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return deleteColumn_1(col); });\r\n }\r\n else {\r\n deleteColumn_1(columns);\r\n }\r\n break;\r\n }\r\n default:\r\n _this.refresh();\r\n break;\r\n }\r\n });\r\n };\r\n ColumnsPanel.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n ColumnsPanel.prototype.getQuery = function () {\r\n return this.getContext().getQuery();\r\n };\r\n ColumnsPanel.prototype.showLandingSlot = function (pageX, pageY) {\r\n var rowElems = this.columnsBlock.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row]\");\r\n var rows = [];\r\n for (var i = 0; i < rowElems.length; i++) {\r\n var rowElem = rowElems[i];\r\n if (rowElem.style.display === 'none')\r\n continue;\r\n rows.push(rowElem);\r\n }\r\n if (rows.length === 0) {\r\n this.landingIndex = 0;\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n return;\r\n }\r\n var landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight) {\r\n return;\r\n }\r\n var firstRow = rows[0];\r\n var rowHeight = firstRow.offsetHeight;\r\n var absPos = getElementAbsolutePos(firstRow);\r\n var newLandingIndex = (pageY > absPos.y + rowHeight / 2) ? Math.round((pageY - absPos.y + rowHeight / 2) / rowHeight) : 0;\r\n if (newLandingIndex > rows.length) {\r\n newLandingIndex = rows.length;\r\n }\r\n if (newLandingIndex != this.landingIndex) {\r\n this.landingIndex = newLandingIndex;\r\n if (this.landingIndex < rows.length) {\r\n this.columnsBlock.insertBefore(this.landingSlot, rows[this.landingIndex]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n }\r\n this.landingSlot.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n }\r\n };\r\n ColumnsPanel.prototype.hideLandingSlot = function () {\r\n var _this = this;\r\n this.landingIndex = -1;\r\n setTimeout(function () {\r\n if (_this.landingSlot.parentElement) {\r\n _this.landingSlot.parentElement.removeChild(_this.landingSlot);\r\n }\r\n }, 10);\r\n };\r\n ColumnsPanel.prototype.setOptions = function (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n if (browserUtils.isMobileMode()) {\r\n this.options.buttons = [\"menu\"];\r\n this.options.showHeader = false;\r\n }\r\n };\r\n ColumnsPanel.prototype.onProcessStartCore = function () {\r\n };\r\n ColumnsPanel.prototype.onProcessEndCore = function () {\r\n };\r\n ColumnsPanel.prototype.refreshCore = function () {\r\n this.clear();\r\n this.render();\r\n };\r\n ColumnsPanel.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n ColumnsPanel.prototype.render = function () {\r\n try {\r\n this.renderBaseElements();\r\n this.createEntitiesMenu();\r\n this.createColumnMenus();\r\n this.agjustHeaderVisibility();\r\n domel(this.slot)\r\n .removeClass(eqCssMobile)\r\n .addClass(browserUtils.getMobileCssClass());\r\n var query = this.context.getQuery();\r\n var columns = query.getColumns();\r\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\r\n var column = columns_1[_i];\r\n this.columnsBlock.appendChild(this.renderColumn(column));\r\n }\r\n }\r\n catch (err) {\r\n var error = err;\r\n this.context.throwError({\r\n action: \"ColumnsPanel rendering\",\r\n text: error.message,\r\n sourceError: error\r\n });\r\n }\r\n };\r\n ColumnsPanel.prototype.agjustHeaderVisibility = function () {\r\n if (this.headerElement) {\r\n var query = this.context.getQuery();\r\n var columns = query.getColumns();\r\n this.headerElement.style.display = (columns.length) ? '' : 'none';\r\n }\r\n };\r\n ColumnsPanel.prototype.renderColumn = function (column) {\r\n var renderer = this.getColumnRenderer(column);\r\n if (renderer)\r\n return renderer.render();\r\n return null;\r\n };\r\n ColumnsPanel.prototype.toggleColumnPicked = function (column) {\r\n var el;\r\n var isActive;\r\n if (column) {\r\n el = this.columnsBlock.querySelector(\"div[data-id=\" + column.id + \"]\");\r\n if (el) {\r\n isActive = el.classList.contains('active');\r\n }\r\n }\r\n //clear 'active' in all rows\r\n var rows = this.columnsBlock.querySelectorAll(\".\" + this.cssPrefix + \"-row\");\r\n for (var i = 0; i < rows.length; i++) {\r\n var row = rows[i];\r\n domel(row)\r\n .removeClass('active');\r\n if (!this.options.alwaysShowButtons) {\r\n domel(row)\r\n .data(\"show-buttons\", null);\r\n }\r\n }\r\n if (el && !isActive) {\r\n domel(el)\r\n .addClass('active')\r\n .data(\"show-buttons\", \"\");\r\n }\r\n };\r\n ColumnsPanel.prototype.addNewColumn = function (attrId, index) {\r\n var _this = this;\r\n var model = this.getContext().getModel();\r\n var query = this.getQuery();\r\n var getColumnByAttrId = function (attrid) {\r\n var attribute = model.getAttributeById(attrid);\r\n if (!attribute) {\r\n return null;\r\n }\r\n if (!attribute.useInResult) {\r\n if (attribute.lookupAttr) {\r\n attrid = attribute.lookupAttr;\r\n attribute = model.getAttributeById(attrid);\r\n if (!attribute || !attribute.useInResult) {\r\n return null;\r\n }\r\n }\r\n else\r\n return null;\r\n }\r\n var column = query.createColumn();\r\n column.caption = _this.getDefaultColumnCaption(attribute);\r\n column.sorting = SortDirection.None;\r\n column.sortIndex = -1;\r\n column.expr.tag = ExprTag.EntityAttribute;\r\n column.expr.kind = DataKind.Attribute;\r\n column.expr.dataType = attribute.dataType;\r\n column.expr.setValue(attrid, true);\r\n column.params.concat(attribute.params);\r\n return column;\r\n };\r\n var colToAdd, col;\r\n if (Array.isArray(attrId)) {\r\n colToAdd = [];\r\n for (var i = 0; i < attrId.length; i++) {\r\n col = getColumnByAttrId(attrId[i]);\r\n if (col) {\r\n colToAdd.push(col);\r\n }\r\n }\r\n }\r\n else\r\n colToAdd = getColumnByAttrId(attrId);\r\n this.addColumn(colToAdd, index);\r\n return colToAdd;\r\n };\r\n ColumnsPanel.prototype.addColumn = function (column, index) {\r\n var query = this.getQuery();\r\n if (!query) {\r\n return;\r\n }\r\n if (Array.isArray(column))\r\n column = this.checkColumnsArray(column);\r\n else\r\n column = this.checkColumn(column);\r\n if (!column || (Array.isArray(column) && column.length == 0)) {\r\n return;\r\n }\r\n query.addColumnObj(column, index, self);\r\n query.fireColumnsChangedEvent(QueryChangeAction.Add, column);\r\n };\r\n //adds one column to the panel on the specified position\r\n ColumnsPanel.prototype.addColumnElement = function (column, index) {\r\n var rows = this.columnsBlock.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row]\");\r\n var newColBlock = this.renderColumn(column);\r\n if (rows.length > 0) {\r\n if (index < rows.length) {\r\n this.columnsBlock.insertBefore(newColBlock, rows[index]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n this.scrollToBottom();\r\n }\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n this.scrollToBottom();\r\n }\r\n if (this.options.columnRenderedCallback) {\r\n this.options.columnRenderedCallback(newColBlock);\r\n }\r\n return newColBlock;\r\n };\r\n ColumnsPanel.prototype.scrollToBottom = function () {\r\n this.columnsBlock.scrollTop = this.columnsBlock.scrollHeight - this.columnsBlock.clientHeight;\r\n };\r\n ColumnsPanel.prototype.checkColumnsArray = function (cols) {\r\n var i = 0, len = cols.length;\r\n var result = [];\r\n for (var i_1 = 0; i_1 < len; i_1++) {\r\n if (this.checkColumn(cols[i_1]))\r\n result.push(cols[i_1]);\r\n }\r\n return result;\r\n };\r\n ColumnsPanel.prototype.checkColumn = function (col) {\r\n if (!this.options.allowDuplicates) {\r\n var query = this.getQuery();\r\n var columns = query.getColumns();\r\n for (var i = 0; i < columns.length; i++) {\r\n if ((col.expr.tag === ExprTag.EntityAttribute && columns[i].expr.tag === ExprTag.EntityAttribute\r\n || col.expr.tag === ExprTag.ParentEntityAttribute && columns[i].expr.tag === ExprTag.ParentEntityAttribute)\r\n && col.expr.value === columns[i].expr.value) {\r\n return null;\r\n }\r\n }\r\n }\r\n return col;\r\n };\r\n ColumnsPanel.prototype.getDefaultColumnCaption = function (attr) {\r\n var format = this.options.titleElementFormat || this.options.attrElementFormat;\r\n var model = this.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n ColumnsPanel.prototype.getColumnsBlock = function () {\r\n return this.columnsBlock;\r\n };\r\n ColumnsPanel.prototype.getColumnRenderer = function (column, slot) {\r\n switch (column.expr.tag) {\r\n case ExprTag.AggregateFunction:\r\n return new AggrFuncColumnRendererCP(this, column, slot);\r\n case ExprTag.CustomSql:\r\n return new CustomSqlColumnRendererCP(this, column, slot);\r\n case ExprTag.EntityAttribute:\r\n case ExprTag.ParentEntityAttribute:\r\n return new SimpleColumnRendererCP(this, column, slot);\r\n }\r\n return null;\r\n };\r\n ColumnsPanel.prototype.areCustomExpressionsAllowed = function () {\r\n var query = this.getQuery();\r\n return query.isEx() && this.options.allowCustomExpressions;\r\n };\r\n ColumnsPanel.prototype.addAllColumnsToEntitiesList = function (list) {\r\n var _this = this;\r\n var attrIds = list.filter(function (item) { return !item.isEntity; }).map(function (item) { return item.id; });\r\n if (attrIds.length > 0) {\r\n list.unshift({\r\n id: '__AddAll__',\r\n text: i18n.getText('AddAllForEntityText'),\r\n extra: {\r\n ids: attrIds\r\n }\r\n });\r\n }\r\n list.forEach(function (item) {\r\n if (item.items) {\r\n _this.addAllColumnsToEntitiesList(item.items);\r\n }\r\n });\r\n };\r\n ColumnsPanel.prototype.createEntitiesMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n var entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false, attrPlacement: this.options.attrPlacement, sortEntities: this.options.sortEntities });\r\n // add [Add all columns] items\r\n if (this.options.showAddAllForEntity) {\r\n this.addAllColumnsToEntitiesList(entitiesList);\r\n }\r\n var options = {\r\n id: menuId,\r\n items: entitiesList,\r\n adjustHeight: this.options.adjustEntitiesMenuHeight,\r\n domWriteItemsId: this.options.domWriteItemsId\r\n };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.entitiesMenu = new PopupMenu(options);\r\n };\r\n ColumnsPanel.prototype.getSortMenuList = function () {\r\n return [\r\n { id: 'None', text: i18n.getText('CmdNotSorted') },\r\n { id: 'Ascending', text: i18n.getText('CmdAscending') },\r\n { id: 'Descending', text: i18n.getText('CmdDescending') },\r\n { id: '---', text: '---' }\r\n ];\r\n };\r\n ColumnsPanel.prototype.getMoveMenuList = function () {\r\n return [\r\n { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },\r\n { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },\r\n { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },\r\n { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }\r\n ];\r\n };\r\n ColumnsPanel.prototype.createSortMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-SortMenu';\r\n }\r\n var items = this.getSortMenuList().concat(this.moveMenu.getItems());\r\n var menuOptions = {\r\n id: menuId,\r\n \"items\": items,\r\n domWriteItemsId: this.options.domWriteItemsId,\r\n showSelected: true\r\n };\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n menuOptions.searchBoxAlwaysShown = false;\r\n this.sortMenu = new PopupMenu(menuOptions);\r\n };\r\n ColumnsPanel.prototype.createMoveMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-MoveMenu';\r\n }\r\n var items = dataUtils.createArrayFrom(this.getMoveMenuList());\r\n if (this.options.allowHiddenColumns) {\r\n items.push({ id: '---', text: '---' });\r\n items.push({ id: 'IsHidden', text: i18n.getText('CmdHiddenColumn') });\r\n }\r\n var menuOptions = {\r\n \"items\": items,\r\n id: menuId,\r\n domWriteItemsId: this.options.domWriteItemsId,\r\n showSelected: true\r\n };\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n this.moveMenu = new PopupMenu(menuOptions);\r\n menuOptions.searchBoxAlwaysShown = false;\r\n };\r\n ColumnsPanel.prototype.showEntitiesMenu = function (menuOptions) {\r\n this.entitiesMenu.showMenu(menuOptions);\r\n };\r\n ColumnsPanel.prototype.moveColumn = function (column, direction) {\r\n var query = this.getQuery();\r\n var columns = query.getColumns();\r\n var index = columns.indexOf(column);\r\n if (index >= 0) {\r\n switch (direction) {\r\n case 'MoveTop':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, 0);\r\n break;\r\n case 'MoveUp':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index - 1);\r\n break;\r\n case 'MoveDown':\r\n if (index == columns.length - 1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index + 1);\r\n break;\r\n case 'MoveBottom':\r\n if (index == columns.length - 1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, columns.length - 1);\r\n break;\r\n }\r\n ;\r\n }\r\n };\r\n ColumnsPanel.prototype.moveColumnCore = function (index1, index2) {\r\n var query = this.getQuery();\r\n if (!query)\r\n return;\r\n var rows = this.columnsBlock.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row]\");\r\n var colToMove = rows[index1];\r\n if (index2 == 0) {\r\n this.columnsBlock.insertBefore(colToMove, this.columnsBlock[0]);\r\n }\r\n else if (index2 > 0 && index2 < rows.length - 1) {\r\n if (index1 < index2) {\r\n this.columnsBlock.insertBefore(colToMove, rows[index2 + 1]);\r\n }\r\n else {\r\n this.columnsBlock.insertBefore(colToMove, rows[index2]);\r\n }\r\n }\r\n else {\r\n this.columnsBlock.appendChild(colToMove);\r\n }\r\n query.moveColumn(index1, index2);\r\n query.fireColumnsChangedEvent();\r\n };\r\n ColumnsPanel.prototype.createColumnMenus = function () {\r\n this.createMoveMenu();\r\n if (this.options.allowSorting) {\r\n this.createSortMenu();\r\n }\r\n };\r\n return ColumnsPanel;\r\n}(Widget));\r\nexport { ColumnsPanel };\r\n//# sourceMappingURL=columns_panel.js.map","var __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { SortDirection, QueryChangeAction, i18n } from '@easyquery/core';\r\nimport { eqDragManager, DropEffect, createBrowserEvent, domel } from '@easydata/ui';\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { safeFocus } from '../../../utils/utils';\r\nexport var ColumnAction;\r\n(function (ColumnAction) {\r\n ColumnAction[ColumnAction[\"Enable\"] = 0] = \"Enable\";\r\n ColumnAction[ColumnAction[\"Delete\"] = 1] = \"Delete\";\r\n ColumnAction[ColumnAction[\"Hidden\"] = 2] = \"Hidden\";\r\n ColumnAction[ColumnAction[\"SortingNone\"] = 3] = \"SortingNone\";\r\n ColumnAction[ColumnAction[\"SortingAsc\"] = 4] = \"SortingAsc\";\r\n ColumnAction[ColumnAction[\"SortingDesc\"] = 5] = \"SortingDesc\";\r\n ColumnAction[ColumnAction[\"MoveTop\"] = 6] = \"MoveTop\";\r\n ColumnAction[ColumnAction[\"MoveUp\"] = 7] = \"MoveUp\";\r\n ColumnAction[ColumnAction[\"MoveDown\"] = 8] = \"MoveDown\";\r\n ColumnAction[ColumnAction[\"MoveBottom\"] = 9] = \"MoveBottom\";\r\n ColumnAction[ColumnAction[\"Menu\"] = 10] = \"Menu\";\r\n ColumnAction[ColumnAction[\"Type\"] = 11] = \"Type\";\r\n ColumnAction[ColumnAction[\"Format\"] = 12] = \"Format\";\r\n})(ColumnAction || (ColumnAction = {}));\r\nvar ColumnRendererCP = /** @class */ (function () {\r\n function ColumnRendererCP(panel, column, slot) {\r\n this.functionMenu = null;\r\n this.formatsMenu = null;\r\n this.buttonMenu = null;\r\n this.isMouseOverBlock = false;\r\n this.keepShowingButtons = false;\r\n this.panel = panel;\r\n this.column = column;\r\n this.element = slot;\r\n }\r\n Object.defineProperty(ColumnRendererCP.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qc';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnRendererCP.prototype.render = function () {\r\n var _this = this;\r\n this.baseAttr = this.getAttribute();\r\n if (this.getButtonsToShow().indexOf(\"sorting\") >= 0 && this.column.enabled) {\r\n this.sortingButton = this.renderSoringButton(this.column.sorting);\r\n if (this.column.sorting !== SortDirection.None) {\r\n this.sortingButton.style.display = 'block';\r\n }\r\n }\r\n var builder = domel('div');\r\n builder.data('id', this.column.id);\r\n if (this.element) {\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n this.element = builder.toDOM();\r\n if (this.panel.options.allowDragDrop && !browserUtils.isMobileMode()) {\r\n eqDragManager.registerDraggableItem({\r\n element: this.element,\r\n scope: \"entityAttrSort\",\r\n data: { column: this.column },\r\n beforeDragStart: function () {\r\n _this.hideButtons();\r\n },\r\n renderer: function (dragImage) {\r\n dragImage.innerHTML = '';\r\n var attrLabel = document.createElement('span');\r\n attrLabel.innerText = _this.column.caption;\r\n dragImage.classList.add('eqjs-sortable-helper');\r\n dragImage.appendChild(attrLabel);\r\n },\r\n onDragStart: function (ev) {\r\n _this.element.style.display = 'none';\r\n ev.dropEffect = DropEffect.Allow;\r\n },\r\n onDragEnd: function (ev) {\r\n if (!ev.data.finishedSuccessfully) {\r\n _this.element.style.removeProperty('display');\r\n }\r\n }\r\n });\r\n }\r\n if (this.isEditable()) {\r\n this.createFunctionMenu();\r\n this.createFormatsMenu();\r\n }\r\n this.createButtonMenu();\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderCheckbox())\r\n //start sort button\r\n .addChild('div', function (builder) { return builder\r\n .addClass(eqCssPrefix + \"-button-placeholder\", _this.cssPrefix + \"-button-placeholder\", _this.cssPrefix + \"-colelement\", _this.cssPrefix + \"-sortbutton-placeholder\")\r\n .addChildElement(_this.sortingButton); })\r\n // end sort button\r\n .addChildElement(this.renderExpressionBlock());\r\n if (this.panel.options.showColumnTitles !== false && !browserUtils.isMobileMode()) {\r\n builder\r\n .addChildElement(this.renderCaptionBlock());\r\n }\r\n builder\r\n //start buttons\r\n .addChild('div', function (builder) {\r\n builder\r\n .addClass(eqCssPrefix + \"-column-buttonsBlock\", _this.cssPrefix + \"-buttonsBlock\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n //start enable button\r\n if (_this.getButtonsToShow().indexOf(\"enable\") >= 0 && !_this.column.isReadOnly()) {\r\n builder.addChildElement(_this.renderEnabledButton());\r\n }\r\n //end enable button\r\n //start aggr func button\r\n if (_this.getButtonsToShow().indexOf(\"type\") >= 0 && _this.column.enabled) {\r\n builder.addChildElement(_this.renderColumnTypeButton());\r\n }\r\n //end aggr func button\r\n //start format selector button\r\n if (_this.getButtonsToShow().indexOf(\"format\") >= 0 && _this.column.enabled) {\r\n builder.addChildElement(_this.renderColumnFormatButton());\r\n }\r\n //end format selector button\r\n //start delete button\r\n if (_this.getButtonsToShow().indexOf(\"delete\") >= 0 && !_this.column.isReadOnly()) {\r\n builder.addChildElement(_this.renderDeleteButton());\r\n }\r\n //end delete button\r\n //start menu button\r\n if (_this.getButtonsToShow().indexOf(\"menu\") >= 0 && !_this.column.isReadOnly()) {\r\n builder.addChildElement(_this.renderMenuButton());\r\n }\r\n //end menu button\r\n });\r\n //end buttons \r\n if (!browserUtils.isMobileMode()) {\r\n //start event listeners\r\n builder\r\n .on('mouseenter', this.onMouseEnter.bind(this))\r\n .on('mouseleave', this.onMouseLeave.bind(this));\r\n //end event listeners\r\n }\r\n if (this.panel.options.accentActiveColumn || browserUtils.isMobileMode()) {\r\n builder\r\n .on('click', this.onMouseClick.bind(this)); //touchstart\r\n }\r\n if (this.panel.options.alwaysShowButtons) {\r\n this.showButtons();\r\n }\r\n return this.element;\r\n };\r\n ColumnRendererCP.prototype.onMouseClick = function (ev) {\r\n ev.stopPropagation();\r\n this.panel.toggleColumnPicked(this.column);\r\n this.adjustButtonsVisibility();\r\n if (!browserUtils.isMobileMode()) {\r\n this.element.dispatchEvent(createBrowserEvent(\"mouseenter\"));\r\n }\r\n return false;\r\n };\r\n ColumnRendererCP.prototype.fireColumnChanged = function () {\r\n this.column.fireChangedEvent();\r\n };\r\n ColumnRendererCP.prototype.refresh = function () {\r\n this.render();\r\n };\r\n ColumnRendererCP.prototype.getAttribute = function () {\r\n var model = this.panel.getContext().getModel();\r\n return model.getAttributeByIdSafe(this.column.expr.value);\r\n };\r\n ColumnRendererCP.prototype.renderCaptionBlock = function () {\r\n var _this = this;\r\n if (!this.column.caption || this.column.caption == '') {\r\n this.column.caption = this.getDefaultColumnCaption();\r\n }\r\n var builder = domel('div')\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-captionelement\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n if (this.isEditable()) {\r\n builder\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .title(_this.column.caption)\r\n .text(_this.column.caption)\r\n .on('click', function (ev) {\r\n ev.stopPropagation();\r\n var element = ev.target;\r\n var inputEl = element.parentElement.querySelector('input');\r\n if (inputEl) {\r\n element.style.display = 'none';\r\n inputEl.style.removeProperty('display');\r\n inputEl.style.minWidth = \"\" + element.clientWidth;\r\n inputEl.focus();\r\n _this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');\r\n }\r\n return false;\r\n }); } //TO DO:add localization and input field\r\n )\r\n .addChild('input', function (builder) { return builder\r\n .hide()\r\n .value(_this.column.caption)\r\n .on('blur keydown', function (ev) {\r\n var isEndEvent = false;\r\n var save = true;\r\n if (ev instanceof KeyboardEvent) {\r\n // Enter\r\n if (ev.keyCode === 13) {\r\n isEndEvent = true;\r\n //ESC\r\n }\r\n else if (ev.keyCode === 27) {\r\n isEndEvent = true;\r\n save = false;\r\n }\r\n }\r\n else if (ev instanceof FocusEvent) {\r\n isEndEvent = true;\r\n }\r\n if (isEndEvent) {\r\n var inputEl = ev.target;\r\n var aEl = inputEl.parentElement.querySelector('a');\r\n if (aEl) {\r\n aEl.style.removeProperty('display');\r\n inputEl.style.display = 'none';\r\n }\r\n if (save && _this.column.caption !== inputEl.value) {\r\n _this.column.caption = inputEl.value;\r\n _this.fireColumnChanged();\r\n }\r\n else {\r\n inputEl.value = _this.column.caption;\r\n safeFocus(aEl);\r\n }\r\n _this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);\r\n }\r\n return true;\r\n }); });\r\n }\r\n else {\r\n builder.addChild('span', function (b) {\r\n b.text(_this.column.caption)\r\n .title(_this.column.caption);\r\n });\r\n }\r\n return builder.toDOM();\r\n };\r\n ColumnRendererCP.prototype.renderSoringButton = function (sorting) {\r\n var _this = this;\r\n var sortButtonCssClass = eqCssPrefix + \"-column-sortbutton\";\r\n var sortButtonDirectionCssClass;\r\n switch (sorting) {\r\n case SortDirection.Ascending:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-asc\";\r\n break;\r\n case SortDirection.Descending:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-desc\";\r\n break;\r\n default:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-none\";\r\n break;\r\n }\r\n if (!this.isEditable()) {\r\n if (sorting === SortDirection.Ascending\r\n || sorting === SortDirection.Descending)\r\n return domel('div')\r\n .addClass(sortButtonCssClass, eqCssPrefix + \"-button\", sortButtonDirectionCssClass)\r\n .title(i18n.getText('ButtonSorting'))\r\n .toDOM();\r\n return null;\r\n }\r\n return domel('div')\r\n .addClass(sortButtonCssClass, eqCssPrefix + \"-button\", sortButtonDirectionCssClass)\r\n .data(\"btnplaceholder\", \"\")\r\n .title(i18n.getText('ButtonSorting'))\r\n .attr('tabIndex', '0')\r\n .on('click', function (ev) {\r\n ev.stopPropagation();\r\n _this.keepShowingButtons = true;\r\n var menu = _this.getUIS() ? _this.panel.sortMenu || _this.panel.moveMenu : _this.panel.moveMenu;\r\n menu.showMenu({\r\n anchor: _this.sortingButton,\r\n selectedIds: _this.column.isHidden() ? ['IsHidden'] : null,\r\n itemSelectedCallback: function (data, items) {\r\n var action;\r\n switch (data.id) {\r\n case \"IsHidden\":\r\n action = ColumnAction.Hidden;\r\n break;\r\n case \"MoveTop\":\r\n action = ColumnAction.MoveTop;\r\n break;\r\n case \"MoveDown\":\r\n action = ColumnAction.MoveDown;\r\n break;\r\n case \"MoveUp\":\r\n action = ColumnAction.MoveUp;\r\n break;\r\n case \"MoveBottom\":\r\n action = ColumnAction.MoveBottom;\r\n break;\r\n case \"None\":\r\n action = ColumnAction.SortingNone;\r\n break;\r\n case \"Ascending\":\r\n action = ColumnAction.SortingAsc;\r\n break;\r\n case \"Descending\":\r\n action = ColumnAction.SortingDesc;\r\n break;\r\n }\r\n _this.buttonMenuHandler(action, null);\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock) {\r\n _this.leaveButtonBlock();\r\n }\r\n }\r\n });\r\n })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .toDOM();\r\n };\r\n ColumnRendererCP.prototype.renderCheckbox = function () {\r\n var _this = this;\r\n if (this.panel.options.showCheckboxes && !this.column.isReadOnly()) {\r\n return domel(\"div\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .attr('tabIndex', '0')\r\n .addClass(this.cssPrefix + \"-colelement \" + this.cssPrefix + \"-column-checkbox\")\r\n .addClass(\"\" + (this.column.enabled ? 'enabled' : ''))\r\n .on('click', function () {\r\n _this.column.enabled = !_this.column.enabled;\r\n _this.column.fireChangedEvent();\r\n return false;\r\n })\r\n .on('keypress', function (evt) { if ([13, 32].includes(evt.keyCode)) {\r\n evt.target.click();\r\n } })\r\n .toDOM();\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n ColumnRendererCP.prototype.renderDeleteButton = function () {\r\n var _this = this;\r\n return domel('div')\r\n .addClass(eqCssPrefix + \"-button-placeholder\", this.cssPrefix + \"-button-placeholder\", this.cssPrefix + \"-deletebutton-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-button\", eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-delete\")\r\n .title(i18n.getText('CmdDelete'))\r\n .attr('tabIndex', '0')\r\n .on('click', function (ev) { return _this.buttonMenuHandler(ColumnAction.Delete, ev); }) //touchstart\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } }); })\r\n .toDOM();\r\n };\r\n ColumnRendererCP.prototype.renderMenuButton = function () {\r\n var _this = this;\r\n return domel('div')\r\n .addClass(eqCssPrefix + \"-button-placeholder\", this.cssPrefix + \"-button-placeholder\", this.cssPrefix + \"-menubutton-placeholder\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-button\", eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-menu\")\r\n .title(i18n.getText('ButtonMenu'))\r\n .attr('tabIndex', '0')\r\n .on('click', function (evt) { return _this.buttonMenuHandler(ColumnAction.Menu, evt); }) //touchstart \r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } }); })\r\n .toDOM();\r\n };\r\n ColumnRendererCP.prototype.getDefaultColumnCaption = function () {\r\n return this.getDefaultTitleText(this.baseAttr);\r\n };\r\n ColumnRendererCP.prototype.getDefaultTitleText = function (attr) {\r\n return this.getAttributeCaption(attr, this.panel.options.titleElementFormat);\r\n };\r\n ColumnRendererCP.prototype.getAttributeCaption = function (attr, format) {\r\n format = format || this.panel.options.attrElementFormat;\r\n var model = this.panel.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n ColumnRendererCP.prototype.getClassesToAdd = function () {\r\n var result = \"\";\r\n result += this.column.enabled ? '' : \" \" + this.cssPrefix + \"-disabled\";\r\n if (this.column.enabled) {\r\n result += this.column.isReadOnly() ? \" \" + this.cssPrefix + \"-readonly\" : '';\r\n }\r\n result += this.column.isHidden() ? \" \" + this.cssPrefix + \"-hidden\" : '';\r\n return result;\r\n };\r\n ColumnRendererCP.prototype.renderColumnTypeButton = function () {\r\n var _this = this;\r\n return (this.isEditable() && this.panel.options.allowAggrColumns !== false)\r\n ? domel('div')\r\n .addClass(eqCssPrefix + \"-button-placeholder\", this.cssPrefix + \"-button-placeholder\", this.cssPrefix + \"-typebutton-placeholder\", this.cssPrefix + \"-button-active\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-button\", eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-type\")\r\n .title(i18n.getText('ButtonToAggr'))\r\n .attr('tabIndex', '0')\r\n .on('click', function (ev) {\r\n ev.stopPropagation();\r\n _this.keepShowingButtons = true;\r\n _this.changeTypeHandler(ev);\r\n })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } }); })\r\n .toDOM()\r\n : null;\r\n };\r\n ColumnRendererCP.prototype.renderColumnFormatButton = function () {\r\n var _this = this;\r\n var formatItems = this.getFormatsMenuItems();\r\n return (this.isEditable() && this.panel.options.allowDisplayFormatChange !== false && formatItems.length > 1)\r\n ? domel('div')\r\n .addClass(eqCssPrefix + \"-button-placeholder\", this.cssPrefix + \"-button-placeholder\", this.cssPrefix + \"-formatbutton-placeholder\", this.cssPrefix + \"-button-active\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-button\", eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-format\")\r\n .title(i18n.getText('ButtonFormat'))\r\n .attr('tabIndex', '0')\r\n .on('click', function (ev) {\r\n ev.stopPropagation();\r\n _this.keepShowingButtons = true;\r\n _this.changeFormatHandler(ev);\r\n })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } }); })\r\n .toDOM()\r\n : null;\r\n };\r\n ColumnRendererCP.prototype.renderEnabledButton = function () {\r\n var _this = this;\r\n return domel('div')\r\n .addClass(eqCssPrefix + \"-button-placeholder\", this.cssPrefix + \"-button-placeholder\", this.cssPrefix + \"-enablebutton-placeholder\", this.cssPrefix + \"-button-active\")\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-button\", eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-enable\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .addClass(_this.column.enabled ? 'enabled' : '')\r\n .attr('tabIndex', '0')\r\n .on('click', function (evt) { return _this.buttonMenuHandler(ColumnAction.Enable, evt); }) //touchstart\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } }); }).toDOM();\r\n };\r\n ColumnRendererCP.prototype.isEditable = function () {\r\n return this.column.enabled && !this.column.isReadOnly();\r\n };\r\n ColumnRendererCP.prototype.changeFormatHandler = function (ev) {\r\n var _this = this;\r\n var formats = this.panel\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n var itemId = '{0:__default}';\r\n if (formats.filter(function (f) { return f.format == _this.column.displayFormat; }).length > 0) {\r\n itemId = this.column.displayFormat;\r\n }\r\n this.formatsMenu.showMenu({\r\n anchor: ev.target,\r\n selectedIds: itemId,\r\n itemSelectedCallback: function (data, items) {\r\n if (data.id != itemId) {\r\n if (data.id == '{0:__default}') {\r\n _this.column.displayFormat = '';\r\n }\r\n else {\r\n _this.column.displayFormat = data.id;\r\n }\r\n _this.column.fireChangedEvent();\r\n }\r\n return false;\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock) {\r\n _this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n };\r\n ColumnRendererCP.prototype.getUIS = function () {\r\n return this.panel\r\n .getContext().getModel()\r\n .checkAttrProperty(this.column.expr.value, \"useInSorting\");\r\n };\r\n ColumnRendererCP.prototype.onMouseEnter = function (e) {\r\n this.isMouseOverBlock = true;\r\n this.enterButtonBlock();\r\n e.stopPropagation();\r\n return false;\r\n };\r\n ColumnRendererCP.prototype.onMouseLeave = function (e) {\r\n this.isMouseOverBlock = false;\r\n this.leaveButtonBlock();\r\n e.stopPropagation();\r\n return false;\r\n };\r\n ColumnRendererCP.prototype.isColumnActive = function () {\r\n return this.element.classList.contains(\"active\");\r\n };\r\n ColumnRendererCP.prototype.hideButtons = function () {\r\n domel(this.element).data(\"show-buttons\", null);\r\n };\r\n ColumnRendererCP.prototype.showButtons = function () {\r\n domel(this.element).data(\"show-buttons\", \"\");\r\n };\r\n ColumnRendererCP.prototype.adjustButtonsVisibility = function () {\r\n if (this.panel.options.alwaysShowButtons ||\r\n ((this.panel.options.accentActiveColumn || browserUtils.isMobileMode())\r\n && this.isColumnActive())) {\r\n this.showButtons();\r\n }\r\n };\r\n ColumnRendererCP.prototype.enterButtonBlock = function () {\r\n this.showButtons();\r\n };\r\n ColumnRendererCP.prototype.leaveButtonBlock = function () {\r\n if (!this.keepShowingButtons && this.panel.options.alwaysShowButtons !== true && (!this.isColumnActive() || this.panel.options.accentActiveColumn != true)) {\r\n this.hideButtons();\r\n }\r\n };\r\n ColumnRendererCP.prototype.createFunctionMenu = function () {\r\n var items = [];\r\n var funcs = this.panel.getContext().getModel().getAggrFunctions();\r\n var funcAllowed = true;\r\n var item = null;\r\n var colDataType = this.column.getDataType();\r\n var funcCaption;\r\n for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {\r\n var func = funcs_1[_i];\r\n if (!func)\r\n continue;\r\n var toInclude = func.getAppliedTypesOrDefault().indexOf(colDataType) >= 0;\r\n if (this.column.expr.func === func.id && !toInclude) {\r\n funcAllowed = false;\r\n }\r\n if (toInclude) {\r\n funcCaption = this.panel.getContext().getModel()\r\n .getAggrFunctionCaption(func.id);\r\n item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n }\r\n if (!funcAllowed) {\r\n this.column.expr.func = items[0].id;\r\n }\r\n //Add \"Custom Expression\" menu\r\n var columnsPanel = this.panel;\r\n if (columnsPanel.areCustomExpressionsAllowed()) {\r\n item = {\r\n id: 'CustomSqlDivider',\r\n text: '---'\r\n };\r\n items.push(item);\r\n funcCaption = i18n.getText('CustomExpression');\r\n item = {\r\n id: 'CUSTOMSQL',\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n var menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-FunctionsMenu';\r\n }\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n this.functionMenu = new PopupMenu(menuOptions);\r\n };\r\n ColumnRendererCP.prototype.createFormatsMenu = function () {\r\n if (this.panel.options.allowDisplayFormatChange == false)\r\n return;\r\n var menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-FormatsMenu';\r\n }\r\n var items = this.getFormatsMenuItems();\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n showSelected: true,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n this.formatsMenu = new PopupMenu(menuOptions);\r\n };\r\n ColumnRendererCP.prototype.getFormatsMenuItems = function () {\r\n var formats = this.panel.getContext().getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n return [{ id: '{0:__default}', text: \"Default\" }]\r\n .concat(formats.map(function (format) { return ({ id: format.format, text: i18n.getText(\"DisplayFormats\", format.name) || format.name }); }));\r\n };\r\n ColumnRendererCP.prototype.getButtonsToShow = function () {\r\n return this.panel.options.buttons && Array.isArray(this.panel.options.buttons) ? this.panel.options.buttons : [\"enable\", \"delete\", \"type\", \"sorting\", \"format\"];\r\n };\r\n ColumnRendererCP.prototype.buttonMenuHandler = function (action, evt) {\r\n var _this = this;\r\n switch (action) {\r\n case ColumnAction.Delete:\r\n var curQuery = this.column.getQuery();\r\n curQuery.removeColumn(this.column, this.panel);\r\n curQuery.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);\r\n break;\r\n case ColumnAction.Enable:\r\n this.column.enabled = !this.column.enabled;\r\n this.fireColumnChanged();\r\n break;\r\n case ColumnAction.Hidden:\r\n this.column.setHidden(!this.column.isHidden());\r\n this.fireColumnChanged();\r\n break;\r\n case ColumnAction.MoveTop:\r\n this.panel.moveColumn(this.column, \"MoveTop\");\r\n break;\r\n case ColumnAction.MoveBottom:\r\n this.panel.moveColumn(this.column, \"MoveBottom\");\r\n break;\r\n case ColumnAction.MoveUp:\r\n this.panel.moveColumn(this.column, \"MoveUp\");\r\n break;\r\n case ColumnAction.MoveDown:\r\n this.panel.moveColumn(this.column, \"MoveDown\");\r\n break;\r\n case ColumnAction.SortingAsc:\r\n this.column.sorting = SortDirection.Ascending;\r\n this.column.fireChangedEvent();\r\n break;\r\n case ColumnAction.SortingDesc:\r\n this.column.sorting = SortDirection.Descending;\r\n this.column.fireChangedEvent();\r\n break;\r\n case ColumnAction.SortingNone:\r\n this.column.sorting = SortDirection.None;\r\n this.column.fireChangedEvent();\r\n break;\r\n case ColumnAction.Menu:\r\n var colMenu = this.buttonMenu;\r\n this.keepShowingButtons = true;\r\n colMenu.showMenu({\r\n anchor: evt ? evt.target : null,\r\n selectedIds: this.getButtonMenuSelectedItems(),\r\n itemSelectedCallback: function (item) {\r\n var action = item.id;\r\n switch (item.id) {\r\n case \"enable\":\r\n action = ColumnAction.Enable;\r\n break;\r\n case \"delete\":\r\n action = ColumnAction.Delete;\r\n break;\r\n case \"hidden\":\r\n action = ColumnAction.Hidden;\r\n break;\r\n case \"MoveTop\":\r\n action = ColumnAction.MoveTop;\r\n break;\r\n case \"MoveBottom\":\r\n action = ColumnAction.MoveBottom;\r\n break;\r\n case \"MoveUp\":\r\n action = ColumnAction.MoveUp;\r\n break;\r\n case \"MoveDown\":\r\n action = ColumnAction.MoveDown;\r\n break;\r\n case \"None\":\r\n action = ColumnAction.SortingNone;\r\n break;\r\n case \"Ascending\":\r\n action = ColumnAction.SortingAsc;\r\n break;\r\n case \"Descending\":\r\n action = ColumnAction.SortingAsc;\r\n break;\r\n }\r\n _this.buttonMenuHandler(action, evt);\r\n },\r\n itemFilterCallback: function (item) {\r\n var result = _this.column.enabled || item.id === \"__group\" || item.id === \"enable\" || item.id === \"delete\";\r\n return result;\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock)\r\n _this.leaveButtonBlock();\r\n }\r\n });\r\n break;\r\n default:\r\n if (!this.processFormatsButtonMenuItems(action, evt))\r\n this.processExtraButtonMenuItems(action, evt);\r\n break;\r\n }\r\n evt && evt.stopPropagation();\r\n return false;\r\n };\r\n ColumnRendererCP.prototype.createButtonMenu = function () {\r\n if (!this.buttonMenu) {\r\n var menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-ButtonMenu';\r\n }\r\n var common = [];\r\n common.push({\r\n id: \"enable\",\r\n text: i18n.getText('MenuEnable')\r\n });\r\n if (this.panel.options.allowHiddenColumns) {\r\n common.push({\r\n id: \"hidden\",\r\n text: i18n.getText('CmdHiddenColumn')\r\n });\r\n }\r\n common.push({\r\n id: \"delete\",\r\n text: i18n.getText('CmdDelete')\r\n });\r\n var items = [];\r\n items.push({\r\n id: '__group',\r\n text: ' ',\r\n items: common\r\n });\r\n var sortItems = this.panel.options.allowSorting ? __spreadArrays(this.panel.getSortMenuList(), this.panel.getMoveMenuList()) :\r\n this.panel.getMoveMenuList();\r\n items.push({\r\n id: '__group',\r\n text: i18n.getText('CmdGroupSort'),\r\n items: sortItems\r\n });\r\n var extra = this.getExtraButtonMenuItems();\r\n if (extra && Array.isArray(extra)) {\r\n items = __spreadArrays(items, extra);\r\n }\r\n var formatItems = this.getFormatsMenuItems();\r\n if (formatItems.length > 1) {\r\n items.push({\r\n id: '__group',\r\n text: i18n.getText('CmdGroupFormat'),\r\n items: formatItems\r\n });\r\n }\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true,\r\n showSelected: true\r\n };\r\n this.buttonMenu = new PopupMenu(menuOptions);\r\n }\r\n };\r\n ColumnRendererCP.prototype.processFormatsButtonMenuItems = function (action, evt) {\r\n var formats = this.panel\r\n .getContext().getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n if (action == '{0:__default}') {\r\n this.column.displayFormat = '';\r\n }\r\n else if (formats.filter(function (f) { return f.format == action; }).length > 0) {\r\n this.column.displayFormat = action;\r\n }\r\n else {\r\n return false;\r\n }\r\n this.column.fireChangedEvent();\r\n return true;\r\n };\r\n ColumnRendererCP.prototype.getButtonMenuSelectedItems = function () {\r\n var _this = this;\r\n var arrSelected = [];\r\n if (this.column.enabled) {\r\n arrSelected.push(\"enable\");\r\n }\r\n ;\r\n if (this.column.isHidden()) {\r\n arrSelected.push(\"hidden\");\r\n }\r\n ;\r\n var formats = this.panel\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n var formatId = '{0:__default}';\r\n if (formats.filter(function (f) { return f.format == _this.column.displayFormat; }).length > 0) {\r\n formatId = this.column.displayFormat;\r\n }\r\n arrSelected.push(formatId);\r\n return arrSelected;\r\n };\r\n return ColumnRendererCP;\r\n}());\r\nexport { ColumnRendererCP };\r\n//# sourceMappingURL=column_renderer_cp.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, DataType } from '@easydata/core';\r\nimport { ExprTag } from '@easyquery/core';\r\nimport { domel, eqDragManager } from '@easydata/ui';\r\nimport { SimpleColumnRendererCP } from './simple_column_renderer';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nvar CustomSqlColumnRendererCP = /** @class */ (function (_super) {\r\n __extends(CustomSqlColumnRendererCP, _super);\r\n function CustomSqlColumnRendererCP() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.dataTypeMenu = null;\r\n return _this;\r\n }\r\n CustomSqlColumnRendererCP.prototype.getClassesToAdd = function () {\r\n return this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-column-entattr\" + _super.prototype.getClassesToAdd.call(this);\r\n };\r\n CustomSqlColumnRendererCP.prototype.renderColumnTypeButton = function () {\r\n var button = _super.prototype.renderColumnTypeButton.call(this);\r\n if (button) {\r\n button.firstElementChild.classList.add('aggregated');\r\n button.firstElementChild.setAttribute('title', i18n.getText('ButtonToSimple'));\r\n }\r\n return button;\r\n };\r\n CustomSqlColumnRendererCP.prototype.renderExpressionBlock = function () {\r\n var _this = this;\r\n if (!this.column.caption || this.column.caption == '') {\r\n this.column.caption = this.getDefaultColumnCaption();\r\n }\r\n var exprBlock = domel(\"div\")\r\n .addClass(this.cssPrefix + \"-expr-block\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n //Attribute element\r\n var builder = domel('div', exprBlock)\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-attrelement\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n if (this.isEditable()) {\r\n builder\r\n .addChild('a', function (b) { return b\r\n .attr('href', 'javascript:void(0)')\r\n .title(_this.column.caption)\r\n .text(_this.column.caption)\r\n .on('touchstart click', function (ev) {\r\n ev.stopPropagation();\r\n var element = ev.target;\r\n var inputEl = element.parentElement.querySelector('input');\r\n if (inputEl) {\r\n element.style.display = 'none';\r\n inputEl.style.removeProperty('display');\r\n inputEl.style.width = \"100%\";\r\n inputEl.focus();\r\n _this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');\r\n }\r\n }); } //TO DO:add localization and input field\r\n )\r\n .addChild('input', function (b) { return b\r\n .hide()\r\n .value(_this.column.expr.sql)\r\n .on('blur keydown', function (ev) {\r\n var isEndEvent = false;\r\n var save = true;\r\n if (ev instanceof KeyboardEvent) {\r\n // Enter\r\n if (ev.keyCode === 13) {\r\n isEndEvent = true;\r\n //ESC\r\n }\r\n else if (ev.keyCode === 27) {\r\n isEndEvent = true;\r\n save = false;\r\n }\r\n }\r\n else if (ev instanceof FocusEvent) {\r\n isEndEvent = true;\r\n }\r\n if (isEndEvent) {\r\n var inputEl = ev.target;\r\n var aEl = inputEl.parentElement.querySelector('a');\r\n if (aEl) {\r\n aEl.style.removeProperty('display');\r\n inputEl.style.display = 'none';\r\n }\r\n if (save && _this.column.expr.sql !== inputEl.value) {\r\n _this.column.expr.sql = inputEl.value;\r\n _this.fireColumnChanged();\r\n }\r\n else {\r\n inputEl.value = _this.column.expr.sql;\r\n }\r\n _this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);\r\n }\r\n }); });\r\n }\r\n else {\r\n builder\r\n .addChild('span', function (b) {\r\n b.text(_this.column.caption)\r\n .title(_this.column.caption);\r\n });\r\n }\r\n // Colon element\r\n builder = domel('div', exprBlock)\r\n .addClass(this.cssPrefix + \"-colelement\")\r\n .addChild('span', function (b) {\r\n b.text(':')\r\n .title(':');\r\n });\r\n // DataType element\r\n builder = domel('div', exprBlock)\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-attrelement\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n if (this.isEditable()) {\r\n this.createDataTypeMenu();\r\n builder\r\n .addChild('a', function (dataTypeLink) { return dataTypeLink\r\n .attr('href', 'javascript:void(0)')\r\n .title(DataType[_this.column.expr.dataType])\r\n .text(DataType[_this.column.expr.dataType])\r\n .on('touchstart click', function (ev) {\r\n ev.stopPropagation();\r\n _this.dataTypeMenu.showMenu({\r\n anchor: dataTypeLink.toDOM(),\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n _this.column.expr.dataType = data.id;\r\n _this.fireColumnChanged();\r\n }\r\n });\r\n }); });\r\n }\r\n else {\r\n this.column.expr.dataType;\r\n builder\r\n .addChild('span', function (b) {\r\n b.text(DataType[_this.column.expr.dataType])\r\n .title(DataType[_this.column.expr.dataType]);\r\n });\r\n }\r\n return exprBlock;\r\n };\r\n CustomSqlColumnRendererCP.prototype.changeTypeToSimple = function () {\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged();\r\n };\r\n CustomSqlColumnRendererCP.prototype.getDefaultColumnCaption = function () {\r\n return \"Custom SQL Column\";\r\n };\r\n CustomSqlColumnRendererCP.prototype.getDefaultValue = function () {\r\n return this.column.expr.sql;\r\n };\r\n CustomSqlColumnRendererCP.prototype.getUIS = function () {\r\n return true;\r\n };\r\n CustomSqlColumnRendererCP.prototype.changeTypeHandler = function (ev) {\r\n this.changeTypeToSimple();\r\n };\r\n CustomSqlColumnRendererCP.prototype.processExtraButtonMenuItems = function (action, evt) {\r\n this.changeTypeToSimple();\r\n return true;\r\n };\r\n CustomSqlColumnRendererCP.prototype.createFunctionMenu = function () {\r\n // Nothing TO DO\r\n };\r\n CustomSqlColumnRendererCP.prototype.getExtraButtonMenuItems = function () {\r\n return [{\r\n id: '__group',\r\n text: i18n.getText('ColTypeGroup'),\r\n items: [{\r\n id: 'type',\r\n text: i18n.getText('ColTypeSimple')\r\n }]\r\n }];\r\n };\r\n CustomSqlColumnRendererCP.prototype.createDataTypeMenu = function () {\r\n var items = [];\r\n for (var typeItem in DataType) {\r\n if (!isNaN(Number(typeItem))) {\r\n var item = {\r\n id: typeItem,\r\n text: DataType[typeItem]\r\n };\r\n items.push(item);\r\n }\r\n }\r\n var menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-DataTypeMenu';\r\n }\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true\r\n };\r\n this.dataTypeMenu = new PopupMenu(menuOptions);\r\n };\r\n return CustomSqlColumnRendererCP;\r\n}(SimpleColumnRendererCP));\r\nexport { CustomSqlColumnRendererCP };\r\n//# sourceMappingURL=customsql_column_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { ExprTag } from '@easyquery/core';\r\nimport { SimpleColumnRendererCB } from './simple_column_renderer';\r\nvar AggrFuncColumnRendererCB = /** @class */ (function (_super) {\r\n __extends(AggrFuncColumnRendererCB, _super);\r\n function AggrFuncColumnRendererCB() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AggrFuncColumnRendererCB.prototype.getClassesToAdd = function () {\r\n return _super.prototype.getClassesToAdd.call(this) + \" \" + this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-column-aggr\";\r\n };\r\n AggrFuncColumnRendererCB.prototype.getAttribute = function () {\r\n return this.bar\r\n .getContext()\r\n .getModel()\r\n .getAttributeByIdSafe(this.column.expr.args[0].value);\r\n };\r\n AggrFuncColumnRendererCB.prototype.getDefaultCaption = function () {\r\n return this.getDefaultTitleText(this.baseAttr) + ' '\r\n + this.bar.getContext().getModel().getAggrFunctionCaption(this.column.expr.func);\r\n };\r\n AggrFuncColumnRendererCB.prototype.renderColumnTypeButton = function () {\r\n var button = _super.prototype.renderColumnTypeButton.call(this);\r\n if (button) {\r\n button.classList.add('aggregated');\r\n button.title = i18n.getText('ButtonToSimple');\r\n }\r\n return button;\r\n };\r\n AggrFuncColumnRendererCB.prototype.baseExpressionItemSelectedCallback = function (data, item) {\r\n var attrid = data.id;\r\n //this.column.expr.args[0].id = attrid;\r\n this.column.expr.args[0].setValue(attrid, true);\r\n this.column.caption = '';\r\n this.fireColumnChanged();\r\n };\r\n AggrFuncColumnRendererCB.prototype.changeTypeToSimple = function () {\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged();\r\n };\r\n AggrFuncColumnRendererCB.prototype.changeColumnTypeHandler = function (ev) {\r\n this.changeTypeToSimple();\r\n };\r\n return AggrFuncColumnRendererCB;\r\n}(SimpleColumnRendererCB));\r\nexport { AggrFuncColumnRendererCB };\r\n//# sourceMappingURL=aggrfunc_column_renderer.js.map","import { i18n } from '@easydata/core';\r\nimport { QueryChangeAction, SortDirection } from '@easyquery/core';\r\nimport { eqDragManager, DropEffect, createBrowserEvent, domel } from '@easydata/ui';\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nvar ColumnRendererCB = /** @class */ (function () {\r\n function ColumnRendererCB(panel, column, slot) {\r\n this.functionMenu = null;\r\n this.formatsMenu = null;\r\n this.isMouseOverBlock = false;\r\n this.keepShowingButtons = false;\r\n this.tapedTwice = false;\r\n this.bar = panel;\r\n this.column = column;\r\n this.element = slot;\r\n }\r\n Object.defineProperty(ColumnRendererCB.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-cb';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnRendererCB.prototype.render = function () {\r\n var _this = this;\r\n this.baseAttr = this.getAttribute();\r\n var builder = domel('div');\r\n builder.data('id', this.column.id);\r\n if (this.element) {\r\n //to remove all event listeners\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n this.element = builder.toDOM();\r\n if (this.bar.options.allowDragDrop) {\r\n eqDragManager.registerDraggableItem({\r\n element: this.element,\r\n scope: \"entityAttrSort\",\r\n beforeDragStart: function () { return _this.element.dispatchEvent(createBrowserEvent('mouseleave')); },\r\n onDragStart: function (ev) {\r\n _this.hideButtons();\r\n _this.element.style.display = 'none';\r\n ev.dropEffect = DropEffect.Allow;\r\n },\r\n onDragEnd: function (ev) {\r\n if (!ev.data.finishedSuccessfully) {\r\n _this.element.removeAttribute('style');\r\n }\r\n },\r\n data: { column: this.column }\r\n });\r\n }\r\n if (!this.column.isReadOnly()) {\r\n this.createFunctionMenu();\r\n this.createFormatsMenu();\r\n }\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderCaptionBlock())\r\n .addChildElement(this.renderSortingImage());\r\n if (!browserUtils.isMobileMode()) {\r\n builder\r\n .addChildElement(this.renderButtonsBlock());\r\n }\r\n //start event listeners\r\n builder\r\n .on('mouseenter', this.onMouseEnter.bind(this))\r\n .on('mouseleave', this.onMouseLeave.bind(this));\r\n //end event listeners\r\n if (this.bar.options.accentActiveColumn || browserUtils.isMobileMode()) {\r\n builder\r\n .on('touchstart click', this.onMouseClick.bind(this));\r\n }\r\n return this.element;\r\n };\r\n ColumnRendererCB.prototype.fireColumnChanged = function () {\r\n this.column.fireChangedEvent();\r\n };\r\n ColumnRendererCB.prototype.refresh = function () {\r\n this.render();\r\n };\r\n ColumnRendererCB.prototype.getAttribute = function () {\r\n var model = this.bar.getContext().getModel();\r\n return model.getAttributeByIdSafe(this.column.expr.value);\r\n };\r\n ColumnRendererCB.prototype.isEditable = function () {\r\n return this.column.enabled && !this.column.isReadOnly();\r\n };\r\n ColumnRendererCB.prototype.renderButtonsBlock = function () {\r\n return domel('div', this.element)\r\n .addClass(eqCssPrefix + \"-column-buttonsBlock\", this.cssPrefix + \"-buttonsBlock\")\r\n .addChildElement(this.renderSortingButton())\r\n .addChildElement(this.renderColumnTypeButton())\r\n .addChildElement(this.renderColumnFormatButton())\r\n .addChildElement(this.renderDeleteButton())\r\n .toDOM();\r\n };\r\n ColumnRendererCB.prototype.renderCaptionBlock = function () {\r\n var _this = this;\r\n if (!this.column.caption || this.column.caption == '') {\r\n this.column.caption = this.getDefaultCaption();\r\n }\r\n var model = this.column.getModel();\r\n var caption = this.baseAttr !== model.nullAttribute\r\n ? this.column.caption\r\n : model.getAttributeText(model.nullAttribute, '{attr}');\r\n if (!this.isEditable()) {\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-captionelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (b) { return b\r\n .title(_this.column.caption)\r\n .text(caption)\r\n .attr('tabIndex', '0'); })\r\n .toDOM();\r\n }\r\n var tapHandler = function (ev) {\r\n if (!_this.tapedTwice) {\r\n _this.tapedTwice = true;\r\n setTimeout(function () { _this.tapedTwice = false; }, 300);\r\n }\r\n };\r\n var isFocused = false;\r\n domel(this.element).on('touchstart dblclick', function (ev) {\r\n if (ev instanceof TouchEvent && !_this.tapedTwice) {\r\n tapHandler(ev);\r\n return true;\r\n }\r\n ev.stopPropagation();\r\n isFocused = _this.element.querySelector('a') == document.activeElement;\r\n var inputEl = _this.element.querySelector(\".\" + _this.cssPrefix + \"-captionelement input\");\r\n var aEl = _this.element.querySelector(\".\" + _this.cssPrefix + \"-captionelement a\");\r\n if (inputEl) {\r\n inputEl.style.width = _this.element.clientWidth + \"px\";\r\n aEl.style.display = 'none';\r\n inputEl.style.removeProperty('display');\r\n inputEl.focus();\r\n _this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');\r\n }\r\n return false;\r\n }); //TO DO:add localization and input field);\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-captionelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .title(_this.column.caption)\r\n .text(caption)\r\n .on('keydown', function (e) {\r\n var evt = e;\r\n var isCtrlEnter = (evt.ctrlKey || evt.metaKey) && (evt.keyCode == 13 || evt.keyCode == 10);\r\n if (isCtrlEnter && _this.isColumnActive()) {\r\n var clickEvent = document.createEvent('MouseEvents');\r\n clickEvent.initEvent('dblclick', true, true);\r\n _this.element.dispatchEvent(clickEvent);\r\n evt.stopPropagation();\r\n return false;\r\n }\r\n return true;\r\n }); })\r\n .addChild('input', function (builder) { return builder\r\n .hide()\r\n .value(_this.column.caption)\r\n .on('blur keydown', function (ev) {\r\n var isEndEvent = false;\r\n var save = true;\r\n if (ev instanceof KeyboardEvent) {\r\n // Enter\r\n if (ev.keyCode === 13) {\r\n isEndEvent = true;\r\n //ESC\r\n }\r\n else if (ev.keyCode === 27) {\r\n isEndEvent = true;\r\n save = false;\r\n }\r\n }\r\n else if (ev instanceof FocusEvent) {\r\n isEndEvent = true;\r\n }\r\n if (isEndEvent) {\r\n var inputEl = ev.target;\r\n var aEl = inputEl.parentElement.querySelector('a');\r\n if (aEl) {\r\n aEl.style.removeProperty('display');\r\n inputEl.style.display = 'none';\r\n }\r\n if (save && _this.column.caption !== inputEl.value) {\r\n _this.column.caption = inputEl.value;\r\n _this.fireColumnChanged();\r\n }\r\n else {\r\n inputEl.value = _this.column.caption;\r\n }\r\n _this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);\r\n if (isFocused) {\r\n _this.element.querySelector('a').focus();\r\n }\r\n }\r\n }); })\r\n .toDOM();\r\n };\r\n ColumnRendererCB.prototype.renderSortingImage = function () {\r\n var _this = this;\r\n var sortButtonCssClass = eqCssPrefix + \"-column-sortbutton\";\r\n var sortButtonDirectionCssClass = sortButtonCssClass;\r\n switch (this.column.sorting) {\r\n case SortDirection.Ascending:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-asc\";\r\n break;\r\n case SortDirection.Descending:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-desc\";\r\n break;\r\n }\r\n if (this.column.sorting == SortDirection.None) {\r\n return null;\r\n }\r\n else {\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-sortimage-placeholder\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-img-sorting\", sortButtonDirectionCssClass)\r\n .title(i18n.getText('ButtonSorting')); })\r\n .toDOM();\r\n }\r\n };\r\n ColumnRendererCB.prototype.buttonSortingClickHandler = function (ev, anchor) {\r\n var _this = this;\r\n ev.stopPropagation();\r\n this.keepShowingButtons = true;\r\n var menu = this.getUIS() ? this.bar.sortMenu || this.bar.moveMenu : this.bar.moveMenu;\r\n menu.showMenu({\r\n anchor: anchor,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n var strToSortDirection = function (str) {\r\n if (str == 'None') {\r\n return SortDirection.None;\r\n }\r\n else if (str == \"Ascending\") {\r\n return SortDirection.Ascending;\r\n }\r\n else if (str == \"Descending\") {\r\n return SortDirection.Descending;\r\n }\r\n };\r\n if (data.id == 'None' || data.id == \"Ascending\" || data.id == \"Descending\") {\r\n var query = _this.bar.getQuery();\r\n _this.column.sorting = strToSortDirection(data.id);\r\n _this.column.sortIndex = query.getColumnSortIndex(_this.column);\r\n _this.fireColumnChanged();\r\n }\r\n else {\r\n _this.bar.moveColumn(_this.column, data.id);\r\n }\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock) {\r\n _this.leaveButtonBlock();\r\n }\r\n }\r\n });\r\n return false;\r\n };\r\n ColumnRendererCB.prototype.renderSortingButton = function () {\r\n var _this = this;\r\n if (!this.isEditable()) {\r\n return null;\r\n }\r\n var builder = domel('div')\r\n .addClass(eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-sortbutton\", eqCssPrefix + \"-column-sortbutton-none\")\r\n .title(i18n.getText('ButtonSorting'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', function (ev) { return _this.buttonSortingClickHandler(ev, builder.toDOM()); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } });\r\n return builder.toDOM();\r\n };\r\n ColumnRendererCB.prototype.buttonDeleteClickHandler = function (ev) {\r\n ev.stopPropagation();\r\n var query = this.bar.getQuery();\r\n query.removeColumn(this.column, this.bar);\r\n query.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);\r\n return false;\r\n };\r\n ColumnRendererCB.prototype.renderDeleteButton = function () {\r\n var _this = this;\r\n if (this.column.isReadOnly()) {\r\n return null;\r\n }\r\n return domel('div')\r\n .addClass(eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-delete\")\r\n .title(i18n.getText('CmdDelete'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', function (ev) { return _this.buttonDeleteClickHandler(ev); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .toDOM();\r\n };\r\n ColumnRendererCB.prototype.getDefaultCaption = function () {\r\n return this.getDefaultTitleText(this.baseAttr);\r\n };\r\n ColumnRendererCB.prototype.getDefaultTitleText = function (attr) {\r\n var format = this.bar.options.titleElementFormat || this.bar.options.attrElementFormat;\r\n var model = this.bar.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n ColumnRendererCB.prototype.getClassesToAdd = function () {\r\n var result = \"\";\r\n result += this.column.enabled ? '' : \" \" + this.cssPrefix + \"-disabled\";\r\n if (this.column.enabled) {\r\n result += this.column.isReadOnly() ? \" \" + this.cssPrefix + \"-readonly\" : '';\r\n }\r\n return result;\r\n };\r\n ColumnRendererCB.prototype.buttonTypeClickHandler = function (ev) {\r\n ev.stopPropagation();\r\n this.keepShowingButtons = true;\r\n this.changeColumnTypeHandler(ev);\r\n return false;\r\n };\r\n ColumnRendererCB.prototype.buttonFormatClickHandler = function (ev) {\r\n ev.stopPropagation();\r\n this.keepShowingButtons = true;\r\n this.changeFormatHandler(ev);\r\n return false;\r\n };\r\n ColumnRendererCB.prototype.formatButtonIsShown = function () {\r\n return this.bar.options.allowDisplayFormatChange !== false &&\r\n this.bar\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType()).length > 0;\r\n };\r\n ColumnRendererCB.prototype.changeFormatHandler = function (ev) {\r\n var _this = this;\r\n var formats = this.bar\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n var itemId = '{0:__default}';\r\n if (formats.filter(function (f) { return f.format == _this.column.displayFormat; }).length > 0) {\r\n itemId = this.column.displayFormat;\r\n }\r\n this.formatsMenu.showMenu({\r\n anchor: ev.target,\r\n selectedIds: itemId,\r\n itemSelectedCallback: function (data, items) {\r\n if (data.id != itemId) {\r\n if (data.id == '{0:__default}') {\r\n _this.column.displayFormat = '';\r\n }\r\n else {\r\n _this.column.displayFormat = data.id;\r\n }\r\n _this.column.fireChangedEvent();\r\n }\r\n return false;\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n if (!_this.isMouseOverBlock) {\r\n _this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n };\r\n ColumnRendererCB.prototype.renderColumnTypeButton = function () {\r\n var _this = this;\r\n if (!this.isEditable() || this.bar.options.allowAggrColumns === false) {\r\n return null;\r\n }\r\n return domel('div')\r\n .addClass(eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-type\")\r\n .title(i18n.getText('ButtonToAggr'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', function (ev) { return _this.buttonTypeClickHandler(ev); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .toDOM();\r\n };\r\n ColumnRendererCB.prototype.renderColumnFormatButton = function () {\r\n var _this = this;\r\n if (!this.isEditable() || !this.formatButtonIsShown()) {\r\n return null;\r\n }\r\n return domel('div')\r\n .addClass(eqCssPrefix + \"-column-button\", eqCssPrefix + \"-column-button-format\")\r\n .title(i18n.getText('ButtonFormat'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', function (ev) { return _this.buttonFormatClickHandler(ev); })\r\n .on('keypress', function (evt) { if (evt.keyCode == 13) {\r\n evt.target.click();\r\n } })\r\n .toDOM();\r\n };\r\n ColumnRendererCB.prototype.getUIS = function () {\r\n return this.bar\r\n .getContext().getModel()\r\n .checkAttrProperty(this.column.expr.value, \"useInSorting\");\r\n };\r\n ColumnRendererCB.prototype.onMouseClick = function (ev) {\r\n this.bar.toggleColumnPicked(this.column);\r\n this.adjustButtonsVisibility();\r\n };\r\n ColumnRendererCB.prototype.onMouseEnter = function (e) {\r\n if (browserUtils.isMobileMode())\r\n return;\r\n this.isMouseOverBlock = true;\r\n this.enterButtonBlock();\r\n e.stopPropagation();\r\n return false;\r\n };\r\n ColumnRendererCB.prototype.onMouseLeave = function (e) {\r\n if (browserUtils.isMobileMode())\r\n return;\r\n this.isMouseOverBlock = false;\r\n this.leaveButtonBlock();\r\n e.stopPropagation();\r\n return false;\r\n };\r\n ColumnRendererCB.prototype.isColumnActive = function () {\r\n return this.element.classList.contains(\"active\");\r\n };\r\n ColumnRendererCB.prototype.hideButtons = function () {\r\n if (browserUtils.isMobileMode()) {\r\n if (this.onHideButtonsMobile) {\r\n this.onHideButtonsMobile();\r\n }\r\n }\r\n else {\r\n domel(this.element).data(\"show-buttons\", null);\r\n }\r\n };\r\n ColumnRendererCB.prototype.showButtons = function () {\r\n if (browserUtils.isMobileMode()) {\r\n if (this.onShowButtonsMobile) {\r\n this.onShowButtonsMobile();\r\n }\r\n }\r\n else {\r\n domel(this.element).data(\"show-buttons\", \"\");\r\n }\r\n };\r\n ColumnRendererCB.prototype.adjustButtonsVisibility = function () {\r\n if (this.bar.options.alwaysShowButtons\r\n || ((this.bar.options.accentActiveColumn || browserUtils.isMobileMode())\r\n && this.isColumnActive())) {\r\n this.showButtons();\r\n }\r\n else {\r\n this.hideButtons();\r\n }\r\n };\r\n ColumnRendererCB.prototype.enterButtonBlock = function () {\r\n this.showButtons();\r\n };\r\n ColumnRendererCB.prototype.leaveButtonBlock = function () {\r\n if (this.bar.options.alwaysShowButtons != true && (!this.isColumnActive() || this.bar.options.accentActiveColumn != true)) {\r\n this.hideButtons();\r\n }\r\n };\r\n ColumnRendererCB.prototype.createFunctionMenu = function () {\r\n var items = [];\r\n var funcs = this.bar.getContext().getModel().getAggrFunctions();\r\n var funcAllowed = true;\r\n var item = null;\r\n var colDataType = this.column.getDataType();\r\n var funcCaption;\r\n for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {\r\n var func = funcs_1[_i];\r\n if (!func)\r\n continue;\r\n var toInclude = func.getAppliedTypesOrDefault().indexOf(colDataType) >= 0;\r\n if (this.column.expr.func === func.id && !toInclude) {\r\n funcAllowed = false;\r\n }\r\n if (toInclude) {\r\n funcCaption = this.bar.getContext().getModel()\r\n .getAggrFunctionCaption(func.id);\r\n item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n }\r\n if (!funcAllowed) {\r\n this.column.expr.func = items[0].id;\r\n }\r\n //Add \"Custom Expression\" menu\r\n var columnsPanel = this.bar;\r\n if (columnsPanel.areCustomExpressionsAllowed()) {\r\n item = {\r\n id: 'CustomSqlDivider',\r\n text: '---'\r\n };\r\n items.push(item);\r\n funcCaption = i18n.getText('CustomExpression');\r\n item = {\r\n id: 'CUSTOMSQL',\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n var menuId = this.element.id;\r\n if (menuId) {\r\n menuId += '-FunctionsMenu';\r\n }\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n this.functionMenu = new PopupMenu(menuOptions);\r\n };\r\n ColumnRendererCB.prototype.createFormatsMenu = function () {\r\n if (this.bar.options.allowDisplayFormatChange == false)\r\n return;\r\n var menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-FormatsMenu';\r\n }\r\n var items = this.getFormatsMenuItems();\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n showSelected: true,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n this.formatsMenu = new PopupMenu(menuOptions);\r\n };\r\n ColumnRendererCB.prototype.getFormatsMenuItems = function () {\r\n var formats = this.bar.getContext().getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n return [{ id: '{0:__default}', text: \"Default\" }]\r\n .concat(formats.map(function (format) { return ({ id: format.format, text: i18n.getText(\"DisplayFormats\", format.name) || format.name }); }));\r\n };\r\n return ColumnRendererCB;\r\n}());\r\nexport { ColumnRendererCB };\r\n//# sourceMappingURL=column_renderer_cb.js.map","import { domel } from '@easydata/ui';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nvar TextRenderer = /** @class */ (function () {\r\n function TextRenderer(panel, text, slot) {\r\n this.panel = panel;\r\n this.text = text;\r\n this.element = slot || domel('div').toDOM();\r\n }\r\n Object.defineProperty(TextRenderer.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TextRenderer.prototype.refresh = function () {\r\n this.render();\r\n };\r\n TextRenderer.prototype.render = function () {\r\n var _this = this;\r\n domel(this.element)\r\n .html('')\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('span', function (builder) { return builder\r\n .text(_this.text)\r\n .title(_this.text); })\r\n .toDOM();\r\n return this.element;\r\n };\r\n TextRenderer.prototype.getClassesToAdd = function () {\r\n return this.cssPrefix + \"-condelement\";\r\n };\r\n return TextRenderer;\r\n}());\r\nexport { TextRenderer };\r\n//# sourceMappingURL=text_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { eqconsts, equtils } from '@easyquery/core';\r\nimport { createBrowserEvent, domel } from '@easydata/ui';\r\nimport { ConditionRenderer, SimpleConditionRenderer } from './condition_renderer';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { dropdown } from '../../../utils/dropdown';\r\nvar ConditionGroupRenderer = /** @class */ (function (_super) {\r\n __extends(ConditionGroupRenderer, _super);\r\n function ConditionGroupRenderer(panel, condition, slot) {\r\n var _this = _super.call(this, panel, condition, slot) || this;\r\n _this.isRoot = !condition.getParent();\r\n return _this;\r\n }\r\n ConditionGroupRenderer.prototype.getClassesToAdd = function () {\r\n var result = this.cssPrefix + \"-group\";\r\n if (this.isRoot) {\r\n result += \" \" + this.cssPrefix + \"-group-root\";\r\n }\r\n return result;\r\n };\r\n ConditionGroupRenderer.prototype.coreRender = function (autoAppear) {\r\n domel(this.element)\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderGroupRow())\r\n .addChildElement(this.renderConditions(autoAppear))\r\n .data('id', this.condition.id)\r\n .data('group', '');\r\n };\r\n ConditionGroupRenderer.prototype.renderGroupRow = function () {\r\n if (this.isRoot && !this.panel.options.showRootRow) {\r\n return null;\r\n }\r\n else {\r\n return new ConditionGroupRowRenderer(this.panel, this.condition).render();\r\n }\r\n };\r\n ConditionGroupRenderer.prototype.renderConditions = function (autoAppear) {\r\n var _this = this;\r\n var builder = domel('div');\r\n builder\r\n .addClass(this.cssPrefix + \"-conditions\")\r\n .addClass(\"\" + browserUtils.getMobileCssClass())\r\n .data('conditions', '');\r\n if (this.isRoot) {\r\n builder.addClass(this.cssPrefix + \"-conditions-root\");\r\n }\r\n this.condition.getConditions().forEach(function (condition, index, array) {\r\n var renderer = _this.panel.getConditionRenderer(condition);\r\n if (renderer) {\r\n builder.addChildElement(renderer.render(autoAppear && index == array.length - 1));\r\n }\r\n });\r\n return builder.toDOM();\r\n };\r\n return ConditionGroupRenderer;\r\n}(ConditionRenderer));\r\nexport { ConditionGroupRenderer };\r\nvar ConditionGroupRowRenderer = /** @class */ (function (_super) {\r\n __extends(ConditionGroupRowRenderer, _super);\r\n function ConditionGroupRowRenderer(panel, condition, slot) {\r\n var _this = _super.call(this, panel, condition, slot) || this;\r\n _this.isRoot = !_this.condition.getParent();\r\n return _this;\r\n }\r\n ConditionGroupRowRenderer.prototype.getButtonsToShow = function () {\r\n return this.panel.options.buttons && this.panel.options.buttons.group && Array.isArray(this.panel.options.buttons.group) ? this.panel.options.buttons.group : [\"addCondition\", \"addGroup\", \"enable\", \"delete\"];\r\n };\r\n ConditionGroupRowRenderer.prototype.getClassesToAdd = function () {\r\n var result;\r\n if (this.isRoot) {\r\n result = this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-group \" + this.cssPrefix + \"-row-group-root\";\r\n }\r\n else {\r\n result = this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-group\";\r\n var level = this.condition.getLevel();\r\n if (level > 0)\r\n result += \" \" + this.cssPrefix + \"-level-\" + level;\r\n result += this.condition.enabled ? '' : \" \" + this.cssPrefix + \"-disabled\";\r\n if (this.condition.enabled) {\r\n result += this.condition.isReadOnly() ? \" \" + this.cssPrefix + \"-readonly\" : '';\r\n }\r\n }\r\n return result;\r\n };\r\n ConditionGroupRowRenderer.prototype.coreRender = function (autoAppear) {\r\n var _this = this;\r\n var builder = domel(this.element)\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .data('group-row', '')\r\n .addChildElement(this.renderCheckbox())\r\n .addChildElement(this.renderConjunction());\r\n var level = this.condition.getLevel();\r\n if (level > 0)\r\n builder.addClass(this.cssPrefix + \"-level-\" + level);\r\n this.buildGroupElements(builder, this.getGroupTitle());\r\n if (this.panel.options.accentActiveCondition) {\r\n builder.on('click', function (ev) {\r\n _this.panel.toggleConditionPicked(_this.condition);\r\n _this.adjustButtonsVisibility();\r\n if (!browserUtils.isMobileMode()) {\r\n builder.toDOM().dispatchEvent(createBrowserEvent(\"mouseenter\"));\r\n }\r\n });\r\n }\r\n builder\r\n .addChildElement(this.renderButtonsBlock());\r\n if (!browserUtils.isMobileMode()) {\r\n builder\r\n .on('mouseenter', function (event) {\r\n _this.isMouseOverBlock = true;\r\n _this.enterButtonBlock();\r\n event.stopPropagation();\r\n return false;\r\n })\r\n .on('mouseleave', function (event) {\r\n _this.isMouseOverBlock = false;\r\n if (!_this.keepShowingButtons && domel(_this.buttonsBlock).isVisible()) {\r\n _this.leaveButtonBlock();\r\n }\r\n event.stopPropagation();\r\n return false;\r\n });\r\n }\r\n };\r\n ConditionGroupRowRenderer.prototype.getGroupTitle = function () {\r\n var result;\r\n if (this.isRoot && !browserUtils.isMobileMode()) {\r\n result = i18n.getText('RootConditionGroupTitle');\r\n if (!result) {\r\n //to support old text key\r\n result = i18n.getText('RootPredicateTitle');\r\n }\r\n }\r\n else {\r\n result = i18n.getText('ConditionGroupTitle');\r\n if (!result) {\r\n //to support old text key\r\n result = i18n.getText('PredicateTitle');\r\n }\r\n }\r\n return result;\r\n };\r\n ConditionGroupRowRenderer.prototype.buildGroupElements = function (builder, groupTitle) {\r\n var _this = this;\r\n var pos = groupTitle.indexOf('{lt}');\r\n if (pos < 0) {\r\n //invalid format\r\n builder.addText(i18n.getText('ErrIncorrectGroupTitleFormat'));\r\n builder.addClass(this.cssPrefix + \"-error\");\r\n }\r\n else {\r\n if (pos > 0) {\r\n builder.addChild('span', function (b) {\r\n b.addClass(_this.cssPrefix + \"-grelement\")\r\n .addText(groupTitle.substring(0, pos));\r\n });\r\n }\r\n var linkTypeStr = equtils.linkTypeToStr(this.condition.linkType);\r\n var curType_1 = dataUtils.findItemById(eqconsts.predicateLinkTypeList, linkTypeStr);\r\n if (!curType_1) {\r\n curType_1 = eqconsts.predicateLinkTypeList[0];\r\n }\r\n if (this.isEditable()) {\r\n dropdown(builder.toDOM())\r\n .onGetMenu(function () { return _this.getLinkTypeMenu(); })\r\n .onItemSelected(function (id) {\r\n _this.condition.linkType = equtils.strToLinkType(id);\r\n _this.condition.fireChangedEvent();\r\n })\r\n .addText(i18n.getText(curType_1.key))\r\n .title(i18n.getText(curType_1.key))\r\n .addClass(this.cssPrefix + \"-grelement\");\r\n }\r\n else {\r\n builder.addChild('span', function (b) {\r\n b.text(i18n.getText(curType_1.key))\r\n .title(i18n.getText(curType_1.key))\r\n .addClass(_this.cssPrefix + \"-grelement\");\r\n });\r\n }\r\n builder.addChild('span', function (b) {\r\n b.addClass(_this.cssPrefix + \"-grelement\")\r\n .addText(groupTitle.substring(pos + 4));\r\n });\r\n }\r\n };\r\n ConditionGroupRowRenderer.prototype.getConditionMenu = function () {\r\n return this.panel.getConditionGroupMenu(this.condition.getParent() == null);\r\n };\r\n ConditionGroupRowRenderer.prototype.getLinkTypeMenu = function () {\r\n return this.panel.getLinkTypeMenu();\r\n };\r\n ConditionGroupRowRenderer.prototype.renderConjunction = function () {\r\n return this.isRoot ? null : _super.prototype.renderConjunction.call(this);\r\n };\r\n ConditionGroupRowRenderer.prototype.renderCheckbox = function () {\r\n return this.isRoot ? null : _super.prototype.renderCheckbox.call(this);\r\n };\r\n ConditionGroupRowRenderer.prototype.leaveButtonBlock = function () {\r\n if (!this.panel.options.alwaysShowButtonsInGroups\r\n && (!this.isConditionActive() || !this.panel.options.accentActiveCondition)) {\r\n this.hideButtons();\r\n }\r\n };\r\n ConditionGroupRowRenderer.prototype.adjustButtonsVisibility = function () {\r\n if (this.panel.options.alwaysShowButtonsInGroups\r\n || (this.panel.options.accentActiveCondition && this.isConditionActive())) {\r\n this.showButtons();\r\n }\r\n };\r\n return ConditionGroupRowRenderer;\r\n}(SimpleConditionRenderer));\r\nexport { ConditionGroupRowRenderer };\r\n//# sourceMappingURL=condition_group_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { DomElementBuilder } from '@easydata/ui';\r\nvar DomDropDownElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomDropDownElementBuilder, _super);\r\n function DomDropDownElementBuilder(parent) {\r\n var _this = _super.call(this, 'a', parent) || this;\r\n _this.attr('href', 'javascript:void(0)');\r\n _this.on('click', function (ev) {\r\n ev.preventDefault();\r\n _this.appear();\r\n return false;\r\n });\r\n return _this;\r\n }\r\n DomDropDownElementBuilder.prototype.onGetMenu = function (onGetMenu) {\r\n this._onGetMenu = onGetMenu;\r\n return this;\r\n };\r\n DomDropDownElementBuilder.prototype.onItemSelected = function (onItemSelected) {\r\n this._onItemSelected = onItemSelected;\r\n return this;\r\n };\r\n DomDropDownElementBuilder.prototype.appear = function () {\r\n var _this = this;\r\n var menu = this._onGetMenu ? this._onGetMenu() : null;\r\n if (menu) {\r\n menu.showMenu({\r\n anchor: this.element,\r\n itemSelectedCallback: function (item) {\r\n if (_this._onItemSelected) {\r\n _this._onItemSelected(item.id);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n };\r\n return DomDropDownElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomDropDownElementBuilder };\r\nexport function dropdown(parent) {\r\n return new DomDropDownElementBuilder(parent);\r\n}\r\n//# sourceMappingURL=dropdown.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { DataKind } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nvar InputExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(InputExpressionRenderer, _super);\r\n function InputExpressionRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n InputExpressionRenderer.prototype.renderEditor = function () {\r\n var _this = this;\r\n this.inputBuilder = domel(\"input\")\r\n .hide()\r\n .addClass(this.cssPrefix + \"-ve-editbox\")\r\n .type('text')\r\n .on('blur', function (ev) {\r\n if (_this.inputBuilder.isVisible() && !_this.dontProcessBlur) {\r\n var validationResult = _this.validateInput(_this.inputElement.value);\r\n if (validationResult.success) {\r\n _this.setValue(_this.inputElement.value);\r\n _this.closeEditor();\r\n }\r\n else {\r\n _this.dontProcessBlur = true;\r\n _this.inputElement.focus();\r\n setTimeout(function () { _this.dontProcessBlur = false; }, 200);\r\n _this.showValidationError(validationResult.message, ev.target);\r\n }\r\n ev.stopPropagation();\r\n return false;\r\n }\r\n })\r\n .on('keydown', function (ev) {\r\n if (ev.keyCode === 27) { // ESC is pressed\r\n _this.closeEditor();\r\n ev.stopPropagation();\r\n return false;\r\n }\r\n else if (ev.keyCode === 13) { // Enter is pressed\r\n if (_this.inputBuilder.isVisible()) {\r\n _this.dontProcessBlur = true;\r\n var validationResult = _this.validateInput(_this.inputElement.value);\r\n if (validationResult.success) {\r\n _this.setValue(_this.inputElement.value);\r\n _this.closeEditor();\r\n _this.dontProcessBlur = false;\r\n }\r\n else {\r\n _this.inputElement.focus();\r\n _this.showValidationError(validationResult.message, ev.target);\r\n setTimeout(function () { _this.dontProcessBlur = false; }, 200);\r\n }\r\n ev.stopPropagation();\r\n return false;\r\n }\r\n }\r\n });\r\n this.inputElement = this.inputBuilder.toDOM();\r\n domel(this.element)\r\n .addChildElement(this.inputElement);\r\n };\r\n InputExpressionRenderer.prototype.showEditor = function () {\r\n var MIN_WIDTH = 200;\r\n if (!browserUtils.isMobileMode()) {\r\n var left = this.element.offsetLeft;\r\n var width = this.element.offsetWidth > MIN_WIDTH ? this.element.offsetWidth : MIN_WIDTH;\r\n var maxWidth = this.element.parentElement.clientWidth - left - 55;\r\n this.inputBuilder\r\n .removeStyle('left')\r\n .removeStyle('right');\r\n if (maxWidth < MIN_WIDTH) {\r\n this.inputBuilder\r\n .setStyle('right', '55px')\r\n .setStyle('width', MIN_WIDTH + \"px\");\r\n }\r\n else if (maxWidth < width) {\r\n this.inputBuilder\r\n .setStyle('left', left + \"px\")\r\n .setStyle('width', maxWidth + \"px\");\r\n }\r\n else {\r\n this.inputBuilder\r\n .setStyle('left', left + \"px\")\r\n .setStyle('width', width + \"px\");\r\n }\r\n }\r\n domel(this.labelElement).hide();\r\n this.inputBuilder\r\n .value(this.getValue())\r\n .show();\r\n this.inputElement.focus();\r\n };\r\n InputExpressionRenderer.prototype.closeEditor = function () {\r\n this.inputBuilder.hide();\r\n domel(this.labelElement).show();\r\n this.labelElement.focus();\r\n };\r\n InputExpressionRenderer.prototype.validateInput = function (inputValue) {\r\n this.inputBuilder.removeClass(\"eqjs-invalid\");\r\n var result = {\r\n success: true,\r\n value: inputValue\r\n };\r\n if (this.expression.kind == DataKind.List) {\r\n this.validateListInput(inputValue, result);\r\n }\r\n else {\r\n this.validateScalarInput(inputValue, result);\r\n }\r\n return result;\r\n };\r\n InputExpressionRenderer.prototype.validateListInput = function (inputValue, result) {\r\n var inputValues = inputValue.split(/\\s*,\\s*/);\r\n for (var _i = 0, inputValues_1 = inputValues; _i < inputValues_1.length; _i++) {\r\n var val = inputValues_1[_i];\r\n this.validateScalarInput(val, result);\r\n if (!result.success) {\r\n return;\r\n }\r\n }\r\n };\r\n InputExpressionRenderer.prototype.validateScalarInput = function (inputValue, result) {\r\n if (!inputValue)\r\n return;\r\n if (dataUtils.isNumericType(this.expression.dataType)) {\r\n var parsedVal = +inputValue;\r\n if (isNaN(parsedVal)) {\r\n result.success = false;\r\n result.message = '\"' + inputValue + '\" ' + i18n.getText('ErrNotNumber');\r\n }\r\n if (dataUtils.isIntType(this.expression.dataType) && parsedVal != parseInt(inputValue, 10)) {\r\n result.success = false;\r\n result.message = '\"' + inputValue + '\" ' + i18n.getText('ErrIncorrectInteger');\r\n }\r\n }\r\n };\r\n InputExpressionRenderer.prototype.showValidationError = function (message, target) {\r\n _super.prototype.showValidationError.call(this, message, target);\r\n this.inputBuilder.addClass(\"eqjs-invalid\");\r\n };\r\n InputExpressionRenderer.prototype.isEditable = function () {\r\n return _super.prototype.isEditable.call(this)\r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value);\r\n };\r\n return InputExpressionRenderer;\r\n}(ExpressionRenderer));\r\nexport { InputExpressionRenderer };\r\n//# sourceMappingURL=input_expression_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { QueryChangeAction } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { DropDownRenderer } from '../dropdown_renderer';\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nvar AddRowRenderer = /** @class */ (function (_super) {\r\n __extends(AddRowRenderer, _super);\r\n function AddRowRenderer(panel, entitiesMenu, slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.panel = panel;\r\n _this.menu = entitiesMenu;\r\n return _this;\r\n }\r\n Object.defineProperty(AddRowRenderer.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AddRowRenderer.prototype.getLabelText = function () {\r\n return i18n.getText('CmdClickToAddCondition');\r\n };\r\n AddRowRenderer.prototype.getClassesToAdd = function () {\r\n return eqCssPrefix + \"-addrow \" + this.cssPrefix + \"-addrow\";\r\n };\r\n AddRowRenderer.prototype.isEditable = function () {\r\n return _super.prototype.isEditable.call(this)\r\n && ((this.panel.options.editableParts & QPEditablePart.Addition) === QPEditablePart.Addition);\r\n };\r\n AddRowRenderer.prototype.renderLabelElement = function () {\r\n var _this = this;\r\n var displayedText = this.getLabelText();\r\n if (this.isEditable()) {\r\n this.labelElement = domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .title(displayedText)\r\n .text(displayedText)\r\n .on('click', function (ev) {\r\n ev.preventDefault();\r\n _this.showEditor();\r\n return false;\r\n })\r\n .toDOM();\r\n }\r\n else {\r\n this.labelElement = domel('div')\r\n .toDOM();\r\n }\r\n return this.labelElement;\r\n };\r\n AddRowRenderer.prototype.renderEditor = function () {\r\n // do nothing - the menu is alredy created\r\n };\r\n AddRowRenderer.prototype.itemSelected = function (id) {\r\n var query = this.panel.getQuery();\r\n var descr = {\r\n parent: query.getRootCondition(),\r\n attributeId: id\r\n };\r\n var cond = query.addSimpleCondition(descr);\r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n };\r\n AddRowRenderer.prototype.getMenu = function () {\r\n return this.menu;\r\n };\r\n return AddRowRenderer;\r\n}(DropDownRenderer));\r\nexport { AddRowRenderer };\r\n//# sourceMappingURL=addrow_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { DataKind, ConditionPart } from '@easyquery/core';\r\nimport { DropDownRenderer } from '../dropdown_renderer';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nvar OperatorRenderer = /** @class */ (function (_super) {\r\n __extends(OperatorRenderer, _super);\r\n function OperatorRenderer(panel, condition, text, slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.panel = panel;\r\n _this.condition = condition;\r\n _this.displayedText = text;\r\n return _this;\r\n }\r\n Object.defineProperty(OperatorRenderer.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-qp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n OperatorRenderer.prototype.renderEditor = function () {\r\n var _this = this;\r\n //create menu\r\n var model = this.panel.getContext().getModel();\r\n var query = this.panel.getQuery();\r\n var items = [];\r\n var isRelatedToSubQuery = function (operator) {\r\n return operator.defaultOperand.kind == DataKind.Query;\r\n };\r\n var attrId = (this.condition && this.condition.expressions && this.condition.expressions[0]) ? this.condition.expressions[0].value : null;\r\n var attr = attrId ? model.getAttributeById(this.condition.expressions[0].value) : null;\r\n if (attr && attr.operators) {\r\n attr.operators.forEach(function (operId) {\r\n var operator = model.getOperatorById(operId);\r\n var related = isRelatedToSubQuery(operator);\r\n if (!query.isEx() && related) {\r\n return;\r\n }\r\n if (operator && !(_this.panel.options.isSubQuery && related)) {\r\n items.push({\r\n id: operId,\r\n text: i18n.getText('Operators', operId, 'caption') || operator.caption\r\n });\r\n }\r\n });\r\n }\r\n var options = {\r\n items: items,\r\n adjustHeight: this.panel.options.adjustEntitiesMenuHeight,\r\n id: dataUtils.generateId('opmn'),\r\n domWriteItemsId: this.panel.options.domWriteItemsId\r\n };\r\n dataUtils.assign(options, this.panel.options.menuOptions);\r\n this.menu = new PopupMenu(options);\r\n };\r\n OperatorRenderer.prototype.getLabelText = function () {\r\n return this.displayedText;\r\n };\r\n OperatorRenderer.prototype.getEmptyText = function () {\r\n return this.panel.options.emptyTextOperator || i18n.getText('MsgEmptyOperator');\r\n };\r\n OperatorRenderer.prototype.getClassesToAdd = function () {\r\n return this.cssPrefix + \"-condelement \" + this.cssPrefix + \"-operelement\";\r\n };\r\n OperatorRenderer.prototype.isEditable = function () {\r\n return this.condition.enabled && !this.condition.isReadOnly()\r\n && ((this.panel.options.editableParts & QPEditablePart.Operator) === QPEditablePart.Operator);\r\n };\r\n OperatorRenderer.prototype.itemSelected = function (id) {\r\n this.condition.setOperatorId(id);\r\n this.condition.fireChangedEvent(ConditionPart.Operator);\r\n };\r\n OperatorRenderer.prototype.getMenu = function () {\r\n return this.menu;\r\n };\r\n return OperatorRenderer;\r\n}(DropDownRenderer));\r\nexport { OperatorRenderer };\r\n//# sourceMappingURL=operator_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, DataType, utils as dataUtils } from '@easydata/core';\r\nimport { DefaultDateTimePicker } from '@easydata/ui';\r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nvar DateTimeExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(DateTimeExpressionRenderer, _super);\r\n function DateTimeExpressionRenderer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.dtp = null;\r\n _this.internalDateFormat = 'yyyy-MM-dd';\r\n _this.internalTimeFormat = 'HH:mm';\r\n return _this;\r\n }\r\n DateTimeExpressionRenderer.prototype.renderEditor = function () {\r\n };\r\n DateTimeExpressionRenderer.prototype.showEditor = function () {\r\n var _this = this;\r\n if (this.dtp)\r\n return;\r\n var pickerOptions = {\r\n yearRange: this.panel.options.yearRange,\r\n showCalendar: this.expression.dataType !== DataType.Time,\r\n showTimePicker: this.expression.dataType !== DataType.Date,\r\n oneClickDateSelection: this.panel.options.oneClickDateSelection,\r\n showDateTimeInput: this.panel.options.showDateTimeInput,\r\n onApply: function (dateTime) {\r\n var value = _this.convertToInternalFormat(dateTime);\r\n _this.setValue(value);\r\n _this.dtp = null;\r\n setTimeout(function () { return _this.labelElement.focus(); }, 100);\r\n },\r\n onCancel: function () {\r\n _this.labelElement.innerText = _this.getLabelText();\r\n _this.dtp = null;\r\n setTimeout(function () { return _this.labelElement.focus(); }, 100);\r\n },\r\n onDateTimeChanged: function (dateTime) {\r\n var value = i18n.dateTimeToStr(dateTime, _this.expression.dataType);\r\n _this.labelElement.innerText = value;\r\n }\r\n };\r\n this.dtp = this.panel.options.dateTimePickerResolver\r\n ? this.panel.options.dateTimePickerResolver(pickerOptions)\r\n : new DefaultDateTimePicker(pickerOptions);\r\n var model = this.expression.getModel();\r\n var value = this.expression.value;\r\n var dateTime = new Date();\r\n if (this.expression.dataType != DataType.Time && model.isDateMacro(value)) {\r\n dateTime = model.getDateMacroValue(value);\r\n }\r\n else if (this.expression.dataType == DataType.Time && model.isTimeMacro(value)) {\r\n dateTime = model.getTimeMacroValue(value);\r\n }\r\n else {\r\n dateTime = this.convertFromInternalFormat(value);\r\n }\r\n this.dtp.setDateTime(dateTime);\r\n this.dtp.show(this.element);\r\n };\r\n DateTimeExpressionRenderer.prototype.closeEditor = function () {\r\n this.dtp.cancel();\r\n this.dtp = null;\r\n };\r\n DateTimeExpressionRenderer.prototype.getLabelText = function () {\r\n if (!this.expression.value)\r\n return this.getEmptyText();\r\n var defValue = '${{Today}}';\r\n var value = this.expression.value;\r\n var model = this.expression.getModel();\r\n if (!model) {\r\n throw new Error('DataModel is not defined for ' + this.expression.value);\r\n }\r\n if (model.isDateMacro(value) || model.isTimeMacro(value)) {\r\n var macroText = value.substring(3, value.length - 2);\r\n var res = i18n.getText(macroText);\r\n return res ? res : defValue;\r\n }\r\n var result = i18n.dateTimeToStr(this.convertFromInternalFormat(value), this.expression.dataType);\r\n return result;\r\n };\r\n DateTimeExpressionRenderer.prototype.isEditable = function () {\r\n return _super.prototype.isEditable.call(this)\r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value);\r\n };\r\n DateTimeExpressionRenderer.prototype.convertFromInternalFormat = function (dateTime) {\r\n return dataUtils.strToDateTime(dateTime, this.internalDateFormat + ' ' + this.internalTimeFormat);\r\n };\r\n DateTimeExpressionRenderer.prototype.convertToInternalFormat = function (dateTime) {\r\n return dataUtils.dateTimeToStr(dateTime, this.internalDateFormat + ' ' + this.internalTimeFormat);\r\n };\r\n return DateTimeExpressionRenderer;\r\n}(ExpressionRenderer));\r\nexport { DateTimeExpressionRenderer };\r\n//# sourceMappingURL=datetime_expression_render.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { SortDirection, Expression, DataKind, ExprTag, Query, QueryChangeAction, ConditionPart } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nvar SubQueryExpressionRenderer = /** @class */ (function (_super) {\r\n __extends(SubQueryExpressionRenderer, _super);\r\n function SubQueryExpressionRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SubQueryExpressionRenderer.prototype.renderEditor = function () {\r\n this.dialogBlockBody = domel('div')\r\n .addClass(\"kfrm-form\")\r\n //.setStyle('height', '100%')\r\n .toDOM();\r\n this.createEntitiesMenu();\r\n this.renderColumnBlock();\r\n this.renderQueryPanelBlock();\r\n };\r\n SubQueryExpressionRenderer.prototype.isEditable = function () {\r\n return _super.prototype.isEditable.call(this)\r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value);\r\n };\r\n SubQueryExpressionRenderer.prototype.setValue = function (value, silent) {\r\n if (value instanceof Query) {\r\n this.expression.subQuery = value;\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.Value);\r\n }\r\n }\r\n };\r\n SubQueryExpressionRenderer.prototype.createEntitiesMenu = function () {\r\n var model = this.getContext().getModel();\r\n var exprType = this.expression.dataType;\r\n this.colEntitiesList = model.getEntitiesTreeWithFilter(function (ent, attr) {\r\n if (attr) {\r\n return attr.useInConditions && attr.dataType === exprType;\r\n }\r\n else {\r\n //if it's entity\r\n return ent.attributes && ent.useInConditions;\r\n }\r\n });\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.element.getAttribute('data-id');\r\n if (menuId) {\r\n menuId += '-SubColumnMenu';\r\n }\r\n var options = {\r\n items: this.colEntitiesList,\r\n adjustHeight: this.panel.options.adjustEntitiesMenuHeight,\r\n id: menuId,\r\n isSubQuery: true,\r\n domWriteItemsId: this.panel.options.domWriteItemsId\r\n };\r\n dataUtils.assign(options, this.panel.options.menuOptions);\r\n this.colEntitiesMenu = new PopupMenu(options);\r\n };\r\n SubQueryExpressionRenderer.prototype.renderColumnBlock = function () {\r\n var _this = this;\r\n this.columnBlock = domel('div', this.dialogBlockBody)\r\n .addClass(\"kfrm-field\")\r\n .addChild('label', function (b) { return b\r\n .addText(i18n.getText('SubQueryColumnTitle')); })\r\n .addChild('a', function (b) { return _this.columnElement = b\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', function (e) {\r\n _this.colEntitiesMenu.showMenu({\r\n anchor: _this.columnElement,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n var attrId = data.id;\r\n _this.setResultAttributeId(attrId);\r\n return false;\r\n }\r\n });\r\n })\r\n .toDOM(); })\r\n .toDOM();\r\n };\r\n SubQueryExpressionRenderer.prototype.getEmptyText = function () {\r\n return this.panel.options.emptyTextValue || i18n.getText('MsgSubQueryValue');\r\n };\r\n SubQueryExpressionRenderer.prototype.renderQueryPanelBlock = function () {\r\n var parentEl = domel('div', this.dialogBlockBody)\r\n .addClass(\"kfrm-field\")\r\n .addChild('label', function (b) { return b\r\n .addText(i18n.getText('SubQueryQueryPanelCaption')); })\r\n .toDOM();\r\n this.queryPanelBlock =\r\n domel('div', parentEl)\r\n .toDOM();\r\n var qpId = this.element.getAttribute('data-id');\r\n if (qpId) {\r\n this.queryPanelBlock.id = qpId + '-SubQueryPanel';\r\n }\r\n };\r\n SubQueryExpressionRenderer.prototype.setResultAttributeId = function (attrId) {\r\n var attrObj = this.getContext().getModel().getAttributeById(attrId);\r\n if (attrObj) {\r\n var subQuery = this.getSubQuery();\r\n var cols = subQuery.getColumns();\r\n var column = void 0;\r\n if (cols.length > 0) {\r\n column = cols[0];\r\n column.expr.setValue(attrId);\r\n column.expr.dataType = attrObj.dataType;\r\n column.fireChangedEvent();\r\n }\r\n else {\r\n column = subQuery.createColumn();\r\n column.sorting = SortDirection.None;\r\n column.sortIndex = -1;\r\n var expr = new Expression(column);\r\n expr.setValue(attrId);\r\n expr.tag = ExprTag.EntityAttribute;\r\n expr.kind = DataKind.Attribute;\r\n expr.dataType = attrObj.dataType;\r\n column.expr = expr;\r\n cols.push(column);\r\n subQuery.fireColumnsChangedEvent(QueryChangeAction.Add, column);\r\n }\r\n this.columnElement.innerText = this.getAttributeText(attrObj);\r\n }\r\n };\r\n SubQueryExpressionRenderer.prototype.getSubQuery = function () {\r\n return this.queryPanel.getQuery();\r\n };\r\n SubQueryExpressionRenderer.prototype.getAttributeText = function (attribute) {\r\n if (!attribute)\r\n return i18n.getText('SubQueryEmptyColumn');\r\n var attrText = i18n.getText('Attributes', attribute.id);\r\n if (!attrText)\r\n attrText = attribute.caption;\r\n var format = this.panel.options.attrElementFormat;\r\n if (!format)\r\n return attrText;\r\n var result = format.replace(new RegExp(\"{attr}\", 'g'), attrText);\r\n var entityPath = this.getContext()\r\n .getModel()\r\n .getFullEntityPathByAttr(attribute.id, '.');\r\n return result.replace(new RegExp(\"{entity}\", 'g'), entityPath);\r\n };\r\n SubQueryExpressionRenderer.prototype.showEditor = function () {\r\n var _this = this;\r\n var parentPanel = this.panel;\r\n var context = this.getContext();\r\n this.queryPanelBlock.innerHTML = \"\";\r\n var subQuery = context.createQuery();\r\n if (this.expression.subQuery) {\r\n subQuery.loadFromData(this.expression.subQuery.toJSONData());\r\n }\r\n var subOptions = dataUtils.assign({}, parentPanel.options);\r\n subOptions.isSubQuery = true;\r\n subOptions.showAddRow = true;\r\n subOptions.menuContainer = document.body;\r\n subOptions.menuOptions.isSubQuery = true;\r\n subOptions.entitiesListFilter = function (listItems, listOptions) {\r\n if (parentPanel.options.entitiesListFilter) {\r\n var subQueryPanelListOptions = listOptions || {};\r\n subQueryPanelListOptions.isSubQuery = true;\r\n parentPanel.options.entitiesListFilter(listItems, subQueryPanelListOptions);\r\n }\r\n };\r\n this.queryPanel = new QueryPanel(this.queryPanelBlock, subQuery);\r\n this.queryPanel.init(this.panel.getContext(), subOptions);\r\n var attrId = null;\r\n var cols = subQuery.getColumns();\r\n ;\r\n if (cols.length == 0) {\r\n var condition = this.expression.getParent();\r\n if (condition.expressions.length > 0) {\r\n var attrExpr = condition.expressions[0];\r\n attrId = (attrExpr.tag == ExprTag.EntityAttribute\r\n || attrExpr.kind == DataKind.Attribute) ? attrExpr.value : null;\r\n }\r\n }\r\n else {\r\n attrId = cols[0].expr.value;\r\n }\r\n if (attrId) {\r\n this.setResultAttributeId(attrId);\r\n }\r\n else {\r\n this.columnElement.innerText = i18n.getText(\"SubQueryEmptyColumn\");\r\n }\r\n this.queryPanel.refresh();\r\n var rootCondEl = this.queryPanelBlock.querySelector('.eqjs-qp-conditions-root');\r\n if (rootCondEl) {\r\n rootCondEl.style.minHeight = '100px';\r\n }\r\n var dialogService = this.panel\r\n .getContext()\r\n .getServices()\r\n .getDialogService();\r\n dialogService.open({\r\n title: i18n.getText('SubQueryDialogTitle'),\r\n body: this.dialogBlockBody,\r\n width: this.panel.options.subQueryDialogWidth,\r\n //height: this.panel.options.subQueryDialogHeight,\r\n closable: true,\r\n cancelable: true,\r\n onSubmit: function () {\r\n var value = _this.queryPanel.getQuery();\r\n // validate subquery\r\n if (value.tryValidate({ checkExpressions: true })) {\r\n _this.setValue(value);\r\n return true;\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n SubQueryExpressionRenderer.prototype.closeEditor = function () {\r\n };\r\n return SubQueryExpressionRenderer;\r\n}(ExpressionRenderer));\r\nexport { SubQueryExpressionRenderer };\r\n//# sourceMappingURL=subquery_expression_renderer.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { Widget, WidgetGroup, QueryChangeAction } from '@easyquery/core';\r\nimport { slideUp, slideDown, domel } from '@easydata/ui';\r\nimport { QueryPanel } from './query_panel';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nvar FilterBar = /** @class */ (function (_super) {\r\n __extends(FilterBar, _super);\r\n function FilterBar(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n applyOnClose: true,\r\n showApplyButton: true,\r\n showClearButton: true,\r\n queryPanel: {\r\n showAddRow: true,\r\n showCheckboxes: true,\r\n alwaysShowButtonsInGroups: true\r\n }\r\n };\r\n _this.headerClickListener = _this.headerClickHandler.bind(_this);\r\n _this.group = WidgetGroup.Query;\r\n return _this;\r\n }\r\n FilterBar.prototype.getWidgetType = function () {\r\n return 'filterBar';\r\n };\r\n Object.defineProperty(FilterBar.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-fb';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FilterBar.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n this.destroyCore();\r\n this.qpElement = domel('div')\r\n .addClass(this.cssPrefix + \"-querypanel\")\r\n .toDOM();\r\n this.queryPanel = new QueryPanel(this.qpElement);\r\n this.queryPanel.init(context, this.options.queryPanel || {});\r\n this.attachQueryObserver();\r\n };\r\n FilterBar.prototype.setOptions = function (options) {\r\n this.options = dataUtils.assignDeep(this.options, options);\r\n };\r\n FilterBar.prototype.applyBtnClick = function (ev) {\r\n this.applyFilter();\r\n };\r\n FilterBar.prototype.clearBtnClick = function (ev) {\r\n this.clearFilter();\r\n };\r\n FilterBar.prototype.showQueryPanel = function (callback) {\r\n var _this = this;\r\n slideDown(this.qpBlock, 200, function () {\r\n _this.updateHeader();\r\n if (callback)\r\n callback();\r\n });\r\n };\r\n FilterBar.prototype.hideQueryPanel = function () {\r\n var _this = this;\r\n slideUp(this.qpBlock, 200, function () {\r\n _this.updateHeader();\r\n if (_this.options.applyOnClose) {\r\n _this.applyFilter();\r\n }\r\n });\r\n };\r\n FilterBar.prototype.headerClickHandler = function (ev) {\r\n ev.preventDefault();\r\n if (domel(this.qpBlock).isVisible()) { // close query panel\r\n this.hideQueryPanel();\r\n }\r\n else { //open query panel\r\n this.showQueryPanel();\r\n }\r\n };\r\n FilterBar.prototype.updateHeader = function () {\r\n if (!this.headerTextElement)\r\n return;\r\n var text = '';\r\n var query = this.getContext().getQuery();\r\n if (query) {\r\n text = query.getConditionsText();\r\n }\r\n if (text == '') {\r\n text = i18n.getText('StrNoFilterDefined');\r\n }\r\n domel(this.headerTextElement)\r\n .text(text)\r\n .attr('title', text);\r\n if (!query || query.isEmptyConditions()) { //empty query, don't show query panel and arrow, show link in header\r\n domel(this.headerTextElement).hide();\r\n domel(this.headerLinkElement).show();\r\n if (!domel(this.qpBlock).isVisible()) {\r\n domel(this.headerArrowBlock).hide();\r\n this.headerElement.style.cursor = '';\r\n this.headerElement.removeEventListener('click', this.headerClickListener);\r\n }\r\n }\r\n else {\r\n this.headerElement.style.cursor = 'pointer';\r\n this.headerElement.removeEventListener('click', this.headerClickListener);\r\n this.headerElement.addEventListener('click', this.headerClickListener);\r\n domel(this.headerTextElement).show();\r\n domel(this.headerLinkElement).hide();\r\n domel(this.headerArrowBlock).show();\r\n }\r\n if (domel(this.qpBlock).isVisible()) { // close query panel\r\n this.headerArrowElement.classList.add(this.cssPrefix + \"-header-arrowUp\");\r\n }\r\n else {\r\n this.headerArrowElement.classList.remove(this.cssPrefix + \"-header-arrowUp\");\r\n }\r\n this.textResize();\r\n };\r\n FilterBar.prototype.render = function () {\r\n var _this = this;\r\n domel(this.slot)\r\n .addClass(this.cssPrefix + \"-container\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (builder) { return _this.headerElement = builder\r\n .addClass(_this.cssPrefix + \"-header\")\r\n .addChild('div', function (builder) { return _this.headerIconElement = builder\r\n .addClass(_this.cssPrefix + \"-header-icon\")\r\n .toDOM(); })\r\n .addChild('div', function (builder) { return _this.headerTextBlock = builder\r\n .addClass(_this.cssPrefix + \"-header-textblock\")\r\n .addChild('div', function (builder) { return _this.headerTextElement = builder\r\n .addClass(_this.cssPrefix + \"-header-text\")\r\n .toDOM(); })\r\n .addChild('div', function (builder) { return _this.headerLinkElement = builder\r\n .addClass(_this.cssPrefix + \"-header-text \" + _this.cssPrefix + \"-header-link\")\r\n .text(i18n.getText('StrNoFilterClickToAdd'))\r\n .hide()\r\n .on('click', function () {\r\n _this.queryPanel.showEntitiesMenu({\r\n anchor: _this.headerLinkElement,\r\n selectedIds: null,\r\n itemSelectedCallback: function (item, items) {\r\n var attrid = item.id;\r\n _this.showQueryPanel(function () {\r\n var query = _this.getContext().getQuery();\r\n var descr = {\r\n parent: query.getRootCondition(),\r\n attributeId: attrid\r\n };\r\n var cond = query.addSimpleCondition(descr);\r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n });\r\n }\r\n });\r\n })\r\n .toDOM(); })\r\n .toDOM(); })\r\n .addChild('div', function (builder) { return _this.headerArrowBlock = builder\r\n .addClass(_this.cssPrefix + \"-header-arrowblock\")\r\n .addChild('div', function (builder) { return _this.headerArrowElement = builder\r\n .addClass(_this.cssPrefix + \"-header-arrow\")\r\n .toDOM(); })\r\n .toDOM(); })\r\n .toDOM(); })\r\n .addChild('div', function (builder) { return _this.qpBlock = builder\r\n .addClass(_this.cssPrefix + \"-querypanelblock\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .hide()\r\n .addChildElement(_this.qpElement)\r\n .toDOM(); });\r\n if (this.options.showApplyButton || this.options.showClearButton) {\r\n this.buttonsBlock = domel('div', this.qpBlock)\r\n .addClass(this.cssPrefix + \"-buttonsblock\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n }\r\n if (this.options.showApplyButton) {\r\n domel('a', this.buttonsBlock)\r\n .attr('href', 'javascript:void(0)')\r\n .addClass(this.cssPrefix + \"-button \" + this.cssPrefix + \"-button-apply\")\r\n .text(i18n.getText('ButtonApply'))\r\n .on('click', this.applyBtnClick.bind(this));\r\n }\r\n if (this.options.showClearButton) {\r\n domel('a', this.buttonsBlock)\r\n .attr('href', 'javascript:void(0)')\r\n .addClass(this.cssPrefix + \"-button \" + this.cssPrefix + \"-button-clear\")\r\n .text(i18n.getText('CmdClear'))\r\n .on('click', this.clearBtnClick.bind(this));\r\n }\r\n window.addEventListener('resize', function () {\r\n _this.textResize();\r\n });\r\n this.updateHeader();\r\n this.queryPanel.refresh();\r\n setTimeout(function () { return _this.textResize(); }, 500);\r\n };\r\n FilterBar.prototype.refreshCore = function () {\r\n this.clear();\r\n this.render();\r\n };\r\n FilterBar.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n FilterBar.prototype.applyFilter = function () {\r\n if (this.options.applyFilterCallback) {\r\n this.options.applyFilterCallback();\r\n }\r\n };\r\n FilterBar.prototype.clearFilter = function () {\r\n var query = this.getContext().getQuery();\r\n if (query) {\r\n query.clearConditions();\r\n query.fireConditionsChangedEvent(QueryChangeAction.All);\r\n }\r\n };\r\n FilterBar.prototype.textResize = function () {\r\n this.headerTextBlock.style.width = (this.slot.clientWidth - this.headerIconElement.offsetWidth\r\n - (domel(this.headerArrowBlock).isVisible() ? this.headerArrowBlock.offsetWidth : 0)) + \"px\";\r\n };\r\n FilterBar.prototype.destroyCore = function () {\r\n if (this.queryPanel)\r\n this.queryPanel.destroy();\r\n this.detachQueryObserver();\r\n this.slot.innerHTML = '';\r\n };\r\n FilterBar.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getContext().getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n _this.updateHeader();\r\n });\r\n };\r\n FilterBar.prototype.detachQueryObserver = function () {\r\n var query = this.getContext().getQuery();\r\n if (query)\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n };\r\n return FilterBar;\r\n}(Widget));\r\nexport { FilterBar };\r\n//# sourceMappingURL=filter_bar.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\n/**\r\n * Base class for GRID.\r\n */\r\nvar Grid = /** @class */ (function (_super) {\r\n __extends(Grid, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function Grid(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n useCustomLocaleSettings: false\r\n };\r\n _this.slot = slot;\r\n _this.group = WidgetGroup.Result;\r\n return _this;\r\n }\r\n Grid.prototype.getWidgetType = function () {\r\n return 'grid';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n Grid.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n if (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n Grid.prototype.refreshCore = function () {\r\n this.clear();\r\n if (!this.context.resultTable) {\r\n return;\r\n }\r\n this.render();\r\n };\r\n /**\r\n * Renders widget\r\n */\r\n Grid.prototype.render = function () {\r\n if (this.options.beforeTableRendering) {\r\n this.options.beforeTableRendering(this.context.resultTable);\r\n }\r\n this.applyDisplayFormats();\r\n };\r\n Grid.prototype.applyDisplayFormats = function () {\r\n };\r\n /**\r\n * Clears GRID.\r\n */\r\n Grid.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n return Grid;\r\n}(Widget));\r\nexport { Grid };\r\n//# sourceMappingURL=grid.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\n/**\r\n * The widget responsed for rendering statement.\r\n * It's usually added for demonstration purposes only.\r\n */\r\nvar StatementPanel = /** @class */ (function (_super) {\r\n __extends(StatementPanel, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function StatementPanel(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.panel = slot;\r\n _this.group = WidgetGroup.Statement;\r\n if (_this.panel.tagName !== \"TEXTAREA\") {\r\n _this.panel.innerHTML = '
';\r\n _this.panel = _this.panel.querySelector('div');\r\n }\r\n return _this;\r\n }\r\n StatementPanel.prototype.getWidgetType = function () {\r\n return 'statementPanel';\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n StatementPanel.prototype.refreshCore = function () {\r\n this.clear();\r\n this.render();\r\n };\r\n StatementPanel.prototype.render = function () {\r\n this.panel.textContent = this.context.resultStatement ? this.context.resultStatement : \"\";\r\n var statementText = this.panel.innerHTML.replace(/\\r\\n/g, \"
\").replace(/ /g, \"  \");\r\n this.panel.innerHTML = statementText;\r\n };\r\n StatementPanel.prototype.destroyCore = function () {\r\n this.clear();\r\n };\r\n StatementPanel.prototype.clear = function () {\r\n this.panel.innerHTML = \"\";\r\n };\r\n return StatementPanel;\r\n}(Widget));\r\nexport { StatementPanel };\r\n//# sourceMappingURL=statement_panel.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\n/**\r\n * The widget responsed for rendering process bar.\r\n */\r\nvar ProcessWidget = /** @class */ (function (_super) {\r\n __extends(ProcessWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function ProcessWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.element = slot;\r\n _this.element.style.display = 'none';\r\n _this.group = WidgetGroup.All;\r\n return _this;\r\n }\r\n ProcessWidget.prototype.getWidgetType = function () {\r\n return 'processIndicator';\r\n };\r\n /**\r\n * On process start implementation\r\n */\r\n ProcessWidget.prototype.onProcessStartCore = function () {\r\n this.element.style.display = '';\r\n };\r\n /**\r\n * On process end implementation\r\n */\r\n ProcessWidget.prototype.onProcessEndCore = function () {\r\n this.element.style.display = 'none';\r\n };\r\n return ProcessWidget;\r\n}(Widget));\r\nexport { ProcessWidget };\r\n//# sourceMappingURL=process_widget.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ResultFacet } from './result_facet';\r\nimport { ChartJsWidget } from '../widgets/charts/chart_widget_chartjs';\r\nimport { GoogleChartWidget } from '../widgets/charts/chart_widget_google';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nvar ChartFacet = /** @class */ (function (_super) {\r\n __extends(ChartFacet, _super);\r\n function ChartFacet() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.title = i18n.getText('Facets', 'Chart', 'FacetTitle');\r\n _this.dialogTitle = i18n.getText('Facets', 'Chart', 'DlgTitle');\r\n return _this;\r\n }\r\n ChartFacet.prototype.init = function (slot) {\r\n _super.prototype.init.call(this, slot);\r\n if (GoogleChartWidget.hasGoogleCharts()) {\r\n this.chart = new GoogleChartWidget(this.contentDiv);\r\n }\r\n else {\r\n this.chart = new ChartJsWidget(this.contentDiv);\r\n }\r\n var supportedChartTypes = this.container.options\r\n ? this.container.options.supportedChartTypes\r\n : null;\r\n this.chart.init(this.getContext(), {\r\n legend: {\r\n show: false\r\n },\r\n showOnPaging: true,\r\n hideSettings: true,\r\n supportedChartTypes: supportedChartTypes\r\n });\r\n //prevent showing chart tab\r\n domel(this.slot).hide();\r\n };\r\n ChartFacet.prototype.destroy = function () {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n }\r\n };\r\n ChartFacet.prototype.getType = function () {\r\n return FacetType.Chart;\r\n };\r\n ChartFacet.prototype.renderFormFields = function (form, fieldsContainer) {\r\n var _this = this;\r\n _super.prototype.renderFormFields.call(this, form, fieldsContainer);\r\n var isIE = browserUtils.isIE();\r\n var horizClass = isIE ? 'kfrm-fields-ie is-horizontal' : 'kfrm-fields is-horizontal';\r\n // Chart type\r\n var chartTypeSelector = document.createElement('select');\r\n chartTypeSelector.id = 'chart_type_selector';\r\n chartTypeSelector.name = 'chart_type_selector';\r\n for (var _i = 0, _a = this.chart.getSupportedChartTypes(); _i < _a.length; _i++) {\r\n var ct = _a[_i];\r\n var sopt = document.createElement('option');\r\n sopt.value = ct.toString();\r\n sopt.text = this.chart.getChartTypeName(ct);\r\n chartTypeSelector.appendChild(sopt);\r\n }\r\n chartTypeSelector.value = this.chart.getCurrentChartType().toString();\r\n if (!this.settings) {\r\n this.chart.prepareChartData();\r\n this.settings = {\r\n type: this.chart.getCurrentChartType().toString(),\r\n labelColumn: \"\" + (this.chart.getLabelColumnIndex() >= 0 ? this.chart.getLabelColumnIndex() : ''),\r\n dataColumn: \"\" + (this.chart.getDataColumnIndex() >= 0 ? this.chart.getDataColumnIndex() : ''),\r\n showLegend: false\r\n };\r\n }\r\n // Label column\r\n var labelColumnSelector = document.createElement('select');\r\n labelColumnSelector.name = 'label_column_selector';\r\n labelColumnSelector.id = 'label_column_selector';\r\n for (var _b = 0, _c = this.chart.getPotentialLabelColumns(); _b < _c.length; _b++) {\r\n var col = _c[_b];\r\n var sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n labelColumnSelector.appendChild(sopt);\r\n }\r\n labelColumnSelector.value = this.settings.labelColumn;\r\n // Data column\r\n var dataColumnSelector = document.createElement('select');\r\n dataColumnSelector.id = 'data_column_selector';\r\n dataColumnSelector.name = 'data_column_selector';\r\n for (var _d = 0, _e = this.chart.getPotentialDataColumns(); _d < _e.length; _d++) {\r\n var col = _e[_d];\r\n var sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n dataColumnSelector.appendChild(sopt);\r\n }\r\n dataColumnSelector.value = this.settings.dataColumn.toString();\r\n var current = fieldsContainer;\r\n var getCurrent = function () {\r\n if (isIE) {\r\n return domel('div', fieldsContainer)\r\n .addClass('kfrm-field-ie')\r\n .toDOM();\r\n }\r\n else {\r\n return fieldsContainer;\r\n }\r\n };\r\n if (isIE) {\r\n domel(form)\r\n .addChildElement(getCurrent());\r\n }\r\n else {\r\n domel(fieldsContainer)\r\n .addChild('div')\r\n .addChild('div');\r\n }\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'chart_type_selector')\r\n .text(i18n.getText('Facets', 'Chart', 'ChartTypeSelectorLabel')); })\r\n .addChild('div', function (b) {\r\n return b\r\n .addClass('kfrm-select')\r\n .addChildElement(chartTypeSelector);\r\n });\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'label_column_selector')\r\n .text(i18n.getText('Facets', 'Chart', 'LabelColumnSelectorLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .addChildElement(labelColumnSelector); });\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'data_column_selector')\r\n .text(i18n.getText('Facets', 'Chart', 'DataColumnSelectorLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .addChildElement(dataColumnSelector); });\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('div')\r\n .addChild('div', function (b) { return b\r\n .addClass(horizClass)\r\n .addChild('label', function (b) { return b\r\n .addClass('checkbox')\r\n .addChild('input', function (b) {\r\n b\r\n .id('show_legend')\r\n .type('checkbox');\r\n if (_this.settings.showLegend)\r\n b.attr('checked', '');\r\n })\r\n .addText(' ' + i18n.getText('Facets', 'Chart', 'ShowLegendLabel')); }); });\r\n };\r\n ChartFacet.prototype.afterDialogOpened = function (dlg) {\r\n if (this.getContext().resultTable.columns.getItems().filter(function (col) { return dataUtils.isNumericType(col.type); }).length <= 0) {\r\n dlg.showAlert('The dataset should contain at least one numeric column to build a chart', 'error');\r\n dlg.getSubmitButtonElement().disabled = true;\r\n }\r\n };\r\n ChartFacet.prototype.submitSettingsDialog = function () {\r\n var result = _super.prototype.submitSettingsDialog.call(this);\r\n var chartTypeSelector = document.getElementById('chart_type_selector');\r\n var ct = parseInt(chartTypeSelector.value);\r\n var labelColumnSelector = document.getElementById('label_column_selector');\r\n var labelColumn = parseInt(labelColumnSelector.value);\r\n var dataColumnSelector = document.getElementById('data_column_selector');\r\n var dataColumn = parseInt(dataColumnSelector.value);\r\n var showLegendInput = document.getElementById('show_legend');\r\n var showLegend = showLegendInput.checked;\r\n if (result) {\r\n this.settings = {\r\n type: ct,\r\n labelColumn: labelColumn,\r\n dataColumn: dataColumn,\r\n showLegend: showLegend\r\n };\r\n if (this.canDisplay()) {\r\n this.refresh();\r\n }\r\n }\r\n return result;\r\n };\r\n ChartFacet.prototype.getSettings = function () {\r\n return this.settings;\r\n };\r\n ChartFacet.prototype.saveToData = function () {\r\n var data = _super.prototype.saveToData.call(this);\r\n if (this.settings) {\r\n data.chartType = this.settings.type;\r\n data.labelCol = this.settings.labelColumn;\r\n data.dataCol = this.settings.dataColumn;\r\n data.showLeg = this.settings.showLegend;\r\n }\r\n return data;\r\n };\r\n ChartFacet.prototype.loadFromData = function (data) {\r\n _super.prototype.loadFromData.call(this, data);\r\n if (data) {\r\n this.settings = {\r\n type: data.chartType,\r\n dataColumn: data.dataCol,\r\n labelColumn: data.labelCol,\r\n showLegend: data.showLeg\r\n };\r\n }\r\n };\r\n ChartFacet.prototype.refreshCore = function () {\r\n if (this.chart) {\r\n if (this.settings) {\r\n this.chart.updateSettings(this.settings);\r\n }\r\n this.chart.prepareChartData();\r\n this.chart.refresh();\r\n }\r\n };\r\n ChartFacet.prototype.onResize = function () {\r\n this.refresh();\r\n };\r\n return ChartFacet;\r\n}(ResultFacet));\r\nexport { ChartFacet };\r\n//# sourceMappingURL=chart_facet.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { domel } from '@easydata/ui';\r\nimport { EasyDataTable, DataType, utils as dataUtils, i18n } from '@easydata/core';\r\nimport { EasyGrid } from '@easydata/ui';\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ResultFacet } from './result_facet';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nvar AggrFunc;\r\n(function (AggrFunc) {\r\n AggrFunc[\"Sum\"] = \"SUM\";\r\n AggrFunc[\"Average\"] = \"AVG\";\r\n AggrFunc[\"Min\"] = \"MIN\";\r\n AggrFunc[\"Max\"] = \"MAX\";\r\n AggrFunc[\"Count\"] = \"COUNT\";\r\n})(AggrFunc || (AggrFunc = {}));\r\nvar FormFieldType;\r\n(function (FormFieldType) {\r\n FormFieldType[FormFieldType[\"ColumnField\"] = 0] = \"ColumnField\";\r\n FormFieldType[FormFieldType[\"RowField\"] = 1] = \"RowField\";\r\n FormFieldType[FormFieldType[\"CellData\"] = 2] = \"CellData\";\r\n})(FormFieldType || (FormFieldType = {}));\r\nvar DFMT_REGEX = /{0:(.*?)}/g;\r\nvar PivotTableFacet = /** @class */ (function (_super) {\r\n __extends(PivotTableFacet, _super);\r\n function PivotTableFacet() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.title = i18n.getText('Facets', 'Pivot', 'FacetTitle');\r\n _this.dialogTitle = i18n.getText('Facets', 'Pivot', 'DlgTitle');\r\n _this.pivotTable = new EasyDataTable();\r\n return _this;\r\n }\r\n PivotTableFacet.prototype.init = function (slot) {\r\n var _this = this;\r\n _super.prototype.init.call(this, slot);\r\n this.options.maxRowCount = this.options.maxRowCount || 500;\r\n this.options.viewportRowsCount = this.options.viewportRowsCount || 50;\r\n this.grid = new EasyGrid({\r\n slot: this.contentDiv,\r\n dataTable: this.pivotTable,\r\n paging: {\r\n enabled: false,\r\n pageSize: this.options.maxRowCount\r\n },\r\n viewportRowsCount: this.options.viewportRowsCount,\r\n useRowNumeration: false,\r\n showPlusButton: false,\r\n allowDragDrop: false,\r\n onGetCellRenderer: function (column, defaultRenderer) {\r\n if (column.dataColumn) {\r\n if (column.dataColumn.id == \"total\") {\r\n return function (value, column, cell, rowEl) {\r\n defaultRenderer(value, column, cell, rowEl);\r\n cell.classList.add('pivot-cell-total');\r\n };\r\n }\r\n if (_this.settings.totalsRow) {\r\n var colIndex = _this.pivotTable.columns.getIndex(column.dataColumn.id);\r\n var isFirst = colIndex === 0;\r\n if (isFirst) {\r\n return function (value, column, cell, rowEl) {\r\n var idx = Number.parseInt(rowEl.getAttribute('data-row-idx'));\r\n var isLast = idx === _this.pivotTable.getCachedCount() - 1;\r\n if (isLast) {\r\n value = i18n.getText('Facets', 'Pivot', 'TotalGridLabel');\r\n }\r\n defaultRenderer(value, column, cell, rowEl);\r\n };\r\n }\r\n }\r\n }\r\n }\r\n });\r\n };\r\n PivotTableFacet.prototype.getType = function () {\r\n return FacetType.PivotTable;\r\n };\r\n PivotTableFacet.prototype.destroy = function () {\r\n if (this.grid) {\r\n this.grid.destroy();\r\n }\r\n };\r\n PivotTableFacet.prototype.createAggrFuncSelectBuilder = function (aggrFunc) {\r\n var model = this.getContext().getModel();\r\n var csb = domel('select');\r\n var aggrfuncs = Object.keys(AggrFunc).map(function (k) { return AggrFunc[k]; });\r\n var _loop_1 = function (aggrfunc) {\r\n csb.addChild('option', function (b) {\r\n b\r\n .attr('value', aggrfunc)\r\n .text(model.getAggrFunctionCaption(aggrfunc));\r\n });\r\n };\r\n for (var _i = 0, aggrfuncs_1 = aggrfuncs; _i < aggrfuncs_1.length; _i++) {\r\n var aggrfunc = aggrfuncs_1[_i];\r\n _loop_1(aggrfunc);\r\n }\r\n var options = csb.toDOM().querySelectorAll('option');\r\n if (aggrFunc != undefined) {\r\n options.forEach(function (option) {\r\n if (option.value == aggrFunc) {\r\n option.selected = true;\r\n }\r\n });\r\n }\r\n else {\r\n options[0].selected = true;\r\n }\r\n return csb;\r\n };\r\n PivotTableFacet.prototype.createColumnsSelectBuilder = function (allowedTypes, colName, formFieldType) {\r\n var dataTable = this.getContextDataTable();\r\n var csb = domel('select');\r\n var firstNumericColIndex = null;\r\n var optionIndex = 0;\r\n var _loop_2 = function (i) {\r\n var column = dataTable.columns.get(i);\r\n var colLabel = column.label;\r\n var colType = column.type;\r\n var colId = column.id;\r\n if (allowedTypes && allowedTypes.indexOf(colType) < 0)\r\n return \"continue\";\r\n if (firstNumericColIndex === null && dataUtils.isNumericType(colType)) {\r\n firstNumericColIndex = optionIndex;\r\n }\r\n csb.addChild('option', function (b) {\r\n b\r\n .attr('value', colId)\r\n .text(colLabel);\r\n });\r\n optionIndex++;\r\n };\r\n for (var i = 0; i < dataTable.columns.count; i++) {\r\n _loop_2(i);\r\n }\r\n var options = Array.from(csb.toDOM().querySelectorAll('option'));\r\n if (options.length > 0) {\r\n if (colName != undefined) {\r\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\r\n var option = options_1[_i];\r\n if (option.value == colName) {\r\n csb.toDOM().value = option.value;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n switch (formFieldType) {\r\n case FormFieldType.ColumnField: {\r\n csb.toDOM().value = options[0].value;\r\n break;\r\n }\r\n case FormFieldType.RowField: {\r\n csb.toDOM().value = options.length > 1 ? options[1].value : options[0].value;\r\n break;\r\n }\r\n case FormFieldType.CellData: {\r\n csb.toDOM().value = firstNumericColIndex === null ? options[0].value : options[firstNumericColIndex].value;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return csb;\r\n };\r\n PivotTableFacet.prototype.renderFormFields = function (form, fieldsContainer) {\r\n var _this = this;\r\n _super.prototype.renderFormFields.call(this, form, fieldsContainer);\r\n var settings = this.settings || { totalsRow: true, totalsCol: true };\r\n var colTypes = [DataType.String, DataType.Date, DataType.DateTime, DataType.Int32,\r\n DataType.Int64, DataType.Word, DataType.Byte];\r\n var fieldTypes = [DataType.String, DataType.Float, DataType.Int32,\r\n DataType.Int64, DataType.Word, DataType.Byte, DataType.Currency];\r\n var isIE = browserUtils.isIE();\r\n var current = fieldsContainer;\r\n var horizClass = isIE ? 'kfrm-fields-ie is-horizontal' : 'kfrm-fields is-horizontal';\r\n var getCurrent = function () {\r\n if (isIE) {\r\n return domel('div', fieldsContainer)\r\n .addClass('kfrm-field-ie')\r\n .toDOM();\r\n }\r\n else {\r\n return fieldsContainer;\r\n }\r\n };\r\n if (isIE) {\r\n domel(fieldsContainer)\r\n .addChildElement(getCurrent());\r\n }\r\n else {\r\n domel(fieldsContainer)\r\n .addChild('div')\r\n .addChild('div');\r\n }\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'column_field')\r\n .text(i18n.getText('Facets', 'Pivot', 'ColumnFieldSelectorLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass(horizClass)\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .attr('name', 'column_field')\r\n .addChildElement(_this.createColumnsSelectBuilder(colTypes, settings.colName, FormFieldType.ColumnField)\r\n .id('pivotTableColFieldSelector')\r\n .toDOM()); })\r\n .addChild('button', function (b) { return b\r\n .addClass('kfrm-button')\r\n .addClass('eqjs-facets-button-swap')\r\n .attr('title', i18n.getText('Facets', 'Pivot', 'SwapBtnTitle'))\r\n .on('click', function () {\r\n var colSelect = document.getElementById('pivotTableColFieldSelector');\r\n var rowSelect = document.getElementById('pivotTableRowFieldSelector');\r\n var tmp = colSelect.value;\r\n colSelect.value = rowSelect.value;\r\n rowSelect.value = tmp;\r\n }); }); });\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'row_field')\r\n .text(i18n.getText('Facets', 'Pivot', 'RowFieldSelectorLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .attr('name', 'row_field')\r\n .addChildElement(_this.createColumnsSelectBuilder(colTypes, settings.rowName, FormFieldType.RowField)\r\n .id('pivotTableRowFieldSelector')\r\n .toDOM()); });\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'data_function')\r\n .text(i18n.getText('Facets', 'Pivot', 'CellDataSelectorLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass(horizClass)\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .attr('name', 'data_function')\r\n .addChildElement(_this.createAggrFuncSelectBuilder(settings.aggrFunc)\r\n .id('pivotTableAggrFuncSelector')\r\n .toDOM()); })\r\n .addChild('label', function (b) { return b.addText('of '); })\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .attr('name', 'data_column')\r\n .addChildElement(_this.createColumnsSelectBuilder(fieldTypes, settings.fieldName, FormFieldType.CellData)\r\n .on('change', function (ev) {\r\n var colId = ev.target.value;\r\n _this.validateSelectedField(colId);\r\n })\r\n .id('pivotTableCellFieldSelector')\r\n .toDOM()); }); });\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('div')\r\n .addChild('div', function (b) { return b\r\n .addClass(horizClass)\r\n .addChild('label', function (b) { return b\r\n .addClass('checkbox')\r\n .addChild('input', function (b) {\r\n b\r\n .id('pivotTableHasTotalsRow')\r\n .type('checkbox');\r\n if (settings.totalsRow)\r\n b.attr('checked', '');\r\n })\r\n .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsRowLabel')); })\r\n .addChild('label', function (b) { return b\r\n .addClass('checkbox')\r\n .addChild('input', function (b) {\r\n b\r\n .id('pivotTableHasTotalsCol')\r\n .type('checkbox');\r\n if (settings.totalsCol)\r\n b.attr('checked', '');\r\n })\r\n .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsColLabel')); }); });\r\n };\r\n PivotTableFacet.prototype.afterDialogOpened = function (dlg) {\r\n var colId = document.getElementById('pivotTableCellFieldSelector').value;\r\n if (colId) {\r\n this.validateSelectedField(colId);\r\n }\r\n if (this.getQuery().getColumns().length <= 2) {\r\n dlg.showAlert('The dataset should contain at least three columns to build a pivot table', 'error');\r\n dlg.getSubmitButtonElement().disabled = true;\r\n }\r\n };\r\n PivotTableFacet.prototype.validateSelectedField = function (colId) {\r\n var dataTable = this.getContextDataTable();\r\n var colIndex = dataTable.columns.getIndex(colId);\r\n var col = dataTable.columns.get(colIndex);\r\n var aggrSelector = document.getElementById('pivotTableAggrFuncSelector');\r\n if (col.type == DataType.String) {\r\n aggrSelector.disabled = true;\r\n aggrSelector.value = AggrFunc.Count;\r\n }\r\n else {\r\n aggrSelector.disabled = false;\r\n }\r\n };\r\n PivotTableFacet.prototype.submitSettingsDialog = function () {\r\n var result = _super.prototype.submitSettingsDialog.call(this);\r\n if (result) {\r\n this.settings = {\r\n colName: document.getElementById('pivotTableColFieldSelector').value,\r\n rowName: document.getElementById('pivotTableRowFieldSelector').value,\r\n aggrFunc: document.getElementById('pivotTableAggrFuncSelector').value,\r\n fieldName: document.getElementById('pivotTableCellFieldSelector').value,\r\n totalsRow: document.getElementById('pivotTableHasTotalsRow').checked,\r\n totalsCol: document.getElementById('pivotTableHasTotalsCol').checked\r\n };\r\n this.refresh();\r\n }\r\n return result;\r\n };\r\n PivotTableFacet.prototype.saveToData = function () {\r\n var data = _super.prototype.saveToData.call(this);\r\n if (this.settings) {\r\n dataUtils.assignDeep(data, this.settings);\r\n }\r\n return data;\r\n };\r\n PivotTableFacet.prototype.loadFromData = function (data) {\r\n _super.prototype.loadFromData.call(this, data);\r\n if (data) {\r\n this.settings = dataUtils.assignDeep(this.settings, data);\r\n if (this.settings.aggrFunc == 'AVERAGE') {\r\n this.settings.aggrFunc = AggrFunc.Average;\r\n }\r\n }\r\n };\r\n PivotTableFacet.prototype.refreshCore = function () {\r\n this.updatePivotData();\r\n if (this.grid) {\r\n var dataSize = this.pivotTable.getTotal();\r\n var maxRow = this.grid.options.paging.pageSize;\r\n if (dataSize > maxRow) {\r\n this.contentDiv.classList.remove('pivot-grid-with-totals');\r\n this.showErrorMessage(i18n.getText('Facets', 'ErrTooMuchData'));\r\n }\r\n if (this.options.viewportRowsCount > dataSize) {\r\n this.grid.options.viewportRowsCount = dataSize;\r\n }\r\n else {\r\n this.grid.options.viewportRowsCount = this.options.viewportRowsCount;\r\n }\r\n this.grid.refresh();\r\n }\r\n };\r\n PivotTableFacet.prototype.getContextDataTable = function () {\r\n var context = this.getContext();\r\n return context.resultTable;\r\n };\r\n PivotTableFacet.prototype.updatePivotData = function () {\r\n this.pivotTable.clear();\r\n var dataTable = this.getContextDataTable();\r\n if (!dataTable || dataTable.getTotal() == 0) {\r\n return;\r\n }\r\n if (!this.settings) {\r\n return;\r\n }\r\n var colName = this.settings.colName;\r\n var rowName = this.settings.rowName;\r\n var fieldName = this.settings.fieldName;\r\n var colIdx = dataTable.columns.getIndex(colName);\r\n var rowIdx = dataTable.columns.getIndex(rowName);\r\n var fieldIdx = dataTable.columns.getIndex(fieldName);\r\n if (colIdx == undefined || rowIdx == undefined || fieldIdx == undefined) {\r\n this.showUnableDisplayMessage(i18n.getText('Facets', 'ErrQueryChanged'));\r\n return;\r\n }\r\n var columnField = dataTable.columns.get(fieldIdx);\r\n var columnCol = dataTable.columns.get(colIdx);\r\n var columnRow = dataTable.columns.get(rowIdx);\r\n var rowLabel = columnRow.label;\r\n var rowType = columnRow.type;\r\n var colLabel = columnCol.label;\r\n var colValues = [];\r\n var rowValues = [];\r\n var rows = dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n var colValue = rows[i].getValue(colIdx);\r\n if (colValues.indexOf(colValue) < 0) {\r\n colValues.push(colValue);\r\n }\r\n var rowValue = rows[i].getValue(rowIdx);\r\n if (rowValues.indexOf(rowValue) < 0) {\r\n rowValues.push(rowValue);\r\n }\r\n }\r\n this.pivotTable.columns.add({\r\n id: rowLabel + '\\\\' + colLabel,\r\n label: rowLabel + '\\\\' + colLabel,\r\n description: '',\r\n type: rowType,\r\n dfmt: columnRow.displayFormat,\r\n style: columnRow.style\r\n });\r\n var null_columns = [];\r\n var colFieldFormatter = null;\r\n if (dataUtils.isNumericType(columnCol.type)) {\r\n colFieldFormatter = this.formatNumber;\r\n }\r\n else if (dataUtils.getDateDataTypes().indexOf(columnCol.type) >= 0) {\r\n colFieldFormatter = this.formatDate;\r\n }\r\n for (var i = 0; i < colValues.length; i++) {\r\n var colValue = colValues[i];\r\n if (!colValue) {\r\n null_columns.push(i);\r\n }\r\n else {\r\n var label = colFieldFormatter\r\n ? colFieldFormatter(columnCol, colValue)\r\n : colValue;\r\n this.pivotTable.columns.add({\r\n id: colValue,\r\n label: label,\r\n description: '',\r\n dfmt: columnField.displayFormat,\r\n type: this.settings.aggrFunc !== AggrFunc.Count\r\n ? columnField.type : DataType.Int64,\r\n style: columnField.style\r\n });\r\n }\r\n }\r\n var new_rows = [];\r\n for (var i = 0; i < rowValues.length; i++) {\r\n new_rows.push([]);\r\n new_rows[i].push(rowValues[i]);\r\n }\r\n for (var i = 0; i < rowValues.length; i++) {\r\n for (var j = 0; j < colValues.length; j++) {\r\n if (null_columns.indexOf(j) >= 0)\r\n continue;\r\n new_rows[i].push(this.calcAggrFunc(this.settings.aggrFunc, {\r\n colName: this.settings.colName,\r\n rowName: this.settings.rowName,\r\n fieldName: this.settings.fieldName,\r\n rowValue: rowValues[i],\r\n colValue: colValues[j]\r\n }));\r\n }\r\n }\r\n if (this.settings.totalsCol) {\r\n this.pivotTable.columns.add({\r\n id: \"total\",\r\n label: i18n.getText('Facets', 'Pivot', 'TotalGridLabel'),\r\n description: '',\r\n dfmt: columnField.displayFormat,\r\n type: this.settings.aggrFunc !== AggrFunc.Count\r\n ? columnField.type : DataType.Int64\r\n });\r\n for (var i = 0; i < new_rows.length; i++) {\r\n var row = new_rows[i];\r\n var totalByRow = 0;\r\n if (this.settings.aggrFunc == AggrFunc.Min\r\n || this.settings.aggrFunc == AggrFunc.Max) {\r\n totalByRow = row[1];\r\n }\r\n for (var j = 1; j < row.length; j++) {\r\n var value = row[j];\r\n if (value !== null) {\r\n if (this.settings.aggrFunc === AggrFunc.Min) {\r\n if (value < totalByRow)\r\n totalByRow = value;\r\n }\r\n else if (this.settings.aggrFunc === AggrFunc.Max) {\r\n if (value > totalByRow)\r\n totalByRow = value;\r\n }\r\n else {\r\n totalByRow += value;\r\n }\r\n }\r\n }\r\n if (this.settings.aggrFunc === AggrFunc.Average) {\r\n totalByRow /= row.length - 1;\r\n }\r\n row.push(totalByRow);\r\n }\r\n }\r\n for (var _i = 0, new_rows_1 = new_rows; _i < new_rows_1.length; _i++) {\r\n var row = new_rows_1[_i];\r\n this.pivotTable.addRow(row);\r\n }\r\n if (this.settings.totalsRow) {\r\n var total_row = [];\r\n // to be able to create date value\r\n total_row.push(null);\r\n for (var i = 1; i < this.pivotTable.columns.count; i++) {\r\n var rows_1 = this.pivotTable.getCachedRows();\r\n var totalByCol = 0;\r\n if (this.settings.aggrFunc == AggrFunc.Min\r\n || this.settings.aggrFunc == AggrFunc.Max) {\r\n totalByCol = rows_1[0].getValue(i);\r\n }\r\n for (var j = 0; j < rows_1.length; j++) {\r\n var value = rows_1[j].getValue(i);\r\n if (value !== null) {\r\n if (this.settings.aggrFunc === AggrFunc.Min) {\r\n if (value < totalByCol)\r\n totalByCol = value;\r\n }\r\n else if (this.settings.aggrFunc === AggrFunc.Max) {\r\n if (value > totalByCol)\r\n totalByCol = value;\r\n }\r\n else {\r\n totalByCol += value;\r\n }\r\n }\r\n }\r\n if (this.settings.aggrFunc === AggrFunc.Average) {\r\n totalByCol /= rows_1.length;\r\n }\r\n total_row.push(totalByCol);\r\n }\r\n this.pivotTable.addRow(total_row);\r\n this.contentDiv.classList.add('pivot-grid-with-totals');\r\n }\r\n else {\r\n this.contentDiv.classList.remove('pivot-grid-with-totals');\r\n }\r\n };\r\n PivotTableFacet.prototype.calcAggrFunc = function (func, options) {\r\n switch (func) {\r\n case AggrFunc.Sum:\r\n return this.sum(options);\r\n case AggrFunc.Average:\r\n return this.average(options);\r\n case AggrFunc.Min:\r\n return this.min(options);\r\n case AggrFunc.Max:\r\n return this.max(options);\r\n case AggrFunc.Count:\r\n return this.count(options);\r\n default:\r\n return 0;\r\n }\r\n };\r\n PivotTableFacet.prototype.getSettings = function () {\r\n return this.settings;\r\n };\r\n PivotTableFacet.prototype.formatDate = function (column, value) {\r\n var isDate = Object.prototype.toString.call(value) === '[object Date]';\r\n var strValue = (value || '').toString();\r\n if (isDate) {\r\n if (column && column.displayFormat\r\n && DFMT_REGEX.test(column.displayFormat)) {\r\n strValue = column.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.dateTimeToStr(value, column.type, $1);\r\n });\r\n }\r\n else {\r\n var locale = i18n.getCurrentLocale();\r\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\r\n switch (column.type) {\r\n case DataType.Date:\r\n strValue = value.toLocaleDateString(locale);\r\n break;\r\n case DataType.Time:\r\n strValue = value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n case DataType.DateTime:\r\n strValue = value.toLocaleDateString(locale) + \" \" + value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n }\r\n }\r\n }\r\n return strValue;\r\n };\r\n PivotTableFacet.prototype.formatNumber = function (column, value) {\r\n var strValue = (value || '').toString();\r\n if (typeof value == 'number') {\r\n if (column && column.displayFormat\r\n && DFMT_REGEX.test(column.displayFormat)) {\r\n strValue = column.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.numberToStr(value, $1);\r\n });\r\n }\r\n else {\r\n strValue = value.toLocaleString();\r\n }\r\n }\r\n return strValue;\r\n };\r\n PivotTableFacet.prototype.sum = function (options) {\r\n var result = 0;\r\n var dataTable = this.getContextDataTable();\r\n var rows = dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n var rowValue = rows[i].getValue(options.rowName);\r\n var colValue = rows[i].getValue(options.colName);\r\n if (rowValue !== options.rowValue\r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n var fieldValue = rows[i].getValue(options.fieldName);\r\n result += fieldValue;\r\n }\r\n return result;\r\n };\r\n PivotTableFacet.prototype.average = function (options) {\r\n var result = 0;\r\n var count = 0;\r\n var dataTable = this.getContextDataTable();\r\n var rows = dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n var rowValue = rows[i].getValue(options.rowName);\r\n var colValue = rows[i].getValue(options.colName);\r\n if (rowValue !== options.rowValue\r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n var fieldValue = rows[i].getValue(options.fieldName);\r\n result += fieldValue;\r\n count++;\r\n }\r\n if (count != 0)\r\n result = result / count;\r\n return result;\r\n };\r\n PivotTableFacet.prototype.min = function (options) {\r\n var min = Number.MAX_SAFE_INTEGER;\r\n var dataTable = this.getContextDataTable();\r\n var rows = dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n var rowValue = rows[i].getValue(options.rowName);\r\n var colValue = rows[i].getValue(options.colName);\r\n if (rowValue !== options.rowValue\r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n var fieldValue = rows[i].getValue(options.fieldName);\r\n if (fieldValue < min) {\r\n min = fieldValue;\r\n }\r\n }\r\n if (min == Number.MAX_SAFE_INTEGER)\r\n return null;\r\n return min;\r\n };\r\n PivotTableFacet.prototype.max = function (options) {\r\n var max = Number.MIN_SAFE_INTEGER;\r\n var dataTable = this.getContextDataTable();\r\n var rows = dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n var rowValue = rows[i].getValue(options.rowName);\r\n var colValue = rows[i].getValue(options.colName);\r\n if (rowValue !== options.rowValue\r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n var fieldValue = rows[i].getValue(options.fieldName);\r\n if (fieldValue > max) {\r\n max = fieldValue;\r\n }\r\n }\r\n if (max == Number.MIN_SAFE_INTEGER)\r\n return null;\r\n return max;\r\n };\r\n PivotTableFacet.prototype.count = function (options) {\r\n var dataTable = this.getContextDataTable();\r\n var count = 0;\r\n var rows = dataTable.getCachedRows();\r\n for (var i = 0; i < rows.length; i++) {\r\n var rowValue = rows[i].getValue(options.rowName);\r\n var colValue = rows[i].getValue(options.colName);\r\n if (rowValue !== options.rowValue\r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n count++;\r\n }\r\n return count;\r\n };\r\n return PivotTableFacet;\r\n}(ResultFacet));\r\nexport { PivotTableFacet };\r\n//# sourceMappingURL=pivot_table_facet.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easyquery/core';\r\nimport { ResultFacet } from './result_facet';\r\nimport { FacetType } from '../types/facet_type';\r\nimport { EasyGridWidget } from '../widgets/easy_grid_widget';\r\nvar DataTableFacet = /** @class */ (function (_super) {\r\n __extends(DataTableFacet, _super);\r\n function DataTableFacet() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.grid = null;\r\n _this.title = i18n.getText('Facets', 'DataTable', 'FacetTitle');\r\n _this.dialogTitle = i18n.getText('Facets', 'DataTable', 'DlgTitle');\r\n return _this;\r\n }\r\n DataTableFacet.prototype.init = function (slot) {\r\n _super.prototype.init.call(this, slot);\r\n this.reinitGrid();\r\n };\r\n DataTableFacet.prototype.getSettings = function () {\r\n return this.settings;\r\n };\r\n DataTableFacet.prototype.reinitGrid = function () {\r\n if (this.grid)\r\n this.grid.destroy();\r\n var options = this.container.options || {};\r\n if (options.gridResolver) {\r\n this.grid = options.gridResolver(this.contentDiv, this.getType());\r\n }\r\n if (this.grid == null) {\r\n this.grid = new EasyGridWidget(this.contentDiv);\r\n }\r\n options.grid = options.grid || {};\r\n options.grid.autoRefresh = false;\r\n options.grid.addColumns = false;\r\n var context = this.getContext();\r\n options.grid.totals = this.settings;\r\n this.grid.init(context, options.grid);\r\n };\r\n DataTableFacet.prototype.getType = function () {\r\n return FacetType.DataGrid;\r\n };\r\n DataTableFacet.prototype.canDisplay = function () {\r\n return true;\r\n };\r\n DataTableFacet.prototype.refreshCore = function () {\r\n if (!this.grid)\r\n return;\r\n this.grid.refresh();\r\n };\r\n DataTableFacet.prototype.destroy = function () {\r\n if (this.grid) {\r\n this.grid.destroy();\r\n }\r\n };\r\n return DataTableFacet;\r\n}(ResultFacet));\r\nexport { DataTableFacet };\r\n//# sourceMappingURL=datatable_facet.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\nimport { ExportDialog } from '../dialog/export_dialog';\r\nvar ExportWidget = /** @class */ (function (_super) {\r\n __extends(ExportWidget, _super);\r\n function ExportWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n defFormat: 'csv',\r\n enableExport: true\r\n };\r\n _this.clickHandler = function (ev) {\r\n if (!_this.slot.hasAttribute('disabled'))\r\n new ExportDialog(_this.context).show(_this.options.defFormat);\r\n };\r\n _this.group = WidgetGroup.All;\r\n return _this;\r\n }\r\n ExportWidget.prototype.getWidgetType = function () {\r\n return 'exportWidget';\r\n };\r\n ExportWidget.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.options = dataUtils.assignDeep(this.options, options);\r\n this.slot.addEventListener('click', this.clickHandler);\r\n };\r\n ExportWidget.prototype.refreshCore = function () {\r\n if (this.options.enableExport && this.context.resultTable\r\n && this.context.resultTable.getCachedCount() > 0) {\r\n this.slot.removeAttribute('disabled');\r\n }\r\n else {\r\n this.slot.setAttribute('disabled', '');\r\n }\r\n };\r\n ExportWidget.prototype.destroyCore = function () {\r\n this.slot.removeAttribute('disabled');\r\n this.slot.removeEventListener('click', this.clickHandler);\r\n };\r\n return ExportWidget;\r\n}(Widget));\r\nexport { ExportWidget };\r\n//# sourceMappingURL=export_widget.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup, i18n } from '@easyquery/core';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { AggrSettingsDialog } from \"../dialog/aggr_settings_dialog\";\r\n/**\r\n * The widget responsed for rendering the name of the current query.\r\n */\r\nvar AggregationBar = /** @class */ (function (_super) {\r\n __extends(AggregationBar, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The HTML element where our widget should be placed.\r\n * @param customQuery The custom query\r\n */\r\n function AggregationBar(slot, customQuery) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.linkClickCallback = function () {\r\n new AggrSettingsDialog(_this.context).show(_this.getQuery());\r\n };\r\n _this.queryEventCallbackId = null;\r\n _this.customQuery = customQuery;\r\n _this.group = WidgetGroup.Query | WidgetGroup.QueryStatus;\r\n return _this;\r\n }\r\n AggregationBar.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n };\r\n Object.defineProperty(AggregationBar.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-aggrb';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AggregationBar.prototype.getWidgetType = function () {\r\n return 'aggregationBar';\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n AggregationBar.prototype.refreshCore = function () {\r\n this.render();\r\n };\r\n AggregationBar.prototype.getLinkText = function () {\r\n var query = this.getQuery();\r\n ;\r\n if (query.enableAggregation) {\r\n var aggrSettings = query.getAggregationSettings();\r\n var groups = aggrSettings.getInternalGroups();\r\n var aggrs = aggrSettings.getAggregates();\r\n var groupArr = [];\r\n var cols_1 = query.getColumns();\r\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\r\n var group = groups_1[_i];\r\n var colNames = group.columns.map(function (value) {\r\n var col = cols_1.find(function (c) { return c.id == value; });\r\n if (col) {\r\n return col.caption;\r\n }\r\n else {\r\n return '';\r\n }\r\n });\r\n groupArr.push(\"[\" + colNames.join(', ') + \"]\");\r\n }\r\n var groupString = groupArr.join(', ');\r\n var aggrArr = [];\r\n var funcs = query.getModel().getAggrFunctions();\r\n var _loop_1 = function (aggr) {\r\n var col = cols_1.find(function (c) { return c.id == aggr.colId; });\r\n var func = funcs.find(function (f) { return f.id == aggr.funcId; });\r\n if (col && func) {\r\n aggrArr.push(col.caption + \" (\" + func.caption + \")\");\r\n }\r\n };\r\n for (var _a = 0, aggrs_1 = aggrs; _a < aggrs_1.length; _a++) {\r\n var aggr = aggrs_1[_a];\r\n _loop_1(aggr);\r\n }\r\n var aggrString = aggrArr.join(', ');\r\n return (groupString || i18n.getText('AggrSettings', 'NoGroupsLabel')) + \" ::: \" + (aggrString ? \"<\" + aggrString + \">\" : i18n.getText('AggrSettings', 'NoAggrsLabel'));\r\n }\r\n else {\r\n return i18n.getText('AggrSettings', 'EmptySettingsLabel');\r\n }\r\n };\r\n AggregationBar.prototype.render = function () {\r\n this.slot.classList.add(this.cssPrefix + \"-panel\");\r\n var mobClass = browserUtils.getMobileCssClass();\r\n if (mobClass) {\r\n this.slot.classList.add(mobClass);\r\n }\r\n if (!this.dialogLink) {\r\n this.dialogLink = document.createElement('a');\r\n this.dialogLink.setAttribute('href', 'javascript:void(0)');\r\n this.slot.appendChild(this.dialogLink);\r\n }\r\n // Update\r\n this.dialogLink.textContent = this.getLinkText();\r\n this.dialogLink.removeEventListener('click', this.linkClickCallback);\r\n this.dialogLink.addEventListener('click', this.linkClickCallback);\r\n };\r\n AggregationBar.prototype.clear = function () {\r\n this.slot.innerHTML = \"\";\r\n this.dialogLink = null;\r\n };\r\n AggregationBar.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n _this.refreshCore();\r\n });\r\n };\r\n AggregationBar.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n AggregationBar.prototype.destroyCore = function () {\r\n this.clear();\r\n this.detachQueryObserver();\r\n };\r\n AggregationBar.prototype.getQuery = function () {\r\n return this.customQuery || this.context.getQuery();\r\n };\r\n return AggregationBar;\r\n}(Widget));\r\nexport { AggregationBar };\r\n//# sourceMappingURL=aggregation_bar.js.map","import { domel } from '@easydata/ui';\r\nimport { i18n, QueryChangePart } from '@easyquery/core';\r\nimport { AggrSettingsRenderer } from '../widgets/renderers/aggr_settings/aggr_settings_renderer';\r\nvar AggrSettingsDialog = /** @class */ (function () {\r\n function AggrSettingsDialog(context) {\r\n this.context = context;\r\n this.promise = null;\r\n }\r\n AggrSettingsDialog.prototype.show = function (query) {\r\n var _this = this;\r\n var initQuery = query || this.context.getQuery();\r\n // copy query to prevent changes\r\n this.query = this.context.createQuery();\r\n this.query.loadFromData(initQuery.toJSONData());\r\n // to rewrite with returning new aggrsettigns \r\n // structure instead of apply on submit\r\n if (!this.promise) {\r\n this.promise = new Promise(function (resolve, reject) {\r\n var ds = _this.context.getServices().getDialogService();\r\n _this.body = _this.renderBody();\r\n var dlg = ds.open({\r\n title: i18n.getText('AggrSettings', 'AggrDialogTitle'),\r\n body: _this.body,\r\n onSubmit: function () {\r\n if (_this.query.enableAggregation && !_this.renderer.isValid())\r\n return false;\r\n initQuery.enableAggregation = _this.query.enableAggregation;\r\n if (initQuery.enableAggregation) {\r\n initQuery.useAggregation(function (settings) {\r\n var s = _this.renderer.getSettings();\r\n settings.loadFromData(s.saveToData());\r\n });\r\n }\r\n initQuery.fireChangedEvent({\r\n part: QueryChangePart.Aggregation,\r\n wasModified: false\r\n });\r\n resolve();\r\n return true;\r\n },\r\n onCancel: function () {\r\n resolve();\r\n }\r\n });\r\n _this.renderer = new AggrSettingsRenderer({\r\n slot: _this.body.querySelector('#AggrSettingsComponent'),\r\n query: _this.query,\r\n onChanged: function () {\r\n dlg.clearAlert();\r\n var isValid = _this.renderer.isValid();\r\n if (!isValid) {\r\n var error = _this.renderer.getValidationMessage();\r\n dlg.showAlert(error, 'warning');\r\n }\r\n var btn = dlg.getRootElement()\r\n .querySelector('.kfrm-button.is-info');\r\n btn.disabled = !isValid && _this.query.enableAggregation;\r\n }\r\n });\r\n if (_this.query.enableAggregation) {\r\n _this.renderer.render();\r\n }\r\n });\r\n }\r\n return this.promise.catch(function (e) { return console.error(e); })\r\n .finally(function () { return _this.promise = null; });\r\n };\r\n AggrSettingsDialog.prototype.renderBody = function () {\r\n var _this = this;\r\n var b = domel('div')\r\n .addChild('div', function (b) { return b\r\n .addClass(\"eqjs-as-enableaggr\")\r\n .addChild('label', function (b) { return b\r\n .addClass('eqjs-ctrl-switch')\r\n .addChild('input', function (b) {\r\n b.attr('type', 'checkbox');\r\n if (_this.query.enableAggregation) {\r\n b.attr('checked', '');\r\n }\r\n b.on('change', _this.enableAggrCheckBoxChangeHandler.bind(_this));\r\n })\r\n .addChild('span', function (b) { return b\r\n .addClass('slider round'); })\r\n .addChild('span', function (b) { return b\r\n .addClass('switch-text')\r\n .addText(i18n.getText('AggrSettings', 'EnableAggrLabel')); }); }); })\r\n .addChild('div', function (b) { return b\r\n .id('AggrSettingsComponent'); });\r\n return b.toDOM();\r\n };\r\n AggrSettingsDialog.prototype.enableAggrCheckBoxChangeHandler = function (e) {\r\n this.query.enableAggregation = !this.query.enableAggregation;\r\n this.body.querySelector('#AggrSettingsComponent').innerHTML = '';\r\n if (this.query.enableAggregation) {\r\n this.renderer.render();\r\n }\r\n else {\r\n var btn = this.body ? this.body.closest('.kdlg-modal').querySelector('footer .kfrm-button.is-info') : null;\r\n if (btn) {\r\n btn.disabled = false;\r\n }\r\n }\r\n };\r\n return AggrSettingsDialog;\r\n}());\r\nexport { AggrSettingsDialog };\r\n//# sourceMappingURL=aggr_settings_dialog.js.map","import { AggregationSettings } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { i18n } from '@easyquery/core';\r\nvar AggrSettingsRenderer = /** @class */ (function () {\r\n function AggrSettingsRenderer(options) {\r\n this.selectState = {\r\n columns: []\r\n };\r\n this.funcMap = {};\r\n if (!options || !options.slot)\r\n throw new Error('slot is required');\r\n if (!options || !options.query)\r\n throw new Error('query is required');\r\n this.slot = options.slot;\r\n this.query = options.query;\r\n this.onChanged = options.onChanged;\r\n this.dropSelectState();\r\n this.dropState();\r\n }\r\n Object.defineProperty(AggrSettingsRenderer.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-as';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AggrSettingsRenderer.prototype.render = function () {\r\n this.createFunctionMenu();\r\n this.setInitialState();\r\n this.changed();\r\n };\r\n AggrSettingsRenderer.prototype.setInitialState = function () {\r\n var aggrSettings = this.query.getAggregationSettings();\r\n var groups = aggrSettings.getInternalGroups();\r\n var aggrs = aggrSettings.getAggregates();\r\n for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\r\n var group = groups_1[_i];\r\n this.state.groups.push({\r\n columns: group.columns\r\n });\r\n }\r\n for (var _a = 0, aggrs_1 = aggrs; _a < aggrs_1.length; _a++) {\r\n var aggr = aggrs_1[_a];\r\n this.state.aggregates.push({\r\n colId: aggr.colId,\r\n funcId: aggr.funcId\r\n });\r\n }\r\n this.state.grandTotals = aggrSettings.hasGrandTotals();\r\n this.state.recordCount = aggrSettings.hasRecordCount();\r\n };\r\n AggrSettingsRenderer.prototype.getAvailableColumns = function () {\r\n return this.query.getColumns().filter(function (c) { return c.enabled; });\r\n };\r\n AggrSettingsRenderer.prototype.renderCore = function () {\r\n var _this = this;\r\n this.slot.innerHTML = '';\r\n var cols = this.getAvailableColumns();\r\n var slotb = domel(this.slot);\r\n var currentGroup = null;\r\n var groupBlockColumns = null;\r\n var selectedBlockColumns = null;\r\n var aggregates = this.state.aggregates;\r\n var groupCounter = -1;\r\n var _loop_1 = function (col) {\r\n if (currentGroup) {\r\n if (currentGroup.columns.indexOf(col.id) >= 0) {\r\n // render to current group div\r\n this_1.renderColumn(groupBlockColumns, col, true);\r\n return \"continue\";\r\n }\r\n }\r\n currentGroup = this_1.getGroupForColumn(col.id);\r\n if (currentGroup != null) {\r\n groupCounter++;\r\n // create groupDiv\r\n var groupBlock = domel('div', this_1.slot)\r\n .addClass(this_1.cssPrefix + \"-group\")\r\n .data('gindex', \"\" + groupCounter);\r\n groupBlockColumns = domel('div', groupBlock.toDOM())\r\n .addClass(this_1.cssPrefix + \"-columns\");\r\n this_1.renderColumn(groupBlockColumns, col, true);\r\n return \"continue\";\r\n }\r\n var aggr = aggregates.filter(function (a) { return a.colId == col.id; })[0];\r\n if (aggr) {\r\n var aggrBlock = domel('div', this_1.slot)\r\n .addClass(this_1.cssPrefix + \"-aggr\");\r\n this_1.renderColumn(aggrBlock, col, true, aggr.funcId);\r\n aggrBlock\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-buttons\")\r\n .addChild('button', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-unaggr-btn\")\r\n .title(i18n.getText('AggrSettings', 'UnaggrBtn'))\r\n .on('click', _this.removeAggrBtnClickHandler.bind(_this)); }); });\r\n return \"continue\";\r\n }\r\n if (this_1.selectState.columns.indexOf(col.id) >= 0) {\r\n // create selectedDiv\r\n if (selectedBlockColumns == null) {\r\n var selectedBlock = domel('div', this_1.slot)\r\n .addClass(this_1.cssPrefix + \"-selected\");\r\n selectedBlockColumns = domel('div', selectedBlock.toDOM())\r\n .addClass(this_1.cssPrefix + \"-columns\");\r\n }\r\n this_1.renderColumn(selectedBlockColumns, col, false);\r\n return \"continue\";\r\n }\r\n // render column as is\r\n this_1.renderColumn(slotb, col, false);\r\n };\r\n var this_1 = this;\r\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\r\n var col = cols_1[_i];\r\n _loop_1(col);\r\n }\r\n if (selectedBlockColumns) {\r\n var buttonsContainer = domel('div', selectedBlockColumns.toDOM().parentElement)\r\n .addClass(this.cssPrefix + \"-buttons\");\r\n buttonsContainer.addChild('button', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-group-btn\")\r\n .title(i18n.getText('AggrSettings', 'GroupBtn'))\r\n .on('click', _this.groupBtnClickHandler.bind(_this)); });\r\n if (this.selectState.columns.length == 1) {\r\n buttonsContainer.addChild('button', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-aggr-btn\")\r\n .title(i18n.getText('AggrSettings', 'AggrBtn'))\r\n .on('click', _this.aggrBtnClickHandler.bind(_this)); });\r\n }\r\n }\r\n domel(this.slot)\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-counts\")\r\n .addChild('label', function (b) { return b\r\n .addClass('eqjs-ctrl-switch')\r\n .addChild('input', function (b) {\r\n b.attr('type', 'checkbox');\r\n if (_this.state.recordCount) {\r\n b.attr('checked', '');\r\n }\r\n b.on('change', _this.countsCheckboxChangeHandler.bind(_this));\r\n })\r\n .addChild('span', function (b) { return b\r\n .addClass('slider round'); })\r\n .addChild('span', function (b) { return b\r\n .addClass('switch-text')\r\n .addText(i18n.getText('AggrSettings', 'GroupCountsLabel')); }); }); })\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-grandtotals\")\r\n .addChild('label', function (b) { return b\r\n .addClass('eqjs-ctrl-switch')\r\n .addChild('input', function (b) {\r\n b.attr('type', 'checkbox');\r\n if (_this.state.grandTotals) {\r\n b.attr('checked', '');\r\n }\r\n b.on('change', _this.grandCheckboxChangeHandler.bind(_this));\r\n })\r\n .addChild('span', function (b) { return b\r\n .addClass('slider round'); })\r\n .addChild('span', function (b) { return b\r\n .addClass('switch-text')\r\n .addText(i18n.getText('AggrSettings', 'GrandTotalsLabel')); }); }); });\r\n var groups = this.slot.querySelectorAll(\".\" + this.cssPrefix + \"-group\");\r\n groups.forEach(function (el) {\r\n domel(el)\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-buttons\")\r\n .addChild('button', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-ungroup-btn\")\r\n .title(i18n.getText('AggrSettings', 'UngroupBtn'))\r\n .on('click', _this.removeGroupBtnClickHandler.bind(_this)); }); });\r\n });\r\n this.validateCheckboxes();\r\n };\r\n AggrSettingsRenderer.prototype.validateCheckboxes = function () {\r\n if (this.selectState.columns.length === 0)\r\n return;\r\n var prevElement, prevInputEl, nextInputEl = null;\r\n for (var i = 0; i < this.slot.childNodes.length; i++) {\r\n var el = this.slot.childNodes[i];\r\n if (el.classList.contains(this.cssPrefix + \"-selected\")) {\r\n if (prevElement && prevElement.classList.contains(this.cssPrefix + \"-column\")) {\r\n prevInputEl = prevElement;\r\n }\r\n }\r\n else if (el.classList.contains(this.cssPrefix + \"-column\")) {\r\n if (prevElement && prevElement.classList.contains(this.cssPrefix + \"-selected\")) {\r\n nextInputEl = el;\r\n }\r\n }\r\n prevElement = el;\r\n }\r\n ;\r\n for (var i = 0; i < this.slot.childNodes.length; i++) {\r\n var el = this.slot.childNodes[i];\r\n if (el.classList.contains(this.cssPrefix + \"-column\") && el != prevInputEl && el != nextInputEl) {\r\n el.firstElementChild.firstElementChild.setAttribute('disabled', '');\r\n }\r\n }\r\n ;\r\n var selector = \".\" + this.cssPrefix + \"-selected>.\" + this.cssPrefix + \"-columns>.\" + this.cssPrefix + \"-column\";\r\n var selectedCols = this.slot.querySelectorAll(selector);\r\n for (var i = 1; i < selectedCols.length - 1; i++) {\r\n var el = selectedCols[i];\r\n el.firstElementChild.firstElementChild.setAttribute('disabled', '');\r\n }\r\n };\r\n AggrSettingsRenderer.prototype.isValid = function () {\r\n var hasSelected = this.selectState.columns.length;\r\n var hasAggrs = this.state.aggregates.length > 0;\r\n var hasGroups = this.state.groups.length > 0;\r\n var hasTotals = this.state.grandTotals;\r\n var hasCounts = this.state.recordCount;\r\n if (hasSelected)\r\n return false;\r\n if (hasGroups) {\r\n return hasAggrs || hasCounts;\r\n }\r\n if (hasAggrs) {\r\n return hasGroups || hasTotals;\r\n }\r\n return false;\r\n };\r\n AggrSettingsRenderer.prototype.getValidationMessage = function () {\r\n var hasSelected = this.selectState.columns.length;\r\n var hasAggrs = this.state.aggregates.length > 0;\r\n var hasGroups = this.state.groups.length > 0;\r\n var hasTotals = this.state.grandTotals;\r\n var hasRecCount = this.state.recordCount;\r\n if (hasSelected)\r\n return i18n.getText('AggrSettings', 'SelectedError') + \" \";\r\n if (hasGroups && !hasAggrs && !hasRecCount)\r\n return i18n.getText('AggrSettings', 'NoAggrOrCountError') + \" \";\r\n if (hasAggrs && !hasGroups && !hasTotals)\r\n return i18n.getText('AggrSettings', 'NoGroupsOrGrandError') + \" \";\r\n return i18n.getText('AggrSettings', 'NoGroupsOrAggrError') + \" \";\r\n };\r\n AggrSettingsRenderer.prototype.getSettings = function () {\r\n var settings = new AggregationSettings(this.query);\r\n for (var _i = 0, _a = this.state.groups; _i < _a.length; _i++) {\r\n var group = _a[_i];\r\n settings.addGroup({ columns: group.columns });\r\n }\r\n for (var _b = 0, _c = this.state.aggregates; _b < _c.length; _b++) {\r\n var aggr = _c[_b];\r\n settings.addAggregateColumn(aggr.colId, aggr.funcId);\r\n }\r\n if (this.state.grandTotals) {\r\n settings.addGrandTotals();\r\n }\r\n if (this.state.recordCount) {\r\n settings.addCounts();\r\n }\r\n return settings;\r\n };\r\n AggrSettingsRenderer.prototype.renderColumn = function (b, col, isTaken, funcId) {\r\n var _this = this;\r\n if (funcId === void 0) { funcId = null; }\r\n b.addChild('div', function (b) {\r\n b.data('colid', col.id);\r\n var caption = funcId\r\n ? col.caption + \" (\" + _this.funcMap[funcId].caption + \")\"\r\n : col.caption;\r\n if (!isTaken) {\r\n b\r\n .addClass(_this.cssPrefix + \"-column\")\r\n .addChild('label', function (b) { return b\r\n .addClass('checkbox')\r\n .addChild('input', function (b) {\r\n b.attr('type', 'checkbox');\r\n if (_this.selectState.columns.indexOf(col.id) >= 0) {\r\n b.attr('checked', '');\r\n }\r\n b.on('change', _this.colCheckboxChangeHandler.bind(_this));\r\n })\r\n .addText(caption); });\r\n }\r\n else {\r\n b\r\n .addClass(_this.cssPrefix + \"-column-used\")\r\n .addText(caption);\r\n }\r\n });\r\n };\r\n AggrSettingsRenderer.prototype.getGroupForColumn = function (colId) {\r\n var index = this.getGroupIndexForColumn(colId);\r\n if (index >= 0)\r\n return this.state.groups[index];\r\n return null;\r\n };\r\n AggrSettingsRenderer.prototype.getGroupIndexForColumn = function (colId) {\r\n for (var i = 0; i < this.state.groups.length; i++) {\r\n var group = this.state.groups[i];\r\n if (group.columns.indexOf(colId) >= 0)\r\n return i;\r\n }\r\n return -1;\r\n };\r\n AggrSettingsRenderer.prototype.grandCheckboxChangeHandler = function (ev) {\r\n this.state.grandTotals = !this.state.grandTotals;\r\n this.onChanged && this.onChanged();\r\n };\r\n AggrSettingsRenderer.prototype.countsCheckboxChangeHandler = function (ev) {\r\n this.state.recordCount = !this.state.recordCount;\r\n this.onChanged && this.onChanged();\r\n };\r\n AggrSettingsRenderer.prototype.colCheckboxChangeHandler = function (ev) {\r\n var input = ev.target;\r\n var colId = input.parentElement.parentElement.getAttribute('data-colid');\r\n // toggle column to track state\r\n var index = this.selectState.columns.indexOf(colId);\r\n if (index >= 0) {\r\n this.selectState.columns.splice(index, 1);\r\n }\r\n else {\r\n this.selectState.columns.push(colId);\r\n var cols_2 = this.getAvailableColumns();\r\n this.selectState.columns = this.selectState.columns.sort(function (col1, col2) {\r\n var index1 = cols_2.findIndex(function (c) { return c.id == col1; });\r\n var index2 = cols_2.findIndex(function (c) { return c.id == col2; });\r\n return index1 - index2;\r\n });\r\n }\r\n this.changed();\r\n };\r\n AggrSettingsRenderer.prototype.groupBtnClickHandler = function () {\r\n this.state.groups.push({ columns: this.selectState.columns });\r\n var cols = this.getAvailableColumns();\r\n this.state.groups = this.state.groups.sort(function (g1, g2) {\r\n var g1Index = cols.findIndex(function (c) { return c.id == g1.columns[0]; });\r\n var g2Index = cols.findIndex(function (c) { return c.id == g2.columns[0]; });\r\n return g1Index - g2Index;\r\n });\r\n this.dropSelectState();\r\n this.changed();\r\n };\r\n AggrSettingsRenderer.prototype.removeGroupBtnClickHandler = function (ev) {\r\n var btn = ev.target;\r\n var index = Number.parseInt(btn.parentElement.parentElement.getAttribute('data-gindex'));\r\n this.state.groups.splice(index, 1);\r\n this.changed();\r\n };\r\n AggrSettingsRenderer.prototype.removeAggrBtnClickHandler = function (ev) {\r\n var btn = ev.target;\r\n var colId = btn.parentElement.parentElement.querySelector(\".\" + this.cssPrefix + \"-column-used\")\r\n .getAttribute('data-colid');\r\n var index = this.state.aggregates.findIndex(function (a) { return a.colId == colId; });\r\n if (index >= 0) {\r\n this.state.aggregates.splice(index, 1);\r\n this.changed();\r\n }\r\n };\r\n AggrSettingsRenderer.prototype.aggrBtnClickHandler = function (ev) {\r\n var _this = this;\r\n var model = this.query.getModel();\r\n var colId = this.selectState.columns[0];\r\n var col = this.getAvailableColumns().filter(function (c) { return c.id == colId; })[0];\r\n this.functionMenu.showMenu({\r\n anchor: ev.target,\r\n itemFilterCallback: function (item) {\r\n return _this.funcMap[item.id].appliedTypes.indexOf(col.expr.dataType) >= 0;\r\n },\r\n itemSelectedCallback: function (data) {\r\n _this.state.aggregates.push({\r\n colId: colId,\r\n funcId: data.id\r\n });\r\n _this.dropSelectState();\r\n _this.changed();\r\n }\r\n });\r\n };\r\n AggrSettingsRenderer.prototype.clear = function () {\r\n this.dropSelectState();\r\n this.dropState();\r\n this.changed();\r\n };\r\n AggrSettingsRenderer.prototype.dropSelectState = function () {\r\n this.selectState = {\r\n columns: []\r\n };\r\n };\r\n AggrSettingsRenderer.prototype.dropState = function () {\r\n this.state = {\r\n groups: [],\r\n aggregates: [],\r\n recordCount: true,\r\n grandTotals: false\r\n };\r\n };\r\n AggrSettingsRenderer.prototype.changed = function () {\r\n this.onChanged && this.onChanged();\r\n this.renderCore();\r\n };\r\n AggrSettingsRenderer.prototype.createFunctionMenu = function () {\r\n var model = this.query.getModel();\r\n var funcs = this.query.getModel().getAggrFunctions();\r\n var items = [];\r\n for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {\r\n var func = funcs_1[_i];\r\n if (!func)\r\n continue;\r\n this.funcMap[func.id] = func;\r\n var funcCaption = model\r\n .getAggrFunctionCaption(func.id);\r\n var item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n items.push(item);\r\n }\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-FunctionsMenu';\r\n }\r\n var menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true\r\n };\r\n this.functionMenu = new PopupMenu(menuOptions);\r\n };\r\n return AggrSettingsRenderer;\r\n}());\r\nexport { AggrSettingsRenderer };\r\n//# sourceMappingURL=aggr_settings_renderer.js.map","var EqServerQueryStorage = /** @class */ (function () {\r\n function EqServerQueryStorage(context) {\r\n this.context = context;\r\n }\r\n EqServerQueryStorage.prototype.init = function () {\r\n };\r\n EqServerQueryStorage.prototype.newQuery = function (options) {\r\n options = options || {};\r\n var query = options.query || this.context.getQuery();\r\n var model = this.context.getModel();\r\n var modelId = options.modelId || (model ? model.getId() : \"\");\r\n if (options.queryId) {\r\n query.setId(options.queryId);\r\n }\r\n if (options.name) {\r\n query.setName(options.name);\r\n }\r\n if (options.description) {\r\n query.setDescription(options.description);\r\n }\r\n var requestData = {\r\n 'query': query.toJSONData()\r\n };\r\n if (options.data) {\r\n requestData['data'] = options.data;\r\n }\r\n var url = this.context.resolveEndpoint('NewQuery', { modelId: modelId });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.post(url, requestData)\r\n .then(function (responseData) {\r\n return responseData.query;\r\n });\r\n };\r\n EqServerQueryStorage.prototype.getQueryList = function (options) {\r\n options = options || {};\r\n var modelId = options.modelId || this.context.getModel().getId();\r\n var url = this.context.resolveEndpoint('GetQueryList', { modelId: modelId });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.get(url)\r\n .then(function (responseData) {\r\n if (!responseData.queries) {\r\n return Promise.reject({\r\n message: 'Wrong response format'\r\n });\r\n }\r\n return responseData.queries;\r\n });\r\n };\r\n EqServerQueryStorage.prototype.loadQuery = function (options) {\r\n options = options || {};\r\n var model = this.context.getModel();\r\n var query = this.context.getQuery();\r\n var modelId = options.modelId || model.getId();\r\n var queryId = options.queryId || query.getId();\r\n var url = this.context.resolveEndpoint('GetQuery', { modelId: modelId, queryId: queryId });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.get(url)\r\n .then(function (responseData) {\r\n return responseData.query;\r\n });\r\n };\r\n EqServerQueryStorage.prototype.saveQuery = function (options) {\r\n options = options || {};\r\n var query = options.query || this.context.getQuery();\r\n var queryId = options.queryId || query.getId();\r\n if (options.queryId) {\r\n query.setId(options.queryId);\r\n }\r\n var modelId = options.modelId || query.getModel().getId();\r\n if (options.queryId) {\r\n query.setId(options.queryId);\r\n }\r\n var requestData = {\r\n 'query': query.toJSONData()\r\n };\r\n if (options.data) {\r\n requestData['data'] = options.data;\r\n }\r\n var url = this.context.resolveEndpoint('SaveQuery', { modelId: modelId, queryId: queryId });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.put(url, requestData)\r\n .then(function (responseData) {\r\n return responseData.query;\r\n });\r\n };\r\n EqServerQueryStorage.prototype.removeQuery = function (options) {\r\n options = options || {};\r\n var context = this.context;\r\n var query = context.getQuery();\r\n var modelId = options.modelId || query.getModel().getId();\r\n var queryId = options.queryId || query.getId();\r\n var requestData = {\r\n 'modelId': modelId,\r\n 'queryId': queryId\r\n };\r\n if (options.data) {\r\n requestData['data'] = options.data;\r\n }\r\n var url = this.context.resolveEndpoint('RemoveQuery', { modelId: modelId, queryId: queryId });\r\n var http = this.context.getServices().getHttpClient();\r\n return http.delete(url, requestData).getPromise();\r\n };\r\n return EqServerQueryStorage;\r\n}());\r\nexport { EqServerQueryStorage };\r\n//# sourceMappingURL=eqs_query_storage.js.map","var DisplayFormatParser = /** @class */ (function () {\r\n function DisplayFormatParser() {\r\n this.formatStr = '';\r\n this.pos = 0;\r\n this.token = 'text';\r\n this.tokenText = '';\r\n }\r\n DisplayFormatParser.prototype.start = function (s) {\r\n this.formatStr = s;\r\n this.pos = 0;\r\n this.tokenText = '';\r\n };\r\n DisplayFormatParser.prototype.skipSpaces = function () {\r\n while (this.pos < this.formatStr.length && this.formatStr.charAt(this.pos) === ' ')\r\n this.pos++;\r\n };\r\n DisplayFormatParser.prototype.getToken = function () {\r\n return this.token;\r\n };\r\n DisplayFormatParser.prototype.getTokenText = function () {\r\n return this.tokenText;\r\n };\r\n DisplayFormatParser.prototype.next = function () {\r\n this.skipSpaces();\r\n if (this.pos >= this.formatStr.length)\r\n return false;\r\n var npos = 0;\r\n if (this.formatStr.charAt(this.pos) === '{') {\r\n npos = this.formatStr.indexOf('}', this.pos);\r\n if (npos < 0)\r\n return false;\r\n this.tokenText = this.formatStr.substring(this.pos, npos + 1);\r\n if (this.tokenText.indexOf('{expr') === 0 || this.tokenText.indexOf('{attr') === 0) {\r\n this.token = 'expression';\r\n }\r\n this.pos = npos + 1;\r\n }\r\n else if (this.formatStr.charAt(this.pos) === '[' && this.pos < this.formatStr.length - 1 && this.formatStr.charAt(this.pos + 1) === '[') {\r\n this.pos += 2;\r\n npos = this.formatStr.indexOf(']]', this.pos);\r\n this.token = 'function';\r\n this.tokenText = this.formatStr.substring(this.pos, npos);\r\n this.pos = npos + 2;\r\n }\r\n else {\r\n this.token = 'text';\r\n var npos1 = this.formatStr.indexOf('{', this.pos);\r\n if (npos1 < 0)\r\n npos1 = this.formatStr.length;\r\n var npos2 = this.formatStr.indexOf('[[', this.pos);\r\n if (npos2 < 0)\r\n npos2 = this.formatStr.length;\r\n npos = Math.min(npos1, npos2);\r\n this.tokenText = this.formatStr.substring(this.pos, npos).trim();\r\n this.pos = npos;\r\n }\r\n return true;\r\n };\r\n return DisplayFormatParser;\r\n}());\r\nexport { DisplayFormatParser };\r\n//# sourceMappingURL=display_format_parser.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { ExprTag } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { DisplayFormatParser } from '../../../utils/display_format_parser';\r\n;\r\nimport { SimpleColumnRendererCP } from './simple_column_renderer';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nvar AggrFuncColumnRendererCP = /** @class */ (function (_super) {\r\n __extends(AggrFuncColumnRendererCP, _super);\r\n function AggrFuncColumnRendererCP() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.displayFormatParser = new DisplayFormatParser();\r\n return _this;\r\n }\r\n AggrFuncColumnRendererCP.prototype.getClassesToAdd = function () {\r\n return _super.prototype.getClassesToAdd.call(this) + \" \" + this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-column-aggr\";\r\n };\r\n AggrFuncColumnRendererCP.prototype.getAttribute = function () {\r\n return this.panel\r\n .getContext()\r\n .getModel()\r\n .getAttributeByIdSafe(this.column.expr.args[0].value);\r\n };\r\n AggrFuncColumnRendererCP.prototype.getDefaultColumnCaption = function () {\r\n return this.getDefaultTitleText(this.baseAttr) + ' '\r\n + this.panel.getContext().getModel().getAggrFunctionCaption(this.column.expr.func);\r\n };\r\n AggrFuncColumnRendererCP.prototype.renderExpressionBlock = function () {\r\n var _this = this;\r\n var model = this.panel.getContext().getModel();\r\n var exprBlockBuilder = domel(\"div\")\r\n .addClass(this.cssPrefix + \"-expr-block\", this.cssPrefix + \"-expr-block-aggr\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n var format = model.getAggrFunctionFormat(this.column.expr.func);\r\n if (!format || format === '')\r\n return;\r\n var arrFormat = this.parseDisplayFormat(format);\r\n if (arrFormat.length === 0)\r\n return;\r\n var item = null;\r\n var arrLength = arrFormat.length;\r\n var _loop_1 = function (idx) {\r\n item = arrFormat[idx];\r\n if (item.type === 1) {\r\n if (this_1.isEditable()) {\r\n var functionLink_1 = domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .text(item.text)\r\n .on('click', function (ev) {\r\n ev.stopPropagation();\r\n _this.functionMenu.showMenu({\r\n anchor: functionLink_1.toDOM(),\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n if (data.id === \"CUSTOMSQL\") {\r\n _this.changeTypeToCustomSql();\r\n }\r\n else {\r\n _this.column.expr.func = data.id;\r\n _this.column.caption = '';\r\n _this.fireColumnChanged();\r\n }\r\n }\r\n });\r\n });\r\n exprBlockBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-colelement\", _this.cssPrefix + \"-aggrfuncelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(functionLink_1.toDOM()); });\r\n }\r\n else {\r\n exprBlockBuilder\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-colelement\", _this.cssPrefix + \"-aggrfuncelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('span', function (b) { return b\r\n .text(item.text)\r\n .title(item.text); }); });\r\n }\r\n }\r\n else if (item.type === 2) {\r\n exprBlockBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-colelement\", _this.cssPrefix + \"-attrelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(_this.renderBaseExpression()); });\r\n }\r\n else if (item.type === 3) {\r\n exprBlockBuilder\r\n .addChild('span', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-colelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .text(item.text)\r\n .title(item.text); });\r\n }\r\n };\r\n var this_1 = this;\r\n for (var idx = 0; idx < arrLength; idx++) {\r\n _loop_1(idx);\r\n }\r\n return exprBlockBuilder.toDOM();\r\n };\r\n AggrFuncColumnRendererCP.prototype.renderColumnTypeButton = function () {\r\n var button = _super.prototype.renderColumnTypeButton.call(this);\r\n if (button) {\r\n button.firstElementChild.classList.add('aggregated');\r\n button.firstElementChild.setAttribute('title', i18n.getText('ButtonToSimple'));\r\n }\r\n return button;\r\n };\r\n AggrFuncColumnRendererCP.prototype.baseExpressionItemSelectedCallback = function (data, item) {\r\n var attrid = data.id;\r\n //this.column.expr.args[0].id = attrid;\r\n this.column.expr.args[0].setValue(attrid, true);\r\n this.column.caption = '';\r\n this.fireColumnChanged();\r\n return false;\r\n };\r\n AggrFuncColumnRendererCP.prototype.changeTypeToSimple = function () {\r\n var query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged();\r\n };\r\n AggrFuncColumnRendererCP.prototype.parseDisplayFormat = function (format) {\r\n if (!format)\r\n return [];\r\n var result = [];\r\n var parser = this.displayFormatParser;\r\n parser.start(format);\r\n while (parser.next()) {\r\n var token = parser.getToken();\r\n var tokenText = parser.getTokenText();\r\n if (token === 'function') {\r\n result.push({ type: 1, text: tokenText });\r\n }\r\n else if (token === 'expression') {\r\n result.push({ type: 2 });\r\n }\r\n else if (token === 'text') {\r\n result.push({ type: 3, text: tokenText });\r\n }\r\n }\r\n return result;\r\n };\r\n AggrFuncColumnRendererCP.prototype.changeTypeHandler = function (ev) {\r\n this.changeTypeToSimple();\r\n };\r\n AggrFuncColumnRendererCP.prototype.processExtraButtonMenuItems = function (action, evt) {\r\n this.changeTypeToSimple();\r\n return true;\r\n };\r\n AggrFuncColumnRendererCP.prototype.getExtraButtonMenuItems = function () {\r\n return [{\r\n id: '__group',\r\n text: i18n.getText('ColTypeGroup'),\r\n items: [{\r\n id: 'type',\r\n text: i18n.getText('ColTypeSimple')\r\n }]\r\n }];\r\n };\r\n return AggrFuncColumnRendererCP;\r\n}(SimpleColumnRendererCP));\r\nexport { AggrFuncColumnRendererCP };\r\n//# sourceMappingURL=aggrfunc_column_renderer.js.map","import { i18n } from '@easydata/core';\r\nimport { QueryChangeAction, SortDirection } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nvar ColumnRendererSB = /** @class */ (function () {\r\n function ColumnRendererSB(bar, column, slot) {\r\n this.functionMenu = null;\r\n this.isMouseOverBlock = false;\r\n this.keepShowingButtons = false;\r\n this.bar = bar;\r\n this.column = column;\r\n this.element = slot;\r\n }\r\n Object.defineProperty(ColumnRendererSB.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-sb';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ColumnRendererSB.prototype.render = function () {\r\n this.baseAttr = this.getAttribute();\r\n var builder = domel('div');\r\n builder.data('id', this.column.id);\r\n if (this.element) {\r\n //to remove all event listeners\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n this.element = builder.toDOM();\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderCaptionBlock());\r\n if (this.isEditable()) {\r\n builder\r\n .addChildElement(this.renderSortingButton());\r\n }\r\n return this.element;\r\n };\r\n ColumnRendererSB.prototype.fireColumnChanged = function () {\r\n this.column.fireChangedEvent();\r\n };\r\n ColumnRendererSB.prototype.refresh = function () {\r\n this.render();\r\n };\r\n ColumnRendererSB.prototype.getAttribute = function () {\r\n var model = this.bar.getContext().getModel();\r\n return model.getAttributeById(this.column.expr.value);\r\n };\r\n ColumnRendererSB.prototype.isEditable = function () {\r\n return this.column.enabled && !this.column.isReadOnly();\r\n };\r\n ColumnRendererSB.prototype.renderCaptionBlock = function () {\r\n var _this = this;\r\n if (!this.column.caption || this.column.caption == '') {\r\n this.column.caption = this.getDefaultCaption();\r\n }\r\n function getArrow(sd) {\r\n switch (sd) {\r\n case SortDirection.Ascending:\r\n return ' ↑';\r\n case SortDirection.Descending:\r\n return ' ↓';\r\n default:\r\n return '';\r\n }\r\n }\r\n var text = this.column.caption;\r\n if (!this.isEditable()) {\r\n text += getArrow(this.column.sorting);\r\n }\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-captionelement\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (b) { return b\r\n .title(_this.column.caption)\r\n .text(text); })\r\n .toDOM();\r\n };\r\n ColumnRendererSB.prototype.renderSortingButton = function () {\r\n var _this = this;\r\n var sortButtonCssClass = eqCssPrefix + \"-column-sortbutton\";\r\n var sortButtonDirectionCssClass = sortButtonCssClass;\r\n switch (this.column.sorting) {\r\n case SortDirection.None:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-none\";\r\n break;\r\n case SortDirection.Ascending:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-asc\";\r\n break;\r\n case SortDirection.Descending:\r\n sortButtonDirectionCssClass = sortButtonCssClass + \"-desc\";\r\n break;\r\n }\r\n var builder = domel('div')\r\n .addClass(this.cssPrefix + \"-colelement\", this.cssPrefix + \"-sortimage-placeholder\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-img-sorting\", sortButtonDirectionCssClass)\r\n .title(i18n.getText('ButtonSorting')); })\r\n .on('touchstart click', function (ev) { return _this.buttonSortingClickHandler(ev, builder.toDOM()); });\r\n return builder.toDOM();\r\n };\r\n ColumnRendererSB.prototype.buttonSortingClickHandler = function (ev, anchor) {\r\n var _this = this;\r\n ev.stopPropagation();\r\n this.keepShowingButtons = true;\r\n var menu = this.bar.sortMenu;\r\n menu.showMenu({\r\n anchor: anchor,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n var strToSortDirection = function (str) {\r\n if (str == 'None') {\r\n return SortDirection.None;\r\n }\r\n else if (str == \"Ascending\") {\r\n return SortDirection.Ascending;\r\n }\r\n else if (str == \"Descending\") {\r\n return SortDirection.Descending;\r\n }\r\n };\r\n if (data.id == 'None' || data.id == \"Ascending\" || data.id == \"Descending\") {\r\n var query = _this.bar.getContext().getQuery();\r\n if (_this.column.isJustSorted() && data.id == 'None') {\r\n query.removeColumn(_this.column, _this.bar);\r\n query.fireColumnsChangedEvent(QueryChangeAction.Delete, _this.column, true);\r\n }\r\n else {\r\n _this.column.sorting = strToSortDirection(data.id);\r\n _this.column.sortIndex = query.getColumnSortIndex(_this.column);\r\n _this.fireColumnChanged();\r\n }\r\n }\r\n },\r\n menuClosedCallback: function () {\r\n _this.keepShowingButtons = false;\r\n }\r\n });\r\n return false;\r\n };\r\n ColumnRendererSB.prototype.getDefaultCaption = function () {\r\n return this.getDefaultTitleText(this.baseAttr);\r\n };\r\n ColumnRendererSB.prototype.getDefaultTitleText = function (attr) {\r\n var format = this.bar.options.titleElementFormat || this.bar.options.attrElementFormat;\r\n var model = this.bar.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n ColumnRendererSB.prototype.getClassesToAdd = function () {\r\n return this.cssPrefix + \"-row \" + this.cssPrefix + \"-row-column-entattr\";\r\n };\r\n ColumnRendererSB.prototype.getUIS = function () {\r\n return this.bar\r\n .getContext().getModel()\r\n .checkAttrProperty(this.column.expr.value, \"useInSorting\");\r\n };\r\n return ColumnRendererSB;\r\n}());\r\nexport { ColumnRendererSB };\r\n//# sourceMappingURL=column_renderer_sp.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { Widget, WidgetGroup, QueryChangeAction, QueryChangePart, SortDirection, ExprTag } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { ColumnRendererSB } from './renderers/sortingbar/column_renderer_sp';\r\nvar SortingBar = /** @class */ (function (_super) {\r\n __extends(SortingBar, _super);\r\n function SortingBar(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n showAddRow: true,\r\n attrElementFormat: '{entity} {attr}',\r\n titleElementFormat: null,\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n adjustHeight: true,\r\n itemRenderedCallback: null\r\n },\r\n };\r\n _this.sortMenuList = [\r\n { id: 'None', text: i18n.getText('CmdNotSorted') },\r\n { id: 'Ascending', text: i18n.getText('CmdAscending') },\r\n { id: 'Descending', text: i18n.getText('CmdDescending') }\r\n ];\r\n domel(_this.slot)\r\n .addClass(_this.cssPrefix + \"-panel\")\r\n .addClass(browserUtils.getMobileCssClass());\r\n _this.group = WidgetGroup.Query;\r\n return _this;\r\n }\r\n Object.defineProperty(SortingBar.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return \"eqjs-sb\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SortingBar.prototype.getWidgetType = function () {\r\n return 'sortingBar';\r\n };\r\n SortingBar.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n };\r\n SortingBar.prototype.setOptions = function (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n };\r\n SortingBar.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n //if something has changed, and that change is related to columns\r\n var edata = event.data;\r\n if (!edata || (edata.part != QueryChangePart.SortingColumns\r\n && edata.part != QueryChangePart.Columns && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n var columns = edata.changee;\r\n var modifyColumn_1 = function (column) {\r\n var colEl = _this.columnsBlock.querySelector(\"div[data-id='\" + column.id + \"']\");\r\n if (colEl) {\r\n _this.renderColumn(column, colEl);\r\n }\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return modifyColumn_1(col); });\r\n }\r\n else {\r\n modifyColumn_1(columns);\r\n }\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n var columns = edata.changee;\r\n var addColumn_1 = function (column) {\r\n _this.addColumnElement(column);\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return addColumn_1(col); });\r\n }\r\n else {\r\n addColumn_1(columns);\r\n }\r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n var columns = edata.changee;\r\n var deleteColumn_1 = function (column) {\r\n var colEl = _this.columnsBlock.querySelector(\"div[data-id='\" + column.id + \"']\");\r\n if (colEl)\r\n _this.columnsBlock.removeChild(colEl);\r\n };\r\n if (Array.isArray(columns)) {\r\n columns.forEach(function (col) { return deleteColumn_1(col); });\r\n }\r\n else {\r\n deleteColumn_1(columns);\r\n }\r\n break;\r\n }\r\n default:\r\n _this.refresh();\r\n break;\r\n }\r\n });\r\n };\r\n SortingBar.prototype.detachQueryObserver = function () {\r\n if (this.queryEventCallbackId) {\r\n var query = this.getContext().getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n };\r\n SortingBar.prototype.getQuery = function () {\r\n return this.getContext().getQuery();\r\n };\r\n SortingBar.prototype.destroyCore = function () {\r\n this.detachQueryObserver();\r\n this.clear();\r\n };\r\n SortingBar.prototype.refreshCore = function () {\r\n this.clear();\r\n this.render();\r\n };\r\n SortingBar.prototype.renderAddRowButton = function () {\r\n var _this = this;\r\n domel(this.addRowButton)\r\n .addClass(eqCssPrefix + \"-addrow\", this.cssPrefix + \"-addrow\", eqCssPrefix + \"-addrow-empty\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .title(i18n.getText('CmdClickToAddColumn'))\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', function (e) {\r\n e.preventDefault();\r\n _this.showEntitiesMenu({\r\n anchor: e.target,\r\n selectedIds: null,\r\n itemSelectedCallback: function (data, items) {\r\n var attrid = data.id;\r\n _this.addNewColumn(attrid);\r\n return false;\r\n }\r\n });\r\n }); });\r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n };\r\n SortingBar.prototype.showEntitiesMenu = function (menuOptions) {\r\n this.entitiesMenu.showMenu(menuOptions);\r\n };\r\n SortingBar.prototype.createEntitiesMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n var entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: false, addUIS: true });\r\n var options = { items: entitiesList,\r\n adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n this.entitiesMenu = new PopupMenu(options);\r\n };\r\n SortingBar.prototype.createSortMenu = function () {\r\n var model = this.getContext().getModel();\r\n if (!model || model.isEmpty())\r\n return null;\r\n var menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-SortMenu';\r\n }\r\n var items = this.sortMenuList;\r\n var menuOptions = { \"items\": items, id: menuId };\r\n menuOptions.searchBoxAlwaysShown = false;\r\n this.sortMenu = new PopupMenu(menuOptions);\r\n };\r\n SortingBar.prototype.render = function () {\r\n var _this = this;\r\n this.createEntitiesMenu();\r\n this.createSortMenu();\r\n this.columnsBlock =\r\n domel('div')\r\n .addClass(this.cssPrefix + \"-columns\")\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n if (this.options.showAddRow) {\r\n this.addRowButton =\r\n domel('div')\r\n .toDOM();\r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n else {\r\n domel(this.slot)\r\n .addChildElement(this.addRowButton);\r\n }\r\n this.renderAddRowButton();\r\n }\r\n domel(this.slot)\r\n .addChildElement(this.columnsBlock);\r\n var query = this.context.getQuery();\r\n var columns = query.getColumns().concat(query.getJustSortedColumns());\r\n columns.forEach(function (column, index) {\r\n var slot = _this.renderColumn(column);\r\n _this.columnsBlock.appendChild(slot);\r\n });\r\n };\r\n SortingBar.prototype.addNewColumn = function (attrId) {\r\n var _this = this;\r\n var model = this.getContext().getModel();\r\n var query = this.getContext().getQuery();\r\n var getColumnByAttrId = function (attrid) {\r\n var attribute = model.getAttributeById(attrid);\r\n if (!attribute) {\r\n return null;\r\n }\r\n if (!attribute.useInSorting) {\r\n if (attribute.lookupAttr) {\r\n attrid = attribute.lookupAttr;\r\n attribute = model.getAttributeById(attrid);\r\n if (!attribute || !attribute.useInSorting) {\r\n return null;\r\n }\r\n }\r\n else\r\n return null;\r\n }\r\n var column = query.createColumn(true);\r\n column.caption = _this.getDefaultColumnCaption(attribute);\r\n column.sorting = SortDirection.Ascending;\r\n column.sortIndex = _this.getQuery().getColumnSortIndex(column);\r\n column.expr.tag = ExprTag.EntityAttribute;\r\n //column.expr.id = attrid;\r\n column.expr.setValue(attrid, true);\r\n column.params.concat(attribute.params);\r\n return column;\r\n };\r\n if (!this.getContext().getQuery()) {\r\n return;\r\n }\r\n return this.addColumn(getColumnByAttrId(attrId));\r\n };\r\n SortingBar.prototype.getDefaultColumnCaption = function (attr) {\r\n var format = this.options.titleElementFormat || this.options.attrElementFormat;\r\n var model = this.getContext().getModel();\r\n return model.getAttributeText(attr, format);\r\n };\r\n SortingBar.prototype.addColumn = function (column) {\r\n var query = this.getContext().getQuery();\r\n if (!query) {\r\n return;\r\n }\r\n column = this.checkColumn(column);\r\n if (!column) {\r\n return;\r\n }\r\n column = query.addColumn({\r\n caption: column.caption,\r\n attributeId: column.expr.value,\r\n sorting: column.sorting,\r\n sortIndex: column.sortIndex,\r\n justsorted: true\r\n });\r\n query.fireChangedEvent({\r\n part: QueryChangePart.SortingColumns,\r\n action: QueryChangeAction.Add,\r\n changee: column\r\n });\r\n return column;\r\n };\r\n SortingBar.prototype.checkColumn = function (col) {\r\n var query = this.getContext().getQuery();\r\n var columns = query.getColumns()\r\n .concat(query.getJustSortedColumns());\r\n var colJson = JSON.stringify(col.expr.saveToData());\r\n for (var i = 0; i < columns.length; i++) {\r\n var qcolJson = JSON.stringify(columns[i].expr.saveToData());\r\n if (qcolJson === colJson) {\r\n return null;\r\n }\r\n }\r\n return col;\r\n };\r\n SortingBar.prototype.renderColumn = function (column, elem) {\r\n var renderer = new ColumnRendererSB(this, column, elem);\r\n if (renderer) {\r\n var columnSlot = renderer.render();\r\n return columnSlot;\r\n }\r\n return null;\r\n };\r\n //adds one column to the bar on the specified position\r\n SortingBar.prototype.addColumnElement = function (column) {\r\n var newColBlock = this.renderColumn(column);\r\n this.columnsBlock.appendChild(newColBlock);\r\n if (this.options.columnRenderedCallback) {\r\n this.options.columnRenderedCallback(newColBlock);\r\n }\r\n };\r\n SortingBar.prototype.clear = function () {\r\n this.slot.innerHTML = '';\r\n };\r\n return SortingBar;\r\n}(Widget));\r\nexport { SortingBar };\r\n//# sourceMappingURL=sorting_bar.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup } from '@easyquery/core';\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ChartFacet } from '../facets/chart_facet';\r\nimport { PivotTableFacet } from '../facets/pivot_table_facet';\r\nimport { DataTableFacet } from '../facets/datatable_facet';\r\nvar FacetContainer = /** @class */ (function (_super) {\r\n __extends(FacetContainer, _super);\r\n function FacetContainer(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.facets = [];\r\n _this.options = {};\r\n _this.group = WidgetGroup.Result;\r\n return _this;\r\n }\r\n FacetContainer.prototype.destroyCore = function () {\r\n for (var _i = 0, _a = this.facets; _i < _a.length; _i++) {\r\n var facet = _a[_i];\r\n facet.destroy();\r\n }\r\n this.clear();\r\n };\r\n FacetContainer.prototype.createFacetTab = function (type) {\r\n var options = this.options[type];\r\n switch (type) {\r\n case FacetType.Chart:\r\n return new ChartFacet(this, options);\r\n case FacetType.PivotTable:\r\n return new PivotTableFacet(this, options);\r\n default:\r\n return new DataTableFacet(this, options);\r\n }\r\n };\r\n FacetContainer.prototype.getQuery = function () {\r\n return this.getContext().getQuery();\r\n };\r\n return FacetContainer;\r\n}(Widget));\r\nexport { FacetContainer };\r\n//# sourceMappingURL=facet_container.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { WidgetGroup, QueryChangePart, QueryChangeAction, } from '@easyquery/core';\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { FacetType } from '../types/facet_type';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { ExportDialog } from '../dialog/export_dialog';\r\nimport { FacetContainer } from './facet_container';\r\nvar ResultFacetsPanel = /** @class */ (function (_super) {\r\n __extends(ResultFacetsPanel, _super);\r\n function ResultFacetsPanel(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.activeFacetIndex = -1;\r\n _this.firstRender = true;\r\n _this.options = {\r\n showExportButton: true,\r\n showRefreshButton: true,\r\n showMaximizeButton: true,\r\n maximize2Window: false,\r\n showProcessIndicator: true,\r\n facetTypes: [FacetType.DataGrid, FacetType.Chart, FacetType.PivotTable]\r\n };\r\n _this.menuItems = [\r\n { id: FacetType.DataGrid, text: i18n.getText('Facets', 'AddMenuItems', 'DataTable') },\r\n { id: FacetType.Chart, text: i18n.getText('Facets', 'AddMenuItems', 'Chart') },\r\n { id: FacetType.PivotTable, text: i18n.getText('Facets', 'AddMenuItems', 'Pivot') }\r\n ];\r\n _this.menuItemsFilter = function (item) {\r\n if (_this.options.facetTypes.indexOf(item.id) < 0)\r\n return false;\r\n if (item.id === FacetType.DataGrid) {\r\n return _this.facets.filter(function (facet) { return facet.getType() == FacetType.DataGrid; }).length === 0;\r\n }\r\n return true;\r\n };\r\n if (!_this.slot.classList.contains(_this.cssPrefix + \"-panel\")) {\r\n _this.slot.classList.add(_this.cssPrefix + \"-panel\");\r\n }\r\n _this.renderProcessBlock();\r\n return _this;\r\n }\r\n Object.defineProperty(ResultFacetsPanel.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'eqjs-facets';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ResultFacetsPanel.prototype.getWidgetType = function () {\r\n return 'facetsPanel';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n ResultFacetsPanel.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n this.loadFacets();\r\n };\r\n ResultFacetsPanel.prototype.attachQueryObserver = function () {\r\n var _this = this;\r\n var query = this.getQuery();\r\n if (this.queryEventCallbackId) {\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n this.queryEventCallbackId = query.addChangedCallback(function (event) {\r\n //if something has changed, and that change is related to columns\r\n var edata = event.data;\r\n if (edata.part != QueryChangePart.All) {\r\n return;\r\n }\r\n if (edata.source == _this) {\r\n return;\r\n }\r\n _this.reloadFacets();\r\n _this.refreshCore(true);\r\n });\r\n };\r\n ResultFacetsPanel.prototype.refreshCore = function (force) {\r\n if (force === void 0) { force = false; }\r\n if (this.firstRender || force) {\r\n this.clear();\r\n this.createAddMenu();\r\n this.render();\r\n }\r\n this.validateAddFacetButton();\r\n this.renderActiveFacet();\r\n this.updateTotalRecords();\r\n };\r\n ResultFacetsPanel.prototype.createAddMenu = function () {\r\n this.addMenu = new PopupMenu({\r\n items: this.menuItems,\r\n id: \"FacetType-List\"\r\n });\r\n };\r\n ResultFacetsPanel.prototype.updateTotalRecords = function () {\r\n var context = this.getContext();\r\n var total = context.resultTable.getTotal();\r\n this.recordsDiv.innerHTML = i18n.getText('Facets', 'TotalRecordsLabel') + ' ' + total;\r\n if (total == 0) {\r\n domel(this.exportDiv).hide();\r\n }\r\n else {\r\n domel(this.exportDiv).show();\r\n }\r\n };\r\n ResultFacetsPanel.prototype.renderProcessBlock = function () {\r\n var html = '
';\r\n ;\r\n this._processBlock = domel('div')\r\n .addClass(this.cssPrefix + \"-spinner\")\r\n .addChild('div', function (b) { return b\r\n .addClass(eqCssPrefix + \"-progress-win8\", browserUtils.getMobileCssClass())\r\n .addHtml(html); })\r\n .toDOM();\r\n };\r\n ResultFacetsPanel.prototype.onProcessStartCore = function () {\r\n if (this.options.showProcessIndicator) {\r\n // FacetsPanel might be not rendered yet, so \r\n // it has no body\r\n if (!this._processBlock.parentNode && this.bodyDiv) {\r\n this.bodyDiv.childNodes.forEach(function (el) {\r\n domel(el).hide();\r\n });\r\n this.bodyDiv.appendChild(this._processBlock);\r\n }\r\n }\r\n };\r\n ResultFacetsPanel.prototype.onProcessEndCore = function () {\r\n if (this.options.showProcessIndicator) {\r\n if (this._processBlock.parentNode) {\r\n try {\r\n this._processBlock.parentNode\r\n .removeChild(this._processBlock);\r\n }\r\n catch (e) {\r\n }\r\n finally {\r\n this.renderActiveFacet(false);\r\n }\r\n }\r\n }\r\n };\r\n ResultFacetsPanel.prototype.render = function () {\r\n var _this = this;\r\n this.firstRender = false;\r\n this.headerDiv = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-header\")\r\n .toDOM();\r\n this.tabsDiv =\r\n domel('div', this.headerDiv)\r\n .addClass(this.cssPrefix + \"-tabs\")\r\n .toDOM();\r\n this.tabsUl = domel('ul', this.tabsDiv)\r\n .addClass(this.cssPrefix + \"-nav-tabs\")\r\n .toDOM();\r\n this.bodyDiv =\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-body\")\r\n .toDOM();\r\n for (var _i = 0, _a = this.facets; _i < _a.length; _i++) {\r\n var facet = _a[_i];\r\n this.renderFacet(facet);\r\n }\r\n domel(this.tabsDiv)\r\n .addChild('div', function (b) { return _this.addFacetButton = b\r\n .addClass(_this.cssPrefix + \"-add-button\")\r\n .title(i18n.getText('Facets', 'NewFacetTitle'))\r\n .addChild('a', function (b) { return b\r\n .attr('href', 'javascript:void(0)'); })\r\n .on('click', function (e) { return _this.addClickHandler(e); })\r\n .toDOM(); });\r\n var manageDiv = domel('div', this.headerDiv)\r\n .addClass(this.cssPrefix + \"-manage\")\r\n .toDOM();\r\n this.recordsDiv = domel('div', manageDiv)\r\n .addClass(this.cssPrefix + \"-total-recs\")\r\n .toDOM();\r\n if (this.options.showRefreshButton || this.options.showExportButton || this.options.showMaximizeButton) {\r\n var bdb = domel('div', manageDiv)\r\n .addClass(this.cssPrefix + \"-total-buttons\")\r\n .toDOM();\r\n if (this.options.showExportButton) {\r\n this.exportDiv = domel('button', bdb)\r\n .on('click', function () { return _this.exportHandler(); })\r\n .addClass(this.cssPrefix + \"-button\")\r\n .addClass(this.cssPrefix + \"-button-export\")\r\n .title(i18n.getText('Facets', 'ExportBtnTitle'))\r\n .toDOM();\r\n }\r\n if (this.options.showRefreshButton) {\r\n domel('button', bdb)\r\n .on('click', function () { return _this.refreshHandler(); })\r\n .addClass(this.cssPrefix + \"-button\")\r\n .addClass(this.cssPrefix + \"-button-refresh\")\r\n .title(i18n.getText('Facets', 'RefreshBtnTitle'));\r\n }\r\n if (this.options.showMaximizeButton) {\r\n this.maximizeButton = domel('button', bdb)\r\n .on('click', function () { return _this.options.maximize2Window ? _this.maximizeHandler(true) : _this.maximizeHandler(); })\r\n .addClass(this.cssPrefix + \"-button\")\r\n .addClass(this.cssPrefix + \"-button-maximize\")\r\n .title(i18n.getText('Facets', 'MaximizeBtnTitle'))\r\n .toDOM();\r\n }\r\n }\r\n };\r\n ResultFacetsPanel.prototype.refreshHandler = function () {\r\n var context = this.getContext();\r\n context.fetchData({\r\n success: function () {\r\n // possibly we should move this logic to context\r\n context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n });\r\n };\r\n ResultFacetsPanel.prototype.exportHandler = function () {\r\n var context = this.getContext();\r\n new ExportDialog(context)\r\n .show();\r\n };\r\n ResultFacetsPanel.prototype.maximizeHandler = function (toWindow) {\r\n var b = domel(this.slot);\r\n if (toWindow) {\r\n b.toggleClass(eqCssPrefix + \"-maximized-2window\");\r\n if (this.slot.classList.contains(eqCssPrefix + \"-maximized-2window\")) {\r\n this.maximizeButton.title = i18n.getText('Facets', 'RestoreBtnTitle');\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-maximize\", false);\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-restore\", true);\r\n }\r\n else {\r\n this.maximizeButton.title = i18n.getText('Facets', 'MaximizeBtnTitle');\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-restore\", false);\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-maximize\", true);\r\n }\r\n }\r\n else {\r\n var isMaximized_1 = !this.slot.hasAttribute('data-is-maximized');\r\n if (isMaximized_1) {\r\n this.slot.setAttribute('data-is-maximized', '');\r\n this.maximizeButton.title = i18n.getText('Facets', 'RestoreBtnTitle');\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-maximize\", false);\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-restore\", true);\r\n }\r\n else {\r\n this.slot.removeAttribute('data-is-maximized');\r\n this.maximizeButton.title = i18n.getText('Facets', 'MaximizeBtnTitle');\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-restore\", false);\r\n this.maximizeButton.classList.toggle(this.cssPrefix + \"-button-maximize\", true);\r\n }\r\n var arrToHide = document.querySelectorAll('[data-hide-on-max]');\r\n arrToHide.forEach(function (el) {\r\n if (isMaximized_1) {\r\n el.setAttribute('style', 'display: none;');\r\n }\r\n else {\r\n el.removeAttribute('style');\r\n }\r\n });\r\n }\r\n this.facets.forEach(function (facetTab) { return facetTab.onResize(); });\r\n };\r\n ResultFacetsPanel.prototype.renderActiveFacet = function (refresh) {\r\n var _this = this;\r\n if (refresh === void 0) { refresh = true; }\r\n this.tabsUl.querySelectorAll('li') //`.${this.cssPrefix}-header-item.${this.cssPrefix}-facet`)\r\n .forEach(function (el, index) {\r\n if (el.classList.contains('active')) {\r\n el.classList.remove('active');\r\n }\r\n if (_this.activeFacetIndex === index) {\r\n el.classList.add('active');\r\n }\r\n });\r\n this.bodyDiv.querySelectorAll(\".\" + eqCssPrefix + \"-facet\")\r\n .forEach(function (el, index) {\r\n domel(el).hide();\r\n if (_this.activeFacetIndex === index) {\r\n domel(el).show();\r\n if (refresh) {\r\n _this.facets[index].refresh();\r\n }\r\n }\r\n });\r\n };\r\n ResultFacetsPanel.prototype.renderFacet = function (facet) {\r\n this.renderFacetTab(facet);\r\n var body = this.renderFacetSlot(facet);\r\n facet.init(body);\r\n };\r\n ResultFacetsPanel.prototype.renderFacetTab = function (facet) {\r\n var _this = this;\r\n return domel('li', this.tabsUl)\r\n //.addClass(`${this.cssPrefix}-header-item`, `${this.cssPrefix}-facet`)\r\n //facet settings button\r\n .addChild('span', function (b) { return b\r\n .addClass(eqCssPrefix + \"-facet-settings\")\r\n .on('click', function (e) {\r\n e.stopPropagation();\r\n _this.settingsClickHandler(facet);\r\n }); })\r\n .addChild('a', function (b) { return b\r\n .addText(facet.title)\r\n .attr('href', 'javascript:void(0)'); })\r\n //facet close button\r\n .addChild('span', function (b) { return b\r\n .addClass(eqCssPrefix + \"-facet-close\")\r\n .on('click', function (e) {\r\n e.stopPropagation();\r\n _this.closeClickHandler(facet);\r\n }); })\r\n .on('click', function (e) { return _this.selectClickHandler(facet); })\r\n .toDOM();\r\n };\r\n ResultFacetsPanel.prototype.renderFacetSlot = function (facet) {\r\n var element = domel('div', this.bodyDiv)\r\n .addClass(eqCssPrefix + \"-facet\")\r\n .hide()\r\n .toDOM();\r\n return element;\r\n };\r\n ResultFacetsPanel.prototype.refreshFacetTabs = function () {\r\n var _this = this;\r\n this.tabsUl.querySelectorAll('li') //`.${this.cssPrefix}-header-item.${this.cssPrefix}-facet`)\r\n .forEach(function (item) {\r\n _this.tabsUl.removeChild(item);\r\n });\r\n for (var _i = 0, _a = this.facets; _i < _a.length; _i++) {\r\n var facet = _a[_i];\r\n this.renderFacetTab(facet);\r\n }\r\n };\r\n ResultFacetsPanel.prototype.removeFacet = function (facet) {\r\n var index = this.facets.indexOf(facet);\r\n if (index >= 0) {\r\n this.facets.splice(index, 1);\r\n var header = this.tabsUl.childNodes[index];\r\n this.tabsUl.removeChild(header);\r\n var body = this.bodyDiv.childNodes[index];\r\n this.bodyDiv.removeChild(body);\r\n if (this.facets.length > 0) {\r\n this.activeFacetIndex =\r\n index < this.facets.length\r\n ? index\r\n : this.facets.length - 1;\r\n }\r\n else {\r\n this.activeFacetIndex = -1;\r\n }\r\n this.renderActiveFacet();\r\n this.validateAddFacetButton();\r\n }\r\n };\r\n ResultFacetsPanel.prototype.addClickHandler = function (ev) {\r\n var _this = this;\r\n this.addMenu.showMenu({\r\n anchor: ev.target,\r\n itemFilterCallback: this.menuItemsFilter,\r\n itemSelectedCallback: function (data) {\r\n var facet = _this.createFacetTab(data.id);\r\n var facetSlot = _this.renderFacetSlot(facet);\r\n facet.init(facetSlot);\r\n facet.showSettingsDialog()\r\n .then(function (submited) {\r\n if (submited) {\r\n _this.facets.push(facet);\r\n _this.activeFacetIndex = _this.facets.length - 1;\r\n _this.renderFacetTab(facet);\r\n _this.renderActiveFacet();\r\n _this.saveFacets();\r\n }\r\n else {\r\n _this.bodyDiv.removeChild(facetSlot);\r\n }\r\n //this.validateAddFacetButton();\r\n })\r\n .catch(function (error) { return console.error(error); });\r\n }\r\n });\r\n };\r\n ResultFacetsPanel.prototype.selectClickHandler = function (facet) {\r\n var index = this.facets.indexOf(facet);\r\n this.setActiveFacet(index);\r\n };\r\n ResultFacetsPanel.prototype.settingsClickHandler = function (facet) {\r\n var _this = this;\r\n facet.showSettingsDialog()\r\n .then(function (submited) {\r\n if (submited) {\r\n _this.refreshFacetTabs();\r\n _this.renderActiveFacet();\r\n _this.saveFacets();\r\n }\r\n })\r\n .catch(function (error) { return console.error(error); });\r\n };\r\n ResultFacetsPanel.prototype.closeClickHandler = function (facet) {\r\n var _this = this;\r\n var ds = this.getDialogService();\r\n ds.openConfirm(i18n.getText('Facets', 'RemoveFacetDlgTitle'), i18n.getText('Facets', 'RemoveFacetDlgContent')\r\n .replace('{facetTitle}', facet.title))\r\n .then(function (confirmed) {\r\n if (confirmed) {\r\n _this.removeFacet(facet);\r\n _this.saveFacets();\r\n }\r\n })\r\n .catch(function (error) { return console.error(error); });\r\n };\r\n ResultFacetsPanel.prototype.clear = function () {\r\n this.firstRender = true;\r\n this.slot.innerHTML = \"\";\r\n };\r\n ResultFacetsPanel.prototype.createDefaultFacetIfNotExist = function () {\r\n if (this.facets.length === 0) {\r\n var facet = this.createFacetTab(FacetType.DataGrid);\r\n this.facets.push(facet);\r\n this.activeFacetIndex = 0;\r\n }\r\n };\r\n ResultFacetsPanel.prototype.validateAddFacetButton = function () {\r\n this.addFacetButton.hidden = this.addMenu.getItems()\r\n .filter(this.menuItemsFilter).length == 0;\r\n };\r\n ResultFacetsPanel.prototype.setActiveFacet = function (index) {\r\n if (this.activeFacetIndex != index) {\r\n this.activeFacetIndex = index;\r\n this.renderActiveFacet();\r\n this.saveFacets(true);\r\n }\r\n };\r\n ResultFacetsPanel.prototype.setOptions = function (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n };\r\n ResultFacetsPanel.prototype.getDialogService = function () {\r\n return this.getContext()\r\n .getServices()\r\n .getDialogService();\r\n };\r\n ResultFacetsPanel.prototype.saveFacets = function (isActivate) {\r\n if (isActivate === void 0) { isActivate = false; }\r\n var query = this.getQuery();\r\n query.innerData = query.innerData || {};\r\n query.innerData.facets = {\r\n active: this.activeFacetIndex,\r\n items: this.facets.map(function (f) { return f.saveToData(); })\r\n };\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Facets,\r\n action: isActivate ? QueryChangeAction.Activate : QueryChangeAction.All,\r\n source: this\r\n });\r\n };\r\n ResultFacetsPanel.prototype.reloadFacets = function () {\r\n for (var _i = 0, _a = this.facets; _i < _a.length; _i++) {\r\n var facet = _a[_i];\r\n facet.destroy();\r\n }\r\n this.loadFacets();\r\n };\r\n ResultFacetsPanel.prototype.loadFacets = function () {\r\n var query = this.getQuery();\r\n this.facets = [];\r\n if (query.innerData && query.innerData.facets) {\r\n var items = query.innerData.facets.items;\r\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\r\n var fd = items_1[_i];\r\n var facet = this.createFacetTab(fd.type);\r\n facet.loadFromData(fd);\r\n this.facets.push(facet);\r\n }\r\n var active = query.innerData.facets.active;\r\n this.activeFacetIndex = (active >= 0)\r\n ? active\r\n : this.facets.length - 1;\r\n }\r\n else {\r\n this.createDefaultFacetIfNotExist();\r\n }\r\n };\r\n return ResultFacetsPanel;\r\n}(FacetContainer));\r\nexport { ResultFacetsPanel };\r\n//# sourceMappingURL=result_facets_panel.js.map","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { utils } from '../utils/utils';\r\nimport { HttpActionResult } from './http_action_result';\r\nimport { HttpMethod } from './http_method';\r\nimport { HttpRequest } from './http_request';\r\nvar HttpResponseError = /** @class */ (function (_super) {\r\n __extends(HttpResponseError, _super);\r\n function HttpResponseError(status, message) {\r\n var _this = _super.call(this, message) || this;\r\n _this.status = status;\r\n return _this;\r\n }\r\n return HttpResponseError;\r\n}(Error));\r\nexport { HttpResponseError };\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n this.defaultHeaders = {};\r\n this.customPayload = undefined;\r\n }\r\n Object.defineProperty(HttpClient.prototype, \"responseBody\", {\r\n /** Gets the response body for the latest request */\r\n get: function () {\r\n return this._responseBody;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(HttpMethod.Get, url, null, options);\r\n };\r\n HttpClient.prototype.post = function (url, data, options) {\r\n return this.send(HttpMethod.Post, url, data, options);\r\n };\r\n HttpClient.prototype.put = function (url, data, options) {\r\n return this.send(HttpMethod.Put, url, data, options);\r\n };\r\n HttpClient.prototype.delete = function (url, data, options) {\r\n return this.send(HttpMethod.Delete, url, data, options);\r\n };\r\n HttpClient.prototype.send = function (method, url, data, options) {\r\n var _this = this;\r\n options = options || {};\r\n var dataType = options.dataType || 'json';\r\n var contentType = options.contentType || (dataType !== 'form-data')\r\n ? 'application/json'\r\n : null;\r\n if (data && dataType != 'form-data' && this.customPayload) {\r\n data.data = utils.assignDeep(data.data || {}, this.customPayload);\r\n }\r\n var XHR = ('onload' in new XMLHttpRequest())\r\n ? XMLHttpRequest\r\n : window[\"XDomainRequest\"]; //IE support\r\n var xhr = new XHR();\r\n var desc = {\r\n method: method,\r\n url: url,\r\n headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),\r\n queryParams: options.queryParams || {},\r\n data: data\r\n };\r\n if (contentType)\r\n desc.headers['Content-Type'] = contentType;\r\n var request = new HttpRequest(xhr, desc);\r\n if (this.beforeEachRequest) {\r\n console.warn(\"HttpClient: 'beforeEachRequest' is deprecated and will be removed in future updates.\\n Use 'onRequest' instead\");\r\n this.beforeEachRequest(request);\r\n }\r\n if (this.onRequest) {\r\n this.onRequest(request);\r\n }\r\n var dataToSend = (request.data && typeof request.data !== 'string'\r\n && dataType == 'json')\r\n ? JSON.stringify(request.data)\r\n : request.data;\r\n request.open();\r\n return new HttpActionResult(request, new Promise(function (resolve, reject) {\r\n if (options.responseType)\r\n xhr.responseType = options.responseType;\r\n xhr.onerror = function (error) {\r\n reject(new HttpResponseError(xhr.status, xhr.responseText));\r\n };\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState != 4)\r\n return; //we process only the state change to DONE(4)\r\n var responseContentType = xhr.getResponseHeader('Content-Type') || '';\r\n var status = xhr.status;\r\n if (status === 0) {\r\n reject(new HttpResponseError(status, \"Network error or the request was aborted\"));\r\n }\r\n else if (status >= 200 && status < 400) {\r\n //Success\r\n var responseObj = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\r\n ? xhr.response\r\n : (responseContentType.indexOf('application/json') == 0\r\n ? JSON.parse(xhr.responseText)\r\n : xhr.responseText);\r\n _this._responseBody = responseObj;\r\n if (_this.onResponse) {\r\n _this.onResponse(xhr);\r\n }\r\n resolve(responseObj);\r\n }\r\n else {\r\n //Error\r\n var rtPromise = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\r\n ? HttpClient.decodeArrayBuffer(xhr.response)\r\n : Promise.resolve(xhr.responseText);\r\n rtPromise.then(function (responseText) {\r\n var responseObj = (responseContentType.indexOf('application/json') == 0)\r\n ? JSON.parse(responseText)\r\n : responseText;\r\n _this._responseBody = responseObj;\r\n var message = responseObj.message ||\r\n (status == 404\r\n ? \"No such endpoint: \" + url\r\n : responseObj);\r\n reject(new HttpResponseError(status, message));\r\n });\r\n }\r\n };\r\n xhr.send(dataToSend);\r\n }));\r\n };\r\n HttpClient.decodeArrayBuffer = function (uintArray) {\r\n var reader = new FileReader();\r\n return new Promise(function (resolve) {\r\n reader.onloadend = function () {\r\n if (reader.readyState == FileReader.DONE) {\r\n resolve(reader.result);\r\n }\r\n };\r\n reader.readAsText(new Blob([uintArray]));\r\n });\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=http_client.js.map","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","import { DataColumnList } from './data_column';\r\nimport { DataRow } from './data_row';\r\nimport { DataType } from '../types/data_type';\r\nimport { utils } from '../utils/utils';\r\nvar EasyDataTable = /** @class */ (function () {\r\n function EasyDataTable(options) {\r\n this._chunkSize = 1000;\r\n this._elasticChunks = false;\r\n this.cachedRows = [];\r\n this.total = 0;\r\n this.loader = null;\r\n this.needTotal = true;\r\n this.isInMemory = false;\r\n options = options || {};\r\n this._chunkSize = options.chunkSize || this._chunkSize;\r\n this._elasticChunks = options.elasticChunks || this._elasticChunks;\r\n this.loader = options.loader;\r\n if (typeof options.inMemory !== 'undefined') {\r\n this.isInMemory = options.inMemory;\r\n }\r\n if (this.isInMemory) {\r\n this.needTotal = false;\r\n }\r\n this._columns = new DataColumnList();\r\n this.onUpdate = options.onUpdate;\r\n if (options.columns) {\r\n for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {\r\n var colDesc = _a[_i];\r\n this._columns.add(colDesc);\r\n }\r\n }\r\n if (options.rows) {\r\n for (var _b = 0, _c = options.rows; _b < _c.length; _b++) {\r\n var rowData = _c[_b];\r\n var row = this.createRow(rowData);\r\n this.addRow(row);\r\n }\r\n }\r\n this.needTotal = !this._elasticChunks;\r\n }\r\n Object.defineProperty(EasyDataTable.prototype, \"columns\", {\r\n get: function () {\r\n return this._columns;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EasyDataTable.prototype, \"chunkSize\", {\r\n get: function () {\r\n return this._chunkSize;\r\n },\r\n set: function (value) {\r\n this._chunkSize = value;\r\n this.total = 0;\r\n this.needTotal = !this.elasticChunks;\r\n this.cachedRows = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EasyDataTable.prototype, \"elasticChunks\", {\r\n get: function () {\r\n return this._elasticChunks;\r\n },\r\n set: function (value) {\r\n this._elasticChunks = value;\r\n this.total = 0;\r\n this.needTotal = !this.elasticChunks;\r\n this.cachedRows = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EasyDataTable.prototype.getRows = function (params) {\r\n var _this = this;\r\n var fromIndex = 0, count = this._chunkSize;\r\n if (params) {\r\n if ('page' in params) {\r\n fromIndex = params.pageSize * (params.page - 1);\r\n count = params.pageSize;\r\n }\r\n else {\r\n fromIndex = params.offset;\r\n count = params.limit;\r\n }\r\n }\r\n var endIndex = fromIndex + count; //the first index of the next page\r\n //if we don't calculate total on this request\r\n if (!this.needTotal && !this.elasticChunks) {\r\n if (fromIndex >= this.total) {\r\n return Promise.resolve([]);\r\n }\r\n if (endIndex > this.total) {\r\n endIndex = this.total;\r\n }\r\n }\r\n if (this.isInMemory && endIndex > this.cachedRows.length) {\r\n endIndex = this.cachedRows.length;\r\n }\r\n var allChunksCached = endIndex <= this.cachedRows.length;\r\n if (allChunksCached) {\r\n return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));\r\n }\r\n //if loader is not defined\r\n if (!this.loader) {\r\n throw \"Loader is not defined. Can't get the rows from \" + fromIndex + \" to \" + endIndex;\r\n }\r\n // we need total only for the first request\r\n var needTotal = this.needTotal;\r\n if (this.needTotal) {\r\n this.needTotal = false;\r\n }\r\n var offset = this.cachedRows.length;\r\n var limit = endIndex - offset;\r\n if (limit < this._chunkSize) {\r\n limit = this._chunkSize;\r\n }\r\n var resultPromise = this.loader.loadChunk({\r\n offset: offset,\r\n limit: limit,\r\n needTotal: needTotal\r\n })\r\n .then(function (result) {\r\n if (needTotal) {\r\n _this.total = result.total;\r\n }\r\n Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());\r\n if (endIndex > _this.cachedRows.length) {\r\n endIndex = _this.cachedRows.length;\r\n }\r\n if (_this.elasticChunks) {\r\n var count_1 = result.table.getCachedCount();\r\n if (count_1 < limit) {\r\n _this.total = _this.cachedRows.length;\r\n }\r\n }\r\n _this.fireUpdated();\r\n return _this.cachedRows.slice(fromIndex, endIndex);\r\n });\r\n return resultPromise;\r\n };\r\n EasyDataTable.prototype.getRow = function (index) {\r\n return this.getRows({ offset: index, limit: 1 })\r\n .then(function (rows) { return rows.length > 0 ? rows[0] : null; });\r\n };\r\n EasyDataTable.prototype.getTotal = function () {\r\n return this.total;\r\n };\r\n EasyDataTable.prototype.setTotal = function (total) {\r\n this.total = total;\r\n this.needTotal = false;\r\n };\r\n EasyDataTable.prototype.getCachedCount = function () {\r\n return this.cachedRows.length;\r\n };\r\n EasyDataTable.prototype.clear = function () {\r\n this.columns.clear();\r\n this.cachedRows = [];\r\n this.total = 0;\r\n this.needTotal = !this._elasticChunks;\r\n this.fireUpdated();\r\n };\r\n EasyDataTable.prototype.createRow = function (dataOrRow) {\r\n var _this = this;\r\n var dateIdx = this._columns.getDateColumnIndexes();\r\n var values = new Array(this._columns.count);\r\n var getValue = dataOrRow instanceof DataRow\r\n ? function (colId) { return dataOrRow.getValue(colId); }\r\n : function (colId) { return dataOrRow[colId]; };\r\n if (dataOrRow) {\r\n this.columns.getItems().forEach(function (column) {\r\n var value = getValue(column.id);\r\n var index = _this.columns.getIndex(column.id);\r\n values[index] = (dateIdx.indexOf(index) >= 0)\r\n ? _this.mapDate(value, column.type)\r\n : value;\r\n });\r\n }\r\n return new DataRow(this._columns, values);\r\n };\r\n EasyDataTable.prototype.mapDate = function (value, dtype) {\r\n if (value) {\r\n var result = new Date(value);\r\n if (isNaN(result.getTime())\r\n && dtype == DataType.Time) {\r\n result = utils.strToTime(value);\r\n }\r\n return result;\r\n }\r\n return null;\r\n };\r\n EasyDataTable.prototype.addRow = function (rowOrValues) {\r\n var newRow;\r\n if (Array.isArray(rowOrValues)) {\r\n var values = rowOrValues;\r\n var dateIdx = this._columns.getDateColumnIndexes();\r\n if (dateIdx.length > 0) {\r\n for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {\r\n var idx = dateIdx_1[_i];\r\n if (values[idx]) {\r\n values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);\r\n }\r\n }\r\n }\r\n newRow = new DataRow(this._columns, values);\r\n }\r\n else {\r\n newRow = this.createRow(rowOrValues);\r\n }\r\n this.cachedRows.push(newRow);\r\n var cachedTotal = this.getCachedCount();\r\n if (cachedTotal > this.total) {\r\n this.total = cachedTotal;\r\n }\r\n return newRow;\r\n };\r\n EasyDataTable.prototype.getCachedRows = function () {\r\n return this.cachedRows;\r\n };\r\n EasyDataTable.prototype.totalIsKnown = function () {\r\n if (this.elasticChunks) {\r\n var count = this.getCachedCount();\r\n return count === this.total;\r\n }\r\n return !this.needTotal;\r\n };\r\n EasyDataTable.prototype.fireUpdated = function () {\r\n if (this.onUpdate) {\r\n this.onUpdate(this);\r\n }\r\n };\r\n return EasyDataTable;\r\n}());\r\nexport { EasyDataTable };\r\n//# sourceMappingURL=easy_data_table.js.map","import { DataType } from \"@easydata/core\";\r\n/**\r\n * Represents Google data table class\r\n */\r\nvar GoogleDataConverter = /** @class */ (function () {\r\n /**\r\n * The default constructor.\r\n * @param data The table instance or its JSON representation.\r\n */\r\n function GoogleDataConverter(data) {\r\n if (!data) {\r\n data = {\r\n cols: [],\r\n rows: []\r\n };\r\n }\r\n if (typeof data === \"string\") {\r\n this.loadFromJSON(data);\r\n }\r\n else {\r\n this.tableObj = data;\r\n }\r\n }\r\n /**\r\n * Loads data table from JSON.\r\n * @param json The JSON representation.\r\n */\r\n GoogleDataConverter.prototype.loadFromJSON = function (json) {\r\n this.tableObj = JSON.parse(json);\r\n };\r\n /**\r\n * Saves data table to JSON.\r\n * @returns The JSON representation.\r\n */\r\n GoogleDataConverter.prototype.toJSON = function () {\r\n return JSON.stringify(this.tableObj);\r\n };\r\n /**\r\n * Gets the google data table object.\r\n * @returns The data table.\r\n */\r\n GoogleDataConverter.prototype.getObject = function () {\r\n return this.tableObj;\r\n };\r\n /**\r\n * Cheсks wether the table is empty\r\n * @returns `true` if the table is empty, `false` if it is not.\r\n */\r\n GoogleDataConverter.prototype.isEmpty = function () {\r\n return this.getNumberOfColumns() == 0 || this.getNumberOfRows() == 0;\r\n };\r\n /**\r\n * Gets the number of columns\r\n * @returns The number.\r\n */\r\n GoogleDataConverter.prototype.getNumberOfColumns = function () {\r\n return this.tableObj.cols.length;\r\n };\r\n /**\r\n * Gets the column object.\r\n * @param colIndex The column index.\r\n * @returns The column object.\r\n */\r\n GoogleDataConverter.prototype.getColumnObject = function (colIndex) {\r\n return colIndex < this.tableObj.cols.length ? this.tableObj.cols[colIndex] : null;\r\n };\r\n /**\r\n * Gets the column ID.\r\n * @param colIndex The column index.\r\n * @returns The column ID.\r\n */\r\n GoogleDataConverter.prototype.getColumnId = function (colIndex) {\r\n var col = this.getColumnObject(colIndex);\r\n return col ? col.id : null;\r\n };\r\n /**\r\n * Gets the column LABEL.\r\n * @param colIndex The column index.\r\n * @returns The column ID.\r\n */\r\n GoogleDataConverter.prototype.getColumnLabel = function (colIndex) {\r\n var col = this.getColumnObject(colIndex);\r\n return col ? col.label : null;\r\n };\r\n /**\r\n * Gets the column type.\r\n * @param colIndex The column index.\r\n * @returns The column type.\r\n */\r\n GoogleDataConverter.prototype.getColumnType = function (colIndex) {\r\n var col = this.getColumnObject(colIndex);\r\n return col ? col.type : null;\r\n };\r\n /**\r\n * Gets the column properties.\r\n * @param colIndex The column index.\r\n * @returns The column properties.\r\n */\r\n GoogleDataConverter.prototype.getColumnProperties = function (colIndex) {\r\n var col = this.getColumnObject(colIndex);\r\n return col ? col.p : null;\r\n };\r\n /**\r\n * Gets the number of rows.\r\n * @returns The number.\r\n */\r\n GoogleDataConverter.prototype.getNumberOfRows = function () {\r\n return this.tableObj.rows.length;\r\n };\r\n GoogleDataConverter.prototype.convertValue = function (value, colIndex) {\r\n var colType = this.googleDataTypeToDataType(this.getColumnType(colIndex));\r\n if ([DataType.Date, DataType.DateTime, DataType.Time].includes(colType)) {\r\n return eval(\"new \" + value);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Gets the value.\r\n * @param rowIndex\r\n * @param colIndex\r\n */\r\n GoogleDataConverter.prototype.getValue = function (rowIndex, colIndex) {\r\n var row = rowIndex < this.tableObj.rows.length ? this.tableObj.rows[rowIndex] : null;\r\n if (row) {\r\n var cell = colIndex < this.tableObj.cols.length ? row.c[colIndex] : null;\r\n if (cell) {\r\n return this.convertValue(cell.v, colIndex);\r\n }\r\n }\r\n return null;\r\n };\r\n GoogleDataConverter.prototype.getRow = function (rowIndex) {\r\n var _this = this;\r\n var googleRow = rowIndex < this.tableObj.rows.length ? this.tableObj.rows[rowIndex] : null;\r\n var googleCells = googleRow.c;\r\n var row = googleCells.map(function (obj, idx) { return _this.convertValue(obj.v, idx); }, this);\r\n return row;\r\n };\r\n GoogleDataConverter.prototype.convertTo = function (dataTable) {\r\n var colCount = this.getNumberOfColumns();\r\n for (var i = 0; i < colCount; i++) {\r\n dataTable.columns.add({\r\n id: this.getColumnId(i),\r\n label: this.getColumnLabel(i),\r\n type: this.googleDataTypeToDataType(this.getColumnType(i))\r\n });\r\n }\r\n var rowCount = this.getNumberOfRows();\r\n for (var i = 0; i < rowCount; i++) {\r\n dataTable.addRow(this.getRow(i));\r\n }\r\n };\r\n GoogleDataConverter.prototype.googleDataTypeToDataType = function (googleDataType) {\r\n switch (googleDataType) {\r\n case 'string':\r\n return DataType.String;\r\n case 'number':\r\n return DataType.Float;\r\n case 'boolean':\r\n return DataType.Bool;\r\n case 'date':\r\n return DataType.Date;\r\n case 'datetime':\r\n return DataType.DateTime;\r\n case 'timeofday':\r\n return DataType.Time;\r\n default:\r\n return DataType.String;\r\n }\r\n };\r\n return GoogleDataConverter;\r\n}());\r\nexport { GoogleDataConverter };\r\n//# sourceMappingURL=google_data_converter.js.map","import { utils } from '@easydata/core';\r\nvar InMemoryModelStorage = /** @class */ (function () {\r\n function InMemoryModelStorage(models) {\r\n this.models = [];\r\n if (models) {\r\n utils.assign(this.models, [], models);\r\n }\r\n }\r\n InMemoryModelStorage.prototype.getModels = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n resolve(_this.models);\r\n });\r\n };\r\n return InMemoryModelStorage;\r\n}());\r\nexport { InMemoryModelStorage };\r\n//# sourceMappingURL=model_storage.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { EventEmitter, DataRow, utils, i18n, DataType } from '@easydata/core';\r\nimport { eqDragManager, DropEffect } from '../utils/drag_manager';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { getElementAbsolutePos, eqCssPrefix } from '../utils/ui-utils';\r\nimport { AutoResizeColumns } from './easy_grid_options';\r\nimport { GridColumnList, GridColumnAlign } from './easy_grid_columns';\r\nimport { GridCellRendererStore } from './easy_grid_cell_renderer';\r\nvar DEFAULT_ROW_HEIGHT = 36;\r\nvar DEFAULT_ROW_COUNT = 15;\r\n/** Represents a grid widget with columns rows, paging, custom rendering and more */\r\nvar EasyGrid = /** @class */ (function () {\r\n /** Creates and initializes all internal properties of the grid object */\r\n function EasyGrid(options) {\r\n this.cssPrefix = \"keg\";\r\n this.pagination = { page: 1, pageSize: 30, total: 0 };\r\n this.paginationOptions = {\r\n maxButtonCount: 10,\r\n useBootstrap: false //true\r\n };\r\n this.defaultDataGridOptions = {\r\n slot: null,\r\n dataTable: null,\r\n fixHeightOnFirstRender: false,\r\n syncGridColumns: true,\r\n useRowNumeration: true,\r\n allowDragDrop: false,\r\n aggregates: {\r\n settings: null,\r\n calculator: null\r\n },\r\n paging: {\r\n enabled: true,\r\n pageSize: 30,\r\n pageSizeItems: [20, 30, 50, 100, 200]\r\n },\r\n columnWidths: {\r\n autoResize: AutoResizeColumns.Always,\r\n stringColumns: {\r\n min: 100,\r\n max: 500,\r\n default: 250\r\n },\r\n numberColumns: {\r\n min: 60,\r\n default: 120\r\n },\r\n boolColumns: {\r\n min: 50,\r\n default: 80\r\n },\r\n dateColumns: {\r\n min: 80,\r\n default: 200\r\n },\r\n otherColumns: {\r\n min: 100,\r\n max: 500,\r\n default: 250\r\n },\r\n rowNumColumn: {\r\n min: 40,\r\n default: 60\r\n }\r\n },\r\n showPlusButton: false,\r\n viewportRowsCount: null,\r\n showActiveRow: true\r\n };\r\n this.rowsOnPagePromise = null;\r\n this.containerInitialHeight = 0;\r\n this.firstRender = true;\r\n this.prevRowTotals = null;\r\n this.landingIndex = -1;\r\n this.landingSlot = domel('div')\r\n .addClass(this.cssPrefix + \"-col-landing-slot\")\r\n .addChildElement(domel('div')\r\n .toDOM())\r\n .toDOM();\r\n this._activeRowIndex = -1;\r\n if (options && options.paging) {\r\n options.paging = utils.assign(this.defaultDataGridOptions.paging, options.paging);\r\n }\r\n this.options = this.mergeOptions(options);\r\n this.processColumnWidthsOptions();\r\n if (!this.options.slot)\r\n throw Error('\"slot\" parameter is required to initialize EasyDataGrid');\r\n if (!this.options.dataTable)\r\n throw Error('\"dataTable\" parameter is required to initialize EasyDataGrid');\r\n this.dataTable = options.dataTable;\r\n this.eventEmitter = new EventEmitter(this);\r\n this.cellRendererStore = new GridCellRendererStore(options);\r\n this.columns = new GridColumnList(this.dataTable.columns, this);\r\n this.setSlot(this.options.slot);\r\n this.init(this.options);\r\n }\r\n EasyGrid.prototype.mergeOptions = function (options) {\r\n var colWidthOptions = utils.assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);\r\n var pagingOptions = utils.assignDeep({}, this.defaultDataGridOptions.paging, options.paging);\r\n var result = utils.assign({}, this.defaultDataGridOptions, options);\r\n result.columnWidths = colWidthOptions;\r\n result.paging = pagingOptions;\r\n return result;\r\n };\r\n EasyGrid.prototype.processColumnWidthsOptions = function () {\r\n var widthOptions = this.options.columnWidths;\r\n if (!widthOptions)\r\n return;\r\n //string columns\r\n utils.getStringDataTypes().forEach(function (dataType) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.stringColumns), widthOptions[dataType]);\r\n });\r\n //numeric columns\r\n utils.getNumericDataTypes().forEach(function (dataType) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.numberColumns), widthOptions[dataType]);\r\n });\r\n //bool columns\r\n widthOptions[DataType.Bool] = __assign(__assign({}, widthOptions.boolColumns), widthOptions[DataType.Bool]);\r\n //date columns\r\n utils.getDateDataTypes().forEach(function (dataType) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.dateColumns), widthOptions[dataType]);\r\n });\r\n //other columns\r\n var knownTypes = __spreadArrays(utils.getStringDataTypes(), utils.getNumericDataTypes(), utils.getDateDataTypes(), [\r\n DataType.Bool\r\n ]);\r\n utils.getAllDataTypes().forEach(function (dataType) {\r\n if (!(dataType in knownTypes)) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.otherColumns), widthOptions[dataType]);\r\n }\r\n });\r\n widthOptions[DataType.Unknown] = widthOptions.otherColumns;\r\n };\r\n EasyGrid.prototype.setSlot = function (slot) {\r\n if (typeof slot === 'string') {\r\n if (slot.length) {\r\n if (slot[0] === '#') {\r\n this.slot = document.getElementById(slot.substring(1));\r\n }\r\n else if (slot[0] === '.') {\r\n var result = document.getElementsByClassName(slot.substring(1));\r\n if (result.length)\r\n this.slot = result[0];\r\n }\r\n else {\r\n throw Error('Unrecognized slot parameter ' +\r\n '(Must be id, class or HTMLElement): ' + slot);\r\n }\r\n }\r\n }\r\n else {\r\n this.slot = slot;\r\n }\r\n };\r\n /** Initializes grid widget according to the options passed in the parameter */\r\n EasyGrid.prototype.init = function (options) {\r\n var _this = this;\r\n if (options.onInit) {\r\n this.addEventListener('init', options.onInit);\r\n }\r\n if (options.onRowClick) {\r\n this.addEventListener('rowClick', options.onRowClick);\r\n }\r\n if (options.onRowDbClick) {\r\n this.addEventListener('rowDbClick', options.onRowDbClick);\r\n }\r\n if (options.onPlusButtonClick) {\r\n this.addEventListener('plusButtonClick', options.onPlusButtonClick);\r\n }\r\n if (options.onColumnChanged) {\r\n this.addEventListener('columnChanged', options.onColumnChanged);\r\n }\r\n if (options.onColumnDeleted) {\r\n this.addEventListener('columnDeleted', options.onColumnDeleted);\r\n }\r\n if (options.onColumnMoved) {\r\n this.addEventListener('columnMoved', options.onColumnMoved);\r\n }\r\n if (options.onPageChanged) {\r\n this.addEventListener('pageChanged', options.onPageChanged);\r\n }\r\n if (options.onActiveRowChanged) {\r\n this.addEventListener('activeRowChanged', options.onActiveRowChanged);\r\n }\r\n this.addEventListener('pageChanged', function (ev) { return _this.activeRowIndex = -1; });\r\n utils.assignDeep(this.paginationOptions, options.pagination);\r\n this.pagination.pageSize = this.options.paging.pageSize\r\n || this.pagination.pageSize;\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"gridColumnMove\"],\r\n onDragEnter: function (_, ev) {\r\n _this.slot.classList.add(eqCssPrefix + \"-drophover\");\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragOver: function (_, ev) {\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragLeave: function (_, ev) {\r\n ev.dropEffect = DropEffect.Forbid;\r\n _this.slot.classList.remove(eqCssPrefix + \"-drophover\");\r\n _this.hideLandingSlot();\r\n },\r\n onDrop: function (_, ev) {\r\n _this.dataTable.columns.move(ev.data.column, _this.landingIndex);\r\n _this.refresh();\r\n _this.fireEvent({\r\n type: 'columnMoved',\r\n columnId: ev.data.column.id,\r\n newIndex: _this.landingIndex\r\n });\r\n }\r\n });\r\n }\r\n this.refresh();\r\n this.fireEvent('init');\r\n };\r\n /** Fires a grid event. You can pass either an event type\r\n * (like 'init', 'rowClick', 'pageChanged', etc )\r\n * or a ready-to-use grid event object\r\n * */\r\n EasyGrid.prototype.fireEvent = function (event) {\r\n if (typeof event === \"string\") {\r\n this.eventEmitter.fire(event);\r\n }\r\n else {\r\n this.eventEmitter.fire(event.type, event);\r\n }\r\n };\r\n /** Allows to set the data (represented by a EasyDataTable object)\r\n * or to replace the existing one associated with the grid */\r\n EasyGrid.prototype.setData = function (data) {\r\n this.dataTable = data;\r\n this.clear();\r\n this.refresh();\r\n };\r\n /** Returns the EasyDataTable object associated with the grid via `setData()` call */\r\n EasyGrid.prototype.getData = function () {\r\n return this.dataTable;\r\n };\r\n /** Gets the list of grid columns */\r\n EasyGrid.prototype.getColumns = function () {\r\n return this.columns;\r\n };\r\n /** This function is called when the grid is destroyed */\r\n EasyGrid.prototype.destroy = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n /** Clears the current DOM object and re-renders everything from the scratch */\r\n EasyGrid.prototype.refresh = function () {\r\n this.clearDOM();\r\n this.render();\r\n };\r\n EasyGrid.prototype.clearDOM = function () {\r\n this.slot.innerHTML = '';\r\n };\r\n /** Clears all DOM object in the grid and return it to its initial state */\r\n EasyGrid.prototype.clear = function () {\r\n this.pagination.page = 1;\r\n this.clearDOM();\r\n };\r\n /** Renders the grid */\r\n EasyGrid.prototype.render = function () {\r\n var _this = this;\r\n if (!this.hasData() && !this.options.showPlusButton)\r\n return;\r\n this.containerInitialHeight = this.slot.clientHeight;\r\n this.rootDiv = document.createElement('div');\r\n this.rootDiv.style.width = '100%';\r\n this.rootDiv.classList.add(this.cssPrefix + \"-root\");\r\n this.columns.sync(this.dataTable.columns, this.options.useRowNumeration);\r\n this.renderHeader();\r\n this.rootDiv.appendChild(this.headerDiv);\r\n this.renderBody();\r\n this.rootDiv.appendChild(this.bodyDiv);\r\n this.renderFooter();\r\n this.rootDiv.appendChild(this.footerDiv);\r\n var gridContainer = document.createElement('div');\r\n gridContainer.classList.add(this.cssPrefix + \"-container\");\r\n gridContainer.appendChild(this.rootDiv);\r\n this.slot.appendChild(gridContainer);\r\n var needAutoResize = this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\r\n if (this.rowsOnPagePromise) {\r\n this.rowsOnPagePromise\r\n .then(function () { return _this.updateHeight(); })\r\n .then(function () {\r\n _this.firstRender = false;\r\n _this.rowsOnPagePromise = null;\r\n });\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.updateHeight()\r\n .then(function () {\r\n _this.firstRender = false;\r\n if (needAutoResize) {\r\n _this.resizeColumns();\r\n }\r\n });\r\n }, 100);\r\n }\r\n };\r\n EasyGrid.prototype.updateHeight = function () {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n if (_this.options.viewportRowsCount) {\r\n var firstRow = _this.bodyCellContainerDiv.firstElementChild;\r\n var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;\r\n var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;\r\n var viewportHeight_1 = rowHeight * rowCount;\r\n domel(_this.bodyViewportDiv)\r\n .setStyle('height', viewportHeight_1 + \"px\");\r\n setTimeout(function () {\r\n var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;\r\n viewportHeight_1 = viewportHeight_1 + sbHeight;\r\n domel(_this.bodyViewportDiv)\r\n .setStyle('height', viewportHeight_1 + \"px\");\r\n resolve();\r\n }, 100);\r\n return;\r\n }\r\n else if (_this.containerInitialHeight > 0) {\r\n // comment for now since it does not work in all cases\r\n // const bodyHeight = this.containerInitialHeight - this.headerDiv.offsetHeight - this.footerDiv.offsetHeight;\r\n // domel(this.bodyDiv)\r\n // .setStyle('height', `${bodyHeight}px`);\r\n }\r\n resolve();\r\n })\r\n .then(function () {\r\n if (_this.options.fixHeightOnFirstRender && _this.firstRender) {\r\n _this.slot.style.height = _this.slot.offsetHeight + \"px\";\r\n }\r\n });\r\n };\r\n EasyGrid.prototype.getContainerWidth = function () {\r\n return this.columns.getItems()\r\n .filter(function (col) { return col.isVisible; })\r\n .map(function (col) { return col.width; })\r\n .reduce(function (sum, current) { return sum + current; });\r\n };\r\n EasyGrid.prototype.renderHeader = function () {\r\n var _this = this;\r\n this.headerDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-header\")\r\n .toDOM();\r\n this.headerViewportDiv = domel('div', this.headerDiv)\r\n .addClass(this.cssPrefix + \"-header-viewport\")\r\n .toDOM();\r\n this.headerCellContainerDiv = domel('div', this.headerViewportDiv)\r\n .addClass(this.cssPrefix + \"-header-cell-container\")\r\n .toDOM();\r\n this.headerRowDiv = domel('div', this.headerCellContainerDiv)\r\n .addClass(this.cssPrefix + \"-header-row\")\r\n .toDOM();\r\n this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var hd = _this.renderColumnHeader(column, index);\r\n _this.headerRowDiv.appendChild(hd);\r\n if (column.isRowNum) {\r\n domel(hd)\r\n .addChildElement(_this.renderHeaderButtons());\r\n }\r\n });\r\n var containerWidth = this.getContainerWidth();\r\n domel(this.headerCellContainerDiv)\r\n .setStyle('width', containerWidth + \"px\");\r\n };\r\n EasyGrid.prototype.hasData = function () {\r\n return this.dataTable.columns.count > 0;\r\n };\r\n EasyGrid.prototype.renderColumnHeader = function (column, index) {\r\n var _this = this;\r\n var colBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-header-cell\")\r\n .data('col-idx', \"\" + index)\r\n .setStyle('width', column.width + \"px\");\r\n if (column.dataColumn) {\r\n colBuilder\r\n .data('col-id', \"\" + column.dataColumn.id);\r\n }\r\n var colDiv = colBuilder.toDOM();\r\n domel('div', colDiv)\r\n .addClass(this.cssPrefix + \"-header-cell-resize\");\r\n if (!column.isRowNum) {\r\n domel('div', colDiv)\r\n .addClass(this.cssPrefix + \"-header-cell-label\")\r\n .text(column.label);\r\n }\r\n if (column.description) {\r\n domel('div', colDiv)\r\n .addClass('question-mark')\r\n .title(column.description);\r\n }\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDraggableItem({\r\n element: colDiv,\r\n scope: \"gridColumnMove\",\r\n data: { column: column },\r\n renderer: function (dragImage) {\r\n dragImage.innerHTML = '';\r\n var attrLabel = document.createElement('div');\r\n attrLabel.innerText = column.label;\r\n dragImage.classList.add(_this.cssPrefix + \"-sortable-helper\");\r\n dragImage.appendChild(attrLabel);\r\n },\r\n onDragStart: function (ev) {\r\n ev.dropEffect = DropEffect.Allow;\r\n }\r\n });\r\n }\r\n return colDiv;\r\n };\r\n EasyGrid.prototype.renderBody = function () {\r\n var _this = this;\r\n this.bodyDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-body\")\r\n .toDOM();\r\n this.bodyViewportDiv = domel('div', this.bodyDiv)\r\n .addClass(this.cssPrefix + \"-body-viewport\")\r\n .attr('tabIndex', '0')\r\n .toDOM();\r\n this.bodyCellContainerDiv = domel('div', this.bodyViewportDiv)\r\n .addClass(this.cssPrefix + \"-cell-container\")\r\n .toDOM();\r\n var showAggrs = this.canShowAggregates();\r\n if (this.dataTable) {\r\n this.showProgress();\r\n this.rowsOnPagePromise = this.getRowsToRender()\r\n .then(function (rows) {\r\n _this.pagination.total = _this.dataTable.getTotal();\r\n _this.hideProgress();\r\n //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)\r\n _this.bodyCellContainerDiv.innerHTML = '';\r\n _this.prevRowTotals = null;\r\n var rowsToRender = 0;\r\n if (rows.length) {\r\n var groups_1 = showAggrs\r\n ? _this.options.aggregates.settings.getGroups()\r\n : [];\r\n rowsToRender = (rows.length < _this.pagination.pageSize)\r\n ? rows.length\r\n : _this.pagination.pageSize;\r\n rows.forEach(function (row, index) {\r\n if (showAggrs)\r\n _this.updateTotalsState(groups_1, row);\r\n //we don't actually render the last row\r\n if (index < rowsToRender) {\r\n var tr = _this.renderRow(row, index);\r\n _this.bodyCellContainerDiv.appendChild(tr);\r\n }\r\n });\r\n var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;\r\n if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {\r\n var row = new DataRow(_this.dataTable.columns, new Array(_this.dataTable.columns.count));\r\n _this.updateTotalsState(groups_1, row, true);\r\n }\r\n }\r\n var needAutoResize = _this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\r\n if (needAutoResize) {\r\n _this.resizeColumns();\r\n }\r\n else {\r\n var containerWidth = _this.getContainerWidth();\r\n domel(_this.bodyCellContainerDiv)\r\n .setStyle('width', containerWidth + \"px\");\r\n }\r\n return rowsToRender;\r\n })\r\n .catch(function (error) { console.error(error); return 0; });\r\n }\r\n this.bodyViewportDiv.addEventListener('scroll', function (ev) {\r\n domel(_this.headerViewportDiv)\r\n .setStyle('margin-left', \"-\" + _this.bodyViewportDiv.scrollLeft + \"px\");\r\n });\r\n this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));\r\n };\r\n EasyGrid.prototype.isLastPage = function () {\r\n if (this.dataTable.elasticChunks) {\r\n return this.dataTable.totalIsKnown()\r\n && (this.pagination.page * this.pagination.pageSize) >= this.pagination.total;\r\n }\r\n return this.pagination.page * this.pagination.pageSize >= this.pagination.total;\r\n };\r\n EasyGrid.prototype.canShowAggregates = function () {\r\n if (!this.options || !this.options.aggregates || !this.options.aggregates.settings)\r\n return false;\r\n var aggrSettings = this.options.aggregates.settings;\r\n var result = (aggrSettings.hasAggregates() || aggrSettings.hasRecordCount())\r\n && (aggrSettings.hasGroups() || aggrSettings.hasGrandTotals());\r\n return result;\r\n };\r\n EasyGrid.prototype.updateTotalsState = function (groups, newRow, isLast) {\r\n if (isLast === void 0) { isLast = false; }\r\n var aggrSettings = this.options.aggregates.settings;\r\n if (this.prevRowTotals && aggrSettings.hasGroups()) {\r\n var changeLevel = -1;\r\n for (var level = 1; level <= groups.length; level++) {\r\n var group = groups[level - 1];\r\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {\r\n changeLevel = level;\r\n break;\r\n }\r\n }\r\n if (changeLevel !== -1)\r\n break;\r\n }\r\n if (changeLevel !== -1) {\r\n for (var level = groups.length; level >= changeLevel; level--) {\r\n var row = new DataRow(this.dataTable.columns, this.prevRowTotals.toArray());\r\n var tr = this.renderTotalsRow(level, row);\r\n this.bodyCellContainerDiv.appendChild(tr);\r\n }\r\n }\r\n }\r\n if (isLast && aggrSettings.hasGrandTotals() && aggrSettings.hasAggregates()) {\r\n var tr = this.renderTotalsRow(0, newRow);\r\n this.bodyCellContainerDiv.appendChild(tr);\r\n }\r\n this.prevRowTotals = newRow;\r\n };\r\n EasyGrid.prototype.applyGroupColumnTemplate = function (template, value, count) {\r\n var result = template.replace(/{{\\s*GroupValue\\s*}}/g, value ? \"\" + value : '-');\r\n result = result.replace(/{{\\s*GroupCount\\s*}}/g, count ? \"\" + count : '-');\r\n return result;\r\n };\r\n EasyGrid.prototype.renderTotalsRow = function (level, row) {\r\n var _this = this;\r\n var aggrSettings = this.options.aggregates.settings;\r\n var group = (level > 0)\r\n ? aggrSettings.getGroups()[level - 1]\r\n : { columns: [], aggregates: aggrSettings.getAggregates() };\r\n var rowBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-row\")\r\n .addClass(this.cssPrefix + \"-row-totals\")\r\n .addClass(this.cssPrefix + \"-totals-lv\" + level)\r\n .data('totals-level', \"\" + level)\r\n .attr('tabindex', '-1');\r\n var rowElement = rowBuilder.toDOM();\r\n this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var val = '';\r\n var colIndex = !column.isRowNum\r\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\r\n : -1;\r\n if (!column.isRowNum && column.dataColumn) {\r\n if (group.columns.indexOf(column.dataColumn.id) >= 0) {\r\n val = row.getValue(colIndex);\r\n }\r\n ;\r\n }\r\n if (colIndex == _this.dataTable.columns.count - 1) {\r\n val = '. . . . . .';\r\n }\r\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\r\n });\r\n var aggrContainer = this.options.aggregates.calculator.getAggrContainer();\r\n var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });\r\n var key = aggrSettings.buildGroupKey(group, row);\r\n aggrContainer.getAggregateData(level, key)\r\n .then(function (values) {\r\n for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {\r\n var aggrColId = aggrCols_1[_i];\r\n row.setValue(aggrColId, values[aggrColId]);\r\n }\r\n rowElement.innerHTML = '';\r\n _this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var val = '';\r\n var colIndex = !column.isRowNum\r\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\r\n : -1;\r\n if (!column.isRowNum) {\r\n var isLastGroupColumn = false;\r\n if (column.dataColumn) {\r\n var groupColIndex = group.columns.indexOf(column.dataColumn.id);\r\n var aggrColIndex = aggrCols.indexOf(column.dataColumn.id);\r\n if (level > 0) {\r\n isLastGroupColumn = groupColIndex == group.columns.length - 1;\r\n }\r\n else {\r\n //if it's a grand total row consider first column as the last group column\r\n isLastGroupColumn = colIndex == 0;\r\n }\r\n if (groupColIndex >= 0 || aggrColIndex >= 0) {\r\n val = row.getValue(colIndex);\r\n }\r\n ;\r\n }\r\n var groupFooterTemplate = '';\r\n if (level > 0) {\r\n groupFooterTemplate = column.dataColumn.groupFooterColumnTemplate;\r\n //set the default template for the last grouping column\r\n if (!groupFooterTemplate && aggrSettings.hasRecordCount() && isLastGroupColumn) {\r\n groupFooterTemplate = '{{GroupValue}} ({{GroupCount}})';\r\n }\r\n }\r\n if (groupFooterTemplate) {\r\n var cellDiv_1 = _this.renderCell(column, index, val, rowElement);\r\n var innerCell = cellDiv_1.firstChild;\r\n val = innerCell.innerHTML;\r\n val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);\r\n }\r\n }\r\n var cellDiv = _this.renderCell(column, index, val, rowElement);\r\n rowElement.appendChild(cellDiv);\r\n });\r\n })\r\n .catch(function (error) { return console.error(error); });\r\n return rowElement;\r\n };\r\n EasyGrid.prototype.onViewportKeydown = function (ev) {\r\n if (this.options.showActiveRow) {\r\n var rowCount = this.bodyCellContainerDiv.querySelectorAll(\".\" + this.cssPrefix + \"-row\").length;\r\n var newValue = void 0;\r\n switch (ev.key) {\r\n case 'ArrowLeft':\r\n break;\r\n case 'ArrowRight':\r\n break;\r\n case 'ArrowUp':\r\n ev.preventDefault();\r\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? rowCount - 1 : this.activeRowIndex - 1;\r\n this.activeRowIndex = newValue >= 0 ? newValue : 0;\r\n break;\r\n case 'ArrowDown':\r\n ev.preventDefault();\r\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? 0 : this.activeRowIndex + 1;\r\n this.activeRowIndex = newValue < rowCount ? newValue : rowCount - 1;\r\n break;\r\n }\r\n }\r\n };\r\n EasyGrid.prototype.ensureRowVisibility = function (rowOrIndex) {\r\n var row = typeof rowOrIndex === 'number'\r\n ? this.getDataRow(rowOrIndex)\r\n : rowOrIndex;\r\n if (row) {\r\n var rowRect = row.getBoundingClientRect();\r\n var viewportRect = this.bodyViewportDiv.getBoundingClientRect();\r\n var rowTop = rowRect.top - viewportRect.top;\r\n var rowBottom = rowRect.bottom - viewportRect.top;\r\n var viewportHeight = this.bodyViewportDiv.clientHeight;\r\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n if (rowTop > 0 &&\r\n rowBottom <= viewportHeight &&\r\n rowRect.top > 0 &&\r\n rowRect.bottom < windowHeight) {\r\n return;\r\n }\r\n if (rowTop < 0) {\r\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowTop;\r\n }\r\n else if (rowBottom > viewportHeight) {\r\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowBottom - viewportHeight;\r\n }\r\n rowRect = row.getBoundingClientRect();\r\n if (rowRect.top < 0) {\r\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.top;\r\n }\r\n else if (rowRect.bottom > windowHeight) {\r\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.bottom - windowHeight;\r\n }\r\n }\r\n };\r\n /** Returns a promise with the list of the rows to render on one page.\r\n * The list contains pageSize+1 row to make it possible\r\n * to render the totals row (if it appears to be on the edge between pages)\r\n */\r\n EasyGrid.prototype.getRowsToRender = function () {\r\n if (this.options.paging.enabled === false) {\r\n return Promise.resolve(this.dataTable.getCachedRows());\r\n }\r\n return this.dataTable.getRows({\r\n offset: (this.pagination.page - 1) * this.pagination.pageSize,\r\n limit: this.pagination.pageSize + 1\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n return [];\r\n });\r\n };\r\n EasyGrid.prototype.renderFooter = function () {\r\n var _this = this;\r\n this.footerDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-footer\")\r\n .toDOM();\r\n if (this.rowsOnPagePromise) {\r\n this.rowsOnPagePromise.then(function (count) {\r\n _this.footerDiv.innerHTML = '';\r\n _this.footerPaginateDiv = _this.renderPageNavigator();\r\n _this.footerDiv.appendChild(_this.footerPaginateDiv);\r\n var pageInfoBlock = _this.renderPageInfoBlock(count);\r\n _this.footerDiv.appendChild(pageInfoBlock);\r\n });\r\n }\r\n };\r\n EasyGrid.prototype.renderPageInfoBlock = function (count) {\r\n var pageInfoDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-page-info\")\r\n .toDOM();\r\n var rowCount = this.dataTable.getTotal();\r\n if (rowCount > 0) {\r\n var fistPageRecordNum = count\r\n ? (this.pagination.page - 1) * this.pagination.pageSize + 1\r\n : 0;\r\n var lastPageRecordNum = count\r\n ? fistPageRecordNum + count - 1\r\n : 0;\r\n var totalStr = this.dataTable.getTotal().toString();\r\n if (this.dataTable.elasticChunks) {\r\n var count_1 = this.dataTable.getCachedCount();\r\n var total = this.dataTable.getTotal();\r\n if (count_1 !== total)\r\n totalStr = '?';\r\n }\r\n pageInfoDiv.innerHTML = i18n.getText('GridPageInfo')\r\n .replace('{FirstPageRecordNum}', \"\" + fistPageRecordNum.toString() + \"\")\r\n .replace('{LastPageRecordNum}', \"\" + lastPageRecordNum.toString() + \"\")\r\n .replace('{Total}', \"\" + totalStr + \"\");\r\n }\r\n return pageInfoDiv;\r\n };\r\n EasyGrid.prototype.showProgress = function () {\r\n };\r\n EasyGrid.prototype.hideProgress = function () {\r\n };\r\n EasyGrid.prototype.getLocalIndexByGlobal = function (index) {\r\n if (this.pagination) {\r\n return index % this.pagination.pageSize;\r\n }\r\n else {\r\n return index;\r\n }\r\n };\r\n EasyGrid.prototype.getGlobalIndexByLocal = function (index) {\r\n if (this.pagination) {\r\n return (this.pagination.page - 1) * this.pagination.pageSize + index;\r\n }\r\n else {\r\n return index;\r\n }\r\n };\r\n EasyGrid.prototype.renderRow = function (row, index) {\r\n var _this = this;\r\n var indexGlobal = this.getGlobalIndexByLocal(index);\r\n var rowBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-row\")\r\n .addClass(this.cssPrefix + \"-row-\" + (index % 2 == 1 ? 'odd' : 'even'))\r\n .data('row-idx', \"\" + indexGlobal)\r\n .attr('tabindex', '-1')\r\n .on('click', function (ev) {\r\n _this.activeRowIndex = index;\r\n _this.fireEvent({\r\n type: 'rowClick',\r\n row: row,\r\n rowIndex: index,\r\n sourceEvent: ev\r\n });\r\n })\r\n .on('dblclick', function (ev) {\r\n _this.fireEvent({\r\n type: 'rowDbClick',\r\n row: row,\r\n rowIndex: index,\r\n sourceEvent: ev\r\n });\r\n });\r\n if (index == 0) {\r\n rowBuilder.addClass(this.cssPrefix + \"-row-first\");\r\n }\r\n var rowElement = rowBuilder.toDOM();\r\n if (this.options.showActiveRow && index == this.activeRowIndex) {\r\n rowBuilder.addClass(this.cssPrefix + \"-row-active\");\r\n }\r\n this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);\r\n var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);\r\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\r\n });\r\n return rowElement;\r\n };\r\n EasyGrid.prototype.renderCell = function (column, colIndex, value, rowElement) {\r\n var builder = domel('div')\r\n .addClass(this.cssPrefix + \"-cell\")\r\n .data('col-idx', \"\" + colIndex)\r\n .attr('tabindex', '-1')\r\n .setStyle('width', column.width + \"px\");\r\n if (column.align == GridColumnAlign.LEFT) {\r\n builder.addClass(this.cssPrefix + \"-cell-align-left\");\r\n }\r\n else if (column.align == GridColumnAlign.RIGHT) {\r\n builder.addClass(this.cssPrefix + \"-cell-align-right\");\r\n }\r\n else if (column.align == GridColumnAlign.CENTER) {\r\n builder.addClass(this.cssPrefix + \"-cell-align-center\");\r\n }\r\n var cellElement = builder.toDOM();\r\n var valueCell = cellElement.appendChild(domel('div')\r\n .addClass(this.cssPrefix + \"-cell-value\")\r\n .toDOM());\r\n if (column.cellRenderer) {\r\n column.cellRenderer(value, column, valueCell, rowElement);\r\n }\r\n return cellElement;\r\n };\r\n /** Sets current grid pages (if paging is used) */\r\n EasyGrid.prototype.setPage = function (page) {\r\n this.pagination.page = page;\r\n this.fireEvent({ type: \"pageChanged\", page: page });\r\n this.refresh();\r\n this.bodyViewportDiv.focus();\r\n };\r\n EasyGrid.prototype.renderPageNavigator = function () {\r\n var _this = this;\r\n var paginateDiv = document.createElement('div');\r\n paginateDiv.className = this.cssPrefix + \"-pagination-wrapper\";\r\n var rowCount = this.dataTable.getTotal();\r\n if (this.options.paging && this.options.paging.enabled && rowCount > 0) {\r\n var prefix_1 = this.paginationOptions.useBootstrap ? '' : this.cssPrefix + \"-\";\r\n var buttonClickHandler_1 = function (ev) {\r\n var element = ev.target;\r\n if (element.hasAttribute('data-page')) {\r\n var page = parseInt(element.getAttribute('data-page'));\r\n _this.setPage(page);\r\n }\r\n };\r\n var renderPageCell = function (pageIndex, content, disabled, extreme, active) {\r\n var li = document.createElement('li');\r\n li.className = prefix_1 + \"page-item\";\r\n if (!extreme) {\r\n if (active) {\r\n li.className += ' active';\r\n }\r\n var a_1 = document.createElement('a');\r\n a_1.setAttribute('href', 'javascript:void(0)');\r\n a_1.innerHTML = content || pageIndex.toString();\r\n a_1.setAttribute(\"data-page\", \"\" + pageIndex);\r\n a_1.className = prefix_1 + \"page-link\";\r\n a_1.addEventListener(\"click\", buttonClickHandler_1);\r\n li.appendChild(a_1);\r\n return li;\r\n }\r\n var a = document.createElement('span');\r\n a.setAttribute('aria-hidden', 'true');\r\n a.className = prefix_1 + \"page-link\";\r\n if (disabled) {\r\n li.className += ' disabled';\r\n }\r\n else {\r\n if (_this.paginationOptions.useBootstrap) {\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.setAttribute(\"data-page\", \"\" + pageIndex);\r\n }\r\n else {\r\n var newA = document.createElement('a');\r\n newA.setAttribute('href', 'javascript:void(0)');\r\n newA.setAttribute('data-page', \"\" + pageIndex);\r\n a = newA;\r\n }\r\n a.className = prefix_1 + \"page-link\";\r\n a.addEventListener(\"click\", buttonClickHandler_1);\r\n }\r\n a.innerHTML = content;\r\n li.appendChild(a);\r\n return li;\r\n };\r\n if (this.dataTable.elasticChunks) {\r\n var pageIndex = this.pagination.page || 1;\r\n var ul = document.createElement('ul');\r\n ul.className = prefix_1 + \"pagination\";\r\n var cell = renderPageCell(pageIndex - 1, '«', pageIndex == 1, true, false);\r\n ul.appendChild(cell);\r\n cell = renderPageCell(pageIndex + 1, '»', this.isLastPage(), true, false);\r\n ul.appendChild(cell);\r\n paginateDiv.appendChild(ul);\r\n }\r\n else {\r\n if (this.pagination.total > this.pagination.pageSize) {\r\n var pageIndex = this.pagination.page || 1;\r\n var pageCount = Math.ceil(this.pagination.total / this.pagination.pageSize) || 1;\r\n var maxButtonCount = this.paginationOptions.maxButtonCount || 10;\r\n var zeroBasedIndex = pageIndex - 1;\r\n var firstPageIndex = zeroBasedIndex - (zeroBasedIndex % maxButtonCount) + 1;\r\n var lastPageIndex = firstPageIndex + maxButtonCount - 1;\r\n if (lastPageIndex > pageCount) {\r\n lastPageIndex = pageCount;\r\n }\r\n var ul = document.createElement('ul');\r\n ul.className = prefix_1 + \"pagination\";\r\n var cell = renderPageCell(firstPageIndex - 1, '«', firstPageIndex == 1, true, false);\r\n ul.appendChild(cell);\r\n for (var i = firstPageIndex; i <= lastPageIndex; i++) {\r\n cell = renderPageCell(i, i.toString(), false, false, i == pageIndex);\r\n ul.appendChild(cell);\r\n }\r\n cell = renderPageCell(lastPageIndex + 1, '»', lastPageIndex == pageCount, true, false);\r\n ul.appendChild(cell);\r\n paginateDiv.appendChild(ul);\r\n }\r\n }\r\n if (this.options.paging.allowPageSizeChange) {\r\n var selectChangeHandler = function (ev) {\r\n var newValue = parseInt(ev.target.value);\r\n _this.pagination.pageSize = newValue;\r\n _this.pagination.page = 1;\r\n _this.refresh();\r\n };\r\n var pageSizes = document.createElement('div');\r\n pageSizes.className = this.cssPrefix + \"-page-sizes\";\r\n var selectSize = document.createElement('div');\r\n selectSize.className = \"kfrm-select \" + this.cssPrefix + \"-page-sizes-select\";\r\n pageSizes.appendChild(selectSize);\r\n var sel_1 = document.createElement('select');\r\n var selOptions = this.options.paging.pageSizeItems || [];\r\n var selSet = new Set(selOptions);\r\n selSet.add(this.options.paging.pageSize || 20);\r\n Array.from(selSet).forEach(function (el) {\r\n var option = document.createElement(\"option\");\r\n option.value = el.toString();\r\n option.text = el.toString();\r\n sel_1.appendChild(option);\r\n });\r\n sel_1.value = (this.pagination.pageSize || 20).toString();\r\n selectSize.appendChild(sel_1);\r\n sel_1.addEventListener('change', selectChangeHandler);\r\n var labelDiv = document.createElement('div');\r\n labelDiv.className = this.cssPrefix + \"-page-sizes-label\";\r\n pageSizes.appendChild(labelDiv);\r\n var label = document.createElement('span');\r\n label.innerText = i18n.getText('GridItemsPerPage');\r\n labelDiv.appendChild(label);\r\n paginateDiv.appendChild(pageSizes);\r\n }\r\n }\r\n return paginateDiv;\r\n };\r\n EasyGrid.prototype.addEventListener = function (eventType, handler) {\r\n return this.eventEmitter.subscribe(eventType, function (event) { return handler(event.data); });\r\n };\r\n EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {\r\n this.eventEmitter.unsubscribe(eventType, handlerId);\r\n };\r\n EasyGrid.prototype.renderHeaderButtons = function () {\r\n var _this = this;\r\n if (this.options.showPlusButton) {\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-header-btn-plus\")\r\n .title(this.options.plusButtonTitle || 'Add')\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', function (e) {\r\n e.preventDefault();\r\n _this.fireEvent({\r\n type: 'plusButtonClick',\r\n sourceEvent: e\r\n });\r\n }); })\r\n .toDOM();\r\n }\r\n return domel('span')\r\n .addText('#')\r\n .toDOM();\r\n };\r\n EasyGrid.prototype.showLandingSlot = function (pageX, pageY) {\r\n var colElems = this.headerRowDiv.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-table-col]\");\r\n var cols = [];\r\n for (var i = 1; i < colElems.length; i++) {\r\n var rowElem = colElems[i];\r\n if (rowElem.style.display === 'none')\r\n continue;\r\n cols.push(rowElem);\r\n }\r\n if (cols.length === 0) {\r\n this.landingIndex = 0;\r\n this.headerRowDiv.appendChild(this.landingSlot);\r\n return;\r\n }\r\n var landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth) {\r\n return;\r\n }\r\n var newLandingIndex = this.landingIndex;\r\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\r\n var col = cols_1[_i];\r\n var colPos = getElementAbsolutePos(col);\r\n var width = col.offsetWidth;\r\n if (pageX > colPos.x && pageX < colPos.x + width) {\r\n // -1 as we don't need to count add button here\r\n newLandingIndex = parseInt(col.getAttribute('data-col-idx')) - 1;\r\n }\r\n }\r\n if (newLandingIndex != this.landingIndex) {\r\n this.landingIndex = newLandingIndex;\r\n if (this.landingIndex < cols.length) {\r\n this.headerRowDiv.insertBefore(this.landingSlot, cols[this.landingIndex]);\r\n }\r\n else {\r\n this.headerRowDiv.appendChild(this.landingSlot);\r\n }\r\n }\r\n };\r\n EasyGrid.prototype.hideLandingSlot = function () {\r\n var _this = this;\r\n this.landingIndex = -1;\r\n setTimeout(function () {\r\n if (_this.landingSlot.parentElement) {\r\n _this.landingSlot.parentElement.removeChild(_this.landingSlot);\r\n }\r\n }, 10);\r\n };\r\n Object.defineProperty(EasyGrid.prototype, \"activeRowIndex\", {\r\n get: function () {\r\n return this._activeRowIndex;\r\n },\r\n set: function (value) {\r\n if (value !== this._activeRowIndex) {\r\n var oldValue = this._activeRowIndex;\r\n this._activeRowIndex = value;\r\n this.updateActiveRow();\r\n this.fireEvent({\r\n type: 'activeRowChanged',\r\n oldValue: oldValue,\r\n newValue: this.activeRowIndex,\r\n rowIndex: this.getGlobalIndexByLocal(this.activeRowIndex)\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EasyGrid.prototype.updateActiveRow = function () {\r\n var _this = this;\r\n if (this.options.showActiveRow) {\r\n var rows = this.bodyCellContainerDiv.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row-active]\");\r\n rows.forEach(function (el) { el.classList.remove(_this.cssPrefix + \"-row-active\"); });\r\n var activeRow = this.getActiveRow();\r\n if (activeRow) {\r\n activeRow.classList.add(this.cssPrefix + \"-row-active\");\r\n this.ensureRowVisibility(this.activeRowIndex);\r\n }\r\n }\r\n };\r\n EasyGrid.prototype.getActiveRow = function () {\r\n return this.getDataRow(this.activeRowIndex);\r\n };\r\n EasyGrid.prototype.getDataRow = function (index) {\r\n var rows = Array.from(this.bodyCellContainerDiv.querySelectorAll(\".\" + this.cssPrefix + \"-row:not(.\" + this.cssPrefix + \"-row-totals)\"));\r\n if (index >= 0 && index < rows.length)\r\n return rows[index];\r\n return null;\r\n };\r\n /** Makes the grid focused for keyboard events */\r\n EasyGrid.prototype.focus = function () {\r\n this.bodyViewportDiv.focus();\r\n };\r\n /** Resizes columns according to the data they represent */\r\n EasyGrid.prototype.resizeColumns = function () {\r\n if (this.options.columnWidths.autoResize === AutoResizeColumns.Never)\r\n return;\r\n var containerWidth = this.bodyCellContainerDiv.style.width;\r\n this.bodyCellContainerDiv.style.visibility = 'hidden';\r\n this.bodyCellContainerDiv.style.width = '1px';\r\n //this.headerRowDiv.style.visibility = 'hidden';\r\n this.headerRowDiv.style.width = '1px';\r\n var sumWidth = 0;\r\n var columns = this.columns.getItems();\r\n var headerCells = this.headerCellContainerDiv.querySelectorAll(\".\" + this.cssPrefix + \"-header-cell\");\r\n var headerIdx = 0;\r\n var _loop_1 = function (idx) {\r\n var column = columns[idx];\r\n if (!column.isVisible)\r\n return \"continue\";\r\n var calculatedWidth = this_1.options.columnWidths.autoResize !== AutoResizeColumns.Always && column.dataColumn\r\n ? column.dataColumn.calculatedWidth\r\n : 0;\r\n var cellValues = this_1.bodyCellContainerDiv.querySelectorAll(\".\" + this_1.cssPrefix + \"-cell[data-col-idx=\\\"\" + idx + \"\\\"] > .\" + this_1.cssPrefix + \"-cell-value\");\r\n var maxWidth = 0;\r\n if (calculatedWidth > 0) {\r\n sumWidth += calculatedWidth;\r\n column.width = calculatedWidth;\r\n cellValues.forEach(function (value) {\r\n value.parentElement.style.width = calculatedWidth + \"px\";\r\n });\r\n headerCells[headerIdx].style.width = calculatedWidth + \"px\";\r\n }\r\n else {\r\n if (cellValues.length == 0) {\r\n headerCells[headerIdx].style.width = null;\r\n headerCells[headerIdx].style.whiteSpace = 'nowrap';\r\n }\r\n maxWidth = headerCells[headerIdx].offsetWidth;\r\n if (cellValues.length > 0) {\r\n cellValues.forEach(function (value) {\r\n value.parentElement.style.width = null;\r\n var width = value.parentElement.offsetWidth;\r\n if (width > maxWidth) {\r\n maxWidth = width;\r\n }\r\n });\r\n maxWidth += 3;\r\n var maxOption = column.isRowNum\r\n ? this_1.options.columnWidths.rowNumColumn.max || 500\r\n : this_1.options.columnWidths[column.dataColumn.type].max || 2000;\r\n var minOption = column.isRowNum\r\n ? this_1.options.columnWidths.rowNumColumn.min || 0\r\n : this_1.options.columnWidths[column.dataColumn.type].min || 20;\r\n if (maxWidth > maxOption) {\r\n maxWidth = maxOption;\r\n }\r\n if (maxWidth < minOption) {\r\n maxWidth = minOption;\r\n }\r\n if (utils.isNumericType(column.type)) {\r\n //increase the calculated width in 1.3 times for numeric columns\r\n maxWidth = Math.round(maxWidth * 1.3);\r\n }\r\n sumWidth += maxWidth;\r\n column.width = maxWidth;\r\n cellValues.forEach(function (value) {\r\n value.parentElement.style.width = maxWidth + \"px\";\r\n });\r\n headerCells[headerIdx].style.width = maxWidth + \"px\";\r\n if (column.dataColumn) {\r\n column.dataColumn.calculatedWidth = maxWidth;\r\n }\r\n }\r\n else {\r\n sumWidth += maxWidth;\r\n }\r\n }\r\n headerIdx++;\r\n };\r\n var this_1 = this;\r\n for (var idx = 0; idx < this.columns.count; idx++) {\r\n _loop_1(idx);\r\n }\r\n if (sumWidth > 0) {\r\n this.bodyCellContainerDiv.style.width = sumWidth + \"px\";\r\n this.headerCellContainerDiv.style.width = sumWidth + \"px\";\r\n }\r\n else {\r\n this.bodyCellContainerDiv.style.width = containerWidth;\r\n this.headerCellContainerDiv.style.width = containerWidth;\r\n }\r\n this.bodyCellContainerDiv.style.visibility = null;\r\n this.headerRowDiv.removeAttribute('style');\r\n };\r\n return EasyGrid;\r\n}());\r\nexport { EasyGrid };\r\n//# sourceMappingURL=easy_grid.js.map","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { QueryChangePart, WidgetGroup } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { View } from '../views/view';\r\n/**\r\n * The EasyQuery client-side view that represents the UI for advanced search page\r\n */\r\nvar AdvancedSearchView = /** @class */ (function (_super) {\r\n __extends(AdvancedSearchView, _super);\r\n function AdvancedSearchView() {\r\n var _this = _super.call(this) || this;\r\n _this.exportButtons = [];\r\n // Name of the class to add to disabled elements.\r\n _this.disabledClass = \"eqjs-disabled\";\r\n _this.dropdownContainerClass = \"eqv-dropdown-container\";\r\n _this.dropdownButtonClass = \"eqv-drop-button\";\r\n _this.dropdownContentClass = \"eqv-dropdown-content\";\r\n _this.dropdownShowClass = \"eqv-dropdown-show\";\r\n _this._querySaveTemplate = \"
\\n
\\n \\n \\n
\\n
\";\r\n _this.queryListMenu = null;\r\n _this.fetchDataButtonClickHandler = _this.fetchDataButtonClick.bind(_this);\r\n _this.clearQueryButtonClickHandler = _this.clearQueryButtonClick.bind(_this);\r\n _this.newQueryButtonClickHandler = _this.newQueryButtonClick.bind(_this);\r\n _this.loadQueryButtonClickHandler = _this.loadQueryButtonClick.bind(_this);\r\n _this.saveQueryButtonClickHandler = _this.saveQueryButtonClick.bind(_this);\r\n _this.copyQueryButtonClickHandler = _this.copyQueryButtonClick.bind(_this);\r\n _this.removeQueryButtonClickHandler = _this.removeQueryButtonClick.bind(_this);\r\n _this.storageButtonClickHandler = _this.storageDropButtonClick.bind(_this);\r\n _this.saveQueryToFileButtonClickHandler = _this.saveQueryToFileButtonClick.bind(_this);\r\n _this.loadQueryFromFileButtonClickHandler = _this.loadQueryFromFileButtonClick.bind(_this);\r\n var self = _this;\r\n _this.exportButtonClickHandler = function (e) {\r\n if (!this.classList.contains(self.disabledClass)) {\r\n var format = this.getAttribute(\"data-format\");\r\n self.getContext().exportResult({ format: format });\r\n }\r\n };\r\n _this.queryChangedHandler = function (ev) {\r\n var eventData = ev.data;\r\n if (_this.resultOptions.clearResultOnQueryChange) {\r\n _this.context.clearResult();\r\n _this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n _this.disableExportButtons();\r\n if (_this.resultCountSlot) {\r\n _this.resultCountSlot.style.display = \"none\";\r\n }\r\n if (_this.viewOptions.syncQueryOnChange) {\r\n _this.syncQuery();\r\n }\r\n if (_this.viewOptions.fetchDataOnChange) {\r\n if (!eventData || (eventData.part != QueryChangePart.ExtraData\r\n && eventData.part != QueryChangePart.Facets)) {\r\n _this.fetchData();\r\n }\r\n }\r\n };\r\n _this.outsideClickHandler = function (event) {\r\n var currentContent = null;\r\n if (event.target.matches(\".\" + _this.dropdownButtonClass)) {\r\n currentContent = event.target.parentElement.querySelector(\".\" + _this.dropdownContentClass);\r\n }\r\n else if (event.target.matches(\".\" + _this.dropdownButtonClass + \" > span\")) {\r\n currentContent = event.target.parentElement.parentElement.querySelector(\".\" + _this.dropdownContentClass);\r\n }\r\n var dropdowns = _this.resolveElementsByClassName(_this.dropdownContentClass);\r\n for (var i = 0; i < dropdowns.length; i++) {\r\n var openDropdown = dropdowns[i];\r\n if (currentContent != openDropdown) {\r\n if (openDropdown.classList.contains(_this.dropdownShowClass)) {\r\n openDropdown.classList.remove(_this.dropdownShowClass);\r\n }\r\n }\r\n }\r\n };\r\n return _this;\r\n }\r\n AdvancedSearchView.prototype.refreshQueryList = function () {\r\n var _this = this;\r\n if (this.queryListPanel) {\r\n this.queryListPanel.innerHTML = '';\r\n this.context.loadQueryList({\r\n success: function (data) {\r\n var b = domel('ul', _this.queryListPanel)\r\n .addClass('list-group list-group-flush');\r\n data.map(function (item) {\r\n b.addChild('li', function (b) {\r\n b.addClass('list-group-item')\r\n .setStyle('cursor', 'pointer')\r\n .data('id', item.id)\r\n .text(item.name)\r\n .on('click', function () {\r\n _this.checkIfQueryModified(function () { return _this.loadQuery(item.id); });\r\n });\r\n });\r\n });\r\n }\r\n });\r\n }\r\n };\r\n AdvancedSearchView.prototype.initOptions = function (options) {\r\n options = _super.prototype.initOptions.call(this, options);\r\n if (typeof (options.syncQueryOnChange) == 'undefined') {\r\n options.syncQueryOnChange = true;\r\n }\r\n return options;\r\n };\r\n AdvancedSearchView.prototype.initWidgets = function (options) {\r\n var _this = this;\r\n _super.prototype.initWidgets.call(this, options);\r\n var exportClass = \"eqjs-export\";\r\n var queryContentInputId = \"QueryContentJson\";\r\n var clearQueryButtonId = \"ClearQueryButton\";\r\n var newQueryButtonId = \"NewQueryButton\";\r\n var loadQueryButtonId = \"LoadQueryButton\";\r\n var saveQueryButtonId = \"SaveQueryButton\";\r\n var copyQueryButtonId = \"CopyQueryButton\";\r\n var removeQueryButtonId = \"RemoveQueryButton\";\r\n var storageButtonId = \"StorageDropButton\";\r\n var fetchDataButtonId = \"FetchDataButton\";\r\n var loadQueryFromFileButtonId = \"LoadQueryFromFileButton\";\r\n var saveQueryToFileButtonId = \"SaveQueryToFileButton\";\r\n var queryListPanelId = \"QueryListPanel\";\r\n if (options.slots) {\r\n queryContentInputId = options.slots.queryContentInput || queryContentInputId;\r\n fetchDataButtonId = options.slots.fetchDataButton || fetchDataButtonId;\r\n clearQueryButtonId = options.slots.clearQueryButton || clearQueryButtonId;\r\n newQueryButtonId = options.slots.newQueryButton || newQueryButtonId;\r\n loadQueryButtonId = options.slots.loadQueryButton || loadQueryButtonId;\r\n saveQueryButtonId = options.slots.saveQueryButton || saveQueryButtonId;\r\n copyQueryButtonId = options.slots.copyQueryButton || copyQueryButtonId;\r\n removeQueryButtonId = options.slots.removeQueryButton || removeQueryButtonId;\r\n storageButtonId = options.slots.storageButton || storageButtonId;\r\n exportClass = options.slots.exportClass || exportClass;\r\n loadQueryFromFileButtonId = options.slots.loadQueryFromFileButton || loadQueryFromFileButtonId;\r\n saveQueryToFileButtonId = options.slots.saveQueryToFileButton || saveQueryToFileButtonId;\r\n queryListPanelId = options.slots.queryListPanel || queryListPanelId;\r\n }\r\n this.exportButtons = this.domRoots.reduce(function (elems, root) {\r\n return elems.concat(Array.from(root.querySelectorAll(\".\" + exportClass)));\r\n }, []);\r\n if (!options.enableExport) {\r\n this.hideExportButtons();\r\n }\r\n this.disableExportButtons();\r\n //Add event listener for export buttons\r\n var self = this;\r\n this.exportButtons.forEach(function (button) {\r\n button.addEventListener('click', _this.exportButtonClickHandler);\r\n });\r\n if (!this.fetchDataButton) {\r\n this.fetchDataButton = this.resolveElement(fetchDataButtonId);\r\n if (!this.fetchDataButton) {\r\n this.fetchDataButton = this.resolveElement('ExecuteQueryButton'); //deprecated, should be removed on the next major update\r\n }\r\n if (this.fetchDataButton) {\r\n this.fetchDataButton.addEventListener('click', this.fetchDataButtonClickHandler);\r\n }\r\n }\r\n if (!this.clearQueryButton) {\r\n this.clearQueryButton = this.resolveElement(clearQueryButtonId);\r\n if (this.clearQueryButton) {\r\n this.clearQueryButton.addEventListener('click', this.clearQueryButtonClickHandler);\r\n }\r\n }\r\n if (!this.newQueryButton) {\r\n this.newQueryButton = this.resolveElement(newQueryButtonId);\r\n if (this.newQueryButton) {\r\n this.newQueryButton.addEventListener('click', this.newQueryButtonClickHandler);\r\n }\r\n }\r\n if (!this.loadQueryButton) {\r\n this.loadQueryButton = this.resolveElement(loadQueryButtonId);\r\n if (this.loadQueryButton) {\r\n this.loadQueryButton.addEventListener('click', this.loadQueryButtonClickHandler);\r\n }\r\n }\r\n if (!this.saveQueryButton) {\r\n this.saveQueryButton = this.resolveElement(saveQueryButtonId);\r\n if (this.saveQueryButton) {\r\n this.saveQueryButton.addEventListener('click', this.saveQueryButtonClickHandler);\r\n }\r\n }\r\n if (!this.copyQueryButton) {\r\n this.copyQueryButton = this.resolveElement(copyQueryButtonId);\r\n if (this.copyQueryButton) {\r\n this.copyQueryButton.addEventListener('click', this.copyQueryButtonClickHandler);\r\n }\r\n }\r\n if (!this.removeQueryButton) {\r\n this.removeQueryButton = this.resolveElement(removeQueryButtonId);\r\n if (this.removeQueryButton) {\r\n this.removeQueryButton.addEventListener('click', this.removeQueryButtonClickHandler);\r\n }\r\n }\r\n if (!this.storageDropButton) {\r\n this.storageDropButton = this.resolveElement(storageButtonId);\r\n if (this.storageDropButton) {\r\n this.storageDropButton.addEventListener('click', this.storageButtonClickHandler);\r\n }\r\n }\r\n if (!this.saveQueryToFileButton) {\r\n this.saveQueryToFileButton = this.resolveElement(saveQueryToFileButtonId);\r\n if (this.saveQueryToFileButton) {\r\n this.saveQueryToFileButton.addEventListener('click', this.saveQueryToFileButtonClickHandler);\r\n }\r\n }\r\n if (!this.queryListPanel) {\r\n this.queryListPanel = this.resolveElement(queryListPanelId);\r\n //For backward compatibility. Remove on the next update\r\n if (!this.queryListPanel) {\r\n this.queryListPanel = this.resolveElement('QueryListSlot');\r\n }\r\n if (this.queryListPanel) {\r\n this.context.addEventListener('ready', function () {\r\n _this.refreshQueryList();\r\n });\r\n }\r\n }\r\n if (!this.loadQueryFromFileButton) {\r\n this.loadQueryFromFileButton = this.resolveElement(loadQueryFromFileButtonId);\r\n if (this.loadQueryFromFileButton) {\r\n this.loadQueryFromFileInput = document.createElement('input');\r\n this.loadQueryFromFileInput.type = 'file';\r\n this.loadQueryFromFileInput.accept = options.queryFileExtensions;\r\n this.loadQueryFromFileInput.style.display = 'none';\r\n document.body.appendChild(this.loadQueryFromFileInput);\r\n this.loadQueryFromFileInput.addEventListener('change', this.loadQueryFromFileInputSelect.bind(this));\r\n this.loadQueryFromFileButton.addEventListener('click', this.loadQueryFromFileButtonClickHandler);\r\n }\r\n }\r\n // hide any dropdown menu when user clicks somewhere\r\n window.addEventListener('click', this.outsideClickHandler);\r\n };\r\n AdvancedSearchView.prototype.initDone = function () {\r\n _super.prototype.initDone.call(this);\r\n var query = this.context.getQuery();\r\n query.addChangedCallback(this.queryChangedHandler);\r\n };\r\n /**\r\n * Sends current query to the backend.\r\n */\r\n AdvancedSearchView.prototype.syncQuery = function () {\r\n var _this = this;\r\n this.context.syncQuery({\r\n success: function (responseData) {\r\n if (responseData.statement) {\r\n _this.context.refreshWidgets(WidgetGroup.Statement);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Disables export buttons.\r\n */\r\n AdvancedSearchView.prototype.disableExportButtons = function () {\r\n var _this = this;\r\n this.exportButtons.forEach(function (button) {\r\n button.disabled = true;\r\n if (!button.classList.contains(_this.disabledClass)) {\r\n button.classList.add(_this.disabledClass);\r\n }\r\n });\r\n };\r\n /**\r\n * Enables export buttons.\r\n */\r\n AdvancedSearchView.prototype.enableExportButtons = function () {\r\n var _this = this;\r\n this.exportButtons.forEach(function (button) {\r\n button.disabled = false;\r\n if (button.classList.contains(_this.disabledClass)) {\r\n button.classList.remove(_this.disabledClass);\r\n }\r\n });\r\n };\r\n /**\r\n * Hides export buttons.\r\n */\r\n AdvancedSearchView.prototype.hideExportButtons = function () {\r\n this.exportButtons.forEach(function (button) {\r\n button.style.display = \"none\";\r\n });\r\n };\r\n AdvancedSearchView.prototype.clearQueryButtonClick = function () {\r\n this.context.clearQuery();\r\n this.context.refreshWidgets(WidgetGroup.Statement);\r\n };\r\n AdvancedSearchView.prototype.createNewQuery = function (options) {\r\n return this.context.newQuery(options);\r\n };\r\n AdvancedSearchView.prototype.loadQuery = function (queryId) {\r\n if (!queryId)\r\n return;\r\n this.context.loadQuery({\r\n queryId: queryId,\r\n silent: false\r\n });\r\n };\r\n AdvancedSearchView.prototype.saveQuery = function (success, error) {\r\n var _this = this;\r\n this.context.saveQuery({\r\n success: function () {\r\n if (success)\r\n success();\r\n _this.context.getQuery().fireChangedEvent({\r\n part: QueryChangePart.Properties,\r\n wasModified: false\r\n });\r\n _this.refreshQueryList();\r\n },\r\n error: error\r\n });\r\n };\r\n AdvancedSearchView.prototype.saveCurrentQuery = function (copyQuery, callback) {\r\n var _this = this;\r\n if (copyQuery === void 0) { copyQuery = false; }\r\n var query = this.context.getQuery();\r\n if (query.isNewbie || copyQuery) {\r\n this.showSaveQueryDialog(function (result) { return new Promise(function (resolve) {\r\n if (!result)\r\n return;\r\n query.regenerateId();\r\n query.setName(result);\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Properties,\r\n wasModified: true\r\n });\r\n _this.saveQuery(function () { resolve({ success: true }); callback; }, function (error) { return resolve({ success: false, message: error }); });\r\n }); });\r\n }\r\n else {\r\n this.saveQuery(callback);\r\n }\r\n };\r\n AdvancedSearchView.prototype.checkIfQueryModified = function (callback) {\r\n var _this = this;\r\n if (this.context.getQuery().isModified()\r\n && !this.viewOptions.disableConfirmationOnQueryChange) {\r\n this.showQueryChangedDialog(function (result) {\r\n if (result) {\r\n _this.saveCurrentQuery(false, callback);\r\n }\r\n else {\r\n callback();\r\n }\r\n });\r\n }\r\n else {\r\n callback();\r\n }\r\n };\r\n AdvancedSearchView.prototype.removeCurrentQuery = function () {\r\n var _this = this;\r\n this.context.removeQuery({\r\n success: function () {\r\n _this.createNewQuery({\r\n useStorage: false\r\n });\r\n if (_this.resultCountSlot) {\r\n _this.resultCountSlot.style.display = \"none\";\r\n }\r\n _this.context.clearResult();\r\n _this.refreshQueryList();\r\n }\r\n });\r\n };\r\n // ------------------ Dialog wrappers ---------------------\r\n AdvancedSearchView.prototype.showNewQueryDialog = function (callback) {\r\n var ds = this.context.getServices().getDialogService();\r\n var defVal = i18n.getText('NewQueryDefName');\r\n var dlg = ds.open({\r\n title: i18n.getText('NewQueryTitle'),\r\n body: this._querySaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n if (defVal) {\r\n input.value = defVal;\r\n }\r\n var content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('NewQueryContent');\r\n input.focus();\r\n },\r\n onSubmit: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n var value = input.value;\r\n if (value && value.replace(/\\s/g, '').length > 0) {\r\n if (!callback)\r\n return true;\r\n dlg.disableButtons();\r\n var header_1 = dlg.getRootElement().querySelector('header');\r\n var processEl_1 = domel('div', header_1)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n callback(value)\r\n .then(function (result) {\r\n header_1.removeChild(processEl_1);\r\n dlg.enableButtons();\r\n if (result.success) {\r\n dlg.close();\r\n }\r\n else {\r\n dlg.showAlert(result.message, 'error');\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n AdvancedSearchView.prototype.showQueryChangedDialog = function (callback) {\r\n var ds = this.context.getServices().getDialogService();\r\n ds.openConfirm(i18n.getText('QueryChangedTitle'), i18n.getText('QueryChangedContent'), callback);\r\n };\r\n AdvancedSearchView.prototype.showSaveQueryDialog = function (callback) {\r\n var ds = this.context.getServices().getDialogService();\r\n var query = this.context.getQuery();\r\n var newQueryName = query.isNewbie\r\n ? query.getName()\r\n : i18n.getText('SaveQueryDefName').replace('{queryName}', query.getName());\r\n var dlg = ds.open({\r\n title: i18n.getText('SaveQueryTitle'),\r\n body: this._querySaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n input.value = newQueryName;\r\n var content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('SaveQueryContent');\r\n input.focus();\r\n },\r\n onSubmit: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n var value = input.value;\r\n if (value && value.replace(/\\s/g, '').length > 0) {\r\n if (!callback)\r\n return true;\r\n dlg.disableButtons();\r\n var header_2 = dlg.getRootElement().querySelector('header');\r\n var processEl_2 = domel('div', header_2)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n callback(value)\r\n .then(function (result) {\r\n dlg.enableButtons();\r\n header_2.removeChild(processEl_2);\r\n if (result.success) {\r\n dlg.close();\r\n }\r\n else {\r\n dlg.showAlert(result.message, 'error');\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n AdvancedSearchView.prototype.showRemoveQueryDialog = function (callback) {\r\n var ds = this.context.getServices().getDialogService();\r\n var query = this.context.getQuery();\r\n ds.openConfirm(i18n.getText('RemoveQueryTitle'), i18n.getText('RemoveQueryContent').replace('{queryName}', query.getName()), callback);\r\n };\r\n AdvancedSearchView.prototype.showSaveQueryToFileDialog = function (callback) {\r\n var ds = this.getContext().getServices().getDialogService();\r\n var query = this.context.getQuery();\r\n var body = this.renderSaveToFileDialogBody(query.getName());\r\n var dlg = ds.open({\r\n title: i18n.getText('SaveQueryToFileDlgTitle'),\r\n body: body,\r\n onSubmit: function () {\r\n var fileNameInput = body.querySelector('#kdlgFileNameInput');\r\n var fileName = fileNameInput ? fileNameInput.value : \"Query\";\r\n var formatSelector = body.querySelector('#kdlgFileFormatSelector');\r\n var format = formatSelector ? formatSelector.value : 'json';\r\n if (callback) {\r\n dlg.disableButtons();\r\n var header_3 = dlg.getRootElement().querySelector('header');\r\n var processEl_3 = domel('div', header_3)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n callback(fileName, format)\r\n .then(function (result) {\r\n dlg.enableButtons();\r\n header_3.removeChild(processEl_3);\r\n if (result.success) {\r\n dlg.close();\r\n }\r\n else {\r\n dlg.showAlert(result.message, 'error');\r\n }\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n });\r\n };\r\n AdvancedSearchView.prototype.renderSaveToFileDialogBody = function (name, format) {\r\n if (format === void 0) { format = \"json\"; }\r\n var isIE = browserUtils.isIE();\r\n var fieldsClass = isIE\r\n ? 'kfrm-fields-ie col-ie-1-4 label-align-right'\r\n : 'kfrm-fields col-a-1 label-align-right';\r\n var horizClass = isIE\r\n ? 'kfrm-fields-ie is-horizontal'\r\n : 'kfrm-fields is-horizontal';\r\n return domel('div')\r\n .addClass('kfrm-form')\r\n .addChild('div', function (b) {\r\n b.addClass(fieldsClass)\r\n .addChild('label', function (b) { return b\r\n .attr('for', 'file_name')\r\n .addText(i18n.getText('FileNameLabel')); })\r\n .addChild('div', function (b) { return b\r\n .addClass(horizClass)\r\n .addChild('input', function (b) { return b\r\n .id('kdlgFileNameInput')\r\n .name('file_name')\r\n .type('text')\r\n .attr('value', name); })\r\n .addChild('label', function (b) { return b\r\n .addText('.'); })\r\n .addChild('div', function (b) { return b\r\n .addClass('kfrm-select')\r\n .addChild('select', function (b) { return b\r\n .id('kdlgFileFormatSelector')\r\n .addClass('kdlg-form-control')\r\n .addOption({\r\n value: 'xml',\r\n selected: 'xml' === format\r\n })\r\n .addOption({\r\n value: 'json',\r\n selected: 'json' === format\r\n }); }); }); });\r\n })\r\n .toDOM();\r\n };\r\n // ------------------ Query management buttons handler ---------------------\r\n AdvancedSearchView.prototype.newQueryButtonClick = function () {\r\n var _this = this;\r\n this.checkIfQueryModified(function () {\r\n _this.createNewQuery();\r\n });\r\n };\r\n AdvancedSearchView.prototype.saveQueryToFileButtonClick = function () {\r\n var _this = this;\r\n this.showSaveQueryToFileDialog(function (fileName, format) { return new Promise(function (resolve) {\r\n _this.context.getQueryFile({\r\n fileName: fileName,\r\n format: format,\r\n success: function () { return resolve({ success: true }); },\r\n error: function (error) { return resolve({ success: false, message: error }); }\r\n });\r\n }); });\r\n };\r\n AdvancedSearchView.prototype.loadQueryFromFileButtonClick = function () {\r\n var _this = this;\r\n this.checkIfQueryModified(function () {\r\n _this.showLoadQueryFromFileDialog();\r\n });\r\n };\r\n AdvancedSearchView.prototype.showLoadQueryFromFileDialog = function () {\r\n this.loadQueryFromFileInput.click();\r\n };\r\n AdvancedSearchView.prototype.loadQueryFromFileInputSelect = function () {\r\n var _this = this;\r\n var files = this.loadQueryFromFileInput.files;\r\n var file = files.item(0);\r\n var data = new FormData();\r\n data.append(file.name, file);\r\n this.loadQueryFromFileInput.value = \"\";\r\n this.context.uploadQueryFile({\r\n data: data,\r\n success: function () {\r\n _this.syncQuery();\r\n _this.refreshQueryList();\r\n }\r\n });\r\n };\r\n AdvancedSearchView.prototype.loadQueryButtonClick = function () {\r\n var _this = this;\r\n this.context.loadQueryList({\r\n success: function (data) {\r\n _this.fillLoadQueryButtonMenu(data);\r\n _this.queryListMenu.showMenu({\r\n anchor: _this.loadQueryButton,\r\n adjustHeight: false,\r\n itemSelectedCallback: function (data) {\r\n _this.checkIfQueryModified(function () { return _this.loadQuery(data.id); });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n AdvancedSearchView.prototype.fillLoadQueryButtonMenu = function (queryList) {\r\n var query = this.getContext().getQuery();\r\n this.queryListMenu = new PopupMenu({\r\n items: queryList.map(function (item) { return ({ id: item.id, text: item.name }); }),\r\n selectedIds: query.getId()\r\n });\r\n };\r\n AdvancedSearchView.prototype.saveQueryButtonClick = function () {\r\n this.saveCurrentQuery();\r\n };\r\n AdvancedSearchView.prototype.copyQueryButtonClick = function () {\r\n this.saveCurrentQuery(true);\r\n };\r\n AdvancedSearchView.prototype.removeQueryButtonClick = function () {\r\n var _this = this;\r\n this.showRemoveQueryDialog(function (result) {\r\n if (result) {\r\n _this.removeCurrentQuery();\r\n }\r\n });\r\n };\r\n AdvancedSearchView.prototype.storageDropButtonClick = function () {\r\n var _this = this;\r\n var container = this.storageDropButton.parentElement;\r\n var content = container.querySelector(\".\" + this.dropdownContentClass);\r\n if (content) {\r\n window.setTimeout(function () { return content.classList.toggle(_this.dropdownShowClass); }, 100);\r\n }\r\n };\r\n AdvancedSearchView.prototype.fetchDataButtonClick = function () {\r\n this.fetchData();\r\n };\r\n AdvancedSearchView.prototype.detach = function () {\r\n var _this = this;\r\n this.enableExportButtons();\r\n this.exportButtons.forEach(function (button) {\r\n button.removeEventListener('click', _this.exportButtonClickHandler);\r\n });\r\n this.exportButtons = [];\r\n if (this.fetchDataButton) {\r\n this.fetchDataButton.removeEventListener('click', this.fetchDataButtonClickHandler);\r\n this.fetchDataButton = null;\r\n }\r\n if (this.clearQueryButton) {\r\n this.clearQueryButton.removeEventListener('click', this.clearQueryButtonClickHandler);\r\n this.clearQueryButton = null;\r\n }\r\n if (this.newQueryButton) {\r\n this.newQueryButton.removeEventListener('click', this.newQueryButtonClickHandler);\r\n this.newQueryButton = null;\r\n }\r\n if (this.loadQueryButton) {\r\n this.loadQueryButton.removeEventListener('click', this.loadQueryButtonClickHandler);\r\n this.loadQueryButton = null;\r\n }\r\n if (this.saveQueryButton) {\r\n this.saveQueryButton.removeEventListener('click', this.saveQueryButtonClickHandler);\r\n this.saveQueryButton = null;\r\n }\r\n if (this.copyQueryButton) {\r\n this.copyQueryButton.removeEventListener('click', this.copyQueryButtonClickHandler);\r\n this.copyQueryButton = null;\r\n }\r\n if (this.removeQueryButton) {\r\n this.removeQueryButton.removeEventListener('click', this.removeQueryButtonClickHandler);\r\n this.removeQueryButton = null;\r\n }\r\n if (this.storageDropButton) {\r\n this.storageDropButton.removeEventListener('click', this.storageButtonClickHandler);\r\n this.storageDropButton = null;\r\n }\r\n if (this.saveQueryToFileButton) {\r\n this.saveQueryToFileButton.removeEventListener('click', this.saveQueryToFileButtonClickHandler);\r\n this.saveQueryToFileButton = null;\r\n }\r\n if (this.queryListPanel) {\r\n this.queryListPanel = null;\r\n }\r\n if (this.loadQueryFromFileButton) {\r\n if (this.loadQueryFromFileInput) {\r\n document.body.removeChild(this.loadQueryFromFileInput);\r\n }\r\n this.loadQueryFromFileButton.removeEventListener('click', this.loadQueryFromFileButtonClickHandler);\r\n this.loadQueryFromFileButton = null;\r\n }\r\n _super.prototype.detach.call(this);\r\n };\r\n return AdvancedSearchView;\r\n}(View));\r\nexport { AdvancedSearchView };\r\n//# sourceMappingURL=adv_search_view.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { EasyDataTable } from '@easydata/core';\r\nimport { ExprTag, EqAggregatesContainer, Expression } from '@easyquery/core';\r\nvar EqServerAggregatesCalculator = /** @class */ (function () {\r\n function EqServerAggregatesCalculator(context) {\r\n this.context = context;\r\n this._needRecalculation = true;\r\n this.aggrContainer = new EqAggregatesContainer(context);\r\n }\r\n EqServerAggregatesCalculator.prototype.getAggrContainer = function () {\r\n return this.aggrContainer;\r\n };\r\n EqServerAggregatesCalculator.prototype.calculate = function (options) {\r\n this._needRecalculation = false;\r\n this.aggrContainer.clear();\r\n options = options || {};\r\n options.maxLevel = options.maxLevel >= 0\r\n ? options.maxLevel : 0;\r\n var levelPromises = [];\r\n var query = this.context.createQuery();\r\n query.loadFromData(this.context.getQuery().toJSONData());\r\n var settings = this.context.getQuery().getAggregationSettings();\r\n var aggregates = settings.getAggregates();\r\n var aggrColIds = settings.getAggregates().map(function (a) { return a.colId; });\r\n var aggrCols = query.getColumns()\r\n .filter(function (col) { return aggrColIds.indexOf(col.id) >= 0; });\r\n var _loop_1 = function (col) {\r\n query.changeColumnType(col, ExprTag.AggregateFunction, { funcId: aggregates.filter(function (a) { return a.colId == col.id; })[0].funcId });\r\n };\r\n for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {\r\n var col = aggrCols_1[_i];\r\n _loop_1(col);\r\n }\r\n //get all non-aggregate columns\r\n var queryCols = query.getColumns()\r\n .filter(function (c) { return c.expr.tag !== ExprTag.AggregateFunction; });\r\n for (var _a = 0, queryCols_1 = queryCols; _a < queryCols_1.length; _a++) {\r\n var col = queryCols_1[_a];\r\n col.setHidden(true);\r\n }\r\n if (settings.hasRecordCount()) {\r\n var col = query.createColumn();\r\n col.caption = settings.COUNT_FIELD_NAME;\r\n col['_id'] = settings.COUNT_FIELD_NAME;\r\n var sqlText = 'COUNT(*)';\r\n var customSqlExpr = new Expression(col);\r\n customSqlExpr.tag = ExprTag.CustomSql;\r\n customSqlExpr.sql = sqlText;\r\n customSqlExpr.baseAttrId = null;\r\n col.expr = customSqlExpr;\r\n query.getColumns().push(col);\r\n }\r\n if (settings.hasGrandTotals()) {\r\n levelPromises.push(this.processLevel({\r\n query: query,\r\n level: 0,\r\n groupName: 'Grand Totals',\r\n resultObtainedCallback: options.resultObtained,\r\n errorOccurredCallback: options.errorOccurred\r\n }));\r\n }\r\n var groups = settings.getGroups();\r\n for (var level = 1; level <= groups.length; level++) {\r\n var group = groups[level - 1];\r\n for (var _b = 0, queryCols_2 = queryCols; _b < queryCols_2.length; _b++) {\r\n var col = queryCols_2[_b];\r\n col.setHidden(group.columns.indexOf(col.id) < 0);\r\n }\r\n levelPromises.push(this.processLevel({\r\n query: query,\r\n level: level,\r\n groupName: group.name,\r\n resultObtainedCallback: options.resultObtained,\r\n errorOccurredCallback: options.errorOccurred\r\n }));\r\n }\r\n return Promise.all(levelPromises)\r\n .then(function () {\r\n return;\r\n })\r\n .catch(function (error) { return console.error(error); });\r\n };\r\n EqServerAggregatesCalculator.prototype.processLevel = function (options) {\r\n var _this = this;\r\n var fetcher = this.context.getServices()\r\n .getDataFetcher();\r\n var fetchOptions = {\r\n aux: true,\r\n query: options.query\r\n };\r\n if (this.context.debugMode) {\r\n fetchOptions.debug = \"Fetching group data. Group: '\" + options.groupName + \"', level: \" + options.level;\r\n }\r\n var resultPromise = fetcher.fetchData(fetchOptions)\r\n .then(function (result) {\r\n var dataTable = new EasyDataTable({\r\n elasticChunks: true\r\n });\r\n var resultSet = result.resultSet;\r\n for (var _i = 0, _a = resultSet.cols; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n dataTable.columns.add(col);\r\n }\r\n for (var _b = 0, _c = resultSet.rows; _b < _c.length; _b++) {\r\n var row = _c[_b];\r\n dataTable.addRow(row);\r\n }\r\n var levelData = _this.buildLevelData(options.level, dataTable);\r\n _this.aggrContainer.setAggregateData(options.level, levelData);\r\n if (options.resultObtainedCallback) {\r\n options.resultObtainedCallback(result, options.level);\r\n }\r\n })\r\n .catch(function (error) {\r\n if (options.errorOccurredCallback) {\r\n options.errorOccurredCallback(__assign(__assign({}, error), { level: options.level }));\r\n }\r\n });\r\n return resultPromise;\r\n };\r\n EqServerAggregatesCalculator.prototype.buildLevelData = function (level, dataTable) {\r\n var aggrSettings = this.context.getQuery().getAggregationSettings();\r\n var keyColumns = level > 0\r\n ? aggrSettings.getGroups()[level - 1].columns\r\n : [];\r\n var valueColumns = aggrSettings.getAggregates().map(function (a) { return a.colId; });\r\n if (aggrSettings.hasRecordCount()) {\r\n valueColumns.push(aggrSettings.COUNT_FIELD_NAME);\r\n }\r\n var data = new Map();\r\n for (var _i = 0, _a = dataTable.getCachedRows(); _i < _a.length; _i++) {\r\n var row = _a[_i];\r\n var key = {};\r\n var value = {};\r\n for (var _b = 0, keyColumns_1 = keyColumns; _b < keyColumns_1.length; _b++) {\r\n var keyCol = keyColumns_1[_b];\r\n var colIdx = dataTable.columns.getIndex(keyCol);\r\n if (colIdx >= 0) {\r\n var keyVal = row.getValue(keyCol);\r\n if (!aggrSettings.caseSensitiveGroups && typeof (keyVal) === 'string') {\r\n keyVal = keyVal.toLowerCase();\r\n }\r\n key[keyCol] = keyVal;\r\n }\r\n }\r\n for (var _c = 0, valueColumns_1 = valueColumns; _c < valueColumns_1.length; _c++) {\r\n var valueCol = valueColumns_1[_c];\r\n value[valueCol] = row.getValue(valueCol);\r\n }\r\n data.set(JSON.stringify(key), value);\r\n }\r\n return data;\r\n };\r\n EqServerAggregatesCalculator.prototype.needRecalculation = function () {\r\n return this._needRecalculation;\r\n };\r\n EqServerAggregatesCalculator.prototype.reset = function () {\r\n this._needRecalculation = true;\r\n };\r\n return EqServerAggregatesCalculator;\r\n}());\r\nexport { EqServerAggregatesCalculator };\r\n//# sourceMappingURL=eqs_aggr_calculator.js.map","var HttpActionResult = /** @class */ (function () {\r\n function HttpActionResult(request, promise) {\r\n this.request = request;\r\n this.promise = promise;\r\n }\r\n HttpActionResult.prototype.getPromise = function () {\r\n return this.promise;\r\n };\r\n HttpActionResult.prototype.getRequest = function () {\r\n return this.request;\r\n };\r\n HttpActionResult.prototype.then = function (onfulfilled, onrejected) {\r\n return this.promise.then(onfulfilled, onrejected);\r\n };\r\n HttpActionResult.prototype.catch = function (onrejected) {\r\n return this.promise.catch(onrejected);\r\n };\r\n HttpActionResult.prototype.finally = function (onfinally) {\r\n return this.promise.finally(onfinally);\r\n };\r\n return HttpActionResult;\r\n}());\r\nexport { HttpActionResult };\r\n//# sourceMappingURL=http_action_result.js.map","import { EqAggregatesContainer } from '@easyquery/core';\r\nvar DataTableAggregatesCalculator = /** @class */ (function () {\r\n function DataTableAggregatesCalculator(context) {\r\n this.context = context;\r\n //stores current totals by level (group) number\r\n this.levelsTotals = [];\r\n this.prevRow = null;\r\n this.aggrContainer = new EqAggregatesContainer(context);\r\n }\r\n DataTableAggregatesCalculator.prototype.getAggrContainer = function () {\r\n return this.aggrContainer;\r\n };\r\n DataTableAggregatesCalculator.prototype.initObjects = function () {\r\n var _this = this;\r\n this.aggrSettings = this.context.getQuery().getAggregationSettings();\r\n this.groups = this.aggrSettings.getGroups();\r\n this.aggregates = this.aggrSettings.getAggregates();\r\n this.aggrColIds = this.aggrSettings.getAggregates().map(function (a) { return a.colId; });\r\n this.aggrCols = this.context.resultTable.columns.getItems()\r\n .filter(function (col) { return _this.aggrColIds.indexOf(col.id) >= 0; });\r\n this.levelsTotals = [];\r\n this.prevRow = null;\r\n };\r\n DataTableAggregatesCalculator.prototype.createColumnAggregatesObject = function () {\r\n return {\r\n sum: 0,\r\n min: Number.MAX_VALUE,\r\n max: Number.MIN_VALUE\r\n };\r\n };\r\n DataTableAggregatesCalculator.prototype.calculate = function (options) {\r\n this.initObjects();\r\n this.aggrContainer.clear();\r\n options = options || {};\r\n options.maxLevel = options.maxLevel >= 0\r\n ? options.maxLevel : 0;\r\n var levelNumber = this.groups.length + 1; //number of groups plus grand totals\r\n for (var levelIndex = 0; levelIndex < levelNumber; levelIndex++) {\r\n var levelTotals = { count: 0, columns: {} };\r\n this.resetLevelTotals(levelTotals);\r\n this.levelsTotals.push(levelTotals);\r\n }\r\n var allRows = this.context.resultTable.getCachedRows();\r\n if (allRows.length > 0) {\r\n for (var _i = 0, allRows_1 = allRows; _i < allRows_1.length; _i++) {\r\n var row = allRows_1[_i];\r\n this.processDataRow(row);\r\n }\r\n //flusing the totals for all group levels\r\n for (var levelIndex = 1; levelIndex < levelNumber; levelIndex++) {\r\n this.flushLevelTotals(levelIndex);\r\n }\r\n //flusing the grand totals (if they are turned on)\r\n if (this.aggrSettings.hasGrandTotals()) {\r\n this.flushLevelTotals(0);\r\n }\r\n }\r\n return Promise.resolve();\r\n };\r\n DataTableAggregatesCalculator.prototype.resetLevelTotals = function (rowTotals) {\r\n for (var _i = 0, _a = this.aggrCols; _i < _a.length; _i++) {\r\n var aggrCol = _a[_i];\r\n rowTotals.columns[aggrCol.id] = this.createColumnAggregatesObject();\r\n }\r\n rowTotals.count = 0;\r\n };\r\n DataTableAggregatesCalculator.prototype.processDataRow = function (row) {\r\n var levelIndexChanged = this.checkLevelChange(row);\r\n if (levelIndexChanged >= 0) {\r\n for (var levelIndex_1 = levelIndexChanged; levelIndex_1 < this.levelsTotals.length; levelIndex_1++) {\r\n this.flushLevelTotals(levelIndex_1);\r\n }\r\n }\r\n if (this.aggrSettings.hasGrandTotals()) {\r\n this.updateLevelTotals(0, row);\r\n }\r\n var levelIndex = 1;\r\n for (var _i = 0, _a = this.groups; _i < _a.length; _i++) {\r\n var group = _a[_i];\r\n this.updateLevelTotals(levelIndex, row);\r\n levelIndex++;\r\n }\r\n this.prevRow = row;\r\n };\r\n /** Checks if the values in group columns were changed\r\n and return the level number they were */\r\n DataTableAggregatesCalculator.prototype.checkLevelChange = function (row) {\r\n if (this.prevRow == null)\r\n return -1;\r\n for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\r\n var group = this.groups[groupIndex];\r\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\r\n var colId = _a[_i];\r\n var value = row.getValue(colId);\r\n var prevValue = this.prevRow.getValue(colId);\r\n if (!this.aggrSettings.compareValues(prevValue, value)) {\r\n return groupIndex + 1;\r\n }\r\n }\r\n }\r\n return -1;\r\n };\r\n /** Saves the current values in levelData for the specified level to AggregateContainer\r\n and then reset the data row for that level\r\n */\r\n DataTableAggregatesCalculator.prototype.flushLevelTotals = function (levelIndex) {\r\n var levelTotals = this.levelsTotals[levelIndex];\r\n var group = levelIndex > 0 ? this.groups[levelIndex - 1] : null;\r\n var groupKey = this.aggrSettings.buildGroupKey(group, this.prevRow);\r\n var groupTotals = {};\r\n for (var _i = 0, _a = this.aggregates; _i < _a.length; _i++) {\r\n var aggr = _a[_i];\r\n var columnTotals = levelTotals.columns[aggr.colId];\r\n groupTotals[aggr.colId] = this.applyAggrFunc(aggr.funcId, columnTotals, levelTotals);\r\n }\r\n if (this.aggrSettings.hasRecordCount()) {\r\n groupTotals[this.aggrSettings.COUNT_FIELD_NAME] = levelTotals.count;\r\n }\r\n this.aggrContainer.updateAggregateData(levelIndex, groupKey, groupTotals);\r\n this.resetLevelTotals(levelTotals);\r\n };\r\n DataTableAggregatesCalculator.prototype.applyAggrFunc = function (funcId, columnTotals, levelTotals) {\r\n switch (funcId) {\r\n case \"SUM\":\r\n return columnTotals.sum;\r\n case \"AVG\":\r\n return columnTotals.sum / levelTotals.count;\r\n case \"COUNT\":\r\n case \"CNTDST\":\r\n return levelTotals.count;\r\n case \"MIN\":\r\n return columnTotals.min;\r\n case \"MAX\":\r\n return columnTotals.max;\r\n }\r\n };\r\n /** Updates the totals by values in the current DataRow\r\n * and according to the specified aggregate\r\n */\r\n DataTableAggregatesCalculator.prototype.updateLevelTotals = function (levelIndex, row) {\r\n var levelTotals = this.levelsTotals[levelIndex];\r\n levelTotals.count += 1;\r\n for (var _i = 0, _a = this.aggregates; _i < _a.length; _i++) {\r\n var aggr = _a[_i];\r\n var value = row.getValue(aggr.colId);\r\n var columnTotals = levelTotals.columns[aggr.colId];\r\n columnTotals.sum += value;\r\n if (value < columnTotals.min) {\r\n columnTotals.min = value;\r\n }\r\n if (value > columnTotals.max) {\r\n columnTotals.max = value;\r\n }\r\n }\r\n };\r\n DataTableAggregatesCalculator.prototype.needRecalculation = function () {\r\n return true;\r\n };\r\n DataTableAggregatesCalculator.prototype.reset = function () {\r\n };\r\n return DataTableAggregatesCalculator;\r\n}());\r\nexport { DataTableAggregatesCalculator };\r\n//# sourceMappingURL=data_table_aggr_calculator.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var 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","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup } from \"@easyquery/core\";\r\n/**\r\n * The widget responsed for rendering html content\r\n */\r\nvar HtmlContentWidget = /** @class */ (function (_super) {\r\n __extends(HtmlContentWidget, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function HtmlContentWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.contentElement = slot;\r\n _this.group = WidgetGroup.Result;\r\n return _this;\r\n }\r\n HtmlContentWidget.prototype.getWidgetType = function () {\r\n return 'htmlContent';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n HtmlContentWidget.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n HtmlContentWidget.prototype.refreshCore = function () {\r\n this.clear();\r\n if (!this.context.resultContent)\r\n return;\r\n this.render();\r\n };\r\n /**\r\n * Renders widget\r\n */\r\n HtmlContentWidget.prototype.render = function () {\r\n if (this.context.resultContent) {\r\n this.contentElement.innerHTML += this.context.resultContent;\r\n }\r\n };\r\n /**\r\n * Clears content.\r\n */\r\n HtmlContentWidget.prototype.clear = function () {\r\n this.contentElement.innerHTML = \"\";\r\n };\r\n HtmlContentWidget.prototype.destroyCore = function () {\r\n this.clear();\r\n };\r\n return HtmlContentWidget;\r\n}(Widget));\r\nexport { HtmlContentWidget };\r\n//# sourceMappingURL=html_content_widget.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { WidgetGroup } from '@easyquery/core';\r\nimport { HtmlContentWidget } from './html_content_widget';\r\n/**\r\n * The widget responsed for rendering html grid.\r\n */\r\nvar EqHtmlGrid = /** @class */ (function (_super) {\r\n __extends(EqHtmlGrid, _super);\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n function EqHtmlGrid(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.options = {\r\n maxButtonCount: 10,\r\n useBootstrap: false\r\n };\r\n return _this;\r\n }\r\n EqHtmlGrid.prototype.getWidgetType = function () {\r\n return 'eqHtmlGrid';\r\n };\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n EqHtmlGrid.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.setOptions(options);\r\n };\r\n EqHtmlGrid.prototype.setOptions = function (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n };\r\n /**\r\n * Refresh widget implementation\r\n */\r\n EqHtmlGrid.prototype.refreshCore = function () {\r\n _super.prototype.refreshCore.call(this);\r\n this.renderPageNavigator();\r\n };\r\n EqHtmlGrid.prototype.destroyCore = function () {\r\n this.slot.innerHTML = '';\r\n };\r\n /**\r\n * Renders page navigator.\r\n */\r\n EqHtmlGrid.prototype.renderPageNavigator = function () {\r\n var _this = this;\r\n var pageNavigatorPlaceholder = document.getElementById(\"PageNavigator\");\r\n if (!pageNavigatorPlaceholder) {\r\n return;\r\n }\r\n var pageCount = parseInt(pageNavigatorPlaceholder.getAttribute('data-pagecount'));\r\n var pageIndex = parseInt(pageNavigatorPlaceholder.getAttribute('data-pageindex'));\r\n if (pageCount > 1) {\r\n var buttonClick = function (ev) {\r\n var element = ev.target;\r\n if (element.hasAttribute('data-page')) {\r\n var pageNum = parseInt(element.getAttribute('data-page'));\r\n _this.context.fetchDataChunk({\r\n chunk: {\r\n page: pageNum\r\n },\r\n success: function () {\r\n _this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n });\r\n }\r\n };\r\n var maxButtonCount = this.options.maxButtonCount || 10;\r\n var zeroBasedIndex = pageIndex - 1;\r\n var firstPageIndex = zeroBasedIndex - (zeroBasedIndex % maxButtonCount) + 1;\r\n var lastPageIndex = firstPageIndex + maxButtonCount - 1;\r\n if (lastPageIndex > pageCount) {\r\n lastPageIndex = pageCount;\r\n }\r\n var ul = document.createElement('ul');\r\n if (this.options.useBootstrap) {\r\n ul.className = \"pagination\";\r\n }\r\n else {\r\n ul.className = \"eqv-pagination\";\r\n }\r\n if (this.options.pageItemCssClass) {\r\n ul.className += \" \" + (this.options.pageItemCssClass);\r\n }\r\n var li = document.createElement('li');\r\n if (this.options.useBootstrap) {\r\n li.className = \"page-item\";\r\n }\r\n var a = document.createElement('span');\r\n a.setAttribute(\"aria-hidden\", 'true');\r\n if (this.options.useBootstrap) {\r\n a.className = \"page-link\";\r\n }\r\n if (firstPageIndex == 1) {\r\n li.className += \" disabled\";\r\n }\r\n else {\r\n if (this.options.useBootstrap) {\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.setAttribute(\"data-page\", \"\" + (firstPageIndex - 1));\r\n a.className = \"page-link\";\r\n }\r\n else {\r\n var newA = document.createElement('a');\r\n newA.setAttribute('href', 'javascript:void(0)');\r\n newA.setAttribute(\"data-page\", \"\" + (firstPageIndex - 1));\r\n a = newA;\r\n }\r\n a.addEventListener(\"click\", buttonClick);\r\n }\r\n a.innerHTML = \"«\";\r\n li.appendChild(a);\r\n ul.appendChild(li);\r\n for (var i = firstPageIndex; i <= lastPageIndex; i++) {\r\n li = document.createElement('li');\r\n if (this.options.useBootstrap) {\r\n li.className = \"page-item\";\r\n }\r\n if (i == pageIndex)\r\n li.className += \" active\";\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.innerHTML = i.toString();\r\n a.setAttribute('data-page', i.toString());\r\n a.className = \"page-link\";\r\n a.addEventListener(\"click\", buttonClick);\r\n li.appendChild(a);\r\n ul.appendChild(li);\r\n }\r\n li = document.createElement('li');\r\n if (this.options.useBootstrap) {\r\n li.className = \"page-item\";\r\n }\r\n a = document.createElement(\"span\");\r\n a.setAttribute('aria-hidden', 'true');\r\n if (this.options.useBootstrap) {\r\n a.className = \"page-link\";\r\n }\r\n if (lastPageIndex == pageCount) {\r\n li.className += \"disabled\";\r\n }\r\n else {\r\n if (this.options.useBootstrap) {\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.setAttribute(\"data-page\", \"\" + (lastPageIndex + 1));\r\n a.className += \" page-link\";\r\n }\r\n else {\r\n var newA = document.createElement('a');\r\n newA.setAttribute('href', 'javascript:void(0)');\r\n newA.setAttribute(\"data-page\", \"\" + (lastPageIndex + 1));\r\n a = newA;\r\n }\r\n a.addEventListener(\"click\", buttonClick);\r\n }\r\n a.innerHTML = \"»\";\r\n li.appendChild(a);\r\n ul.appendChild(li);\r\n pageNavigatorPlaceholder.appendChild(ul);\r\n }\r\n };\r\n return EqHtmlGrid;\r\n}(HtmlContentWidget));\r\nexport { EqHtmlGrid };\r\n//# sourceMappingURL=eq_result_html_grid.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Widget, WidgetGroup, Query, DataKind } from \"@easyquery/core\";\r\nimport { DataType, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { ColumnsBar } from './columns_bar';\r\nimport { QueryPanel } from './query_panel';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nvar ManageDrillDownWidget = /** @class */ (function (_super) {\r\n __extends(ManageDrillDownWidget, _super);\r\n function ManageDrillDownWidget(slot) {\r\n var _this = _super.call(this, slot) || this;\r\n _this.clickHandler = function () { return _this.openDialog(); };\r\n _this.columnsBar = null;\r\n _this.queryPanel = null;\r\n _this.ddQuery = null;\r\n _this.cssPrefix = eqCssPrefix;\r\n _this.group = WidgetGroup.None;\r\n return _this;\r\n }\r\n ManageDrillDownWidget.prototype.getWidgetType = function () {\r\n return 'manageDrillDown';\r\n };\r\n ManageDrillDownWidget.prototype.init = function (context, options) {\r\n _super.prototype.init.call(this, context, options);\r\n this.options = options;\r\n this.refresh();\r\n this.slot.addEventListener('click', this.clickHandler);\r\n };\r\n ManageDrillDownWidget.prototype.destroyCore = function () {\r\n this.slot.removeEventListener('click', this.clickHandler);\r\n };\r\n ManageDrillDownWidget.prototype.openDialog = function () {\r\n var _this = this;\r\n var dialogService = this.context.getServices().getDialogService();\r\n var query = this.context.getQuery();\r\n var model = this.context.getModel();\r\n var dialogBody = domel('div')\r\n .addClass(this.cssPrefix + \"-manage-drilldown\")\r\n .addChildElement(this.renderColumnsBarBlock())\r\n .addChildElement(this.renderQueryPanelBlock())\r\n .toDOM();\r\n var op = model.addOrUpdateOperator({\r\n id: 'BindToParentColumn',\r\n caption: 'is bound to',\r\n format: '{expr1} [[is bound to]] {expr2}',\r\n paramCount: 2,\r\n kind: DataKind.ParentColumn,\r\n appliedTypes: [DataType.String, DataType.Bool, DataType.Float, DataType.Int32, DataType.Int64, DataType.Word]\r\n });\r\n op.defaultOperand.dataType = DataType.String;\r\n op.defaultOperand.kind = DataKind.ParentColumn;\r\n model.runThroughEntities(function (attr) {\r\n var opIdx = attr.operators.indexOf(op.id);\r\n if (opIdx > 0) {\r\n dataUtils.moveArrayItem(attr.operators, opIdx, 0);\r\n }\r\n }, null);\r\n this.ddQuery = new Query(model, null, {\r\n parent: query\r\n });\r\n var dds = this.context.getQuery().getDrillDowns();\r\n if (dds.length) {\r\n var dd = dds[0];\r\n this.ddQuery.loadFromData(dd.toJSONData());\r\n }\r\n dialogService.open({\r\n title: 'Manage Drill Down',\r\n body: dialogBody,\r\n cancelable: true,\r\n closable: false,\r\n beforeOpen: function () {\r\n var columnsBarSlot = dialogBody.getElementsByClassName(_this.cssPrefix + \"-columnsbar-slot\")[0];\r\n _this.columnsBar = new ColumnsBar(columnsBarSlot, _this.ddQuery);\r\n _this.columnsBar.init(_this.context, _this.options.columnsBar);\r\n var queryPanelSlot = dialogBody.getElementsByClassName(_this.cssPrefix + \"-querypanel-slot\")[0];\r\n _this.queryPanel = new QueryPanel(queryPanelSlot, _this.ddQuery);\r\n _this.queryPanel.init(_this.context, _this.options.queryPanel);\r\n _this.columnsBar.refresh();\r\n _this.queryPanel.refresh();\r\n },\r\n onSubmit: function () {\r\n return _this.submitDialog();\r\n },\r\n onDestroy: function () {\r\n _this.destroyDialog();\r\n }\r\n });\r\n };\r\n ManageDrillDownWidget.prototype.renderQueryPanelBlock = function () {\r\n var _this = this;\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-querypanel-block\")\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-querypanel-caption\"); })\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-querypanel-slot\"); })\r\n .toDOM();\r\n };\r\n ManageDrillDownWidget.prototype.renderColumnsBarBlock = function () {\r\n var _this = this;\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-columnsbar-block\")\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-columnsbar-caption\"); })\r\n .addChild('div', function (b) { return b\r\n .addClass(_this.cssPrefix + \"-columnsbar-slot\"); })\r\n .toDOM();\r\n };\r\n ManageDrillDownWidget.prototype.submitDialog = function () {\r\n if (this.ddQuery.tryValidate({\r\n checkExpressions: true\r\n })) {\r\n var dds = this.context.getQuery().getDrillDowns();\r\n if (dds.length) {\r\n dds[0].loadFromData(this.ddQuery.toJSONData());\r\n this.context.getQuery().fireChangedEvent();\r\n }\r\n else {\r\n if (!this.ddQuery.isEmpty()) {\r\n var dd = this.context.getQuery().addDrillDown();\r\n dd.loadFromData(this.ddQuery.toJSONData());\r\n this.context.getQuery().fireChangedEvent();\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n ManageDrillDownWidget.prototype.destroyDialog = function () {\r\n var model = this.context.getModel();\r\n model.removeOperator('BindToParentColumn', true);\r\n this.ddQuery = null;\r\n this.columnsBar && this.columnsBar.destroy();\r\n this.columnsBar = null;\r\n this.queryPanel && this.queryPanel.destroy();\r\n this.queryPanel = null;\r\n };\r\n return ManageDrillDownWidget;\r\n}(Widget));\r\nexport { ManageDrillDownWidget };\r\n//# sourceMappingURL=manage_drilldown_widget.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { QueryChangePart } from '@easyquery/core';\r\nimport { View } from './view';\r\n/**\r\n * The view that represents a data-filtering scenario (a text search for one entity/table)\r\n */\r\nvar DataFilterView = /** @class */ (function (_super) {\r\n __extends(DataFilterView, _super);\r\n function DataFilterView() {\r\n return _super.call(this) || this;\r\n }\r\n DataFilterView.prototype.initOptions = function (options) {\r\n var _this = this;\r\n options = _super.prototype.initOptions.call(this, options);\r\n options.result.fetchEmptyQueries = true;\r\n var query = this.context.getQuery();\r\n query.addChangedCallback(function () {\r\n if (_this.resultOptions.clearResultOnQueryChange) {\r\n _this.context.clearResult();\r\n }\r\n if (options.syncQueryOnChange) {\r\n _this.context.syncQuery();\r\n }\r\n });\r\n this.context.addEventListener('ready', this.fetchData.bind(this));\r\n return options;\r\n };\r\n DataFilterView.prototype.initWidgets = function (options) {\r\n var _this = this;\r\n _super.prototype.initWidgets.call(this, options);\r\n if (this.sortingBarWidget) {\r\n this.context.getQuery().addChangedCallback(function (ev) {\r\n var edata = ev.data;\r\n if (!edata || (edata.part != QueryChangePart.SortingColumns\r\n && edata.part != QueryChangePart.Columns && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n _this.fetchData();\r\n });\r\n }\r\n if (this.filterBarWidget) {\r\n var widgetType = this.filterBarWidget.getWidgetType();\r\n options.widgets[widgetType] = options.widgets[widgetType] || {};\r\n if (!options.widgets[widgetType].applyFilterCallback) {\r\n options.widgets[widgetType].applyFilterCallback = function () {\r\n _this.fetchData();\r\n };\r\n }\r\n }\r\n };\r\n /**\r\n * Obsolete. Left for backward compatibility.\r\n * Use fetchData() instead\r\n * @deprecated Use `fetchData()`\r\n */\r\n DataFilterView.prototype.applyQueryFilter = function () {\r\n console.warn('applyQueryFilter is obsolete. Use fetchData instead');\r\n this.fetchData();\r\n };\r\n DataFilterView.prototype.fetchData = function () {\r\n _super.prototype.fetchData.call(this, { refresh: true });\r\n };\r\n return DataFilterView;\r\n}(View));\r\nexport { DataFilterView };\r\n//# sourceMappingURL=data_filter_view.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { EqHtmlGrid } from \"../widgets/eq_result_html_grid\";\r\nimport { DataFilterView } from \"./data_filter_view\";\r\n/**\r\n * The EasyQuery client-side view that represents the UI for data filtering page\r\n */\r\nvar HtmlDataFilterView = /** @class */ (function (_super) {\r\n __extends(HtmlDataFilterView, _super);\r\n function HtmlDataFilterView() {\r\n return _super.call(this) || this;\r\n }\r\n /**\r\n * Creates the widget that represents Grid Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n */\r\n HtmlDataFilterView.prototype.createResultGridWidget = function (element) {\r\n return new EqHtmlGrid(element);\r\n };\r\n /**\r\n * Obsolete. Left for backward compatibility.\r\n * Use fetchData() instead\r\n */\r\n HtmlDataFilterView.prototype.applyQueryFilter = function () {\r\n console.warn('applyQueryFilter is obsolete. Use fetchData instead');\r\n this.fetchData();\r\n };\r\n return HtmlDataFilterView;\r\n}(DataFilterView));\r\nexport { HtmlDataFilterView };\r\n//# sourceMappingURL=html_data_filter_view.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { WidgetGroup, QueryChangePart } from '@easyquery/core';\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { View } from './view';\r\n/**\r\n * The view that represents the \"ad-hoc reporting\" scenario\r\n */\r\nvar ReportView = /** @class */ (function (_super) {\r\n __extends(ReportView, _super);\r\n function ReportView() {\r\n var _this = _super.call(this) || this;\r\n _this.reports = [];\r\n _this.reportCache = [];\r\n _this.exportButtons = [];\r\n _this.exportClass = \"eqjs-export\";\r\n _this.disabledClass = \"eqjs-disabled\";\r\n _this.enableExport = false;\r\n _this.useReportCache = true;\r\n _this.syncReportOnChange = true;\r\n _this._reportSaveTemplate = \"
\\n
\\n \\n \\n \\n \\n
\\n
\";\r\n _this.context.useStoredQueryOnFetch = true;\r\n _this.exportButtonClickHandler = function (srcElement, e) {\r\n if (!srcElement.classList.contains(_this.disabledClass)) {\r\n var format = srcElement.getAttribute(\"data-format\");\r\n _this.context.exportResult({ format: format });\r\n }\r\n };\r\n _this.clearReportButtonClickHandler = _this.clearReportButtonClick.bind(_this);\r\n _this.newReportButtonClickHandler = _this.newReportButtonClick.bind(_this);\r\n _this.loadReportButtonClickHandler = _this.loadReportButtonClick.bind(_this);\r\n _this.saveReportButtonClickHandler = _this.saveReportButtonClick.bind(_this);\r\n _this.removeReportButtonClickHandler = _this.removeReportButtonClick.bind(_this);\r\n _this.reloadReportDataButtonClickHandler = _this.reloadReportDataButtonClick.bind(_this);\r\n browserUtils.onMobileModeChanged(function (_) {\r\n document.location.reload();\r\n });\r\n return _this;\r\n }\r\n ReportView.prototype.initOptions = function (options) {\r\n options = _super.prototype.initOptions.call(this, options);\r\n if (typeof (options.syncQueryOnChange) !== \"undefined\") {\r\n this.syncReportOnChange = options.syncQueryOnChange;\r\n }\r\n if (typeof (options.syncReportOnChange) !== \"undefined\") {\r\n this.syncReportOnChange = options.syncReportOnChange;\r\n }\r\n options.syncQueryOnChange = this.syncReportOnChange;\r\n if (typeof (options.useReportCache) !== \"undefined\") {\r\n this.useReportCache = options.useReportCache;\r\n }\r\n this.defaultReportId = options.defaultReportId;\r\n return options;\r\n };\r\n ReportView.prototype.initDone = function () {\r\n var _this = this;\r\n _super.prototype.initDone.call(this);\r\n var query = this.context.getQuery();\r\n query.addChangedCallback(function (event) {\r\n var eventData = event.data;\r\n if (eventData) {\r\n if (eventData.changeType == \"query.switched\") {\r\n _this.context.clearResult();\r\n _this.context.refreshWidgets(WidgetGroup.Result);\r\n _this.context.refreshWidgets(WidgetGroup.Query);\r\n }\r\n else {\r\n _this.disableExportButtons();\r\n if (_this.resultCountSlot) {\r\n _this.resultCountSlot.style.display = \"none\";\r\n }\r\n }\r\n }\r\n //true if we just switched the report or changed facets (query was not changed)\r\n var isLiteUpdate = !eventData\r\n || eventData.changeType == \"query.switched\"\r\n || eventData.part == QueryChangePart.ExtraData\r\n || eventData.part == QueryChangePart.Facets;\r\n var syncStarted = false;\r\n if (_this.syncReportOnChange) {\r\n var needSync = eventData && eventData.changeType != \"query.switched\" && !eventData.noSync;\r\n if (needSync) {\r\n syncStarted = true;\r\n _this.syncReport({\r\n success: function () {\r\n // fetch data on query change\r\n if (!isLiteUpdate && _this.viewOptions.fetchDataOnChange) {\r\n _this.fetchData();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n // clear dataset result on query change\r\n if (!isLiteUpdate && _this.resultOptions.clearResultOnQueryChange) {\r\n _this.context.clearResult();\r\n _this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n if (!isLiteUpdate && !syncStarted && _this.viewOptions.fetchDataOnChange) {\r\n _this.fetchData();\r\n }\r\n });\r\n window.setTimeout(function () {\r\n _this.context.loadQueryList({\r\n success: function (data) {\r\n if (Array.isArray(data)) {\r\n _this.reports = data;\r\n var exists = _this.reports.filter(function (r) { return r.id == _this.defaultReportId; }).length > 0;\r\n if (exists) {\r\n _this.renderReportList({ reportId: _this.defaultReportId });\r\n }\r\n else {\r\n _this.renderReportList();\r\n }\r\n }\r\n }\r\n });\r\n }, 100);\r\n };\r\n ReportView.prototype.initWidgets = function (options) {\r\n var _this = this;\r\n _super.prototype.initWidgets.call(this, options);\r\n var clearReportButton = \"ClearReportButton\";\r\n var newReportButton = \"NewReportButton\";\r\n var loadReportButton = \"LoadReportButton\";\r\n var saveReportButton = \"SaveReportButton\";\r\n var removeReportButton = \"RemoveReportButton\";\r\n var reloadReportDataButton = \"ReloadReportDataButton\";\r\n var resultCountSpan = \"ResultCount\";\r\n var exportButtons = \"ResultExportButtons\";\r\n var exportClass = this.exportClass;\r\n if (options.slots) {\r\n resultCountSpan = options.slots.resultCountSpan || resultCountSpan;\r\n exportButtons = options.slots.exportButtons || exportButtons;\r\n clearReportButton = options.slots.clearReportButton || clearReportButton;\r\n newReportButton = options.slots.newReportButton || newReportButton;\r\n loadReportButton = options.slots.loadReportButton || loadReportButton;\r\n saveReportButton = options.slots.saveReportButton || saveReportButton;\r\n removeReportButton = options.slots.removeReportButton || removeReportButton;\r\n reloadReportDataButton = options.slots.reloadReportDataButton || reloadReportDataButton;\r\n exportClass = options.slots.exportClass || exportClass;\r\n }\r\n this.exportButtons = this.domRoots.reduce(function (elems, root) {\r\n return elems.concat(Array.from(root.querySelectorAll(\".\" + exportClass)));\r\n }, []);\r\n this.enableExport = options.enableExport;\r\n if (this.enableExport) {\r\n //Add event listener for export buttons\r\n this.exportButtons.forEach(function (button) {\r\n button.addEventListener('click', _this.exportButtonClickHandler);\r\n });\r\n }\r\n else {\r\n this.hideExportButtons();\r\n }\r\n this.exportButtonsContainer = this.resolveElement(exportButtons);\r\n if (!this.clearReportButton) {\r\n this.clearReportButton = this.resolveElement(clearReportButton);\r\n if (this.clearReportButton) {\r\n this.clearReportButton.addEventListener('click', this.clearReportButtonClickHandler);\r\n }\r\n }\r\n if (!this.newReportButton) {\r\n this.newReportButton = this.resolveElement(newReportButton);\r\n if (this.newReportButton) {\r\n this.newReportButton.addEventListener('click', this.newReportButtonClickHandler);\r\n }\r\n }\r\n if (!this.loadReportButton) {\r\n this.loadReportButton = this.resolveElement(loadReportButton);\r\n if (this.loadReportButton) {\r\n this.loadReportButton.addEventListener('click', this.loadReportButtonClickHandler);\r\n }\r\n }\r\n if (!this.saveReportButton) {\r\n this.saveReportButton = this.resolveElement(saveReportButton);\r\n if (this.saveReportButton) {\r\n this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);\r\n }\r\n }\r\n if (!this.removeReportButton) {\r\n this.removeReportButton = this.resolveElement(removeReportButton);\r\n if (this.removeReportButton) {\r\n this.removeReportButton.addEventListener('click', this.removeReportButtonClickHandler);\r\n }\r\n }\r\n if (!this.reloadReportDataButton) {\r\n this.reloadReportDataButton = this.resolveElement(reloadReportDataButton);\r\n //OBSOLETE: remove the next 3 lines. We just support the old default button ID here\r\n if (!this.reloadReportDataButton) {\r\n this.reloadReportDataButton = this.resolveElement('UpdateReportButton');\r\n }\r\n if (this.reloadReportDataButton) {\r\n this.reloadReportDataButton.addEventListener('click', this.reloadReportDataButtonClickHandler);\r\n }\r\n }\r\n this.reportListSlot = document.getElementById('ReportList');\r\n this.resultCountSlot = this.resolveElement(resultCountSpan);\r\n };\r\n /**\r\n * Creates a new report.\r\n */\r\n ReportView.prototype.newReport = function () {\r\n var _this = this;\r\n var ds = this.context.getServices().getDialogService();\r\n var dlg = ds.open({\r\n title: i18n.getText('NewReportDlgTitle'),\r\n body: this._reportSaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n input.value = i18n.getText('NewReportDefName');\r\n var content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('SaveReportDlgLabel');\r\n var label = document.getElementById('kdlg-dialog-form-desc-label');\r\n label.innerHTML = i18n.getText('ReportDescLabel');\r\n input.focus();\r\n },\r\n onSubmit: function () {\r\n var nameInput = document.getElementById(\"kdlg-dialog-form-input\");\r\n var queryName = nameInput.value;\r\n if (queryName && queryName.replace(/\\s/g, '').length > 0) {\r\n dlg.clearAlert();\r\n dlg.disableButtons();\r\n var header_1 = dlg.getRootElement().querySelector('header');\r\n var processEl_1 = domel('div', header_1)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n var descInput = document.getElementById(\"kdlg-dialog-form-textarea\");\r\n var queryDesc = descInput.value;\r\n _this.context.newQuery({\r\n name: queryName,\r\n description: queryDesc,\r\n success: function () {\r\n dlg.close();\r\n var query = _this.context.getQuery();\r\n var reportId = query.getId();\r\n _this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });\r\n _this.renderReportList({ reportId: reportId });\r\n },\r\n error: function (error) {\r\n header_1.removeChild(processEl_1);\r\n dlg.enableButtons();\r\n dlg.showAlert(error, 'error');\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n /**\r\n * Loads report by ID.\r\n * @param reportId The ID of the report to load.\r\n */\r\n ReportView.prototype.loadReport = function (reportId) {\r\n var _this = this;\r\n if (!reportId) {\r\n throw 'Empty report ID!';\r\n }\r\n var reportToLoad = this.findReportById(reportId);\r\n if (!reportToLoad)\r\n return;\r\n var self = this;\r\n var query = self.context.getQuery();\r\n var reportLoaded = function () {\r\n _this.renderReportProps();\r\n _this.context.resultTable.clear();\r\n query.fireChangedEvent({\r\n part: QueryChangePart.All,\r\n noSync: true,\r\n changeType: 'query.switched'\r\n });\r\n _this.fetchData();\r\n };\r\n var reportContent = this.useReportCache ? this.getReportContentFromCache(reportToLoad) : null;\r\n if (reportContent) {\r\n query.clear();\r\n query.loadFromJson(reportContent, { validate: false });\r\n reportLoaded();\r\n }\r\n else {\r\n this.context.loadQuery({\r\n queryId: reportId,\r\n silent: true,\r\n success: function () {\r\n _this.saveReportContentInCache(reportToLoad, query.toJSON());\r\n reportLoaded();\r\n }\r\n });\r\n }\r\n this.setActiveReport(reportId);\r\n };\r\n /**\r\n * Shows the dialog to save the report with new name.\r\n */\r\n ReportView.prototype.saveCurrentReportAs = function () {\r\n var _this = this;\r\n var query = this.context.getQuery();\r\n var ds = this.context.getServices().getDialogService();\r\n var dlg = ds.open({\r\n title: i18n.getText('SaveReportDlgTitle'),\r\n body: this._reportSaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n input.value = query.getName();\r\n var content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('SaveReportDlgLabel');\r\n var label = document.getElementById('kdlg-dialog-form-desc-label');\r\n label.innerHTML = i18n.getText('ReportDescLabel');\r\n var text = document.getElementById(\"kdlg-dialog-form-textarea\");\r\n text.value = query.getDescription();\r\n input.focus();\r\n },\r\n onSubmit: function () {\r\n var input = document.getElementById(\"kdlg-dialog-form-input\");\r\n var value = input.value;\r\n if (value && value.replace(/\\s/g, '').length > 0) {\r\n query.setId(dataUtils.generateId(value.replace(/\\s/g, '')));\r\n dlg.clearAlert();\r\n dlg.disableButtons();\r\n var header_2 = dlg.getRootElement().querySelector('header');\r\n var processEl_2 = domel('div', header_2)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n var text = document.getElementById(\"kdlg-dialog-form-textarea\");\r\n var desc = text.value;\r\n query.setDescription(desc);\r\n _this.context.newQuery({\r\n clearQuery: false,\r\n name: value,\r\n success: function () {\r\n dlg.close();\r\n _this.context.refreshWidgets(WidgetGroup.Query);\r\n var savedQuery = _this.context.getQuery();\r\n var reportId = savedQuery.getId();\r\n _this.fetchData();\r\n _this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });\r\n _this.renderReportList({ reportId: reportId });\r\n _this.setActiveReport(reportId);\r\n _this.renderReportProps();\r\n },\r\n error: function (error) {\r\n header_2.removeChild(processEl_2);\r\n dlg.enableButtons();\r\n dlg.showAlert(error, 'error');\r\n }\r\n });\r\n }\r\n return false;\r\n }\r\n });\r\n };\r\n /**\r\n * Removes current report.\r\n */\r\n ReportView.prototype.removeCurrentReport = function () {\r\n var _this = this;\r\n var report = this.context.getQuery();\r\n var ds = this.context.getServices().getDialogService();\r\n ds.openConfirm(i18n.getText('RemoveReportDlgTitle'), i18n.getText('RemoveReportContent').replace('{reportName}', report.getName()))\r\n .then(function (result) {\r\n if (result) {\r\n var reportId_1 = report.getId();\r\n _this.context.removeQuery({\r\n queryId: reportId_1,\r\n success: function () {\r\n var index = _this.removeFromReportList(reportId_1);\r\n _this.renderReportList({ reportIndex: index });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n /**\r\n * Sends current report's query to back-end.\r\n */\r\n ReportView.prototype.syncReport = function (options) {\r\n var _this = this;\r\n if (this.useReportCache) {\r\n var query = this.context.getQuery();\r\n var currentReport = this.findReportById(query.getId());\r\n if (currentReport) {\r\n currentReport.lastUpdated = Date.now();\r\n this.saveReportContentInCache(currentReport, query.toJSON());\r\n }\r\n }\r\n this.context.syncQuery({\r\n success: function (responseData) {\r\n if (responseData.query) {\r\n _this.context.refreshWidgets(WidgetGroup.Query);\r\n }\r\n if (responseData.statement) {\r\n _this.context.refreshWidgets(WidgetGroup.Statement);\r\n }\r\n if (options && options.success) {\r\n options.success(responseData);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Sets active report.\r\n * @param reportId The ID of the report to make active.\r\n */\r\n ReportView.prototype.setActiveReport = function (reportId) {\r\n var rlItems = this.reportListSlot.querySelectorAll('li');\r\n for (var i = 0; i < rlItems.length; i++) {\r\n var item = rlItems[i];\r\n item.classList.remove('active');\r\n var rid = item.getAttribute('data-rid');\r\n if (rid === reportId) {\r\n item.classList.add('active');\r\n }\r\n }\r\n ;\r\n };\r\n /**\r\n * Renders current report.\r\n */\r\n ReportView.prototype.renderReportProps = function () {\r\n var query = this.context.getQuery();\r\n var titleElem = document.getElementById('ReportTitle');\r\n titleElem.innerHTML = query.getName();\r\n var columnsPanel = document.querySelector('.columns-bar');\r\n if (columnsPanel) {\r\n columnsPanel.innerHTML = 'Columns:';\r\n var columns = query.getColumns();\r\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\r\n var column = columns_1[_i];\r\n columnsPanel.innerHTML += '' + column.caption + ' ';\r\n }\r\n }\r\n };\r\n /**\r\n * Renders the list of reports.\r\n * @param options The options. In particular, `options.reportIndex` defines which report should be active.\r\n */\r\n ReportView.prototype.renderReportList = function (options) {\r\n this.renderReportPanels();\r\n if (!this.reportListSlot.matches('li')) {\r\n this.reportListSlot.innerHTML = \"\";\r\n options = options || { reportId: (this.reports.length > 0 ? this.reports[0].id : null) };\r\n var ul = document.createElement('ul');\r\n ul.className = 'list-group list-group-flush';\r\n this.reportListSlot.appendChild(ul);\r\n for (var _i = 0, _a = this.reports; _i < _a.length; _i++) {\r\n var report = _a[_i];\r\n this.renderReportItemInList(report, ul);\r\n }\r\n if (options.reportId) {\r\n this.loadReport(options.reportId);\r\n }\r\n if (typeof (options.reportIndex) !== \"undefined\") {\r\n var idx = options.reportIndex;\r\n if (idx >= this.reports.length)\r\n idx = this.reports.length - 1;\r\n if (idx < 0 && this.reports.length > 0)\r\n idx = 0;\r\n if (idx >= 0)\r\n this.loadReport(this.reports[idx].id);\r\n }\r\n }\r\n };\r\n ReportView.prototype.detach = function () {\r\n var _this = this;\r\n if (this.exportButtonsContainer) {\r\n this.showExportButtons();\r\n this.exportButtons.forEach(function (button) {\r\n button.removeEventListener('click', _this.exportButtonClickHandler);\r\n });\r\n this.exportButtons = [];\r\n this.exportButtonsContainer = null;\r\n }\r\n if (this.clearReportButton) {\r\n this.clearReportButton.removeEventListener('click', this.clearReportButtonClickHandler);\r\n this.clearReportButton = null;\r\n }\r\n if (this.newReportButton) {\r\n this.newReportButton.removeEventListener('click', this.newReportButtonClickHandler);\r\n this.newReportButton = null;\r\n }\r\n if (this.loadReportButton) {\r\n this.loadReportButton.removeEventListener('click', this.loadReportButtonClickHandler);\r\n this.loadReportButton = null;\r\n }\r\n if (this.saveReportButton) {\r\n this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);\r\n this.saveReportButton = null;\r\n }\r\n if (this.removeReportButton) {\r\n this.removeReportButton.removeEventListener('click', this.removeReportButtonClickHandler);\r\n this.removeReportButton = null;\r\n }\r\n if (this.reloadReportDataButton) {\r\n this.reloadReportDataButton.removeEventListener('click', this.reloadReportDataButtonClickHandler);\r\n this.removeReportButton = null;\r\n }\r\n if (this.reportListSlot) {\r\n this.reportListSlot.innerHTML = '';\r\n this.reportListSlot = null;\r\n }\r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.innerHTML = '';\r\n this.resultCountSlot = null;\r\n }\r\n _super.prototype.detach.call(this);\r\n };\r\n /**\r\n * Renders a single item in the list of reports.\r\n * @param report The [[Report]] object to render.\r\n * @param ul The [[HTMLUListElement]] to add the item to.\r\n */\r\n ReportView.prototype.renderReportItemInList = function (report, ul) {\r\n var _this = this;\r\n if (!ul) {\r\n ul = this.reportListSlot.querySelector(\"ul\");\r\n }\r\n var reportName = report.name || report.description || \"\";\r\n var li = document.createElement('li');\r\n li.className = \"list-group-item\";\r\n li.style.cursor = 'pointer';\r\n li.setAttribute('data-rid', report.id);\r\n li.innerText = reportName;\r\n if (report.description) {\r\n li.title = report.description;\r\n }\r\n li.addEventListener('click', function (e) {\r\n var target = e.target;\r\n var rid = target.getAttribute('data-rid');\r\n _this.loadReport(rid);\r\n _this.setActiveReport(rid);\r\n });\r\n ul.appendChild(li);\r\n };\r\n /**\r\n * Renders report panels.\r\n */\r\n ReportView.prototype.renderReportPanels = function () {\r\n var reportsContainer = document.getElementById(\"ReportsContainer\");\r\n var noReportPanel = document.getElementById(\"NoReportPanel\");\r\n if (this.reports.length > 0) {\r\n this.hideElement(noReportPanel);\r\n this.showElement(reportsContainer);\r\n }\r\n else {\r\n this.hideElement(reportsContainer);\r\n this.showElement(noReportPanel);\r\n }\r\n };\r\n //TODO: Move these two functions to @easydata/ui\r\n ReportView.prototype.hideElement = function (element) {\r\n if (element) {\r\n element.style.visibility = 'hidden';\r\n }\r\n };\r\n ReportView.prototype.showElement = function (element) {\r\n if (element) {\r\n element.style.removeProperty('visibility');\r\n }\r\n };\r\n /**\r\n * Inserts the report to the list of reports.\r\n * @param report The [[Report]] object to be inserted.\r\n */\r\n ReportView.prototype.insertIntoReportList = function (report) {\r\n this.reports.push(report);\r\n };\r\n /**\r\n * Removes the report from the list of reports.\r\n * @param reportId The ID of the report to be removed.\r\n * @returns the index of removed report.\r\n */\r\n ReportView.prototype.removeFromReportList = function (reportId) {\r\n var index = this.indexOfReportById(reportId);\r\n if (index >= 0)\r\n this.reports.splice(index, 1);\r\n return index;\r\n };\r\n ReportView.prototype.indexOfReportById = function (reportId) {\r\n for (var i = 0; i < this.reports.length; i++) {\r\n if (this.reports[i].id === reportId)\r\n return i;\r\n }\r\n return -1;\r\n };\r\n /**\r\n * The handler of the \"Clear\" button click.\r\n */\r\n ReportView.prototype.clearReportButtonClick = function () {\r\n this.clearErrors();\r\n this.context.clearQuery();\r\n };\r\n /**\r\n * The handler of the \"Update\" button click.\r\n */\r\n ReportView.prototype.reloadReportDataButtonClick = function () {\r\n this.fetchData();\r\n };\r\n /**\r\n * The handler of the \"Save\" button click.\r\n */\r\n ReportView.prototype.saveReportButtonClick = function () {\r\n this.saveCurrentReportAs();\r\n };\r\n /**\r\n * The handler of the \"Load\" button click.\r\n */\r\n ReportView.prototype.loadReportButtonClick = function () {\r\n this.loadReport(\"LastQuery\");\r\n };\r\n /**\r\n * The handler of the \"Remove\" button click.\r\n */\r\n ReportView.prototype.removeReportButtonClick = function () {\r\n this.removeCurrentReport();\r\n };\r\n /**\r\n * The handler of the \"New\" button click.\r\n */\r\n ReportView.prototype.newReportButtonClick = function () {\r\n this.newReport();\r\n };\r\n /**\r\n * The handler of errors.\r\n * @param error The error object.\r\n */\r\n ReportView.prototype.errorHandler = function (error) {\r\n };\r\n /**\r\n * Clears the errors.\r\n */\r\n ReportView.prototype.clearErrors = function () {\r\n };\r\n /**\r\n * Disables export buttons.\r\n */\r\n ReportView.prototype.disableExportButtons = function () {\r\n this.hideExportButtons();\r\n };\r\n /**\r\n * Enables export buttons.\r\n */\r\n ReportView.prototype.enableExportButtons = function () {\r\n this.showExportButtons();\r\n };\r\n /**\r\n * Hides export buttons.\r\n */\r\n ReportView.prototype.hideExportButtons = function () {\r\n if (this.exportButtonsContainer) {\r\n this.exportButtonsContainer.style.display = \"none\";\r\n }\r\n };\r\n /**\r\n * Shows export buttons.\r\n */\r\n ReportView.prototype.showExportButtons = function () {\r\n if (this.exportButtonsContainer) {\r\n this.exportButtonsContainer.style.display = \"initial\";\r\n }\r\n };\r\n /**\r\n * Saves reports content to the cache.\r\n * @param report The report.\r\n * @param content The content (Query serialized into JSON).\r\n */\r\n ReportView.prototype.saveReportContentInCache = function (report, content) {\r\n var item = this.findReportCacheItem(report.id);\r\n if (!item) {\r\n item = { id: report.id };\r\n this.reportCache.push(item);\r\n }\r\n item.lastUpdated = report.lastUpdated;\r\n item.content = content;\r\n };\r\n /**\r\n * Gets the report content from cache.\r\n * @param report The report.\r\n * @returns Content of the report (Query in JSOn string)\r\n */\r\n ReportView.prototype.getReportContentFromCache = function (report) {\r\n var item = this.findReportCacheItem(report.id);\r\n if (item && item.lastUpdated === report.lastUpdated) {\r\n return item.content;\r\n }\r\n return null;\r\n };\r\n ReportView.prototype.findReportById = function (id) {\r\n for (var _i = 0, _a = this.reports; _i < _a.length; _i++) {\r\n var item = _a[_i];\r\n if (item.id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n };\r\n ReportView.prototype.findReportCacheItem = function (id) {\r\n for (var _i = 0, _a = this.reportCache; _i < _a.length; _i++) {\r\n var item = _a[_i];\r\n if (item.id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n };\r\n return ReportView;\r\n}(View));\r\nexport { ReportView };\r\n//# sourceMappingURL=report_view.js.map","import { i18n } from '@easydata/core';\r\nfunction addOldEasyQueryUIMapper() {\r\n i18n.addMapper(function (info) {\r\n if (!info && !info.texts)\r\n return;\r\n for (var prop in info.texts) {\r\n switch (prop) {\r\n case 'PredicateTitle':\r\n info.texts['ConditionGroupTitle'] = info.texts[prop];\r\n break;\r\n case 'RootPredicateTitle':\r\n info.texts['RootConditionGroupTitle'] = info.texts[prop];\r\n break;\r\n case 'ErrIncorrectPredicateTitleFormat':\r\n info.texts['ErrIncorrectGroupTitleFormat'] = info.texts[prop];\r\n break;\r\n case 'ButtonAddPredicate':\r\n info.texts['ButtonAddGroup'] = info.texts[prop];\r\n break;\r\n case 'ButtonDelete':\r\n info.texts['CmdDelete'] = info.texts[prop];\r\n break;\r\n case 'ButtonClear':\r\n info.texts['CmdClear'] = info.texts[prop];\r\n break;\r\n case 'ButtonEnable':\r\n info.texts['CmdToggleEnable'] = info.texts[prop];\r\n break;\r\n case 'ButtonAddCondition':\r\n info.texts['CmdAddCondition'] = info.texts[prop];\r\n break;\r\n case 'ButtonAddGroup':\r\n info.texts['CmdAddCondGroup'] = info.texts[prop];\r\n break;\r\n default:\r\n //do nothing\r\n break;\r\n }\r\n }\r\n });\r\n}\r\nfunction addEasyQueryUITexts() {\r\n i18n.updateDefaultTexts({\r\n AltMenuAttribute: 'Attribute',\r\n AltMenuConstantExpression: 'Constant expression',\r\n ButtonApply: 'Apply',\r\n ButtonCancel: 'Cancel',\r\n ButtonClose: 'Close',\r\n ButtonNext: 'Next',\r\n ButtonPrev: 'Prev',\r\n ButtonNow: 'Now',\r\n ButtonOK: 'OK',\r\n MenuEnable: 'Enabled',\r\n MenuParameterization: 'Parameterized',\r\n MenuJoinCond: 'Use in JOIN',\r\n CmdClear: 'Clear',\r\n CmdDelete: 'Delete',\r\n CmdToggleEnable: 'Toggle enable',\r\n CmdAddCondition: 'Add condition',\r\n CmdAddCondGroup: 'Add group of conditions',\r\n ButtonSelectAll: 'Select all',\r\n ButtonDeselectAll: 'Clear selection',\r\n ButtonAddColumns: 'Add column(s)',\r\n ButtonAddConditions: 'Add condition(s)',\r\n CmdClickToAddCondition: '[Add new condition]',\r\n CmdDeleteRow: 'Delete this row',\r\n ErrIncorrectGroupTitleFormat: 'Incorrect condition group title format',\r\n ErrNotNumber: ' is not a number',\r\n ErrIncorrectInteger: 'Incorrect integer value',\r\n ErrIncorrectNumberList: 'Incorrect list format',\r\n False: 'False',\r\n LinkTypeAll: 'all',\r\n LinkTypeAny: 'any',\r\n LinkTypeNone: 'none',\r\n LinkTypeNotAll: 'not all',\r\n ConjAll: 'and',\r\n ConjAny: 'or',\r\n ConjNotAll: 'and',\r\n ConjNone: 'or',\r\n MsgApplySelection: '[Apply selection]',\r\n MsgAs: 'as',\r\n MsgEmptyList: '(empty list)',\r\n MsgEmptyListValue: '[select value]',\r\n MsgEmptyScalarValue: '[enter value]',\r\n MsgSubQueryValue: '[edit sub-query]',\r\n MsgEmptyAttrValue: '[select attribute]',\r\n MsgEmptyOperator: '[Unrecognized operator]',\r\n MsgEmptyCustomSql: '[enter SQL expression]',\r\n MsgCustomSql: '[Custom SQL]',\r\n MsgNoResult: 'No result',\r\n MsgResultCount: '{0} records found',\r\n MsgOf: 'of',\r\n ConditionGroupTitle: '{lt} of the following apply',\r\n RootConditionGroupTitle: 'Select records where {lt} of the following apply',\r\n StrAddConditions: 'Add conditions',\r\n SubQueryDialogTitle: 'Edit sub-query',\r\n SubQueryColumnTitle: 'Column:',\r\n SubQueryEmptyColumn: '[select column]',\r\n SubQueryQueryPanelCaption: 'Conditions',\r\n True: 'True',\r\n ButtonSorting: 'Sorting',\r\n ButtonToAggr: 'Change to aggregate column',\r\n ButtonToSimple: 'Change to simple column',\r\n ButtonFormat: 'Display format',\r\n CmdAscending: 'Ascending',\r\n CmdClickToAddColumn: '[Add new column]',\r\n CmdDeleteColumn: 'Delete column',\r\n CmdDeleteSorting: 'Delete sorting',\r\n CmdDescending: 'Descending',\r\n CmdGroupSort: 'Sorting',\r\n CmdGroupFormat: 'Display format',\r\n CmdNotSorted: 'Not sorted',\r\n ColTypeAggrFunc: 'Aggregate function',\r\n ColTypeCompound: 'Calculated',\r\n ColTypeGroup: 'Column type',\r\n ColTypeSimple: 'Simple column',\r\n HeaderExpression: 'Expression',\r\n HeaderSorting: 'Sorting',\r\n HeaderTitle: 'Title',\r\n SortHeaderColumn: 'Column',\r\n SortHeaderSorting: 'Sorting',\r\n StrAddColumns: 'Add columns',\r\n CustomExpression: 'Custom Expression',\r\n AddAllForEntityText: '[Add all attributes]',\r\n CmdMoveToStart: 'Move to start',\r\n CmdMoveRight: 'Move right',\r\n CmdMoveLeft: 'Move left',\r\n CmdMoveToEnd: 'Move to the end',\r\n CmdMoveUp: 'Move up',\r\n CmdMoveDown: 'Move down',\r\n ButtonMenu: 'Show menu',\r\n CmdToSimple: 'Not aggregated',\r\n CmdMoveToFirst: 'Move to the first',\r\n CmdMoveToPrev: 'Move to the previous',\r\n CmdMoveToNext: 'Move to the next',\r\n CmdMoveToLast: 'Move to the last',\r\n CmdHiddenColumn: 'Hidden',\r\n RowButtonTitle: 'Click to see the available options',\r\n EntityToggle: 'Toggle entity',\r\n //FilterBar\r\n StrNoFilterDefined: 'No filter defined',\r\n StrNoFilterClickToAdd: 'No filter defined. Click to add a new condition',\r\n //Time picker\r\n HintHours: 'Hours',\r\n HintMinutes: 'Minutes',\r\n //advanced search view texts\r\n RemoveQueryTitle: 'Confirmation',\r\n RemoveQueryContent: 'Remove query [{queryName}]?',\r\n NewQueryTitle: 'New query',\r\n NewQueryContent: 'New query name: ',\r\n NewQueryDefName: 'New query',\r\n SaveQueryTitle: 'Save query',\r\n SaveQueryContent: 'Query name: ',\r\n SaveQueryDefName: '{queryName} copy',\r\n QueryChangedTitle: 'Confirmation',\r\n QueryChangedContent: 'The query was changed. Do you want to save it first?',\r\n UpdateQuerySelector: '[click here to load the query]',\r\n FileNameLabel: 'File name: ',\r\n SaveQueryToFileDlgTitle: 'Save query to file',\r\n //report view texts\r\n NewReportDefName: 'New report',\r\n NewReportDlgTitle: 'New report',\r\n SaveReportDlgTitle: 'Save report',\r\n SaveReportDlgLabel: 'Report name:',\r\n ReportDescLabel: 'Description: ',\r\n RemoveReportDlgTitle: 'Remove report',\r\n RemoveReportContent: 'Are you sure you want to remove \\'{reportName}\\'?',\r\n //facets\r\n Facets: {\r\n TotalRecordsLabel: 'Total records:',\r\n AddMenuItems: {\r\n Chart: 'Chart',\r\n Pivot: 'Pivot table',\r\n DataTable: 'Data table'\r\n },\r\n LoadDataDlgTitle: 'Downloading data',\r\n LoadDataDlgContent: 'Records loaded: {loadedRecs}/{totalRecs}',\r\n RefreshBtnTitle: 'Refresh',\r\n ExportBtnTitle: 'Export',\r\n MaximizeBtnTitle: 'Maximize',\r\n RestoreBtnTitle: 'Restore Down',\r\n RemoveFacetDlgTitle: 'Remove facet',\r\n RemoveFacetDlgContent: \"Are you sure, that you want to delete {facetTitle} tab?\",\r\n DefaultDlgTitle: 'Setup facet',\r\n DefaultFacetTitle: '',\r\n NewFacetTitle: 'New Facet',\r\n TabNameLabel: 'Tab name',\r\n ErrQueryChanged: 'FAILED TO DISPLAY. QUERY WAS CHANGED',\r\n ErrNotEnoughData: \"We can't display the graph because not all data for this query is loaded. \\n The total number of records: {totalRecs}, currently loaded: {cachedRecs}. \\n You can [download the result]. Please note: this may take some time and consume a lot of memory.\",\r\n ErrTooMuchData: 'Too much data. The grid is not able to display it',\r\n Chart: {\r\n FacetTitle: 'Chart',\r\n DlgTitle: 'Chart settings',\r\n DataColumnSelectorLabel: 'Data column',\r\n LabelColumnSelectorLabel: 'Label column',\r\n ChartTypeSelectorLabel: 'Chart type',\r\n ShowLegendLabel: 'Show legend (if available)'\r\n },\r\n Pivot: {\r\n FacetTitle: 'Pivot table',\r\n DlgTitle: 'Pivot settings',\r\n SwapBtnTitle: 'Swap column and row fields',\r\n ColumnFieldSelectorLabel: 'Column field',\r\n RowFieldSelectorLabel: 'Row field',\r\n CellDataSelectorLabel: 'Cell data',\r\n TotalsRowLabel: 'Totals row',\r\n TotalsColLabel: 'Totals column',\r\n TotalGridLabel: 'Total'\r\n },\r\n DataTable: {\r\n FacetTitle: 'Result table',\r\n DlgTitle: 'Table facet settings'\r\n }\r\n },\r\n TotalsDlgLabel: 'Totals',\r\n GrandTotalsLabel: 'Grand totals',\r\n TotalsDlgTitle: 'Select totals',\r\n //formats\r\n ExportDlgTitle: 'Export result',\r\n ExportDlgFmtLabel: 'Format',\r\n 'csv': 'CSV',\r\n 'excel': 'Excel',\r\n 'pdf': 'PDF',\r\n 'excel-html': 'HTML (Excel-compatible)',\r\n // Aggregation settings\r\n AggrSettings: {\r\n GroupBtn: 'Group selected column(s)',\r\n UngroupBtn: 'Ungroup columns',\r\n AggrBtn: 'Aggregate selected column',\r\n UnaggrBtn: 'Remove column aggregation',\r\n GrandTotalsLabel: 'Show grand totals',\r\n GroupCountsLabel: 'Show record count for groups',\r\n AggrDialogTitle: 'Aggregation/grouping',\r\n EnableAggrLabel: 'Enable aggregation',\r\n SelectedError: 'Complete the action with selected column(s)',\r\n NoGroupsOrAggrError: 'Add at least one group or aggregation',\r\n NoGroupsOrGrandError: 'Add at least one group, or enable grand totals',\r\n NoAggrOrCountError: 'Add at least one aggregation, or enable records count',\r\n NoGroupsLabel: 'No groups',\r\n NoAggrsLabel: 'No aggregations',\r\n EmptySettingsLabel: '[ Click to setup ]'\r\n },\r\n ChartType: {\r\n Area: 'Area chart',\r\n Bar: 'Bar chart',\r\n Column: 'Column chart',\r\n Combo: 'Combo chart',\r\n Doughnut: 'Doughnut chart',\r\n Polar: 'Polar chart',\r\n Radar: 'Radar chart',\r\n Histogram: 'Histogram chart',\r\n Line: 'Line chart',\r\n SteppedLine: 'Stepped line chart',\r\n Pie: 'Pie chart'\r\n }\r\n });\r\n}\r\naddOldEasyQueryUIMapper();\r\naddEasyQueryUITexts();\r\n//# sourceMappingURL=text_resources.js.map","import { EqServiceProvider } from '@easyquery/core';\r\nEqServiceProvider.prototype.registerDialogServiceResolver = function (resolver) {\r\n this['dialogServiceResolver'] = resolver;\r\n};\r\nEqServiceProvider.prototype.getDialogService = function () {\r\n if (!this['dialogService']) {\r\n if (!this['dialogServiceResolver']) {\r\n throw 'DialogServiceResolver is not defined';\r\n }\r\n this['dialogService'] = this['dialogServiceResolver']();\r\n }\r\n return this['dialogService'];\r\n};\r\n//# sourceMappingURL=extensions.js.map","export * from './widgets/entities_panel';\r\nexport * from './widgets/columns_panel';\r\nexport * from './widgets/columns_bar';\r\nexport * from './widgets/sorting_bar';\r\nexport * from './widgets/query_panel';\r\nexport * from './widgets/filter_bar';\r\nexport * from './widgets/html_content_widget';\r\nexport * from './widgets/eq_result_html_grid';\r\nexport * from './widgets/grid';\r\nexport * from './widgets/easy_grid_widget';\r\nexport * from './widgets/statement_panel';\r\nexport * from './widgets/process_widget';\r\nexport * from './widgets/manage_drilldown_widget';\r\nexport * from './widgets/result_facets_panel';\r\nexport * from './widgets/export_widget';\r\nexport * from './widgets/aggregation_bar';\r\nexport * from './widgets/charts/chart_type';\r\nexport * from './widgets/charts/chart_widget';\r\nexport * from './widgets/charts/chart_widget_google';\r\nexport * from './widgets/charts/chart_widget_chartjs';\r\nexport * from './widgets/renderers/base_element_renderer';\r\nexport * from './widgets/renderers/dropdown_renderer';\r\nexport * from './widgets/renderers/aggr_settings/aggr_settings_renderer';\r\nexport * from './widgets/renderers/columnsbar/aggrfunc_column_renderer';\r\nexport * from './widgets/renderers/columnsbar/simple_column_renderer';\r\nexport * from './widgets/renderers/columnsbar/column_renderer_cb';\r\nexport * from './widgets/renderers/columnspanel/aggrfunc_column_renderer';\r\nexport * from './widgets/renderers/columnspanel/simple_column_renderer';\r\nexport * from './widgets/renderers/columnspanel/column_renderer_cp';\r\nexport * from './widgets/renderers/columnspanel/customsql_column_renderer';\r\nexport * from './widgets/renderers/querypanel/input_expression_renderer';\r\nexport * from './widgets/renderers/querypanel/datetime_expression_render';\r\nexport * from './widgets/renderers/querypanel/condition_renderer';\r\nexport * from './widgets/renderers/querypanel/condition_group_renderer';\r\nexport * from './widgets/renderers/querypanel/attribute_expression_renderer';\r\nexport * from './widgets/renderers/querypanel/expression_renderer';\r\nexport * from './widgets/renderers/querypanel/operator_renderer';\r\nexport * from './widgets/renderers/querypanel/subquery_expression_renderer';\r\nexport * from './widgets/renderers/querypanel/list_expression_renderer';\r\nexport * from './widgets/renderers/querypanel/text_renderer';\r\nexport * from './widgets/renderers/querypanel/addrow_renderer';\r\nexport * from './facets/result_facet';\r\nexport * from './facets/datatable_facet';\r\nexport * from './facets/chart_facet';\r\nexport * from './facets/pivot_table_facet';\r\nexport * from './views/view';\r\nexport * from './views/adv_search_view';\r\nexport * from './views/data_filter_view';\r\nexport * from './views/html_data_filter_view';\r\nexport * from './views/report_view';\r\nexport * from './utils/dropdown';\r\nexport * from './utils/popup_menu';\r\nexport * from './utils/browser_utils';\r\nexport * from './types/qp_editable_part';\r\nexport * from './types/facet_type';\r\nexport * from './dialog/export_dialog';\r\nexport * from './dialog/aggr_settings_dialog';\r\nimport './i18n/text_resources';\r\nimport './extensions';\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector\r\n || Element.prototype.webkitMatchesSelector;\r\n}\r\n// support NodeList forEach in IE11\r\nif (window['NodeList'] && !window['NodeList'].prototype.forEach) {\r\n window['NodeList'].prototype.forEach = Array.prototype.forEach;\r\n}\r\n//find index in IE11\r\nif (!Array.prototype.findIndex) {\r\n Array.prototype.findIndex = function (predicate) {\r\n if (this == null) {\r\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n var list = Object(this);\r\n var length = list.length >>> 0;\r\n var thisArg = arguments[1];\r\n var value;\r\n for (var i = 0; i < length; i++) {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n//# sourceMappingURL=public_api.js.map","var majVer = 7;\r\nvar minVer = 2;\r\nvar magics = [45, 128, 231];\r\nMath.trunc = Math.trunc || function (x) {\r\n if (isNaN(x)) {\r\n return NaN;\r\n }\r\n if (x > 0) {\r\n return Math.floor(x);\r\n }\r\n return Math.ceil(x);\r\n};\r\nexport var lcv = {\r\n __kt: 0,\r\n ck: function (key) {\r\n if (!key || !key.length) {\r\n this.__kt = -3;\r\n return;\r\n }\r\n try {\r\n var part1 = key.slice(0, key.length - 12);\r\n var infoBytes = _bs(part1);\r\n var part2 = key.slice(key.length - 12);\r\n var ism = false;\r\n for (var _i = 0, magics_1 = magics; _i < magics_1.length; _i++) {\r\n var magic = magics_1[_i];\r\n var edc = t36(magic);\r\n if (part2[0] === edc[0] && part2[2] === edc[1]) {\r\n ism = true;\r\n break;\r\n }\r\n }\r\n if (!ism) {\r\n lcv.__kt = -1;\r\n }\r\n var idx = minVer % 4;\r\n var shift = majVer + minVer;\r\n if (part2[6 + idx] != encChar(shift, 19)) {\r\n lcv.__kt = -2;\r\n return;\r\n }\r\n if (part2[1] != encChar(infoBytes[3])) {\r\n return;\r\n }\r\n lcv.__kt = part2[3] != encChar(infoBytes[5]) ? 2 : 3;\r\n if (lcv.__kt === 2) {\r\n var eds = \"\" + f36(part2.substring(4, 6) + part2.substring(10));\r\n var ed = new Date(2000 + Number.parseInt(eds.substring(0, 2)), Number.parseInt(eds.substring(2, 4)) - 1, Number.parseInt(eds.substring(4)), 0, 0, 0, 0);\r\n if (Date.now() > ed.getTime()) {\r\n lcv.__kt = 1;\r\n }\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n};\r\nfunction encChar(x, b) {\r\n if (b === void 0) { b = 20; }\r\n return String.fromCharCode(65 + x % b);\r\n}\r\nfunction _bs(str) {\r\n var binary_string = urlatob(str);\r\n var len = binary_string.length;\r\n var bytes = new Uint8Array(len);\r\n for (var i = 0; i < len; i++) {\r\n bytes[i] = binary_string.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\nfunction urlatob(str) {\r\n var s = str;\r\n s = s.replace(/-/g, '+');\r\n s = s.replace(/_/g, '/');\r\n switch (s.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n s += \"==\";\r\n break;\r\n case 3:\r\n s += \"=\";\r\n break;\r\n }\r\n return window.atob(s);\r\n}\r\nvar tokens = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\r\nfunction t36(val) {\r\n var result = \"\";\r\n while (val > 0) {\r\n result = tokens[val % tokens.length] + result;\r\n val /= tokens.length;\r\n }\r\n return result;\r\n}\r\nfunction f36(val) {\r\n var d = 0;\r\n for (var i = 0; i < val.length; ++i)\r\n d += tokens.indexOf(val[i]) * Math.pow(tokens.length, val.length - i - 1);\r\n return d;\r\n}\r\n//# sourceMappingURL=lcv.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Condition, CondTag } from \"@easyquery/core\";\r\nimport { lcv } from '../utils/lcv';\r\nvar ConditionEx = /** @class */ (function (_super) {\r\n __extends(ConditionEx, _super);\r\n function ConditionEx() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.readOnly = false;\r\n _this.parameterized = false;\r\n _this.inJoin = false;\r\n return _this;\r\n }\r\n ConditionEx.prototype.isReadOnly = function () {\r\n return this.readOnly || (this.getParent() && this.getParent().isReadOnly());\r\n };\r\n ConditionEx.prototype.setReadOnly = function (value) {\r\n this.readOnly = value || (this.getParent() && this.getParent().isReadOnly());\r\n this.conditions && this.conditions.forEach(function (cond) {\r\n cond.setReadOnly(value);\r\n });\r\n };\r\n ConditionEx.prototype.isParameterized = function () {\r\n return this.parameterized;\r\n };\r\n ConditionEx.prototype.setParameterized = function (value) {\r\n this.parameterized = value;\r\n };\r\n ConditionEx.prototype.isInJoin = function () {\r\n return this.inJoin;\r\n };\r\n ConditionEx.prototype.setInJoin = function (value) {\r\n this.inJoin = value;\r\n };\r\n ConditionEx.prototype.loadFromData = function (model, data) {\r\n _super.prototype.loadFromData.call(this, model, data);\r\n if (lcv.__kt <= 1)\r\n return;\r\n if (typeof data.readOnly !== 'undefined') {\r\n this.setReadOnly(data.readOnly);\r\n }\r\n if (typeof data.inJoin !== 'undefined') {\r\n this.setInJoin(data.inJoin);\r\n }\r\n if (typeof data.parameterized !== 'undefined') {\r\n this.setParameterized(data.parameterized);\r\n }\r\n //if condition group\r\n //this.linkType = data.linking;\r\n if (data.conds) {\r\n for (var i = 0; i < data.conds.length; i++) {\r\n var newCond = this.query.createCondition();\r\n newCond.loadFromData(model, data.conds[i]);\r\n this.conditions.push(newCond);\r\n newCond.setParent(this);\r\n }\r\n }\r\n };\r\n ConditionEx.prototype.saveToData = function () {\r\n var obj = _super.prototype.saveToData.call(this);\r\n if (lcv.__kt <= 1)\r\n return obj;\r\n if (this.isReadOnly()) {\r\n obj.readOnly = this.isReadOnly();\r\n }\r\n if (this.isParameterized()) {\r\n obj.parameterized = this.isParameterized();\r\n }\r\n if (this.isInJoin()) {\r\n obj.inJoin = this.isInJoin();\r\n }\r\n if (this.tag == CondTag.Group) {\r\n //if condition group\r\n //obj.linking = this.linkType;\r\n obj.conds = [];\r\n for (var i = 0; i < this.conditions.length; i++) {\r\n obj.conds.push(this.conditions[i].saveToData());\r\n }\r\n }\r\n return obj;\r\n };\r\n return ConditionEx;\r\n}(Condition));\r\nexport { ConditionEx };\r\n//# sourceMappingURL=condition_ex.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { QueryColumn } from \"@easyquery/core\";\r\nimport { lcv } from '../utils/lcv';\r\nvar QueryColumnEx = /** @class */ (function (_super) {\r\n __extends(QueryColumnEx, _super);\r\n function QueryColumnEx() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.readOnly = false;\r\n return _this;\r\n }\r\n QueryColumnEx.prototype.isReadOnly = function () {\r\n return this.readOnly;\r\n };\r\n QueryColumnEx.prototype.setReadOnly = function (value) {\r\n this.readOnly = value;\r\n };\r\n /**\r\n * Loads column from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param colData The JSON representation object.\r\n */\r\n QueryColumnEx.prototype.loadFromData = function (model, colData) {\r\n _super.prototype.loadFromData.call(this, model, colData);\r\n if (lcv.__kt <= 2)\r\n return;\r\n if (colData) {\r\n if (typeof colData.readOnly != 'undefined') {\r\n this.readOnly = colData.readOnly;\r\n }\r\n }\r\n };\r\n QueryColumnEx.prototype.saveToData = function () {\r\n var colData = _super.prototype.saveToData.call(this);\r\n if (lcv.__kt <= 2)\r\n return colData;\r\n if (this.isReadOnly()) {\r\n colData.readOnly = this.isReadOnly();\r\n }\r\n return colData;\r\n };\r\n return QueryColumnEx;\r\n}(QueryColumn));\r\nexport { QueryColumnEx };\r\n//# sourceMappingURL=query_column_ex.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { Query, CondTag, LinkType } from '@easyquery/core';\r\nimport { ConditionEx } from './condition_ex';\r\nimport { QueryColumnEx } from './query_column_ex';\r\nimport { lcv } from '../utils/lcv';\r\nvar QueryEx = /** @class */ (function (_super) {\r\n __extends(QueryEx, _super);\r\n function QueryEx(model) {\r\n return _super.call(this, model) || this;\r\n }\r\n QueryEx.prototype.isEx = function () {\r\n return lcv.__kt > 1;\r\n };\r\n QueryEx.prototype.createSubQuery = function () {\r\n return new QueryEx(this.model);\r\n };\r\n QueryEx.prototype.createCondition = function (tag) {\r\n if (tag === void 0) { tag = CondTag.Simple; }\r\n if (lcv.__kt <= 1)\r\n return _super.prototype.createCondition.call(this, tag);\r\n return new ConditionEx(this, tag);\r\n };\r\n QueryEx.prototype.createColumn = function (justsorted) {\r\n if (justsorted === void 0) { justsorted = false; }\r\n if (lcv.__kt <= 1)\r\n return _super.prototype.createColumn.call(this, justsorted);\r\n return new QueryColumnEx(this, justsorted);\r\n };\r\n /**\r\n * Adds a condition group - a group of simple conditions (predicates) linked by AND or OR\r\n * @param descriptor The descriptor of the new condition group.\r\n * @returns The new search condition.\r\n */\r\n QueryEx.prototype.addConditionGroup = function (descriptor, addChildCondition) {\r\n if (addChildCondition === void 0) { addChildCondition = true; }\r\n if (lcv.__kt <= 1)\r\n return _super.prototype.addConditionGroup.call(this, descriptor, addChildCondition);\r\n var parent = descriptor.parent || this.getRootCondition();\r\n var lType = descriptor.linking || (parent.linkType === LinkType.All ? LinkType.Any : LinkType.All);\r\n var group = this.createCondition(CondTag.Group);\r\n group.linkType = lType;\r\n if (addChildCondition) {\r\n var model = this.getModel();\r\n var attr = model.getFirstUICAttr();\r\n var op = model.getDefaultOperatorForAttr(attr);\r\n var cond = this.createSimpleConditionObject(attr, op, \"\");\r\n group.addCondition(cond);\r\n }\r\n parent.addCondition(group);\r\n return group;\r\n };\r\n QueryEx.prototype.addExtraConditionGroup = function (descriptor, addChildCondition) {\r\n if (addChildCondition === void 0) { addChildCondition = true; }\r\n descriptor.parent = descriptor.parent || this.extraConditions;\r\n if (lcv.__kt <= 1)\r\n return _super.prototype.addExtraConditionGroup.call(this, descriptor, addChildCondition);\r\n return this.addConditionGroup(descriptor);\r\n };\r\n return QueryEx;\r\n}(Query));\r\nexport { QueryEx };\r\n//# sourceMappingURL=query_ex.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { DataModel, Tree } from \"@easyquery/core\";\r\nimport { QueryEx } from \"../query/query_ex\";\r\nimport { lcv } from \"../utils/lcv\";\r\nvar DataModelEx = /** @class */ (function (_super) {\r\n __extends(DataModelEx, _super);\r\n function DataModelEx() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DataModelEx.prototype.buildQueryPath = function (query) {\r\n if (lcv.__kt <= 1)\r\n return _super.prototype.buildQueryPath.call(this, query);\r\n if (this.mainEntity)\r\n return _super.prototype.buildQueryPath.call(this, query);\r\n var entities = this.getEntitiesInQuery(query);\r\n if (entities.length == 0) {\r\n throw Error(\"Cannon build path. Path is empty\");\r\n }\r\n var tree = new Tree(entities[0]);\r\n for (var i = 1; i < entities.length; i++) {\r\n var entity = entities[i];\r\n if (tree.contains(entity)) {\r\n continue;\r\n }\r\n var path = this.findPath(tree.value, entity);\r\n if (path != null) {\r\n //Add path to tree\r\n tree = this.addPathToTree(tree, (path[0] === tree.value) ? path.slice(1) : path);\r\n }\r\n else {\r\n throw Error(\"Unable to build query. Cannot build path.\");\r\n }\r\n }\r\n tree.setParents();\r\n return tree;\r\n };\r\n DataModelEx.prototype.addPathToTree = function (tree, path) {\r\n if (path.length == 0) {\r\n return;\r\n }\r\n var pathAdded = false;\r\n for (var _i = 0, _a = tree.childs; _i < _a.length; _i++) {\r\n var child = _a[_i];\r\n if (child.value === path[0]) {\r\n pathAdded = true;\r\n if (path.length > 1)\r\n child = this.addPathToTree(child, path.slice(1));\r\n break;\r\n }\r\n }\r\n if (!pathAdded) {\r\n var link = this.findLink(tree.value, path[0]);\r\n if (link) {\r\n var newNode = new Tree(path[0]);\r\n tree.addChild(newNode);\r\n if (path.length > 1)\r\n newNode = this.addPathToTree(newNode, path.slice(1));\r\n }\r\n else if (!tree.parent) {\r\n var node = new Tree(tree);\r\n tree = new Tree(path[0]);\r\n tree.addChild(node);\r\n if (path.length > 1)\r\n tree = this.addPathToTree(tree, path.slice(1));\r\n }\r\n else {\r\n throw Error(\"Unable to build query. Cannot build path.\");\r\n }\r\n }\r\n return tree;\r\n };\r\n DataModelEx.prototype.findPath = function (entityFrom, entityTo) {\r\n var curPath = [];\r\n var curStep = [];\r\n var nextStep = [];\r\n var passedEntities = [];\r\n var pathFound = false;\r\n curPath.push(entityFrom);\r\n curStep.push(curPath);\r\n passedEntities.push(entityFrom);\r\n while (!pathFound) {\r\n nextStep = [];\r\n for (var _i = 0, curStep_1 = curStep; _i < curStep_1.length; _i++) {\r\n var path = curStep_1[_i];\r\n pathFound = this.checkPath(path, entityTo, nextStep, passedEntities);\r\n if (pathFound) {\r\n path.push(entityTo);\r\n curPath = path;\r\n break;\r\n }\r\n }\r\n curStep = [];\r\n if (!pathFound) {\r\n if (nextStep.length == 0)\r\n return null;\r\n //copy nextStep to curStep\r\n for (var _a = 0, nextStep_1 = nextStep; _a < nextStep_1.length; _a++) {\r\n var path = nextStep_1[_a];\r\n curStep.push(path);\r\n }\r\n }\r\n }\r\n return curPath;\r\n };\r\n DataModelEx.prototype.checkPath = function (path, entityTo, nextStep, passedEntities) {\r\n var endPoint = path[path.length - 1];\r\n var entityLinks = this.getLinksByEntity(endPoint);\r\n for (var _i = 0, entityLinks_1 = entityLinks; _i < entityLinks_1.length; _i++) {\r\n var link = entityLinks_1[_i];\r\n var entity2 = null;\r\n if (link.entityFrom == endPoint) {\r\n entity2 = link.entityTo;\r\n }\r\n else {\r\n entity2 = link.entityFrom;\r\n }\r\n if (entity2 == entityTo) { //if reach the destination\r\n nextStep = [];\r\n return true;\r\n }\r\n //if destination is not reached yet we add current node (entity2) to the path and proceed\r\n if (path.indexOf(entity2) < 0 && passedEntities.indexOf(entity2) < 0) { //to prevent cycling\r\n passedEntities.push(entity2);\r\n var newPath = new Array();\r\n newPath = newPath.concat(path);\r\n newPath.push(entity2);\r\n nextStep.push(newPath);\r\n }\r\n }\r\n return false;\r\n };\r\n DataModelEx.prototype.createQuery = function () {\r\n return new QueryEx(this);\r\n };\r\n return DataModelEx;\r\n}(DataModel));\r\nexport { DataModelEx };\r\n//# sourceMappingURL=model_ex.js.map","import { HttpClient } from '@easydata/core';\r\nimport { domel, DefaultDialogService } from '@easydata/ui';\r\nimport { equtils } from '@easyquery/core';\r\nfunction strIsEmpty(str) {\r\n if (str) {\r\n return str.trim() === '';\r\n }\r\n else\r\n return true;\r\n}\r\nvar baseLicApiUrl = 'https://korzh.com/api/license';\r\n//const baseLicApiUrl = 'https://localhost:44301/api/license';\r\nvar eqVersion = '7.2';\r\nvar LCDialog = /** @class */ (function () {\r\n function LCDialog(context) {\r\n this.http = new HttpClient();\r\n this.context = context;\r\n }\r\n LCDialog.prototype.show = function () {\r\n var _this = this;\r\n var dialogService = new DefaultDialogService();\r\n this.dialogSet = dialogService.createSet([\r\n {\r\n closable: false,\r\n cancelable: false,\r\n submitOnEnter: true,\r\n title: 'No license key for EasyQuery',\r\n body: this.buildStartPage(),\r\n submitButtonText: 'Submit',\r\n onInput: this.validateForm.bind(this),\r\n onSubmit: this.startPageOnSubmit.bind(this)\r\n },\r\n {\r\n closable: false,\r\n cancelable: false,\r\n submitOnEnter: true,\r\n title: 'Please check your inbox',\r\n body: this.buildCodePage(),\r\n submitButtonText: 'Get License Key',\r\n onInput: this.validateForm.bind(this),\r\n onSubmit: this.codePageOnSubmit.bind(this)\r\n },\r\n {\r\n closable: false,\r\n cancelable: false,\r\n submitable: false,\r\n title: 'Success',\r\n body: this.buildSuccessPage()\r\n },\r\n {\r\n closable: false,\r\n cancelable: false,\r\n submitable: false,\r\n title: 'Failure',\r\n body: this.buildFailurePage()\r\n },\r\n ]);\r\n var dialog1 = this.dialogSet.open(0);\r\n //dialog1.getRootElement();\r\n setTimeout(function () {\r\n _this.validateForm(dialog1);\r\n var emailInput = document.getElementById('eqAuthEmail');\r\n if (emailInput) {\r\n emailInput.focus();\r\n }\r\n }, 200);\r\n };\r\n LCDialog.prototype.isValidForm = function (form) {\r\n var emailInput = form.querySelector('#eqAuthEmail'); //form.querySelector('[name=\"email\"]') as HTMLInputElement; \r\n if (emailInput) {\r\n return !strIsEmpty(emailInput.value) &&\r\n emailInput.value\r\n .toLowerCase()\r\n .match(/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/);\r\n }\r\n var codeInput = form.querySelector('#eqAuthCode'); //form.querySelector('[name=\"code\"]') as HTMLInputElement;\r\n if (codeInput) {\r\n return !strIsEmpty(codeInput.value) &&\r\n !isNaN(+codeInput.value) &&\r\n codeInput.value == codeInput.value.trim() &&\r\n codeInput.value.length === 6;\r\n }\r\n return true;\r\n };\r\n LCDialog.prototype.validateForm = function (dialog) {\r\n var submitButton = dialog.getSubmitButtonElement();\r\n submitButton.disabled = !this.isValidForm(dialog.getRootElement());\r\n };\r\n LCDialog.prototype.addInputField = function (parentBuilder, inputOptions) {\r\n parentBuilder\r\n .addChild('label', function (b) { return b\r\n .attr('for', inputOptions.id)\r\n .addHtml(inputOptions.label + \" \" + (inputOptions.required ? '*' : '') + \": \"); })\r\n .addChild('input', function (b) {\r\n b.id(inputOptions.id);\r\n b.name(inputOptions.name || inputOptions.id);\r\n b.type(inputOptions.type || 'text');\r\n if (typeof (inputOptions.value) !== 'undefined') {\r\n b.value(inputOptions.value);\r\n }\r\n if (inputOptions.onInput) {\r\n b.on('input', inputOptions.onInput);\r\n }\r\n });\r\n };\r\n LCDialog.prototype.buildStartPage = function () {\r\n var form;\r\n var controlsPanelBuilder;\r\n var formBuilder = domel('div');\r\n formBuilder.addChild('div', function (b) { return b\r\n .html('
The EasyQuery license key is either absent, invalid or was issued for a different version of the library.
' +\r\n '
Please fill out the form to obtain a valid trial license key.
'); });\r\n formBuilder\r\n .addClass('kfrm-form')\r\n .addChild('div', function (b) {\r\n controlsPanelBuilder = b;\r\n b.addClass('kfrm-fields label-above');\r\n b.addClass('kfrm-break-20');\r\n });\r\n this.addInputField(controlsPanelBuilder, {\r\n id: 'eqAuthEmail',\r\n name: 'email',\r\n label: 'Email',\r\n required: true\r\n });\r\n this.addInputField(controlsPanelBuilder, {\r\n id: 'eqAuthName',\r\n name: 'contactName',\r\n label: 'Name (optional)',\r\n required: false\r\n });\r\n formBuilder.addChild('div', function (b) { return b\r\n .html('
* By clicking Submit, you agree with Korzh.com Terms of use' +\r\n ' and Privacy policy.
' +\r\n '
You also agree to receive email messages from Korzh.com. This consent may be revoked at any time.
'); });\r\n form = formBuilder.toDOM();\r\n return form;\r\n };\r\n LCDialog.prototype.buildCodePage = function () {\r\n var form;\r\n var controlsPanelBuilder;\r\n var formBuilder = domel('div');\r\n formBuilder.addChild('div', function (b) { return b\r\n .html('
We sent a confirmation code to {{email}}.
' +\r\n '
Please find it in the email and enter to the text box below
'); });\r\n formBuilder\r\n .addClass('kfrm-form')\r\n .addChild('div', function (b) {\r\n controlsPanelBuilder = b;\r\n b.addClass('kfrm-fields label-above');\r\n b.addClass('kfrm-break-20');\r\n });\r\n this.addInputField(controlsPanelBuilder, {\r\n id: 'eqAuthCode',\r\n name: 'code',\r\n label: 'Confirmation code',\r\n required: true\r\n });\r\n formBuilder.addChild('div', function (b) { return b\r\n .html('
NB: Don\\'t forget to check your SPAM folder ' +\r\n 'if the message does not arrive within the next 5 minutes, and mark it as \"Not Spam\" if it\\'s found there.
'); });\r\n form = formBuilder.toDOM();\r\n return form.outerHTML;\r\n };\r\n LCDialog.prototype.buildSuccessPage = function () {\r\n var form;\r\n var formBuilder = domel('div');\r\n formBuilder.addChild('div', function (b) { return b\r\n .html('
You have successfully completed the registration process.
' +\r\n '
Please restart your web application to get the key applied.
'); });\r\n form = formBuilder.toDOM();\r\n return form;\r\n };\r\n LCDialog.prototype.buildFailurePage = function () {\r\n var form;\r\n var formBuilder = domel('div');\r\n formBuilder.addChild('div', function (b) { return b\r\n .html('{{message}}'); });\r\n form = formBuilder.toDOM();\r\n return form.outerHTML;\r\n };\r\n LCDialog.prototype.startPageOnSubmit = function (dlg) {\r\n var _this = this;\r\n var emailInput = document.getElementById('eqAuthEmail');\r\n var nameInput = document.getElementById('eqAuthName');\r\n var authEmail = emailInput.value;\r\n var authName = nameInput.value;\r\n dlg.disableButtons();\r\n this.http.post(equtils.combinePath(baseLicApiUrl, 'get-code'), {\r\n email: authEmail,\r\n name: authName,\r\n data: {\r\n ptag: this.context.backendInfo.type,\r\n apptype: this.context.backendInfo.subType,\r\n }\r\n }, { dataType: 'json' })\r\n .then(function (result) {\r\n if (result.status !== 0) {\r\n throw new Error(result.message);\r\n }\r\n var dlg = _this.dialogSet.openNext({ email: authEmail });\r\n setTimeout(function () {\r\n _this.validateForm(dlg);\r\n var codeInput = document.getElementById('eqAuthCode');\r\n if (codeInput) {\r\n codeInput.focus();\r\n }\r\n }, 200);\r\n })\r\n .catch(function (error) {\r\n dlg.showAlert(error.message, \"error\", true);\r\n dlg.enableButtons();\r\n });\r\n return false;\r\n };\r\n LCDialog.prototype.codePageOnSubmit = function (dlg) {\r\n var _this = this;\r\n var codeInput = document.getElementById('eqAuthCode');\r\n var authCode = codeInput.value;\r\n dlg.disableButtons();\r\n this.http.post(equtils.combinePath(baseLicApiUrl, 'get-key'), {\r\n token: authCode,\r\n ptag: this.context.backendInfo.type,\r\n version: eqVersion\r\n }, { dataType: 'json' })\r\n .then(function (result) {\r\n switch (result.status) {\r\n case 0:\r\n var url = equtils.combinePath(_this.context.getBaseEndpoint(), 'lck');\r\n _this.http.post(url, {\r\n version: eqVersion,\r\n key: result.key\r\n }, { dataType: 'json' })\r\n .then(function (_) { return _this.dialogSet.openNext(); });\r\n break;\r\n case 2:\r\n _this.dialogSet.open(3, {\r\n message: '
Your trial license for EasyQuery has expired.
' +\r\n '
Please contact us if you want to extend the trial period.
'\r\n });\r\n break;\r\n case 3:\r\n _this.dialogSet.open(3, {\r\n message: '
Your purchased license for EasyQuery has expired.
' +\r\n '
You need to renew the subscription to get a valid license.
'\r\n });\r\n break;\r\n default:\r\n throw new Error(result.message);\r\n }\r\n })\r\n .catch(function (error) {\r\n dlg.showAlert(error.message, \"error\", true);\r\n dlg.enableButtons();\r\n });\r\n return false;\r\n };\r\n return LCDialog;\r\n}());\r\nexport { LCDialog };\r\nexport function showNoLicenseAlert(lcv) {\r\n var title, body, buttonTitle, buttonUrl;\r\n switch (lcv.__kt) {\r\n case 1:\r\n title = 'EasyQuery trial has expired';\r\n body = \"Your trial period for EasyQuery has expired. \\n\\tYou can send a request to extend your trial or buy a license to get rid of all limitations.\";\r\n buttonTitle = 'Buy a license';\r\n buttonUrl = 'https://korzh.com/easyquery/licensing';\r\n break;\r\n case -3:\r\n title = 'No license key for EasyQuery';\r\n body = \"Please register for a trial \\n\\tor purchase a license to get a proper product key.
\\n\\tIf you already have a key, please follow this guide to apply it.\";\r\n buttonTitle = 'Register trial';\r\n buttonUrl = 'https://korzh.com/easyquery#get-started';\r\n break;\r\n default:\r\n title = \"Invalid key for EasyQuery!\";\r\n body = \"The EasyQuery product key is either invalid or was issued for a different version of the library.\\n The version you are using now is 7.2,\\n\\tso please login to your account to get a proper key for version 7.2.\";\r\n buttonTitle = 'Get key';\r\n buttonUrl = 'https://korzh.com/account';\r\n break;\r\n }\r\n var ds = new DefaultDialogService();\r\n var dlg = ds.open({\r\n closable: false,\r\n cancelable: false,\r\n submitable: false,\r\n title: title,\r\n body: body\r\n });\r\n var footer = dlg.getRootElement().querySelector('footer');\r\n domel(footer)\r\n .removeClass('align-right')\r\n .setStyle('justify-content', 'center')\r\n .addChild('button', function (b) { return b\r\n .addClass('kfrm-button', 'is-info')\r\n .addText(buttonTitle)\r\n .on('click', function (e) {\r\n window.location.href = buttonUrl;\r\n }); });\r\n if (lcv.__kt == 1) {\r\n domel(footer)\r\n .addChild('button', function (b) { return b\r\n .addClass('kfrm-button')\r\n .addText('Extend trial')\r\n .on('click', function (e) {\r\n window.location.href = 'https://korzh.com/account';\r\n }); });\r\n }\r\n}\r\n//# sourceMappingURL=lc-dialog.js.map","import { EqContext, equtils } from '@easyquery/core';\r\nimport { QueryEx } from './query/query_ex';\r\nimport { EqServerQueryStorage } from './main/eqs_query_storage';\r\nimport { DataModelEx } from './dm/model_ex';\r\nimport { lcv } from './utils/lcv';\r\nimport { DataTableAggregatesCalculator } from './data/data_table_aggr_calculator';\r\nimport { LCDialog, showNoLicenseAlert } from './license/lc-dialog';\r\nEqContext.prototype.setLicenseKeyEndpoint = function (endpoint) {\r\n console.warn('This method is deprecated and will be ignored.\\n '\r\n + 'The main EasyQuery endpoint (set via useEndpoint() function) is used to get the license since version 7.0.\\n '\r\n + 'So, you can simply remove this function call');\r\n};\r\nEqContext.prototype.useEnterprise = function (keyOrInitCallback) {\r\n var _this = this;\r\n var func = function (key, showAlert) {\r\n lcv.ck(key);\r\n if (lcv.__kt > 1) {\r\n var services = _this.getServices();\r\n services.registerDataModelResolver(function (context) { return new DataModelEx(); });\r\n services.registerQueryResolver(function (context) { return new QueryEx(context.getModel()); });\r\n services.registerQueryStorageResolver(function (context) { return new EqServerQueryStorage(context); });\r\n services.registerAggregatesCalculator(function (context) { return new DataTableAggregatesCalculator(context); });\r\n if (lcv.__kt === 2) {\r\n console.warn('EasyQuery.JS is working in the TRIAL MODE!\\n'\r\n + 'Please order a license (https://korzh.com/eq) to get a proper product key.');\r\n createTrialWM();\r\n setTimeout(function () {\r\n showTrialWM();\r\n setTimeout(hideTrialWM, 6000);\r\n }, 3000);\r\n }\r\n }\r\n else {\r\n if (showAlert) {\r\n showNoLicenseAlert(lcv);\r\n }\r\n else {\r\n var lcd = new LCDialog(_this);\r\n lcd.show();\r\n }\r\n }\r\n };\r\n if (typeof (keyOrInitCallback) === \"string\") {\r\n func(keyOrInitCallback, true);\r\n }\r\n else if (typeof (keyOrInitCallback) === \"function\") {\r\n var http_1 = this.getServices().getHttpClient();\r\n var url_1 = equtils.combinePath(this.getBaseEndpoint(), 'lck2');\r\n http_1.get(url_1)\r\n .then(function (result) {\r\n func(result.key.split(\"\").reverse().join(\"\"), false);\r\n _this.useBackend({\r\n type: result.backendType,\r\n subType: result.appType\r\n });\r\n keyOrInitCallback();\r\n })\r\n .catch(function (error) {\r\n url_1 = equtils.combinePath(_this.getBaseEndpoint(), 'lck');\r\n http_1.get(url_1)\r\n .then(function (result) {\r\n func(result.split(\"\").reverse().join(\"\"), false);\r\n keyOrInitCallback();\r\n })\r\n .catch(function (error) { return _this.throwError({\r\n action: \"LCK\",\r\n sourceError: error\r\n }); });\r\n });\r\n }\r\n else {\r\n throw new Error(\"Wrong type of 'keyOrInitCallback' parameter. It must be a string with a license key or a callback function.\");\r\n }\r\n};\r\nvar trialDiv;\r\nfunction createTrialWM() {\r\n // we can rewrite it using shadow dom\r\n // to make it impossible to hide using JS :)\r\n trialDiv = document.createElement(\"div\");\r\n trialDiv.style.position = \"fixed\";\r\n trialDiv.style.bottom = \"0\";\r\n trialDiv.style.right = \"-400px\";\r\n trialDiv.style.width = \"400px\";\r\n trialDiv.style.height = \"100px\";\r\n trialDiv.style.color = \"grey\";\r\n trialDiv.style.textAlign = \"center\";\r\n trialDiv.style.opacity = \"0.7\";\r\n trialDiv.style.font = \"bold 1em Trebuchet MS, Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif\";\r\n trialDiv.style.transition = \"right 3s ease-out\";\r\n var header = document.createElement(\"div\");\r\n var eq = document.createElement(\"span\");\r\n eq.innerText = \"EasyQuery\";\r\n eq.style.color = \"#3A94D4\";\r\n eq.style.lineHeight = \"50px\";\r\n header.appendChild(eq);\r\n var korzh = document.createElement(\"span\");\r\n korzh.innerText = \"by Korzh.com\";\r\n korzh.style.marginLeft = \"10px\";\r\n header.appendChild(korzh);\r\n trialDiv.appendChild(header);\r\n var trialOnly = document.createElement(\"div\");\r\n trialOnly.innerText = \"FOR TRIAL USE ONLY\";\r\n trialOnly.style.fontSize = \"1.2em\";\r\n trialOnly.style.fontWeight = \"1000\";\r\n trialDiv.appendChild(trialOnly);\r\n document.body.appendChild(trialDiv);\r\n}\r\nfunction showTrialWM() {\r\n if (trialDiv) {\r\n trialDiv.style.right = \"0\";\r\n }\r\n}\r\nfunction hideTrialWM() {\r\n if (trialDiv) {\r\n trialDiv.style.right = \"-400px\";\r\n setTimeout(function () {\r\n trialDiv.parentNode.removeChild(trialDiv);\r\n }, 5000);\r\n }\r\n}\r\n//# sourceMappingURL=extensions.js.map","import './extensions';\r\nexport * from './data/eqs_aggr_calculator';\r\nexport * from './query/query_ex';\r\nexport * from './query/query_column_ex';\r\nexport * from './query/condition_ex';\r\nexport * from './dm/model_ex';\r\nexport * from './main/eqs_query_storage';\r\n//# sourceMappingURL=public_api.js.map","import * as core from '@easyquery/core'\r\nimport * as ui from '@easyquery/ui'\r\nimport * as enterprise from './dist/lib/public_api.js'\r\n\r\nimport * as easydata_core from '@easydata/core'\r\nimport * as easydata_ui from '@easydata/ui'\r\n\r\nvar easydata = {\r\n\tcore: easydata_core,\r\n\tui: easydata_ui\r\n}\r\n\r\nexport { core, ui, enterprise }\r\n\r\nwindow.easydata = easydata"],"sourceRoot":""}