From 681cab2e07000830d338d65d464dc962071a6749 Mon Sep 17 00:00:00 2001 From: Vasily Strelyaev Date: Fri, 1 Nov 2024 15:11:20 +0200 Subject: [PATCH 01/21] move shared files to common --- packages/devextreme/js/{core => common}/config.js | 0 packages/devextreme/js/{ => common/core}/animation/easing.js | 0 packages/devextreme/js/{ => common/core}/animation/frame.js | 0 packages/devextreme/js/{ => common/core}/animation/fx.js | 0 packages/devextreme/js/{ => common/core}/animation/position.js | 0 packages/devextreme/js/{ => common/core}/animation/presets.js | 0 .../devextreme/js/{ => common/core}/animation/presets/presets.js | 0 .../js/{ => common/core}/animation/transition_executor.js | 0 .../core}/animation/transition_executor/transition_executor.js | 0 packages/devextreme/js/{ => common/core}/animation/translator.js | 0 .../devextreme/js/{core => common/core/environment}/devices.js | 0 .../js/{mobile => common/core/environment}/hide_callback.js | 0 .../js/{mobile => common/core/environment}/hide_top_overlay.js | 0 .../{mobile => common/core/environment}/init_mobile_viewport.js | 0 .../environment}/init_mobile_viewport/init_mobile_viewport.js | 0 .../js/{ => common/core/environment}/time_zone_utils.js | 0 packages/devextreme/js/{ => common/core}/events/click.d.ts | 0 packages/devextreme/js/{ => common/core}/events/click.js | 0 packages/devextreme/js/{ => common/core}/events/contextmenu.js | 0 packages/devextreme/js/{ => common/core}/events/core.js | 0 .../js/{ => common/core}/events/core/emitter.feedback.js | 0 packages/devextreme/js/{ => common/core}/events/core/emitter.js | 0 .../js/{ => common/core}/events/core/emitter_registrator.js | 0 .../js/{ => common/core}/events/core/event_registrator.js | 0 .../{ => common/core}/events/core/event_registrator_callbacks.js | 0 .../js/{ => common/core}/events/core/events_engine.d.ts | 0 .../devextreme/js/{ => common/core}/events/core/events_engine.js | 0 .../js/{ => common/core}/events/core/hook_touch_props.js | 0 .../js/{ => common/core}/events/core/keyboard_processor.js | 0 packages/devextreme/js/{ => common/core}/events/core/wheel.js | 0 packages/devextreme/js/{ => common/core}/events/dblclick.js | 0 packages/devextreme/js/{ => common/core}/events/double_click.js | 0 packages/devextreme/js/{ => common/core}/events/drag.js | 0 .../js/{ => common/core}/events/gesture/emitter.gesture.js | 0 .../js/{ => common/core}/events/gesture/emitter.gesture.scroll.js | 0 .../devextreme/js/{ => common/core}/events/gesture/swipeable.js | 0 packages/devextreme/js/{ => common/core}/events/hold.js | 0 packages/devextreme/js/{ => common/core}/events/hover.js | 0 packages/devextreme/js/{ => common/core}/events/index.d.ts | 0 packages/devextreme/js/{ => common/core}/events/index.js | 0 packages/devextreme/js/{ => common/core}/events/pointer.d.ts | 0 packages/devextreme/js/{ => common/core}/events/pointer.js | 0 packages/devextreme/js/{ => common/core}/events/pointer/base.js | 0 packages/devextreme/js/{ => common/core}/events/pointer/mouse.js | 0 .../js/{ => common/core}/events/pointer/mouse_and_touch.js | 0 .../devextreme/js/{ => common/core}/events/pointer/observer.js | 0 packages/devextreme/js/{ => common/core}/events/pointer/touch.js | 0 packages/devextreme/js/{ => common/core}/events/remove.js | 0 packages/devextreme/js/{ => common/core}/events/short.js | 0 packages/devextreme/js/{ => common/core}/events/swipe.js | 0 packages/devextreme/js/{ => common/core}/events/transform.js | 0 .../devextreme/js/{ => common/core}/events/utils/add_namespace.js | 0 .../js/{ => common/core}/events/utils/event_nodes_disposing.js | 0 .../devextreme/js/{ => common/core}/events/utils/event_target.js | 0 packages/devextreme/js/{ => common/core}/events/utils/index.d.ts | 0 packages/devextreme/js/{ => common/core}/events/utils/index.js | 0 .../devextreme/js/{ => common/core}/events/visibility_change.js | 0 packages/devextreme/js/{ => common/core}/localization.js | 0 packages/devextreme/js/{ => common/core}/localization/core.js | 0 packages/devextreme/js/{ => common/core}/localization/currency.js | 0 packages/devextreme/js/{ => common/core}/localization/date.d.ts | 0 packages/devextreme/js/{ => common/core}/localization/date.js | 0 .../js/{ => common/core}/localization/default_date_names.js | 0 .../js/{ => common/core}/localization/globalize/core.js | 0 .../js/{ => common/core}/localization/globalize/currency.js | 0 .../js/{ => common/core}/localization/globalize/date.js | 0 .../js/{ => common/core}/localization/globalize/message.js | 0 .../js/{ => common/core}/localization/globalize/number.js | 0 .../devextreme/js/{ => common/core}/localization/intl/date.js | 0 .../devextreme/js/{ => common/core}/localization/intl/number.js | 0 .../js/{ => common/core}/localization/language_codes.js | 0 .../js/{ => common/core}/localization/ldml/date.format.js | 0 .../js/{ => common/core}/localization/ldml/date.formatter.js | 0 .../js/{ => common/core}/localization/ldml/date.parser.js | 0 .../devextreme/js/{ => common/core}/localization/ldml/number.js | 0 .../devextreme/js/{ => common/core}/localization/message.d.ts | 0 packages/devextreme/js/{ => common/core}/localization/message.js | 0 .../devextreme/js/{ => common/core}/localization/messages/ar.json | 0 .../devextreme/js/{ => common/core}/localization/messages/ca.json | 0 .../devextreme/js/{ => common/core}/localization/messages/cs.json | 0 .../devextreme/js/{ => common/core}/localization/messages/de.json | 0 .../devextreme/js/{ => common/core}/localization/messages/el.json | 0 .../devextreme/js/{ => common/core}/localization/messages/en.json | 0 .../devextreme/js/{ => common/core}/localization/messages/es.json | 0 .../devextreme/js/{ => common/core}/localization/messages/fa.json | 0 .../devextreme/js/{ => common/core}/localization/messages/fi.json | 0 .../devextreme/js/{ => common/core}/localization/messages/fr.json | 0 .../devextreme/js/{ => common/core}/localization/messages/hu.json | 0 .../devextreme/js/{ => common/core}/localization/messages/it.json | 0 .../devextreme/js/{ => common/core}/localization/messages/ja.json | 0 .../devextreme/js/{ => common/core}/localization/messages/lt.json | 0 .../devextreme/js/{ => common/core}/localization/messages/lv.json | 0 .../devextreme/js/{ => common/core}/localization/messages/nb.json | 0 .../devextreme/js/{ => common/core}/localization/messages/nl.json | 0 .../devextreme/js/{ => common/core}/localization/messages/pl.json | 0 .../devextreme/js/{ => common/core}/localization/messages/pt.json | 0 .../devextreme/js/{ => common/core}/localization/messages/ro.json | 0 .../devextreme/js/{ => common/core}/localization/messages/ru.json | 0 .../devextreme/js/{ => common/core}/localization/messages/sl.json | 0 .../devextreme/js/{ => common/core}/localization/messages/sv.json | 0 .../devextreme/js/{ => common/core}/localization/messages/tr.json | 0 .../devextreme/js/{ => common/core}/localization/messages/vi.json | 0 .../js/{ => common/core}/localization/messages/zh-tw.json | 0 .../devextreme/js/{ => common/core}/localization/messages/zh.json | 0 packages/devextreme/js/{ => common/core}/localization/number.js | 0 .../js/{ => common/core}/localization/open_xml_currency_format.js | 0 .../devextreme/js/{ => common/core}/localization/parentLocale.js | 0 packages/devextreme/js/{ => common/core}/localization/utils.js | 0 packages/devextreme/js/{ => common}/data/abstract_store.d.ts | 0 packages/devextreme/js/{ => common}/data/abstract_store.js | 0 packages/devextreme/js/{ => common}/data/apply_changes.js | 0 packages/devextreme/js/{ => common}/data/array_query.js | 0 packages/devextreme/js/{ => common}/data/array_store.js | 0 packages/devextreme/js/{ => common}/data/array_utils.js | 0 packages/devextreme/js/{ => common}/data/custom_store.js | 0 packages/devextreme/js/{ => common}/data/data_source.js | 0 .../devextreme/js/{ => common}/data/data_source/data_source.js | 0 .../js/{ => common}/data/data_source/operation_manager.js | 0 packages/devextreme/js/{ => common}/data/data_source/utils.js | 0 packages/devextreme/js/{ => common}/data/endpoint_selector.js | 0 packages/devextreme/js/{ => common}/data/errors.js | 0 packages/devextreme/js/{ => common}/data/local_store.js | 0 packages/devextreme/js/{ => common}/data/odata/context.js | 0 packages/devextreme/js/{ => common}/data/odata/query_adapter.js | 0 .../devextreme/js/{ => common}/data/odata/request_dispatcher.js | 0 packages/devextreme/js/{ => common}/data/odata/store.js | 0 packages/devextreme/js/{ => common}/data/odata/utils.js | 0 packages/devextreme/js/{ => common}/data/query.js | 0 packages/devextreme/js/{ => common}/data/query_adapters.js | 0 packages/devextreme/js/{ => common}/data/query_implementation.js | 0 packages/devextreme/js/{ => common}/data/remote_query.js | 0 packages/devextreme/js/{ => common}/data/store_helper.js | 0 packages/devextreme/js/{ => common}/data/utils.js | 0 .../js/{exporter/export_load_panel.d.ts => common/export.d.ts} | 0 .../js/{excel_exporter.d.ts => common/export/excel.d.ts} | 0 .../devextreme/js/{excel_exporter.js => common/export/excel.js} | 0 .../devextreme/js/{pdf_exporter.d.ts => common/export/pdf.d.ts} | 0 packages/devextreme/js/{pdf_exporter.js => common/export/pdf.js} | 0 .../devextreme/js/{ => common}/file_management/custom_provider.js | 0 packages/devextreme/js/{ => common}/file_management/error.js | 0 .../devextreme/js/{ => common}/file_management/error_codes.js | 0 .../js/{ => common}/file_management/file_system_item.js | 0 .../devextreme/js/{ => common}/file_management/object_provider.js | 0 .../devextreme/js/{ => common}/file_management/provider_base.js | 0 .../devextreme/js/{ => common}/file_management/remote_provider.js | 0 packages/devextreme/js/{ => common}/file_management/utils.js | 0 packages/devextreme/js/{core => common}/guid.js | 0 packages/devextreme/js/{core => common}/set_template_engine.js | 0 148 files changed, 0 insertions(+), 0 deletions(-) rename packages/devextreme/js/{core => common}/config.js (100%) rename packages/devextreme/js/{ => common/core}/animation/easing.js (100%) rename packages/devextreme/js/{ => common/core}/animation/frame.js (100%) rename packages/devextreme/js/{ => common/core}/animation/fx.js (100%) rename packages/devextreme/js/{ => common/core}/animation/position.js (100%) rename packages/devextreme/js/{ => common/core}/animation/presets.js (100%) rename packages/devextreme/js/{ => common/core}/animation/presets/presets.js (100%) rename packages/devextreme/js/{ => common/core}/animation/transition_executor.js (100%) rename packages/devextreme/js/{ => common/core}/animation/transition_executor/transition_executor.js (100%) rename packages/devextreme/js/{ => common/core}/animation/translator.js (100%) rename packages/devextreme/js/{core => common/core/environment}/devices.js (100%) rename packages/devextreme/js/{mobile => common/core/environment}/hide_callback.js (100%) rename packages/devextreme/js/{mobile => common/core/environment}/hide_top_overlay.js (100%) rename packages/devextreme/js/{mobile => common/core/environment}/init_mobile_viewport.js (100%) rename packages/devextreme/js/{mobile => common/core/environment}/init_mobile_viewport/init_mobile_viewport.js (100%) rename packages/devextreme/js/{ => common/core/environment}/time_zone_utils.js (100%) rename packages/devextreme/js/{ => common/core}/events/click.d.ts (100%) rename packages/devextreme/js/{ => common/core}/events/click.js (100%) rename packages/devextreme/js/{ => common/core}/events/contextmenu.js (100%) rename packages/devextreme/js/{ => common/core}/events/core.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/emitter.feedback.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/emitter.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/emitter_registrator.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/event_registrator.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/event_registrator_callbacks.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/events_engine.d.ts (100%) rename packages/devextreme/js/{ => common/core}/events/core/events_engine.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/hook_touch_props.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/keyboard_processor.js (100%) rename packages/devextreme/js/{ => common/core}/events/core/wheel.js (100%) rename packages/devextreme/js/{ => common/core}/events/dblclick.js (100%) rename packages/devextreme/js/{ => common/core}/events/double_click.js (100%) rename packages/devextreme/js/{ => common/core}/events/drag.js (100%) rename packages/devextreme/js/{ => common/core}/events/gesture/emitter.gesture.js (100%) rename packages/devextreme/js/{ => common/core}/events/gesture/emitter.gesture.scroll.js (100%) rename packages/devextreme/js/{ => common/core}/events/gesture/swipeable.js (100%) rename packages/devextreme/js/{ => common/core}/events/hold.js (100%) rename packages/devextreme/js/{ => common/core}/events/hover.js (100%) rename packages/devextreme/js/{ => common/core}/events/index.d.ts (100%) rename packages/devextreme/js/{ => common/core}/events/index.js (100%) rename packages/devextreme/js/{ => common/core}/events/pointer.d.ts (100%) rename packages/devextreme/js/{ => common/core}/events/pointer.js (100%) rename packages/devextreme/js/{ => common/core}/events/pointer/base.js (100%) rename packages/devextreme/js/{ => common/core}/events/pointer/mouse.js (100%) rename packages/devextreme/js/{ => common/core}/events/pointer/mouse_and_touch.js (100%) rename packages/devextreme/js/{ => common/core}/events/pointer/observer.js (100%) rename packages/devextreme/js/{ => common/core}/events/pointer/touch.js (100%) rename packages/devextreme/js/{ => common/core}/events/remove.js (100%) rename packages/devextreme/js/{ => common/core}/events/short.js (100%) rename packages/devextreme/js/{ => common/core}/events/swipe.js (100%) rename packages/devextreme/js/{ => common/core}/events/transform.js (100%) rename packages/devextreme/js/{ => common/core}/events/utils/add_namespace.js (100%) rename packages/devextreme/js/{ => common/core}/events/utils/event_nodes_disposing.js (100%) rename packages/devextreme/js/{ => common/core}/events/utils/event_target.js (100%) rename packages/devextreme/js/{ => common/core}/events/utils/index.d.ts (100%) rename packages/devextreme/js/{ => common/core}/events/utils/index.js (100%) rename packages/devextreme/js/{ => common/core}/events/visibility_change.js (100%) rename packages/devextreme/js/{ => common/core}/localization.js (100%) rename packages/devextreme/js/{ => common/core}/localization/core.js (100%) rename packages/devextreme/js/{ => common/core}/localization/currency.js (100%) rename packages/devextreme/js/{ => common/core}/localization/date.d.ts (100%) rename packages/devextreme/js/{ => common/core}/localization/date.js (100%) rename packages/devextreme/js/{ => common/core}/localization/default_date_names.js (100%) rename packages/devextreme/js/{ => common/core}/localization/globalize/core.js (100%) rename packages/devextreme/js/{ => common/core}/localization/globalize/currency.js (100%) rename packages/devextreme/js/{ => common/core}/localization/globalize/date.js (100%) rename packages/devextreme/js/{ => common/core}/localization/globalize/message.js (100%) rename packages/devextreme/js/{ => common/core}/localization/globalize/number.js (100%) rename packages/devextreme/js/{ => common/core}/localization/intl/date.js (100%) rename packages/devextreme/js/{ => common/core}/localization/intl/number.js (100%) rename packages/devextreme/js/{ => common/core}/localization/language_codes.js (100%) rename packages/devextreme/js/{ => common/core}/localization/ldml/date.format.js (100%) rename packages/devextreme/js/{ => common/core}/localization/ldml/date.formatter.js (100%) rename packages/devextreme/js/{ => common/core}/localization/ldml/date.parser.js (100%) rename packages/devextreme/js/{ => common/core}/localization/ldml/number.js (100%) rename packages/devextreme/js/{ => common/core}/localization/message.d.ts (100%) rename packages/devextreme/js/{ => common/core}/localization/message.js (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/ar.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/ca.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/cs.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/de.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/el.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/en.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/es.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/fa.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/fi.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/fr.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/hu.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/it.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/ja.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/lt.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/lv.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/nb.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/nl.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/pl.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/pt.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/ro.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/ru.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/sl.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/sv.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/tr.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/vi.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/zh-tw.json (100%) rename packages/devextreme/js/{ => common/core}/localization/messages/zh.json (100%) rename packages/devextreme/js/{ => common/core}/localization/number.js (100%) rename packages/devextreme/js/{ => common/core}/localization/open_xml_currency_format.js (100%) rename packages/devextreme/js/{ => common/core}/localization/parentLocale.js (100%) rename packages/devextreme/js/{ => common/core}/localization/utils.js (100%) rename packages/devextreme/js/{ => common}/data/abstract_store.d.ts (100%) rename packages/devextreme/js/{ => common}/data/abstract_store.js (100%) rename packages/devextreme/js/{ => common}/data/apply_changes.js (100%) rename packages/devextreme/js/{ => common}/data/array_query.js (100%) rename packages/devextreme/js/{ => common}/data/array_store.js (100%) rename packages/devextreme/js/{ => common}/data/array_utils.js (100%) rename packages/devextreme/js/{ => common}/data/custom_store.js (100%) rename packages/devextreme/js/{ => common}/data/data_source.js (100%) rename packages/devextreme/js/{ => common}/data/data_source/data_source.js (100%) rename packages/devextreme/js/{ => common}/data/data_source/operation_manager.js (100%) rename packages/devextreme/js/{ => common}/data/data_source/utils.js (100%) rename packages/devextreme/js/{ => common}/data/endpoint_selector.js (100%) rename packages/devextreme/js/{ => common}/data/errors.js (100%) rename packages/devextreme/js/{ => common}/data/local_store.js (100%) rename packages/devextreme/js/{ => common}/data/odata/context.js (100%) rename packages/devextreme/js/{ => common}/data/odata/query_adapter.js (100%) rename packages/devextreme/js/{ => common}/data/odata/request_dispatcher.js (100%) rename packages/devextreme/js/{ => common}/data/odata/store.js (100%) rename packages/devextreme/js/{ => common}/data/odata/utils.js (100%) rename packages/devextreme/js/{ => common}/data/query.js (100%) rename packages/devextreme/js/{ => common}/data/query_adapters.js (100%) rename packages/devextreme/js/{ => common}/data/query_implementation.js (100%) rename packages/devextreme/js/{ => common}/data/remote_query.js (100%) rename packages/devextreme/js/{ => common}/data/store_helper.js (100%) rename packages/devextreme/js/{ => common}/data/utils.js (100%) rename packages/devextreme/js/{exporter/export_load_panel.d.ts => common/export.d.ts} (100%) rename packages/devextreme/js/{excel_exporter.d.ts => common/export/excel.d.ts} (100%) rename packages/devextreme/js/{excel_exporter.js => common/export/excel.js} (100%) rename packages/devextreme/js/{pdf_exporter.d.ts => common/export/pdf.d.ts} (100%) rename packages/devextreme/js/{pdf_exporter.js => common/export/pdf.js} (100%) rename packages/devextreme/js/{ => common}/file_management/custom_provider.js (100%) rename packages/devextreme/js/{ => common}/file_management/error.js (100%) rename packages/devextreme/js/{ => common}/file_management/error_codes.js (100%) rename packages/devextreme/js/{ => common}/file_management/file_system_item.js (100%) rename packages/devextreme/js/{ => common}/file_management/object_provider.js (100%) rename packages/devextreme/js/{ => common}/file_management/provider_base.js (100%) rename packages/devextreme/js/{ => common}/file_management/remote_provider.js (100%) rename packages/devextreme/js/{ => common}/file_management/utils.js (100%) rename packages/devextreme/js/{core => common}/guid.js (100%) rename packages/devextreme/js/{core => common}/set_template_engine.js (100%) diff --git a/packages/devextreme/js/core/config.js b/packages/devextreme/js/common/config.js similarity index 100% rename from packages/devextreme/js/core/config.js rename to packages/devextreme/js/common/config.js diff --git a/packages/devextreme/js/animation/easing.js b/packages/devextreme/js/common/core/animation/easing.js similarity index 100% rename from packages/devextreme/js/animation/easing.js rename to packages/devextreme/js/common/core/animation/easing.js diff --git a/packages/devextreme/js/animation/frame.js b/packages/devextreme/js/common/core/animation/frame.js similarity index 100% rename from packages/devextreme/js/animation/frame.js rename to packages/devextreme/js/common/core/animation/frame.js diff --git a/packages/devextreme/js/animation/fx.js b/packages/devextreme/js/common/core/animation/fx.js similarity index 100% rename from packages/devextreme/js/animation/fx.js rename to packages/devextreme/js/common/core/animation/fx.js diff --git a/packages/devextreme/js/animation/position.js b/packages/devextreme/js/common/core/animation/position.js similarity index 100% rename from packages/devextreme/js/animation/position.js rename to packages/devextreme/js/common/core/animation/position.js diff --git a/packages/devextreme/js/animation/presets.js b/packages/devextreme/js/common/core/animation/presets.js similarity index 100% rename from packages/devextreme/js/animation/presets.js rename to packages/devextreme/js/common/core/animation/presets.js diff --git a/packages/devextreme/js/animation/presets/presets.js b/packages/devextreme/js/common/core/animation/presets/presets.js similarity index 100% rename from packages/devextreme/js/animation/presets/presets.js rename to packages/devextreme/js/common/core/animation/presets/presets.js diff --git a/packages/devextreme/js/animation/transition_executor.js b/packages/devextreme/js/common/core/animation/transition_executor.js similarity index 100% rename from packages/devextreme/js/animation/transition_executor.js rename to packages/devextreme/js/common/core/animation/transition_executor.js diff --git a/packages/devextreme/js/animation/transition_executor/transition_executor.js b/packages/devextreme/js/common/core/animation/transition_executor/transition_executor.js similarity index 100% rename from packages/devextreme/js/animation/transition_executor/transition_executor.js rename to packages/devextreme/js/common/core/animation/transition_executor/transition_executor.js diff --git a/packages/devextreme/js/animation/translator.js b/packages/devextreme/js/common/core/animation/translator.js similarity index 100% rename from packages/devextreme/js/animation/translator.js rename to packages/devextreme/js/common/core/animation/translator.js diff --git a/packages/devextreme/js/core/devices.js b/packages/devextreme/js/common/core/environment/devices.js similarity index 100% rename from packages/devextreme/js/core/devices.js rename to packages/devextreme/js/common/core/environment/devices.js diff --git a/packages/devextreme/js/mobile/hide_callback.js b/packages/devextreme/js/common/core/environment/hide_callback.js similarity index 100% rename from packages/devextreme/js/mobile/hide_callback.js rename to packages/devextreme/js/common/core/environment/hide_callback.js diff --git a/packages/devextreme/js/mobile/hide_top_overlay.js b/packages/devextreme/js/common/core/environment/hide_top_overlay.js similarity index 100% rename from packages/devextreme/js/mobile/hide_top_overlay.js rename to packages/devextreme/js/common/core/environment/hide_top_overlay.js diff --git a/packages/devextreme/js/mobile/init_mobile_viewport.js b/packages/devextreme/js/common/core/environment/init_mobile_viewport.js similarity index 100% rename from packages/devextreme/js/mobile/init_mobile_viewport.js rename to packages/devextreme/js/common/core/environment/init_mobile_viewport.js diff --git a/packages/devextreme/js/mobile/init_mobile_viewport/init_mobile_viewport.js b/packages/devextreme/js/common/core/environment/init_mobile_viewport/init_mobile_viewport.js similarity index 100% rename from packages/devextreme/js/mobile/init_mobile_viewport/init_mobile_viewport.js rename to packages/devextreme/js/common/core/environment/init_mobile_viewport/init_mobile_viewport.js diff --git a/packages/devextreme/js/time_zone_utils.js b/packages/devextreme/js/common/core/environment/time_zone_utils.js similarity index 100% rename from packages/devextreme/js/time_zone_utils.js rename to packages/devextreme/js/common/core/environment/time_zone_utils.js diff --git a/packages/devextreme/js/events/click.d.ts b/packages/devextreme/js/common/core/events/click.d.ts similarity index 100% rename from packages/devextreme/js/events/click.d.ts rename to packages/devextreme/js/common/core/events/click.d.ts diff --git a/packages/devextreme/js/events/click.js b/packages/devextreme/js/common/core/events/click.js similarity index 100% rename from packages/devextreme/js/events/click.js rename to packages/devextreme/js/common/core/events/click.js diff --git a/packages/devextreme/js/events/contextmenu.js b/packages/devextreme/js/common/core/events/contextmenu.js similarity index 100% rename from packages/devextreme/js/events/contextmenu.js rename to packages/devextreme/js/common/core/events/contextmenu.js diff --git a/packages/devextreme/js/events/core.js b/packages/devextreme/js/common/core/events/core.js similarity index 100% rename from packages/devextreme/js/events/core.js rename to packages/devextreme/js/common/core/events/core.js diff --git a/packages/devextreme/js/events/core/emitter.feedback.js b/packages/devextreme/js/common/core/events/core/emitter.feedback.js similarity index 100% rename from packages/devextreme/js/events/core/emitter.feedback.js rename to packages/devextreme/js/common/core/events/core/emitter.feedback.js diff --git a/packages/devextreme/js/events/core/emitter.js b/packages/devextreme/js/common/core/events/core/emitter.js similarity index 100% rename from packages/devextreme/js/events/core/emitter.js rename to packages/devextreme/js/common/core/events/core/emitter.js diff --git a/packages/devextreme/js/events/core/emitter_registrator.js b/packages/devextreme/js/common/core/events/core/emitter_registrator.js similarity index 100% rename from packages/devextreme/js/events/core/emitter_registrator.js rename to packages/devextreme/js/common/core/events/core/emitter_registrator.js diff --git a/packages/devextreme/js/events/core/event_registrator.js b/packages/devextreme/js/common/core/events/core/event_registrator.js similarity index 100% rename from packages/devextreme/js/events/core/event_registrator.js rename to packages/devextreme/js/common/core/events/core/event_registrator.js diff --git a/packages/devextreme/js/events/core/event_registrator_callbacks.js b/packages/devextreme/js/common/core/events/core/event_registrator_callbacks.js similarity index 100% rename from packages/devextreme/js/events/core/event_registrator_callbacks.js rename to packages/devextreme/js/common/core/events/core/event_registrator_callbacks.js diff --git a/packages/devextreme/js/events/core/events_engine.d.ts b/packages/devextreme/js/common/core/events/core/events_engine.d.ts similarity index 100% rename from packages/devextreme/js/events/core/events_engine.d.ts rename to packages/devextreme/js/common/core/events/core/events_engine.d.ts diff --git a/packages/devextreme/js/events/core/events_engine.js b/packages/devextreme/js/common/core/events/core/events_engine.js similarity index 100% rename from packages/devextreme/js/events/core/events_engine.js rename to packages/devextreme/js/common/core/events/core/events_engine.js diff --git a/packages/devextreme/js/events/core/hook_touch_props.js b/packages/devextreme/js/common/core/events/core/hook_touch_props.js similarity index 100% rename from packages/devextreme/js/events/core/hook_touch_props.js rename to packages/devextreme/js/common/core/events/core/hook_touch_props.js diff --git a/packages/devextreme/js/events/core/keyboard_processor.js b/packages/devextreme/js/common/core/events/core/keyboard_processor.js similarity index 100% rename from packages/devextreme/js/events/core/keyboard_processor.js rename to packages/devextreme/js/common/core/events/core/keyboard_processor.js diff --git a/packages/devextreme/js/events/core/wheel.js b/packages/devextreme/js/common/core/events/core/wheel.js similarity index 100% rename from packages/devextreme/js/events/core/wheel.js rename to packages/devextreme/js/common/core/events/core/wheel.js diff --git a/packages/devextreme/js/events/dblclick.js b/packages/devextreme/js/common/core/events/dblclick.js similarity index 100% rename from packages/devextreme/js/events/dblclick.js rename to packages/devextreme/js/common/core/events/dblclick.js diff --git a/packages/devextreme/js/events/double_click.js b/packages/devextreme/js/common/core/events/double_click.js similarity index 100% rename from packages/devextreme/js/events/double_click.js rename to packages/devextreme/js/common/core/events/double_click.js diff --git a/packages/devextreme/js/events/drag.js b/packages/devextreme/js/common/core/events/drag.js similarity index 100% rename from packages/devextreme/js/events/drag.js rename to packages/devextreme/js/common/core/events/drag.js diff --git a/packages/devextreme/js/events/gesture/emitter.gesture.js b/packages/devextreme/js/common/core/events/gesture/emitter.gesture.js similarity index 100% rename from packages/devextreme/js/events/gesture/emitter.gesture.js rename to packages/devextreme/js/common/core/events/gesture/emitter.gesture.js diff --git a/packages/devextreme/js/events/gesture/emitter.gesture.scroll.js b/packages/devextreme/js/common/core/events/gesture/emitter.gesture.scroll.js similarity index 100% rename from packages/devextreme/js/events/gesture/emitter.gesture.scroll.js rename to packages/devextreme/js/common/core/events/gesture/emitter.gesture.scroll.js diff --git a/packages/devextreme/js/events/gesture/swipeable.js b/packages/devextreme/js/common/core/events/gesture/swipeable.js similarity index 100% rename from packages/devextreme/js/events/gesture/swipeable.js rename to packages/devextreme/js/common/core/events/gesture/swipeable.js diff --git a/packages/devextreme/js/events/hold.js b/packages/devextreme/js/common/core/events/hold.js similarity index 100% rename from packages/devextreme/js/events/hold.js rename to packages/devextreme/js/common/core/events/hold.js diff --git a/packages/devextreme/js/events/hover.js b/packages/devextreme/js/common/core/events/hover.js similarity index 100% rename from packages/devextreme/js/events/hover.js rename to packages/devextreme/js/common/core/events/hover.js diff --git a/packages/devextreme/js/events/index.d.ts b/packages/devextreme/js/common/core/events/index.d.ts similarity index 100% rename from packages/devextreme/js/events/index.d.ts rename to packages/devextreme/js/common/core/events/index.d.ts diff --git a/packages/devextreme/js/events/index.js b/packages/devextreme/js/common/core/events/index.js similarity index 100% rename from packages/devextreme/js/events/index.js rename to packages/devextreme/js/common/core/events/index.js diff --git a/packages/devextreme/js/events/pointer.d.ts b/packages/devextreme/js/common/core/events/pointer.d.ts similarity index 100% rename from packages/devextreme/js/events/pointer.d.ts rename to packages/devextreme/js/common/core/events/pointer.d.ts diff --git a/packages/devextreme/js/events/pointer.js b/packages/devextreme/js/common/core/events/pointer.js similarity index 100% rename from packages/devextreme/js/events/pointer.js rename to packages/devextreme/js/common/core/events/pointer.js diff --git a/packages/devextreme/js/events/pointer/base.js b/packages/devextreme/js/common/core/events/pointer/base.js similarity index 100% rename from packages/devextreme/js/events/pointer/base.js rename to packages/devextreme/js/common/core/events/pointer/base.js diff --git a/packages/devextreme/js/events/pointer/mouse.js b/packages/devextreme/js/common/core/events/pointer/mouse.js similarity index 100% rename from packages/devextreme/js/events/pointer/mouse.js rename to packages/devextreme/js/common/core/events/pointer/mouse.js diff --git a/packages/devextreme/js/events/pointer/mouse_and_touch.js b/packages/devextreme/js/common/core/events/pointer/mouse_and_touch.js similarity index 100% rename from packages/devextreme/js/events/pointer/mouse_and_touch.js rename to packages/devextreme/js/common/core/events/pointer/mouse_and_touch.js diff --git a/packages/devextreme/js/events/pointer/observer.js b/packages/devextreme/js/common/core/events/pointer/observer.js similarity index 100% rename from packages/devextreme/js/events/pointer/observer.js rename to packages/devextreme/js/common/core/events/pointer/observer.js diff --git a/packages/devextreme/js/events/pointer/touch.js b/packages/devextreme/js/common/core/events/pointer/touch.js similarity index 100% rename from packages/devextreme/js/events/pointer/touch.js rename to packages/devextreme/js/common/core/events/pointer/touch.js diff --git a/packages/devextreme/js/events/remove.js b/packages/devextreme/js/common/core/events/remove.js similarity index 100% rename from packages/devextreme/js/events/remove.js rename to packages/devextreme/js/common/core/events/remove.js diff --git a/packages/devextreme/js/events/short.js b/packages/devextreme/js/common/core/events/short.js similarity index 100% rename from packages/devextreme/js/events/short.js rename to packages/devextreme/js/common/core/events/short.js diff --git a/packages/devextreme/js/events/swipe.js b/packages/devextreme/js/common/core/events/swipe.js similarity index 100% rename from packages/devextreme/js/events/swipe.js rename to packages/devextreme/js/common/core/events/swipe.js diff --git a/packages/devextreme/js/events/transform.js b/packages/devextreme/js/common/core/events/transform.js similarity index 100% rename from packages/devextreme/js/events/transform.js rename to packages/devextreme/js/common/core/events/transform.js diff --git a/packages/devextreme/js/events/utils/add_namespace.js b/packages/devextreme/js/common/core/events/utils/add_namespace.js similarity index 100% rename from packages/devextreme/js/events/utils/add_namespace.js rename to packages/devextreme/js/common/core/events/utils/add_namespace.js diff --git a/packages/devextreme/js/events/utils/event_nodes_disposing.js b/packages/devextreme/js/common/core/events/utils/event_nodes_disposing.js similarity index 100% rename from packages/devextreme/js/events/utils/event_nodes_disposing.js rename to packages/devextreme/js/common/core/events/utils/event_nodes_disposing.js diff --git a/packages/devextreme/js/events/utils/event_target.js b/packages/devextreme/js/common/core/events/utils/event_target.js similarity index 100% rename from packages/devextreme/js/events/utils/event_target.js rename to packages/devextreme/js/common/core/events/utils/event_target.js diff --git a/packages/devextreme/js/events/utils/index.d.ts b/packages/devextreme/js/common/core/events/utils/index.d.ts similarity index 100% rename from packages/devextreme/js/events/utils/index.d.ts rename to packages/devextreme/js/common/core/events/utils/index.d.ts diff --git a/packages/devextreme/js/events/utils/index.js b/packages/devextreme/js/common/core/events/utils/index.js similarity index 100% rename from packages/devextreme/js/events/utils/index.js rename to packages/devextreme/js/common/core/events/utils/index.js diff --git a/packages/devextreme/js/events/visibility_change.js b/packages/devextreme/js/common/core/events/visibility_change.js similarity index 100% rename from packages/devextreme/js/events/visibility_change.js rename to packages/devextreme/js/common/core/events/visibility_change.js diff --git a/packages/devextreme/js/localization.js b/packages/devextreme/js/common/core/localization.js similarity index 100% rename from packages/devextreme/js/localization.js rename to packages/devextreme/js/common/core/localization.js diff --git a/packages/devextreme/js/localization/core.js b/packages/devextreme/js/common/core/localization/core.js similarity index 100% rename from packages/devextreme/js/localization/core.js rename to packages/devextreme/js/common/core/localization/core.js diff --git a/packages/devextreme/js/localization/currency.js b/packages/devextreme/js/common/core/localization/currency.js similarity index 100% rename from packages/devextreme/js/localization/currency.js rename to packages/devextreme/js/common/core/localization/currency.js diff --git a/packages/devextreme/js/localization/date.d.ts b/packages/devextreme/js/common/core/localization/date.d.ts similarity index 100% rename from packages/devextreme/js/localization/date.d.ts rename to packages/devextreme/js/common/core/localization/date.d.ts diff --git a/packages/devextreme/js/localization/date.js b/packages/devextreme/js/common/core/localization/date.js similarity index 100% rename from packages/devextreme/js/localization/date.js rename to packages/devextreme/js/common/core/localization/date.js diff --git a/packages/devextreme/js/localization/default_date_names.js b/packages/devextreme/js/common/core/localization/default_date_names.js similarity index 100% rename from packages/devextreme/js/localization/default_date_names.js rename to packages/devextreme/js/common/core/localization/default_date_names.js diff --git a/packages/devextreme/js/localization/globalize/core.js b/packages/devextreme/js/common/core/localization/globalize/core.js similarity index 100% rename from packages/devextreme/js/localization/globalize/core.js rename to packages/devextreme/js/common/core/localization/globalize/core.js diff --git a/packages/devextreme/js/localization/globalize/currency.js b/packages/devextreme/js/common/core/localization/globalize/currency.js similarity index 100% rename from packages/devextreme/js/localization/globalize/currency.js rename to packages/devextreme/js/common/core/localization/globalize/currency.js diff --git a/packages/devextreme/js/localization/globalize/date.js b/packages/devextreme/js/common/core/localization/globalize/date.js similarity index 100% rename from packages/devextreme/js/localization/globalize/date.js rename to packages/devextreme/js/common/core/localization/globalize/date.js diff --git a/packages/devextreme/js/localization/globalize/message.js b/packages/devextreme/js/common/core/localization/globalize/message.js similarity index 100% rename from packages/devextreme/js/localization/globalize/message.js rename to packages/devextreme/js/common/core/localization/globalize/message.js diff --git a/packages/devextreme/js/localization/globalize/number.js b/packages/devextreme/js/common/core/localization/globalize/number.js similarity index 100% rename from packages/devextreme/js/localization/globalize/number.js rename to packages/devextreme/js/common/core/localization/globalize/number.js diff --git a/packages/devextreme/js/localization/intl/date.js b/packages/devextreme/js/common/core/localization/intl/date.js similarity index 100% rename from packages/devextreme/js/localization/intl/date.js rename to packages/devextreme/js/common/core/localization/intl/date.js diff --git a/packages/devextreme/js/localization/intl/number.js b/packages/devextreme/js/common/core/localization/intl/number.js similarity index 100% rename from packages/devextreme/js/localization/intl/number.js rename to packages/devextreme/js/common/core/localization/intl/number.js diff --git a/packages/devextreme/js/localization/language_codes.js b/packages/devextreme/js/common/core/localization/language_codes.js similarity index 100% rename from packages/devextreme/js/localization/language_codes.js rename to packages/devextreme/js/common/core/localization/language_codes.js diff --git a/packages/devextreme/js/localization/ldml/date.format.js b/packages/devextreme/js/common/core/localization/ldml/date.format.js similarity index 100% rename from packages/devextreme/js/localization/ldml/date.format.js rename to packages/devextreme/js/common/core/localization/ldml/date.format.js diff --git a/packages/devextreme/js/localization/ldml/date.formatter.js b/packages/devextreme/js/common/core/localization/ldml/date.formatter.js similarity index 100% rename from packages/devextreme/js/localization/ldml/date.formatter.js rename to packages/devextreme/js/common/core/localization/ldml/date.formatter.js diff --git a/packages/devextreme/js/localization/ldml/date.parser.js b/packages/devextreme/js/common/core/localization/ldml/date.parser.js similarity index 100% rename from packages/devextreme/js/localization/ldml/date.parser.js rename to packages/devextreme/js/common/core/localization/ldml/date.parser.js diff --git a/packages/devextreme/js/localization/ldml/number.js b/packages/devextreme/js/common/core/localization/ldml/number.js similarity index 100% rename from packages/devextreme/js/localization/ldml/number.js rename to packages/devextreme/js/common/core/localization/ldml/number.js diff --git a/packages/devextreme/js/localization/message.d.ts b/packages/devextreme/js/common/core/localization/message.d.ts similarity index 100% rename from packages/devextreme/js/localization/message.d.ts rename to packages/devextreme/js/common/core/localization/message.d.ts diff --git a/packages/devextreme/js/localization/message.js b/packages/devextreme/js/common/core/localization/message.js similarity index 100% rename from packages/devextreme/js/localization/message.js rename to packages/devextreme/js/common/core/localization/message.js diff --git a/packages/devextreme/js/localization/messages/ar.json b/packages/devextreme/js/common/core/localization/messages/ar.json similarity index 100% rename from packages/devextreme/js/localization/messages/ar.json rename to packages/devextreme/js/common/core/localization/messages/ar.json diff --git a/packages/devextreme/js/localization/messages/ca.json b/packages/devextreme/js/common/core/localization/messages/ca.json similarity index 100% rename from packages/devextreme/js/localization/messages/ca.json rename to packages/devextreme/js/common/core/localization/messages/ca.json diff --git a/packages/devextreme/js/localization/messages/cs.json b/packages/devextreme/js/common/core/localization/messages/cs.json similarity index 100% rename from packages/devextreme/js/localization/messages/cs.json rename to packages/devextreme/js/common/core/localization/messages/cs.json diff --git a/packages/devextreme/js/localization/messages/de.json b/packages/devextreme/js/common/core/localization/messages/de.json similarity index 100% rename from packages/devextreme/js/localization/messages/de.json rename to packages/devextreme/js/common/core/localization/messages/de.json diff --git a/packages/devextreme/js/localization/messages/el.json b/packages/devextreme/js/common/core/localization/messages/el.json similarity index 100% rename from packages/devextreme/js/localization/messages/el.json rename to packages/devextreme/js/common/core/localization/messages/el.json diff --git a/packages/devextreme/js/localization/messages/en.json b/packages/devextreme/js/common/core/localization/messages/en.json similarity index 100% rename from packages/devextreme/js/localization/messages/en.json rename to packages/devextreme/js/common/core/localization/messages/en.json diff --git a/packages/devextreme/js/localization/messages/es.json b/packages/devextreme/js/common/core/localization/messages/es.json similarity index 100% rename from packages/devextreme/js/localization/messages/es.json rename to packages/devextreme/js/common/core/localization/messages/es.json diff --git a/packages/devextreme/js/localization/messages/fa.json b/packages/devextreme/js/common/core/localization/messages/fa.json similarity index 100% rename from packages/devextreme/js/localization/messages/fa.json rename to packages/devextreme/js/common/core/localization/messages/fa.json diff --git a/packages/devextreme/js/localization/messages/fi.json b/packages/devextreme/js/common/core/localization/messages/fi.json similarity index 100% rename from packages/devextreme/js/localization/messages/fi.json rename to packages/devextreme/js/common/core/localization/messages/fi.json diff --git a/packages/devextreme/js/localization/messages/fr.json b/packages/devextreme/js/common/core/localization/messages/fr.json similarity index 100% rename from packages/devextreme/js/localization/messages/fr.json rename to packages/devextreme/js/common/core/localization/messages/fr.json diff --git a/packages/devextreme/js/localization/messages/hu.json b/packages/devextreme/js/common/core/localization/messages/hu.json similarity index 100% rename from packages/devextreme/js/localization/messages/hu.json rename to packages/devextreme/js/common/core/localization/messages/hu.json diff --git a/packages/devextreme/js/localization/messages/it.json b/packages/devextreme/js/common/core/localization/messages/it.json similarity index 100% rename from packages/devextreme/js/localization/messages/it.json rename to packages/devextreme/js/common/core/localization/messages/it.json diff --git a/packages/devextreme/js/localization/messages/ja.json b/packages/devextreme/js/common/core/localization/messages/ja.json similarity index 100% rename from packages/devextreme/js/localization/messages/ja.json rename to packages/devextreme/js/common/core/localization/messages/ja.json diff --git a/packages/devextreme/js/localization/messages/lt.json b/packages/devextreme/js/common/core/localization/messages/lt.json similarity index 100% rename from packages/devextreme/js/localization/messages/lt.json rename to packages/devextreme/js/common/core/localization/messages/lt.json diff --git a/packages/devextreme/js/localization/messages/lv.json b/packages/devextreme/js/common/core/localization/messages/lv.json similarity index 100% rename from packages/devextreme/js/localization/messages/lv.json rename to packages/devextreme/js/common/core/localization/messages/lv.json diff --git a/packages/devextreme/js/localization/messages/nb.json b/packages/devextreme/js/common/core/localization/messages/nb.json similarity index 100% rename from packages/devextreme/js/localization/messages/nb.json rename to packages/devextreme/js/common/core/localization/messages/nb.json diff --git a/packages/devextreme/js/localization/messages/nl.json b/packages/devextreme/js/common/core/localization/messages/nl.json similarity index 100% rename from packages/devextreme/js/localization/messages/nl.json rename to packages/devextreme/js/common/core/localization/messages/nl.json diff --git a/packages/devextreme/js/localization/messages/pl.json b/packages/devextreme/js/common/core/localization/messages/pl.json similarity index 100% rename from packages/devextreme/js/localization/messages/pl.json rename to packages/devextreme/js/common/core/localization/messages/pl.json diff --git a/packages/devextreme/js/localization/messages/pt.json b/packages/devextreme/js/common/core/localization/messages/pt.json similarity index 100% rename from packages/devextreme/js/localization/messages/pt.json rename to packages/devextreme/js/common/core/localization/messages/pt.json diff --git a/packages/devextreme/js/localization/messages/ro.json b/packages/devextreme/js/common/core/localization/messages/ro.json similarity index 100% rename from packages/devextreme/js/localization/messages/ro.json rename to packages/devextreme/js/common/core/localization/messages/ro.json diff --git a/packages/devextreme/js/localization/messages/ru.json b/packages/devextreme/js/common/core/localization/messages/ru.json similarity index 100% rename from packages/devextreme/js/localization/messages/ru.json rename to packages/devextreme/js/common/core/localization/messages/ru.json diff --git a/packages/devextreme/js/localization/messages/sl.json b/packages/devextreme/js/common/core/localization/messages/sl.json similarity index 100% rename from packages/devextreme/js/localization/messages/sl.json rename to packages/devextreme/js/common/core/localization/messages/sl.json diff --git a/packages/devextreme/js/localization/messages/sv.json b/packages/devextreme/js/common/core/localization/messages/sv.json similarity index 100% rename from packages/devextreme/js/localization/messages/sv.json rename to packages/devextreme/js/common/core/localization/messages/sv.json diff --git a/packages/devextreme/js/localization/messages/tr.json b/packages/devextreme/js/common/core/localization/messages/tr.json similarity index 100% rename from packages/devextreme/js/localization/messages/tr.json rename to packages/devextreme/js/common/core/localization/messages/tr.json diff --git a/packages/devextreme/js/localization/messages/vi.json b/packages/devextreme/js/common/core/localization/messages/vi.json similarity index 100% rename from packages/devextreme/js/localization/messages/vi.json rename to packages/devextreme/js/common/core/localization/messages/vi.json diff --git a/packages/devextreme/js/localization/messages/zh-tw.json b/packages/devextreme/js/common/core/localization/messages/zh-tw.json similarity index 100% rename from packages/devextreme/js/localization/messages/zh-tw.json rename to packages/devextreme/js/common/core/localization/messages/zh-tw.json diff --git a/packages/devextreme/js/localization/messages/zh.json b/packages/devextreme/js/common/core/localization/messages/zh.json similarity index 100% rename from packages/devextreme/js/localization/messages/zh.json rename to packages/devextreme/js/common/core/localization/messages/zh.json diff --git a/packages/devextreme/js/localization/number.js b/packages/devextreme/js/common/core/localization/number.js similarity index 100% rename from packages/devextreme/js/localization/number.js rename to packages/devextreme/js/common/core/localization/number.js diff --git a/packages/devextreme/js/localization/open_xml_currency_format.js b/packages/devextreme/js/common/core/localization/open_xml_currency_format.js similarity index 100% rename from packages/devextreme/js/localization/open_xml_currency_format.js rename to packages/devextreme/js/common/core/localization/open_xml_currency_format.js diff --git a/packages/devextreme/js/localization/parentLocale.js b/packages/devextreme/js/common/core/localization/parentLocale.js similarity index 100% rename from packages/devextreme/js/localization/parentLocale.js rename to packages/devextreme/js/common/core/localization/parentLocale.js diff --git a/packages/devextreme/js/localization/utils.js b/packages/devextreme/js/common/core/localization/utils.js similarity index 100% rename from packages/devextreme/js/localization/utils.js rename to packages/devextreme/js/common/core/localization/utils.js diff --git a/packages/devextreme/js/data/abstract_store.d.ts b/packages/devextreme/js/common/data/abstract_store.d.ts similarity index 100% rename from packages/devextreme/js/data/abstract_store.d.ts rename to packages/devextreme/js/common/data/abstract_store.d.ts diff --git a/packages/devextreme/js/data/abstract_store.js b/packages/devextreme/js/common/data/abstract_store.js similarity index 100% rename from packages/devextreme/js/data/abstract_store.js rename to packages/devextreme/js/common/data/abstract_store.js diff --git a/packages/devextreme/js/data/apply_changes.js b/packages/devextreme/js/common/data/apply_changes.js similarity index 100% rename from packages/devextreme/js/data/apply_changes.js rename to packages/devextreme/js/common/data/apply_changes.js diff --git a/packages/devextreme/js/data/array_query.js b/packages/devextreme/js/common/data/array_query.js similarity index 100% rename from packages/devextreme/js/data/array_query.js rename to packages/devextreme/js/common/data/array_query.js diff --git a/packages/devextreme/js/data/array_store.js b/packages/devextreme/js/common/data/array_store.js similarity index 100% rename from packages/devextreme/js/data/array_store.js rename to packages/devextreme/js/common/data/array_store.js diff --git a/packages/devextreme/js/data/array_utils.js b/packages/devextreme/js/common/data/array_utils.js similarity index 100% rename from packages/devextreme/js/data/array_utils.js rename to packages/devextreme/js/common/data/array_utils.js diff --git a/packages/devextreme/js/data/custom_store.js b/packages/devextreme/js/common/data/custom_store.js similarity index 100% rename from packages/devextreme/js/data/custom_store.js rename to packages/devextreme/js/common/data/custom_store.js diff --git a/packages/devextreme/js/data/data_source.js b/packages/devextreme/js/common/data/data_source.js similarity index 100% rename from packages/devextreme/js/data/data_source.js rename to packages/devextreme/js/common/data/data_source.js diff --git a/packages/devextreme/js/data/data_source/data_source.js b/packages/devextreme/js/common/data/data_source/data_source.js similarity index 100% rename from packages/devextreme/js/data/data_source/data_source.js rename to packages/devextreme/js/common/data/data_source/data_source.js diff --git a/packages/devextreme/js/data/data_source/operation_manager.js b/packages/devextreme/js/common/data/data_source/operation_manager.js similarity index 100% rename from packages/devextreme/js/data/data_source/operation_manager.js rename to packages/devextreme/js/common/data/data_source/operation_manager.js diff --git a/packages/devextreme/js/data/data_source/utils.js b/packages/devextreme/js/common/data/data_source/utils.js similarity index 100% rename from packages/devextreme/js/data/data_source/utils.js rename to packages/devextreme/js/common/data/data_source/utils.js diff --git a/packages/devextreme/js/data/endpoint_selector.js b/packages/devextreme/js/common/data/endpoint_selector.js similarity index 100% rename from packages/devextreme/js/data/endpoint_selector.js rename to packages/devextreme/js/common/data/endpoint_selector.js diff --git a/packages/devextreme/js/data/errors.js b/packages/devextreme/js/common/data/errors.js similarity index 100% rename from packages/devextreme/js/data/errors.js rename to packages/devextreme/js/common/data/errors.js diff --git a/packages/devextreme/js/data/local_store.js b/packages/devextreme/js/common/data/local_store.js similarity index 100% rename from packages/devextreme/js/data/local_store.js rename to packages/devextreme/js/common/data/local_store.js diff --git a/packages/devextreme/js/data/odata/context.js b/packages/devextreme/js/common/data/odata/context.js similarity index 100% rename from packages/devextreme/js/data/odata/context.js rename to packages/devextreme/js/common/data/odata/context.js diff --git a/packages/devextreme/js/data/odata/query_adapter.js b/packages/devextreme/js/common/data/odata/query_adapter.js similarity index 100% rename from packages/devextreme/js/data/odata/query_adapter.js rename to packages/devextreme/js/common/data/odata/query_adapter.js diff --git a/packages/devextreme/js/data/odata/request_dispatcher.js b/packages/devextreme/js/common/data/odata/request_dispatcher.js similarity index 100% rename from packages/devextreme/js/data/odata/request_dispatcher.js rename to packages/devextreme/js/common/data/odata/request_dispatcher.js diff --git a/packages/devextreme/js/data/odata/store.js b/packages/devextreme/js/common/data/odata/store.js similarity index 100% rename from packages/devextreme/js/data/odata/store.js rename to packages/devextreme/js/common/data/odata/store.js diff --git a/packages/devextreme/js/data/odata/utils.js b/packages/devextreme/js/common/data/odata/utils.js similarity index 100% rename from packages/devextreme/js/data/odata/utils.js rename to packages/devextreme/js/common/data/odata/utils.js diff --git a/packages/devextreme/js/data/query.js b/packages/devextreme/js/common/data/query.js similarity index 100% rename from packages/devextreme/js/data/query.js rename to packages/devextreme/js/common/data/query.js diff --git a/packages/devextreme/js/data/query_adapters.js b/packages/devextreme/js/common/data/query_adapters.js similarity index 100% rename from packages/devextreme/js/data/query_adapters.js rename to packages/devextreme/js/common/data/query_adapters.js diff --git a/packages/devextreme/js/data/query_implementation.js b/packages/devextreme/js/common/data/query_implementation.js similarity index 100% rename from packages/devextreme/js/data/query_implementation.js rename to packages/devextreme/js/common/data/query_implementation.js diff --git a/packages/devextreme/js/data/remote_query.js b/packages/devextreme/js/common/data/remote_query.js similarity index 100% rename from packages/devextreme/js/data/remote_query.js rename to packages/devextreme/js/common/data/remote_query.js diff --git a/packages/devextreme/js/data/store_helper.js b/packages/devextreme/js/common/data/store_helper.js similarity index 100% rename from packages/devextreme/js/data/store_helper.js rename to packages/devextreme/js/common/data/store_helper.js diff --git a/packages/devextreme/js/data/utils.js b/packages/devextreme/js/common/data/utils.js similarity index 100% rename from packages/devextreme/js/data/utils.js rename to packages/devextreme/js/common/data/utils.js diff --git a/packages/devextreme/js/exporter/export_load_panel.d.ts b/packages/devextreme/js/common/export.d.ts similarity index 100% rename from packages/devextreme/js/exporter/export_load_panel.d.ts rename to packages/devextreme/js/common/export.d.ts diff --git a/packages/devextreme/js/excel_exporter.d.ts b/packages/devextreme/js/common/export/excel.d.ts similarity index 100% rename from packages/devextreme/js/excel_exporter.d.ts rename to packages/devextreme/js/common/export/excel.d.ts diff --git a/packages/devextreme/js/excel_exporter.js b/packages/devextreme/js/common/export/excel.js similarity index 100% rename from packages/devextreme/js/excel_exporter.js rename to packages/devextreme/js/common/export/excel.js diff --git a/packages/devextreme/js/pdf_exporter.d.ts b/packages/devextreme/js/common/export/pdf.d.ts similarity index 100% rename from packages/devextreme/js/pdf_exporter.d.ts rename to packages/devextreme/js/common/export/pdf.d.ts diff --git a/packages/devextreme/js/pdf_exporter.js b/packages/devextreme/js/common/export/pdf.js similarity index 100% rename from packages/devextreme/js/pdf_exporter.js rename to packages/devextreme/js/common/export/pdf.js diff --git a/packages/devextreme/js/file_management/custom_provider.js b/packages/devextreme/js/common/file_management/custom_provider.js similarity index 100% rename from packages/devextreme/js/file_management/custom_provider.js rename to packages/devextreme/js/common/file_management/custom_provider.js diff --git a/packages/devextreme/js/file_management/error.js b/packages/devextreme/js/common/file_management/error.js similarity index 100% rename from packages/devextreme/js/file_management/error.js rename to packages/devextreme/js/common/file_management/error.js diff --git a/packages/devextreme/js/file_management/error_codes.js b/packages/devextreme/js/common/file_management/error_codes.js similarity index 100% rename from packages/devextreme/js/file_management/error_codes.js rename to packages/devextreme/js/common/file_management/error_codes.js diff --git a/packages/devextreme/js/file_management/file_system_item.js b/packages/devextreme/js/common/file_management/file_system_item.js similarity index 100% rename from packages/devextreme/js/file_management/file_system_item.js rename to packages/devextreme/js/common/file_management/file_system_item.js diff --git a/packages/devextreme/js/file_management/object_provider.js b/packages/devextreme/js/common/file_management/object_provider.js similarity index 100% rename from packages/devextreme/js/file_management/object_provider.js rename to packages/devextreme/js/common/file_management/object_provider.js diff --git a/packages/devextreme/js/file_management/provider_base.js b/packages/devextreme/js/common/file_management/provider_base.js similarity index 100% rename from packages/devextreme/js/file_management/provider_base.js rename to packages/devextreme/js/common/file_management/provider_base.js diff --git a/packages/devextreme/js/file_management/remote_provider.js b/packages/devextreme/js/common/file_management/remote_provider.js similarity index 100% rename from packages/devextreme/js/file_management/remote_provider.js rename to packages/devextreme/js/common/file_management/remote_provider.js diff --git a/packages/devextreme/js/file_management/utils.js b/packages/devextreme/js/common/file_management/utils.js similarity index 100% rename from packages/devextreme/js/file_management/utils.js rename to packages/devextreme/js/common/file_management/utils.js diff --git a/packages/devextreme/js/core/guid.js b/packages/devextreme/js/common/guid.js similarity index 100% rename from packages/devextreme/js/core/guid.js rename to packages/devextreme/js/common/guid.js diff --git a/packages/devextreme/js/core/set_template_engine.js b/packages/devextreme/js/common/set_template_engine.js similarity index 100% rename from packages/devextreme/js/core/set_template_engine.js rename to packages/devextreme/js/common/set_template_engine.js From aff2d59f63dafbb87e49019db876eb9e9f4eb0c2 Mon Sep 17 00:00:00 2001 From: Vasily Strelyaev Date: Fri, 1 Nov 2024 16:34:10 +0200 Subject: [PATCH 02/21] update exports and re-exports --- .../Angular/app/app.component.ts | 4 +- .../Localization/UsingGlobalize/React/App.tsx | 4 +- .../UsingGlobalize/ReactJs/App.js | 4 +- .../Localization/UsingGlobalize/Vue/App.vue | 4 +- .../UsingIntl/Angular/app/app.component.ts | 4 +- .../Localization/UsingIntl/React/App.tsx | 4 +- .../Localization/UsingIntl/ReactJs/App.js | 4 +- .../Demos/Localization/UsingIntl/Vue/App.vue | 4 +- apps/demos/configs/Angular/config.bundle.js | 16 +- apps/demos/configs/React/config.bundle.js | 18 +- apps/demos/configs/React/config.js | 2 +- apps/demos/configs/ReactJs/config.bundle.js | 18 +- apps/demos/configs/ReactJs/config.js | 2 +- apps/demos/configs/Vue/config.bundle.js | 16 +- .../rollup.devextreme-angular.umd.config.mjs | 9 +- apps/demos/utils/bundle/index.js | 3 +- e2e/compilation-cases/data/data_source.ts | 24 +- e2e/compilation-cases/data/stores.ts | 10 +- package.json | 2 +- packages/devextreme-angular/build.config.js | 2 +- packages/devextreme-angular/gulpfile.js | 22 +- .../src/common/core/animation/index.ts | 12 + .../src/common/core/animation/ng-package.json | 5 + .../src/common/core/environment/index.ts | 7 + .../common/core/environment/ng-package.json | 5 + .../src/common/core/events/index.ts | 14 + .../src/common/core/events/ng-package.json | 5 + .../src/common/core/index.ts | 4 + .../src/common/core/localization/index.ts | 10 + .../common/core/localization/ng-package.json | 5 + .../src/common/core/ng-package.json | 5 + .../src/common/data/index.ts | 43 + .../src/common/data/ng-package.json | 5 + .../src/common/export/excel/index.ts | 8 + .../src/common/export/excel/ng-package.json | 5 + .../src/common/export/index.ts | 2 + .../src/common/export/ng-package.json | 5 + .../src/common/export/pdf/index.ts | 9 + .../src/common/export/pdf/ng-package.json | 5 + .../devextreme-angular/src/common/index.ts | 13 +- .../src/core/integration.ts | 2 +- packages/devextreme-angular/src/index.ts | 1 + .../src/ui/action-sheet/nested/item-dxi.ts | 2 +- .../src/ui/autocomplete/nested/animation.ts | 2 +- .../src/ui/autocomplete/nested/collision.ts | 2 +- .../autocomplete/nested/drop-down-options.ts | 6 +- .../src/ui/autocomplete/nested/from.ts | 2 +- .../src/ui/autocomplete/nested/hide.ts | 2 +- .../src/ui/autocomplete/nested/position.ts | 2 +- .../src/ui/autocomplete/nested/show.ts | 2 +- .../src/ui/autocomplete/nested/to.ts | 2 +- .../src/ui/bar-gauge/index.ts | 2 +- .../src/ui/bar-gauge/nested/label.ts | 2 +- .../src/ui/bar-gauge/nested/legend.ts | 2 +- .../src/ui/bar-gauge/nested/tooltip.ts | 2 +- .../devextreme-angular/src/ui/bullet/index.ts | 2 +- .../src/ui/bullet/nested/tooltip.ts | 2 +- .../devextreme-angular/src/ui/chart/index.ts | 2 +- .../src/ui/chart/nested/argument-axis.ts | 2 +- .../src/ui/chart/nested/axis-label.ts | 2 +- .../nested/common-series-settings-label.ts | 2 +- .../ui/chart/nested/common-series-settings.ts | 2 +- .../src/ui/chart/nested/crosshair.ts | 2 +- .../ui/chart/nested/horizontal-line-label.ts | 2 +- .../src/ui/chart/nested/horizontal-line.ts | 2 +- .../src/ui/chart/nested/label.ts | 2 +- .../src/ui/chart/nested/series-dxi.ts | 2 +- .../src/ui/chart/nested/tooltip.ts | 2 +- .../src/ui/chart/nested/value-axis-dxi.ts | 2 +- .../src/ui/chart/nested/vertical-line.ts | 2 +- .../devextreme-angular/src/ui/chat/index.ts | 2 +- .../src/ui/circular-gauge/index.ts | 2 +- .../src/ui/circular-gauge/nested/label.ts | 2 +- .../src/ui/circular-gauge/nested/scale.ts | 2 +- .../nested/subvalue-indicator.ts | 2 +- .../src/ui/circular-gauge/nested/text.ts | 2 +- .../src/ui/circular-gauge/nested/tooltip.ts | 2 +- .../circular-gauge/nested/value-indicator.ts | 2 +- .../src/ui/color-box/nested/animation.ts | 2 +- .../src/ui/color-box/nested/collision.ts | 2 +- .../ui/color-box/nested/drop-down-options.ts | 6 +- .../src/ui/color-box/nested/from.ts | 2 +- .../src/ui/color-box/nested/hide.ts | 2 +- .../src/ui/color-box/nested/position.ts | 2 +- .../src/ui/color-box/nested/show.ts | 2 +- .../src/ui/color-box/nested/to.ts | 2 +- .../src/ui/context-menu/index.ts | 5 +- .../src/ui/context-menu/nested/animation.ts | 2 +- .../src/ui/context-menu/nested/collision.ts | 2 +- .../src/ui/context-menu/nested/from.ts | 2 +- .../src/ui/context-menu/nested/hide.ts | 2 +- .../src/ui/context-menu/nested/position.ts | 2 +- .../src/ui/context-menu/nested/show.ts | 2 +- .../src/ui/context-menu/nested/to.ts | 2 +- .../src/ui/data-grid/index.ts | 6 +- .../src/ui/data-grid/nested/animation.ts | 2 +- .../src/ui/data-grid/nested/collision.ts | 2 +- .../src/ui/data-grid/nested/column-chooser.ts | 2 +- .../src/ui/data-grid/nested/column-dxi.ts | 2 +- .../src/ui/data-grid/nested/field-dxi.ts | 2 +- .../data-grid/nested/filter-builder-popup.ts | 6 +- .../src/ui/data-grid/nested/from.ts | 2 +- .../src/ui/data-grid/nested/group-item-dxi.ts | 2 +- .../src/ui/data-grid/nested/hide.ts | 2 +- .../src/ui/data-grid/nested/popup.ts | 6 +- .../src/ui/data-grid/nested/position.ts | 2 +- .../src/ui/data-grid/nested/row-dragging.ts | 2 +- .../src/ui/data-grid/nested/show.ts | 2 +- .../src/ui/data-grid/nested/summary.ts | 2 +- .../src/ui/data-grid/nested/to.ts | 2 +- .../src/ui/data-grid/nested/total-item-dxi.ts | 2 +- .../src/ui/date-box/index.ts | 2 +- .../src/ui/date-box/nested/animation.ts | 2 +- .../src/ui/date-box/nested/collision.ts | 2 +- .../ui/date-box/nested/drop-down-options.ts | 6 +- .../src/ui/date-box/nested/from.ts | 2 +- .../src/ui/date-box/nested/hide.ts | 2 +- .../src/ui/date-box/nested/position.ts | 2 +- .../src/ui/date-box/nested/show.ts | 2 +- .../src/ui/date-box/nested/to.ts | 2 +- .../src/ui/date-range-box/index.ts | 2 +- .../src/ui/date-range-box/nested/animation.ts | 2 +- .../src/ui/date-range-box/nested/collision.ts | 2 +- .../nested/drop-down-options.ts | 6 +- .../src/ui/date-range-box/nested/from.ts | 2 +- .../src/ui/date-range-box/nested/hide.ts | 2 +- .../src/ui/date-range-box/nested/position.ts | 2 +- .../src/ui/date-range-box/nested/show.ts | 2 +- .../src/ui/date-range-box/nested/to.ts | 2 +- .../src/ui/defer-rendering/index.ts | 2 +- .../ui/defer-rendering/nested/animation.ts | 2 +- .../ui/defer-rendering/nested/collision.ts | 2 +- .../src/ui/defer-rendering/nested/from.ts | 2 +- .../src/ui/defer-rendering/nested/position.ts | 2 +- .../src/ui/defer-rendering/nested/to.ts | 2 +- .../devextreme-angular/src/ui/drawer/index.ts | 2 +- .../src/ui/drop-down-box/nested/animation.ts | 2 +- .../src/ui/drop-down-box/nested/collision.ts | 2 +- .../drop-down-box/nested/drop-down-options.ts | 6 +- .../src/ui/drop-down-box/nested/from.ts | 2 +- .../src/ui/drop-down-box/nested/hide.ts | 2 +- .../src/ui/drop-down-box/nested/position.ts | 2 +- .../src/ui/drop-down-box/nested/show.ts | 2 +- .../src/ui/drop-down-box/nested/to.ts | 2 +- .../ui/drop-down-button/nested/animation.ts | 2 +- .../ui/drop-down-button/nested/collision.ts | 2 +- .../nested/drop-down-options.ts | 6 +- .../src/ui/drop-down-button/nested/from.ts | 2 +- .../src/ui/drop-down-button/nested/hide.ts | 2 +- .../ui/drop-down-button/nested/position.ts | 2 +- .../src/ui/drop-down-button/nested/show.ts | 2 +- .../src/ui/drop-down-button/nested/to.ts | 2 +- .../src/ui/filter-builder/nested/field-dxi.ts | 2 +- .../devextreme-angular/src/ui/funnel/index.ts | 2 +- .../src/ui/funnel/nested/label.ts | 2 +- .../src/ui/funnel/nested/tooltip.ts | 2 +- .../src/ui/gantt/nested/column-dxi.ts | 2 +- .../src/ui/linear-gauge/index.ts | 2 +- .../src/ui/linear-gauge/nested/label.ts | 2 +- .../src/ui/linear-gauge/nested/scale.ts | 2 +- .../linear-gauge/nested/subvalue-indicator.ts | 2 +- .../src/ui/linear-gauge/nested/text.ts | 2 +- .../src/ui/linear-gauge/nested/tooltip.ts | 2 +- .../ui/linear-gauge/nested/value-indicator.ts | 2 +- .../src/ui/load-panel/index.ts | 5 +- .../src/ui/load-panel/nested/animation.ts | 2 +- .../src/ui/load-panel/nested/collision.ts | 2 +- .../src/ui/load-panel/nested/from.ts | 2 +- .../src/ui/load-panel/nested/hide.ts | 2 +- .../src/ui/load-panel/nested/position.ts | 2 +- .../src/ui/load-panel/nested/show.ts | 2 +- .../src/ui/load-panel/nested/to.ts | 2 +- .../src/ui/lookup/nested/animation.ts | 2 +- .../src/ui/lookup/nested/collision.ts | 2 +- .../src/ui/lookup/nested/drop-down-options.ts | 5 +- .../src/ui/lookup/nested/from.ts | 2 +- .../src/ui/lookup/nested/hide.ts | 2 +- .../src/ui/lookup/nested/position.ts | 2 +- .../src/ui/lookup/nested/show.ts | 2 +- .../src/ui/lookup/nested/to.ts | 2 +- .../devextreme-angular/src/ui/menu/index.ts | 2 +- .../src/ui/menu/nested/animation.ts | 2 +- .../src/ui/menu/nested/collision.ts | 2 +- .../src/ui/menu/nested/from.ts | 2 +- .../src/ui/menu/nested/hide.ts | 2 +- .../src/ui/menu/nested/position.ts | 2 +- .../src/ui/menu/nested/show.ts | 2 +- .../src/ui/menu/nested/to.ts | 2 +- .../src/ui/nested/argument-axis.ts | 2 +- .../src/ui/nested/base/animation-config.ts | 2 +- .../src/ui/nested/base/animation-state.ts | 2 +- .../base/chart-common-series-settings.ts | 2 +- .../src/ui/nested/base/chart-series-dxi.ts | 2 +- .../ui/nested/base/data-grid-column-dxi.ts | 2 +- .../nested/base/filter-builder-field-dxi.ts | 2 +- .../src/ui/nested/base/gauge-indicator.ts | 2 +- .../src/ui/nested/base/popup-options.ts | 3 +- .../src/ui/nested/base/position-config.ts | 2 +- .../src/ui/nested/collision.ts | 2 +- .../src/ui/nested/column-chooser.ts | 2 +- .../src/ui/nested/crosshair.ts | 2 +- .../src/ui/nested/drop-down-options.ts | 2 +- .../src/ui/nested/filter-builder-popup.ts | 2 +- .../src/ui/nested/group-item-dxi.ts | 2 +- .../src/ui/nested/horizontal-line.ts | 2 +- .../devextreme-angular/src/ui/nested/label.ts | 2 +- .../src/ui/nested/legend.ts | 2 +- .../src/ui/nested/marker.ts | 2 +- .../devextreme-angular/src/ui/nested/popup.ts | 2 +- .../devextreme-angular/src/ui/nested/scale.ts | 2 +- .../src/ui/nested/slider-marker.ts | 2 +- .../src/ui/nested/summary.ts | 2 +- .../devextreme-angular/src/ui/nested/text.ts | 2 +- .../src/ui/nested/tooltip.ts | 2 +- .../src/ui/nested/total-item-dxi.ts | 2 +- .../src/ui/nested/value-axis-dxi.ts | 2 +- .../src/ui/nested/value-axis.ts | 2 +- .../src/ui/nested/vertical-line.ts | 2 +- .../src/ui/number-box/index.ts | 2 +- .../src/ui/pagination/index.ts | 2 +- .../src/ui/pie-chart/index.ts | 2 +- .../nested/common-series-settings.ts | 2 +- .../src/ui/pie-chart/nested/label.ts | 2 +- .../src/ui/pie-chart/nested/series-dxi.ts | 2 +- .../src/ui/pie-chart/nested/tooltip.ts | 2 +- .../src/ui/polar-chart/index.ts | 2 +- .../ui/polar-chart/nested/argument-axis.ts | 2 +- .../src/ui/polar-chart/nested/axis-label.ts | 2 +- .../nested/common-series-settings-label.ts | 2 +- .../nested/common-series-settings.ts | 2 +- .../src/ui/polar-chart/nested/label.ts | 2 +- .../src/ui/polar-chart/nested/series-dxi.ts | 2 +- .../src/ui/polar-chart/nested/tooltip.ts | 2 +- .../src/ui/polar-chart/nested/value-axis.ts | 2 +- .../src/ui/popover/index.ts | 5 +- .../src/ui/popover/nested/animation.ts | 2 +- .../src/ui/popover/nested/collision.ts | 2 +- .../src/ui/popover/nested/from.ts | 2 +- .../src/ui/popover/nested/hide.ts | 2 +- .../src/ui/popover/nested/position.ts | 2 +- .../src/ui/popover/nested/show.ts | 2 +- .../src/ui/popover/nested/to.ts | 2 +- .../src/ui/popup/component.ts | 6 +- .../src/ui/popup/nested/animation.ts | 2 +- .../src/ui/popup/nested/collision.ts | 2 +- .../src/ui/popup/nested/from.ts | 2 +- .../src/ui/popup/nested/hide.ts | 2 +- .../src/ui/popup/nested/position.ts | 2 +- .../src/ui/popup/nested/show.ts | 2 +- .../src/ui/popup/nested/to.ts | 2 +- .../src/ui/range-selector/index.ts | 2 +- .../nested/common-series-settings-label.ts | 2 +- .../nested/common-series-settings.ts | 2 +- .../src/ui/range-selector/nested/label.ts | 2 +- .../ui/range-selector/nested/marker-label.ts | 2 +- .../src/ui/range-selector/nested/marker.ts | 2 +- .../ui/range-selector/nested/scale-label.ts | 2 +- .../src/ui/range-selector/nested/scale.ts | 2 +- .../ui/range-selector/nested/series-dxi.ts | 2 +- .../ui/range-selector/nested/slider-marker.ts | 2 +- .../src/ui/range-slider/index.ts | 2 +- .../src/ui/range-slider/nested/label.ts | 2 +- .../src/ui/range-slider/nested/tooltip.ts | 2 +- .../devextreme-angular/src/ui/sankey/index.ts | 2 +- .../src/ui/sankey/nested/tooltip.ts | 2 +- .../src/ui/scheduler/index.ts | 2 +- .../scheduler/nested/appointment-dragging.ts | 2 +- .../src/ui/select-box/nested/animation.ts | 2 +- .../src/ui/select-box/nested/collision.ts | 2 +- .../ui/select-box/nested/drop-down-options.ts | 6 +- .../src/ui/select-box/nested/from.ts | 2 +- .../src/ui/select-box/nested/hide.ts | 2 +- .../src/ui/select-box/nested/position.ts | 2 +- .../src/ui/select-box/nested/show.ts | 2 +- .../src/ui/select-box/nested/to.ts | 2 +- .../devextreme-angular/src/ui/slider/index.ts | 2 +- .../src/ui/slider/nested/label.ts | 2 +- .../src/ui/slider/nested/tooltip.ts | 2 +- .../src/ui/sparkline/index.ts | 2 +- .../src/ui/sparkline/nested/tooltip.ts | 2 +- .../src/ui/tag-box/nested/animation.ts | 2 +- .../src/ui/tag-box/nested/collision.ts | 2 +- .../ui/tag-box/nested/drop-down-options.ts | 6 +- .../src/ui/tag-box/nested/from.ts | 2 +- .../src/ui/tag-box/nested/hide.ts | 2 +- .../src/ui/tag-box/nested/position.ts | 2 +- .../src/ui/tag-box/nested/show.ts | 2 +- .../src/ui/tag-box/nested/to.ts | 2 +- .../devextreme-angular/src/ui/toast/index.ts | 5 +- .../src/ui/toast/nested/animation.ts | 2 +- .../src/ui/toast/nested/collision.ts | 2 +- .../src/ui/toast/nested/from.ts | 2 +- .../src/ui/toast/nested/hide.ts | 2 +- .../src/ui/toast/nested/position.ts | 2 +- .../src/ui/toast/nested/show.ts | 2 +- .../src/ui/toast/nested/to.ts | 2 +- .../src/ui/tooltip/index.ts | 5 +- .../src/ui/tooltip/nested/animation.ts | 2 +- .../src/ui/tooltip/nested/collision.ts | 2 +- .../src/ui/tooltip/nested/from.ts | 2 +- .../src/ui/tooltip/nested/hide.ts | 2 +- .../src/ui/tooltip/nested/position.ts | 2 +- .../src/ui/tooltip/nested/show.ts | 2 +- .../src/ui/tooltip/nested/to.ts | 2 +- .../src/ui/tree-list/index.ts | 4 +- .../src/ui/tree-list/nested/animation.ts | 2 +- .../src/ui/tree-list/nested/button-dxi.ts | 2 +- .../src/ui/tree-list/nested/collision.ts | 2 +- .../src/ui/tree-list/nested/column-chooser.ts | 2 +- .../src/ui/tree-list/nested/column-dxi.ts | 2 +- .../src/ui/tree-list/nested/field-dxi.ts | 2 +- .../tree-list/nested/filter-builder-popup.ts | 6 +- .../src/ui/tree-list/nested/from.ts | 2 +- .../src/ui/tree-list/nested/hide.ts | 2 +- .../src/ui/tree-list/nested/popup.ts | 6 +- .../src/ui/tree-list/nested/position.ts | 2 +- .../src/ui/tree-list/nested/row-dragging.ts | 2 +- .../src/ui/tree-list/nested/show.ts | 2 +- .../src/ui/tree-list/nested/to.ts | 2 +- .../src/ui/tree-map/index.ts | 2 +- .../src/ui/tree-map/nested/tooltip.ts | 2 +- .../src/ui/validator/index.ts | 2 +- packages/devextreme-react/gulpfile.js | 8 +- packages/devextreme-react/src/accordion.ts | 2 +- packages/devextreme-react/src/action-sheet.ts | 5 +- packages/devextreme-react/src/autocomplete.ts | 9 +- packages/devextreme-react/src/bar-gauge.ts | 5 +- packages/devextreme-react/src/box.ts | 2 +- packages/devextreme-react/src/bullet.ts | 5 +- packages/devextreme-react/src/button-group.ts | 3 +- packages/devextreme-react/src/chart.ts | 5 +- .../devextreme-react/src/circular-gauge.ts | 5 +- packages/devextreme-react/src/color-box.ts | 9 +- .../src/common/core/animation.ts | 12 + .../src/common/core/environment.ts | 7 + .../src/common/core/events.ts | 14 + .../devextreme-react/src/common/core/index.ts | 4 + .../src/common/core/localization.ts | 10 + packages/devextreme-react/src/common/data.ts | 43 + .../src/common/export/excel.ts | 8 + .../src/common/export/index.ts | 2 + .../devextreme-react/src/common/export/pdf.ts | 9 + packages/devextreme-react/src/common/index.ts | 13 +- packages/devextreme-react/src/context-menu.ts | 6 +- packages/devextreme-react/src/data-grid.ts | 11 +- packages/devextreme-react/src/date-box.ts | 9 +- .../devextreme-react/src/date-range-box.ts | 9 +- .../devextreme-react/src/defer-rendering.ts | 3 +- packages/devextreme-react/src/diagram.ts | 3 +- .../devextreme-react/src/drop-down-box.ts | 9 +- .../devextreme-react/src/drop-down-button.ts | 9 +- .../devextreme-react/src/filter-builder.ts | 5 +- packages/devextreme-react/src/form.ts | 3 +- packages/devextreme-react/src/funnel.ts | 5 +- packages/devextreme-react/src/gallery.ts | 2 +- packages/devextreme-react/src/gantt.ts | 5 +- packages/devextreme-react/src/html-editor.ts | 3 +- packages/devextreme-react/src/index.ts | 2 + packages/devextreme-react/src/linear-gauge.ts | 5 +- packages/devextreme-react/src/list.ts | 3 +- packages/devextreme-react/src/load-panel.ts | 3 +- packages/devextreme-react/src/lookup.ts | 8 +- packages/devextreme-react/src/menu.ts | 6 +- packages/devextreme-react/src/multi-view.ts | 2 +- packages/devextreme-react/src/number-box.ts | 3 +- packages/devextreme-react/src/pie-chart.ts | 5 +- packages/devextreme-react/src/polar-chart.ts | 5 +- packages/devextreme-react/src/popover.ts | 6 +- packages/devextreme-react/src/popup.ts | 6 +- packages/devextreme-react/src/radio-group.ts | 2 +- .../devextreme-react/src/range-selector.ts | 2 +- packages/devextreme-react/src/range-slider.ts | 2 +- .../devextreme-react/src/responsive-box.ts | 2 +- packages/devextreme-react/src/sankey.ts | 5 +- packages/devextreme-react/src/scheduler.ts | 5 +- packages/devextreme-react/src/select-box.ts | 9 +- packages/devextreme-react/src/slider.ts | 2 +- packages/devextreme-react/src/sparkline.ts | 5 +- packages/devextreme-react/src/splitter.ts | 2 +- packages/devextreme-react/src/tab-panel.ts | 2 +- packages/devextreme-react/src/tabs.ts | 2 +- packages/devextreme-react/src/tag-box.ts | 9 +- packages/devextreme-react/src/text-box.ts | 3 +- packages/devextreme-react/src/tile-view.ts | 2 +- packages/devextreme-react/src/toast.ts | 3 +- packages/devextreme-react/src/toolbar.ts | 3 +- packages/devextreme-react/src/tooltip.ts | 3 +- packages/devextreme-react/src/tree-list.ts | 11 +- packages/devextreme-react/src/tree-map.ts | 5 +- packages/devextreme-react/src/tree-view.ts | 3 +- .../src/validation-summary.ts | 2 +- packages/devextreme-react/src/vector-map.ts | 3 +- packages/devextreme-vue/gulpfile.js | 8 +- packages/devextreme-vue/src/accordion.ts | 4 +- packages/devextreme-vue/src/action-sheet.ts | 6 +- packages/devextreme-vue/src/autocomplete.ts | 18 +- packages/devextreme-vue/src/bar-gauge.ts | 2 +- packages/devextreme-vue/src/box.ts | 4 +- packages/devextreme-vue/src/bullet.ts | 2 +- packages/devextreme-vue/src/chart.ts | 6 +- packages/devextreme-vue/src/chat.ts | 6 +- packages/devextreme-vue/src/circular-gauge.ts | 2 +- packages/devextreme-vue/src/color-box.ts | 14 +- .../src/common/core/animation.ts | 12 + .../src/common/core/environment.ts | 7 + .../devextreme-vue/src/common/core/events.ts | 14 + .../devextreme-vue/src/common/core/index.ts | 4 + .../src/common/core/localization.ts | 10 + packages/devextreme-vue/src/common/data.ts | 43 + .../devextreme-vue/src/common/export/excel.ts | 8 + .../devextreme-vue/src/common/export/index.ts | 2 + .../devextreme-vue/src/common/export/pdf.ts | 9 + packages/devextreme-vue/src/common/index.ts | 13 +- packages/devextreme-vue/src/context-menu.ts | 16 +- packages/devextreme-vue/src/data-grid.ts | 32 +- packages/devextreme-vue/src/date-box.ts | 16 +- packages/devextreme-vue/src/date-range-box.ts | 16 +- .../devextreme-vue/src/defer-rendering.ts | 10 +- packages/devextreme-vue/src/diagram.ts | 6 +- packages/devextreme-vue/src/drawer.ts | 2 +- packages/devextreme-vue/src/drop-down-box.ts | 18 +- .../devextreme-vue/src/drop-down-button.ts | 16 +- packages/devextreme-vue/src/filter-builder.ts | 6 +- packages/devextreme-vue/src/form.ts | 4 +- packages/devextreme-vue/src/funnel.ts | 6 +- packages/devextreme-vue/src/gallery.ts | 4 +- packages/devextreme-vue/src/gantt.ts | 16 +- packages/devextreme-vue/src/html-editor.ts | 6 +- packages/devextreme-vue/src/index.ts | 2 + packages/devextreme-vue/src/linear-gauge.ts | 2 +- packages/devextreme-vue/src/list.ts | 4 +- packages/devextreme-vue/src/load-panel.ts | 10 +- packages/devextreme-vue/src/lookup.ts | 14 +- packages/devextreme-vue/src/menu.ts | 12 +- packages/devextreme-vue/src/multi-view.ts | 4 +- packages/devextreme-vue/src/number-box.ts | 2 +- packages/devextreme-vue/src/pagination.ts | 2 +- packages/devextreme-vue/src/pie-chart.ts | 6 +- packages/devextreme-vue/src/polar-chart.ts | 6 +- packages/devextreme-vue/src/popover.ts | 12 +- packages/devextreme-vue/src/popup.ts | 14 +- packages/devextreme-vue/src/radio-group.ts | 4 +- packages/devextreme-vue/src/range-selector.ts | 6 +- packages/devextreme-vue/src/range-slider.ts | 2 +- packages/devextreme-vue/src/responsive-box.ts | 4 +- packages/devextreme-vue/src/sankey.ts | 6 +- packages/devextreme-vue/src/scheduler.ts | 8 +- packages/devextreme-vue/src/select-box.ts | 18 +- packages/devextreme-vue/src/slider.ts | 2 +- packages/devextreme-vue/src/sparkline.ts | 6 +- packages/devextreme-vue/src/splitter.ts | 4 +- packages/devextreme-vue/src/tab-panel.ts | 4 +- packages/devextreme-vue/src/tabs.ts | 4 +- packages/devextreme-vue/src/tag-box.ts | 18 +- packages/devextreme-vue/src/tile-view.ts | 4 +- packages/devextreme-vue/src/toast.ts | 10 +- packages/devextreme-vue/src/toolbar.ts | 4 +- packages/devextreme-vue/src/tooltip.ts | 10 +- packages/devextreme-vue/src/tree-list.ts | 36 +- packages/devextreme-vue/src/tree-map.ts | 6 +- packages/devextreme-vue/src/tree-view.ts | 4 +- packages/devextreme-vue/src/validator.ts | 2 +- packages/devextreme-vue/src/vector-map.ts | 2 +- packages/devextreme/.eslintignore | 4 +- packages/devextreme/.gitignore | 4 +- .../build/gulp/localization-template.jst | 4 +- .../devextreme/build/gulp/localization.js | 22 +- .../build/gulp/modules_metadata.json | 173 +- .../js/__internal/core/m_element_data.ts | 2 +- .../__internal/core/r1/component_wrapper.ts | 8 +- .../__internal/core/r1/utils/resolve_rtl.ts | 2 +- .../core/r1/utils/subscribe_to_event.ts | 10 +- .../js/__internal/core/r1/widget.tsx | 10 +- .../core/templates/m_bindable_template.ts | 4 +- .../core/templates/m_template_base.ts | 2 +- .../core/utils/m_date_serialization.ts | 4 +- .../core/utils/m_public_component.ts | 4 +- .../js/__internal/core/utils/m_support.ts | 3 +- .../__internal/core/widget/dom_component.ts | 2 +- .../js/__internal/core/widget/widget.ts | 12 +- .../data/data_source/m_data_source.ts | 31 +- .../data/data_source/m_operation_manager.ts | 2 +- .../js/__internal/data/data_source/m_utils.ts | 9 +- .../js/__internal/data/m_abstract_store.ts | 8 +- .../js/__internal/data/m_array_query.ts | 23 +- .../js/__internal/data/m_array_store.ts | 15 +- .../js/__internal/data/m_array_utils.ts | 12 +- .../js/__internal/data/m_custom_store.ts | 23 +- .../js/__internal/data/m_local_store.ts | 8 +- .../devextreme/js/__internal/data/m_query.ts | 2 +- .../js/__internal/data/m_remote_query.ts | 7 +- .../js/__internal/data/m_store_helper.ts | 5 +- .../js/__internal/data/odata/m_context.ts | 6 +- .../__internal/data/odata/m_query_adapter.ts | 2 +- .../data/odata/m_request_dispatcher.ts | 5 +- .../js/__internal/data/odata/m_store.ts | 11 +- .../js/__internal/data/odata/m_utils.ts | 8 +- .../js/__internal/data_controller.ts | 6 +- .../events/core/m_emitter.feedback.ts | 8 +- .../js/__internal/events/core/m_emitter.ts | 2 +- .../events/core/m_emitter_registrator.ts | 10 +- .../events/core/m_event_registrator.ts | 2 +- .../__internal/events/core/m_events_engine.ts | 6 +- .../events/core/m_keyboard_processor.ts | 4 +- .../js/__internal/events/core/m_wheel.ts | 6 +- .../gesture/m_emitter.gesture.scroll.ts | 12 +- .../events/gesture/m_emitter.gesture.ts | 10 +- .../__internal/events/gesture/m_swipeable.ts | 14 +- .../js/__internal/events/m_click.ts | 14 +- .../js/__internal/events/m_contextmenu.ts | 8 +- .../js/__internal/events/m_dblclick.ts | 6 +- .../devextreme/js/__internal/events/m_drag.ts | 8 +- .../devextreme/js/__internal/events/m_hold.ts | 6 +- .../js/__internal/events/m_hover.ts | 8 +- .../js/__internal/events/m_pointer.ts | 8 +- .../js/__internal/events/m_remove.ts | 4 +- .../js/__internal/events/m_short.ts | 6 +- .../js/__internal/events/m_swipe.ts | 6 +- .../js/__internal/events/m_transform.ts | 6 +- .../__internal/events/m_visibility_change.ts | 2 +- .../js/__internal/events/pointer/m_base.ts | 6 +- .../js/__internal/events/pointer/m_mouse.ts | 4 +- .../events/pointer/m_mouse_and_touch.ts | 8 +- .../js/__internal/events/pointer/m_touch.ts | 2 +- .../js/__internal/events/utils/index.ts | 2 +- .../events/utils/m_event_nodes_disposing.ts | 4 +- .../filter_builder/m_filter_builder.ts | 6 +- .../js/__internal/filter_builder/m_utils.ts | 9 +- .../grids/data_grid/export/m_export.ts | 2 +- .../grids/data_grid/grouping/m_grouping.ts | 2 +- .../grouping/m_grouping_collapsed.ts | 3 +- .../data_grid/grouping/m_grouping_core.ts | 3 +- .../data_grid/grouping/m_grouping_expanded.ts | 8 +- .../grids/data_grid/m_aggregate_calculator.ts | 6 +- .../js/__internal/grids/data_grid/m_utils.ts | 3 +- .../grids/data_grid/summary/m_summary.ts | 11 +- .../grid_core/adaptivity/m_adaptivity.ts | 10 +- .../column_chooser/m_column_chooser.ts | 2 +- .../column_fixing/m_column_fixing.ts | 8 +- .../column_headers/m_column_headers.ts | 4 +- .../m_columns_controller.ts | 8 +- .../m_columns_controller_utils.ts | 2 +- .../m_columns_resizing_reordering.ts | 18 +- .../data_controller/m_data_controller.ts | 4 +- .../data_controller/m_data_helper_mixin.ts | 4 +- .../m_data_source_adapter.ts | 5 +- .../grids/grid_core/editing/m_editing.ts | 14 +- .../grid_core/editing/m_editing_cell_based.ts | 12 +- .../grid_core/editing/m_editing_form_based.ts | 4 +- .../editor_factory/m_editor_factory.ts | 12 +- .../error_handling/m_error_handling.ts | 6 +- .../grid_core/filter/m_filter_builder.ts | 2 +- .../filter/m_filter_custom_operations.ts | 4 +- .../grids/grid_core/filter/m_filter_panel.ts | 4 +- .../grids/grid_core/filter/m_filter_row.ts | 6 +- .../header_filter/m_header_filter.ts | 15 +- .../header_filter/m_header_filter_core.ts | 2 +- .../grid_core/header_panel/m_header_panel.ts | 2 +- .../m_keyboard_navigation.ts | 18 +- .../__internal/grids/grid_core/m_modules.ts | 2 +- .../js/__internal/grids/grid_core/m_utils.ts | 9 +- .../master_detail/m_master_detail.ts | 2 +- .../grids/grid_core/pager/m_pager.ts | 2 +- .../grids/grid_core/search/m_search.ts | 4 +- .../grids/grid_core/selection/m_selection.ts | 12 +- .../grids/grid_core/sorting/m_sorting.ts | 8 +- .../grid_core/sorting/m_sorting_mixin.ts | 2 +- .../state_storing/m_state_storing_core.ts | 2 +- .../grid_core/validating/m_validating.ts | 8 +- .../grids/grid_core/views/m_columns_view.ts | 10 +- .../grids/grid_core/views/m_grid_view.ts | 2 +- .../grids/grid_core/views/m_rows_view.ts | 6 +- .../m_virtual_scrolling_core.ts | 5 +- .../pivot_grid/data_source/m_data_source.ts | 2 +- .../grids/pivot_grid/export/m_export.ts | 2 +- .../field_chooser/m_field_chooser.ts | 2 +- .../field_chooser/m_field_chooser_base.ts | 8 +- .../pivot_grid/local_store/m_local_store.ts | 14 +- .../__internal/grids/pivot_grid/m_widget.ts | 8 +- .../grids/pivot_grid/m_widget_utils.ts | 6 +- .../pivot_grid/remote_store/m_remote_store.ts | 4 +- .../grids/pivot_grid/sortable/m_sortable.ts | 20 +- .../pivot_grid/xmla_store/m_xmla_store.ts | 9 +- .../m_data_source_adapter.ts | 10 +- .../grids/tree_list/editing/m_editing.ts | 2 +- .../__internal/grids/tree_list/rows/m_rows.ts | 4 +- .../devextreme/js/__internal/m_draggable.ts | 24 +- .../devextreme/js/__internal/m_sortable.ts | 6 +- .../common/base_pagination_props.ts | 2 +- .../drop_down_editors/select_box.tsx | 3 +- .../pagination/utils/compatibility_utils.ts | 2 +- .../scheduler/appointment_popup/m_form.ts | 4 +- .../scheduler/appointment_popup/m_popup.ts | 4 +- .../data_provider/m_appointment_filter.ts | 8 +- .../scheduler/appointments/m_appointment.ts | 12 +- .../appointments/m_appointment_collection.ts | 8 +- .../appointments/m_appointment_layout.ts | 2 +- .../scheduler/appointments/m_text_utils.ts | 2 +- .../m_strategy_horizontal_month_line.ts | 3 +- .../scheduler/header/m_date_navigator.ts | 2 +- .../js/__internal/scheduler/header/m_utils.ts | 4 +- .../m_compact_appointments_helper.ts | 6 +- .../scheduler/m_recurrence_editor.ts | 4 +- .../js/__internal/scheduler/m_scheduler.ts | 8 +- .../scheduler/r1/appointment_popup/config.ts | 4 +- .../components/base/all_day_panel_title.tsx | 2 +- .../js/__internal/scheduler/r1/utils/base.ts | 2 +- .../scheduler/r1/utils/format_weekday.ts | 2 +- .../js/__internal/scheduler/r1/utils/month.ts | 2 +- .../js/__internal/scheduler/r1/utils/week.ts | 2 +- .../__internal/scheduler/resources/m_utils.ts | 4 +- .../m_desktop_tooltip_strategy.ts | 2 +- .../scheduler/workspaces/m_agenda.ts | 2 +- .../workspaces/m_virtual_scrolling.ts | 4 +- .../scheduler/workspaces/m_work_space.ts | 24 +- .../view_model/m_view_data_generator_month.ts | 2 +- .../js/__internal/ui/button/button.tsx | 4 +- .../ui/calendar/m_calendar.base_view.ts | 12 +- .../js/__internal/ui/calendar/m_calendar.ts | 16 +- .../ui/calendar/m_calendar.views.ts | 2 +- .../js/__internal/ui/chat/alertlist.ts | 2 +- .../js/__internal/ui/chat/avatar.ts | 2 +- .../devextreme/js/__internal/ui/chat/chat.ts | 8 +- .../js/__internal/ui/chat/messagebox.ts | 4 +- .../js/__internal/ui/chat/messagegroup.ts | 6 +- .../js/__internal/ui/chat/messagelist.ts | 8 +- .../js/__internal/ui/chat/typingindicator.ts | 2 +- .../js/__internal/ui/collection/base.ts | 2 +- .../ui/collection/m_collection_widget.base.ts | 16 +- .../ui/collection/m_collection_widget.edit.ts | 6 +- .../m_collection_widget.live_update.ts | 5 +- .../__internal/ui/color_box/m_color_view.ts | 10 +- .../ui/context_menu/m_context_menu.ts | 16 +- .../__internal/ui/date_box/m_date_box.base.ts | 4 +- .../ui/date_box/m_date_box.mask.parts.ts | 2 +- .../__internal/ui/date_box/m_date_box.mask.ts | 14 +- .../date_box/m_date_box.strategy.calendar.ts | 2 +- .../m_date_box.strategy.calendar_with_time.ts | 2 +- .../date_box/m_date_box.strategy.date_view.ts | 2 +- .../ui/date_box/m_date_box.strategy.list.ts | 2 +- .../ui/date_box/m_date_box.strategy.ts | 4 +- .../js/__internal/ui/date_box/m_date_utils.ts | 2 +- .../js/__internal/ui/date_box/m_date_view.ts | 2 +- .../ui/date_box/m_date_view_roller.ts | 10 +- .../js/__internal/ui/date_box/m_time_view.ts | 2 +- .../ui/date_range_box/m_date_range_box.ts | 6 +- .../date_range_box/m_multiselect_date_box.ts | 4 +- .../strategy/m_rangeCalendar.ts | 2 +- .../ui/drawer/m_drawer.animation.ts | 2 +- .../m_drawer.rendering.strategy.overlap.ts | 2 +- .../m_drawer.rendering.strategy.push.ts | 2 +- .../js/__internal/ui/drawer/m_drawer.ts | 8 +- .../ui/drop_down_editor/m_drop_down_button.ts | 4 +- .../ui/drop_down_editor/m_drop_down_editor.ts | 14 +- .../ui/drop_down_editor/m_drop_down_list.ts | 8 +- .../__internal/ui/editor/m_data_expression.ts | 6 +- .../js/__internal/ui/editor/m_editor.ts | 4 +- .../ui/form/components/m_field_item.ts | 4 +- .../ui/form/m_form.layout_manager.ts | 6 +- .../js/__internal/ui/form/m_form.ts | 6 +- .../hierarchical_collection/m_data_adapter.ts | 6 +- .../ui/html_editor/m_html_editor.ts | 12 +- .../ui/html_editor/modules/m_dropImage.ts | 4 +- .../ui/html_editor/modules/m_imageCursor.ts | 4 +- .../ui/html_editor/modules/m_imageUpload.ts | 4 +- .../ui/html_editor/modules/m_mentions.ts | 2 +- .../ui/html_editor/modules/m_popup.ts | 4 +- .../ui/html_editor/modules/m_resizing.ts | 8 +- .../html_editor/modules/m_tableContextMenu.ts | 6 +- .../ui/html_editor/modules/m_tableResizing.ts | 6 +- .../ui/html_editor/modules/m_toolbar.ts | 6 +- .../ui/html_editor/ui/m_formDialog.ts | 2 +- .../utils/m_image_uploader_helper.ts | 2 +- .../ui/html_editor/utils/m_toolbar_helper.ts | 2 +- .../js/__internal/ui/list/m_list.base.ts | 12 +- .../ui/list/m_list.edit.decorator.context.ts | 2 +- .../ui/list/m_list.edit.decorator.reorder.ts | 4 +- .../list/m_list.edit.decorator.selection.ts | 8 +- .../ui/list/m_list.edit.decorator.swipe.ts | 4 +- ...m_list.edit.decorator.switchable.button.ts | 4 +- .../m_list.edit.decorator.switchable.slide.ts | 14 +- .../list/m_list.edit.decorator.switchable.ts | 8 +- .../ui/list/m_list.edit.decorator.ts | 14 +- .../ui/list/m_list.edit.strategy.grouped.ts | 4 +- .../js/__internal/ui/list/m_list.edit.ts | 4 +- .../js/__internal/ui/m_accordion.ts | 8 +- .../js/__internal/ui/m_action_sheet.ts | 2 +- .../js/__internal/ui/m_autocomplete.ts | 2 +- .../js/__internal/ui/m_defer_rendering.ts | 6 +- .../devextreme/js/__internal/ui/m_dialog.ts | 4 +- .../js/__internal/ui/m_drop_down_box.ts | 4 +- .../js/__internal/ui/m_drop_down_button.ts | 2 +- .../js/__internal/ui/m_file_uploader.ts | 8 +- .../devextreme/js/__internal/ui/m_gallery.ts | 16 +- .../js/__internal/ui/m_load_indicator.ts | 2 +- .../js/__internal/ui/m_load_panel.ts | 2 +- .../devextreme/js/__internal/ui/m_lookup.ts | 6 +- .../js/__internal/ui/m_multi_view.ts | 8 +- .../js/__internal/ui/m_range_slider.ts | 6 +- .../js/__internal/ui/m_select_box.ts | 4 +- .../devextreme/js/__internal/ui/m_switch.ts | 14 +- .../devextreme/js/__internal/ui/m_tag_box.ts | 10 +- .../js/__internal/ui/m_text_area.ts | 8 +- .../js/__internal/ui/m_track_bar.ts | 2 +- .../js/__internal/ui/m_validation_engine.ts | 4 +- .../js/__internal/ui/m_validation_summary.ts | 2 +- .../devextreme/js/__internal/ui/map/m_map.ts | 6 +- .../ui/map/m_provider.google_static.ts | 4 +- .../js/__internal/ui/map/m_provider.ts | 2 +- .../js/__internal/ui/menu/m_menu.ts | 10 +- .../js/__internal/ui/menu/m_submenu.ts | 5 +- .../ui/multi_view/m_multi_view.animation.ts | 4 +- .../ui/number_box/m_number_box.base.ts | 10 +- .../ui/number_box/m_number_box.caret.ts | 2 +- .../ui/number_box/m_number_box.mask.ts | 14 +- .../ui/number_box/m_number_box.spin.ts | 10 +- .../ui/number_box/m_number_box.spins.ts | 6 +- .../js/__internal/ui/overlay/m_overlay.ts | 20 +- .../overlay/m_overlay_position_controller.ts | 6 +- .../js/__internal/ui/popover/m_popover.ts | 16 +- .../popover/m_popover_position_controller.ts | 6 +- .../js/__internal/ui/popup/m_popup.ts | 4 +- .../js/__internal/ui/popup/m_popup_drag.ts | 16 +- .../ui/popup/m_popup_position_controller.ts | 2 +- .../ui/radio_group/m_radio_button.ts | 6 +- .../js/__internal/ui/resizable/m_resizable.ts | 10 +- .../__internal/ui/scroll_view/m_animator.ts | 2 +- .../m_scroll_view.native.pull_down.ts | 2 +- .../m_scroll_view.native.swipe_down.ts | 4 +- .../ui/scroll_view/m_scroll_view.ts | 2 +- .../ui/scroll_view/m_scrollable.native.ts | 4 +- .../ui/scroll_view/m_scrollable.simulated.ts | 16 +- .../__internal/ui/scroll_view/m_scrollable.ts | 6 +- .../__internal/ui/scroll_view/m_scrollbar.ts | 8 +- .../m_selection.strategy.deferred.ts | 3 +- .../m_selection.strategy.standard.ts | 3 +- .../ui/selection/m_selection.strategy.ts | 4 +- .../js/__internal/ui/slider/m_slider.ts | 18 +- .../__internal/ui/slider/m_slider_tooltip.ts | 2 +- .../m_slider_tooltip_position_controller.ts | 5 +- .../ui/speed_dial_action/m_speed_dial_item.ts | 6 +- .../m_speed_dial_main_item.ts | 2 +- .../__internal/ui/splitter/resize_handle.ts | 12 +- .../js/__internal/ui/splitter/splitter.ts | 2 +- .../js/__internal/ui/splitter/utils/layout.ts | 2 +- .../ui/splitter/utils/layout_default.ts | 2 +- .../ui/splitter/utils/number_comparison.ts | 2 +- .../js/__internal/ui/tabs/m_tabs.ts | 8 +- .../js/__internal/ui/text_box/m_text_box.ts | 2 +- .../ui/text_box/m_text_editor.base.ts | 6 +- .../ui/text_box/m_text_editor.clear.ts | 8 +- .../ui/text_box/m_text_editor.label.ts | 10 +- .../text_box/m_text_editor.mask.strategy.ts | 4 +- .../ui/text_box/m_text_editor.mask.ts | 12 +- .../__internal/ui/text_box/m_utils.scroll.ts | 2 +- .../texteditor_button_collection/m_custom.ts | 6 +- .../js/__internal/ui/toast/m_toast.ts | 4 +- .../__internal/ui/toolbar/m_toolbar.base.ts | 2 +- .../ui/tree_view/m_tree_view.base.ts | 14 +- .../viz/chart_components/m_base_chart.ts | 4 +- .../js/__internal/viz/core/m_base_widget.ts | 2 +- packages/devextreme/js/animation/frame.d.ts | 19 +- packages/devextreme/js/animation/frame.js | 1 + packages/devextreme/js/animation/fx.d.ts | 152 +- packages/devextreme/js/animation/fx.js | 3 + .../devextreme/js/animation/position.d.ts | 117 +- packages/devextreme/js/animation/presets.d.ts | 58 +- packages/devextreme/js/animation/presets.js | 3 + .../js/animation/transition_executor.d.ts | 53 +- .../js/animation/transition_executor.js | 3 + .../devextreme/js/bundles/modules/core.js | 38 +- .../js/bundles/modules/core.legacy.js | 27 + .../devextreme/js/bundles/modules/data.js | 38 +- .../js/bundles/modules/data.legacy.js | 14 + .../js/bundles/modules/data.odata.js | 12 +- .../js/bundles/modules/data.odata.legacy.js | 6 + .../js/bundles/modules/parts/core.js | 29 +- .../js/bundles/modules/parts/data.js | 2 + packages/devextreme/js/common.d.ts | 96 +- packages/devextreme/js/common.js | 9 + .../devextreme/js/common/core/animation.d.ts | 368 + .../devextreme/js/common/core/animation.js | 12 + .../js/common/core/animation/easing.js | 2 +- .../js/common/core/animation/frame.js | 4 +- .../devextreme/js/common/core/animation/fx.js | 20 +- .../js/common/core/animation/position.js | 26 +- .../common/core/animation/presets/presets.js | 10 +- .../core/animation/transition_executor.js | 1 + .../transition_executor.js | 14 +- .../js/common/core/animation/translator.js | 6 +- .../js/common/core/environment.d.ts | 101 + .../devextreme/js/common/core/environment.js | 11 + .../js/common/core/environment/devices.js | 2 +- .../core/environment/init_mobile_viewport.js | 1 + .../init_mobile_viewport.js | 18 +- .../core/environment/time_zone_utils.js | 2 +- .../devextreme/js/common/core/events.d.ts | 255 + .../core/{events/index.js => events.js} | 3 +- .../devextreme/js/common/core/events/click.js | 2 +- .../js/common/core/events/contextmenu.js | 2 +- .../core/events/core/emitter.feedback.js | 2 +- .../js/common/core/events/core/emitter.js | 2 +- .../core/events/core/emitter_registrator.js | 2 +- .../core/events/core/event_registrator.js | 2 +- .../core/event_registrator_callbacks.js | 2 +- .../core/events/core/events_engine.d.ts | 2 +- .../common/core/events/core/events_engine.js | 2 +- .../core/events/core/hook_touch_props.js | 2 +- .../core/events/core/keyboard_processor.js | 2 +- .../js/common/core/events/core/wheel.js | 2 +- .../js/common/core/events/double_click.js | 2 +- .../devextreme/js/common/core/events/drag.js | 2 +- .../core/events/gesture/emitter.gesture.js | 2 +- .../events/gesture/emitter.gesture.scroll.js | 2 +- .../common/core/events/gesture/swipeable.js | 2 +- .../devextreme/js/common/core/events/hold.js | 2 +- .../devextreme/js/common/core/events/hover.js | 2 +- .../js/common/core/events/index.d.ts | 354 - .../js/common/core/events/pointer.js | 2 +- .../js/common/core/events/pointer/base.js | 2 +- .../js/common/core/events/pointer/mouse.js | 2 +- .../core/events/pointer/mouse_and_touch.js | 2 +- .../js/common/core/events/pointer/observer.js | 2 +- .../js/common/core/events/pointer/touch.js | 2 +- .../js/common/core/events/remove.js | 2 +- .../devextreme/js/common/core/events/short.js | 2 +- .../devextreme/js/common/core/events/swipe.js | 2 +- .../js/common/core/events/transform.js | 2 +- .../common/core/events/utils/add_namespace.js | 2 +- .../events/utils/event_nodes_disposing.js | 2 +- .../common/core/events/utils/event_target.js | 2 +- .../js/common/core/events/utils/index.js | 2 +- .../common/core/events/visibility_change.js | 2 +- .../js/common/core/localization.d.ts | 135 + .../js/common/core/localization/core.js | 2 +- .../js/common/core/localization/currency.js | 2 +- .../js/common/core/localization/date.js | 8 +- .../core/localization/default_date_names.js | 2 +- .../core/localization/globalize/currency.js | 2 +- .../core/localization/globalize/date.js | 4 +- .../core/localization/globalize/number.js | 2 +- .../js/common/core/localization/intl/date.js | 2 +- .../common/core/localization/intl/number.js | 2 +- .../core/localization/ldml/date.parser.js | 4 +- .../common/core/localization/ldml/number.js | 2 +- .../js/common/core/localization/message.js | 8 +- .../js/common/core/localization/number.js | 12 +- .../js/common/core/localization/utils.js | 2 +- packages/devextreme/js/common/data.d.ts | 1340 +++ packages/devextreme/js/common/data.js | 36 + packages/devextreme/js/common/data.types.d.ts | 153 + .../js/common/data/abstract_store.js | 2 +- .../devextreme/js/common/data/array_query.js | 2 +- .../devextreme/js/common/data/array_store.js | 2 +- .../devextreme/js/common/data/array_utils.js | 2 +- .../js/common/data/custom-store.d.ts | 77 +- .../devextreme/js/common/data/custom-store.js | 23 +- .../devextreme/js/common/data/custom_store.js | 28 +- .../devextreme/js/common/data/data_helper.js | 166 + .../devextreme/js/common/data/data_source.js | 1 - .../js/common/data/data_source/data_source.js | 2 +- .../data/data_source/operation_manager.js | 2 +- .../js/common/data/data_source/utils.js | 2 +- .../js/common/data/endpoint_selector.js | 2 +- packages/devextreme/js/common/data/errors.js | 2 +- .../devextreme/js/common/data/local_store.js | 2 +- .../js/common/data/odata/context.js | 2 +- .../js/common/data/odata/query_adapter.js | 2 +- .../common/data/odata/request_dispatcher.js | 2 +- .../devextreme/js/common/data/odata/store.js | 2 +- .../devextreme/js/common/data/odata/utils.js | 2 +- packages/devextreme/js/common/data/query.js | 2 +- .../devextreme/js/common/data/remote_query.js | 2 +- .../devextreme/js/common/data/store_helper.js | 2 +- packages/devextreme/js/common/data/utils.js | 9 +- packages/devextreme/js/common/export.d.ts | 52 - .../devextreme/js/common/export/excel.d.ts | 208 +- packages/devextreme/js/common/export/excel.js | 4 +- packages/devextreme/js/common/export/pdf.d.ts | 459 +- packages/devextreme/js/common/export/pdf.js | 6 +- packages/devextreme/js/common/grids.d.ts | 27 +- .../js/common/set_template_engine.js | 1 + packages/devextreme/js/core/config.d.ts | 29 +- packages/devextreme/js/core/config.js | 3 + packages/devextreme/js/core/devices.d.ts | 200 +- packages/devextreme/js/core/devices.js | 3 + .../devextreme/js/core/dom_component.d.ts | 2 +- packages/devextreme/js/core/guid.d.ts | 24 +- packages/devextreme/js/core/guid.js | 3 + packages/devextreme/js/core/options.d.ts | 19 +- .../devextreme/js/core/options/utils.d.ts | 2 +- .../js/core/set_template_engine.d.ts | 8 +- .../devextreme/js/core/set_template_engine.js | 1 + .../js/core/templates/template.d.ts | 13 +- .../devextreme/js/core/utils/deferred.d.ts | 3 +- .../js/{common => }/data/abstract_store.d.ts | 30 +- packages/devextreme/js/data/abstract_store.js | 1 + .../devextreme/js/data/apply_changes.d.ts | 9 +- packages/devextreme/js/data/apply_changes.js | 3 + packages/devextreme/js/data/array_store.d.ts | 64 +- packages/devextreme/js/data/array_store.js | 3 + packages/devextreme/js/data/custom_store.d.ts | 154 +- packages/devextreme/js/data/custom_store.js | 3 + packages/devextreme/js/data/data.types.d.ts | 9 + packages/devextreme/js/data/data_source.d.ts | 437 +- packages/devextreme/js/data/data_source.js | 3 + .../devextreme/js/data/endpoint_selector.d.ts | 17 +- .../devextreme/js/data/endpoint_selector.js | 3 + packages/devextreme/js/data/errors.d.ts | 20 +- packages/devextreme/js/data/errors.js | 2 + packages/devextreme/js/data/index.d.ts | 226 +- packages/devextreme/js/data/load_options.d.ts | 4 +- packages/devextreme/js/data/local_store.d.ts | 68 +- packages/devextreme/js/data/local_store.js | 3 + .../devextreme/js/data/odata/context.d.ts | 119 +- packages/devextreme/js/data/odata/context.js | 3 + packages/devextreme/js/data/odata/store.d.ts | 114 +- packages/devextreme/js/data/odata/store.js | 3 + packages/devextreme/js/data/odata/utils.d.ts | 27 +- packages/devextreme/js/data/odata/utils.js | 1 + packages/devextreme/js/data/query.d.ts | 188 +- packages/devextreme/js/data/query.js | 3 + packages/devextreme/js/data/store.d.ts | 33 +- packages/devextreme/js/data/utils.d.ts | 10 +- packages/devextreme/js/data/utils.js | 1 + packages/devextreme/js/data_helper.d.ts | 16 +- packages/devextreme/js/data_helper.js | 165 +- .../devextreme/js/events/events.types.d.ts | 114 + packages/devextreme/js/events/events.types.js | 3 + packages/devextreme/js/events/index.d.ts | 23 + packages/devextreme/js/events/index.js | 10 + packages/devextreme/js/excel_exporter.d.ts | 16 + packages/devextreme/js/excel_exporter.js | 1 + .../devextreme/js/excel_exporter.types.d.ts | 156 + .../js/exporter/common/export_load_panel.js | 2 +- .../js/exporter/exceljs/export_format.js | 10 +- .../js/exporter/export_load_panel.d.ts | 52 + .../js/exporter/jspdf/autotable/export.js | 6 +- .../js/exporter/jspdf/common/export.js | 2 +- .../exporter/jspdf/common/rows_generator.js | 4 +- .../file_management/custom_provider.js | 0 .../js/{common => }/file_management/error.js | 0 .../file_management/error_codes.js | 0 .../file_management/file_system_item.js | 0 .../file_management/object_provider.js | 4 +- .../file_management/provider_base.js | 0 .../file_management/remote_provider.js | 4 +- .../js/{common => }/file_management/utils.js | 0 packages/devextreme/js/format_helper.d.ts | 2 +- packages/devextreme/js/format_helper.js | 6 +- .../devextreme/js/integration/jquery.d.ts | 2 +- .../js/integration/jquery/easing.js | 2 +- .../js/integration/jquery/events.js | 4 +- .../devextreme/js/integration/jquery/hooks.js | 6 +- .../integration/knockout/event_registrator.js | 6 +- packages/devextreme/js/localization.d.ts | 142 +- packages/devextreme/js/localization.js | 9 + .../js/localization/globalize/core.js | 1 + .../js/localization/globalize/currency.js | 1 + .../js/localization/globalize/date.js | 1 + .../js/localization/globalize/message.js | 1 + .../js/localization/globalize/number.js | 1 + .../js/mobile/hide_top_overlay.d.ts | 10 +- .../devextreme/js/mobile/hide_top_overlay.js | 3 + .../js/mobile/init_mobile_viewport.d.ts | 10 +- .../js/mobile/init_mobile_viewport.js | 3 + packages/devextreme/js/pdf_exporter.d.ts | 22 + packages/devextreme/js/pdf_exporter.js | 8 + .../devextreme/js/pdf_exporter.types.d.ts | 9 + packages/devextreme/js/time_zone_utils.d.ts | 32 +- packages/devextreme/js/time_zone_utils.js | 1 + packages/devextreme/js/ui/accordion.d.ts | 4 +- packages/devextreme/js/ui/action_sheet.d.ts | 2 +- packages/devextreme/js/ui/autocomplete.d.ts | 2 +- packages/devextreme/js/ui/box.d.ts | 2 +- packages/devextreme/js/ui/button.d.ts | 11 +- packages/devextreme/js/ui/button_group.d.ts | 13 +- packages/devextreme/js/ui/calendar.d.ts | 9 +- packages/devextreme/js/ui/chat.d.ts | 6 +- packages/devextreme/js/ui/check_box.d.ts | 2 +- .../collection/ui.collection_widget.base.d.ts | 4 +- packages/devextreme/js/ui/color_box.d.ts | 9 +- packages/devextreme/js/ui/context_menu.d.ts | 7 +- .../js/ui/context_menu/ui.menu_base.d.ts | 2 +- packages/devextreme/js/ui/data_grid.d.ts | 22 +- packages/devextreme/js/ui/date_box.d.ts | 2 +- packages/devextreme/js/ui/date_range_box.d.ts | 2 +- .../devextreme/js/ui/defer_rendering.d.ts | 4 +- packages/devextreme/js/ui/diagram.d.ts | 13 +- .../js/ui/diagram/diagram.commands_manager.js | 2 +- .../js/ui/diagram/diagram.items_option.js | 2 +- .../js/ui/diagram/diagram.toolbox_manager.js | 2 +- .../ui/diagram/ui.diagram.dialog_manager.js | 2 +- .../js/ui/diagram/ui.diagram.dialogs.js | 2 +- .../devextreme/js/ui/diagram/ui.diagram.js | 10 +- .../js/ui/diagram/ui.diagram.panel.js | 6 +- .../js/ui/diagram/ui.diagram.toolbox.js | 2 +- packages/devextreme/js/ui/draggable.d.ts | 9 +- packages/devextreme/js/ui/drawer.d.ts | 7 +- packages/devextreme/js/ui/drop_down_box.d.ts | 4 +- .../devextreme/js/ui/drop_down_button.d.ts | 7 +- .../drop_down_editor/ui.drop_down_editor.d.ts | 15 +- .../drop_down_editor/ui.drop_down_list.d.ts | 11 +- packages/devextreme/js/ui/editor/editor.d.ts | 2 +- .../js/ui/editor/ui.data_expression.d.ts | 2 +- packages/devextreme/js/ui/file_manager.d.ts | 5 +- .../ui.file_manager.command_manager.js | 2 +- .../ui.file_manager.dialog.delete_item.js | 2 +- .../ui.file_manager.dialog.folder_chooser.js | 2 +- .../ui/file_manager/ui.file_manager.dialog.js | 2 +- .../ui.file_manager.dialog_manager.js | 2 +- .../file_manager/ui.file_manager.editing.js | 2 +- .../ui.file_manager.item_list.details.js | 2 +- .../file_manager/ui.file_manager.item_list.js | 8 +- .../ui.file_manager.item_list.thumbnails.js | 8 +- ..._manager.items_list.thumbnails.list_box.js | 6 +- .../js/ui/file_manager/ui.file_manager.js | 2 +- .../file_manager/ui.file_manager.messages.js | 2 +- ...ile_manager.notification.progress_panel.js | 2 +- .../file_manager/ui.file_manager.toolbar.js | 2 +- packages/devextreme/js/ui/file_uploader.d.ts | 2 +- packages/devextreme/js/ui/filter_builder.d.ts | 9 +- packages/devextreme/js/ui/form.d.ts | 31 +- packages/devextreme/js/ui/gallery.d.ts | 2 +- packages/devextreme/js/ui/gantt.d.ts | 16 +- .../devextreme/js/ui/gantt/ui.gantt.bars.js | 2 +- .../js/ui/gantt/ui.gantt.data.option.js | 2 +- .../js/ui/gantt/ui.gantt.dialogs.js | 4 +- .../js/ui/gantt/ui.gantt.export_helper.js | 4 +- .../devextreme/js/ui/gantt/ui.gantt.helper.js | 2 +- .../js/ui/gantt/ui.gantt.treelist.js | 4 +- .../devextreme/js/ui/gantt/ui.gantt.view.js | 8 +- packages/devextreme/js/ui/html_editor.d.ts | 11 +- packages/devextreme/js/ui/list.d.ts | 15 +- packages/devextreme/js/ui/load_indicator.d.ts | 2 +- packages/devextreme/js/ui/load_panel.d.ts | 7 +- packages/devextreme/js/ui/lookup.d.ts | 11 +- packages/devextreme/js/ui/map.d.ts | 2 +- packages/devextreme/js/ui/menu.d.ts | 2 +- packages/devextreme/js/ui/multi_view.d.ts | 2 +- packages/devextreme/js/ui/number_box.d.ts | 2 +- packages/devextreme/js/ui/overlay.d.ts | 9 +- packages/devextreme/js/ui/pagination.d.ts | 48 +- packages/devextreme/js/ui/pivot_grid.d.ts | 2 +- .../js/ui/pivot_grid/data_source.d.ts | 5 +- .../js/ui/pivot_grid_field_chooser.d.ts | 5 +- packages/devextreme/js/ui/popover.d.ts | 10 +- packages/devextreme/js/ui/popup.d.ts | 18 +- packages/devextreme/js/ui/progress_bar.d.ts | 2 +- packages/devextreme/js/ui/radio_group.d.ts | 4 +- packages/devextreme/js/ui/range_slider.d.ts | 2 +- .../devextreme/js/ui/recurrence_editor.d.ts | 2 +- packages/devextreme/js/ui/resizable.d.ts | 2 +- packages/devextreme/js/ui/responsive_box.d.ts | 2 +- packages/devextreme/js/ui/scheduler.d.ts | 16 +- packages/devextreme/js/ui/scroll_view.d.ts | 2 +- .../js/ui/scroll_view/ui.scrollable.d.ts | 2 +- packages/devextreme/js/ui/select_box.d.ts | 4 +- .../devextreme/js/ui/shared/accessibility.js | 4 +- .../js/ui/shared/ui.editor_factory_mixin.js | 6 +- packages/devextreme/js/ui/slider.d.ts | 2 +- packages/devextreme/js/ui/sortable.d.ts | 14 +- .../devextreme/js/ui/speed_dial_action.d.ts | 2 +- packages/devextreme/js/ui/splitter.d.ts | 2 +- packages/devextreme/js/ui/splitter_control.js | 6 +- packages/devextreme/js/ui/switch.d.ts | 2 +- packages/devextreme/js/ui/tab_panel.d.ts | 13 +- packages/devextreme/js/ui/tabs.d.ts | 2 +- packages/devextreme/js/ui/tag_box.d.ts | 11 +- packages/devextreme/js/ui/text_area.d.ts | 2 +- packages/devextreme/js/ui/text_box.d.ts | 2 +- .../js/ui/text_box/ui.text_editor.base.d.ts | 2 +- packages/devextreme/js/ui/tile_view.d.ts | 2 +- packages/devextreme/js/ui/toast.d.ts | 10 +- packages/devextreme/js/ui/toolbar.d.ts | 11 +- packages/devextreme/js/ui/tooltip.d.ts | 2 +- packages/devextreme/js/ui/tree_list.d.ts | 19 +- packages/devextreme/js/ui/tree_view.d.ts | 2 +- .../devextreme/js/ui/validation_group.d.ts | 2 +- .../devextreme/js/ui/validation_summary.d.ts | 2 +- packages/devextreme/js/ui/validator.d.ts | 2 +- .../devextreme/js/ui/widget/template.d.ts | 5 +- .../js/ui/widget/ui.search_box_mixin.js | 2 +- .../devextreme/js/ui/widget/ui.widget.d.ts | 2 +- packages/devextreme/js/utils.d.ts | 19 +- packages/devextreme/js/utils.js | 8 +- packages/devextreme/js/viz/bar_gauge.d.ts | 4 +- packages/devextreme/js/viz/bullet.d.ts | 2 +- packages/devextreme/js/viz/chart.d.ts | 15 +- .../js/viz/chart_components/base_chart.d.ts | 9 +- .../js/viz/chart_components/scroll_bar.js | 6 +- .../js/viz/chart_components/shutter_zoom.js | 2 +- .../js/viz/chart_components/tracker.js | 8 +- .../js/viz/chart_components/zoom_and_pan.js | 6 +- .../devextreme/js/viz/circular_gauge.d.ts | 4 +- .../devextreme/js/viz/components/tracker.js | 8 +- .../devextreme/js/viz/core/annotations.js | 8 +- .../devextreme/js/viz/core/base_widget.d.ts | 2 +- .../devextreme/js/viz/core/data_source.js | 2 +- packages/devextreme/js/viz/core/export.js | 6 +- .../js/viz/core/renderers/animation.js | 2 +- .../js/viz/core/renderers/renderer.js | 2 +- packages/devextreme/js/viz/funnel.d.ts | 11 +- .../devextreme/js/viz/gauges/base_gauge.d.ts | 13 +- packages/devextreme/js/viz/gauges/tracker.js | 8 +- packages/devextreme/js/viz/linear_gauge.d.ts | 2 +- packages/devextreme/js/viz/pie_chart.d.ts | 4 +- packages/devextreme/js/viz/polar_chart.d.ts | 9 +- .../devextreme/js/viz/range_selector.d.ts | 2 +- .../js/viz/range_selector/tracker.js | 4 +- packages/devextreme/js/viz/sankey.d.ts | 9 +- packages/devextreme/js/viz/sparkline.d.ts | 2 +- .../js/viz/sparklines/base_sparkline.d.ts | 4 +- .../js/viz/sparklines/base_sparkline.js | 6 +- packages/devextreme/js/viz/tree_map.d.ts | 9 +- packages/devextreme/js/viz/vector_map.d.ts | 13 +- .../devextreme/js/viz/vector_map/map_layer.js | 2 +- .../devextreme/js/viz/vector_map/tracker.js | 6 +- packages/devextreme/project.json | 8 +- .../helpers/data.errorHandlingHelper.js | 2 +- .../testing/helpers/dataGridMocks.js | 4 +- .../devextreme/testing/helpers/eventHelper.js | 2 +- .../testing/helpers/fileManager/events.js | 2 +- .../helpers/grid/keyboardNavigationHelper.js | 8 +- .../testing/helpers/jQueryEventsPatch.js | 2 +- .../devextreme/testing/helpers/pointerMock.js | 4 +- .../testing/helpers/scheduler/helpers.js | 2 +- .../testing/helpers/treeListMocks.js | 4 +- .../widget_bundled.tests.js | 2 +- .../DevExpress.animation/easing.tests.js | 2 +- .../tests/DevExpress.animation/fx.tests.js | 10 +- .../DevExpress.animation/position.tests.js | 4 +- .../transitionExecutors.tests.js | 6 +- .../DevExpress.animation/translator.tests.js | 2 +- .../DevExpress.core/domComponent.tests.js | 4 +- .../utils.animationFrame.tests.js | 2 +- .../tests/DevExpress.core/utils.dom.tests.js | 2 +- .../DevExpress.core/utils.topOverlay.tests.js | 4 +- .../tests/DevExpress.core/utils.type.tests.js | 2 +- .../DevExpress.data/applyChanges.tests.js | 6 +- .../tests/DevExpress.data/dataSource.tests.js | 8 +- .../dataSourceCreating.tests.js | 10 +- .../DevExpress.data/odataCommonOData.tests.js | 4 +- .../tests/DevExpress.data/odataQuery.tests.js | 6 +- .../tests/DevExpress.data/odataStore.tests.js | 6 +- .../tests/DevExpress.data/queryArray.tests.js | 2 +- .../tests/DevExpress.data/storeArray.tests.js | 2 +- .../DevExpress.data/storeCustom.tests.js | 6 +- .../storeCustom_loadModeRaw.tests.js | 2 +- .../tests/DevExpress.data/storeLocal.tests.js | 2 +- .../tests/DevExpress.data/utils.tests.js | 6 +- .../commonParts/loadPanel.tests.js | 4 +- .../tests/DevExpress.jquery/easing.tests.js | 2 +- .../eventRegistrator.tests.js | 2 +- .../DevExpress.knockout/dataGrid.tests.js | 4 +- .../DevExpress.knockout/datebox.tests.js | 4 +- .../eventRegistration.tests.js | 12 +- .../tests/DevExpress.knockout/form.tests.js | 2 +- .../tests/DevExpress.knockout/lookup.tests.js | 2 +- .../DevExpress.knockout/overlay.tests.js | 2 +- .../DevExpress.knockout/selectBox.tests.js | 2 +- .../tests/DevExpress.knockout/tagBox.tests.js | 2 +- .../DevExpress.localization/ldml.tests.js | 20 +- .../DevExpress.localization/locales.tests.js | 54 +- .../localization.base.tests.js | 6 +- .../localization.custom.tests.js | 4 +- .../localization.globalize.tests.js | 26 +- .../localization.globalize.widgets.tests.js | 12 +- .../localization.intl.tests.js | 12 +- .../localization.intl.widgets.tests.js | 6 +- .../localization.messages.test.js | 2 +- .../localization.nativeIntl.base.tests.js | 6 +- .../localization.utils.tests.js | 2 +- .../sharedParts/localization.shared.js | 6 +- .../validation.tests.js | 12 +- .../overlaysStyleRecalculations.tests.js | 2 +- .../translatorRecalculations.tests.js | 2 +- .../widgetsCreation.tests.js | 2 +- .../tests/DevExpress.ui.events/click.tests.js | 2 +- .../DevExpress.ui.events/contextmenu.tests.js | 4 +- .../DevExpress.ui.events/dblclick.tests.js | 4 +- .../tests/DevExpress.ui.events/drag.tests.js | 4 +- .../eventRegistrator.tests.js | 6 +- .../events.utils.tests.js | 4 +- .../eventsEngine.tests.js | 4 +- .../eventsInteraction.tests.js | 22 +- .../DevExpress.ui.events/feedback.tests.js | 2 +- .../tests/DevExpress.ui.events/hold.tests.js | 2 +- .../tests/DevExpress.ui.events/hover.tests.js | 2 +- .../pointerParts/baseTests.js | 4 +- .../pointerParts/mouseAndTouchTests.js | 4 +- .../pointerParts/mouseTests.js | 4 +- .../pointerParts/strategySelectionTests.js | 8 +- .../pointerParts/touchTests.js | 6 +- .../DevExpress.ui.events/remove.tests.js | 4 +- .../DevExpress.ui.events/scroll.tests.js | 8 +- .../tests/DevExpress.ui.events/swipe.tests.js | 4 +- .../transformation.tests.js | 2 +- .../tests/DevExpress.ui.events/wheel.tests.js | 2 +- .../adaptiveColumns.integration.tests.js | 2 +- .../adaptiveColumns.tests.js | 2 +- .../columnChooser.integration.tests.js | 2 +- .../columnChooserModule.tests.js | 2 +- .../columnFixing.integration.tests.js | 2 +- .../columnFixing.tests.js | 2 +- .../columnsController.tests.js | 12 +- .../columnsHeadersView.tests.js | 6 +- .../columnsResizingReorderingModule.tests.js | 4 +- .../columnsView.tests.js | 2 +- .../dataController.tests.js | 6 +- .../dataGrid.tests.js | 8 +- .../dataSource.tests.js | 12 +- .../editing.integration.tests.js | 8 +- .../editing.tests.js | 14 +- .../editorFactory.tests.js | 2 +- .../exportController.tests.js | 4 +- .../filterBuilder.tests.js | 2 +- .../filterPanel.tests.js | 6 +- .../filterRow.tests.js | 6 +- .../filterSync.tests.js | 2 +- .../filtering.integration.tests.js | 6 +- .../focus.integration.tests.js | 8 +- .../focus.tests.js | 8 +- .../gridView.tests.js | 2 +- .../grouping.integration.tests.js | 4 +- .../headerFilter.tests.js | 12 +- .../keyboardNavigation.accessibility.tests.js | 4 +- ...oardNavigation.keyboardController.tests.js | 6 +- .../keyboardNavigation.keyboardKeys.tests.js | 2 +- ...eyboardNavigation.realControllers.tests.js | 2 +- .../keyboardNavigation.rowsView.tests.js | 6 +- .../masterDetail.integration.tests.js | 2 +- .../pagerView.tests.js | 2 +- .../rowDragging.integration.tests.js | 2 +- .../rowsView.tests.js | 6 +- .../scrolling.integration.tests.js | 2 +- .../selection.tests.js | 10 +- .../stateStoring.tests.js | 4 +- .../virtualColumns.tests.js | 2 +- .../virtualScrolling.integration.tests.js | 10 +- .../autocomplete.tests.js | 6 +- .../calendar.markup.tests.js | 2 +- .../calendar.tests.js | 10 +- .../calendarView.markup.tests.js | 2 +- .../calendarViews.tests.js | 6 +- .../checkbox.tests.js | 2 +- .../colorBox.markup.tests.js | 2 +- .../colorBox.tests.js | 4 +- .../colorView.markup.tests.js | 2 +- .../colorView.tests.js | 4 +- .../dateRangeBox.strategy.tests.js | 2 +- .../dateRangeBox.tests.js | 4 +- .../dateView.tests.js | 8 +- .../datebox.markup.tests.js | 2 +- .../datebox.mask.tests.js | 4 +- .../datebox.tests.js | 10 +- .../dropDownBox.markup.tests.js | 2 +- .../dropDownBox.tests.js | 8 +- .../dropDownEditor.tests.js | 4 +- .../dropDownList.tests.js | 8 +- .../dropDownOptions.tests.js | 2 +- .../editor.tests.js | 2 +- .../lookup.markup.tests.js | 2 +- .../lookup.tests.js | 12 +- .../numberBoxParts/common.tests.js | 4 +- .../numberBoxParts/mask.tests.js | 2 +- .../numberbox.format.tests.js | 2 +- .../radioGroup.tests.js | 6 +- .../rangeSlider.tests.js | 4 +- .../selectBox.markup.tests.js | 6 +- .../selectBox.tests.js | 10 +- .../slider.tests.js | 10 +- .../switch.tests.js | 4 +- .../tagBox.markup.tests.js | 2 +- .../tagBox.tests.js | 18 +- .../textEditorParts/common.tests.js | 4 +- .../timeView.tests.js | 2 +- .../trackBar.tests.js | 2 +- .../validationGroup.tests.js | 2 +- .../DevExpress.ui.widgets.form/form.tests.js | 2 +- .../htmlEditorParts/events.tests.js | 4 +- .../imageCursorModule.tests.js | 2 +- .../imageUploadIntegration.tests.js | 2 +- .../htmlEditorParts/mentionModule.tests.js | 4 +- .../resizingIntegration.tests.js | 2 +- .../htmlEditorParts/resizingModule.tests.js | 2 +- .../htmlEditorParts/scrolling.tests.js | 2 +- .../tableContextMenuIntegration.tests.js | 4 +- .../toolbarIntegration.tests.js | 2 +- .../htmlEditorParts/toolbarModule.tests.js | 2 +- .../dataSource_bundled.tests.js | 4 +- .../export.tests.js | 2 +- .../fieldChooser.tests.js | 2 +- .../pivotGrid.tests.js | 8 +- .../store.local.tests.js | 2 +- .../store.remote.tests.js | 4 +- .../store.xmla.common.tests.js | 4 +- .../agenda.resourceProcessor.tests.js | 4 +- .../agenda.tests.js | 2 +- .../allDayAppointments.common-0.tests.js | 10 +- .../allDayAppointments.common-1.tests.js | 10 +- .../allDayAppointments.dragging.tests.js | 6 +- .../appointment.dataProcessor.tests.js | 2 +- .../appointment.editing.tests.js | 4 +- .../appointment.filtering.tests.js | 4 +- .../appointment.monthView.tests.js | 8 +- .../appointment.resources.tests.js | 4 +- .../appointment.scroll.tests.js | 4 +- .../appointment.templates.tests.js | 4 +- .../appointment.tests.js | 2 +- .../appointment.timeLines.tests.js | 2 +- .../appointment.tooltip.tests.js | 2 +- .../appointment.week.based.views.tests.js | 10 +- .../appointmentPopup.tests.js | 6 +- .../appointments.horizontalStrategy.tests.js | 2 +- .../appointments.tests.js | 10 +- .../appointments.verticalStrategy.tests.js | 2 +- .../common.events.tests.js | 4 +- .../common.initialization.tests.js | 6 +- .../common.markup.tests.js | 4 +- .../common.methods.tests.js | 6 +- .../common.options.tests.js | 6 +- .../common.tests.js | 8 +- .../contentReadyEvent.tests.js | 8 +- .../dataSource.tests.js | 12 +- .../dragAndDropAppointments.tests.js | 8 +- .../editing.tests.js | 2 +- .../integration.RTL.tests.js | 4 +- .../integration.adaptivity.tests.js | 2 +- .../integration.agenda.tests.js | 8 +- .../integration.appointmentCollector.tests.js | 8 +- .../integration.appointmentTooltip.tests.js | 8 +- ...ppointments.crossScrollingEnabled.tests.js | 4 +- .../integration.appointmentsVertical.tests.js | 6 +- .../integration.dateNavigator.tests.js | 2 +- .../integration.dstAppointments.tests.js | 4 +- ...integration.multiWeekAppointments.tests.js | 6 +- .../integration.optionChange.tests.js | 2 +- ...egration.recurrenceRuleValidation.tests.js | 6 +- ...integration.recurringAppointments.tests.js | 10 +- .../integration.resources.dataSource.tests.js | 4 +- .../integration.resources.tests.js | 8 +- .../integration.timeline.tests.js | 4 +- .../integration.viewSwitcher.tests.js | 2 +- .../integration.workSpace.tests.js | 12 +- .../keyboardNavigation.tests.js | 2 +- .../layoutManager.tests.js | 4 +- .../loading.tests.js | 2 +- .../pacificTime.tests.js | 2 +- .../perfomance.tests.js | 6 +- .../recurrenceDialog.tests.js | 2 +- .../recurrenceEditor.tests.js | 2 +- .../resourceManager.tests.js | 4 +- .../scrollTo.tests.js | 2 +- .../scrollToTime.tests.js | 2 +- .../subscribes.tests.js | 2 +- .../timeline.markup.tests.js | 2 +- .../timeline.tests.js | 2 +- .../timezones.tests.js | 12 +- .../views.cellTemplate.tests.js | 2 +- .../views.cellsSelection.tests.js | 2 +- .../virtual_scrolling.integration.tests.js | 2 +- .../virtual_scrolling.tests.js | 4 +- .../workSpace.base.tests.js | 2 +- .../workSpace.day.tests.js | 4 +- .../workSpace.markup.tests.js | 2 +- .../workSpace.week.tests.js | 2 +- .../workSpaceWithHorizontalScroll.tests.js | 2 +- .../dataController.tests.js | 6 +- .../editing.tests.js | 4 +- .../gridView.tests.js | 2 +- .../headerPanel.tests.js | 2 +- .../rows.tests.js | 2 +- .../selection.integration.tests.js | 2 +- .../selection.tests.js | 4 +- .../treeList.tests.js | 8 +- .../DevExpress.ui.widgets/accordion.tests.js | 10 +- .../actionSheet.tests.js | 6 +- .../DevExpress.ui.widgets/animator.tests.js | 2 +- .../tests/DevExpress.ui.widgets/box.tests.js | 2 +- .../DevExpress.ui.widgets/button.tests.js | 2 +- .../buttonGroup.selection.tests.js | 2 +- .../buttonGroup.tests.js | 2 +- .../chatParts/chat.tests.js | 6 +- .../chatParts/messageGroup.tests.js | 2 +- .../chatParts/messageList.tests.js | 2 +- .../contextMenu.tests.js | 8 +- .../deferRendering.animation.tests.js | 2 +- .../deferRendering.tests.js | 2 +- .../diagramParts/dataBinding.tests.js | 4 +- .../DevExpress.ui.widgets/draggable.tests.js | 8 +- .../drawer.scenarios.tests.js | 2 +- .../DevExpress.ui.widgets/drawer.tests.js | 8 +- .../dropDownButton.markup.tests.js | 2 +- .../dropDownButton.tests.js | 8 +- .../fileManagerParts/adaptivity.tests.js | 2 +- .../fileManagerParts/contextMenu.tests.js | 4 +- .../fileManagerParts/detailsView.tests.js | 6 +- .../fileManagerParts/editing.tests.js | 4 +- .../fileManagerParts/editingEvents.tests.js | 2 +- .../fileManagerParts/editingProgress.tests.js | 2 +- .../fileManagerParts/markup.tests.js | 2 +- .../fileManagerParts/navigation.tests.js | 2 +- .../fileManagerParts/progressPanel.tests.js | 2 +- .../fileManagerParts/scroll.tests.js | 4 +- .../fileManagerParts/selection.tests.js | 2 +- .../fileManagerParts/thumbnailsView.tests.js | 2 +- .../fileManagerParts/toolbar.tests.js | 2 +- .../filterBuilderParts/utilsTests.js | 4 +- .../DevExpress.ui.widgets/gallery.tests.js | 10 +- .../ganttParts/clientSideEvents.tests.js | 2 +- .../ganttParts/dialogs.tests.js | 2 +- .../ganttParts/editDataSources.tests.js | 6 +- .../ganttParts/refresh.tests.js | 2 +- .../init_dispose_widget_bundled_tests.js | 2 +- .../listParts/commonTests.js | 14 +- .../listParts/editingTests.js | 4 +- .../listParts/editingUITests.js | 12 +- .../listParts/liveUpdateTests.js | 4 +- .../loadIndicator.tests.js | 2 +- .../DevExpress.ui.widgets/loadPanel.tests.js | 4 +- .../menu.markup.tests.js | 2 +- .../tests/DevExpress.ui.widgets/menu.tests.js | 10 +- .../multiView.integration.tests.js | 2 +- .../DevExpress.ui.widgets/multiView.tests.js | 8 +- .../optionChanged_bundled.tests.js | 4 +- .../DevExpress.ui.widgets/overlay.tests.js | 12 +- .../DevExpress.ui.widgets/popover.tests.js | 4 +- .../popup.materialTheme.tests.js | 2 +- .../DevExpress.ui.widgets/popup.tests.js | 4 +- .../progressBar.tests.js | 2 +- .../DevExpress.ui.widgets/resizable.tests.js | 4 +- .../resizeHandle.markup.tests.js | 4 +- .../resizeHandle.tests.js | 4 +- .../responsiveBox.tests.js | 2 +- .../DevExpress.ui.widgets/scrollView.tests.js | 6 +- .../scrollable.actions.tests.js | 2 +- .../scrollable.dynamic.tests.js | 2 +- .../scrollableParts/scrollable.main.tests.js | 6 +- .../scrollable.mouseWheel.tests.js | 2 +- .../scrollableParts/scrollable.rtl.tests.js | 4 +- .../scrollable.scrollbar.tests.js | 2 +- .../scrollable.scrollingByThumb.tests.js | 2 +- .../scrollable.useNative.tests.js | 2 +- .../DevExpress.ui.widgets/selection.test.js | 6 +- .../DevExpress.ui.widgets/sortable.tests.js | 6 +- .../speedDialAction.tests.js | 2 +- .../DevExpress.ui.widgets/splitter.tests.js | 8 +- .../DevExpress.ui.widgets/swipeable.tests.js | 4 +- .../tabPanel.repaintChangesOnly.tests.js | 2 +- .../DevExpress.ui.widgets/tabPanel.tests.js | 4 +- .../tabPanel.width.tests.js | 2 +- .../tests/DevExpress.ui.widgets/tabs.tests.js | 6 +- .../DevExpress.ui.widgets/tabs.width.tests.js | 2 +- .../DevExpress.ui.widgets/tileView.tests.js | 2 +- .../DevExpress.ui.widgets/toast.tests.js | 2 +- .../toolbar.disabled.tests.js | 4 +- .../toolbar.menu.tests.js | 6 +- .../DevExpress.ui.widgets/toolbar.tests.js | 2 +- .../toolbar.themes.sharedTests.js | 2 +- .../DevExpress.ui.widgets/tooltip.tests.js | 2 +- .../treeView.checkboxes.tests.js | 2 +- .../treeView.expanded.tests.js | 2 +- .../DevExpress.ui.widgets/treeView.tests.js | 4 +- .../treeViewParts/accessibility.js | 2 +- .../treeViewParts/animation.js | 2 +- .../treeViewParts/events.js | 8 +- .../treeViewParts/initialization.js | 4 +- .../treeViewParts/keyboardNavigation.js | 2 +- .../treeViewParts/rendering.js | 8 +- .../treeViewParts/selection.js | 2 +- .../treeViewParts/testUtils.js | 4 +- .../treeViewParts/virtualMode.js | 12 +- .../DevExpress.ui/collectionWidget.tests.js | 6 +- .../collectionWidgetParts/editingTests.js | 6 +- .../collectionWidgetParts/liveUpdateTests.js | 4 +- .../tests/DevExpress.ui/dialog.tests.js | 2 +- .../floatingActionButtonRepaint.tests.js | 2 +- .../tests/DevExpress.ui/hideToasts.tests.js | 2 +- .../hierarchicalCollectionWidget.js | 2 +- .../hierarchicalDataAdapter.js | 2 +- .../DevExpress.ui/keyboardProcessor.tests.js | 2 +- .../tests/DevExpress.ui/notify.tests.js | 2 +- .../tests/DevExpress.ui/tooltip.tests.js | 2 +- .../tests/DevExpress.ui/widget.tests.js | 2 +- .../DevExpress.utils/utils.inkRipple.tests.js | 2 +- .../chart.part1.tests.js | 4 +- .../DevExpress.viz.charts/chart.tests.js | 2 +- .../chartInteraction.tests.js | 2 +- .../DevExpress.viz.charts/chartSync.tests.js | 2 +- .../DevExpress.viz.charts/pieChart.tests.js | 4 +- .../DevExpress.viz.charts/scrollBar.tests.js | 2 +- .../DevExpress.viz.charts/tracker.tests.js | 2 +- .../annotations.plugins.tests.js | 2 +- .../loadingIndicator.integration.tests.js | 2 +- .../funnel.tracker.tests.js | 4 +- .../DevExpress.viz.gauges/tracker.tests.js | 2 +- .../common.part1.tests.js | 2 +- .../common.part2.tests.js | 2 +- .../common.part3.tests.js | 4 +- .../range_selector.integration.tests.js | 2 +- .../tracker.tests.js | 2 +- .../Animation.tests.js | 2 +- .../SvgElement.tests.js | 2 +- .../sankey.tracker.tests.js | 4 +- .../baseSparklineTooltipEvents.tests.js | 2 +- .../sparkline.tests.js | 2 +- .../DevExpress.viz.treeMap/tracker.tests.js | 4 +- .../treeMap.base.tests.js | 2 +- .../map.integration.tests.js | 4 +- .../mapLayer.tests.js | 2 +- .../mapLayer_new.tests.js | 2 +- .../DevExpress.viz.vectorMap/tracker.tests.js | 2 +- packages/devextreme/ts/aliases.d.ts | 1472 +-- packages/devextreme/ts/dx.all.d.ts | 9979 +++++++++-------- pnpm-lock.yaml | 621 +- 1516 files changed, 13773 insertions(+), 12486 deletions(-) create mode 100644 packages/devextreme-angular/src/common/core/animation/index.ts create mode 100644 packages/devextreme-angular/src/common/core/animation/ng-package.json create mode 100644 packages/devextreme-angular/src/common/core/environment/index.ts create mode 100644 packages/devextreme-angular/src/common/core/environment/ng-package.json create mode 100644 packages/devextreme-angular/src/common/core/events/index.ts create mode 100644 packages/devextreme-angular/src/common/core/events/ng-package.json create mode 100644 packages/devextreme-angular/src/common/core/index.ts create mode 100644 packages/devextreme-angular/src/common/core/localization/index.ts create mode 100644 packages/devextreme-angular/src/common/core/localization/ng-package.json create mode 100644 packages/devextreme-angular/src/common/core/ng-package.json create mode 100644 packages/devextreme-angular/src/common/data/index.ts create mode 100644 packages/devextreme-angular/src/common/data/ng-package.json create mode 100644 packages/devextreme-angular/src/common/export/excel/index.ts create mode 100644 packages/devextreme-angular/src/common/export/excel/ng-package.json create mode 100644 packages/devextreme-angular/src/common/export/index.ts create mode 100644 packages/devextreme-angular/src/common/export/ng-package.json create mode 100644 packages/devextreme-angular/src/common/export/pdf/index.ts create mode 100644 packages/devextreme-angular/src/common/export/pdf/ng-package.json create mode 100644 packages/devextreme-react/src/common/core/animation.ts create mode 100644 packages/devextreme-react/src/common/core/environment.ts create mode 100644 packages/devextreme-react/src/common/core/events.ts create mode 100644 packages/devextreme-react/src/common/core/index.ts create mode 100644 packages/devextreme-react/src/common/core/localization.ts create mode 100644 packages/devextreme-react/src/common/data.ts create mode 100644 packages/devextreme-react/src/common/export/excel.ts create mode 100644 packages/devextreme-react/src/common/export/index.ts create mode 100644 packages/devextreme-react/src/common/export/pdf.ts create mode 100644 packages/devextreme-vue/src/common/core/animation.ts create mode 100644 packages/devextreme-vue/src/common/core/environment.ts create mode 100644 packages/devextreme-vue/src/common/core/events.ts create mode 100644 packages/devextreme-vue/src/common/core/index.ts create mode 100644 packages/devextreme-vue/src/common/core/localization.ts create mode 100644 packages/devextreme-vue/src/common/data.ts create mode 100644 packages/devextreme-vue/src/common/export/excel.ts create mode 100644 packages/devextreme-vue/src/common/export/index.ts create mode 100644 packages/devextreme-vue/src/common/export/pdf.ts create mode 100644 packages/devextreme/js/animation/frame.js create mode 100644 packages/devextreme/js/animation/fx.js create mode 100644 packages/devextreme/js/animation/presets.js create mode 100644 packages/devextreme/js/animation/transition_executor.js create mode 100644 packages/devextreme/js/bundles/modules/core.legacy.js create mode 100644 packages/devextreme/js/bundles/modules/data.legacy.js create mode 100644 packages/devextreme/js/bundles/modules/data.odata.legacy.js create mode 100644 packages/devextreme/js/common.js create mode 100644 packages/devextreme/js/common/core/animation.d.ts create mode 100644 packages/devextreme/js/common/core/animation.js create mode 100644 packages/devextreme/js/common/core/environment.d.ts create mode 100644 packages/devextreme/js/common/core/environment.js create mode 100644 packages/devextreme/js/common/core/events.d.ts rename packages/devextreme/js/common/core/{events/index.js => events.js} (77%) delete mode 100644 packages/devextreme/js/common/core/events/index.d.ts create mode 100644 packages/devextreme/js/common/core/localization.d.ts create mode 100644 packages/devextreme/js/common/data.d.ts create mode 100644 packages/devextreme/js/common/data.js create mode 100644 packages/devextreme/js/common/data.types.d.ts create mode 100644 packages/devextreme/js/common/data/data_helper.js delete mode 100644 packages/devextreme/js/common/export.d.ts create mode 100644 packages/devextreme/js/core/config.js create mode 100644 packages/devextreme/js/core/devices.js create mode 100644 packages/devextreme/js/core/guid.js create mode 100644 packages/devextreme/js/core/set_template_engine.js rename packages/devextreme/js/{common => }/data/abstract_store.d.ts (59%) create mode 100644 packages/devextreme/js/data/abstract_store.js create mode 100644 packages/devextreme/js/data/apply_changes.js create mode 100644 packages/devextreme/js/data/array_store.js create mode 100644 packages/devextreme/js/data/custom_store.js create mode 100644 packages/devextreme/js/data/data.types.d.ts create mode 100644 packages/devextreme/js/data/data_source.js create mode 100644 packages/devextreme/js/data/endpoint_selector.js create mode 100644 packages/devextreme/js/data/errors.js create mode 100644 packages/devextreme/js/data/local_store.js create mode 100644 packages/devextreme/js/data/odata/context.js create mode 100644 packages/devextreme/js/data/odata/store.js create mode 100644 packages/devextreme/js/data/odata/utils.js create mode 100644 packages/devextreme/js/data/query.js create mode 100644 packages/devextreme/js/data/utils.js create mode 100644 packages/devextreme/js/events/events.types.d.ts create mode 100644 packages/devextreme/js/events/events.types.js create mode 100644 packages/devextreme/js/events/index.d.ts create mode 100644 packages/devextreme/js/events/index.js create mode 100644 packages/devextreme/js/excel_exporter.d.ts create mode 100644 packages/devextreme/js/excel_exporter.js create mode 100644 packages/devextreme/js/excel_exporter.types.d.ts create mode 100644 packages/devextreme/js/exporter/export_load_panel.d.ts rename packages/devextreme/js/{common => }/file_management/custom_provider.js (100%) rename packages/devextreme/js/{common => }/file_management/error.js (100%) rename packages/devextreme/js/{common => }/file_management/error_codes.js (100%) rename packages/devextreme/js/{common => }/file_management/file_system_item.js (100%) rename packages/devextreme/js/{common => }/file_management/object_provider.js (99%) rename packages/devextreme/js/{common => }/file_management/provider_base.js (100%) rename packages/devextreme/js/{common => }/file_management/remote_provider.js (99%) rename packages/devextreme/js/{common => }/file_management/utils.js (100%) create mode 100644 packages/devextreme/js/localization.js create mode 100644 packages/devextreme/js/localization/globalize/core.js create mode 100644 packages/devextreme/js/localization/globalize/currency.js create mode 100644 packages/devextreme/js/localization/globalize/date.js create mode 100644 packages/devextreme/js/localization/globalize/message.js create mode 100644 packages/devextreme/js/localization/globalize/number.js create mode 100644 packages/devextreme/js/mobile/hide_top_overlay.js create mode 100644 packages/devextreme/js/mobile/init_mobile_viewport.js create mode 100644 packages/devextreme/js/pdf_exporter.d.ts create mode 100644 packages/devextreme/js/pdf_exporter.js create mode 100644 packages/devextreme/js/pdf_exporter.types.d.ts create mode 100644 packages/devextreme/js/time_zone_utils.js diff --git a/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts b/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts index ecce89fabec9..8e3d25d17e7d 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts +++ b/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts @@ -8,8 +8,8 @@ import 'devextreme/localization/globalize/date'; import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; -import deMessages from 'npm:devextreme/localization/messages/de.json!json'; -import ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; +import deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; +import ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; import deCldrData from 'npm:devextreme-cldr-data/de.json!json'; import ruCldrData from 'npm:devextreme-cldr-data/ru.json!json'; diff --git a/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx b/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx index b8c231be96b3..724a2794ad7d 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx +++ b/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx @@ -9,8 +9,8 @@ import 'devextreme/localization/globalize/date'; import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; -import deMessages from 'devextreme/localization/messages/de.json'; -import ruMessages from 'devextreme/localization/messages/ru.json'; +import deMessages from 'devextreme/common/core/localization/messages/de.json'; +import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; import deCldrData from 'devextreme-cldr-data/de.json'; import ruCldrData from 'devextreme-cldr-data/ru.json'; diff --git a/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js b/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js index 2ebd1e15d128..79660350cfd1 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js +++ b/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js @@ -7,8 +7,8 @@ import 'devextreme/localization/globalize/number'; import 'devextreme/localization/globalize/date'; import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; -import deMessages from 'devextreme/localization/messages/de.json'; -import ruMessages from 'devextreme/localization/messages/ru.json'; +import deMessages from 'devextreme/common/core/localization/messages/de.json'; +import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; import deCldrData from 'devextreme-cldr-data/de.json'; import ruCldrData from 'devextreme-cldr-data/ru.json'; import supplementalCldrData from 'devextreme-cldr-data/supplemental.json'; diff --git a/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue b/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue index cb5add991431..7361909f8c1d 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue +++ b/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue @@ -69,8 +69,8 @@ import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; /* eslint-disable import/no-unresolved */ /* eslint-disable import/no-webpack-loader-syntax */ -import * as deMessages from 'npm:devextreme/localization/messages/de.json!json'; -import * as ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; +import * as deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; +import * as ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; import * as deCldrData from 'npm:devextreme-cldr-data/de.json!json'; import * as ruCldrData from 'npm:devextreme-cldr-data/ru.json!json'; import * as supplementalCldrData from 'npm:devextreme-cldr-data/supplemental.json!json'; diff --git a/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts b/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts index cc7aa5448a6d..f90ed845c760 100644 --- a/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts +++ b/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts @@ -5,8 +5,8 @@ import { DxSelectBoxModule, DxDataGridModule } from 'devextreme-angular'; import { locale, loadMessages, formatMessage } from 'devextreme/localization'; -import deMessages from 'npm:devextreme/localization/messages/de.json!json'; -import ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; +import deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; +import ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; import { Locale, Payment, Service } from './app.service'; if (!/localhost/.test(document.location.host)) { diff --git a/apps/demos/Demos/Localization/UsingIntl/React/App.tsx b/apps/demos/Demos/Localization/UsingIntl/React/App.tsx index c3033eafd311..db018e87c73b 100644 --- a/apps/demos/Demos/Localization/UsingIntl/React/App.tsx +++ b/apps/demos/Demos/Localization/UsingIntl/React/App.tsx @@ -4,8 +4,8 @@ import React, { useState } from 'react'; import DataGrid, { Column, Editing, FilterRow } from 'devextreme-react/data-grid'; import SelectBox, { SelectBoxTypes } from 'devextreme-react/select-box'; -import deMessages from 'devextreme/localization/messages/de.json'; -import ruMessages from 'devextreme/localization/messages/ru.json'; +import deMessages from 'devextreme/common/core/localization/messages/de.json'; +import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; import { locale, loadMessages, formatMessage } from 'devextreme/localization'; import service from './data.ts'; diff --git a/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js b/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js index 7e8d2f742bce..15a5a303cf11 100644 --- a/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js +++ b/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js @@ -3,8 +3,8 @@ import React, { useState } from 'react'; import DataGrid, { Column, Editing, FilterRow } from 'devextreme-react/data-grid'; import SelectBox from 'devextreme-react/select-box'; -import deMessages from 'devextreme/localization/messages/de.json'; -import ruMessages from 'devextreme/localization/messages/ru.json'; +import deMessages from 'devextreme/common/core/localization/messages/de.json'; +import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; import { locale, loadMessages, formatMessage } from 'devextreme/localization'; import service from './data.js'; diff --git a/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue b/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue index bb1cfb9efc0a..dbd7d9b810ed 100644 --- a/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue +++ b/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue @@ -65,8 +65,8 @@ import { import DxSelectBox, { DxSelectBoxTypes } from 'devextreme-vue/select-box'; /* eslint-disable import/no-unresolved */ /* eslint-disable import/no-webpack-loader-syntax */ -import * as deMessages from 'npm:devextreme/localization/messages/de.json!json'; -import * as ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; +import * as deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; +import * as ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; import { locale as dxLocale, loadMessages, formatMessage as dxFormatMessage } from 'devextreme/localization'; import service from './data.ts'; diff --git a/apps/demos/configs/Angular/config.bundle.js b/apps/demos/configs/Angular/config.bundle.js index 460e4aa1af56..57d089649471 100644 --- a/apps/demos/configs/Angular/config.bundle.js +++ b/apps/demos/configs/Angular/config.bundle.js @@ -2,8 +2,9 @@ const bundleConfig = { bundles: { 'devextreme.angular.systemjs.js': [ 'devextreme/*', + 'devextreme/data/*', + 'devextreme/data/odata/*', 'devextreme/animation/*', - 'devextreme/common/*', 'devextreme/core/*', 'devextreme/core/utils/*', 'devextreme/data/*', @@ -23,8 +24,21 @@ const bundleConfig = { 'devextreme/ui/toast/*', 'devextreme/viz/*', 'devextreme/viz/vector_map/*', + 'devextreme/common/*', + 'devextreme/common/data/*', + 'devextreme/common/data/odata/*', + 'devextreme/common/export/*', + 'devextreme/common/core/*', + 'devextreme/common/core/animation/*', + 'devextreme/common/core/environment/*', + 'devextreme/common/core/events/*', + 'devextreme/common/core/localization/*', 'devextreme-angular', 'devextreme-angular/*', + 'devextreme-angular/core/*', + 'devextreme-angular/common/*', + 'devextreme-angular/common/core/*', + 'devextreme-angular/common/export/*', 'devexpress-gantt', 'devexpress-diagram', 'rxjs/*', diff --git a/apps/demos/configs/React/config.bundle.js b/apps/demos/configs/React/config.bundle.js index b00bed0cee17..d87d4838bc9f 100644 --- a/apps/demos/configs/React/config.bundle.js +++ b/apps/demos/configs/React/config.bundle.js @@ -2,8 +2,9 @@ const bundleConfig = { bundles: { 'devextreme.react.systemjs.js': [ 'devextreme/*', + 'devextreme/data/*', + 'devextreme/data/odata/*', 'devextreme/animation/*', - 'devextreme/common/*', 'devextreme/core/*', 'devextreme/core/utils/*', 'devextreme/data/*', @@ -23,8 +24,21 @@ const bundleConfig = { 'devextreme/ui/toast/*', 'devextreme/viz/*', 'devextreme/viz/vector_map/*', + 'devextreme/common/*', + 'devextreme/common/data/*', + 'devextreme/common/data/odata/*', + 'devextreme/common/export/*', + 'devextreme/common/core/*', + 'devextreme/common/core/animation/*', + 'devextreme/common/core/environment/*', + 'devextreme/common/core/events/*', + 'devextreme/common/core/localization/*', + 'devextreme/common/core/localization/globalize/*', 'devextreme-react/*', 'devextreme-react/core/*', + 'devextreme-react/common/*', + 'devextreme-react/common/core/*', + 'devextreme-react/common/export/*', 'devexpress-gantt', 'devexpress-diagram', 'react/*', @@ -33,7 +47,7 @@ const bundleConfig = { }, map: { 'devextreme.react.systemjs.js': '../../../../bundles/devextreme.react.systemjs.js', - 'devextreme/localization/messages': 'npm:devextreme/localization/messages', + 'devextreme/common/core/localization/messages': 'npm:devextreme/common/core/localization/messages', }, packages: { 'react': { diff --git a/apps/demos/configs/React/config.js b/apps/demos/configs/React/config.js index 041e2325fe9a..2889787b7557 100644 --- a/apps/demos/configs/React/config.js +++ b/apps/demos/configs/React/config.js @@ -161,7 +161,7 @@ window.config = { 'devextreme/events/utils': { main: 'index', }, - 'devextreme/localization/messages': { + 'devextreme/common/core/localization/messages': { format: 'json', defaultExtension: 'json', }, diff --git a/apps/demos/configs/ReactJs/config.bundle.js b/apps/demos/configs/ReactJs/config.bundle.js index 754c39a693d0..2e66ceb2d215 100644 --- a/apps/demos/configs/ReactJs/config.bundle.js +++ b/apps/demos/configs/ReactJs/config.bundle.js @@ -2,6 +2,8 @@ const bundleConfig = { bundles: { 'devextreme.react.systemjs.js': [ 'devextreme/*', + 'devextreme/data/*', + 'devextreme/data/odata/*', 'devextreme/animation/*', 'devextreme/core/*', 'devextreme/core/utils/*', @@ -17,7 +19,21 @@ const bundleConfig = { 'devextreme/ui/pivot_grid/*', 'devextreme/viz/*', 'devextreme/viz/vector_map/*', + 'devextreme/common/*', + 'devextreme/common/data/*', + 'devextreme/common/data/odata/*', + 'devextreme/common/export/*', + 'devextreme/common/core/*', + 'devextreme/common/core/animation/*', + 'devextreme/common/core/environment/*', + 'devextreme/common/core/events/*', + 'devextreme/common/core/localization/*', + 'devextreme/common/core/localization/globalize/*', 'devextreme-react/*', + 'devextreme-react/core/*', + 'devextreme-react/common/*', + 'devextreme-react/common/core/*', + 'devextreme-react/common/export/*', 'devexpress-gantt', 'devexpress-diagram', 'react/*', @@ -26,7 +42,7 @@ const bundleConfig = { }, map: { 'devextreme.react.systemjs.js': '../../../../../bundles/devextreme.react.systemjs.js', - 'devextreme/localization/messages': 'npm:devextreme/localization/messages', + 'devextreme/common/core/localization/messages': 'npm:devextreme/common/core/localization/messages', }, packages: { 'react': { diff --git a/apps/demos/configs/ReactJs/config.js b/apps/demos/configs/ReactJs/config.js index cd3d318242f9..37f69cb7ee00 100644 --- a/apps/demos/configs/ReactJs/config.js +++ b/apps/demos/configs/ReactJs/config.js @@ -162,7 +162,7 @@ window.config = { 'devextreme/events/utils': { main: 'index', }, - 'devextreme/localization/messages': { + 'devextreme/common/core/localization/messages': { format: 'json', defaultExtension: '', }, diff --git a/apps/demos/configs/Vue/config.bundle.js b/apps/demos/configs/Vue/config.bundle.js index 6123fa5a4b09..fe075b6666a3 100644 --- a/apps/demos/configs/Vue/config.bundle.js +++ b/apps/demos/configs/Vue/config.bundle.js @@ -2,8 +2,9 @@ const bundleConfig = { bundles: { 'devextreme.vue.systemjs.js': [ 'devextreme/*', + 'devextreme/data/*', + 'devextreme/data/odata/*', 'devextreme/animation/*', - 'devextreme/common/*', 'devextreme/core/*', 'devextreme/core/utils/*', 'devextreme/data/*', @@ -23,7 +24,20 @@ const bundleConfig = { 'devextreme/ui/toast/*', 'devextreme/viz/*', 'devextreme/viz/vector_map/*', + 'devextreme/common/*', + 'devextreme/common/data/*', + 'devextreme/common/data/odata/*', + 'devextreme/common/export/*', + 'devextreme/common/core/*', + 'devextreme/common/core/animation/*', + 'devextreme/common/core/environment/*', + 'devextreme/common/core/events/*', + 'devextreme/common/core/localization/*', 'devextreme-vue/*', + 'devextreme-vue/core/*', + 'devextreme-vue/common/*', + 'devextreme-vue/common/core/*', + 'devextreme-vue/common/export/*', 'devexpress-gantt', 'devexpress-diagram', ], diff --git a/apps/demos/rollup.devextreme-angular.umd.config.mjs b/apps/demos/rollup.devextreme-angular.umd.config.mjs index f15ea55bbc80..7c78bf2f10cb 100644 --- a/apps/demos/rollup.devextreme-angular.umd.config.mjs +++ b/apps/demos/rollup.devextreme-angular.umd.config.mjs @@ -4,16 +4,19 @@ import babel from '@rollup/plugin-babel'; import fs from 'fs-extra'; const baseDir = './node_modules/devextreme-angular/fesm2022/'; -const componentNames = fs.readdirSync(baseDir) +const fileNames = fs.readdirSync(baseDir) .filter((fileName) => fileName.indexOf('mjs.map') !== -1) - .filter((fileName) => fileName.indexOf('devextreme-angular-ui') === 0) + .filter((fileName) => + fileName.indexOf('devextreme-angular-ui') === 0 + || fileName.indexOf('devextreme-angular-common') === 0 + ) .map((fileName) => fileName.replace('.mjs.map', '')); const inputs = { 'devextreme-angular': `${baseDir}devextreme-angular.mjs`, 'devextreme-angular-core': `${baseDir}devextreme-angular-core.mjs`, 'devextreme-angular-http': `${baseDir}devextreme-angular-http.mjs`, - ...componentNames.reduce((acc, name) => { + ...fileNames.reduce((acc, name) => { acc[name] = `${baseDir}${name}.mjs`; return acc; diff --git a/apps/demos/utils/bundle/index.js b/apps/demos/utils/bundle/index.js index beef028630e9..8bc6eaedc6fb 100644 --- a/apps/demos/utils/bundle/index.js +++ b/apps/demos/utils/bundle/index.js @@ -133,6 +133,7 @@ const prepareConfigs = (framework)=> { prepareDevextremexAngularFiles(); const bundlesRoot = 'node_modules/devextreme-angular/bundles'; + const componentNames = fs.readdirSync(bundlesRoot) .filter((fileName) => fileName.indexOf('umd.js') !== -1) .filter((fileName) => fileName.indexOf('devextreme-angular-ui') === 0) @@ -175,7 +176,7 @@ const prepareConfigs = (framework)=> { }]; additionPaths = { - 'devextreme/localization/messages/*': 'node_modules/devextreme/localization/messages/*', + 'devextreme/common/core/localization/messages/*': 'node_modules/devextreme/common/core/localization/messages/*', }; packages = [ diff --git a/e2e/compilation-cases/data/data_source.ts b/e2e/compilation-cases/data/data_source.ts index 833d4350e6fc..093405f6ec13 100644 --- a/e2e/compilation-cases/data/data_source.ts +++ b/e2e/compilation-cases/data/data_source.ts @@ -1,6 +1,20 @@ /* eslint-disable import/named */ /* eslint-disable @typescript-eslint/no-type-alias */ /* eslint-disable @typescript-eslint/no-unsafe-return */ +import { + Store, + DataSource, + CustomStore, + ArrayStore, + ODataStore, + LocalStore, +} from 'devextreme/common/data'; + +import { + DataSourceOptionsStub, + DataSourceLike, +} from 'devextreme/data/data_source'; + import { AnotherType, ANY, @@ -11,16 +25,6 @@ import { SomeType, } from '../consts'; -import DataSource, { - DataSourceLike, - DataSourceOptionsStub, -} from 'devextreme/data/data_source'; -import CustomStore from 'devextreme/data/custom_store'; -import ArrayStore from 'devextreme/data/array_store'; -import ODataStore from 'devextreme/data/odata/store'; -import LocalStore from 'devextreme/data/local_store'; -import { Store } from 'devextreme/data/index'; - export function promiseResolveAcceptsMultipleArguments() { const callback: (a: any, b: any) => void = ANY; const dataSource: DataSource = ANY; diff --git a/e2e/compilation-cases/data/stores.ts b/e2e/compilation-cases/data/stores.ts index 7ee011fd9056..35781a8da55b 100644 --- a/e2e/compilation-cases/data/stores.ts +++ b/e2e/compilation-cases/data/stores.ts @@ -3,8 +3,13 @@ // eslint-disable-next-line import/no-extraneous-dependencies import $ from 'jquery'; import { HttpClient } from '@angular/common/http'; -import CustomStore from 'devextreme/data/custom_store'; -import { Store, StoreOptions } from 'devextreme/data'; +import { + Store, + StoreOptions, + CustomStore, + LoadResult, +} from 'devextreme/common/data'; + import { ANY, assertType, @@ -12,7 +17,6 @@ import { notNever, toAssertion, } from '../consts'; -import type { LoadResult } from 'devextreme/common/data/custom-store'; export async function infersTItemFromComplexLoadResult() { const store = new CustomStore({ diff --git a/package.json b/package.json index 054fd5899a65..7d155ee56adb 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "axe-core": "4.10.2", "cheerio": "1.0.0-rc.10", "codelyzer": "6.0.2", - "devextreme-internal-tools": "16.0.0-beta.18", + "devextreme-internal-tools": "16.0.0", "http-server": "14.1.1", "husky": "8.0.3", "jest": "29.7.0", diff --git a/packages/devextreme-angular/build.config.js b/packages/devextreme-angular/build.config.js index d338e587bd20..0a8123bcb4ee 100644 --- a/packages/devextreme-angular/build.config.js +++ b/packages/devextreme-angular/build.config.js @@ -55,7 +55,7 @@ module.exports = { outputFileName: 'tests/src/server/component-names.ts' }, commonReexportsGenerator: { - metadataPath: './metadata/NGMetaData.json', + imdMetadataFilePath: './metadata/integration-data.json', outputPath: './src/' }, }, diff --git a/packages/devextreme-angular/gulpfile.js b/packages/devextreme-angular/gulpfile.js index 856bb6fe25b4..07885794ed44 100644 --- a/packages/devextreme-angular/gulpfile.js +++ b/packages/devextreme-angular/gulpfile.js @@ -84,14 +84,28 @@ gulp.task('before-generate.preserve-component-files', (done) => { gulp.task('generate.facades', gulp.series('generate.moduleFacades', (done) => { const facadeGenerator = new AngularFacadeGenerator(); - facadeGenerator.generate(buildConfig.tools.facadeGenerator); + facadeGenerator.generate({ + ...buildConfig.tools.facadeGenerator, + templatingOptions: { + quotes: 'single', + excplicitIndexInImports: true, + }, + }); + done(); })); gulp.task('generate.common-reexports', (done) => { - const commonReexportsGenerator = new AngularCommonReexportsGenerator(); - - commonReexportsGenerator.generate(buildConfig.tools.commonReexportsGenerator); + const { outputPath, imdMetadataFilePath } = buildConfig.tools.commonReexportsGenerator; + + AngularCommonReexportsGenerator.generate({ + outputPath, + metadata: JSON.parse(fs.readFileSync(imdMetadataFilePath).toString()), + templatingOptions: { + quotes: 'single', + excplicitIndexInImports: true, + }, + }); done(); }); diff --git a/packages/devextreme-angular/src/common/core/animation/index.ts b/packages/devextreme-angular/src/common/core/animation/index.ts new file mode 100644 index 000000000000..9014c94673c5 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/animation/index.ts @@ -0,0 +1,12 @@ +export { + AnimationConfig, + animationPresets, + AnimationState, + cancelAnimationFrame, + CollisionResolution, + CollisionResolutionCombination, + fx, + PositionConfig, + requestAnimationFrame, + TransitionExecutor, +} from 'devextreme/common/core/animation'; diff --git a/packages/devextreme-angular/src/common/core/animation/ng-package.json b/packages/devextreme-angular/src/common/core/animation/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/animation/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/core/environment/index.ts b/packages/devextreme-angular/src/common/core/environment/index.ts new file mode 100644 index 000000000000..19ae8891d1ea --- /dev/null +++ b/packages/devextreme-angular/src/common/core/environment/index.ts @@ -0,0 +1,7 @@ +export { + Device, + getTimeZones, + hideTopOverlay, + initMobileViewport, + SchedulerTimeZone, +} from 'devextreme/common/core/environment'; diff --git a/packages/devextreme-angular/src/common/core/environment/ng-package.json b/packages/devextreme-angular/src/common/core/environment/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/environment/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/core/events/index.ts b/packages/devextreme-angular/src/common/core/events/index.ts new file mode 100644 index 000000000000..23f9af001715 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/events/index.ts @@ -0,0 +1,14 @@ +export { + AsyncCancelable, + Cancelable, + ChangedOptionInfo, + EventInfo, + EventObject, + InitializedEventInfo, + ItemInfo, + NativeEventInfo, + off, + on, + one, + trigger, +} from 'devextreme/common/core/events'; diff --git a/packages/devextreme-angular/src/common/core/events/ng-package.json b/packages/devextreme-angular/src/common/core/events/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/events/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/core/index.ts b/packages/devextreme-angular/src/common/core/index.ts new file mode 100644 index 000000000000..3e8c304c3d8b --- /dev/null +++ b/packages/devextreme-angular/src/common/core/index.ts @@ -0,0 +1,4 @@ +export * as Animation from './animation'; +export * as Environment from './environment'; +export * as Events from './events'; +export * as Localization from './localization'; diff --git a/packages/devextreme-angular/src/common/core/localization/index.ts b/packages/devextreme-angular/src/common/core/localization/index.ts new file mode 100644 index 000000000000..e2fe4bb70025 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/localization/index.ts @@ -0,0 +1,10 @@ +export { + Format, + formatDate, + formatMessage, + formatNumber, + loadMessages, + locale, + parseDate, + parseNumber, +} from 'devextreme/common/core/localization'; diff --git a/packages/devextreme-angular/src/common/core/localization/ng-package.json b/packages/devextreme-angular/src/common/core/localization/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/localization/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/core/ng-package.json b/packages/devextreme-angular/src/common/core/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/core/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/data/index.ts b/packages/devextreme-angular/src/common/data/index.ts new file mode 100644 index 000000000000..25c15fd09554 --- /dev/null +++ b/packages/devextreme-angular/src/common/data/index.ts @@ -0,0 +1,43 @@ +export { + applyChanges, + ArrayStore, + ArrayStoreOptions, + base64_encode, + compileGetter, + compileSetter, + CustomStore, + CustomStoreOptions, + DataSource, + DataSourceOptions, + EdmLiteral, + EndpointSelector, + errorHandler, + FilterDescriptor, + GroupDescriptor, + GroupingInterval, + GroupItem, + isGroupItemsArray, + isItemsArray, + isLoadResultObject, + keyConverters, + LangParams, + LoadOptions, + LoadResult, + LoadResultObject, + LocalStore, + LocalStoreOptions, + ODataContext, + ODataContextOptions, + ODataStore, + ODataStoreOptions, + query, + Query, + ResolvedData, + SearchOperation, + SelectDescriptor, + setErrorHandler, + SortDescriptor, + Store, + StoreOptions, + SummaryDescriptor, +} from 'devextreme/common/data'; diff --git a/packages/devextreme-angular/src/common/data/ng-package.json b/packages/devextreme-angular/src/common/data/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/data/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/export/excel/index.ts b/packages/devextreme-angular/src/common/export/excel/index.ts new file mode 100644 index 000000000000..22ad01b8501d --- /dev/null +++ b/packages/devextreme-angular/src/common/export/excel/index.ts @@ -0,0 +1,8 @@ +export { + DataGridCell, + DataGridExportOptions, + exportDataGrid, + exportPivotGrid, + PivotGridCell, + PivotGridExportOptions, +} from 'devextreme/common/export/excel'; diff --git a/packages/devextreme-angular/src/common/export/excel/ng-package.json b/packages/devextreme-angular/src/common/export/excel/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/export/excel/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/export/index.ts b/packages/devextreme-angular/src/common/export/index.ts new file mode 100644 index 000000000000..ef73ffadf731 --- /dev/null +++ b/packages/devextreme-angular/src/common/export/index.ts @@ -0,0 +1,2 @@ +export * as Excel from './excel'; +export * as Pdf from './pdf'; diff --git a/packages/devextreme-angular/src/common/export/ng-package.json b/packages/devextreme-angular/src/common/export/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/export/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/export/pdf/index.ts b/packages/devextreme-angular/src/common/export/pdf/index.ts new file mode 100644 index 000000000000..e2deb669df82 --- /dev/null +++ b/packages/devextreme-angular/src/common/export/pdf/index.ts @@ -0,0 +1,9 @@ +export { + Cell, + DataGridCell, + DataGridExportOptions, + exportDataGrid, + exportGantt, + GanttExportFont, + GanttExportOptions, +} from 'devextreme/common/export/pdf'; diff --git a/packages/devextreme-angular/src/common/export/pdf/ng-package.json b/packages/devextreme-angular/src/common/export/pdf/ng-package.json new file mode 100644 index 000000000000..3360c83b3395 --- /dev/null +++ b/packages/devextreme-angular/src/common/export/pdf/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} \ No newline at end of file diff --git a/packages/devextreme-angular/src/common/index.ts b/packages/devextreme-angular/src/common/index.ts index ccdb9057c493..2b0c97f54bd0 100644 --- a/packages/devextreme-angular/src/common/index.ts +++ b/packages/devextreme-angular/src/common/index.ts @@ -5,9 +5,11 @@ export { ButtonType, CompareRule, ComparisonOperator, + config, CustomRule, DataStructure, DataType, + DefaultOptionsRule, Direction, DisplayMode, DragDirection, @@ -18,8 +20,10 @@ export { ExportFormat, FieldChooserLayout, FirstDayOfWeek, + FloatingActionButtonDirection, Format, GlobalConfig, + Guid, HorizontalAlignment, HorizontalEdge, LabelMode, @@ -29,7 +33,6 @@ export { Orientation, PageLoadMode, PageOrientation, - PagerBase, PatternRule, Position, PositionAlignment, @@ -41,6 +44,7 @@ export { ScrollMode, SearchMode, SelectAllMode, + setTemplateEngine, SimplifiedSearchMode, SingleMultipleAllOrNone, SingleMultipleOrNone, @@ -54,6 +58,7 @@ export { SubmenuShowMode, TabsIconPosition, TabsStyle, + template, TextBoxPredefinedButton, TextEditorButton, TextEditorButtonLocation, @@ -68,3 +73,9 @@ export { VerticalAlignment, VerticalEdge, } from 'devextreme/common'; + +export * as Charts from './charts'; +export * as Core from './core/index'; +export * as Data from './data'; +export * as Export from './export/index'; +export * as Grids from './grids'; diff --git a/packages/devextreme-angular/src/core/integration.ts b/packages/devextreme-angular/src/core/integration.ts index 56f7ee8703af..c27505a6b4e5 100644 --- a/packages/devextreme-angular/src/core/integration.ts +++ b/packages/devextreme-angular/src/core/integration.ts @@ -7,7 +7,7 @@ import httpRequest from 'devextreme/core/http_request'; import domAdapter from 'devextreme/core/dom_adapter'; import readyCallbacks from 'devextreme/core/utils/ready_callbacks'; -import eventsEngine from 'devextreme/events/core/events_engine'; +import eventsEngine from 'devextreme/common/core/events/core/events_engine'; const outsideZoneEvents = ['mousemove', 'mouseover', 'mouseout']; const insideZoneEvents = ['mouseup', 'click', 'mousedown', 'transitionend', 'wheel']; diff --git a/packages/devextreme-angular/src/index.ts b/packages/devextreme-angular/src/index.ts index 15285133dca8..2319f8a9b38d 100644 --- a/packages/devextreme-angular/src/index.ts +++ b/packages/devextreme-angular/src/index.ts @@ -84,3 +84,4 @@ export { DxValidationGroupComponent, DxValidationGroupModule } from 'devextreme- export { DxValidationSummaryComponent, DxValidationSummaryModule } from 'devextreme-angular/ui/validation-summary'; export { DxValidatorComponent, DxValidatorModule } from 'devextreme-angular/ui/validator'; export { DxVectorMapComponent, DxVectorMapModule } from 'devextreme-angular/ui/vector-map'; +export * as Common from './common/index'; diff --git a/packages/devextreme-angular/src/ui/action-sheet/nested/item-dxi.ts b/packages/devextreme-angular/src/ui/action-sheet/nested/item-dxi.ts index 575663e2d67d..1e2405909913 100644 --- a/packages/devextreme-angular/src/ui/action-sheet/nested/item-dxi.ts +++ b/packages/devextreme-angular/src/ui/action-sheet/nested/item-dxi.ts @@ -16,7 +16,7 @@ import { import { DOCUMENT } from '@angular/common'; -import { NativeEventInfo } from 'devextreme/events/index'; +import { NativeEventInfo } from 'devextreme/common/core/events'; import { ButtonStyle, ButtonType } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/animation.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/animation.ts index 05a49a13f7dd..0953f1a1a004 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/collision.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/collision.ts index f5126f4c9957..2e129d0ac7c1 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/drop-down-options.ts index a1d375dcdfff..5156a47fb20a 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/from.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/from.ts index 54ce1c662675..6d8dc118d5cf 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/from.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/hide.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/hide.ts index 74b61fe5d3ab..9c532f71abd7 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/position.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/position.ts index 9405f811d75f..f199249dd61b 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/position.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/show.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/show.ts index f612fb5564d7..d22f90790723 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/show.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/autocomplete/nested/to.ts b/packages/devextreme-angular/src/ui/autocomplete/nested/to.ts index 64b733e9b604..a15af212abc5 100644 --- a/packages/devextreme-angular/src/ui/autocomplete/nested/to.ts +++ b/packages/devextreme-angular/src/ui/autocomplete/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/bar-gauge/index.ts b/packages/devextreme-angular/src/ui/bar-gauge/index.ts index e6b4592062ad..49e6e94b53ce 100644 --- a/packages/devextreme-angular/src/ui/bar-gauge/index.ts +++ b/packages/devextreme-angular/src/ui/bar-gauge/index.ts @@ -22,7 +22,7 @@ import { import { AnimationEaseMode, Font, DashStyle, Palette, PaletteExtensionMode, ShiftLabelOverlap, Theme, TextOverflow, WordWrap } from 'devextreme/common/charts'; import { ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { BarGaugeBarInfo, BarGaugeLegendItem, DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, OptionChangedEvent, TooltipHiddenEvent, TooltipShownEvent } from 'devextreme/viz/bar_gauge'; import DxBarGauge from 'devextreme/viz/bar_gauge'; diff --git a/packages/devextreme-angular/src/ui/bar-gauge/nested/label.ts b/packages/devextreme-angular/src/ui/bar-gauge/nested/label.ts index 3c031d962378..f7560007f376 100644 --- a/packages/devextreme-angular/src/ui/bar-gauge/nested/label.ts +++ b/packages/devextreme-angular/src/ui/bar-gauge/nested/label.ts @@ -15,7 +15,7 @@ import { import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/bar-gauge/nested/legend.ts b/packages/devextreme-angular/src/ui/bar-gauge/nested/legend.ts index 12dd055a8faf..ff86c5503627 100644 --- a/packages/devextreme-angular/src/ui/bar-gauge/nested/legend.ts +++ b/packages/devextreme-angular/src/ui/bar-gauge/nested/legend.ts @@ -17,7 +17,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; import { BarGaugeBarInfo, BarGaugeLegendItem } from 'devextreme/viz/bar_gauge'; import { HorizontalAlignment, Position, Orientation, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/bar-gauge/nested/tooltip.ts b/packages/devextreme-angular/src/ui/bar-gauge/nested/tooltip.ts index 40a4c62e6593..250fa8bbf6ec 100644 --- a/packages/devextreme-angular/src/ui/bar-gauge/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/bar-gauge/nested/tooltip.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/bullet/index.ts b/packages/devextreme-angular/src/ui/bullet/index.ts index f809df9ddf53..31b3405d3944 100644 --- a/packages/devextreme-angular/src/ui/bullet/index.ts +++ b/packages/devextreme-angular/src/ui/bullet/index.ts @@ -19,7 +19,7 @@ import { import { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, OptionChangedEvent, TooltipHiddenEvent, TooltipShownEvent } from 'devextreme/viz/bullet'; import { Theme, DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxBullet from 'devextreme/viz/bullet'; diff --git a/packages/devextreme-angular/src/ui/bullet/nested/tooltip.ts b/packages/devextreme-angular/src/ui/bullet/nested/tooltip.ts index f44c3042bea2..a174f9387ffc 100644 --- a/packages/devextreme-angular/src/ui/bullet/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/bullet/nested/tooltip.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/index.ts b/packages/devextreme-angular/src/ui/chart/index.ts index 4494c09e7bbd..6d526b4650a0 100644 --- a/packages/devextreme-angular/src/ui/chart/index.ts +++ b/packages/devextreme-angular/src/ui/chart/index.ts @@ -27,7 +27,7 @@ import * as CommonChartTypes from 'devextreme/common/charts'; import { AnimationEaseMode, TimeInterval, ChartsDataType, ScaleBreak, ScaleBreakLineStyle, DashStyle, Font, RelativePosition, DiscreteAxisDivisionMode, ArgumentAxisHoverMode, ChartsAxisLabelOverlap, TextOverflow, WordWrap, AxisScaleType, VisualRangeUpdateMode, ChartsColor, SeriesHoverMode, HatchDirection, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType, SeriesLabel, SeriesPoint, LegendItem, LegendHoverMode, Palette, PaletteExtensionMode, ChartsLabelOverlap, Theme } from 'devextreme/common/charts'; import { dxChartAnnotationConfig, AggregatedPointsPosition, ChartLabelDisplayMode, dxChartCommonAnnotationConfig, chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, FinancialChartReductionLevel, chartPointObject, ArgumentAxisClickEvent, DisposingEvent, DoneEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LegendClickEvent, OptionChangedEvent, PointClickEvent, PointHoverChangedEvent, PointSelectionChangedEvent, SeriesClickEvent, SeriesHoverChangedEvent, SeriesSelectionChangedEvent, TooltipHiddenEvent, TooltipShownEvent, ZoomEndEvent, ZoomStartEvent, ChartTooltipLocation, ChartZoomAndPanMode, EventKeyModifier } from 'devextreme/viz/chart'; import { HorizontalAlignment, VerticalAlignment, Position, ExportFormat, Orientation, VerticalEdge, SingleOrMultiple } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { ChartSeries } from 'devextreme/viz/common'; diff --git a/packages/devextreme-angular/src/ui/chart/nested/argument-axis.ts b/packages/devextreme-angular/src/ui/chart/nested/argument-axis.ts index 07a34a2ae592..be0dc37a5606 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/argument-axis.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/argument-axis.ts @@ -23,7 +23,7 @@ import * as CommonChartTypes from 'devextreme/common/charts'; import { AggregatedPointsPosition, ChartLabelDisplayMode } from 'devextreme/viz/chart'; import { TimeInterval, ChartsDataType, ScaleBreak, ScaleBreakLineStyle, DashStyle, Font, RelativePosition, DiscreteAxisDivisionMode, ArgumentAxisHoverMode, ChartsAxisLabelOverlap, TextOverflow, WordWrap, AxisScaleType, VisualRangeUpdateMode } from 'devextreme/common/charts'; import { HorizontalAlignment, VerticalAlignment, Position } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/axis-label.ts b/packages/devextreme-angular/src/ui/chart/nested/axis-label.ts index e029b1c99a90..6e322dc076f6 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/axis-label.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/axis-label.ts @@ -21,7 +21,7 @@ import { DOCUMENT } from '@angular/common'; import { HorizontalAlignment, Position } from 'devextreme/common'; import { ChartLabelDisplayMode } from 'devextreme/viz/chart'; import { Font, ChartsAxisLabelOverlap, RelativePosition, TextOverflow, WordWrap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/common-series-settings-label.ts b/packages/devextreme-angular/src/ui/chart/nested/common-series-settings-label.ts index 653960933dd8..3aa1257cf3f8 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/common-series-settings-label.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/common-series-settings-label.ts @@ -15,7 +15,7 @@ import { import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font, RelativePosition } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/chart/nested/common-series-settings.ts b/packages/devextreme-angular/src/ui/chart/nested/common-series-settings.ts index 4a7b2ab1fd50..5b14d47032ae 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/common-series-settings.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/common-series-settings.ts @@ -17,7 +17,7 @@ import { import { chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, FinancialChartReductionLevel } from 'devextreme/viz/chart'; import { DashStyle, ChartsColor, SeriesHoverMode, HatchDirection, Font, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType } from 'devextreme/common/charts'; import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/crosshair.ts b/packages/devextreme-angular/src/ui/chart/nested/crosshair.ts index f72f38b67343..39830b0a17c9 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/crosshair.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/crosshair.ts @@ -16,7 +16,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; import { chartPointObject } from 'devextreme/viz/chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/horizontal-line-label.ts b/packages/devextreme-angular/src/ui/chart/nested/horizontal-line-label.ts index 0b05dc4539e2..0e80954b30aa 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/horizontal-line-label.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/horizontal-line-label.ts @@ -16,7 +16,7 @@ import { import { chartPointObject } from 'devextreme/viz/chart'; import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/horizontal-line.ts b/packages/devextreme-angular/src/ui/chart/nested/horizontal-line.ts index 68ce7faa2ef5..c2c28da8c72f 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/horizontal-line.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/horizontal-line.ts @@ -16,7 +16,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; import { chartPointObject } from 'devextreme/viz/chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/label.ts b/packages/devextreme-angular/src/ui/chart/nested/label.ts index f8b166a145c9..4d4d4f318601 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/label.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/label.ts @@ -21,7 +21,7 @@ import { DOCUMENT } from '@angular/common'; import { Font, RelativePosition, ChartsAxisLabelOverlap, TextOverflow, WordWrap, DashStyle } from 'devextreme/common/charts'; import { HorizontalAlignment, Position, VerticalAlignment } from 'devextreme/common'; import { ChartLabelDisplayMode } from 'devextreme/viz/chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/series-dxi.ts b/packages/devextreme-angular/src/ui/chart/nested/series-dxi.ts index e01a29fea933..cbc8463f7271 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/series-dxi.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/series-dxi.ts @@ -15,7 +15,7 @@ import { import { chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, FinancialChartReductionLevel } from 'devextreme/viz/chart'; import { DashStyle, ChartsColor, SeriesHoverMode, HatchDirection, Font, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType } from 'devextreme/common/charts'; import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/tooltip.ts b/packages/devextreme-angular/src/ui/chart/nested/tooltip.ts index 30b9488b3b05..159fac95755f 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/tooltip.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font } from 'devextreme/common/charts'; import { ChartTooltipLocation } from 'devextreme/viz/chart'; diff --git a/packages/devextreme-angular/src/ui/chart/nested/value-axis-dxi.ts b/packages/devextreme-angular/src/ui/chart/nested/value-axis-dxi.ts index 45cf04d3f7a6..31156ae930f3 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/value-axis-dxi.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/value-axis-dxi.ts @@ -21,7 +21,7 @@ import * as CommonChartTypes from 'devextreme/common/charts'; import { AggregatedPointsPosition, ChartLabelDisplayMode } from 'devextreme/viz/chart'; import { ScaleBreak, ScaleBreakLineStyle, DashStyle, Font, RelativePosition, DiscreteAxisDivisionMode, ChartsAxisLabelOverlap, TextOverflow, WordWrap, TimeInterval, AxisScaleType, ChartsDataType, VisualRangeUpdateMode } from 'devextreme/common/charts'; import { HorizontalAlignment, VerticalAlignment, Position } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chart/nested/vertical-line.ts b/packages/devextreme-angular/src/ui/chart/nested/vertical-line.ts index 77b0d6d99f0d..b8cb87725a27 100644 --- a/packages/devextreme-angular/src/ui/chart/nested/vertical-line.ts +++ b/packages/devextreme-angular/src/ui/chart/nested/vertical-line.ts @@ -16,7 +16,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; import { chartPointObject } from 'devextreme/viz/chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/chat/index.ts b/packages/devextreme-angular/src/ui/chat/index.ts index 130a45304484..00d47f0e5160 100644 --- a/packages/devextreme-angular/src/ui/chat/index.ts +++ b/packages/devextreme-angular/src/ui/chat/index.ts @@ -26,7 +26,7 @@ import DataSource from 'devextreme/data/data_source'; import { Alert, Message, DisposingEvent, InitializedEvent, MessageEnteredEvent, OptionChangedEvent, TypingEndEvent, TypingStartEvent, User } from 'devextreme/ui/chat'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxChat from 'devextreme/ui/chat'; diff --git a/packages/devextreme-angular/src/ui/circular-gauge/index.ts b/packages/devextreme-angular/src/ui/circular-gauge/index.ts index 2b0018e383ee..8fb541bdca3a 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/index.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/index.ts @@ -23,7 +23,7 @@ import { import { AnimationEaseMode, Font, ChartsColor, Palette, PaletteExtensionMode, LabelOverlap, Theme, TextOverflow, WordWrap, DashStyle } from 'devextreme/common/charts'; import { ExportFormat, HorizontalAlignment, VerticalEdge } from 'devextreme/common'; import { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, OptionChangedEvent, TooltipHiddenEvent, TooltipShownEvent, CircularGaugeElementOrientation, CircularGaugeLabelOverlap } from 'devextreme/viz/circular_gauge'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { GaugeIndicator } from 'devextreme/viz/gauges/base_gauge'; import DxCircularGauge from 'devextreme/viz/circular_gauge'; diff --git a/packages/devextreme-angular/src/ui/circular-gauge/nested/label.ts b/packages/devextreme-angular/src/ui/circular-gauge/nested/label.ts index c6146bdb857f..1f849eecb21a 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/nested/label.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/nested/label.ts @@ -15,7 +15,7 @@ import { import { Font, LabelOverlap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { CircularGaugeLabelOverlap } from 'devextreme/viz/circular_gauge'; import { diff --git a/packages/devextreme-angular/src/ui/circular-gauge/nested/scale.ts b/packages/devextreme-angular/src/ui/circular-gauge/nested/scale.ts index 5c333f7867ff..46a851b24c80 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/nested/scale.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/nested/scale.ts @@ -15,7 +15,7 @@ import { import { Font, LabelOverlap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { CircularGaugeLabelOverlap, CircularGaugeElementOrientation } from 'devextreme/viz/circular_gauge'; import { diff --git a/packages/devextreme-angular/src/ui/circular-gauge/nested/subvalue-indicator.ts b/packages/devextreme-angular/src/ui/circular-gauge/nested/subvalue-indicator.ts index 7514b1c26f16..a3fab690eb86 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/nested/subvalue-indicator.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/nested/subvalue-indicator.ts @@ -16,7 +16,7 @@ import { import { ChartsColor, Palette, Font } from 'devextreme/common/charts'; import { HorizontalEdge, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/circular-gauge/nested/text.ts b/packages/devextreme-angular/src/ui/circular-gauge/nested/text.ts index 2f2c724587c7..c5b26f387f86 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/nested/text.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/nested/text.ts @@ -15,7 +15,7 @@ import { import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/circular-gauge/nested/tooltip.ts b/packages/devextreme-angular/src/ui/circular-gauge/nested/tooltip.ts index 2aa92c806253..7cf8df6aba42 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/nested/tooltip.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/circular-gauge/nested/value-indicator.ts b/packages/devextreme-angular/src/ui/circular-gauge/nested/value-indicator.ts index c884eaaad999..78b0128b1b35 100644 --- a/packages/devextreme-angular/src/ui/circular-gauge/nested/value-indicator.ts +++ b/packages/devextreme-angular/src/ui/circular-gauge/nested/value-indicator.ts @@ -16,7 +16,7 @@ import { import { ChartsColor, Palette, Font } from 'devextreme/common/charts'; import { HorizontalEdge, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/color-box/nested/animation.ts b/packages/devextreme-angular/src/ui/color-box/nested/animation.ts index 17e6fdaf455f..efa548f41597 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/color-box/nested/collision.ts b/packages/devextreme-angular/src/ui/color-box/nested/collision.ts index 6b91b5e9a69f..b2a7380744fc 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/color-box/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/color-box/nested/drop-down-options.ts index 705976f9b24c..98c2ecf6d1f9 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/color-box/nested/from.ts b/packages/devextreme-angular/src/ui/color-box/nested/from.ts index 153eca2035c8..6327ea7bd6fa 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/from.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/color-box/nested/hide.ts b/packages/devextreme-angular/src/ui/color-box/nested/hide.ts index 31807132def2..e9980912df78 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/color-box/nested/position.ts b/packages/devextreme-angular/src/ui/color-box/nested/position.ts index c868a6cdbfec..a7fc8ea8074d 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/position.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/color-box/nested/show.ts b/packages/devextreme-angular/src/ui/color-box/nested/show.ts index 1c8f66266247..927924fb2fa2 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/show.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/color-box/nested/to.ts b/packages/devextreme-angular/src/ui/color-box/nested/to.ts index a7b9b3051f3f..9d4b13663230 100644 --- a/packages/devextreme-angular/src/ui/color-box/nested/to.ts +++ b/packages/devextreme-angular/src/ui/color-box/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/context-menu/index.ts b/packages/devextreme-angular/src/ui/context-menu/index.ts index 2ba095b072c4..e5e900a726ff 100644 --- a/packages/devextreme-angular/src/ui/context-menu/index.ts +++ b/packages/devextreme-angular/src/ui/context-menu/index.ts @@ -24,12 +24,11 @@ import { export { ExplicitTypes } from 'devextreme/ui/context_menu'; import DataSource from 'devextreme/data/data_source'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; import { dxContextMenuItem, ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemRenderedEvent, OptionChangedEvent, PositioningEvent, SelectionChangedEvent, ShowingEvent, ShownEvent, ContextSubmenuDirection } from 'devextreme/ui/context_menu'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; -import { PositionConfig } from 'devextreme/animation/position'; import { SingleOrNone, SubmenuShowMode } from 'devextreme/common'; import DxContextMenu from 'devextreme/ui/context_menu'; diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/animation.ts b/packages/devextreme-angular/src/ui/context-menu/nested/animation.ts index 3a4b35d6ae27..7594966972fa 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/collision.ts b/packages/devextreme-angular/src/ui/context-menu/nested/collision.ts index 5a545dec5ade..f79e7ebb3cb9 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/from.ts b/packages/devextreme-angular/src/ui/context-menu/nested/from.ts index a843a8b291c0..f59884706bc3 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/from.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/hide.ts b/packages/devextreme-angular/src/ui/context-menu/nested/hide.ts index 76255d0fed32..b6f569ec7eae 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/position.ts b/packages/devextreme-angular/src/ui/context-menu/nested/position.ts index 362c1f0cb085..748a7a42bc70 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/position.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/show.ts b/packages/devextreme-angular/src/ui/context-menu/nested/show.ts index 1ea02551ade3..a0183da6a6e7 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/show.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/context-menu/nested/to.ts b/packages/devextreme-angular/src/ui/context-menu/nested/to.ts index 2a62ccce7f31..6ff30d7125ea 100644 --- a/packages/devextreme-angular/src/ui/context-menu/nested/to.ts +++ b/packages/devextreme-angular/src/ui/context-menu/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/index.ts b/packages/devextreme-angular/src/ui/data-grid/index.ts index cb73f73643b1..6d60f8d17b7b 100644 --- a/packages/devextreme-angular/src/ui/data-grid/index.ts +++ b/packages/devextreme-angular/src/ui/data-grid/index.ts @@ -28,7 +28,7 @@ import dxDataGrid from 'devextreme/ui/data_grid'; import dxSortable from 'devextreme/ui/sortable'; import dxDraggable from 'devextreme/ui/draggable'; import { ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig, ColumnResizeMode, DataChange, GridsEditMode, NewRowPosition, GridsEditRefreshMode, StartEditAction, GridBase, ApplyFilterMode, GroupExpandMode, HeaderFilterSearchConfig, EnterKeyAction, EnterKeyDirection, Pager, DataRenderMode, SelectionColumnDisplayMode, StateStoreType, SummaryType } from 'devextreme/common/grids'; -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { SortOrder, Mode, DragDirection, DragHighlight, ScrollbarMode, SingleMultipleOrNone, SelectAllMode, HorizontalAlignment } from 'devextreme/common'; import { dxDataGridColumn, dxDataGridRowObject, DataGridExportFormat, AdaptiveDetailRowPreparingEvent, CellClickEvent, CellDblClickEvent, CellHoverChangedEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, ExportingEvent, FocusedCellChangedEvent, FocusedCellChangingEvent, FocusedRowChangedEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, OptionChangedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, SelectionChangedEvent, ToolbarPreparingEvent, DataGridScrollMode, SelectionSensitivity, dxDataGridToolbar } from 'devextreme/ui/data_grid'; import { DataSourceOptions } from 'devextreme/data/data_source'; @@ -36,8 +36,8 @@ import { Store } from 'devextreme/data/store'; import { dxFormOptions } from 'devextreme/ui/form'; import { dxPopupOptions } from 'devextreme/ui/popup'; import { dxFilterBuilderOptions } from 'devextreme/ui/filter_builder'; -import { event } from 'devextreme/events/index'; -import { Format } from 'devextreme/localization'; +import { event } from 'devextreme/events/events.types'; +import { Format } from 'devextreme/common/core/localization'; import DxDataGrid from 'devextreme/ui/data_grid'; diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/animation.ts b/packages/devextreme-angular/src/ui/data-grid/nested/animation.ts index 0e47d8ab5bf9..160a4e032aa1 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/collision.ts b/packages/devextreme-angular/src/ui/data-grid/nested/collision.ts index b9d4a89d65ff..1aee9afb4442 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/column-chooser.ts b/packages/devextreme-angular/src/ui/data-grid/nested/column-chooser.ts index ca1d8d41e4dd..5990d158da3c 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/column-chooser.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/column-chooser.ts @@ -15,7 +15,7 @@ import { import { ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig } from 'devextreme/common/grids'; -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { SortOrder } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/column-dxi.ts b/packages/devextreme-angular/src/ui/data-grid/nested/column-dxi.ts index 671f1861226f..9cb8be81f4b7 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/column-dxi.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/column-dxi.ts @@ -21,7 +21,7 @@ import * as CommonTypes from 'devextreme/common'; import { HorizontalAlignment, DataType, SearchMode, SortOrder } from 'devextreme/common'; import { DataGridPredefinedColumnButton, dxDataGridColumnButton, dxDataGridColumn, DataGridCommandColumnType } from 'devextreme/ui/data_grid'; import { FilterOperation, FilterType, FixedPosition, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, SelectedFilterOperation } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { dxFormSimpleItem } from 'devextreme/ui/form'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/field-dxi.ts b/packages/devextreme-angular/src/ui/data-grid/nested/field-dxi.ts index 200376dfee4c..6330206edd52 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/field-dxi.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/field-dxi.ts @@ -14,7 +14,7 @@ import { import { DataType } from 'devextreme/common'; import { FilterBuilderOperation } from 'devextreme/ui/filter_builder'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/filter-builder-popup.ts b/packages/devextreme-angular/src/ui/data-grid/nested/filter-builder-popup.ts index 56ef89ad8f5b..f2ccc16f1e2c 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/filter-builder-popup.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/filter-builder-popup.ts @@ -19,11 +19,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/from.ts b/packages/devextreme-angular/src/ui/data-grid/nested/from.ts index 35ac8347631e..b3c614629467 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/from.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/group-item-dxi.ts b/packages/devextreme-angular/src/ui/data-grid/nested/group-item-dxi.ts index 28b64dd4ccc1..ec16af30e49e 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/group-item-dxi.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/group-item-dxi.ts @@ -13,7 +13,7 @@ import { import { SummaryType } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/hide.ts b/packages/devextreme-angular/src/ui/data-grid/nested/hide.ts index 100b25b03d7d..30b53359f0f2 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/popup.ts b/packages/devextreme-angular/src/ui/data-grid/nested/popup.ts index 0ebef132c2b3..9c4460ca91a9 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/popup.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/popup.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/position.ts b/packages/devextreme-angular/src/ui/data-grid/nested/position.ts index e91c6fe35523..a97f07d52165 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/position.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/row-dragging.ts b/packages/devextreme-angular/src/ui/data-grid/nested/row-dragging.ts index 92b57f53eca7..6a983762ff22 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/row-dragging.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/row-dragging.ts @@ -18,7 +18,7 @@ import dxSortable from 'devextreme/ui/sortable'; import dxDraggable from 'devextreme/ui/draggable'; import { DragDirection, DragHighlight } from 'devextreme/common'; import { GridBase } from 'devextreme/common/grids'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/show.ts b/packages/devextreme-angular/src/ui/data-grid/nested/show.ts index 257067fb9748..eda205474729 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/show.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/summary.ts b/packages/devextreme-angular/src/ui/data-grid/nested/summary.ts index 18c76d902d1f..faf42826c052 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/summary.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/summary.ts @@ -19,7 +19,7 @@ import { import dxDataGrid from 'devextreme/ui/data_grid'; import { SummaryType } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { HorizontalAlignment } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/to.ts b/packages/devextreme-angular/src/ui/data-grid/nested/to.ts index ee98029726ab..9c2c85a94905 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/to.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/total-item-dxi.ts b/packages/devextreme-angular/src/ui/data-grid/nested/total-item-dxi.ts index 870cfd595f20..d912608733ac 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/total-item-dxi.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/total-item-dxi.ts @@ -14,7 +14,7 @@ import { import { HorizontalAlignment } from 'devextreme/common'; import { SummaryType } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-box/index.ts b/packages/devextreme-angular/src/ui/date-box/index.ts index ebf9b047aade..7c5d2ee31505 100644 --- a/packages/devextreme-angular/src/ui/date-box/index.ts +++ b/packages/devextreme-angular/src/ui/date-box/index.ts @@ -28,7 +28,7 @@ import dxDateBox from 'devextreme/ui/date_box'; import { ApplyValueMode, TextEditorButton, LabelMode, EditorStyle, ValidationMessageMode, Mode, Position, ValidationStatus } from 'devextreme/common'; import { DropDownPredefinedButton } from 'devextreme/ui/drop_down_editor/ui.drop_down_editor'; import { dxCalendarOptions } from 'devextreme/ui/calendar'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { dxPopupOptions } from 'devextreme/ui/popup'; import { ChangeEvent, ClosedEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, OptionChangedEvent, PasteEvent, ValueChangedEvent, DatePickerType, DateType } from 'devextreme/ui/date_box'; diff --git a/packages/devextreme-angular/src/ui/date-box/nested/animation.ts b/packages/devextreme-angular/src/ui/date-box/nested/animation.ts index 44b52ee168a3..e4098f25e80b 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-box/nested/collision.ts b/packages/devextreme-angular/src/ui/date-box/nested/collision.ts index 9fc9e5a49952..f295cc9a4276 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-box/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/date-box/nested/drop-down-options.ts index 4e6f15ca3766..f8b528cf8c18 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/date-box/nested/from.ts b/packages/devextreme-angular/src/ui/date-box/nested/from.ts index 14f8a16f2eab..7755cc879f71 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/from.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-box/nested/hide.ts b/packages/devextreme-angular/src/ui/date-box/nested/hide.ts index 5cdca518af54..e79f9ea03eb6 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/date-box/nested/position.ts b/packages/devextreme-angular/src/ui/date-box/nested/position.ts index f668ab56626d..e5ba8c6be6f6 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/position.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-box/nested/show.ts b/packages/devextreme-angular/src/ui/date-box/nested/show.ts index 965f23179de4..db9a83fee1ce 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/show.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/date-box/nested/to.ts b/packages/devextreme-angular/src/ui/date-box/nested/to.ts index d354fb9adeff..26f927f858e6 100644 --- a/packages/devextreme-angular/src/ui/date-box/nested/to.ts +++ b/packages/devextreme-angular/src/ui/date-box/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-range-box/index.ts b/packages/devextreme-angular/src/ui/date-range-box/index.ts index 17ed3de6c059..a457b2e7525b 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/index.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/index.ts @@ -27,7 +27,7 @@ import { import { ApplyValueMode, TextEditorButton, LabelMode, EditorStyle, ValidationMessageMode, Mode, Position, ValidationStatus } from 'devextreme/common'; import { DropDownPredefinedButton } from 'devextreme/ui/drop_down_editor/ui.drop_down_editor'; import { dxCalendarOptions } from 'devextreme/ui/calendar'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { dxPopupOptions } from 'devextreme/ui/popup'; import { ChangeEvent, ClosedEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, OptionChangedEvent, PasteEvent, ValueChangedEvent } from 'devextreme/ui/date_range_box'; diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/animation.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/animation.ts index 3f73fa4bd6b3..70af37164f88 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/collision.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/collision.ts index 1ff952ce579b..afa98b591c22 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/drop-down-options.ts index 99ec00b6e941..83d6b1c676db 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/from.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/from.ts index 0207d77f4b67..432c15d7564b 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/from.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/hide.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/hide.ts index 8188e978b63e..b3b160576e49 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/position.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/position.ts index 1f7613b959a4..37f6437612b5 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/position.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/show.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/show.ts index 9dc70f99e7d8..0b1534035978 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/show.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/date-range-box/nested/to.ts b/packages/devextreme-angular/src/ui/date-range-box/nested/to.ts index b8d6422ac390..81387cd87520 100644 --- a/packages/devextreme-angular/src/ui/date-range-box/nested/to.ts +++ b/packages/devextreme-angular/src/ui/date-range-box/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/defer-rendering/index.ts b/packages/devextreme-angular/src/ui/defer-rendering/index.ts index 8542e8a4bd30..04d631d6906e 100644 --- a/packages/devextreme-angular/src/ui/defer-rendering/index.ts +++ b/packages/devextreme-angular/src/ui/defer-rendering/index.ts @@ -17,7 +17,7 @@ import { } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, RenderedEvent, ShownEvent } from 'devextreme/ui/defer_rendering'; import { DxPromise } from 'devextreme/core/utils/deferred'; diff --git a/packages/devextreme-angular/src/ui/defer-rendering/nested/animation.ts b/packages/devextreme-angular/src/ui/defer-rendering/nested/animation.ts index b8a057314a3d..465536f13366 100644 --- a/packages/devextreme-angular/src/ui/defer-rendering/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/defer-rendering/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/defer-rendering/nested/collision.ts b/packages/devextreme-angular/src/ui/defer-rendering/nested/collision.ts index 85417424ea71..b4f2f9c8ee0c 100644 --- a/packages/devextreme-angular/src/ui/defer-rendering/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/defer-rendering/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/defer-rendering/nested/from.ts b/packages/devextreme-angular/src/ui/defer-rendering/nested/from.ts index ed0b403192c7..5bf137547e7f 100644 --- a/packages/devextreme-angular/src/ui/defer-rendering/nested/from.ts +++ b/packages/devextreme-angular/src/ui/defer-rendering/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/defer-rendering/nested/position.ts b/packages/devextreme-angular/src/ui/defer-rendering/nested/position.ts index 1e8a23218e8c..0800808757c7 100644 --- a/packages/devextreme-angular/src/ui/defer-rendering/nested/position.ts +++ b/packages/devextreme-angular/src/ui/defer-rendering/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/defer-rendering/nested/to.ts b/packages/devextreme-angular/src/ui/defer-rendering/nested/to.ts index 045b06934978..c6d052ce5b90 100644 --- a/packages/devextreme-angular/src/ui/defer-rendering/nested/to.ts +++ b/packages/devextreme-angular/src/ui/defer-rendering/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drawer/index.ts b/packages/devextreme-angular/src/ui/drawer/index.ts index 053816ce6a0f..a2f08d33ed0e 100644 --- a/packages/devextreme-angular/src/ui/drawer/index.ts +++ b/packages/devextreme-angular/src/ui/drawer/index.ts @@ -17,7 +17,7 @@ import { } from '@angular/core'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import { DisposingEvent, InitializedEvent, OptionChangedEvent, OpenedStateMode, PanelLocation, RevealMode } from 'devextreme/ui/drawer'; import DxDrawer from 'devextreme/ui/drawer'; diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/animation.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/animation.ts index f4357f00e3fc..0b9911cc3fe3 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/collision.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/collision.ts index 46c782f70fd3..733a0006099c 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/drop-down-options.ts index 61ed85322d1a..fdd881c15fae 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/from.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/from.ts index 0f9a2ae35b13..739262cdb6ce 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/from.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/hide.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/hide.ts index 84bd2aa37da8..b166131c7f6b 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/position.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/position.ts index 014e0c6946ec..be2f0d4975cc 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/position.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/show.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/show.ts index f44e7d7bb8d6..fd58c8b41bf5 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/show.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/drop-down-box/nested/to.ts b/packages/devextreme-angular/src/ui/drop-down-box/nested/to.ts index f4235b576860..8ef6ad765f6e 100644 --- a/packages/devextreme-angular/src/ui/drop-down-box/nested/to.ts +++ b/packages/devextreme-angular/src/ui/drop-down-box/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/animation.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/animation.ts index 781529c8020a..8d8cd936e825 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/collision.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/collision.ts index a2c31d7d31f9..b1c7c167e2e0 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/drop-down-options.ts index 61fe5cced05e..e1bdf04c2a90 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/from.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/from.ts index 8b3d9f53f4e6..55ff680aae74 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/from.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/hide.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/hide.ts index 0b1b5f03aad2..8c68b022f457 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/position.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/position.ts index a20075abb9b5..e1b2d36af4df 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/position.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/show.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/show.ts index e85d7ffd3989..c7b67a45e6d1 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/show.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/to.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/to.ts index db2ced937087..d88f223fc5cb 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/to.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/filter-builder/nested/field-dxi.ts b/packages/devextreme-angular/src/ui/filter-builder/nested/field-dxi.ts index 5f78539ce8fd..ffb2e61c6519 100644 --- a/packages/devextreme-angular/src/ui/filter-builder/nested/field-dxi.ts +++ b/packages/devextreme-angular/src/ui/filter-builder/nested/field-dxi.ts @@ -14,7 +14,7 @@ import { import { DataType } from 'devextreme/common'; import { FilterBuilderOperation } from 'devextreme/ui/filter_builder'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/funnel/index.ts b/packages/devextreme-angular/src/ui/funnel/index.ts index 73880049619e..c691dba9fc12 100644 --- a/packages/devextreme-angular/src/ui/funnel/index.ts +++ b/packages/devextreme-angular/src/ui/funnel/index.ts @@ -26,7 +26,7 @@ import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { ExportFormat, HorizontalEdge, HorizontalAlignment, Position, Orientation, VerticalEdge, SingleMultipleOrNone } from 'devextreme/common'; import { HatchDirection, DashStyle, Font, LabelPosition, TextOverflow, WordWrap, Palette, PaletteExtensionMode, ShiftLabelOverlap, Theme } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxFunnel from 'devextreme/viz/funnel'; diff --git a/packages/devextreme-angular/src/ui/funnel/nested/label.ts b/packages/devextreme-angular/src/ui/funnel/nested/label.ts index 0c05a4adc84b..fb2972425491 100644 --- a/packages/devextreme-angular/src/ui/funnel/nested/label.ts +++ b/packages/devextreme-angular/src/ui/funnel/nested/label.ts @@ -16,7 +16,7 @@ import { import { DashStyle, Font, LabelPosition, TextOverflow, WordWrap } from 'devextreme/common/charts'; import { dxFunnelItem } from 'devextreme/viz/funnel'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { HorizontalEdge } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/funnel/nested/tooltip.ts b/packages/devextreme-angular/src/ui/funnel/nested/tooltip.ts index 835371e807ff..a7954d27429e 100644 --- a/packages/devextreme-angular/src/ui/funnel/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/funnel/nested/tooltip.ts @@ -16,7 +16,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; import { dxFunnelItem } from 'devextreme/viz/funnel'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/gantt/nested/column-dxi.ts b/packages/devextreme-angular/src/ui/gantt/nested/column-dxi.ts index a918dd31e800..177604efadfb 100644 --- a/packages/devextreme-angular/src/ui/gantt/nested/column-dxi.ts +++ b/packages/devextreme-angular/src/ui/gantt/nested/column-dxi.ts @@ -16,7 +16,7 @@ import { import { HorizontalAlignment, DataType, SearchMode, SortOrder } from 'devextreme/common'; import { FilterOperation, FilterType, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, SelectedFilterOperation } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/linear-gauge/index.ts b/packages/devextreme-angular/src/ui/linear-gauge/index.ts index b370530cfe7e..1e5c288ef831 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/index.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/index.ts @@ -23,7 +23,7 @@ import { import { AnimationEaseMode, Font, ChartsColor, Palette, PaletteExtensionMode, LabelOverlap, Theme, TextOverflow, WordWrap, DashStyle } from 'devextreme/common/charts'; import { ExportFormat, Orientation, HorizontalAlignment, VerticalAlignment, VerticalEdge } from 'devextreme/common'; import { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, OptionChangedEvent, TooltipHiddenEvent, TooltipShownEvent } from 'devextreme/viz/linear_gauge'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { GaugeIndicator } from 'devextreme/viz/gauges/base_gauge'; import DxLinearGauge from 'devextreme/viz/linear_gauge'; diff --git a/packages/devextreme-angular/src/ui/linear-gauge/nested/label.ts b/packages/devextreme-angular/src/ui/linear-gauge/nested/label.ts index 96f74dcec348..28632aa4d778 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/nested/label.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/nested/label.ts @@ -15,7 +15,7 @@ import { import { Font, LabelOverlap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/linear-gauge/nested/scale.ts b/packages/devextreme-angular/src/ui/linear-gauge/nested/scale.ts index c766ac842cfc..58c1a6f1df91 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/nested/scale.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/nested/scale.ts @@ -16,7 +16,7 @@ import { import { HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; import { Font, LabelOverlap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/linear-gauge/nested/subvalue-indicator.ts b/packages/devextreme-angular/src/ui/linear-gauge/nested/subvalue-indicator.ts index 3384cebac527..7a93ee9fc71c 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/nested/subvalue-indicator.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/nested/subvalue-indicator.ts @@ -16,7 +16,7 @@ import { import { ChartsColor, Palette, Font } from 'devextreme/common/charts'; import { HorizontalEdge, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/linear-gauge/nested/text.ts b/packages/devextreme-angular/src/ui/linear-gauge/nested/text.ts index 80329ef6bdd6..5fa1f10a102a 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/nested/text.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/nested/text.ts @@ -15,7 +15,7 @@ import { import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/linear-gauge/nested/tooltip.ts b/packages/devextreme-angular/src/ui/linear-gauge/nested/tooltip.ts index 982a5fb06475..26713d4276bb 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/nested/tooltip.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/linear-gauge/nested/value-indicator.ts b/packages/devextreme-angular/src/ui/linear-gauge/nested/value-indicator.ts index 57808a3c4ed4..61d93efc1c45 100644 --- a/packages/devextreme-angular/src/ui/linear-gauge/nested/value-indicator.ts +++ b/packages/devextreme-angular/src/ui/linear-gauge/nested/value-indicator.ts @@ -16,7 +16,7 @@ import { import { ChartsColor, Palette, Font } from 'devextreme/common/charts'; import { HorizontalEdge, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/load-panel/index.ts b/packages/devextreme-angular/src/ui/load-panel/index.ts index 022b1a9ccabe..95fb08fa0afc 100644 --- a/packages/devextreme-angular/src/ui/load-panel/index.ts +++ b/packages/devextreme-angular/src/ui/load-panel/index.ts @@ -17,11 +17,10 @@ import { } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; import { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, OptionChangedEvent, ShowingEvent, ShownEvent } from 'devextreme/ui/load_panel'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import DxLoadPanel from 'devextreme/ui/load_panel'; diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/animation.ts b/packages/devextreme-angular/src/ui/load-panel/nested/animation.ts index 2cb5791080dc..c7cff62b2841 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/collision.ts b/packages/devextreme-angular/src/ui/load-panel/nested/collision.ts index 7109f2eb3c11..995b9f1624aa 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/from.ts b/packages/devextreme-angular/src/ui/load-panel/nested/from.ts index 53f095a9513f..d01f068fd4cf 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/from.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/hide.ts b/packages/devextreme-angular/src/ui/load-panel/nested/hide.ts index 3addc875e492..c67345051c2b 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/position.ts b/packages/devextreme-angular/src/ui/load-panel/nested/position.ts index f2896806b615..1abc67b6f244 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/position.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/show.ts b/packages/devextreme-angular/src/ui/load-panel/nested/show.ts index 21b4ba122e75..ef0fd098d6be 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/show.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/load-panel/nested/to.ts b/packages/devextreme-angular/src/ui/load-panel/nested/to.ts index ce9bb916da11..da284d7812e9 100644 --- a/packages/devextreme-angular/src/ui/load-panel/nested/to.ts +++ b/packages/devextreme-angular/src/ui/load-panel/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/lookup/nested/animation.ts b/packages/devextreme-angular/src/ui/lookup/nested/animation.ts index 900c13f36186..05c6d7cc4ecb 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/lookup/nested/collision.ts b/packages/devextreme-angular/src/ui/lookup/nested/collision.ts index 753713672a8c..9908a9cfe74d 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/lookup/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/lookup/nested/drop-down-options.ts index 193d199a0394..558010270f05 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/drop-down-options.ts @@ -19,11 +19,10 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; import { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, OptionChangedEvent, ShowingEvent, ShownEvent, TitleRenderedEvent } from 'devextreme/ui/popover'; import { Position } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/lookup/nested/from.ts b/packages/devextreme-angular/src/ui/lookup/nested/from.ts index 36e9627ed2df..2aec82a953d3 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/from.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/lookup/nested/hide.ts b/packages/devextreme-angular/src/ui/lookup/nested/hide.ts index da1d44676aae..e4be9750b683 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/lookup/nested/position.ts b/packages/devextreme-angular/src/ui/lookup/nested/position.ts index 302ed789f4f5..87d896602897 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/position.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/lookup/nested/show.ts b/packages/devextreme-angular/src/ui/lookup/nested/show.ts index 7f2ee01e84f7..49ffef9c6145 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/show.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/lookup/nested/to.ts b/packages/devextreme-angular/src/ui/lookup/nested/to.ts index e5e04fce98ec..89b998e5ecb2 100644 --- a/packages/devextreme-angular/src/ui/lookup/nested/to.ts +++ b/packages/devextreme-angular/src/ui/lookup/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/menu/index.ts b/packages/devextreme-angular/src/ui/menu/index.ts index db41fafbbb49..cd91855cf623 100644 --- a/packages/devextreme-angular/src/ui/menu/index.ts +++ b/packages/devextreme-angular/src/ui/menu/index.ts @@ -24,7 +24,7 @@ import { export { ExplicitTypes } from 'devextreme/ui/menu'; import DataSource from 'devextreme/data/data_source'; -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { dxMenuItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemRenderedEvent, OptionChangedEvent, SelectionChangedEvent, SubmenuHiddenEvent, SubmenuHidingEvent, SubmenuShowingEvent, SubmenuShownEvent, SubmenuDirection } from 'devextreme/ui/menu'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/menu/nested/animation.ts b/packages/devextreme-angular/src/ui/menu/nested/animation.ts index cd7e878fc913..a98dab3094cd 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/menu/nested/collision.ts b/packages/devextreme-angular/src/ui/menu/nested/collision.ts index f11ee240aa26..a7c6e8af4beb 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/menu/nested/from.ts b/packages/devextreme-angular/src/ui/menu/nested/from.ts index f173416ca0de..6235dab8a5dd 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/from.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/menu/nested/hide.ts b/packages/devextreme-angular/src/ui/menu/nested/hide.ts index 73047a4e778a..86811db81e82 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/menu/nested/position.ts b/packages/devextreme-angular/src/ui/menu/nested/position.ts index 7787511df6cc..5949479c0abe 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/position.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/menu/nested/show.ts b/packages/devextreme-angular/src/ui/menu/nested/show.ts index e320f5dfb2b0..53329bb95207 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/show.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/menu/nested/to.ts b/packages/devextreme-angular/src/ui/menu/nested/to.ts index 37871e39905d..3445d880111c 100644 --- a/packages/devextreme-angular/src/ui/menu/nested/to.ts +++ b/packages/devextreme-angular/src/ui/menu/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/argument-axis.ts b/packages/devextreme-angular/src/ui/nested/argument-axis.ts index 161d9aa70846..8a2b3b8fef76 100644 --- a/packages/devextreme-angular/src/ui/nested/argument-axis.ts +++ b/packages/devextreme-angular/src/ui/nested/argument-axis.ts @@ -21,7 +21,7 @@ import { import { HorizontalAlignment, Position, VerticalAlignment } from 'devextreme/common'; import { ArgumentAxisHoverMode, AxisScaleType, ChartsAxisLabelOverlap, ChartsDataType, DashStyle, DiscreteAxisDivisionMode, Font, LabelOverlap, RelativePosition, ScaleBreak, ScaleBreakLineStyle, TextOverflow, TimeInterval, VisualRange, VisualRangeUpdateMode, WordWrap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { AggregatedPointsPosition, ChartLabelDisplayMode } from 'devextreme/viz/chart'; import { diff --git a/packages/devextreme-angular/src/ui/nested/base/animation-config.ts b/packages/devextreme-angular/src/ui/nested/base/animation-config.ts index 859514f90e03..5f63df1cbb0b 100644 --- a/packages/devextreme-angular/src/ui/nested/base/animation-config.ts +++ b/packages/devextreme-angular/src/ui/nested/base/animation-config.ts @@ -5,9 +5,9 @@ import { Component, } from '@angular/core'; -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; import { Direction } from 'devextreme/common'; import { AnimationEaseMode } from 'devextreme/common/charts'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; @Component({ template: '' diff --git a/packages/devextreme-angular/src/ui/nested/base/animation-state.ts b/packages/devextreme-angular/src/ui/nested/base/animation-state.ts index 48d3349934e2..9d5c2c2466de 100644 --- a/packages/devextreme-angular/src/ui/nested/base/animation-state.ts +++ b/packages/devextreme-angular/src/ui/nested/base/animation-state.ts @@ -5,7 +5,7 @@ import { Component, } from '@angular/core'; -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; @Component({ template: '' diff --git a/packages/devextreme-angular/src/ui/nested/base/chart-common-series-settings.ts b/packages/devextreme-angular/src/ui/nested/base/chart-common-series-settings.ts index b8427cc08ad9..7d37c32de86f 100644 --- a/packages/devextreme-angular/src/ui/nested/base/chart-common-series-settings.ts +++ b/packages/devextreme-angular/src/ui/nested/base/chart-common-series-settings.ts @@ -7,7 +7,7 @@ import { import { HorizontalAlignment } from 'devextreme/common'; import { ChartsColor, ChartsDataType, DashStyle, Font, HatchDirection, LabelPosition, PointInteractionMode, PointSymbol, RelativePosition, SeriesHoverMode, SeriesSelectionMode, SeriesType, TextOverflow, ValueErrorBarDisplayMode, ValueErrorBarType, WordWrap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { ChartSeriesAggregationMethod, FinancialChartReductionLevel } from 'devextreme/viz/chart'; import { PieChartSeriesInteractionMode, SmallValuesGroupingMode } from 'devextreme/viz/pie_chart'; import { PolarChartSeriesType } from 'devextreme/viz/polar_chart'; diff --git a/packages/devextreme-angular/src/ui/nested/base/chart-series-dxi.ts b/packages/devextreme-angular/src/ui/nested/base/chart-series-dxi.ts index 38e4a2acb339..b6a09e261006 100644 --- a/packages/devextreme-angular/src/ui/nested/base/chart-series-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/base/chart-series-dxi.ts @@ -7,7 +7,7 @@ import { import { HorizontalAlignment } from 'devextreme/common'; import { ChartsColor, ChartsDataType, DashStyle, Font, HatchDirection, LabelPosition, PointInteractionMode, PointSymbol, RelativePosition, SeriesHoverMode, SeriesSelectionMode, SeriesType, TextOverflow, ValueErrorBarDisplayMode, ValueErrorBarType, WordWrap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { ChartSeriesAggregationMethod, FinancialChartReductionLevel } from 'devextreme/viz/chart'; import { PieChartSeriesInteractionMode, SmallValuesGroupingMode } from 'devextreme/viz/pie_chart'; import { PolarChartSeriesType } from 'devextreme/viz/polar_chart'; diff --git a/packages/devextreme-angular/src/ui/nested/base/data-grid-column-dxi.ts b/packages/devextreme-angular/src/ui/nested/base/data-grid-column-dxi.ts index 465fd6e907c0..ef55b211cdb5 100644 --- a/packages/devextreme-angular/src/ui/nested/base/data-grid-column-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/base/data-grid-column-dxi.ts @@ -6,10 +6,10 @@ import { } from '@angular/core'; import { AsyncRule, CompareRule, CustomRule, DataType, EmailRule, HorizontalAlignment, NumericRule, PatternRule, RangeRule, RequiredRule, SearchMode, SortOrder, StringLengthRule } from 'devextreme/common'; +import { Format } from 'devextreme/common/core/localization'; import { ColumnHeaderFilterSearchConfig, FilterOperation, FilterType, FixedPosition, HeaderFilterGroupInterval, SelectedFilterOperation } from 'devextreme/common/grids'; import { Store } from 'devextreme/data'; import { Options as DataSourceOptions } from 'devextreme/data/data_source'; -import { Format } from 'devextreme/localization'; import { DataGridCommandColumnType, DataGridPredefinedColumnButton, dxDataGridColumn, dxDataGridColumnButton } from 'devextreme/ui/data_grid'; import { SimpleItem } from 'devextreme/ui/form'; import { dxTreeListColumn, dxTreeListColumnButton, TreeListCommandColumnType, TreeListPredefinedColumnButton } from 'devextreme/ui/tree_list'; diff --git a/packages/devextreme-angular/src/ui/nested/base/filter-builder-field-dxi.ts b/packages/devextreme-angular/src/ui/nested/base/filter-builder-field-dxi.ts index 0ce11e619bab..07eaf9b5941c 100644 --- a/packages/devextreme-angular/src/ui/nested/base/filter-builder-field-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/base/filter-builder-field-dxi.ts @@ -6,9 +6,9 @@ import { } from '@angular/core'; import { DataType } from 'devextreme/common'; +import { Format } from 'devextreme/common/core/localization'; import { Store } from 'devextreme/data'; import { Options as DataSourceOptions } from 'devextreme/data/data_source'; -import { Format } from 'devextreme/localization'; import { FilterBuilderOperation } from 'devextreme/ui/filter_builder'; @Component({ diff --git a/packages/devextreme-angular/src/ui/nested/base/gauge-indicator.ts b/packages/devextreme-angular/src/ui/nested/base/gauge-indicator.ts index b808425e48db..78d398d6d07c 100644 --- a/packages/devextreme-angular/src/ui/nested/base/gauge-indicator.ts +++ b/packages/devextreme-angular/src/ui/nested/base/gauge-indicator.ts @@ -7,7 +7,7 @@ import { import { HorizontalEdge, VerticalEdge } from 'devextreme/common'; import { ChartsColor, Font, Palette } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; @Component({ template: '' diff --git a/packages/devextreme-angular/src/ui/nested/base/popup-options.ts b/packages/devextreme-angular/src/ui/nested/base/popup-options.ts index 148143298022..ed8c7cc868ff 100644 --- a/packages/devextreme-angular/src/ui/nested/base/popup-options.ts +++ b/packages/devextreme-angular/src/ui/nested/base/popup-options.ts @@ -5,9 +5,8 @@ import { Component, } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { PositionConfig } from 'devextreme/animation/position'; import { Position, PositionAlignment, ToolbarItemComponent, ToolbarItemLocation } from 'devextreme/common'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; import { UserDefinedElement } from 'devextreme/core/element'; import { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, OptionChangedEvent, ShowingEvent, ShownEvent, TitleRenderedEvent } from 'devextreme/ui/popover'; import { ToolbarLocation } from 'devextreme/ui/popup'; diff --git a/packages/devextreme-angular/src/ui/nested/base/position-config.ts b/packages/devextreme-angular/src/ui/nested/base/position-config.ts index f838b71c3506..c0e802676268 100644 --- a/packages/devextreme-angular/src/ui/nested/base/position-config.ts +++ b/packages/devextreme-angular/src/ui/nested/base/position-config.ts @@ -5,8 +5,8 @@ import { Component, } from '@angular/core'; -import { CollisionResolution, CollisionResolutionCombination } from 'devextreme/animation/position'; import { HorizontalAlignment, PositionAlignment, VerticalAlignment } from 'devextreme/common'; +import { CollisionResolution, CollisionResolutionCombination } from 'devextreme/common/core/animation'; import { UserDefinedElement } from 'devextreme/core/element'; @Component({ diff --git a/packages/devextreme-angular/src/ui/nested/collision.ts b/packages/devextreme-angular/src/ui/nested/collision.ts index 1c795c5c8d35..903767654a73 100644 --- a/packages/devextreme-angular/src/ui/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/column-chooser.ts b/packages/devextreme-angular/src/ui/nested/column-chooser.ts index 1365e382fcd7..3e4fa34a6efe 100644 --- a/packages/devextreme-angular/src/ui/nested/column-chooser.ts +++ b/packages/devextreme-angular/src/ui/nested/column-chooser.ts @@ -14,8 +14,8 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; import { SortOrder } from 'devextreme/common'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig } from 'devextreme/common/grids'; import { UserDefinedElement } from 'devextreme/core/element'; diff --git a/packages/devextreme-angular/src/ui/nested/crosshair.ts b/packages/devextreme-angular/src/ui/nested/crosshair.ts index 4ebdfbfb59bf..477682bfc464 100644 --- a/packages/devextreme-angular/src/ui/nested/crosshair.ts +++ b/packages/devextreme-angular/src/ui/nested/crosshair.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/nested/drop-down-options.ts index 3f0a050b4109..f6496c54d1f6 100644 --- a/packages/devextreme-angular/src/ui/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/nested/drop-down-options.ts @@ -19,8 +19,8 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; import { PositionAlignment } from 'devextreme/common'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/filter-builder-popup.ts b/packages/devextreme-angular/src/ui/nested/filter-builder-popup.ts index 8fbb64ea323f..353146f654cd 100644 --- a/packages/devextreme-angular/src/ui/nested/filter-builder-popup.ts +++ b/packages/devextreme-angular/src/ui/nested/filter-builder-popup.ts @@ -19,8 +19,8 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; import { PositionAlignment } from 'devextreme/common'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/group-item-dxi.ts b/packages/devextreme-angular/src/ui/nested/group-item-dxi.ts index 52dc82043c6b..8adde0461d43 100644 --- a/packages/devextreme-angular/src/ui/nested/group-item-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/group-item-dxi.ts @@ -12,8 +12,8 @@ import { +import { Format } from 'devextreme/common/core/localization'; import { SummaryType } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/horizontal-line.ts b/packages/devextreme-angular/src/ui/nested/horizontal-line.ts index 80f837bfbb98..b0c033ffb200 100644 --- a/packages/devextreme-angular/src/ui/nested/horizontal-line.ts +++ b/packages/devextreme-angular/src/ui/nested/horizontal-line.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/label.ts b/packages/devextreme-angular/src/ui/nested/label.ts index 75c69f62901c..563517b58ba1 100644 --- a/packages/devextreme-angular/src/ui/nested/label.ts +++ b/packages/devextreme-angular/src/ui/nested/label.ts @@ -20,7 +20,7 @@ import { DOCUMENT } from '@angular/common'; import { HorizontalAlignment, HorizontalEdge, Position, VerticalAlignment, VerticalEdge } from 'devextreme/common'; import { ChartsAxisLabelOverlap, DashStyle, Font, LabelOverlap, LabelPosition, RelativePosition, TextOverflow, WordWrap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { LabelLocation } from 'devextreme/ui/form'; import { ChartLabelDisplayMode } from 'devextreme/viz/chart'; import { CircularGaugeLabelOverlap } from 'devextreme/viz/circular_gauge'; diff --git a/packages/devextreme-angular/src/ui/nested/legend.ts b/packages/devextreme-angular/src/ui/nested/legend.ts index 8cf1ed2c4038..d006e72bc1f2 100644 --- a/packages/devextreme-angular/src/ui/nested/legend.ts +++ b/packages/devextreme-angular/src/ui/nested/legend.ts @@ -16,7 +16,7 @@ import { import { HorizontalAlignment, Orientation, Position, VerticalEdge } from 'devextreme/common'; import { DashStyle, Font, LegendHoverMode, RelativePosition } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { PieChartLegendHoverMode } from 'devextreme/viz/pie_chart'; import { diff --git a/packages/devextreme-angular/src/ui/nested/marker.ts b/packages/devextreme-angular/src/ui/nested/marker.ts index 173b9dcf3be4..245c671f5e35 100644 --- a/packages/devextreme-angular/src/ui/nested/marker.ts +++ b/packages/devextreme-angular/src/ui/nested/marker.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/popup.ts b/packages/devextreme-angular/src/ui/nested/popup.ts index 2b5b38c36f40..c9840eeaf512 100644 --- a/packages/devextreme-angular/src/ui/nested/popup.ts +++ b/packages/devextreme-angular/src/ui/nested/popup.ts @@ -19,8 +19,8 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; import { PositionAlignment } from 'devextreme/common'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/scale.ts b/packages/devextreme-angular/src/ui/nested/scale.ts index 56bea2049279..3b1d47833168 100644 --- a/packages/devextreme-angular/src/ui/nested/scale.ts +++ b/packages/devextreme-angular/src/ui/nested/scale.ts @@ -19,7 +19,7 @@ import { import { HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; import { ChartsDataType, DiscreteAxisDivisionMode, Font, LabelOverlap, ScaleBreak, ScaleBreakLineStyle, TimeInterval } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { CircularGaugeElementOrientation, CircularGaugeLabelOverlap } from 'devextreme/viz/circular_gauge'; import { AxisScale } from 'devextreme/viz/range_selector'; diff --git a/packages/devextreme-angular/src/ui/nested/slider-marker.ts b/packages/devextreme-angular/src/ui/nested/slider-marker.ts index 0da3ebd79507..78272623c01d 100644 --- a/packages/devextreme-angular/src/ui/nested/slider-marker.ts +++ b/packages/devextreme-angular/src/ui/nested/slider-marker.ts @@ -15,7 +15,7 @@ import { import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/summary.ts b/packages/devextreme-angular/src/ui/nested/summary.ts index de507d25dc21..0b3c0a05b433 100644 --- a/packages/devextreme-angular/src/ui/nested/summary.ts +++ b/packages/devextreme-angular/src/ui/nested/summary.ts @@ -18,8 +18,8 @@ import { import { HorizontalAlignment } from 'devextreme/common'; +import { Format } from 'devextreme/common/core/localization'; import { SummaryType } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/text.ts b/packages/devextreme-angular/src/ui/nested/text.ts index 22fd2330441e..5c54bb0697f1 100644 --- a/packages/devextreme-angular/src/ui/nested/text.ts +++ b/packages/devextreme-angular/src/ui/nested/text.ts @@ -15,7 +15,7 @@ import { import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/tooltip.ts b/packages/devextreme-angular/src/ui/nested/tooltip.ts index 885756c84840..024ccec46dd2 100644 --- a/packages/devextreme-angular/src/ui/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/nested/tooltip.ts @@ -16,8 +16,8 @@ import { import { TooltipShowMode, VerticalEdge } from 'devextreme/common'; import { DashStyle, Font } from 'devextreme/common/charts'; +import { Format } from 'devextreme/common/core/localization'; import { UserDefinedElement } from 'devextreme/core/element'; -import { Format } from 'devextreme/localization'; import { ChartTooltipLocation } from 'devextreme/viz/chart'; import { diff --git a/packages/devextreme-angular/src/ui/nested/total-item-dxi.ts b/packages/devextreme-angular/src/ui/nested/total-item-dxi.ts index 274918db3850..8360826e4c03 100644 --- a/packages/devextreme-angular/src/ui/nested/total-item-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/total-item-dxi.ts @@ -13,8 +13,8 @@ import { import { HorizontalAlignment } from 'devextreme/common'; +import { Format } from 'devextreme/common/core/localization'; import { SummaryType } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/nested/value-axis-dxi.ts b/packages/devextreme-angular/src/ui/nested/value-axis-dxi.ts index 439e3cc53aac..cf0e23dd86d8 100644 --- a/packages/devextreme-angular/src/ui/nested/value-axis-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/value-axis-dxi.ts @@ -19,7 +19,7 @@ import { import { HorizontalAlignment, Position, VerticalAlignment } from 'devextreme/common'; import { AxisScaleType, ChartsAxisLabelOverlap, ChartsDataType, DashStyle, DiscreteAxisDivisionMode, Font, RelativePosition, ScaleBreak, ScaleBreakLineStyle, TextOverflow, TimeInterval, VisualRange, VisualRangeUpdateMode, WordWrap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { AggregatedPointsPosition, ChartLabelDisplayMode } from 'devextreme/viz/chart'; import { diff --git a/packages/devextreme-angular/src/ui/nested/value-axis.ts b/packages/devextreme-angular/src/ui/nested/value-axis.ts index a4c12614ba46..9742edbbfdd0 100644 --- a/packages/devextreme-angular/src/ui/nested/value-axis.ts +++ b/packages/devextreme-angular/src/ui/nested/value-axis.ts @@ -20,7 +20,7 @@ import { import { AxisScaleType, ChartsDataType, DashStyle, DiscreteAxisDivisionMode, Font, LabelOverlap, TimeInterval, VisualRange } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { ValueAxisVisualRangeUpdateMode } from 'devextreme/viz/polar_chart'; import { ChartAxisScale } from 'devextreme/viz/range_selector'; diff --git a/packages/devextreme-angular/src/ui/nested/vertical-line.ts b/packages/devextreme-angular/src/ui/nested/vertical-line.ts index 3d0da13e4fdc..b8fb96f249a6 100644 --- a/packages/devextreme-angular/src/ui/nested/vertical-line.ts +++ b/packages/devextreme-angular/src/ui/nested/vertical-line.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/number-box/index.ts b/packages/devextreme-angular/src/ui/number-box/index.ts index d6c39f0ae2e6..da92d1b40943 100644 --- a/packages/devextreme-angular/src/ui/number-box/index.ts +++ b/packages/devextreme-angular/src/ui/number-box/index.ts @@ -26,7 +26,7 @@ import { import { NumberBoxPredefinedButton, NumberBoxType, ChangeEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OptionChangedEvent, PasteEvent, ValueChangedEvent } from 'devextreme/ui/number_box'; import { TextEditorButton, LabelMode, EditorStyle, ValidationMessageMode, Position, ValidationStatus } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxNumberBox from 'devextreme/ui/number_box'; diff --git a/packages/devextreme-angular/src/ui/pagination/index.ts b/packages/devextreme-angular/src/ui/pagination/index.ts index 73177e097030..9dff7b407b9f 100644 --- a/packages/devextreme-angular/src/ui/pagination/index.ts +++ b/packages/devextreme-angular/src/ui/pagination/index.ts @@ -21,7 +21,7 @@ import { import { DisplayMode } from 'devextreme/common'; -import { EventInfo } from 'devextreme/events/index'; +import { EventInfo } from 'devextreme/common/core/events'; import DxPagination from 'devextreme/ui/pagination'; diff --git a/packages/devextreme-angular/src/ui/pie-chart/index.ts b/packages/devextreme-angular/src/ui/pie-chart/index.ts index f4fe3a97df1d..204333de521e 100644 --- a/packages/devextreme-angular/src/ui/pie-chart/index.ts +++ b/packages/devextreme-angular/src/ui/pie-chart/index.ts @@ -25,7 +25,7 @@ import { import DataSource from 'devextreme/data/data_source'; import { AnimationEaseMode, ChartsDataType, DashStyle, ChartsColor, HatchDirection, Font, LabelPosition, TextOverflow, WordWrap, SeriesLabel, SeriesPoint, Palette, PaletteExtensionMode, ShiftLabelOverlap, Theme } from 'devextreme/common/charts'; import { dxPieChartAnnotationConfig, dxPieChartCommonAnnotationConfig, PieChartSeriesInteractionMode, SmallValuesGroupingMode, PieChartLegendItem, PieChartLegendHoverMode, DisposingEvent, DoneEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LegendClickEvent, OptionChangedEvent, PointClickEvent, PointHoverChangedEvent, PointSelectionChangedEvent, TooltipHiddenEvent, TooltipShownEvent, PieChartSegmentDirection, PieChartSeries, PieChartType } from 'devextreme/viz/pie_chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge, SingleOrMultiple } from 'devextreme/common'; diff --git a/packages/devextreme-angular/src/ui/pie-chart/nested/common-series-settings.ts b/packages/devextreme-angular/src/ui/pie-chart/nested/common-series-settings.ts index eee8b3abc395..3d43f7a13380 100644 --- a/packages/devextreme-angular/src/ui/pie-chart/nested/common-series-settings.ts +++ b/packages/devextreme-angular/src/ui/pie-chart/nested/common-series-settings.ts @@ -16,7 +16,7 @@ import { import { ChartsDataType, DashStyle, ChartsColor, HatchDirection, Font, LabelPosition, TextOverflow, WordWrap } from 'devextreme/common/charts'; import { PieChartSeriesInteractionMode, SmallValuesGroupingMode } from 'devextreme/viz/pie_chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/pie-chart/nested/label.ts b/packages/devextreme-angular/src/ui/pie-chart/nested/label.ts index ecac58d09e53..c59524fbf495 100644 --- a/packages/devextreme-angular/src/ui/pie-chart/nested/label.ts +++ b/packages/devextreme-angular/src/ui/pie-chart/nested/label.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font, LabelPosition, TextOverflow, WordWrap } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/pie-chart/nested/series-dxi.ts b/packages/devextreme-angular/src/ui/pie-chart/nested/series-dxi.ts index d7e525417730..38b5741a3f45 100644 --- a/packages/devextreme-angular/src/ui/pie-chart/nested/series-dxi.ts +++ b/packages/devextreme-angular/src/ui/pie-chart/nested/series-dxi.ts @@ -14,7 +14,7 @@ import { import { ChartsDataType, DashStyle, ChartsColor, HatchDirection, Font, LabelPosition, TextOverflow, WordWrap } from 'devextreme/common/charts'; import { PieChartSeriesInteractionMode, SmallValuesGroupingMode } from 'devextreme/viz/pie_chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/pie-chart/nested/tooltip.ts b/packages/devextreme-angular/src/ui/pie-chart/nested/tooltip.ts index c7f46210a58e..3ff86be913d3 100644 --- a/packages/devextreme-angular/src/ui/pie-chart/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/pie-chart/nested/tooltip.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/polar-chart/index.ts b/packages/devextreme-angular/src/ui/polar-chart/index.ts index d214bda9aa7c..4882b6ca7db3 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/index.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/index.ts @@ -26,7 +26,7 @@ import DataSource from 'devextreme/data/data_source'; import * as CommonChartTypes from 'devextreme/common/charts'; import { AnimationEaseMode, ChartsDataType, DashStyle, Font, DiscreteAxisDivisionMode, ArgumentAxisHoverMode, LabelOverlap, TimeInterval, AxisScaleType, ChartsColor, SeriesHoverMode, HatchDirection, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, ValueErrorBarDisplayMode, ValueErrorBarType, SeriesLabel, SeriesPoint, LegendItem, LegendHoverMode, Palette, PaletteExtensionMode, Theme, TextOverflow, WordWrap } from 'devextreme/common/charts'; import { dxPolarChartAnnotationConfig, dxPolarChartCommonAnnotationConfig, PolarChartSeriesType, ArgumentAxisClickEvent, DisposingEvent, DoneEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LegendClickEvent, OptionChangedEvent, PointClickEvent, PointHoverChangedEvent, PointSelectionChangedEvent, SeriesClickEvent, SeriesHoverChangedEvent, SeriesSelectionChangedEvent, TooltipHiddenEvent, TooltipShownEvent, ZoomEndEvent, ZoomStartEvent, PolarChartSeries, ValueAxisVisualRangeUpdateMode } from 'devextreme/viz/polar_chart'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge, SingleOrMultiple } from 'devextreme/common'; diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/argument-axis.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/argument-axis.ts index 00b3d6735aae..dee78c55d0fa 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/argument-axis.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/argument-axis.ts @@ -18,7 +18,7 @@ import { import { ChartsDataType, DashStyle, Font, DiscreteAxisDivisionMode, ArgumentAxisHoverMode, LabelOverlap, TimeInterval, AxisScaleType } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/axis-label.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/axis-label.ts index ed0e7c37ea83..7fcac53012a4 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/axis-label.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/axis-label.ts @@ -15,7 +15,7 @@ import { import { Font, LabelOverlap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings-label.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings-label.ts index 139a3857d52f..ff87a4b3d874 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings-label.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings-label.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font, RelativePosition } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings.ts index 9baef2d25455..dfa61343c7b3 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/common-series-settings.ts @@ -15,7 +15,7 @@ import { import { DashStyle, ChartsColor, SeriesHoverMode, HatchDirection, Font, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, ValueErrorBarDisplayMode, ValueErrorBarType } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { PolarChartSeriesType } from 'devextreme/viz/polar_chart'; import { diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/label.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/label.ts index bd39d7126a31..7c022434c13d 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/label.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/label.ts @@ -15,7 +15,7 @@ import { import { Font, LabelOverlap, DashStyle, RelativePosition } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/series-dxi.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/series-dxi.ts index 02f5d7db1348..7f884bb86330 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/series-dxi.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/series-dxi.ts @@ -13,7 +13,7 @@ import { import { DashStyle, ChartsColor, SeriesHoverMode, HatchDirection, Font, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, ValueErrorBarDisplayMode, ValueErrorBarType } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { PolarChartSeriesType } from 'devextreme/viz/polar_chart'; import { diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/tooltip.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/tooltip.ts index a76ca20604ed..fbf88b3c37d3 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/tooltip.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/polar-chart/nested/value-axis.ts b/packages/devextreme-angular/src/ui/polar-chart/nested/value-axis.ts index 211b55872202..81b945ceac82 100644 --- a/packages/devextreme-angular/src/ui/polar-chart/nested/value-axis.ts +++ b/packages/devextreme-angular/src/ui/polar-chart/nested/value-axis.ts @@ -21,7 +21,7 @@ import { import * as CommonChartTypes from 'devextreme/common/charts'; import { DashStyle, Font, DiscreteAxisDivisionMode, LabelOverlap, TimeInterval, AxisScaleType, ChartsDataType } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { ValueAxisVisualRangeUpdateMode } from 'devextreme/viz/polar_chart'; import { diff --git a/packages/devextreme-angular/src/ui/popover/index.ts b/packages/devextreme-angular/src/ui/popover/index.ts index 6f8193921573..ecc68f7f6d96 100644 --- a/packages/devextreme-angular/src/ui/popover/index.ts +++ b/packages/devextreme-angular/src/ui/popover/index.ts @@ -22,11 +22,10 @@ import { } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; import { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, OptionChangedEvent, ShowingEvent, ShownEvent, TitleRenderedEvent } from 'devextreme/ui/popover'; import { Position } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import DxPopover from 'devextreme/ui/popover'; diff --git a/packages/devextreme-angular/src/ui/popover/nested/animation.ts b/packages/devextreme-angular/src/ui/popover/nested/animation.ts index d784bdadaf04..38c8781c8890 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popover/nested/collision.ts b/packages/devextreme-angular/src/ui/popover/nested/collision.ts index 8c5b8e2f0a31..52dab6839e2e 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popover/nested/from.ts b/packages/devextreme-angular/src/ui/popover/nested/from.ts index dea87b235570..f888ecbc0634 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/from.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popover/nested/hide.ts b/packages/devextreme-angular/src/ui/popover/nested/hide.ts index 418d365da7c7..5df21ee2d81f 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/popover/nested/position.ts b/packages/devextreme-angular/src/ui/popover/nested/position.ts index dd19514546e7..8ce3f2b2799f 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/position.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popover/nested/show.ts b/packages/devextreme-angular/src/ui/popover/nested/show.ts index bb44b0f1fb69..d16201da11b1 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/show.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/popover/nested/to.ts b/packages/devextreme-angular/src/ui/popover/nested/to.ts index 4a9de746d777..5000a1ac3293 100644 --- a/packages/devextreme-angular/src/ui/popover/nested/to.ts +++ b/packages/devextreme-angular/src/ui/popover/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popup/component.ts b/packages/devextreme-angular/src/ui/popup/component.ts index bf435f45b105..5605258d13af 100644 --- a/packages/devextreme-angular/src/ui/popup/component.ts +++ b/packages/devextreme-angular/src/ui/popup/component.ts @@ -22,10 +22,10 @@ import { } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import DxPopup from 'devextreme/ui/popup'; diff --git a/packages/devextreme-angular/src/ui/popup/nested/animation.ts b/packages/devextreme-angular/src/ui/popup/nested/animation.ts index c2630d3bfad1..a050f8eccd3d 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popup/nested/collision.ts b/packages/devextreme-angular/src/ui/popup/nested/collision.ts index 9edb75160069..57363e68ef79 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popup/nested/from.ts b/packages/devextreme-angular/src/ui/popup/nested/from.ts index be32f403443c..3834b7d3ee0a 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/from.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popup/nested/hide.ts b/packages/devextreme-angular/src/ui/popup/nested/hide.ts index def87a09a119..536323c6753e 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/popup/nested/position.ts b/packages/devextreme-angular/src/ui/popup/nested/position.ts index bf86cf989b5a..f05a55f570ba 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/position.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/popup/nested/show.ts b/packages/devextreme-angular/src/ui/popup/nested/show.ts index 112f0385fc79..74261df2153e 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/show.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/popup/nested/to.ts b/packages/devextreme-angular/src/ui/popup/nested/to.ts index 45f10f0cfa6e..ad1ead9058aa 100644 --- a/packages/devextreme-angular/src/ui/popup/nested/to.ts +++ b/packages/devextreme-angular/src/ui/popup/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-selector/index.ts b/packages/devextreme-angular/src/ui/range-selector/index.ts index f9ac9cf94332..67a0615b7a5f 100644 --- a/packages/devextreme-angular/src/ui/range-selector/index.ts +++ b/packages/devextreme-angular/src/ui/range-selector/index.ts @@ -31,7 +31,7 @@ import { Palette, PaletteExtensionMode, ChartsDataType, Font, TimeInterval, Scal import { ChartSeries } from 'devextreme/viz/common'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxRangeSelector from 'devextreme/viz/range_selector'; diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings-label.ts b/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings-label.ts index ca1ac88a2d85..e1a94f7bc716 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings-label.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings-label.ts @@ -15,7 +15,7 @@ import { import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font, RelativePosition } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings.ts b/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings.ts index c845f5c3da4f..9543a6420612 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/common-series-settings.ts @@ -17,7 +17,7 @@ import { import { chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, FinancialChartReductionLevel } from 'devextreme/viz/chart'; import { DashStyle, ChartsColor, SeriesHoverMode, HatchDirection, Font, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType } from 'devextreme/common/charts'; import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/label.ts b/packages/devextreme-angular/src/ui/range-selector/nested/label.ts index 31150268dba6..c03a0d07aba8 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/label.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/label.ts @@ -15,7 +15,7 @@ import { import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DashStyle, Font, RelativePosition, LabelOverlap } from 'devextreme/common/charts'; import { diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/marker-label.ts b/packages/devextreme-angular/src/ui/range-selector/nested/marker-label.ts index c92c350ab57a..9575932ec2c1 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/marker-label.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/marker-label.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/marker.ts b/packages/devextreme-angular/src/ui/range-selector/nested/marker.ts index 71f3cc27a0c2..b19a945a1b0d 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/marker.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/marker.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/scale-label.ts b/packages/devextreme-angular/src/ui/range-selector/nested/scale-label.ts index 2938e2ebfa96..393b0053f851 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/scale-label.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/scale-label.ts @@ -15,7 +15,7 @@ import { import { Font, LabelOverlap } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/scale.ts b/packages/devextreme-angular/src/ui/range-selector/nested/scale.ts index eff7923d23cb..ee2716f2c432 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/scale.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/scale.ts @@ -18,7 +18,7 @@ import { import { TimeInterval, ScaleBreak, ScaleBreakLineStyle, DiscreteAxisDivisionMode, Font, LabelOverlap, ChartsDataType } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { AxisScale } from 'devextreme/viz/range_selector'; import { diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/series-dxi.ts b/packages/devextreme-angular/src/ui/range-selector/nested/series-dxi.ts index d53e269f571d..5e2d146b86cb 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/series-dxi.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/series-dxi.ts @@ -15,7 +15,7 @@ import { import { chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, FinancialChartReductionLevel } from 'devextreme/viz/chart'; import { DashStyle, ChartsColor, SeriesHoverMode, HatchDirection, Font, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType } from 'devextreme/common/charts'; import { HorizontalAlignment } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-selector/nested/slider-marker.ts b/packages/devextreme-angular/src/ui/range-selector/nested/slider-marker.ts index 46af6f4e7164..5a15d3be666d 100644 --- a/packages/devextreme-angular/src/ui/range-selector/nested/slider-marker.ts +++ b/packages/devextreme-angular/src/ui/range-selector/nested/slider-marker.ts @@ -15,7 +15,7 @@ import { import { Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/range-slider/index.ts b/packages/devextreme-angular/src/ui/range-slider/index.ts index 2c00152aca79..b32fd8c57c62 100644 --- a/packages/devextreme-angular/src/ui/range-slider/index.ts +++ b/packages/devextreme-angular/src/ui/range-slider/index.ts @@ -22,7 +22,7 @@ import { } from '@angular/core'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { VerticalEdge, TooltipShowMode, ValidationMessageMode, Position, ValidationStatus, SliderValueChangeMode } from 'devextreme/common'; import { ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, ValueChangedEvent } from 'devextreme/ui/range_slider'; diff --git a/packages/devextreme-angular/src/ui/range-slider/nested/label.ts b/packages/devextreme-angular/src/ui/range-slider/nested/label.ts index 2e031d4c1153..6357eccab218 100644 --- a/packages/devextreme-angular/src/ui/range-slider/nested/label.ts +++ b/packages/devextreme-angular/src/ui/range-slider/nested/label.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { VerticalEdge } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/range-slider/nested/tooltip.ts b/packages/devextreme-angular/src/ui/range-slider/nested/tooltip.ts index 47e5f948d0cc..6f11cabf389f 100644 --- a/packages/devextreme-angular/src/ui/range-slider/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/range-slider/nested/tooltip.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { VerticalEdge, TooltipShowMode } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/sankey/index.ts b/packages/devextreme-angular/src/ui/sankey/index.ts index 5a0fa72c86f1..84c56ba43dfb 100644 --- a/packages/devextreme-angular/src/ui/sankey/index.ts +++ b/packages/devextreme-angular/src/ui/sankey/index.ts @@ -26,7 +26,7 @@ import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { dxSankeyNode, SankeyColorMode, DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LinkClickEvent, LinkHoverEvent, NodeClickEvent, NodeHoverEvent, OptionChangedEvent } from 'devextreme/viz/sankey'; import { Font, TextOverflow, HatchDirection, Palette, PaletteExtensionMode, Theme, WordWrap, DashStyle } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxSankey from 'devextreme/viz/sankey'; diff --git a/packages/devextreme-angular/src/ui/sankey/nested/tooltip.ts b/packages/devextreme-angular/src/ui/sankey/nested/tooltip.ts index b61986a93759..c8537baafb1f 100644 --- a/packages/devextreme-angular/src/ui/sankey/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/sankey/nested/tooltip.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/scheduler/index.ts b/packages/devextreme-angular/src/ui/scheduler/index.ts index 7d088d319113..b1ceeb417a34 100644 --- a/packages/devextreme-angular/src/ui/scheduler/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/index.ts @@ -27,7 +27,7 @@ import dxSortable from 'devextreme/ui/sortable'; import dxDraggable from 'devextreme/ui/draggable'; import DataSource from 'devextreme/data/data_source'; import { AllDayPanelMode, ViewType, dxSchedulerAppointment, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, RecurrenceEditMode, dxSchedulerScrolling } from 'devextreme/ui/scheduler'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { FirstDayOfWeek, Orientation } from 'devextreme/common'; diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/appointment-dragging.ts b/packages/devextreme-angular/src/ui/scheduler/nested/appointment-dragging.ts index a1c8bec4678d..9e7f49a34adf 100644 --- a/packages/devextreme-angular/src/ui/scheduler/nested/appointment-dragging.ts +++ b/packages/devextreme-angular/src/ui/scheduler/nested/appointment-dragging.ts @@ -17,7 +17,7 @@ import { import dxScheduler from 'devextreme/ui/scheduler'; import dxSortable from 'devextreme/ui/sortable'; import dxDraggable from 'devextreme/ui/draggable'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/select-box/nested/animation.ts b/packages/devextreme-angular/src/ui/select-box/nested/animation.ts index a7b9b5fe87d6..34ca3515b53b 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/select-box/nested/collision.ts b/packages/devextreme-angular/src/ui/select-box/nested/collision.ts index 140a6d979619..0f1cde5cf6b5 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/select-box/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/select-box/nested/drop-down-options.ts index 3c671c6655ac..38ac6e8f873f 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/select-box/nested/from.ts b/packages/devextreme-angular/src/ui/select-box/nested/from.ts index a59a2637f568..d33c1f81df37 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/from.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/select-box/nested/hide.ts b/packages/devextreme-angular/src/ui/select-box/nested/hide.ts index 65b786caf822..89c672c2aedb 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/select-box/nested/position.ts b/packages/devextreme-angular/src/ui/select-box/nested/position.ts index c2b86c2f83cc..1ae4c8b36b48 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/position.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/select-box/nested/show.ts b/packages/devextreme-angular/src/ui/select-box/nested/show.ts index 964efc86c600..8d3befd818cc 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/show.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/select-box/nested/to.ts b/packages/devextreme-angular/src/ui/select-box/nested/to.ts index 3f32772932ff..4a9297f5b6da 100644 --- a/packages/devextreme-angular/src/ui/select-box/nested/to.ts +++ b/packages/devextreme-angular/src/ui/select-box/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/slider/index.ts b/packages/devextreme-angular/src/ui/slider/index.ts index f9aff56fc538..e358987f24fb 100644 --- a/packages/devextreme-angular/src/ui/slider/index.ts +++ b/packages/devextreme-angular/src/ui/slider/index.ts @@ -22,7 +22,7 @@ import { } from '@angular/core'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { VerticalEdge, TooltipShowMode, ValidationMessageMode, Position, ValidationStatus, SliderValueChangeMode } from 'devextreme/common'; import { ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, ValueChangedEvent } from 'devextreme/ui/slider'; diff --git a/packages/devextreme-angular/src/ui/slider/nested/label.ts b/packages/devextreme-angular/src/ui/slider/nested/label.ts index a3d55351985e..6742dd91e95e 100644 --- a/packages/devextreme-angular/src/ui/slider/nested/label.ts +++ b/packages/devextreme-angular/src/ui/slider/nested/label.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { VerticalEdge } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/slider/nested/tooltip.ts b/packages/devextreme-angular/src/ui/slider/nested/tooltip.ts index 836389384ec7..d3fd30f1d7a6 100644 --- a/packages/devextreme-angular/src/ui/slider/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/slider/nested/tooltip.ts @@ -14,7 +14,7 @@ import { -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { VerticalEdge, TooltipShowMode } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/sparkline/index.ts b/packages/devextreme-angular/src/ui/sparkline/index.ts index d296dcdb2d3b..daa6feffe5a6 100644 --- a/packages/devextreme-angular/src/ui/sparkline/index.ts +++ b/packages/devextreme-angular/src/ui/sparkline/index.ts @@ -25,7 +25,7 @@ import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, OptionChangedEvent, TooltipHiddenEvent, TooltipShownEvent, SparklineType } from 'devextreme/viz/sparkline'; import { PointSymbol, Theme, DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxSparkline from 'devextreme/viz/sparkline'; diff --git a/packages/devextreme-angular/src/ui/sparkline/nested/tooltip.ts b/packages/devextreme-angular/src/ui/sparkline/nested/tooltip.ts index 281e8b9b7d07..b767a362b104 100644 --- a/packages/devextreme-angular/src/ui/sparkline/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/sparkline/nested/tooltip.ts @@ -15,7 +15,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/animation.ts b/packages/devextreme-angular/src/ui/tag-box/nested/animation.ts index 8f4d9c9aa83f..9e1c688b3b02 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/collision.ts b/packages/devextreme-angular/src/ui/tag-box/nested/collision.ts index c75faa719140..85c893579381 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/drop-down-options.ts b/packages/devextreme-angular/src/ui/tag-box/nested/drop-down-options.ts index 85a863201d05..79c00e738c4a 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/drop-down-options.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/drop-down-options.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/from.ts b/packages/devextreme-angular/src/ui/tag-box/nested/from.ts index 5dd638ed90e6..3291f16a0602 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/from.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/hide.ts b/packages/devextreme-angular/src/ui/tag-box/nested/hide.ts index 8baefb8950a0..8ad992628548 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/position.ts b/packages/devextreme-angular/src/ui/tag-box/nested/position.ts index 6181878d06bb..120b1cd0e98b 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/position.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/show.ts b/packages/devextreme-angular/src/ui/tag-box/nested/show.ts index b9207fd4dce2..f91b97713945 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/show.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tag-box/nested/to.ts b/packages/devextreme-angular/src/ui/tag-box/nested/to.ts index ad95687a67b5..a03da04325ad 100644 --- a/packages/devextreme-angular/src/ui/tag-box/nested/to.ts +++ b/packages/devextreme-angular/src/ui/tag-box/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/toast/index.ts b/packages/devextreme-angular/src/ui/toast/index.ts index 237eee0a03d4..161fd1e18d51 100644 --- a/packages/devextreme-angular/src/ui/toast/index.ts +++ b/packages/devextreme-angular/src/ui/toast/index.ts @@ -17,10 +17,9 @@ import { } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; import { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, OptionChangedEvent, ShowingEvent, ShownEvent, ToastType } from 'devextreme/ui/toast'; -import { PositionConfig } from 'devextreme/animation/position'; import DxToast from 'devextreme/ui/toast'; diff --git a/packages/devextreme-angular/src/ui/toast/nested/animation.ts b/packages/devextreme-angular/src/ui/toast/nested/animation.ts index 06dd2a36410d..a0f9f1438029 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/toast/nested/collision.ts b/packages/devextreme-angular/src/ui/toast/nested/collision.ts index db4bc386a255..f92ec128eddf 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/toast/nested/from.ts b/packages/devextreme-angular/src/ui/toast/nested/from.ts index 05d6130081b4..418751d7b926 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/from.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/toast/nested/hide.ts b/packages/devextreme-angular/src/ui/toast/nested/hide.ts index 1a52b282afa4..1246163797e0 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/toast/nested/position.ts b/packages/devextreme-angular/src/ui/toast/nested/position.ts index c25e1fe24c7b..7dd608676487 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/position.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/toast/nested/show.ts b/packages/devextreme-angular/src/ui/toast/nested/show.ts index 993a9b4b7691..e11095bacde9 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/show.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/toast/nested/to.ts b/packages/devextreme-angular/src/ui/toast/nested/to.ts index 879deac6622e..e7b55d3f52c1 100644 --- a/packages/devextreme-angular/src/ui/toast/nested/to.ts +++ b/packages/devextreme-angular/src/ui/toast/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tooltip/index.ts b/packages/devextreme-angular/src/ui/tooltip/index.ts index 11a57be8f40b..eac27fa9a018 100644 --- a/packages/devextreme-angular/src/ui/tooltip/index.ts +++ b/packages/devextreme-angular/src/ui/tooltip/index.ts @@ -17,11 +17,10 @@ import { } from '@angular/core'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; import { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, OptionChangedEvent, ShowingEvent, ShownEvent } from 'devextreme/ui/tooltip'; import { Position } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import DxTooltip from 'devextreme/ui/tooltip'; diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/animation.ts b/packages/devextreme-angular/src/ui/tooltip/nested/animation.ts index 270af13dfbda..23c9849f2d78 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/collision.ts b/packages/devextreme-angular/src/ui/tooltip/nested/collision.ts index ed6b3416ac00..2639bce9ef13 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/from.ts b/packages/devextreme-angular/src/ui/tooltip/nested/from.ts index 5144c70872ae..79c86175fa6f 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/from.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/hide.ts b/packages/devextreme-angular/src/ui/tooltip/nested/hide.ts index 099fe1dd9a87..3a401c65a4b8 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/position.ts b/packages/devextreme-angular/src/ui/tooltip/nested/position.ts index 63b651d776f2..27f33da4338a 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/position.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/show.ts b/packages/devextreme-angular/src/ui/tooltip/nested/show.ts index adca2825ebed..1b71b964d33e 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/show.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tooltip/nested/to.ts b/packages/devextreme-angular/src/ui/tooltip/nested/to.ts index 9d90b605e8b5..2efe0dd47553 100644 --- a/packages/devextreme-angular/src/ui/tooltip/nested/to.ts +++ b/packages/devextreme-angular/src/ui/tooltip/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/index.ts b/packages/devextreme-angular/src/ui/tree-list/index.ts index b324ada9952e..c86e64430245 100644 --- a/packages/devextreme-angular/src/ui/tree-list/index.ts +++ b/packages/devextreme-angular/src/ui/tree-list/index.ts @@ -28,7 +28,7 @@ import dxTreeList from 'devextreme/ui/tree_list'; import dxSortable from 'devextreme/ui/sortable'; import dxDraggable from 'devextreme/ui/draggable'; import { ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig, ColumnResizeMode, DataChange, GridsEditMode, GridsEditRefreshMode, StartEditAction, GridBase, ApplyFilterMode, HeaderFilterSearchConfig, EnterKeyAction, EnterKeyDirection, Pager, DataRenderMode, StateStoreType } from 'devextreme/common/grids'; -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { SortOrder, Mode, DataStructure, DragDirection, DragHighlight, ScrollMode, ScrollbarMode, SingleMultipleOrNone } from 'devextreme/common'; import { dxTreeListColumn, dxTreeListRowObject, TreeListFilterMode, AdaptiveDetailRowPreparingEvent, CellClickEvent, CellDblClickEvent, CellHoverChangedEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, FocusedCellChangedEvent, FocusedCellChangingEvent, FocusedRowChangedEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, NodesInitializedEvent, OptionChangedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, SelectionChangedEvent, ToolbarPreparingEvent, dxTreeListToolbar } from 'devextreme/ui/tree_list'; import { DataSourceOptions } from 'devextreme/data/data_source'; @@ -36,7 +36,7 @@ import { Store } from 'devextreme/data/store'; import { dxFormOptions } from 'devextreme/ui/form'; import { dxPopupOptions } from 'devextreme/ui/popup'; import { dxFilterBuilderOptions } from 'devextreme/ui/filter_builder'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import DxTreeList from 'devextreme/ui/tree_list'; diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/animation.ts b/packages/devextreme-angular/src/ui/tree-list/nested/animation.ts index 54d3f19ca2bd..0a6824844552 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/animation.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/animation.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig } from 'devextreme/animation/fx'; +import { AnimationConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/button-dxi.ts b/packages/devextreme-angular/src/ui/tree-list/nested/button-dxi.ts index ee808b103129..baeca5d53a37 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/button-dxi.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/button-dxi.ts @@ -18,7 +18,7 @@ import { DOCUMENT } from '@angular/common'; import dxTreeList from 'devextreme/ui/tree_list'; import { dxTreeListColumn, dxTreeListRowObject, TreeListPredefinedColumnButton } from 'devextreme/ui/tree_list'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/collision.ts b/packages/devextreme-angular/src/ui/tree-list/nested/collision.ts index e9c9a7d53b97..46468bc320db 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/collision.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/collision.ts @@ -14,7 +14,7 @@ import { -import { CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/column-chooser.ts b/packages/devextreme-angular/src/ui/tree-list/nested/column-chooser.ts index fad9cbc4661f..e6e5ea981f8e 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/column-chooser.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/column-chooser.ts @@ -15,7 +15,7 @@ import { import { ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig } from 'devextreme/common/grids'; -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { SortOrder } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/column-dxi.ts b/packages/devextreme-angular/src/ui/tree-list/nested/column-dxi.ts index cb0d8c652c79..970abd8f1770 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/column-dxi.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/column-dxi.ts @@ -21,7 +21,7 @@ import * as CommonTypes from 'devextreme/common'; import { HorizontalAlignment, DataType, SearchMode, SortOrder } from 'devextreme/common'; import { dxTreeListColumnButton, TreeListPredefinedColumnButton, dxTreeListColumn, TreeListCommandColumnType } from 'devextreme/ui/tree_list'; import { FilterOperation, FilterType, FixedPosition, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, SelectedFilterOperation } from 'devextreme/common/grids'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { dxFormSimpleItem } from 'devextreme/ui/form'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/field-dxi.ts b/packages/devextreme-angular/src/ui/tree-list/nested/field-dxi.ts index 2344562fd990..97d502327ad1 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/field-dxi.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/field-dxi.ts @@ -14,7 +14,7 @@ import { import { DataType } from 'devextreme/common'; import { FilterBuilderOperation } from 'devextreme/ui/filter_builder'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/filter-builder-popup.ts b/packages/devextreme-angular/src/ui/tree-list/nested/filter-builder-popup.ts index 360b5ea82dbd..3fb56eaa79af 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/filter-builder-popup.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/filter-builder-popup.ts @@ -19,11 +19,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/from.ts b/packages/devextreme-angular/src/ui/tree-list/nested/from.ts index 24e6b43c3f34..bc9d851683d7 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/from.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/from.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/hide.ts b/packages/devextreme-angular/src/ui/tree-list/nested/hide.ts index 050dc41d4f5a..b93ff8cf7c8c 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/hide.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/hide.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/popup.ts b/packages/devextreme-angular/src/ui/tree-list/nested/popup.ts index 329bd9500597..ddd81446603a 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/popup.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/popup.ts @@ -22,11 +22,11 @@ import { import dxOverlay from 'devextreme/ui/overlay'; import DOMComponent from 'devextreme/core/dom_component'; import dxPopup from 'devextreme/ui/popup'; -import { AnimationConfig } from 'devextreme/animation/fx'; -import { event, EventInfo } from 'devextreme/events/index'; +import { AnimationConfig, PositionConfig } from 'devextreme/common/core/animation'; +import { event } from 'devextreme/events/events.types'; +import { EventInfo } from 'devextreme/common/core/events'; import { Component as CoreComponent } from 'devextreme/core/component'; import { PositionAlignment } from 'devextreme/common'; -import { PositionConfig } from 'devextreme/animation/position'; import { dxPopupToolbarItem } from 'devextreme/ui/popup'; import { diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/position.ts b/packages/devextreme-angular/src/ui/tree-list/nested/position.ts index 88ed7d08bb5c..314d3115cc42 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/position.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/position.ts @@ -15,7 +15,7 @@ import { import { PositionAlignment, HorizontalAlignment, VerticalAlignment } from 'devextreme/common'; -import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/animation/position'; +import { CollisionResolutionCombination, CollisionResolution } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/row-dragging.ts b/packages/devextreme-angular/src/ui/tree-list/nested/row-dragging.ts index d0c5e3323b5d..52f4fe10b497 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/row-dragging.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/row-dragging.ts @@ -18,7 +18,7 @@ import dxSortable from 'devextreme/ui/sortable'; import dxDraggable from 'devextreme/ui/draggable'; import { DragDirection, DragHighlight } from 'devextreme/common'; import { GridBase } from 'devextreme/common/grids'; -import { event } from 'devextreme/events/index'; +import { event } from 'devextreme/events/events.types'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/show.ts b/packages/devextreme-angular/src/ui/tree-list/nested/show.ts index 39a5b26d6913..944c53a59ad5 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/show.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/show.ts @@ -14,7 +14,7 @@ import { -import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/animation/fx'; +import { AnimationConfig, AnimationState, AnimationType } from 'devextreme/common/core/animation'; import { Direction } from 'devextreme/common'; import { diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/to.ts b/packages/devextreme-angular/src/ui/tree-list/nested/to.ts index 035eabc3a27b..10f6b797162a 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/to.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/to.ts @@ -14,7 +14,7 @@ import { -import { PositionConfig } from 'devextreme/animation/position'; +import { PositionConfig } from 'devextreme/common/core/animation'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/tree-map/index.ts b/packages/devextreme-angular/src/ui/tree-map/index.ts index 80aa452da90f..265d37a315e2 100644 --- a/packages/devextreme-angular/src/ui/tree-map/index.ts +++ b/packages/devextreme-angular/src/ui/tree-map/index.ts @@ -26,7 +26,7 @@ import { TreeMapColorizerType, TreeMapLayoutAlgorithm, TreeMapLayoutDirection, C import { DataSourceOptions } from 'devextreme/data/data_source'; import { Store } from 'devextreme/data/store'; import { ExportFormat, SingleMultipleOrNone, HorizontalAlignment, VerticalEdge } from 'devextreme/common'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import DxTreeMap from 'devextreme/viz/tree_map'; diff --git a/packages/devextreme-angular/src/ui/tree-map/nested/tooltip.ts b/packages/devextreme-angular/src/ui/tree-map/nested/tooltip.ts index bb46b8444e6d..7d3d0e9d1a87 100644 --- a/packages/devextreme-angular/src/ui/tree-map/nested/tooltip.ts +++ b/packages/devextreme-angular/src/ui/tree-map/nested/tooltip.ts @@ -16,7 +16,7 @@ import { import { DashStyle, Font } from 'devextreme/common/charts'; import { dxTreeMapNode } from 'devextreme/viz/tree_map'; -import { Format } from 'devextreme/localization'; +import { Format } from 'devextreme/common/core/localization'; import { NestedOptionHost, diff --git a/packages/devextreme-angular/src/ui/validator/index.ts b/packages/devextreme-angular/src/ui/validator/index.ts index 7e2e6108c70a..e2a7c2a6f7db 100644 --- a/packages/devextreme-angular/src/ui/validator/index.ts +++ b/packages/devextreme-angular/src/ui/validator/index.ts @@ -26,7 +26,7 @@ import { import * as CommonTypes from 'devextreme/common'; -import { EventInfo } from 'devextreme/events/index'; +import { EventInfo } from 'devextreme/common/core/events'; import DxValidator from 'devextreme/ui/validator'; diff --git a/packages/devextreme-react/gulpfile.js b/packages/devextreme-react/gulpfile.js index 56a059f18672..20cfb76606ed 100644 --- a/packages/devextreme-react/gulpfile.js +++ b/packages/devextreme-react/gulpfile.js @@ -43,6 +43,10 @@ gulp.task(GEN_RUN, (done) => { generateReexports: true, generateCustomTypes: true, }, + templatingOptions: { + quotes: 'double', + excplicitIndexInImports: true, + }, }); done(); @@ -96,7 +100,9 @@ gulp.task(NPM_PREPARE_MODULES, (done) => { const packParamsForFolders = [ ['common'], ['core', ['template', 'config', 'nested-option', 'component', 'extension-component']], + ['common/core'], ['common/data'], + ['common/export'], ]; const modulesImportsFromIndex = fs.readFileSync( config.npm.dist + 'esm/index.js', @@ -110,7 +116,7 @@ gulp.task(NPM_PREPARE_MODULES, (done) => { return ['', [moduleFileName], moduleFilePath]; }); - [...packParamsForFolders, ...packParamsForModules].forEach( + [ ...packParamsForModules, ...packParamsForFolders].forEach( ([folder, moduleFileNames, moduleFilePath]) => makeModule(folder, moduleFileNames, moduleFilePath) ); diff --git a/packages/devextreme-react/src/accordion.ts b/packages/devextreme-react/src/accordion.ts index 20a1cbbc5bbc..2ec57dba5f21 100644 --- a/packages/devextreme-react/src/accordion.ts +++ b/packages/devextreme-react/src/accordion.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxAccordionItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, ItemTitleClickEvent } from "devextreme/ui/accordion"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/action-sheet.ts b/packages/devextreme-react/src/action-sheet.ts index ccdf5b015571..3233b4ff60cf 100644 --- a/packages/devextreme-react/src/action-sheet.ts +++ b/packages/devextreme-react/src/action-sheet.ts @@ -10,10 +10,9 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { dxActionSheetItem, CancelClickEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent } from "devextreme/ui/action_sheet"; -import type { NativeEventInfo } from "devextreme/events/index"; -import type { ButtonStyle, ButtonType } from "devextreme/common"; +import type { NativeEventInfo } from "devextreme/common/core/events"; +import type { ButtonStyle, template, ButtonType } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/autocomplete.ts b/packages/devextreme-react/src/autocomplete.ts index 6e968e1342ee..57d227f2a8b0 100644 --- a/packages/devextreme-react/src/autocomplete.ts +++ b/packages/devextreme-react/src/autocomplete.ts @@ -10,11 +10,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, ItemClickEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/autocomplete"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; diff --git a/packages/devextreme-react/src/bar-gauge.ts b/packages/devextreme-react/src/bar-gauge.ts index 3b873c46f29c..a6c571afd8d0 100644 --- a/packages/devextreme-react/src/bar-gauge.ts +++ b/packages/devextreme-react/src/bar-gauge.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, TooltipHiddenEvent, TooltipShownEvent, BarGaugeBarInfo, BarGaugeLegendItem } from "devextreme/viz/bar_gauge"; import type { AnimationEaseMode, Font as ChartsFont, TextOverflow, WordWrap, DashStyle } from "devextreme/common/charts"; -import type { HorizontalAlignment, VerticalEdge, ExportFormat, Format as CommonFormat, Position, Orientation } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { HorizontalAlignment, VerticalEdge, ExportFormat, Format as CommonFormat, Position, template, Orientation } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/box.ts b/packages/devextreme-react/src/box.ts index bfc0fb2c1451..99c0f2ba0cdc 100644 --- a/packages/devextreme-react/src/box.ts +++ b/packages/devextreme-react/src/box.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxBoxItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, dxBoxOptions } from "devextreme/ui/box"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/bullet.ts b/packages/devextreme-react/src/bullet.ts index e9f7bdca1143..4e8af405a8d0 100644 --- a/packages/devextreme-react/src/bullet.ts +++ b/packages/devextreme-react/src/bullet.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, TooltipHiddenEvent, TooltipShownEvent } from "devextreme/viz/bullet"; import type { DashStyle, Font as ChartsFont } from "devextreme/common/charts"; -import type { Format as CommonFormat } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { Format as CommonFormat, template } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/button-group.ts b/packages/devextreme-react/src/button-group.ts index 7b793ba37864..cc4890c95fda 100644 --- a/packages/devextreme-react/src/button-group.ts +++ b/packages/devextreme-react/src/button-group.ts @@ -10,8 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent } from "devextreme/ui/button_group"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; -import type { ButtonType } from "devextreme/common"; +import type { template, ButtonType } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/chart.ts b/packages/devextreme-react/src/chart.ts index c4b6d8b69dbb..e06cd5fc6206 100644 --- a/packages/devextreme-react/src/chart.ts +++ b/packages/devextreme-react/src/chart.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { ArgumentAxisClickEvent, DisposingEvent, DoneEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LegendClickEvent, PointClickEvent, SeriesClickEvent, TooltipHiddenEvent, TooltipShownEvent, ZoomEndEvent, ZoomStartEvent, chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, dxChartAnnotationConfig, AggregatedPointsPosition, ChartLabelDisplayMode, FinancialChartReductionLevel, chartPointObject, ChartTooltipLocation, ChartZoomAndPanMode, EventKeyModifier } from "devextreme/viz/chart"; import type { AnimationEaseMode, DashStyle, Font as ChartsFont, TextOverflow, AnnotationType, WordWrap, TimeInterval, ChartsDataType, ScaleBreak, ScaleBreakLineStyle, RelativePosition, DiscreteAxisDivisionMode, ArgumentAxisHoverMode, ChartsAxisLabelOverlap, AxisScaleType, VisualRangeUpdateMode, ChartsColor, SeriesHoverMode, HatchDirection, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType, LegendItem, LegendHoverMode } from "devextreme/common/charts"; -import type { template } from "devextreme/core/templates/template"; -import type { HorizontalAlignment, VerticalAlignment, Format as CommonFormat, Position, VerticalEdge, ExportFormat, Orientation } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { template, HorizontalAlignment, VerticalAlignment, Format as CommonFormat, Position, VerticalEdge, ExportFormat, Orientation } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { ChartSeries } from "devextreme/viz/common"; import type * as CommonChartTypes from "devextreme/common/charts"; diff --git a/packages/devextreme-react/src/circular-gauge.ts b/packages/devextreme-react/src/circular-gauge.ts index 19be891c22cc..5509ec7be869 100644 --- a/packages/devextreme-react/src/circular-gauge.ts +++ b/packages/devextreme-react/src/circular-gauge.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, TooltipHiddenEvent, TooltipShownEvent, CircularGaugeLabelOverlap, CircularGaugeElementOrientation } from "devextreme/viz/circular_gauge"; import type { AnimationEaseMode, DashStyle, Font as ChartsFont, LabelOverlap, ChartsColor, Palette, PaletteExtensionMode, TextOverflow, WordWrap } from "devextreme/common/charts"; -import type { ExportFormat, Format as CommonFormat, HorizontalEdge, VerticalEdge, HorizontalAlignment } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { ExportFormat, Format as CommonFormat, HorizontalEdge, VerticalEdge, HorizontalAlignment, template } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/color-box.ts b/packages/devextreme-react/src/color-box.ts index 2a623a732ded..340029dc2111 100644 --- a/packages/devextreme-react/src/color-box.ts +++ b/packages/devextreme-react/src/color-box.ts @@ -10,11 +10,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/color_box"; import type { DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, ContentReadyEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; diff --git a/packages/devextreme-react/src/common/core/animation.ts b/packages/devextreme-react/src/common/core/animation.ts new file mode 100644 index 000000000000..65dbc2236713 --- /dev/null +++ b/packages/devextreme-react/src/common/core/animation.ts @@ -0,0 +1,12 @@ +export { + AnimationConfig, + animationPresets, + AnimationState, + cancelAnimationFrame, + CollisionResolution, + CollisionResolutionCombination, + fx, + PositionConfig, + requestAnimationFrame, + TransitionExecutor, +} from "devextreme/common/core/animation"; diff --git a/packages/devextreme-react/src/common/core/environment.ts b/packages/devextreme-react/src/common/core/environment.ts new file mode 100644 index 000000000000..8830f31c4290 --- /dev/null +++ b/packages/devextreme-react/src/common/core/environment.ts @@ -0,0 +1,7 @@ +export { + Device, + getTimeZones, + hideTopOverlay, + initMobileViewport, + SchedulerTimeZone, +} from "devextreme/common/core/environment"; diff --git a/packages/devextreme-react/src/common/core/events.ts b/packages/devextreme-react/src/common/core/events.ts new file mode 100644 index 000000000000..f7b89308f060 --- /dev/null +++ b/packages/devextreme-react/src/common/core/events.ts @@ -0,0 +1,14 @@ +export { + AsyncCancelable, + Cancelable, + ChangedOptionInfo, + EventInfo, + EventObject, + InitializedEventInfo, + ItemInfo, + NativeEventInfo, + off, + on, + one, + trigger, +} from "devextreme/common/core/events"; diff --git a/packages/devextreme-react/src/common/core/index.ts b/packages/devextreme-react/src/common/core/index.ts new file mode 100644 index 000000000000..2f48cae6d949 --- /dev/null +++ b/packages/devextreme-react/src/common/core/index.ts @@ -0,0 +1,4 @@ +export * as Animation from "./animation"; +export * as Environment from "./environment"; +export * as Events from "./events"; +export * as Localization from "./localization"; diff --git a/packages/devextreme-react/src/common/core/localization.ts b/packages/devextreme-react/src/common/core/localization.ts new file mode 100644 index 000000000000..8dd8ec2ad04b --- /dev/null +++ b/packages/devextreme-react/src/common/core/localization.ts @@ -0,0 +1,10 @@ +export { + Format, + formatDate, + formatMessage, + formatNumber, + loadMessages, + locale, + parseDate, + parseNumber, +} from "devextreme/common/core/localization"; diff --git a/packages/devextreme-react/src/common/data.ts b/packages/devextreme-react/src/common/data.ts new file mode 100644 index 000000000000..16a77b01921d --- /dev/null +++ b/packages/devextreme-react/src/common/data.ts @@ -0,0 +1,43 @@ +export { + applyChanges, + ArrayStore, + ArrayStoreOptions, + base64_encode, + compileGetter, + compileSetter, + CustomStore, + CustomStoreOptions, + DataSource, + DataSourceOptions, + EdmLiteral, + EndpointSelector, + errorHandler, + FilterDescriptor, + GroupDescriptor, + GroupingInterval, + GroupItem, + isGroupItemsArray, + isItemsArray, + isLoadResultObject, + keyConverters, + LangParams, + LoadOptions, + LoadResult, + LoadResultObject, + LocalStore, + LocalStoreOptions, + ODataContext, + ODataContextOptions, + ODataStore, + ODataStoreOptions, + query, + Query, + ResolvedData, + SearchOperation, + SelectDescriptor, + setErrorHandler, + SortDescriptor, + Store, + StoreOptions, + SummaryDescriptor, +} from "devextreme/common/data"; diff --git a/packages/devextreme-react/src/common/export/excel.ts b/packages/devextreme-react/src/common/export/excel.ts new file mode 100644 index 000000000000..62583b766d91 --- /dev/null +++ b/packages/devextreme-react/src/common/export/excel.ts @@ -0,0 +1,8 @@ +export { + DataGridCell, + DataGridExportOptions, + exportDataGrid, + exportPivotGrid, + PivotGridCell, + PivotGridExportOptions, +} from "devextreme/common/export/excel"; diff --git a/packages/devextreme-react/src/common/export/index.ts b/packages/devextreme-react/src/common/export/index.ts new file mode 100644 index 000000000000..ece2a724b2db --- /dev/null +++ b/packages/devextreme-react/src/common/export/index.ts @@ -0,0 +1,2 @@ +export * as Excel from "./excel"; +export * as Pdf from "./pdf"; diff --git a/packages/devextreme-react/src/common/export/pdf.ts b/packages/devextreme-react/src/common/export/pdf.ts new file mode 100644 index 000000000000..2b95e14b2487 --- /dev/null +++ b/packages/devextreme-react/src/common/export/pdf.ts @@ -0,0 +1,9 @@ +export { + Cell, + DataGridCell, + DataGridExportOptions, + exportDataGrid, + exportGantt, + GanttExportFont, + GanttExportOptions, +} from "devextreme/common/export/pdf"; diff --git a/packages/devextreme-react/src/common/index.ts b/packages/devextreme-react/src/common/index.ts index 4cddfd8869c9..c9e79d048002 100644 --- a/packages/devextreme-react/src/common/index.ts +++ b/packages/devextreme-react/src/common/index.ts @@ -5,9 +5,11 @@ export { ButtonType, CompareRule, ComparisonOperator, + config, CustomRule, DataStructure, DataType, + DefaultOptionsRule, Direction, DisplayMode, DragDirection, @@ -18,8 +20,10 @@ export { ExportFormat, FieldChooserLayout, FirstDayOfWeek, + FloatingActionButtonDirection, Format, GlobalConfig, + Guid, HorizontalAlignment, HorizontalEdge, LabelMode, @@ -29,7 +33,6 @@ export { Orientation, PageLoadMode, PageOrientation, - PagerBase, PatternRule, Position, PositionAlignment, @@ -41,6 +44,7 @@ export { ScrollMode, SearchMode, SelectAllMode, + setTemplateEngine, SimplifiedSearchMode, SingleMultipleAllOrNone, SingleMultipleOrNone, @@ -54,6 +58,7 @@ export { SubmenuShowMode, TabsIconPosition, TabsStyle, + template, TextBoxPredefinedButton, TextEditorButton, TextEditorButtonLocation, @@ -68,3 +73,9 @@ export { VerticalAlignment, VerticalEdge, } from "devextreme/common"; + +export * as Charts from "./charts"; +export * as Core from "./core/index"; +export * as Data from "./data"; +export * as Export from "./export/index"; +export * as Grids from "./grids"; diff --git a/packages/devextreme-react/src/context-menu.ts b/packages/devextreme-react/src/context-menu.ts index 2465a8e627b0..aed0d6d798ff 100644 --- a/packages/devextreme-react/src/context-menu.ts +++ b/packages/devextreme-react/src/context-menu.ts @@ -10,11 +10,9 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { dxContextMenuItem, ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemRenderedEvent, PositioningEvent, ShowingEvent, ShownEvent } from "devextreme/ui/context_menu"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, Direction, PositionAlignment, SubmenuShowMode } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, Direction, template, PositionAlignment, SubmenuShowMode } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/data-grid.ts b/packages/devextreme-react/src/data-grid.ts index a8537858c8cc..fcc218aea737 100644 --- a/packages/devextreme-react/src/data-grid.ts +++ b/packages/devextreme-react/src/data-grid.ts @@ -11,17 +11,16 @@ import NestedOption from "./core/nested-option"; import type { dxDataGridColumn, AdaptiveDetailRowPreparingEvent, CellClickEvent, CellDblClickEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, ExportingEvent, FocusedCellChangingEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, ToolbarPreparingEvent, dxDataGridRowObject, DataGridPredefinedColumnButton, ColumnButtonClickEvent, dxDataGridColumnButton, DataGridCommandColumnType, SelectionSensitivity, DataGridExportFormat, DataGridPredefinedToolbarItem, DataGridScrollMode, dxDataGridToolbarItem } from "devextreme/ui/data_grid"; import type { DataChange, DataChangeType, FilterOperation, FilterType, FixedPosition, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, SelectedFilterOperation, ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig, HeaderFilterSearchConfig, SelectionColumnDisplayMode, GridsEditMode, NewRowPosition, GridsEditRefreshMode, StartEditAction, GridBase, ApplyFilterMode, GroupExpandMode, SummaryType, EnterKeyAction, EnterKeyDirection, PagerPageSize, DataRenderMode, StateStoreType } from "devextreme/common/grids"; -import type { Mode, ValidationRuleType, HorizontalAlignment, VerticalAlignment, DataType, Format as CommonFormat, SearchMode, SortOrder, ComparisonOperator, SingleMultipleOrNone, SelectAllMode, PositionAlignment, Direction, ToolbarItemLocation, ToolbarItemComponent, DisplayMode, DragDirection, DragHighlight, ScrollbarMode } from "devextreme/common"; +import type { Mode, ValidationRuleType, HorizontalAlignment, VerticalAlignment, template, DataType, Format as CommonFormat, SearchMode, SortOrder, ComparisonOperator, SingleMultipleOrNone, SelectAllMode, PositionAlignment, Direction, ToolbarItemLocation, ToolbarItemComponent, DisplayMode, DragDirection, DragHighlight, ScrollbarMode } from "devextreme/common"; import type { ContentReadyEvent as FilterBuilderContentReadyEvent, DisposingEvent as FilterBuilderDisposingEvent, EditorPreparedEvent as FilterBuilderEditorPreparedEvent, EditorPreparingEvent as FilterBuilderEditorPreparingEvent, InitializedEvent as FilterBuilderInitializedEvent, dxFilterBuilderField, FilterBuilderOperation, dxFilterBuilderCustomOperation, GroupOperation, OptionChangedEvent, ValueChangedEvent } from "devextreme/ui/filter_builder"; import type { ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, dxFormSimpleItem, dxFormOptions, OptionChangedEvent as FormOptionChangedEvent, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, FormItemComponent, FormItemType } from "devextreme/ui/form"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { template } from "devextreme/core/templates/template"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; import type { dxPopupOptions, dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; -import type { event, EventInfo } from "devextreme/events/index"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; diff --git a/packages/devextreme-react/src/date-box.ts b/packages/devextreme-react/src/date-box.ts index a95259345931..976a4b16a7c4 100644 --- a/packages/devextreme-react/src/date-box.ts +++ b/packages/devextreme-react/src/date-box.ts @@ -11,11 +11,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/date_box"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, OptionChangedEvent as ButtonOptionChangedEvent, ClickEvent } from "devextreme/ui/button"; import type { DisposingEvent as CalendarDisposingEvent, InitializedEvent as CalendarInitializedEvent, ValueChangedEvent as CalendarValueChangedEvent, DisabledDate, CalendarZoomLevel, OptionChangedEvent, CalendarSelectionMode, WeekNumberRule } from "devextreme/ui/calendar"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, FirstDayOfWeek, ValidationMessageMode, Position as CommonPosition, ValidationStatus, Format, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, FirstDayOfWeek, ValidationMessageMode, Position as CommonPosition, ValidationStatus, Format, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; diff --git a/packages/devextreme-react/src/date-range-box.ts b/packages/devextreme-react/src/date-range-box.ts index 066d3d9adf30..5ce467df5291 100644 --- a/packages/devextreme-react/src/date-range-box.ts +++ b/packages/devextreme-react/src/date-range-box.ts @@ -11,11 +11,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/date_range_box"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, OptionChangedEvent as ButtonOptionChangedEvent, ClickEvent } from "devextreme/ui/button"; import type { DisposingEvent as CalendarDisposingEvent, InitializedEvent as CalendarInitializedEvent, ValueChangedEvent as CalendarValueChangedEvent, DisabledDate, CalendarZoomLevel, OptionChangedEvent, CalendarSelectionMode, WeekNumberRule } from "devextreme/ui/calendar"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, FirstDayOfWeek, ValidationMessageMode, Position as CommonPosition, ValidationStatus, Format, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, FirstDayOfWeek, ValidationMessageMode, Position as CommonPosition, ValidationStatus, Format, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; diff --git a/packages/devextreme-react/src/defer-rendering.ts b/packages/devextreme-react/src/defer-rendering.ts index 4b35f95f5991..1635440aaada 100644 --- a/packages/devextreme-react/src/defer-rendering.ts +++ b/packages/devextreme-react/src/defer-rendering.ts @@ -9,9 +9,8 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, InitializedEvent, RenderedEvent, ShownEvent } from "devextreme/ui/defer_rendering"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; +import type { AnimationConfig, AnimationState, AnimationType, CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { Direction, HorizontalAlignment, VerticalAlignment, PositionAlignment } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/diagram.ts b/packages/devextreme-react/src/diagram.ts index e4047b6cf0ab..44b8bd2c1031 100644 --- a/packages/devextreme-react/src/diagram.ts +++ b/packages/devextreme-react/src/diagram.ts @@ -9,9 +9,8 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, CustomCommandEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemDblClickEvent, RequestEditOperationEvent, RequestLayoutUpdateEvent, DataLayoutType, Command as DiagramCommand, CustomCommand, ShapeCategory, ToolboxDisplayMode, ShapeType, dxDiagramShape, ConnectorLineEnd, ConnectorLineType, PanelVisibility } from "devextreme/ui/diagram"; -import type { Orientation, ToolbarItemLocation } from "devextreme/common"; +import type { Orientation, ToolbarItemLocation, template } from "devextreme/common"; import type { dxSVGElement } from "devextreme/core/element"; -import type { template } from "devextreme/core/templates/template"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; diff --git a/packages/devextreme-react/src/drop-down-box.ts b/packages/devextreme-react/src/drop-down-box.ts index c79e93cf6e0c..315e56332bb4 100644 --- a/packages/devextreme-react/src/drop-down-box.ts +++ b/packages/devextreme-react/src/drop-down-box.ts @@ -10,11 +10,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/drop_down_box"; import type { DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, ContentReadyEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; diff --git a/packages/devextreme-react/src/drop-down-button.ts b/packages/devextreme-react/src/drop-down-button.ts index 550797ada27d..f34fe455cf04 100644 --- a/packages/devextreme-react/src/drop-down-button.ts +++ b/packages/devextreme-react/src/drop-down-button.ts @@ -9,11 +9,10 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { ButtonClickEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent } from "devextreme/ui/drop_down_button"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, PositionAlignment, Direction, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, template, PositionAlignment, Direction, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; diff --git a/packages/devextreme-react/src/filter-builder.ts b/packages/devextreme-react/src/filter-builder.ts index fb2bf41d88f5..2a7c73c85b43 100644 --- a/packages/devextreme-react/src/filter-builder.ts +++ b/packages/devextreme-react/src/filter-builder.ts @@ -9,9 +9,8 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, EditorPreparedEvent, EditorPreparingEvent, InitializedEvent, ValueChangedEvent, dxFilterBuilderField, FilterBuilderOperation } from "devextreme/ui/filter_builder"; -import type { DataType, Format as CommonFormat } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { DataType, template, Format as CommonFormat } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; diff --git a/packages/devextreme-react/src/form.ts b/packages/devextreme-react/src/form.ts index df4b103107cf..40474ca2cf63 100644 --- a/packages/devextreme-react/src/form.ts +++ b/packages/devextreme-react/src/form.ts @@ -11,8 +11,7 @@ import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, EditorEnterKeyEvent, InitializedEvent, FormItemType, dxFormButtonItem, dxFormEmptyItem, dxFormGroupItem, dxFormSimpleItem, dxFormTabbedItem, FormItemComponent, LabelLocation } from "devextreme/ui/form"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; import type { ContentReadyEvent as TabPanelContentReadyEvent, DisposingEvent as TabPanelDisposingEvent, InitializedEvent as TabPanelInitializedEvent, OptionChangedEvent as TabPanelOptionChangedEvent, dxTabPanelOptions, dxTabPanelItem, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; -import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, ButtonType, ComparisonOperator, TabsIconPosition, TabsStyle, Position } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; +import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, TabsIconPosition, TabsStyle, Position } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; diff --git a/packages/devextreme-react/src/funnel.ts b/packages/devextreme-react/src/funnel.ts index 6b056272ffa7..1420402a680a 100644 --- a/packages/devextreme-react/src/funnel.ts +++ b/packages/devextreme-react/src/funnel.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, ItemClickEvent, LegendClickEvent, dxFunnelItem, FunnelLegendItem } from "devextreme/viz/funnel"; import type { DashStyle, Font as ChartsFont, TextOverflow, WordWrap, HatchDirection, LabelPosition } from "devextreme/common/charts"; -import type { ExportFormat, Format as CommonFormat, HorizontalAlignment, VerticalEdge, HorizontalEdge, Position, Orientation } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { ExportFormat, Format as CommonFormat, HorizontalAlignment, VerticalEdge, HorizontalEdge, Position, template, Orientation } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/gallery.ts b/packages/devextreme-react/src/gallery.ts index 60b12c214861..a35001b635ce 100644 --- a/packages/devextreme-react/src/gallery.ts +++ b/packages/devextreme-react/src/gallery.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxGalleryItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent } from "devextreme/ui/gallery"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/gantt.ts b/packages/devextreme-react/src/gantt.ts index 8f8fa8c1ee4b..2b7f4ed136ea 100644 --- a/packages/devextreme-react/src/gantt.ts +++ b/packages/devextreme-react/src/gantt.ts @@ -9,11 +9,10 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, ContextMenuPreparingEvent, CustomCommandEvent, DependencyDeletedEvent, DependencyDeletingEvent, DependencyInsertedEvent, DependencyInsertingEvent, DisposingEvent, InitializedEvent, ResourceAssignedEvent, ResourceAssigningEvent, ResourceDeletedEvent, ResourceDeletingEvent, ResourceInsertedEvent, ResourceInsertingEvent, ResourceManagerDialogShowingEvent, ResourceUnassignedEvent, ResourceUnassigningEvent, ScaleCellPreparedEvent, TaskClickEvent, TaskDblClickEvent, TaskDeletedEvent, TaskDeletingEvent, TaskEditDialogShowingEvent, TaskInsertedEvent, TaskInsertingEvent, TaskMovingEvent, TaskUpdatedEvent, TaskUpdatingEvent, dxGanttContextMenuItem, GanttPredefinedContextMenuItem, dxGanttFilterRowOperationDescriptions, dxGanttHeaderFilterTexts, GanttPredefinedToolbarItem, GanttScaleType, dxGanttToolbarItem } from "devextreme/ui/gantt"; -import type { HorizontalAlignment, DataType, Format as CommonFormat, SearchMode, SortOrder, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone } from "devextreme/common"; +import type { HorizontalAlignment, template, DataType, Format as CommonFormat, SearchMode, SortOrder, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone } from "devextreme/common"; import type { dxTreeListColumn, dxTreeListRowObject } from "devextreme/ui/tree_list"; -import type { template } from "devextreme/core/templates/template"; import type { FilterOperation, FilterType, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, SelectedFilterOperation, HeaderFilterSearchConfig } from "devextreme/common/grids"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; import type { dxContextMenuItem } from "devextreme/ui/context_menu"; diff --git a/packages/devextreme-react/src/html-editor.ts b/packages/devextreme-react/src/html-editor.ts index d1971a16c4a4..05b8d1ae8972 100644 --- a/packages/devextreme-react/src/html-editor.ts +++ b/packages/devextreme-react/src/html-editor.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, FocusInEvent, FocusOutEvent, InitializedEvent, ValueChangedEvent, HtmlEditorImageUploadMode, dxHtmlEditorImageUploadTabItem, HtmlEditorImageUploadTab, dxHtmlEditorTableContextMenuItem, HtmlEditorPredefinedContextMenuItem, HtmlEditorPredefinedToolbarItem, dxHtmlEditorToolbarItem } from "devextreme/ui/html_editor"; import type { ContentReadyEvent as FileUploaderContentReadyEvent, DisposingEvent as FileUploaderDisposingEvent, InitializedEvent as FileUploaderInitializedEvent, ValueChangedEvent as FileUploaderValueChangedEvent, BeforeSendEvent, DropZoneEnterEvent, DropZoneLeaveEvent, FilesUploadedEvent, OptionChangedEvent, ProgressEvent, UploadAbortedEvent, UploadedEvent, UploadErrorEvent, UploadStartedEvent, UploadHttpMethod, FileUploadMode, dxFileUploaderOptions } from "devextreme/ui/file_uploader"; -import type { ValidationStatus, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { ValidationStatus, template, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; diff --git a/packages/devextreme-react/src/index.ts b/packages/devextreme-react/src/index.ts index 7854d6a05322..2cb6dbbb4d50 100644 --- a/packages/devextreme-react/src/index.ts +++ b/packages/devextreme-react/src/index.ts @@ -80,3 +80,5 @@ export { ValidationGroup } from "./validation-group"; export { ValidationSummary } from "./validation-summary"; export { Validator } from "./validator"; export { VectorMap } from "./vector-map"; + +export * as Common from "./common/index"; diff --git a/packages/devextreme-react/src/linear-gauge.ts b/packages/devextreme-react/src/linear-gauge.ts index 85d4ba287a59..55be571d0ac0 100644 --- a/packages/devextreme-react/src/linear-gauge.ts +++ b/packages/devextreme-react/src/linear-gauge.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, TooltipHiddenEvent, TooltipShownEvent } from "devextreme/viz/linear_gauge"; import type { AnimationEaseMode, DashStyle, Font as ChartsFont, LabelOverlap, ChartsColor, Palette, PaletteExtensionMode, TextOverflow, WordWrap } from "devextreme/common/charts"; -import type { ExportFormat, Format as CommonFormat, Orientation, HorizontalAlignment, VerticalAlignment, HorizontalEdge, VerticalEdge } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { ExportFormat, Format as CommonFormat, Orientation, HorizontalAlignment, VerticalAlignment, HorizontalEdge, VerticalEdge, template } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/list.ts b/packages/devextreme-react/src/list.ts index 115851fb8970..e83415365b33 100644 --- a/packages/devextreme-react/src/list.ts +++ b/packages/devextreme-react/src/list.ts @@ -13,9 +13,8 @@ import type { dxListItem, ContentReadyEvent, DisposingEvent, GroupRenderedEvent, import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, OptionChangedEvent as ButtonOptionChangedEvent, ClickEvent } from "devextreme/ui/button"; import type { ContentReadyEvent as TextBoxContentReadyEvent, DisposingEvent as TextBoxDisposingEvent, InitializedEvent as TextBoxInitializedEvent, OptionChangedEvent as TextBoxOptionChangedEvent, TextBoxType, ChangeEvent, CopyEvent, CutEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InputEvent, KeyDownEvent, KeyUpEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/text_box"; import type { DisposingEvent as SortableDisposingEvent, InitializedEvent as SortableInitializedEvent, AddEvent, DragChangeEvent, DragEndEvent, DragMoveEvent, DragStartEvent, OptionChangedEvent, RemoveEvent, ReorderEvent } from "devextreme/ui/sortable"; -import type { TextEditorButtonLocation, DragDirection, DragHighlight, Orientation, ButtonStyle, ButtonType, TextBoxPredefinedButton, TextEditorButton, LabelMode, MaskMode, EditorStyle, ValidationMessageMode, Position, ValidationStatus } from "devextreme/common"; +import type { TextEditorButtonLocation, template, DragDirection, DragHighlight, Orientation, ButtonStyle, ButtonType, TextBoxPredefinedButton, TextEditorButton, LabelMode, MaskMode, EditorStyle, ValidationMessageMode, Position, ValidationStatus } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/load-panel.ts b/packages/devextreme-react/src/load-panel.ts index 1931a98758c0..0c94781a31db 100644 --- a/packages/devextreme-react/src/load-panel.ts +++ b/packages/devextreme-react/src/load-panel.ts @@ -9,9 +9,8 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { PositionAlignment, HorizontalAlignment, VerticalAlignment, Direction } from "devextreme/common"; -import type { PositionConfig, CollisionResolution, CollisionResolutionCombination } from "devextreme/animation/position"; +import type { PositionConfig, AnimationConfig, CollisionResolution, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, ShowingEvent, ShownEvent } from "devextreme/ui/load_panel"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/lookup.ts b/packages/devextreme-react/src/lookup.ts index 90b75034912a..0378331475b4 100644 --- a/packages/devextreme-react/src/lookup.ts +++ b/packages/devextreme-react/src/lookup.ts @@ -10,11 +10,9 @@ import NestedOption from "./core/nested-option"; import type { ClosedEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, OpenedEvent, PageLoadingEvent, PullRefreshEvent, ScrollEvent, ValueChangedEvent } from "devextreme/ui/lookup"; import type { ContentReadyEvent as PopoverContentReadyEvent, DisposingEvent as PopoverDisposingEvent, InitializedEvent as PopoverInitializedEvent, HiddenEvent, HidingEvent, OptionChangedEvent, ShowingEvent, ShownEvent, TitleRenderedEvent } from "devextreme/ui/popover"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, Position as CommonPosition, Direction, PositionAlignment, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, template, Position as CommonPosition, Direction, PositionAlignment, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; diff --git a/packages/devextreme-react/src/menu.ts b/packages/devextreme-react/src/menu.ts index 7f0047324f5f..1fc037165ac8 100644 --- a/packages/devextreme-react/src/menu.ts +++ b/packages/devextreme-react/src/menu.ts @@ -10,11 +10,9 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { dxMenuItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemRenderedEvent, SubmenuHiddenEvent, SubmenuHidingEvent, SubmenuShowingEvent, SubmenuShownEvent } from "devextreme/ui/menu"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, Direction, PositionAlignment, SubmenuShowMode } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, Direction, template, PositionAlignment, SubmenuShowMode } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/multi-view.ts b/packages/devextreme-react/src/multi-view.ts index 7654df8dc704..ac1eb16d0553 100644 --- a/packages/devextreme-react/src/multi-view.ts +++ b/packages/devextreme-react/src/multi-view.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxMultiViewItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent } from "devextreme/ui/multi_view"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/number-box.ts b/packages/devextreme-react/src/number-box.ts index e4e1850a3cd7..e5fe00988f19 100644 --- a/packages/devextreme-react/src/number-box.ts +++ b/packages/devextreme-react/src/number-box.ts @@ -10,8 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/number_box"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { TextEditorButtonLocation, Format as CommonFormat, ButtonStyle, ButtonType } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; +import type { TextEditorButtonLocation, Format as CommonFormat, ButtonStyle, template, ButtonType } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/pie-chart.ts b/packages/devextreme-react/src/pie-chart.ts index 87f9e7aadc78..d6a07b402585 100644 --- a/packages/devextreme-react/src/pie-chart.ts +++ b/packages/devextreme-react/src/pie-chart.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DoneEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LegendClickEvent, PointClickEvent, TooltipHiddenEvent, TooltipShownEvent, dxPieChartAnnotationConfig, PieChartAnnotationLocation, dxPieChartCommonAnnotationConfig, PieChartSeriesInteractionMode, SmallValuesGroupingMode, PieChartLegendItem, PieChartLegendHoverMode, PieChartSeries } from "devextreme/viz/pie_chart"; import type { AnimationEaseMode, DashStyle, Font as ChartsFont, TextOverflow, AnnotationType, WordWrap, ChartsDataType, ChartsColor, HatchDirection, LabelPosition } from "devextreme/common/charts"; -import type { template } from "devextreme/core/templates/template"; -import type { Format as CommonFormat, ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { template, Format as CommonFormat, ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/polar-chart.ts b/packages/devextreme-react/src/polar-chart.ts index 478f49b1624f..10eb641b5eb5 100644 --- a/packages/devextreme-react/src/polar-chart.ts +++ b/packages/devextreme-react/src/polar-chart.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { ArgumentAxisClickEvent, DisposingEvent, DoneEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LegendClickEvent, PointClickEvent, SeriesClickEvent, TooltipHiddenEvent, TooltipShownEvent, ZoomEndEvent, ZoomStartEvent, dxPolarChartAnnotationConfig, dxPolarChartCommonAnnotationConfig, PolarChartSeriesType, PolarChartSeries, ValueAxisVisualRangeUpdateMode } from "devextreme/viz/polar_chart"; import type { AnimationEaseMode, DashStyle, Font as ChartsFont, TextOverflow, AnnotationType, WordWrap, ChartsDataType, DiscreteAxisDivisionMode, ArgumentAxisHoverMode, LabelOverlap, TimeInterval, AxisScaleType, ChartsColor, SeriesHoverMode, HatchDirection, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, ValueErrorBarDisplayMode, ValueErrorBarType, LegendItem, LegendHoverMode } from "devextreme/common/charts"; -import type { template } from "devextreme/core/templates/template"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { Format as CommonFormat, ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge } from "devextreme/common"; +import type { template, Format as CommonFormat, ExportFormat, HorizontalAlignment, Position, Orientation, VerticalEdge } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type * as CommonChartTypes from "devextreme/common/charts"; diff --git a/packages/devextreme-react/src/popover.ts b/packages/devextreme-react/src/popover.ts index 77772afc929b..2944ec976a3e 100644 --- a/packages/devextreme-react/src/popover.ts +++ b/packages/devextreme-react/src/popover.ts @@ -8,12 +8,10 @@ import dxPopover, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { Position as CommonPosition, HorizontalAlignment, VerticalAlignment, Direction, PositionAlignment, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { PositionConfig, CollisionResolution, CollisionResolutionCombination } from "devextreme/animation/position"; +import type { Position as CommonPosition, HorizontalAlignment, VerticalAlignment, Direction, PositionAlignment, ToolbarItemLocation, template, ToolbarItemComponent } from "devextreme/common"; +import type { PositionConfig, AnimationConfig, CollisionResolution, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, ShowingEvent, ShownEvent, TitleRenderedEvent } from "devextreme/ui/popover"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; -import type { template } from "devextreme/core/templates/template"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { ToolbarLocation } from "devextreme/ui/popup"; diff --git a/packages/devextreme-react/src/popup.ts b/packages/devextreme-react/src/popup.ts index 57d43b08d20a..c154741ec2c6 100644 --- a/packages/devextreme-react/src/popup.ts +++ b/packages/devextreme-react/src/popup.ts @@ -8,11 +8,9 @@ import dxPopup, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { PositionAlignment, HorizontalAlignment, VerticalAlignment, Direction, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { PositionConfig, CollisionResolution, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; +import type { PositionAlignment, HorizontalAlignment, VerticalAlignment, Direction, ToolbarItemLocation, template, ToolbarItemComponent } from "devextreme/common"; +import type { PositionConfig, AnimationConfig, CollisionResolution, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; -import type { template } from "devextreme/core/templates/template"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { ToolbarLocation } from "devextreme/ui/popup"; diff --git a/packages/devextreme-react/src/radio-group.ts b/packages/devextreme-react/src/radio-group.ts index 376c30251d61..b5bd19351d91 100644 --- a/packages/devextreme-react/src/radio-group.ts +++ b/packages/devextreme-react/src/radio-group.ts @@ -10,7 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, InitializedEvent, ValueChangedEvent } from "devextreme/ui/radio_group"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/range-selector.ts b/packages/devextreme-react/src/range-selector.ts index 04fdcdac92eb..07dda4721180 100644 --- a/packages/devextreme-react/src/range-selector.ts +++ b/packages/devextreme-react/src/range-selector.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, ValueChangedEvent, BackgroundImageLocation, ValueChangedCallMode, ChartAxisScale, AxisScale } from "devextreme/viz/range_selector"; import type { chartPointAggregationInfoObject, chartSeriesObject, ChartSeriesAggregationMethod, dxChartCommonSeriesSettings, FinancialChartReductionLevel } from "devextreme/viz/chart"; import type { Format as CommonFormat, SliderValueChangeMode, HorizontalAlignment, ExportFormat, VerticalEdge } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DashStyle, ScaleBreakLineStyle, Palette, PaletteExtensionMode, ChartsDataType, ChartsColor, SeriesHoverMode, HatchDirection, Font as ChartsFont, RelativePosition, PointInteractionMode, PointSymbol, SeriesSelectionMode, SeriesType, ValueErrorBarDisplayMode, ValueErrorBarType, LabelOverlap, TimeInterval, ScaleBreak, DiscreteAxisDivisionMode, TextOverflow, WordWrap } from "devextreme/common/charts"; import type { ChartSeries } from "devextreme/viz/common"; diff --git a/packages/devextreme-react/src/range-slider.ts b/packages/devextreme-react/src/range-slider.ts index 06eb1e3f5726..7cfa337269c4 100644 --- a/packages/devextreme-react/src/range-slider.ts +++ b/packages/devextreme-react/src/range-slider.ts @@ -10,7 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, InitializedEvent, ValueChangedEvent } from "devextreme/ui/range_slider"; import type { Format as CommonFormat, VerticalEdge, TooltipShowMode } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/responsive-box.ts b/packages/devextreme-react/src/responsive-box.ts index 652c2841cc8f..b54b1f17996e 100644 --- a/packages/devextreme-react/src/responsive-box.ts +++ b/packages/devextreme-react/src/responsive-box.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxResponsiveBoxItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent } from "devextreme/ui/responsive_box"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/sankey.ts b/packages/devextreme-react/src/sankey.ts index b5d4eb4e7ee0..a2a6eb65ba34 100644 --- a/packages/devextreme-react/src/sankey.ts +++ b/packages/devextreme-react/src/sankey.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, LinkClickEvent, NodeClickEvent, dxSankeyNode, SankeyColorMode } from "devextreme/viz/sankey"; import type { DashStyle, HatchDirection, Font as ChartsFont, TextOverflow, WordWrap } from "devextreme/common/charts"; -import type { ExportFormat, Format as CommonFormat, HorizontalAlignment, VerticalEdge } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { ExportFormat, Format as CommonFormat, HorizontalAlignment, VerticalEdge, template } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/scheduler.ts b/packages/devextreme-react/src/scheduler.ts index a7137a629e1f..5941feacfd13 100644 --- a/packages/devextreme-react/src/scheduler.ts +++ b/packages/devextreme-react/src/scheduler.ts @@ -9,11 +9,10 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, AllDayPanelMode, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, dxSchedulerScrolling } from "devextreme/ui/scheduler"; -import type { event } from "devextreme/events/index"; +import type { event } from "devextreme/events/events.types"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; -import type { ScrollMode, FirstDayOfWeek, Orientation } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; +import type { ScrollMode, template, FirstDayOfWeek, Orientation } from "devextreme/common"; import type dxSortable from "devextreme/ui/sortable"; import type dxDraggable from "devextreme/ui/draggable"; diff --git a/packages/devextreme-react/src/select-box.ts b/packages/devextreme-react/src/select-box.ts index 16359d264bd5..0416561ca8f7 100644 --- a/packages/devextreme-react/src/select-box.ts +++ b/packages/devextreme-react/src/select-box.ts @@ -10,11 +10,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, ContentReadyEvent, CopyEvent, CustomItemCreatingEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, ItemClickEvent, KeyDownEvent, KeyUpEvent, OpenedEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/select_box"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; diff --git a/packages/devextreme-react/src/slider.ts b/packages/devextreme-react/src/slider.ts index a74eab576ad5..71c4245b0769 100644 --- a/packages/devextreme-react/src/slider.ts +++ b/packages/devextreme-react/src/slider.ts @@ -10,7 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ContentReadyEvent, DisposingEvent, InitializedEvent, ValueChangedEvent } from "devextreme/ui/slider"; import type { Format as CommonFormat, VerticalEdge, TooltipShowMode } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/sparkline.ts b/packages/devextreme-react/src/sparkline.ts index e471329f086e..78498e9233d7 100644 --- a/packages/devextreme-react/src/sparkline.ts +++ b/packages/devextreme-react/src/sparkline.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, TooltipHiddenEvent, TooltipShownEvent } from "devextreme/viz/sparkline"; import type { DashStyle, Font as ChartsFont } from "devextreme/common/charts"; -import type { Format as CommonFormat } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { Format as CommonFormat, template } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/splitter.ts b/packages/devextreme-react/src/splitter.ts index 7364dde388bf..c2514fdf1083 100644 --- a/packages/devextreme-react/src/splitter.ts +++ b/packages/devextreme-react/src/splitter.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxSplitterItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemCollapsedEvent, ItemContextMenuEvent, ItemExpandedEvent, ItemRenderedEvent, ResizeEvent, ResizeEndEvent, ResizeStartEvent, dxSplitterOptions } from "devextreme/ui/splitter"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/tab-panel.ts b/packages/devextreme-react/src/tab-panel.ts index 4164d1fcb4a4..89b26a2ba489 100644 --- a/packages/devextreme-react/src/tab-panel.ts +++ b/packages/devextreme-react/src/tab-panel.ts @@ -10,7 +10,7 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { dxTabPanelItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; type ReplaceFieldTypes = { diff --git a/packages/devextreme-react/src/tabs.ts b/packages/devextreme-react/src/tabs.ts index d6d6ef54cdf1..8256de19f30c 100644 --- a/packages/devextreme-react/src/tabs.ts +++ b/packages/devextreme-react/src/tabs.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxTabsItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangingEvent } from "devextreme/ui/tabs"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/tag-box.ts b/packages/devextreme-react/src/tag-box.ts index 28e59fce03e1..20f2c86b9888 100644 --- a/packages/devextreme-react/src/tag-box.ts +++ b/packages/devextreme-react/src/tag-box.ts @@ -10,11 +10,10 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ClosedEvent, ContentReadyEvent, CustomItemCreatingEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, ItemClickEvent, KeyDownEvent, KeyUpEvent, MultiTagPreparingEvent, OpenedEvent, SelectAllValueChangedEvent, ValueChangedEvent } from "devextreme/ui/tag_box"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { HorizontalAlignment, VerticalAlignment, TextEditorButtonLocation, template, PositionAlignment, Direction, ButtonStyle, ButtonType, ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; diff --git a/packages/devextreme-react/src/text-box.ts b/packages/devextreme-react/src/text-box.ts index 638b7e089fb5..e57e143d5ebd 100644 --- a/packages/devextreme-react/src/text-box.ts +++ b/packages/devextreme-react/src/text-box.ts @@ -10,8 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ChangeEvent, ContentReadyEvent, CopyEvent, CutEvent, DisposingEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InitializedEvent, InputEvent, KeyDownEvent, KeyUpEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/text_box"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { TextEditorButtonLocation, ButtonStyle, ButtonType } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; +import type { TextEditorButtonLocation, ButtonStyle, template, ButtonType } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/tile-view.ts b/packages/devextreme-react/src/tile-view.ts index 2f65dd0837c7..a744f149259c 100644 --- a/packages/devextreme-react/src/tile-view.ts +++ b/packages/devextreme-react/src/tile-view.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { dxTileViewItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent } from "devextreme/ui/tile_view"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/toast.ts b/packages/devextreme-react/src/toast.ts index 94151bbaa10e..9b617397d34c 100644 --- a/packages/devextreme-react/src/toast.ts +++ b/packages/devextreme-react/src/toast.ts @@ -8,9 +8,8 @@ import dxToast, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { PositionConfig, CollisionResolution, CollisionResolutionCombination } from "devextreme/animation/position"; +import type { PositionConfig, AnimationConfig, CollisionResolution, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, ShowingEvent, ShownEvent } from "devextreme/ui/toast"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; import type { HorizontalAlignment, VerticalAlignment, Direction, PositionAlignment } from "devextreme/common"; type ReplaceFieldTypes = { diff --git a/packages/devextreme-react/src/toolbar.ts b/packages/devextreme-react/src/toolbar.ts index c36af03d1dee..e1e423d59aba 100644 --- a/packages/devextreme-react/src/toolbar.ts +++ b/packages/devextreme-react/src/toolbar.ts @@ -10,8 +10,7 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { dxToolbarItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; -import type { ToolbarItemLocation, ToolbarItemComponent } from "devextreme/common"; -import type { template } from "devextreme/core/templates/template"; +import type { ToolbarItemLocation, template, ToolbarItemComponent } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; type ReplaceFieldTypes = { diff --git a/packages/devextreme-react/src/tooltip.ts b/packages/devextreme-react/src/tooltip.ts index 75b3182cf150..62d99865ebe5 100644 --- a/packages/devextreme-react/src/tooltip.ts +++ b/packages/devextreme-react/src/tooltip.ts @@ -9,9 +9,8 @@ import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponent import NestedOption from "./core/nested-option"; import type { Position as CommonPosition, HorizontalAlignment, VerticalAlignment, Direction, PositionAlignment } from "devextreme/common"; -import type { PositionConfig, CollisionResolution, CollisionResolutionCombination } from "devextreme/animation/position"; +import type { PositionConfig, AnimationConfig, CollisionResolution, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { ContentReadyEvent, DisposingEvent, HiddenEvent, HidingEvent, InitializedEvent, ShowingEvent, ShownEvent } from "devextreme/ui/tooltip"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/tree-list.ts b/packages/devextreme-react/src/tree-list.ts index 70e4a925d34b..10b572bb4787 100644 --- a/packages/devextreme-react/src/tree-list.ts +++ b/packages/devextreme-react/src/tree-list.ts @@ -13,15 +13,14 @@ import type { dxTreeListColumn, AdaptiveDetailRowPreparingEvent, CellClickEvent, import type { DataChange, DataChangeType, FilterOperation, FilterType, FixedPosition, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, SelectedFilterOperation, ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig, GridsEditMode, GridsEditRefreshMode, StartEditAction, GridBase, ApplyFilterMode, HeaderFilterSearchConfig, EnterKeyAction, EnterKeyDirection, PagerPageSize, DataRenderMode, StateStoreType } from "devextreme/common/grids"; import type { ContentReadyEvent as FilterBuilderContentReadyEvent, DisposingEvent as FilterBuilderDisposingEvent, EditorPreparedEvent as FilterBuilderEditorPreparedEvent, EditorPreparingEvent as FilterBuilderEditorPreparingEvent, InitializedEvent as FilterBuilderInitializedEvent, dxFilterBuilderField, FilterBuilderOperation, dxFilterBuilderCustomOperation, GroupOperation, OptionChangedEvent, ValueChangedEvent } from "devextreme/ui/filter_builder"; import type { ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, dxFormSimpleItem, dxFormOptions, OptionChangedEvent as FormOptionChangedEvent, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, FormItemComponent, FormItemType } from "devextreme/ui/form"; -import type { AnimationConfig, AnimationState, AnimationType } from "devextreme/animation/fx"; -import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, DataType, Format as CommonFormat, SearchMode, SortOrder, ComparisonOperator, PositionAlignment, Mode, Direction, ToolbarItemLocation, ToolbarItemComponent, DisplayMode, DragDirection, DragHighlight, ScrollMode, ScrollbarMode, SingleMultipleOrNone } from "devextreme/common"; -import type { event, EventInfo } from "devextreme/events/index"; -import type { template } from "devextreme/core/templates/template"; -import type { CollisionResolution, PositionConfig, CollisionResolutionCombination } from "devextreme/animation/position"; -import type { Format as LocalizationFormat } from "devextreme/localization"; +import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; +import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, template, DataType, Format as CommonFormat, SearchMode, SortOrder, ComparisonOperator, PositionAlignment, Mode, Direction, ToolbarItemLocation, ToolbarItemComponent, DisplayMode, DragDirection, DragHighlight, ScrollMode, ScrollbarMode, SingleMultipleOrNone } from "devextreme/common"; +import type { event } from "devextreme/events/events.types"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; import type { dxPopupOptions, dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; +import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; diff --git a/packages/devextreme-react/src/tree-map.ts b/packages/devextreme-react/src/tree-map.ts index b5fee547ac6b..f3d8ac0d8fad 100644 --- a/packages/devextreme-react/src/tree-map.ts +++ b/packages/devextreme-react/src/tree-map.ts @@ -10,9 +10,8 @@ import NestedOption from "./core/nested-option"; import type { ClickEvent, DisposingEvent, DrawnEvent, DrillEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, NodesInitializedEvent, NodesRenderingEvent, TreeMapColorizerType, dxTreeMapNode } from "devextreme/viz/tree_map"; import type { DashStyle, Palette, PaletteExtensionMode, Font as ChartsFont, TextOverflow, WordWrap } from "devextreme/common/charts"; -import type { ExportFormat, Format as CommonFormat, HorizontalAlignment, VerticalEdge } from "devextreme/common"; -import type { Format as LocalizationFormat } from "devextreme/localization"; -import type { template } from "devextreme/core/templates/template"; +import type { ExportFormat, Format as CommonFormat, HorizontalAlignment, VerticalEdge, template } from "devextreme/common"; +import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/tree-view.ts b/packages/devextreme-react/src/tree-view.ts index 87ce7d4a12bd..ad79b0f61970 100644 --- a/packages/devextreme-react/src/tree-view.ts +++ b/packages/devextreme-react/src/tree-view.ts @@ -12,9 +12,8 @@ import NestedOption from "./core/nested-option"; import type { dxTreeViewItem, ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent, ItemCollapsedEvent, ItemContextMenuEvent, ItemExpandedEvent, ItemHoldEvent, ItemRenderedEvent, SelectAllValueChangedEvent } from "devextreme/ui/tree_view"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; import type { ContentReadyEvent as TextBoxContentReadyEvent, DisposingEvent as TextBoxDisposingEvent, InitializedEvent as TextBoxInitializedEvent, OptionChangedEvent as TextBoxOptionChangedEvent, TextBoxType, ChangeEvent, CopyEvent, CutEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InputEvent, KeyDownEvent, KeyUpEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/text_box"; -import type { TextEditorButtonLocation, ButtonStyle, ButtonType, TextBoxPredefinedButton, TextEditorButton, LabelMode, MaskMode, EditorStyle, ValidationMessageMode, Position, ValidationStatus } from "devextreme/common"; +import type { TextEditorButtonLocation, template, ButtonStyle, ButtonType, TextBoxPredefinedButton, TextEditorButton, LabelMode, MaskMode, EditorStyle, ValidationMessageMode, Position, ValidationStatus } from "devextreme/common"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { template } from "devextreme/core/templates/template"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/validation-summary.ts b/packages/devextreme-react/src/validation-summary.ts index a9fce1865b99..1c573f9573ad 100644 --- a/packages/devextreme-react/src/validation-summary.ts +++ b/packages/devextreme-react/src/validation-summary.ts @@ -11,7 +11,7 @@ import NestedOption from "./core/nested-option"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { ContentReadyEvent, DisposingEvent, InitializedEvent, ItemClickEvent } from "devextreme/ui/validation_summary"; -import type { template } from "devextreme/core/templates/template"; +import type { template } from "devextreme/common"; type ReplaceFieldTypes = { [P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P]; diff --git a/packages/devextreme-react/src/vector-map.ts b/packages/devextreme-react/src/vector-map.ts index 154e0617f822..a8c3e8e20bc3 100644 --- a/packages/devextreme-react/src/vector-map.ts +++ b/packages/devextreme-react/src/vector-map.ts @@ -10,8 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ClickEvent, DisposingEvent, DrawnEvent, ExportedEvent, ExportingEvent, FileSavingEvent, IncidentOccurredEvent, InitializedEvent, TooltipHiddenEvent, TooltipShownEvent, dxVectorMapAnnotationConfig, MapLayerElement, VectorMapMarkerType, VectorMapLayerType, VectorMapLegendItem, VectorMapMarkerShape } from "devextreme/viz/vector_map"; import type { DashStyle, Font as ChartsFont, TextOverflow, AnnotationType, WordWrap, Palette } from "devextreme/common/charts"; -import type { template } from "devextreme/core/templates/template"; -import type { HorizontalAlignment, VerticalEdge, ExportFormat, SingleMultipleOrNone, Position, Orientation } from "devextreme/common"; +import type { template, HorizontalAlignment, VerticalEdge, ExportFormat, SingleMultipleOrNone, Position, Orientation } from "devextreme/common"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; diff --git a/packages/devextreme-vue/gulpfile.js b/packages/devextreme-vue/gulpfile.js index e0a1f8ce05eb..640075b42fcf 100644 --- a/packages/devextreme-vue/gulpfile.js +++ b/packages/devextreme-vue/gulpfile.js @@ -44,7 +44,11 @@ gulp.task(GENERATE, }, config.widgetsPackage, VUE_VERSION, - true + true, + { + quotes: 'double', + excplicitIndexInImports: true, + } ); done(); @@ -117,7 +121,7 @@ gulp.task(NPM_PREPARE_MODULES, (done) => { return ['', [moduleFileName], moduleFilePath]; }); - [...packParamsForFolders, ...packParamsForModules].forEach( + [ ...packParamsForModules, ...packParamsForFolders].forEach( ([folder, moduleFileNames, moduleFilePath]) => makeModule(folder, moduleFileNames, moduleFilePath) ); diff --git a/packages/devextreme-vue/src/accordion.ts b/packages/devextreme-vue/src/accordion.ts index 3fc2789d558f..d85be8b2f15f 100644 --- a/packages/devextreme-vue/src/accordion.ts +++ b/packages/devextreme-vue/src/accordion.ts @@ -19,7 +19,7 @@ import { } from "devextreme/ui/accordion"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -76,7 +76,7 @@ const componentConfig = { activeStateEnabled: Boolean, animationDuration: Number, collapsible: Boolean, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/action-sheet.ts b/packages/devextreme-vue/src/action-sheet.ts index 04792e583d60..cef00037f9fc 100644 --- a/packages/devextreme-vue/src/action-sheet.ts +++ b/packages/devextreme-vue/src/action-sheet.ts @@ -18,13 +18,13 @@ import { } from "devextreme/ui/action_sheet"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; import { NativeEventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { ButtonStyle, ButtonType, @@ -68,7 +68,7 @@ interface DxActionSheet extends AccessibleOptions { const componentConfig = { props: { cancelText: String, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, height: [Function, Number, String] as PropType<((() => number | string)) | number | string>, diff --git a/packages/devextreme-vue/src/autocomplete.ts b/packages/devextreme-vue/src/autocomplete.ts index fb680a5dde2c..07857a865727 100644 --- a/packages/devextreme-vue/src/autocomplete.ts +++ b/packages/devextreme-vue/src/autocomplete.ts @@ -33,7 +33,7 @@ import { } from "devextreme/ui/collection/ui.collection_widget.base"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -65,9 +65,12 @@ import { } from "devextreme/ui/autocomplete"; import { AnimationConfig, + CollisionResolution, + PositionConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { dxButtonOptions, ClickEvent, @@ -76,15 +79,12 @@ import { InitializedEvent as ButtonInitializedEvent, OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -179,7 +179,7 @@ const componentConfig = { accessKey: String, activeStateEnabled: Boolean, buttons: Array as PropType>, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, displayValue: String, diff --git a/packages/devextreme-vue/src/bar-gauge.ts b/packages/devextreme-vue/src/bar-gauge.ts index 28007a51b561..55960c741ffb 100644 --- a/packages/devextreme-vue/src/bar-gauge.ts +++ b/packages/devextreme-vue/src/bar-gauge.ts @@ -37,7 +37,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick, crossAlign: String as PropType, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, direction: String as PropType, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/bullet.ts b/packages/devextreme-vue/src/bullet.ts index 8c1b11e0c400..9e715de1178f 100644 --- a/packages/devextreme-vue/src/bullet.ts +++ b/packages/devextreme-vue/src/bullet.ts @@ -24,7 +24,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick SeriesLabel)>, customizePoint: Function as PropType<((pointInfo: any) => SeriesPoint)>, dataPrepareSettings: Object as PropType>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, defaultPane: String, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/chat.ts b/packages/devextreme-vue/src/chat.ts index d7da98cb6f99..957ef24b90cb 100644 --- a/packages/devextreme-vue/src/chat.ts +++ b/packages/devextreme-vue/src/chat.ts @@ -16,13 +16,13 @@ import { } from "devextreme/ui/chat"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { Format as CommonFormat, } from "devextreme/common"; @@ -70,7 +70,7 @@ const componentConfig = { accessKey: String, activeStateEnabled: Boolean, alerts: Array as PropType>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, dayHeaderFormat: [Object, String, Function] as PropType string)) | Record | string>, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/circular-gauge.ts b/packages/devextreme-vue/src/circular-gauge.ts index 57e9b96f1ddc..99012c4abbb2 100644 --- a/packages/devextreme-vue/src/circular-gauge.ts +++ b/packages/devextreme-vue/src/circular-gauge.ts @@ -40,7 +40,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, closeOnOutsideClick: [Boolean, Function] as PropType boolean))>, cssClass: String, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, disabledExpr: [Function, String] as PropType<((() => void)) | string>, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/data-grid.ts b/packages/devextreme-vue/src/data-grid.ts index 9e1801683f11..b5cf5b8faeb0 100644 --- a/packages/devextreme-vue/src/data-grid.ts +++ b/packages/devextreme-vue/src/data-grid.ts @@ -97,7 +97,6 @@ import { } from "devextreme/ui/data_grid"; import { Mode, - PagerBase, ValidationRuleType, HorizontalAlignment, VerticalAlignment, @@ -119,7 +118,7 @@ import { } from "devextreme/common"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -143,18 +142,19 @@ import { ToolbarLocation, } from "devextreme/ui/popup"; import { - AnimationConfig, - AnimationState, - AnimationType, -} from "devextreme/animation/fx"; + PagerBase, +} from "devextreme/ui/pagination"; import { + AnimationConfig, CollisionResolution, PositionConfig, + AnimationState, + AnimationType, CollisionResolutionCombination, -} from "devextreme/animation/position"; +} from "devextreme/common/core/animation"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { dxFormSimpleItem, dxFormOptions, @@ -175,8 +175,10 @@ import { } from "devextreme/ui/form"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -329,7 +331,7 @@ const componentConfig = { columnWidth: [String, Number] as PropType, customizeColumns: Function as PropType<((columns: Array) => void)>, dataRowTemplate: {}, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, dateSerializationFormat: String, disabled: Boolean, editing: Object as PropType>, @@ -1104,7 +1106,7 @@ const DxColumnHeaderFilterConfig = { props: { allowSearch: Boolean, allowSelectAll: Boolean, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store | Record>, groupInterval: [String, Number] as PropType, height: [Number, String], search: Object as PropType>, @@ -1161,7 +1163,7 @@ const DxColumnLookupConfig = { props: { allowClearing: Boolean, calculateCellValue: Function as PropType<((rowData: any) => any)>, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: String } @@ -1612,7 +1614,7 @@ const DxFieldLookupConfig = { }, props: { allowClearing: Boolean, - dataSource: [Array, Object] as PropType | DataSourceOptions | Store>, + dataSource: [Array, Object] as PropType | DataSourceOptions | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: [Function, String] as PropType<(((data: any) => string | number | boolean)) | string> } @@ -2308,7 +2310,7 @@ const DxHeaderFilterConfig = { props: { allowSearch: Boolean, allowSelectAll: Boolean, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store | Record>, groupInterval: [String, Number] as PropType, height: [Number, String], search: Object as PropType>, @@ -2533,7 +2535,7 @@ const DxLookupConfig = { props: { allowClearing: Boolean, calculateCellValue: Function as PropType<((rowData: any) => any)>, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: [String, Function] as PropType string | number | boolean))> } diff --git a/packages/devextreme-vue/src/date-box.ts b/packages/devextreme-vue/src/date-box.ts index 7f8a3ac49ac3..6d80105498aa 100644 --- a/packages/devextreme-vue/src/date-box.ts +++ b/packages/devextreme-vue/src/date-box.ts @@ -43,7 +43,7 @@ import { } from "devextreme/ui/calendar"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { dxPopupOptions, dxPopupToolbarItem, @@ -72,9 +72,12 @@ import { } from "devextreme/ui/date_box"; import { AnimationConfig, + CollisionResolution, + PositionConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { dxButtonOptions, ClickEvent, @@ -83,15 +86,12 @@ import { InitializedEvent as ButtonInitializedEvent, OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; diff --git a/packages/devextreme-vue/src/date-range-box.ts b/packages/devextreme-vue/src/date-range-box.ts index 9f9f039c1e3e..0f4caf1e2465 100644 --- a/packages/devextreme-vue/src/date-range-box.ts +++ b/packages/devextreme-vue/src/date-range-box.ts @@ -42,7 +42,7 @@ import { } from "devextreme/ui/calendar"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { dxPopupOptions, dxPopupToolbarItem, @@ -69,9 +69,12 @@ import { } from "devextreme/ui/date_range_box"; import { AnimationConfig, + CollisionResolution, + PositionConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { dxButtonOptions, ClickEvent, @@ -80,15 +83,12 @@ import { InitializedEvent as ButtonInitializedEvent, OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; diff --git a/packages/devextreme-vue/src/defer-rendering.ts b/packages/devextreme-vue/src/defer-rendering.ts index 0e961b630dfe..8764bcff1d56 100644 --- a/packages/devextreme-vue/src/defer-rendering.ts +++ b/packages/devextreme-vue/src/defer-rendering.ts @@ -6,7 +6,10 @@ import { AnimationConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolution, + PositionConfig, + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { ContentReadyEvent, DisposingEvent, @@ -21,11 +24,6 @@ import { VerticalAlignment, PositionAlignment, } from "devextreme/common"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick any)) | string>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, fromExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, fromLineEndExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, fromPointIndexExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, @@ -745,7 +745,7 @@ const DxNodesConfig = { containerChildrenExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, containerKeyExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, customDataExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, heightExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, imageUrlExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, itemsExpr: [Function, String] as PropType<(((data: any, value: any) => any)) | string>, diff --git a/packages/devextreme-vue/src/drawer.ts b/packages/devextreme-vue/src/drawer.ts index 3ef1cab47451..7726fdafbcff 100644 --- a/packages/devextreme-vue/src/drawer.ts +++ b/packages/devextreme-vue/src/drawer.ts @@ -4,7 +4,7 @@ import { prepareComponentConfig } from "./core/index"; import Drawer, { Properties } from "devextreme/ui/drawer"; import { event, -} from "devextreme/events/index"; +} from "devextreme/events/events.types"; import { DisposingEvent, InitializedEvent, diff --git a/packages/devextreme-vue/src/drop-down-box.ts b/packages/devextreme-vue/src/drop-down-box.ts index 1cbc58a4d2c8..3dfa84f00f07 100644 --- a/packages/devextreme-vue/src/drop-down-box.ts +++ b/packages/devextreme-vue/src/drop-down-box.ts @@ -29,7 +29,7 @@ import { } from "devextreme/common"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -58,9 +58,12 @@ import { } from "devextreme/ui/drop_down_box"; import { AnimationConfig, + CollisionResolution, + PositionConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { dxButtonOptions, ClickEvent, @@ -69,15 +72,12 @@ import { InitializedEvent as ButtonInitializedEvent, OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -163,7 +163,7 @@ const componentConfig = { activeStateEnabled: Boolean, buttons: Array as PropType>, contentTemplate: {}, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/drop-down-button.ts b/packages/devextreme-vue/src/drop-down-button.ts index c4c7fb7f3e99..dd082cc2423c 100644 --- a/packages/devextreme-vue/src/drop-down-button.ts +++ b/packages/devextreme-vue/src/drop-down-button.ts @@ -18,7 +18,7 @@ import { } from "devextreme/ui/drop_down_button"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -39,18 +39,18 @@ import { } from "devextreme/common"; import { AnimationConfig, - AnimationState, - AnimationType, -} from "devextreme/animation/fx"; -import { CollisionResolution, PositionConfig, + AnimationState, + AnimationType, CollisionResolutionCombination, -} from "devextreme/animation/position"; +} from "devextreme/common/core/animation"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -112,7 +112,7 @@ const componentConfig = { props: { accessKey: String, activeStateEnabled: Boolean, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, displayExpr: [Function, String] as PropType<(((itemData: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/filter-builder.ts b/packages/devextreme-vue/src/filter-builder.ts index 4d5f6be6e0a9..35d76cf8ad04 100644 --- a/packages/devextreme-vue/src/filter-builder.ts +++ b/packages/devextreme-vue/src/filter-builder.ts @@ -21,10 +21,10 @@ import { } from "devextreme/common"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -327,7 +327,7 @@ const DxLookupConfig = { }, props: { allowClearing: Boolean, - dataSource: [Array, Object] as PropType | DataSourceOptions | Store>, + dataSource: [Array, Object] as PropType | DataSourceOptions | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: [Function, String] as PropType<(((data: any) => string | number | boolean)) | string> } diff --git a/packages/devextreme-vue/src/form.ts b/packages/devextreme-vue/src/form.ts index 7e04351738da..95f468f87af5 100644 --- a/packages/devextreme-vue/src/form.ts +++ b/packages/devextreme-vue/src/form.ts @@ -59,7 +59,7 @@ import { } from "devextreme/ui/tab_panel"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -1000,7 +1000,7 @@ const DxTabPanelOptionsConfig = { activeStateEnabled: Boolean, animationEnabled: Boolean, bindingOptions: Object as PropType>, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/funnel.ts b/packages/devextreme-vue/src/funnel.ts index 455f4b198833..b02723eab9e5 100644 --- a/packages/devextreme-vue/src/funnel.ts +++ b/packages/devextreme-vue/src/funnel.ts @@ -22,7 +22,7 @@ import { } from "devextreme/viz/funnel"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -50,7 +50,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick, argumentField: String, colorField: String, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, export: Object as PropType>, diff --git a/packages/devextreme-vue/src/gallery.ts b/packages/devextreme-vue/src/gallery.ts index d5430067f7b2..31149912175e 100644 --- a/packages/devextreme-vue/src/gallery.ts +++ b/packages/devextreme-vue/src/gallery.ts @@ -18,7 +18,7 @@ import { } from "devextreme/ui/gallery"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -74,7 +74,7 @@ const componentConfig = { accessKey: String, animationDuration: Number, animationEnabled: Boolean, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, focusStateEnabled: Boolean, diff --git a/packages/devextreme-vue/src/gantt.ts b/packages/devextreme-vue/src/gantt.ts index 9be6cc9e97a9..0d9d928a6ab8 100644 --- a/packages/devextreme-vue/src/gantt.ts +++ b/packages/devextreme-vue/src/gantt.ts @@ -72,10 +72,10 @@ import { } from "devextreme/common/grids"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -452,7 +452,7 @@ const DxColumnHeaderFilterConfig = { props: { allowSearch: Boolean, allowSelectAll: Boolean, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store | Record>, groupInterval: [String, Number] as PropType, height: [Number, String], search: Object as PropType>, @@ -568,7 +568,7 @@ const DxDependenciesConfig = { "update:typeExpr": null, }, props: { - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, keyExpr: [Function, String] as PropType<((() => void)) | string>, predecessorIdExpr: [Function, String] as PropType<((() => void)) | string>, successorIdExpr: [Function, String] as PropType<((() => void)) | string>, @@ -754,7 +754,7 @@ const DxHeaderFilterConfig = { props: { allowSearch: Boolean, allowSelectAll: Boolean, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store | Record>, groupInterval: [String, Number] as PropType, height: [Number, String], search: Object as PropType>, @@ -878,7 +878,7 @@ const DxResourceAssignmentsConfig = { "update:taskIdExpr": null, }, props: { - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, keyExpr: [Function, String] as PropType<((() => void)) | string>, resourceIdExpr: [Function, String] as PropType<((() => void)) | string>, taskIdExpr: [Function, String] as PropType<((() => void)) | string> @@ -902,7 +902,7 @@ const DxResourcesConfig = { }, props: { colorExpr: [Function, String] as PropType<((() => void)) | string>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, keyExpr: [Function, String] as PropType<((() => void)) | string>, textExpr: [Function, String] as PropType<((() => void)) | string> } @@ -1022,7 +1022,7 @@ const DxTasksConfig = { }, props: { colorExpr: [Function, String] as PropType<((() => void)) | string>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, endExpr: [Function, String] as PropType<((() => void)) | string>, keyExpr: [Function, String] as PropType<((() => void)) | string>, parentIdExpr: [Function, String] as PropType<((() => void)) | string>, diff --git a/packages/devextreme-vue/src/html-editor.ts b/packages/devextreme-vue/src/html-editor.ts index ddff5eba478a..5d8a8a17a38f 100644 --- a/packages/devextreme-vue/src/html-editor.ts +++ b/packages/devextreme-vue/src/html-editor.ts @@ -61,7 +61,7 @@ import { } from "devextreme/ui/toolbar"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -518,7 +518,7 @@ const DxMentionConfig = { "update:valueExpr": null, }, props: { - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, itemTemplate: {}, marker: String, @@ -718,7 +718,7 @@ const DxVariablesConfig = { "update:escapeChar": null, }, props: { - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, escapeChar: [Array, String] as PropType | string> } }; diff --git a/packages/devextreme-vue/src/index.ts b/packages/devextreme-vue/src/index.ts index ab1ec1f3428a..198b4adbe672 100644 --- a/packages/devextreme-vue/src/index.ts +++ b/packages/devextreme-vue/src/index.ts @@ -79,3 +79,5 @@ export { DxValidationGroup } from "./validation-group"; export { DxValidationSummary } from "./validation-summary"; export { DxValidator } from "./validator"; export { DxVectorMap } from "./vector-map"; + +export * as Common from "./common/index"; diff --git a/packages/devextreme-vue/src/linear-gauge.ts b/packages/devextreme-vue/src/linear-gauge.ts index 2f0cbed6bd49..60bfe321fba6 100644 --- a/packages/devextreme-vue/src/linear-gauge.ts +++ b/packages/devextreme-vue/src/linear-gauge.ts @@ -40,7 +40,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/load-panel.ts b/packages/devextreme-vue/src/load-panel.ts index 81ab0fece3d9..9398bd096e1c 100644 --- a/packages/devextreme-vue/src/load-panel.ts +++ b/packages/devextreme-vue/src/load-panel.ts @@ -4,7 +4,7 @@ import { prepareComponentConfig } from "./core/index"; import LoadPanel, { Properties } from "devextreme/ui/load_panel"; import { event, -} from "devextreme/events/index"; +} from "devextreme/events/events.types"; import { ContentReadyEvent, DisposingEvent, @@ -23,14 +23,12 @@ import { } from "devextreme/common"; import { PositionConfig, - CollisionResolution, - CollisionResolutionCombination, -} from "devextreme/animation/position"; -import { AnimationConfig, + CollisionResolution, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/menu.ts b/packages/devextreme-vue/src/menu.ts index ebd0e464128d..a71b0dbacf2b 100644 --- a/packages/devextreme-vue/src/menu.ts +++ b/packages/devextreme-vue/src/menu.ts @@ -22,7 +22,7 @@ import { } from "devextreme/ui/menu"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -37,14 +37,12 @@ import { } from "devextreme/common"; import { AnimationConfig, - AnimationState, - AnimationType, -} from "devextreme/animation/fx"; -import { CollisionResolution, PositionConfig, + AnimationState, + AnimationType, CollisionResolutionCombination, -} from "devextreme/animation/position"; +} from "devextreme/common/core/animation"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, cssClass: String, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, disabledExpr: [Function, String] as PropType<((() => void)) | string>, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/multi-view.ts b/packages/devextreme-vue/src/multi-view.ts index 579dcf15025d..e11636d960c8 100644 --- a/packages/devextreme-vue/src/multi-view.ts +++ b/packages/devextreme-vue/src/multi-view.ts @@ -18,7 +18,7 @@ import { } from "devextreme/ui/multi_view"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -68,7 +68,7 @@ const componentConfig = { accessKey: String, activeStateEnabled: Boolean, animationEnabled: Boolean, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/number-box.ts b/packages/devextreme-vue/src/number-box.ts index bbc411e9fa62..0758b41ecfac 100644 --- a/packages/devextreme-vue/src/number-box.ts +++ b/packages/devextreme-vue/src/number-box.ts @@ -35,7 +35,7 @@ import { } from "devextreme/common"; import { Format, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { dxButtonOptions, ClickEvent, diff --git a/packages/devextreme-vue/src/pagination.ts b/packages/devextreme-vue/src/pagination.ts index 59b18008c71a..dbaf168edbc3 100644 --- a/packages/devextreme-vue/src/pagination.ts +++ b/packages/devextreme-vue/src/pagination.ts @@ -8,7 +8,7 @@ import { } from "devextreme/common"; import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; diff --git a/packages/devextreme-vue/src/pie-chart.ts b/packages/devextreme-vue/src/pie-chart.ts index 118a1afda2a4..585db5aa0143 100644 --- a/packages/devextreme-vue/src/pie-chart.ts +++ b/packages/devextreme-vue/src/pie-chart.ts @@ -50,7 +50,7 @@ import { } from "devextreme/common/charts"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -65,7 +65,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick dxPieChartAnnotationConfig)>, customizeLabel: Function as PropType<((pointInfo: any) => SeriesLabel)>, customizePoint: Function as PropType<((pointInfo: any) => SeriesPoint)>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, diameter: Number, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/polar-chart.ts b/packages/devextreme-vue/src/polar-chart.ts index 0100ea41ef08..ec3d53acebe3 100644 --- a/packages/devextreme-vue/src/polar-chart.ts +++ b/packages/devextreme-vue/src/polar-chart.ts @@ -63,7 +63,7 @@ import { } from "devextreme/common/charts"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -78,7 +78,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import * as CommonChartTypes from "devextreme/common/charts"; import { prepareConfigurationComponentConfig } from "./core/index"; @@ -164,7 +164,7 @@ const componentConfig = { customizeLabel: Function as PropType<((pointInfo: any) => SeriesLabel)>, customizePoint: Function as PropType<((pointInfo: any) => SeriesPoint)>, dataPrepareSettings: Object as PropType>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, export: Object as PropType>, diff --git a/packages/devextreme-vue/src/popover.ts b/packages/devextreme-vue/src/popover.ts index 1f07651bd22c..acf2a4dee774 100644 --- a/packages/devextreme-vue/src/popover.ts +++ b/packages/devextreme-vue/src/popover.ts @@ -4,7 +4,7 @@ import { prepareComponentConfig } from "./core/index"; import Popover, { Properties } from "devextreme/ui/popover"; import { event, -} from "devextreme/events/index"; +} from "devextreme/events/events.types"; import { ContentReadyEvent, DisposingEvent, @@ -27,18 +27,16 @@ import { } from "devextreme/common"; import { PositionConfig, + AnimationConfig, CollisionResolution, + AnimationState, + AnimationType, CollisionResolutionCombination, -} from "devextreme/animation/position"; +} from "devextreme/common/core/animation"; import { dxPopupToolbarItem, ToolbarLocation, } from "devextreme/ui/popup"; -import { - AnimationConfig, - AnimationState, - AnimationType, -} from "devextreme/animation/fx"; import { LocateInMenuMode, ShowTextMode, diff --git a/packages/devextreme-vue/src/popup.ts b/packages/devextreme-vue/src/popup.ts index d19d09498aff..edba5edad721 100644 --- a/packages/devextreme-vue/src/popup.ts +++ b/packages/devextreme-vue/src/popup.ts @@ -7,8 +7,10 @@ import DOMComponent from "devextreme/core/dom_component"; import dxPopup from "devextreme/ui/popup"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -22,18 +24,16 @@ import { } from "devextreme/common"; import { PositionConfig, + AnimationConfig, CollisionResolution, + AnimationState, + AnimationType, CollisionResolutionCombination, -} from "devextreme/animation/position"; +} from "devextreme/common/core/animation"; import { dxPopupToolbarItem, ToolbarLocation, } from "devextreme/ui/popup"; -import { - AnimationConfig, - AnimationState, - AnimationType, -} from "devextreme/animation/fx"; import { LocateInMenuMode, ShowTextMode, diff --git a/packages/devextreme-vue/src/radio-group.ts b/packages/devextreme-vue/src/radio-group.ts index e3f20973fec7..aeb17a95db3c 100644 --- a/packages/devextreme-vue/src/radio-group.ts +++ b/packages/devextreme-vue/src/radio-group.ts @@ -8,7 +8,7 @@ import { } from "devextreme/ui/collection/ui.collection_widget.base"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -71,7 +71,7 @@ const componentConfig = { props: { accessKey: String, activeStateEnabled: Boolean, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/range-selector.ts b/packages/devextreme-vue/src/range-selector.ts index 3cf6c28ce018..4954b8a9845b 100644 --- a/packages/devextreme-vue/src/range-selector.ts +++ b/packages/devextreme-vue/src/range-selector.ts @@ -5,7 +5,7 @@ import RangeSelector, { Properties } from "devextreme/viz/range_selector"; import DataSource from "devextreme/data/data_source"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -69,7 +69,7 @@ import { } from "devextreme/viz/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import * as CommonChartTypes from "devextreme/common/charts"; import { prepareConfigurationComponentConfig } from "./core/index"; @@ -120,7 +120,7 @@ const componentConfig = { behavior: Object as PropType>, chart: Object as PropType>, containerBackgroundColor: String, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, dataSourceField: String, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/range-slider.ts b/packages/devextreme-vue/src/range-slider.ts index 05b79a2bca06..0e5831933e14 100644 --- a/packages/devextreme-vue/src/range-slider.ts +++ b/packages/devextreme-vue/src/range-slider.ts @@ -20,7 +20,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>>, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, height: [Function, Number, String] as PropType<((() => number | string)) | number | string>, diff --git a/packages/devextreme-vue/src/sankey.ts b/packages/devextreme-vue/src/sankey.ts index beb90f8edb49..ca0b4b261547 100644 --- a/packages/devextreme-vue/src/sankey.ts +++ b/packages/devextreme-vue/src/sankey.ts @@ -12,7 +12,7 @@ import { } from "devextreme/common"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -44,7 +44,7 @@ import { } from "devextreme/common/charts"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, alignment: [Array, String] as PropType | VerticalAlignment>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, export: Object as PropType>, diff --git a/packages/devextreme-vue/src/scheduler.ts b/packages/devextreme-vue/src/scheduler.ts index 48e4dca6beee..3f82f7ff64d7 100644 --- a/packages/devextreme-vue/src/scheduler.ts +++ b/packages/devextreme-vue/src/scheduler.ts @@ -34,7 +34,7 @@ import { } from "devextreme/ui/scheduler"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -45,7 +45,7 @@ import { } from "devextreme/common"; import { event, -} from "devextreme/events/index"; +} from "devextreme/events/events.types"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick, customizeDateNavigatorText: Function as PropType<((info: { endDate: Date, startDate: Date, text: string }) => string)>, dataCellTemplate: {}, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, dateCellTemplate: {}, dateSerializationFormat: String, descriptionExpr: String, @@ -397,7 +397,7 @@ const DxResourceConfig = { props: { allowMultiple: Boolean, colorExpr: String, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, displayExpr: [Function, String] as PropType<(((resource: any) => string)) | string>, fieldExpr: String, label: String, diff --git a/packages/devextreme-vue/src/select-box.ts b/packages/devextreme-vue/src/select-box.ts index ef9f164df19f..fbfbdcda589e 100644 --- a/packages/devextreme-vue/src/select-box.ts +++ b/packages/devextreme-vue/src/select-box.ts @@ -33,7 +33,7 @@ import { } from "devextreme/ui/collection/ui.collection_widget.base"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -66,9 +66,12 @@ import { } from "devextreme/ui/select_box"; import { AnimationConfig, + CollisionResolution, + PositionConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { dxButtonOptions, ClickEvent, @@ -77,15 +80,12 @@ import { InitializedEvent as ButtonInitializedEvent, OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -190,7 +190,7 @@ const componentConfig = { activeStateEnabled: Boolean, buttons: Array as PropType>, customItemCreateEvent: String, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/slider.ts b/packages/devextreme-vue/src/slider.ts index 649b05e7e9f4..a58af3f34560 100644 --- a/packages/devextreme-vue/src/slider.ts +++ b/packages/devextreme-vue/src/slider.ts @@ -20,7 +20,7 @@ import { } from "devextreme/common"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, firstLastColor: String, diff --git a/packages/devextreme-vue/src/splitter.ts b/packages/devextreme-vue/src/splitter.ts index c29ee3ea9476..809a36e2b3b4 100644 --- a/packages/devextreme-vue/src/splitter.ts +++ b/packages/devextreme-vue/src/splitter.ts @@ -22,7 +22,7 @@ import { } from "devextreme/ui/splitter"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -66,7 +66,7 @@ interface DxSplitter extends AccessibleOptions { const componentConfig = { props: { allowKeyboardNavigation: Boolean, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, height: [Function, Number, String] as PropType<((() => number | string)) | number | string>, diff --git a/packages/devextreme-vue/src/tab-panel.ts b/packages/devextreme-vue/src/tab-panel.ts index a27846f63cc4..4d9d15e37988 100644 --- a/packages/devextreme-vue/src/tab-panel.ts +++ b/packages/devextreme-vue/src/tab-panel.ts @@ -22,7 +22,7 @@ import { } from "devextreme/ui/tab_panel"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -89,7 +89,7 @@ const componentConfig = { accessKey: String, activeStateEnabled: Boolean, animationEnabled: Boolean, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/tabs.ts b/packages/devextreme-vue/src/tabs.ts index c0484d3854fe..864a2640800b 100644 --- a/packages/devextreme-vue/src/tabs.ts +++ b/packages/devextreme-vue/src/tabs.ts @@ -19,7 +19,7 @@ import { } from "devextreme/ui/tabs"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -80,7 +80,7 @@ interface DxTabs extends AccessibleOptions { const componentConfig = { props: { accessKey: String, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, focusStateEnabled: Boolean, diff --git a/packages/devextreme-vue/src/tag-box.ts b/packages/devextreme-vue/src/tag-box.ts index a08333a47c27..96833a2dcedb 100644 --- a/packages/devextreme-vue/src/tag-box.ts +++ b/packages/devextreme-vue/src/tag-box.ts @@ -35,7 +35,7 @@ import { } from "devextreme/ui/collection/ui.collection_widget.base"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -67,9 +67,12 @@ import { } from "devextreme/ui/tag_box"; import { AnimationConfig, + CollisionResolution, + PositionConfig, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { dxButtonOptions, ClickEvent, @@ -78,15 +81,12 @@ import { InitializedEvent as ButtonInitializedEvent, OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; -import { - CollisionResolution, - PositionConfig, - CollisionResolutionCombination, -} from "devextreme/animation/position"; import { event, +} from "devextreme/events/events.types"; +import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; @@ -198,7 +198,7 @@ const componentConfig = { applyValueMode: String as PropType, buttons: Array as PropType>, customItemCreateEvent: String, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, deferRendering: Boolean, disabled: Boolean, displayExpr: [Function, String] as PropType<(((item: any) => string)) | string>, diff --git a/packages/devextreme-vue/src/tile-view.ts b/packages/devextreme-vue/src/tile-view.ts index 461134b50112..3b5c75a5a642 100644 --- a/packages/devextreme-vue/src/tile-view.ts +++ b/packages/devextreme-vue/src/tile-view.ts @@ -17,7 +17,7 @@ import { } from "devextreme/ui/tile_view"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -70,7 +70,7 @@ const componentConfig = { activeStateEnabled: Boolean, baseItemHeight: Number, baseItemWidth: Number, - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, direction: String as PropType, disabled: Boolean, elementAttr: Object as PropType>, diff --git a/packages/devextreme-vue/src/toast.ts b/packages/devextreme-vue/src/toast.ts index d53834b3c496..44aa5e3b41ac 100644 --- a/packages/devextreme-vue/src/toast.ts +++ b/packages/devextreme-vue/src/toast.ts @@ -4,7 +4,7 @@ import { prepareComponentConfig } from "./core/index"; import Toast, { Properties } from "devextreme/ui/toast"; import { event, -} from "devextreme/events/index"; +} from "devextreme/events/events.types"; import { ContentReadyEvent, DisposingEvent, @@ -18,14 +18,12 @@ import { } from "devextreme/ui/toast"; import { PositionConfig, - CollisionResolution, - CollisionResolutionCombination, -} from "devextreme/animation/position"; -import { AnimationConfig, + CollisionResolution, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { HorizontalAlignment, VerticalAlignment, diff --git a/packages/devextreme-vue/src/toolbar.ts b/packages/devextreme-vue/src/toolbar.ts index 2db3c3d3eb1c..b261d6d05e36 100644 --- a/packages/devextreme-vue/src/toolbar.ts +++ b/packages/devextreme-vue/src/toolbar.ts @@ -19,7 +19,7 @@ import { } from "devextreme/ui/toolbar"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -60,7 +60,7 @@ interface DxToolbar extends AccessibleOptions { const componentConfig = { props: { - dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType<(Array) | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, hint: String, diff --git a/packages/devextreme-vue/src/tooltip.ts b/packages/devextreme-vue/src/tooltip.ts index 97bf2ec8f7dd..b81ab2e1ff4e 100644 --- a/packages/devextreme-vue/src/tooltip.ts +++ b/packages/devextreme-vue/src/tooltip.ts @@ -4,7 +4,7 @@ import { prepareComponentConfig } from "./core/index"; import Tooltip, { Properties } from "devextreme/ui/tooltip"; import { event, -} from "devextreme/events/index"; +} from "devextreme/events/events.types"; import { ContentReadyEvent, DisposingEvent, @@ -24,14 +24,12 @@ import { } from "devextreme/common"; import { PositionConfig, - CollisionResolution, - CollisionResolutionCombination, -} from "devextreme/animation/position"; -import { AnimationConfig, + CollisionResolution, AnimationState, AnimationType, -} from "devextreme/animation/fx"; + CollisionResolutionCombination, +} from "devextreme/common/core/animation"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, columnWidth: [String, Number] as PropType, customizeColumns: Function as PropType<((columns: Array) => void)>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, dataStructure: String as PropType, dateSerializationFormat: String, disabled: Boolean, @@ -1078,7 +1080,7 @@ const DxColumnHeaderFilterConfig = { props: { allowSearch: Boolean, allowSelectAll: Boolean, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store | Record>, groupInterval: [String, Number] as PropType, height: [Number, String], search: Object as PropType>, @@ -1135,7 +1137,7 @@ const DxColumnLookupConfig = { props: { allowClearing: Boolean, calculateCellValue: Function as PropType<((rowData: any) => any)>, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: String } @@ -1430,7 +1432,7 @@ const DxFieldLookupConfig = { }, props: { allowClearing: Boolean, - dataSource: [Array, Object] as PropType | DataSourceOptions | Store>, + dataSource: [Array, Object] as PropType | DataSourceOptions | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: [Function, String] as PropType<(((data: any) => string | number | boolean)) | string> } @@ -2012,7 +2014,7 @@ const DxHeaderFilterConfig = { props: { allowSearch: Boolean, allowSelectAll: Boolean, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { component: Record, dataSource: DataSourceOptions | null }) => void)) | null | Store | Record>, groupInterval: [String, Number] as PropType, height: [Number, String], search: Object as PropType>, @@ -2237,7 +2239,7 @@ const DxLookupConfig = { props: { allowClearing: Boolean, calculateCellValue: Function as PropType<((rowData: any) => any)>, - dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store>, + dataSource: [Array, Object, Function] as PropType | DataSourceOptions | (((options: { data: Record, key: any }) => Array | Store | DataSourceOptions)) | null | Store | Record>, displayExpr: [Function, String] as PropType<(((data: any) => string)) | string>, valueExpr: [String, Function] as PropType string | number | boolean))> } diff --git a/packages/devextreme-vue/src/tree-map.ts b/packages/devextreme-vue/src/tree-map.ts index a6f8a22c5d27..3aa000d89090 100644 --- a/packages/devextreme-vue/src/tree-map.ts +++ b/packages/devextreme-vue/src/tree-map.ts @@ -5,7 +5,7 @@ import TreeMap, { Properties } from "devextreme/viz/tree_map"; import DataSource from "devextreme/data/data_source"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -47,7 +47,7 @@ import { } from "devextreme/common/charts"; import { Format as LocalizationFormat, -} from "devextreme/localization"; +} from "devextreme/common/core/localization"; import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, disabled: Boolean, elementAttr: Object as PropType>, export: Object as PropType>, diff --git a/packages/devextreme-vue/src/tree-view.ts b/packages/devextreme-vue/src/tree-view.ts index 815e00c8879e..4e393e7c1264 100644 --- a/packages/devextreme-vue/src/tree-view.ts +++ b/packages/devextreme-vue/src/tree-view.ts @@ -25,7 +25,7 @@ import { } from "devextreme/ui/tree_view"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; @@ -150,7 +150,7 @@ const componentConfig = { animationEnabled: Boolean, collapseIcon: String as PropType, createChildren: Function as PropType<((parentNode: dxTreeViewNode) => any | Array>)>, - dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string>, + dataSource: [Array, Object, String] as PropType | DataSource | DataSourceOptions | null | Store | string | Record>, dataStructure: String as PropType, disabled: Boolean, disabledExpr: [Function, String] as PropType<((() => void)) | string>, diff --git a/packages/devextreme-vue/src/validator.ts b/packages/devextreme-vue/src/validator.ts index c32abb3d1152..5b5dc4c0686b 100644 --- a/packages/devextreme-vue/src/validator.ts +++ b/packages/devextreme-vue/src/validator.ts @@ -5,7 +5,7 @@ import Validator, { Properties } from "devextreme/ui/validator"; import DOMComponent from "devextreme/core/dom_component"; import { EventInfo, -} from "devextreme/events/index"; +} from "devextreme/common/core/events"; import { Component, } from "devextreme/core/component"; diff --git a/packages/devextreme-vue/src/vector-map.ts b/packages/devextreme-vue/src/vector-map.ts index 2a4df6389d2a..e11a7f08666a 100644 --- a/packages/devextreme-vue/src/vector-map.ts +++ b/packages/devextreme-vue/src/vector-map.ts @@ -49,7 +49,7 @@ import { } from "devextreme/common"; import { DataSourceOptions, -} from "devextreme/data/data_source"; +} from "devextreme/common/data"; import { Store, } from "devextreme/data/store"; diff --git a/packages/devextreme/.eslintignore b/packages/devextreme/.eslintignore index 70ca1568cdd2..1a2960b65e26 100644 --- a/packages/devextreme/.eslintignore +++ b/packages/devextreme/.eslintignore @@ -11,5 +11,5 @@ themebuilder-scss/src/data/metadata/* js/bundles/dx.custom.js testing/jest/utils/transformers/* ts/ -js/localization/cldr-data/* -js/localization/default_messages.js +js/common/core/localization/cldr-data/* +js/common/core/localization/default_messages.js diff --git a/packages/devextreme/.gitignore b/packages/devextreme/.gitignore index c5b940a2af46..777c69052a83 100644 --- a/packages/devextreme/.gitignore +++ b/packages/devextreme/.gitignore @@ -5,8 +5,8 @@ node_modules /testing/LastSuiteTime.txt /dotnet_packages /js/bundles/dx.custom.js -/js/localization/default_messages.js -/js/localization/cldr-data +/js/common/core/localization/default_messages.js +/js/common/core/localization/cldr-data /js/renovation/**/*.j.tsx /js/renovation/code_coverage /scss/bundles/*.scss diff --git a/packages/devextreme/build/gulp/localization-template.jst b/packages/devextreme/build/gulp/localization-template.jst index 43dffba193b4..a4d509eaba9d 100644 --- a/packages/devextreme/build/gulp/localization-template.jst +++ b/packages/devextreme/build/gulp/localization-template.jst @@ -1,10 +1,10 @@ (function(root, factory) { if(typeof define === 'function' && define.amd) { define(function(require) { - factory(require("devextreme/localization")); + factory(require("devextreme/common/core/localization")); }); } else if(typeof module === "object" && module.exports) { - factory(require("devextreme/localization")); + factory(require("devextreme/common/core/localization")); } else { factory(DevExpress.localization); } diff --git a/packages/devextreme/build/gulp/localization.js b/packages/devextreme/build/gulp/localization.js index e106422732f0..b55f61901c81 100644 --- a/packages/devextreme/build/gulp/localization.js +++ b/packages/devextreme/build/gulp/localization.js @@ -84,7 +84,7 @@ const accountingFormats = function() { }; const RESULT_PATH = path.join(context.RESULT_JS_PATH, 'localization'); -const DICTIONARY_SOURCE_FOLDER = 'js/localization/messages'; +const DICTIONARY_SOURCE_FOLDER = 'js/common/core/localization/messages'; const getLocales = function(directory) { return fs.readdirSync(directory).map(file => { @@ -110,7 +110,7 @@ const getMessages = function(directory, locale) { }; gulp.task('clean-cldr-data', function() { - return del('js/localization/cldr-data/**', { force: true }); + return del('js/common/core/localization/cldr-data/**', { force: true }); }); gulp.task('generate-community-locales', () => { @@ -119,8 +119,8 @@ gulp.task('generate-community-locales', () => { return gulp .src([ - 'js/localization/messages/*.json', - '!js/localization/messages/en.json' + 'js/common/core/localization/messages/*.json', + '!js/common/core/localization/messages/en.json' ]) .pipe(through.obj(function(file, encoding, callback) { const parsedFile = JSON.parse(file.contents.toString(encoding)); @@ -169,38 +169,38 @@ gulp.task('localization-messages', gulp.parallel(getLocales(DICTIONARY_SOURCE_FO gulp.task('localization-generated-sources', gulp.parallel([ { - data: require('../../js/localization/messages/en.json'), + data: require('../../js/common/core/localization/messages/en.json'), filename: 'default_messages.js', exportName: 'defaultMessages', - destination: 'js/localization' + destination: 'js/common/core/localization' }, { data: parentLocales, filename: 'parent_locales.js', - destination: 'js/localization/cldr-data' + destination: 'js/common/core/localization/cldr-data' }, { data: firstDayOfWeekData(), filename: 'first_day_of_week_data.js', - destination: 'js/localization/cldr-data' + destination: 'js/common/core/localization/cldr-data' }, { data: accountingFormats(), filename: 'accounting_formats.js', - destination: 'js/localization/cldr-data' + destination: 'js/common/core/localization/cldr-data' }, { data: globalizeEnCldr, exportName: 'enCldr', filename: 'en.js', - destination: 'js/localization/cldr-data' + destination: 'js/common/core/localization/cldr-data' }, { data: globalizeSupplementalCldr, exportName: 'supplementalCldr', filename: 'supplemental.js', - destination: 'js/localization/cldr-data' + destination: 'js/common/core/localization/cldr-data' } ].map((source) => Object.assign( function() { diff --git a/packages/devextreme/build/gulp/modules_metadata.json b/packages/devextreme/build/gulp/modules_metadata.json index b29735d5bebe..a06c27b264f0 100644 --- a/packages/devextreme/build/gulp/modules_metadata.json +++ b/packages/devextreme/build/gulp/modules_metadata.json @@ -1,39 +1,33 @@ [ { - "name": "animation/frame", + "name": "common/core/animation", "exports": { "cancelAnimationFrame": { "path": "utils.cancelAnimationFrame" }, - "requestAnimationFrame": { "path": "utils.requestAnimationFrame" } + "requestAnimationFrame": { "path": "utils.requestAnimationFrame" }, + "fx": { "path": "fx" }, + "animationPresets": { "path": "animationPresets" }, + "TransitionExecutor": { "path": "TransitionExecutor" } } }, { - "name": "animation/fx", + "name": "core/component_registrator", "exports": { - "default": { "path": "fx" } + "default": { "path": "registerComponent" } } }, { - "name": "animation/presets", + "name": "common", "exports": { - "default": { "path": "animationPresets" } + "config": { "path": "config" }, + "Guid": { "path": "data.Guid" }, + "setTemplateEngine": { "path": "setTemplateEngine" } } }, { - "name": "animation/transition_executor", + "name": "common/core/environment", "exports": { - "default": { "path": "TransitionExecutor" } - } - }, - { - "name": "core/component_registrator", - "exports": { - "default": { "path": "registerComponent" } - } - }, - { - "name": "core/config", - "exports": { - "default": { "path": "config" } + "hideTopOverlay": { "path": "hideTopOverlay" }, + "initMobileViewport": { "path": "utils.initMobileViewport" } } }, { @@ -56,130 +50,63 @@ } }, { - "name": "core/guid", - "exports": { - "default": { "path": "data.Guid" } - } - }, - { - "name": "core/set_template_engine", - "exports": { - "default": { "path": "setTemplateEngine" } - } - }, - { - "name": "data/apply_changes", + "name": "common/data", "exports": { - "default": { "path": "data.applyChanges" } + "LoadOptions": { "path": "data.LoadOptions", "exportAs": "type" }, + "errorHandler": { "path": "data.errorHandler" }, + "EdmLiteral": { "path": "data.EdmLiteral" }, + "keyConverters": { "path": "data.utils.odata.keyConverters" }, + "base64_encode": { "path": "data.base64_encode" }, + "applyChanges": { "path": "data.applyChanges" }, + "ArrayStore": { "path": "data.ArrayStore" }, + "CustomStore": { "path": "data.CustomStore" }, + "DataSource": { "path": "data.DataSource" }, + "EndpointSelector": { "path": "EndpointSelector" }, + "LocalStore": { "path": "data.LocalStore" }, + "ODataContext": { "path": "data.ODataContext" }, + "ODataStore": { "path": "data.ODataStore" }, + "query": { "path": "data.query" } } }, { - "name": "data/array_store", - "exports": { - "default": { "path": "data.ArrayStore" } - } + "name": "common/core/events/click" }, { - "name": "data/custom_store", - "exports": { - "default": { "path": "data.CustomStore" } - } + "name": "common/core/events/contextmenu" }, { - "name": "data/data_source", - "exports": { - "default": { "path": "data.DataSource" } - } + "name": "common/core/events/dblclick" }, { - "name": "data/endpoint_selector", - "exports": { - "default": { "path": "EndpointSelector" } - } + "name": "common/core/events/drag" }, { - "name": "data/errors", - "exports": { - "errorHandler": { "path": "data.errorHandler" } - } + "name": "common/core/events/hold" }, { - "name": "data/index", - "exports": { - "LoadOptions": { "path": "data.LoadOptions", "exportAs": "type" } - } + "name": "common/core/events/hover" }, { - "name": "data/local_store", - "exports": { - "default": { "path": "data.LocalStore" } - } + "name": "common/core/events/pointer" }, { - "name": "data/odata/context", - "exports": { - "default": { "path": "data.ODataContext" } - } + "name": "common/core/events/swipe" }, { - "name": "data/odata/store", - "exports": { - "default": { "path": "data.ODataStore" } - } + "name": "common/core/events/transform" }, { - "name": "data/odata/utils", + "name": "common/core/events", "exports": { - "EdmLiteral": { "path": "data.EdmLiteral" }, - "keyConverters": { "path": "data.utils.odata.keyConverters" } - } - }, - { - "name": "data/query", - "exports": { - "default": { "path": "data.query" } - } - }, - { - "name": "data/utils", - "exports": { - "base64_encode": { "path": "data.base64_encode" } + "on": { "path": "events.on" }, + "one": { "path": "events.one" }, + "off": { "path": "events.off" }, + "trigger": { "path": "events.trigger" } } }, - { - "name": "events/click" - }, - { - "name": "events/contextmenu" - }, - { - "name": "events/dblclick" - }, - { - "name": "events/drag" - }, - { - "name": "events/hold" - }, - { - "name": "events/hover" - }, - { - "name": "events/pointer" - }, - { - "name": "events/swipe" - }, - { - "name": "events/transform" - }, { "name": "events", "exports": { - "on": { "path": "events.on" }, - "one": { "path": "events.one" }, - "off": { "path": "events.off" }, - "trigger": { "path": "events.trigger" }, "triggerHandler": { "path": "events.triggerHandler" } } }, @@ -217,7 +144,7 @@ "name": "integration/jquery" }, { - "name": "localization", + "name": "common/core/localization", "exports": { "loadMessages": { "path": "localization.loadMessages" }, "formatMessage": { "path": "localization.formatMessage" }, @@ -228,18 +155,6 @@ "locale": { "path": "localization.locale" } } }, - { - "name": "mobile/hide_top_overlay", - "exports": { - "default": { "path": "hideTopOverlay" } - } - }, - { - "name": "mobile/init_mobile_viewport", - "exports": { - "default": { "path": "utils.initMobileViewport" } - } - }, { "name": "ui/speed_dial_action", "exports": { diff --git a/packages/devextreme/js/__internal/core/m_element_data.ts b/packages/devextreme/js/__internal/core/m_element_data.ts index 8af4d1935a13..11b9557bf56a 100644 --- a/packages/devextreme/js/__internal/core/m_element_data.ts +++ b/packages/devextreme/js/__internal/core/m_element_data.ts @@ -1,7 +1,7 @@ /* eslint-disable object-shorthand */ +import eventsEngine from '@js/common/core/events/core/events_engine'; import domAdapter from '@js/core/dom_adapter'; import MemorizedCallbacks from '@js/core/memorized_callbacks'; -import eventsEngine from '@js/events/core/events_engine'; const dataMap = new WeakMap(); let strategy; diff --git a/packages/devextreme/js/__internal/core/r1/component_wrapper.ts b/packages/devextreme/js/__internal/core/r1/component_wrapper.ts index a11bbebfb715..95f558df6ac3 100644 --- a/packages/devextreme/js/__internal/core/r1/component_wrapper.ts +++ b/packages/devextreme/js/__internal/core/r1/component_wrapper.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/ban-types */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable class-methods-use-this */ -import '@js/events/click'; -import '@js/events/core/emitter.feedback'; -import '@js/events/hover'; +import '@js/common/core/events/click'; +import '@js/common/core/events/core/emitter.feedback'; +import '@js/common/core/events/hover'; import domAdapter from '@js/core/dom_adapter'; import DOMComponent from '@js/core/dom_component'; @@ -21,8 +21,8 @@ import { createRef, } from 'inferno'; +import KeyboardProcessor from '../../../common/core/events/core/keyboard_processor'; import renderer from '../../../core/inferno_renderer'; -import KeyboardProcessor from '../../../events/core/keyboard_processor'; import type { TemplateModel } from './template_wrapper'; import { buildTemplateArgs, TemplateWrapper } from './template_wrapper'; import type { Option, TemplateComponent } from './types'; diff --git a/packages/devextreme/js/__internal/core/r1/utils/resolve_rtl.ts b/packages/devextreme/js/__internal/core/r1/utils/resolve_rtl.ts index 246e558ae571..7c0700be9562 100644 --- a/packages/devextreme/js/__internal/core/r1/utils/resolve_rtl.ts +++ b/packages/devextreme/js/__internal/core/r1/utils/resolve_rtl.ts @@ -1,4 +1,4 @@ -import globalConfig from '../../../../core/config'; +import { config as globalConfig } from '../../../../common'; import { isDefined } from '../../../../core/utils/type'; import type { ConfigContextValue } from '../config_context'; diff --git a/packages/devextreme/js/__internal/core/r1/utils/subscribe_to_event.ts b/packages/devextreme/js/__internal/core/r1/utils/subscribe_to_event.ts index 677c90d89209..7dfc1d9c63b2 100644 --- a/packages/devextreme/js/__internal/core/r1/utils/subscribe_to_event.ts +++ b/packages/devextreme/js/__internal/core/r1/utils/subscribe_to_event.ts @@ -1,8 +1,8 @@ -import * as clickEvent from '../../../../events/click'; -import eventsEngine from '../../../../events/core/events_engine'; -import scrollEvents from '../../../../events/gesture/emitter.gesture.scroll'; -import pointerEvents from '../../../../events/pointer'; -import { addNamespace } from '../../../../events/utils/index'; +import * as clickEvent from '../../../../common/core/events/click'; +import eventsEngine from '../../../../common/core/events/core/events_engine'; +import scrollEvents from '../../../../common/core/events/gesture/emitter.gesture.scroll'; +import pointerEvents from '../../../../common/core/events/pointer'; +import { addNamespace } from '../../../../common/core/events/utils/index'; import type { EffectReturn } from './effect_return'; export function subscribeToEvent(eventName: string) { diff --git a/packages/devextreme/js/__internal/core/r1/widget.tsx b/packages/devextreme/js/__internal/core/r1/widget.tsx index 52b1cf9d11d0..526403080bd6 100644 --- a/packages/devextreme/js/__internal/core/r1/widget.tsx +++ b/packages/devextreme/js/__internal/core/r1/widget.tsx @@ -2,22 +2,22 @@ /* eslint-disable spellcheck/spell-checker */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable @typescript-eslint/no-explicit-any */ -import '@js/events/click'; -import '@js/events/hover'; +import '@js/common/core/events/click'; +import '@js/common/core/events/hover'; import { createReRenderEffect, InfernoEffect, InfernoWrapperComponent, } from '@devextreme/runtime/inferno'; import type { RefObject } from '@devextreme-generator/declarations'; +import { + dxClick, focus, keyboard, resize, visibility, +} from '@js/common/core/events/short'; import domAdapter from '@js/core/dom_adapter'; import errors from '@js/core/errors'; import { extend } from '@js/core/utils/extend'; import resizeCallbacks from '@js/core/utils/resize_callbacks'; import { normalizeStyleProp } from '@js/core/utils/style'; import { isFunction } from '@js/core/utils/type'; -import { - dxClick, focus, keyboard, resize, visibility, -} from '@js/events/short'; import type { ConfigContextValue } from '@ts/core/r1/config_context'; import { ConfigContext } from '@ts/core/r1/config_context'; import { ConfigProvider } from '@ts/core/r1/config_provider'; diff --git a/packages/devextreme/js/__internal/core/templates/m_bindable_template.ts b/packages/devextreme/js/__internal/core/templates/m_bindable_template.ts index b3239ee92178..5c47e96de8bd 100644 --- a/packages/devextreme/js/__internal/core/templates/m_bindable_template.ts +++ b/packages/devextreme/js/__internal/core/templates/m_bindable_template.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; import $ from '@js/core/renderer'; import { TemplateBase } from '@js/core/templates/template_base'; import { isPrimitive } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; const watchChanges = (function () { const globalWatch = (data, watchMethod, callback) => watchMethod(() => data, callback); diff --git a/packages/devextreme/js/__internal/core/templates/m_template_base.ts b/packages/devextreme/js/__internal/core/templates/m_template_base.ts index e3f84627b56e..31170824a5c2 100644 --- a/packages/devextreme/js/__internal/core/templates/m_template_base.ts +++ b/packages/devextreme/js/__internal/core/templates/m_template_base.ts @@ -1,9 +1,9 @@ +import { triggerShownEvent } from '@js/common/core/events/visibility_change'; import domAdapter from '@js/core/dom_adapter'; import errors from '@js/core/errors'; import $ from '@js/core/renderer'; import Callbacks from '@js/core/utils/callbacks'; import { contains } from '@js/core/utils/dom'; -import { triggerShownEvent } from '@js/events/visibility_change'; export const renderedCallbacks = Callbacks({ syncStrategy: true }); diff --git a/packages/devextreme/js/__internal/core/utils/m_date_serialization.ts b/packages/devextreme/js/__internal/core/utils/m_date_serialization.ts index 09ffd2877370..5b38c0af6aa1 100644 --- a/packages/devextreme/js/__internal/core/utils/m_date_serialization.ts +++ b/packages/devextreme/js/__internal/core/utils/m_date_serialization.ts @@ -1,7 +1,7 @@ +import defaultDateNames from '@js/common/core/localization/default_date_names'; +import { getFormatter as getLDMLFormatter } from '@js/common/core/localization/ldml/date.formatter'; import config from '@js/core/config'; import { isDate, isNumeric as isNumber, isString } from '@js/core/utils/type'; -import defaultDateNames from '@js/localization/default_date_names'; -import { getFormatter as getLDMLFormatter } from '@js/localization/ldml/date.formatter'; const NUMBER_SERIALIZATION_FORMAT = 'number'; const DATE_SERIALIZATION_FORMAT = 'yyyy/MM/dd'; diff --git a/packages/devextreme/js/__internal/core/utils/m_public_component.ts b/packages/devextreme/js/__internal/core/utils/m_public_component.ts index be3be2f12cd1..3501b55626e0 100644 --- a/packages/devextreme/js/__internal/core/utils/m_public_component.ts +++ b/packages/devextreme/js/__internal/core/utils/m_public_component.ts @@ -1,7 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; import { data as elementData } from '@js/core/element_data'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; const COMPONENT_NAMES_DATA_KEY = 'dxComponents'; const ANONYMOUS_COMPONENT_DATA_KEY = 'dxPrivateComponent'; diff --git a/packages/devextreme/js/__internal/core/utils/m_support.ts b/packages/devextreme/js/__internal/core/utils/m_support.ts index c1c0927d4b92..720ea36d07e6 100644 --- a/packages/devextreme/js/__internal/core/utils/m_support.ts +++ b/packages/devextreme/js/__internal/core/utils/m_support.ts @@ -1,4 +1,4 @@ -import devices from '@js/core/devices'; +import devices from '@js/common/core/environment/devices'; import domAdapter from '@js/core/dom_adapter'; import callOnce from '@js/core/utils/call_once'; import { styleProp, stylePropPrefix } from '@js/core/utils/style'; @@ -19,7 +19,6 @@ const supportProp = function (prop) { }; const isNativeScrollingSupported = function () { - // @ts-expect-error mac doesnt exist in public type const { platform, mac: isMac } = devices.real(); const isNativeScrollDevice = platform === 'ios' || platform === 'android' || isMac; diff --git a/packages/devextreme/js/__internal/core/widget/dom_component.ts b/packages/devextreme/js/__internal/core/widget/dom_component.ts index 2f178dd41f63..16b821f280cf 100644 --- a/packages/devextreme/js/__internal/core/widget/dom_component.ts +++ b/packages/devextreme/js/__internal/core/widget/dom_component.ts @@ -1,3 +1,4 @@ +import { resize as resizeEvent, visibility as visibilityEvents } from '@js/common/core/events/short'; import config from '@js/core/config'; import type { DOMComponentOptions } from '@js/core/dom_component'; import { getPublicElement } from '@js/core/element'; @@ -14,7 +15,6 @@ import windowResizeCallbacks from '@js/core/utils/resize_callbacks'; import { addShadowDomStyles } from '@js/core/utils/shadow_dom'; import { isDefined, isFunction, isString } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { resize as resizeEvent, visibility as visibilityEvents } from '@js/events/short'; import license, { peekValidationPerformed } from '@ts/core/license/license_validation'; import TemplateManagerModule from '@ts/core/m_template_manager'; diff --git a/packages/devextreme/js/__internal/core/widget/widget.ts b/packages/devextreme/js/__internal/core/widget/widget.ts index 7bc01ab41ff0..10fed27edd87 100644 --- a/packages/devextreme/js/__internal/core/widget/widget.ts +++ b/packages/devextreme/js/__internal/core/widget/widget.ts @@ -1,7 +1,10 @@ -import '@js/events/click'; -import '@js/events/core/emitter.feedback'; -import '@js/events/hover'; +import '@js/common/core/events/click'; +import '@js/common/core/events/core/emitter.feedback'; +import '@js/common/core/events/hover'; +import { + active, focus, hover, keyboard, +} from '@js/common/core/events/short'; import Action from '@js/core/action'; import devices from '@js/core/devices'; import type { DefaultOptionsRule } from '@js/core/options/utils'; @@ -13,9 +16,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isPlainObject } from '@js/core/utils/type'; import { compare as compareVersions } from '@js/core/utils/version'; -import { - active, focus, hover, keyboard, -} from '@js/events/short'; import { focusable as focusableSelector } from '@js/ui/widget/selectors'; import type { WidgetOptions } from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/data/data_source/m_data_source.ts b/packages/devextreme/js/__internal/data/data_source/m_data_source.ts index be4f4ea3fd45..292ccff274d8 100644 --- a/packages/devextreme/js/__internal/data/data_source/m_data_source.ts +++ b/packages/devextreme/js/__internal/data/data_source/m_data_source.ts @@ -1,3 +1,16 @@ +import { applyBatch } from '@js/common/data/array_utils'; +import { CustomStore } from '@js/common/data/custom_store'; +import OperationManager from '@js/common/data/data_source/operation_manager'; +import { + CANCELED_TOKEN, + isPending, + mapDataRespectingGrouping, + normalizeDataSourceOptions, + normalizeLoadResult, + normalizeStoreLoadOptionAccessorArguments, +} from '@js/common/data/data_source/utils'; +import { errors } from '@js/common/data/errors'; +import { throttleChanges } from '@js/common/data/utils'; import Class from '@js/core/class'; import { EventsStrategy } from '@js/core/events_strategy'; import { Deferred, when } from '@js/core/utils/deferred'; @@ -7,21 +20,6 @@ import { create } from '@js/core/utils/queue'; import { isBoolean, isDefined, isEmptyObject, isNumeric, isObject, isString, } from '@js/core/utils/type'; -import { applyBatch } from '@js/data/array_utils'; -import CustomStore from '@js/data/custom_store'; -import OperationManager from '@js/data/data_source/operation_manager'; -import { - CANCELED_TOKEN, - isPending, - mapDataRespectingGrouping, - normalizeDataSourceOptions, - normalizeLoadResult, - normalizeStoreLoadOptionAccessorArguments, -} from '@js/data/data_source/utils'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -// @ts-expect-error -import { throttleChanges } from '@js/data/utils'; import commonUtils from '@ts/core/utils/m_common'; export const DataSource = Class.inherit({ @@ -354,7 +352,7 @@ export const DataSource = Class.inherit({ const handleDone = (data) => { const isEmptyArray = Array.isArray(data) && !data.length; if (!isDefined(data) || isEmptyArray) { - d.reject(new errors.Error('E4009')); + d.reject(errors.Error('E4009')); } else { if (!Array.isArray(data)) { data = [data]; @@ -375,7 +373,6 @@ export const DataSource = Class.inherit({ delete options.refresh; delete options.pageIndex; delete options.searchString; - // @ts-expect-error const shouldForceByKey = () => (store instanceof CustomStore) && !store._byKeyViaLoad(); (() => { diff --git a/packages/devextreme/js/__internal/data/data_source/m_operation_manager.ts b/packages/devextreme/js/__internal/data/data_source/m_operation_manager.ts index 2723d076cd8a..cfde35fffb6f 100644 --- a/packages/devextreme/js/__internal/data/data_source/m_operation_manager.ts +++ b/packages/devextreme/js/__internal/data/data_source/m_operation_manager.ts @@ -1,4 +1,4 @@ -import { CANCELED_TOKEN } from '@js/data/data_source/utils'; +import { CANCELED_TOKEN } from '@js/common/data/data_source/utils'; export default class OperationManager { constructor() { diff --git a/packages/devextreme/js/__internal/data/data_source/m_utils.ts b/packages/devextreme/js/__internal/data/data_source/m_utils.ts index dabe7a87573a..40192c669e20 100644 --- a/packages/devextreme/js/__internal/data/data_source/m_utils.ts +++ b/packages/devextreme/js/__internal/data/data_source/m_utils.ts @@ -1,12 +1,11 @@ +import ArrayStore from '@js/common/data/array_store'; +import { CustomStore } from '@js/common/data/custom_store'; +import { normalizeSortingInfo } from '@js/common/data/utils'; import ajaxUtils from '@js/core/utils/ajax'; import { extend } from '@js/core/utils/extend'; import { each, map } from '@js/core/utils/iterator'; import { isPlainObject } from '@js/core/utils/type'; import Store from '@js/data/abstract_store'; -import ArrayStore from '@js/data/array_store'; -import CustomStore from '@js/data/custom_store'; -// @ts-expect-error -import { normalizeSortingInfo } from '@js/data/utils'; export const CANCELED_TOKEN = 'canceled'; @@ -66,7 +65,6 @@ const createCustomStoreFromLoadFunc = (options) => { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete options[this]; }); - // @ts-expect-error return new CustomStore(storeConfig); }; @@ -112,7 +110,6 @@ export const normalizeDataSourceOptions = (options, normalizationOptions) => { if ('load' in options) { store = createCustomStoreFromLoadFunc(options); } else if (Array.isArray(store)) { - // @ts-expect-error store = new ArrayStore(store); } else if (isPlainObject(store)) { store = createStoreFromConfig(extend({}, store)); diff --git a/packages/devextreme/js/__internal/data/m_abstract_store.ts b/packages/devextreme/js/__internal/data/m_abstract_store.ts index 9e2a8b6fb1a6..ac3fa00acaed 100644 --- a/packages/devextreme/js/__internal/data/m_abstract_store.ts +++ b/packages/devextreme/js/__internal/data/m_abstract_store.ts @@ -1,3 +1,6 @@ +import { errors, handleError } from '@js/common/data/errors'; +import storeHelper from '@js/common/data/store_helper'; +import { processRequestResultLock } from '@js/common/data/utils'; import Class from '@js/core/class'; import { EventsStrategy } from '@js/core/events_strategy'; import { noop } from '@js/core/utils/common'; @@ -5,11 +8,6 @@ import { compileGetter } from '@js/core/utils/data'; import { Deferred, when } from '@js/core/utils/deferred'; import { each } from '@js/core/utils/iterator'; import { isEmptyObject } from '@js/core/utils/type'; -// @ts-expect-error -import { errors, handleError } from '@js/data/errors'; -import storeHelper from '@js/data/store_helper'; -// @ts-expect-error -import { processRequestResultLock } from '@js/data/utils'; const { abstract } = Class; const { queryByOptions } = storeHelper; diff --git a/packages/devextreme/js/__internal/data/m_array_query.ts b/packages/devextreme/js/__internal/data/m_array_query.ts index 6c02d4285a66..6bc800f398dc 100644 --- a/packages/devextreme/js/__internal/data/m_array_query.ts +++ b/packages/devextreme/js/__internal/data/m_array_query.ts @@ -1,24 +1,17 @@ -import Class from '@js/core/class'; -import { compileGetter, toComparable } from '@js/core/utils/data'; -import { Deferred } from '@js/core/utils/deferred'; -import { each, map } from '@js/core/utils/iterator'; -import { isDefined, isFunction, isString } from '@js/core/utils/type'; -// @ts-expect-error -import { errors, handleError as handleDataError } from '@js/data/errors'; +import { errors, handleError as handleDataError } from '@js/common/data/errors'; import { - // @ts-expect-error aggregators, - // @ts-expect-error isConjunctiveOperator as isConjunctiveOperatorChecker, - // @ts-expect-error isGroupCriterion, - // @ts-expect-error isUnaryOperation, - // @ts-expect-error isUniformEqualsByOr, - // @ts-expect-error normalizeBinaryCriterion, -} from '@js/data/utils'; +} from '@js/common/data/utils'; +import Class from '@js/core/class'; +import { compileGetter, toComparable } from '@js/core/utils/data'; +import { Deferred } from '@js/core/utils/deferred'; +import { each, map } from '@js/core/utils/iterator'; +import { isDefined, isFunction, isString } from '@js/core/utils/type'; const Iterator = Class.inherit({ @@ -281,7 +274,7 @@ const compileCriteria = (function () { each(crit, function () { if (Array.isArray(this) || isFunction(this)) { if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) { - throw new errors.Error('E4019'); + throw errors.Error('E4019'); } // @ts-expect-error ops.push(compileCriteria(this, langParams)); diff --git a/packages/devextreme/js/__internal/data/m_array_store.ts b/packages/devextreme/js/__internal/data/m_array_store.ts index 2fc03b31d615..3ce70870936f 100644 --- a/packages/devextreme/js/__internal/data/m_array_store.ts +++ b/packages/devextreme/js/__internal/data/m_array_store.ts @@ -1,12 +1,10 @@ -import Store from '@js/data/abstract_store'; import { applyBatch, indexByKey, insert, remove, update, -} from '@js/data/array_utils'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -import Query from '@js/data/query'; -// @ts-expect-error -import { rejectedPromise, trivialPromise } from '@js/data/utils'; +} from '@js/common/data/array_utils'; +import { errors } from '@js/common/data/errors'; +import Query from '@js/common/data/query'; +import { rejectedPromise, trivialPromise } from '@js/common/data/utils'; +import Store from '@js/data/abstract_store'; // @ts-expect-error const ArrayStore = Store.inherit({ @@ -28,6 +26,7 @@ const ArrayStore = Store.inherit({ }, createQuery() { + // @ts-expect-error return Query(this._array, { errorHandler: this._errorHandler, }); @@ -37,9 +36,11 @@ const ArrayStore = Store.inherit({ const index = indexByKey(this, this._array, key); if (index === -1) { + // @ts-expect-error return rejectedPromise(errors.Error('E4009')); } + // @ts-expect-error return trivialPromise(this._array[index]); }, diff --git a/packages/devextreme/js/__internal/data/m_array_utils.ts b/packages/devextreme/js/__internal/data/m_array_utils.ts index 818eb0ee1ff8..4922dc77ef28 100644 --- a/packages/devextreme/js/__internal/data/m_array_utils.ts +++ b/packages/devextreme/js/__internal/data/m_array_utils.ts @@ -1,3 +1,5 @@ +import { errors } from '@js/common/data/errors'; +import { keysEqual, rejectedPromise, trivialPromise } from '@js/common/data/utils'; import config from '@js/core/config'; import Guid from '@js/core/guid'; import { compileGetter } from '@js/core/utils/data'; @@ -6,10 +8,6 @@ import { deepExtendArraySafe } from '@js/core/utils/object'; import { isDefined, isEmptyObject, isObject, isPlainObject, } from '@js/core/utils/type'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -// @ts-expect-error -import { keysEqual, rejectedPromise, trivialPromise } from '@js/data/utils'; function hasKey(target, keyOrKeys) { let key; @@ -143,6 +141,7 @@ function applyBatch({ } function getErrorResult(isBatch, logError, errorCode) { + // @ts-expect-error return !isBatch ? rejectedPromise(errors.Error(errorCode)) : logError && errors.log(errorCode); } @@ -188,6 +187,7 @@ function update(keyInfo, array, key, data, isBatch, immutable, logError) { if (immutable === true && isDefined(target)) { const newTarget = createObjectWithChanges(target, data); array[index] = newTarget; + // @ts-expect-error return !isBatch && trivialPromise(newTarget, key); } } @@ -198,8 +198,10 @@ function update(keyInfo, array, key, data, isBatch, immutable, logError) { deepExtendArraySafe(target, data, extendComplexObject, false, true, true); if (!isBatch) { if (config().useLegacyStoreResult) { + // @ts-expect-error return trivialPromise(key, data); } + // @ts-expect-error return trivialPromise(target, key); } } @@ -232,6 +234,7 @@ function insert(keyInfo, array, data, index, isBatch, logError, skipCopying) { setDataByKeyMapValue(array, keyValue, obj); if (!isBatch) { + // @ts-expect-error return trivialPromise(config().useLegacyStoreResult ? data : obj, keyValue); } } @@ -243,6 +246,7 @@ function remove(keyInfo, array, key, isBatch, logError) { setDataByKeyMapValue(array, key, null); } if (!isBatch) { + // @ts-expect-error return trivialPromise(key); } if (index < 0) { return getErrorResult(isBatch, logError, 'E4009'); diff --git a/packages/devextreme/js/__internal/data/m_custom_store.ts b/packages/devextreme/js/__internal/data/m_custom_store.ts index c36840d51bad..897bc7d603fa 100644 --- a/packages/devextreme/js/__internal/data/m_custom_store.ts +++ b/packages/devextreme/js/__internal/data/m_custom_store.ts @@ -1,22 +1,18 @@ +import arrayQuery from '@js/common/data/array_query'; +import { applyBatch } from '@js/common/data/array_utils'; +import { errors } from '@js/common/data/errors'; +import storeHelper from '@js/common/data/store_helper'; +import { + errorMessageFromXhr as errorMessageFromXhrUtility, + keysEqual, + XHR_ERROR_UNLOAD, +} from '@js/common/data/utils'; import config from '@js/core/config'; import $ from '@js/core/renderer'; // @ts-expect-error import { Deferred, fromPromise, when } from '@js/core/utils/deferred'; import { isFunction } from '@js/core/utils/type'; import Store from '@js/data/abstract_store'; -import arrayQuery from '@js/data/array_query'; -import { applyBatch } from '@js/data/array_utils'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -import storeHelper from '@js/data/store_helper'; -import { - // @ts-expect-error - errorMessageFromXhr as errorMessageFromXhrUtility, - // @ts-expect-error - keysEqual, - // @ts-expect-error - XHR_ERROR_UNLOAD, -} from '@js/data/utils'; const TOTAL_COUNT = 'totalCount'; const LOAD = 'load'; @@ -228,6 +224,7 @@ function runRawLoadWithKey(pendingDeferred, store, key) { pendingDeferred.reject(errors.Error('E4009')); }); } + // @ts-expect-error const CustomStore = Store.inherit({ ctor(options) { diff --git a/packages/devextreme/js/__internal/data/m_local_store.ts b/packages/devextreme/js/__internal/data/m_local_store.ts index 118cea0ecf27..6bf755e1db08 100644 --- a/packages/devextreme/js/__internal/data/m_local_store.ts +++ b/packages/devextreme/js/__internal/data/m_local_store.ts @@ -1,10 +1,9 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import ArrayStore from '@js/common/data/array_store'; +import { errors } from '@js/common/data/errors'; import Class from '@js/core/class'; import domAdapter from '@js/core/dom_adapter'; import { getWindow } from '@js/core/utils/window'; -import ArrayStore from '@js/data/array_store'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -import eventsEngine from '@js/events/core/events_engine'; const window = getWindow(); const { abstract } = Class; @@ -89,7 +88,6 @@ const DomLocalStoreBackend = LocalStoreBackend.inherit({ const localStoreBackends = { dom: DomLocalStoreBackend, }; -// @ts-expect-error const LocalStore = ArrayStore.inherit({ ctor(options) { diff --git a/packages/devextreme/js/__internal/data/m_query.ts b/packages/devextreme/js/__internal/data/m_query.ts index e308e41f081f..c35f346ae08c 100644 --- a/packages/devextreme/js/__internal/data/m_query.ts +++ b/packages/devextreme/js/__internal/data/m_query.ts @@ -1,4 +1,4 @@ -import { queryImpl } from '@js/data/query_implementation'; +import { queryImpl } from '@js/common/data/query_implementation'; const query = function () { const impl = Array.isArray(arguments[0]) ? 'array' : 'remote'; diff --git a/packages/devextreme/js/__internal/data/m_remote_query.ts b/packages/devextreme/js/__internal/data/m_remote_query.ts index 46b9ad0a6309..53fb79c54c50 100644 --- a/packages/devextreme/js/__internal/data/m_remote_query.ts +++ b/packages/devextreme/js/__internal/data/m_remote_query.ts @@ -1,11 +1,10 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import arrayQueryImpl from '@js/common/data/array_query'; +import { errors, handleError } from '@js/common/data/errors'; +import queryAdapters from '@js/common/data/query_adapters'; import { Deferred } from '@js/core/utils/deferred'; import { each } from '@js/core/utils/iterator'; import { isFunction } from '@js/core/utils/type'; -import arrayQueryImpl from '@js/data/array_query'; -// @ts-expect-error -import { errors, handleError } from '@js/data/errors'; -import queryAdapters from '@js/data/query_adapters'; const remoteQueryImpl = function (url, queryOptions, tasks) { tasks = tasks || []; diff --git a/packages/devextreme/js/__internal/data/m_store_helper.ts b/packages/devextreme/js/__internal/data/m_store_helper.ts index 532127da73ae..fda349998c10 100644 --- a/packages/devextreme/js/__internal/data/m_store_helper.ts +++ b/packages/devextreme/js/__internal/data/m_store_helper.ts @@ -1,10 +1,9 @@ +import arrayQuery from '@js/common/data/array_query'; +import { normalizeSortingInfo } from '@js/common/data/utils'; // @ts-expect-error import { grep } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -import arrayQuery from '@js/data/array_query'; -// @ts-expect-error -import { normalizeSortingInfo } from '@js/data/utils'; function multiLevelGroup(query, groupInfo) { query = query.groupBy(groupInfo[0].selector); diff --git a/packages/devextreme/js/__internal/data/odata/m_context.ts b/packages/devextreme/js/__internal/data/odata/m_context.ts index 0da972b6b409..d8ea84c46b9a 100644 --- a/packages/devextreme/js/__internal/data/odata/m_context.ts +++ b/packages/devextreme/js/__internal/data/odata/m_context.ts @@ -1,12 +1,12 @@ -import '@js/data/odata/query_adapter'; +import '@js/common/data/odata/query_adapter'; +import RequestDispatcher from '@js/common/data/odata/request_dispatcher'; +import ODataStore from '@js/common/data/odata/store'; import Class from '@js/core/class'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isPlainObject } from '@js/core/utils/type'; -import RequestDispatcher from '@js/data/odata/request_dispatcher'; -import ODataStore from '@js/data/odata/store'; import { errors, handleError } from '../m_errors'; import { escapeServiceOperationParams, formatFunctionInvocationUrl } from './m_utils'; diff --git a/packages/devextreme/js/__internal/data/odata/m_query_adapter.ts b/packages/devextreme/js/__internal/data/odata/m_query_adapter.ts index 95a3eb1e1fbd..8e06ae78e816 100644 --- a/packages/devextreme/js/__internal/data/odata/m_query_adapter.ts +++ b/packages/devextreme/js/__internal/data/odata/m_query_adapter.ts @@ -1,8 +1,8 @@ +import queryAdapters from '@js/common/data/query_adapters'; import config from '@js/core/config'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isFunction } from '@js/core/utils/type'; -import queryAdapters from '@js/data/query_adapters'; import { errors } from '../m_errors'; import { diff --git a/packages/devextreme/js/__internal/data/odata/m_request_dispatcher.ts b/packages/devextreme/js/__internal/data/odata/m_request_dispatcher.ts index 616638cac8bf..c1dbe9f8ca6b 100644 --- a/packages/devextreme/js/__internal/data/odata/m_request_dispatcher.ts +++ b/packages/devextreme/js/__internal/data/odata/m_request_dispatcher.ts @@ -1,7 +1,6 @@ -import '@js/data/odata/query_adapter'; +import '@js/common/data/odata/query_adapter'; -// @ts-expect-error -import { sendRequest } from '@js/data/odata/utils'; +import { sendRequest } from '@js/common/data/odata/utils'; const DEFAULT_PROTOCOL_VERSION = 4; diff --git a/packages/devextreme/js/__internal/data/odata/m_store.ts b/packages/devextreme/js/__internal/data/odata/m_store.ts index 0442335481a6..9bf2c95863d0 100644 --- a/packages/devextreme/js/__internal/data/odata/m_store.ts +++ b/packages/devextreme/js/__internal/data/odata/m_store.ts @@ -1,13 +1,12 @@ -import '@js/data/odata/query_adapter'; +import '@js/common/data/odata/query_adapter'; +import { errors } from '@js/common/data/errors'; +import RequestDispatcher from '@js/common/data/odata/request_dispatcher'; +import query from '@js/common/data/query'; import config from '@js/core/config'; import { Deferred, when } from '@js/core/utils/deferred'; import { isDefined } from '@js/core/utils/type'; import Store from '@js/data/abstract_store'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -import RequestDispatcher from '@js/data/odata/request_dispatcher'; -import query from '@js/data/query'; import { convertPrimitiveValue, @@ -41,6 +40,7 @@ const mergeFieldTypesWithKeyType = (fieldTypes, keyType) => { return result; }; + // @ts-expect-error const ODataStore = Store.inherit({ @@ -129,6 +129,7 @@ const ODataStore = Store.inherit({ } } + // @ts-expect-error return query(url, queryOptions); }, diff --git a/packages/devextreme/js/__internal/data/odata/m_utils.ts b/packages/devextreme/js/__internal/data/odata/m_utils.ts index fcbbd5117c4d..cf043c0de3c9 100644 --- a/packages/devextreme/js/__internal/data/odata/m_utils.ts +++ b/packages/devextreme/js/__internal/data/odata/m_utils.ts @@ -1,3 +1,5 @@ +import { errors } from '@js/common/data/errors'; +import { errorMessageFromXhr, XHR_ERROR_UNLOAD } from '@js/common/data/utils'; import Class from '@js/core/class'; import Guid from '@js/core/guid'; import ajax from '@js/core/utils/ajax'; @@ -10,10 +12,6 @@ import { format as stringFormat } from '@js/core/utils/string'; import { isDefined, isObject, isPlainObject, type, } from '@js/core/utils/type'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -// @ts-expect-error -import { errorMessageFromXhr, XHR_ERROR_UNLOAD } from '@js/data/utils'; const GUID_REGEX = /^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$/; @@ -237,7 +235,7 @@ export const sendRequest = (protocolVersion, request, options) => { if (isFinite(count)) { d.resolve(count); } else { - d.reject(new errors.Error('E4018')); + d.reject(errors.Error('E4018')); } } else if (nextUrl && !isPaged) { if (!isAbsoluteUrl(nextUrl)) { diff --git a/packages/devextreme/js/__internal/data_controller.ts b/packages/devextreme/js/__internal/data_controller.ts index 45aaa57acaf9..941aa26d9b66 100644 --- a/packages/devextreme/js/__internal/data_controller.ts +++ b/packages/devextreme/js/__internal/data_controller.ts @@ -1,10 +1,10 @@ import { Deferred } from '@js/core/utils/deferred'; +import ArrayStore from '../common/data/array_store'; +import { DataSource } from '../common/data/data_source/data_source'; +import { normalizeDataSourceOptions } from '../common/data/data_source/utils'; import { extend } from '../core/utils/extend'; import { isDefined } from '../core/utils/type'; -import ArrayStore from '../data/array_store'; -import { DataSource } from '../data/data_source/data_source'; -import { normalizeDataSourceOptions } from '../data/data_source/utils'; interface DataSourceType { _userData: unknown; diff --git a/packages/devextreme/js/__internal/events/core/m_emitter.feedback.ts b/packages/devextreme/js/__internal/events/core/m_emitter.feedback.ts index 1649da5afd88..cd2ced59a6df 100644 --- a/packages/devextreme/js/__internal/events/core/m_emitter.feedback.ts +++ b/packages/devextreme/js/__internal/events/core/m_emitter.feedback.ts @@ -1,10 +1,10 @@ +import Emitter from '@js/common/core/events/core/emitter'; +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import pointerEvents from '@js/common/core/events/pointer'; +import { isMouseEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import { ensureDefined, noop } from '@js/core/utils/common'; import { contains } from '@js/core/utils/dom'; -import Emitter from '@js/events/core/emitter'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import pointerEvents from '@js/events/pointer'; -import { isMouseEvent } from '@js/events/utils/index'; import devices from '@ts/core/m_devices'; const ACTIVE_EVENT_NAME = 'dxactive'; diff --git a/packages/devextreme/js/__internal/events/core/m_emitter.ts b/packages/devextreme/js/__internal/events/core/m_emitter.ts index 65d31a3b7aa6..fd09b7c43782 100644 --- a/packages/devextreme/js/__internal/events/core/m_emitter.ts +++ b/packages/devextreme/js/__internal/events/core/m_emitter.ts @@ -1,9 +1,9 @@ +import { fireEvent, hasTouches, isDxMouseWheelEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import $ from '@js/core/renderer'; import Callbacks from '@js/core/utils/callbacks'; import { noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; -import { fireEvent, hasTouches, isDxMouseWheelEvent } from '@js/events/utils/index'; const Emitter = Class.inherit({ diff --git a/packages/devextreme/js/__internal/events/core/m_emitter_registrator.ts b/packages/devextreme/js/__internal/events/core/m_emitter_registrator.ts index 48d06a7f38bd..801b84dddb0c 100644 --- a/packages/devextreme/js/__internal/events/core/m_emitter_registrator.ts +++ b/packages/devextreme/js/__internal/events/core/m_emitter_registrator.ts @@ -1,3 +1,8 @@ +import registerEvent from '@js/common/core/events/core/event_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as wheelEventName } from '@js/common/core/events/core/wheel'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, isMouseEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import domAdapter from '@js/core/dom_adapter'; import { data as elementData } from '@js/core/element_data'; @@ -5,11 +10,6 @@ import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import readyCallbacks from '@js/core/utils/ready_callbacks'; -import registerEvent from '@js/events/core/event_registrator'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as wheelEventName } from '@js/events/core/wheel'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, isMouseEvent } from '@js/events/utils/index'; const MANAGER_EVENT = 'dxEventManager'; const EMITTER_DATA = 'dxEmitter'; diff --git a/packages/devextreme/js/__internal/events/core/m_event_registrator.ts b/packages/devextreme/js/__internal/events/core/m_event_registrator.ts index 1300b04f4577..b84e875dfc31 100644 --- a/packages/devextreme/js/__internal/events/core/m_event_registrator.ts +++ b/packages/devextreme/js/__internal/events/core/m_event_registrator.ts @@ -1,5 +1,5 @@ +import callbacks from '@js/common/core/events/core/event_registrator_callbacks'; import { each } from '@js/core/utils/iterator'; -import callbacks from '@js/events/core/event_registrator_callbacks'; const registerEvent = function (name, eventObject) { const strategy: any = {}; diff --git a/packages/devextreme/js/__internal/events/core/m_events_engine.ts b/packages/devextreme/js/__internal/events/core/m_events_engine.ts index 53f51b8a8fd8..26730956c6d8 100644 --- a/packages/devextreme/js/__internal/events/core/m_events_engine.ts +++ b/packages/devextreme/js/__internal/events/core/m_events_engine.ts @@ -1,3 +1,6 @@ +import registerEventCallbacks from '@js/common/core/events/core/event_registrator_callbacks'; +import hookTouchProps from '@js/common/core/events/core/hook_touch_props'; +import { getEventTarget } from '@js/common/core/events/utils/event_target'; import domAdapter from '@js/core/dom_adapter'; import errors from '@js/core/errors'; import callOnce from '@js/core/utils/call_once'; @@ -8,9 +11,6 @@ import { isFunction, isObject, isString, isWindow, } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import registerEventCallbacks from '@js/events/core/event_registrator_callbacks'; -import hookTouchProps from '@js/events/core/hook_touch_props'; -import { getEventTarget } from '@js/events/utils/event_target'; const window = getWindow(); diff --git a/packages/devextreme/js/__internal/events/core/m_keyboard_processor.ts b/packages/devextreme/js/__internal/events/core/m_keyboard_processor.ts index bc3194beeda1..6c8cda2690f9 100644 --- a/packages/devextreme/js/__internal/events/core/m_keyboard_processor.ts +++ b/packages/devextreme/js/__internal/events/core/m_keyboard_processor.ts @@ -1,7 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, normalizeKeyName } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import $ from '@js/core/renderer'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, normalizeKeyName } from '@js/events/utils/index'; const COMPOSITION_START_EVENT = 'compositionstart'; const COMPOSITION_END_EVENT = 'compositionend'; diff --git a/packages/devextreme/js/__internal/events/core/m_wheel.ts b/packages/devextreme/js/__internal/events/core/m_wheel.ts index f4f94e27f02a..c579e0ec7856 100644 --- a/packages/devextreme/js/__internal/events/core/m_wheel.ts +++ b/packages/devextreme/js/__internal/events/core/m_wheel.ts @@ -1,7 +1,7 @@ +import registerEvent from '@js/common/core/events/core/event_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, fireEvent } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; -import registerEvent from '@js/events/core/event_registrator'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, fireEvent } from '@js/events/utils/index'; const EVENT_NAME = 'dxmousewheel'; const EVENT_NAMESPACE = 'dxWheel'; diff --git a/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.scroll.ts b/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.scroll.ts index abd66c8d2c0d..6edadbe1125b 100644 --- a/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.scroll.ts +++ b/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.scroll.ts @@ -1,11 +1,11 @@ -import { cancelAnimationFrame, requestAnimationFrame } from '@js/animation/frame'; -import Class from '@js/core/class'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import eventsEngine from '@js/events/core/events_engine'; -import GestureEmitter from '@js/events/gesture/emitter.gesture'; +import { cancelAnimationFrame, requestAnimationFrame } from '@js/common/core/animation/frame'; +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import GestureEmitter from '@js/common/core/events/gesture/emitter.gesture'; import { addNamespace, eventData, eventDelta, isDxMouseWheelEvent, isMouseEvent, -} from '@js/events/utils/index'; +} from '@js/common/core/events/utils/index'; +import Class from '@js/core/class'; import devices from '@ts/core/m_devices'; const { abstract } = Class; diff --git a/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.ts b/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.ts index c507772f7c90..26a9be9ac708 100644 --- a/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.ts +++ b/packages/devextreme/js/__internal/events/gesture/m_emitter.gesture.ts @@ -1,3 +1,8 @@ +import Emitter from '@js/common/core/events/core/emitter'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + createEvent, eventData, eventDelta, isDxMouseWheelEvent, isTouchEvent, needSkipEvent, +} from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import callOnce from '@js/core/utils/call_once'; import { noop } from '@js/core/utils/common'; @@ -5,11 +10,6 @@ import { sign } from '@js/core/utils/math'; import readyCallbacks from '@js/core/utils/ready_callbacks'; import { styleProp } from '@js/core/utils/style'; import { isDefined } from '@js/core/utils/type'; -import Emitter from '@js/events/core/emitter'; -import eventsEngine from '@js/events/core/events_engine'; -import { - createEvent, eventData, eventDelta, isDxMouseWheelEvent, isTouchEvent, needSkipEvent, -} from '@js/events/utils/index'; import devices from '@ts/core/m_devices'; import domUtils from '@ts/core/utils/m_dom'; diff --git a/packages/devextreme/js/__internal/events/gesture/m_swipeable.ts b/packages/devextreme/js/__internal/events/gesture/m_swipeable.ts index 4ba1540119cd..d321ed8f4a38 100644 --- a/packages/devextreme/js/__internal/events/gesture/m_swipeable.ts +++ b/packages/devextreme/js/__internal/events/gesture/m_swipeable.ts @@ -1,14 +1,14 @@ -import DOMComponent from '@js/core/dom_component'; -import { extend } from '@js/core/utils/extend'; -import { each } from '@js/core/utils/iterator'; -import { name } from '@js/core/utils/public_component'; -import eventsEngine from '@js/events/core/events_engine'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import { end as swipeEventEnd, start as swipeEventStart, swipe as swipeEventSwipe, -} from '@js/events/swipe'; -import { addNamespace } from '@js/events/utils/index'; +} from '@js/common/core/events/swipe'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import DOMComponent from '@js/core/dom_component'; +import { extend } from '@js/core/utils/extend'; +import { each } from '@js/core/utils/iterator'; +import { name } from '@js/core/utils/public_component'; const DX_SWIPEABLE = 'dxSwipeable'; const SWIPEABLE_CLASS = 'dx-swipeable'; diff --git a/packages/devextreme/js/__internal/events/m_click.ts b/packages/devextreme/js/__internal/events/m_click.ts index 6b1804bc55e2..03bc4dc7d685 100644 --- a/packages/devextreme/js/__internal/events/m_click.ts +++ b/packages/devextreme/js/__internal/events/m_click.ts @@ -1,13 +1,13 @@ import { cancelAnimationFrame, requestAnimationFrame } from '@js/animation/frame'; +import Emitter from '@js/common/core/events/core/emitter'; +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { subscribeNodesDisposing, unsubscribeNodesDisposing } from '@js/common/core/events/utils/event_nodes_disposing'; +import { getEventTarget } from '@js/common/core/events/utils/event_target'; +import { addNamespace, fireEvent } from '@js/common/core/events/utils/index'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; -import Emitter from '@js/events/core/emitter'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { subscribeNodesDisposing, unsubscribeNodesDisposing } from '@js/events/utils/event_nodes_disposing'; -import { getEventTarget } from '@js/events/utils/event_target'; -import { addNamespace, fireEvent } from '@js/events/utils/index'; import devices from '@ts/core/m_devices'; import domUtils from '@ts/core/utils/m_dom'; diff --git a/packages/devextreme/js/__internal/events/m_contextmenu.ts b/packages/devextreme/js/__internal/events/m_contextmenu.ts index d0816416647c..e4b7c1f54023 100644 --- a/packages/devextreme/js/__internal/events/m_contextmenu.ts +++ b/packages/devextreme/js/__internal/events/m_contextmenu.ts @@ -1,9 +1,9 @@ +import registerEvent from '@js/common/core/events/core/event_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import { addNamespace, fireEvent, isMouseEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import $ from '@js/core/renderer'; -import registerEvent from '@js/events/core/event_registrator'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import { addNamespace, fireEvent, isMouseEvent } from '@js/events/utils/index'; import devices from '@ts/core/m_devices'; import supportUtils from '@ts/core/utils/m_support'; diff --git a/packages/devextreme/js/__internal/events/m_dblclick.ts b/packages/devextreme/js/__internal/events/m_dblclick.ts index 6628b8d0c4fe..646a7793fff9 100644 --- a/packages/devextreme/js/__internal/events/m_dblclick.ts +++ b/packages/devextreme/js/__internal/events/m_dblclick.ts @@ -1,9 +1,9 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, fireEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import domAdapter from '@js/core/dom_adapter'; import { closestCommonParent } from '@js/core/utils/dom'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, fireEvent } from '@js/events/utils/index'; const DBLCLICK_EVENT_NAME = 'dxdblclick'; const DBLCLICK_NAMESPACE = 'dxDblClick'; diff --git a/packages/devextreme/js/__internal/events/m_drag.ts b/packages/devextreme/js/__internal/events/m_drag.ts index 952dd4b7f624..30388f15bff5 100644 --- a/packages/devextreme/js/__internal/events/m_drag.ts +++ b/packages/devextreme/js/__internal/events/m_drag.ts @@ -1,12 +1,12 @@ +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import registerEvent from '@js/common/core/events/core/event_registrator'; +import GestureEmitter from '@js/common/core/events/gesture/emitter.gesture'; +import { eventData as eData, fireEvent } from '@js/common/core/events/utils/index'; import { data as elementData, removeData } from '@js/core/element_data'; import $ from '@js/core/renderer'; import { wrapToArray } from '@js/core/utils/array'; import { contains } from '@js/core/utils/dom'; import * as iteratorUtils from '@js/core/utils/iterator'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import registerEvent from '@js/events/core/event_registrator'; -import GestureEmitter from '@js/events/gesture/emitter.gesture'; -import { eventData as eData, fireEvent } from '@js/events/utils/index'; const DRAG_START_EVENT = 'dxdragstart'; const DRAG_EVENT = 'dxdrag'; diff --git a/packages/devextreme/js/__internal/events/m_hold.ts b/packages/devextreme/js/__internal/events/m_hold.ts index f5fb13543588..3248dc50f4f8 100644 --- a/packages/devextreme/js/__internal/events/m_hold.ts +++ b/packages/devextreme/js/__internal/events/m_hold.ts @@ -1,6 +1,6 @@ -import Emitter from '@js/events/core/emitter'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import { eventData, eventDelta } from '@js/events/utils/index'; +import Emitter from '@js/common/core/events/core/emitter'; +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import { eventData, eventDelta } from '@js/common/core/events/utils/index'; const { abs } = Math; diff --git a/packages/devextreme/js/__internal/events/m_hover.ts b/packages/devextreme/js/__internal/events/m_hover.ts index ef963775cc64..29f764e69be2 100644 --- a/packages/devextreme/js/__internal/events/m_hover.ts +++ b/packages/devextreme/js/__internal/events/m_hover.ts @@ -1,9 +1,9 @@ +import registerEvent from '@js/common/core/events/core/event_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, fireEvent, isTouchEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import { data as elementData, removeData } from '@js/core/element_data'; -import registerEvent from '@js/events/core/event_registrator'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, fireEvent, isTouchEvent } from '@js/events/utils/index'; import devices from '@ts/core/m_devices'; const HOVERSTART_NAMESPACE = 'dxHoverStart'; diff --git a/packages/devextreme/js/__internal/events/m_pointer.ts b/packages/devextreme/js/__internal/events/m_pointer.ts index e4025dbd0371..2db6c39e3a42 100644 --- a/packages/devextreme/js/__internal/events/m_pointer.ts +++ b/packages/devextreme/js/__internal/events/m_pointer.ts @@ -1,9 +1,9 @@ +import registerEvent from '@js/common/core/events/core/event_registrator'; +import MouseStrategy from '@js/common/core/events/pointer/mouse'; +import MouseAndTouchStrategy from '@js/common/core/events/pointer/mouse_and_touch'; +import TouchStrategy from '@js/common/core/events/pointer/touch'; import GlobalConfig from '@js/core/config'; import { each } from '@js/core/utils/iterator'; -import registerEvent from '@js/events/core/event_registrator'; -import MouseStrategy from '@js/events/pointer/mouse'; -import MouseAndTouchStrategy from '@js/events/pointer/mouse_and_touch'; -import TouchStrategy from '@js/events/pointer/touch'; import devices from '@ts/core/m_devices'; import support from '@ts/core/utils/m_support'; diff --git a/packages/devextreme/js/__internal/events/m_remove.ts b/packages/devextreme/js/__internal/events/m_remove.ts index 7db6f04f4725..4131b1b6533c 100644 --- a/packages/devextreme/js/__internal/events/m_remove.ts +++ b/packages/devextreme/js/__internal/events/m_remove.ts @@ -1,7 +1,7 @@ +import registerEvent from '@js/common/core/events/core/event_registrator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import { beforeCleanData } from '@js/core/element_data'; import $ from '@js/core/renderer'; -import registerEvent from '@js/events/core/event_registrator'; -import eventsEngine from '@js/events/core/events_engine'; export const removeEvent = 'dxremove'; const eventPropName = 'dxRemoveEvent'; diff --git a/packages/devextreme/js/__internal/events/m_short.ts b/packages/devextreme/js/__internal/events/m_short.ts index 4ef502a5058f..b65e4fd4d2c4 100644 --- a/packages/devextreme/js/__internal/events/m_short.ts +++ b/packages/devextreme/js/__internal/events/m_short.ts @@ -1,6 +1,6 @@ -import eventsEngine from '@js/events/core/events_engine'; -import KeyboardProcessor from '@js/events/core/keyboard_processor'; -import { addNamespace as pureAddNamespace } from '@js/events/utils/index'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import KeyboardProcessor from '@js/common/core/events/core/keyboard_processor'; +import { addNamespace as pureAddNamespace } from '@js/common/core/events/utils/index'; function addNamespace(event, namespace) { return namespace ? pureAddNamespace(event, namespace) : event; diff --git a/packages/devextreme/js/__internal/events/m_swipe.ts b/packages/devextreme/js/__internal/events/m_swipe.ts index fbea0dddd200..4b533b43885a 100644 --- a/packages/devextreme/js/__internal/events/m_swipe.ts +++ b/packages/devextreme/js/__internal/events/m_swipe.ts @@ -1,7 +1,7 @@ +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import GestureEmitter from '@js/common/core/events/gesture/emitter.gesture'; +import { eventData } from '@js/common/core/events/utils/index'; import { getHeight, getWidth } from '@js/core/utils/size'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import GestureEmitter from '@js/events/gesture/emitter.gesture'; -import { eventData } from '@js/events/utils/index'; const SWIPE_START_EVENT = 'dxswipestart'; const SWIPE_EVENT = 'dxswipe'; diff --git a/packages/devextreme/js/__internal/events/m_transform.ts b/packages/devextreme/js/__internal/events/m_transform.ts index 6f3ae247bc28..3fea6fd1756c 100644 --- a/packages/devextreme/js/__internal/events/m_transform.ts +++ b/packages/devextreme/js/__internal/events/m_transform.ts @@ -1,8 +1,8 @@ +import Emitter from '@js/common/core/events/core/emitter'; +import registerEmitter from '@js/common/core/events/core/emitter_registrator'; +import { hasTouches } from '@js/common/core/events/utils/index'; import * as iteratorUtils from '@js/core/utils/iterator'; import { fitIntoRange, sign as mathSign } from '@js/core/utils/math'; -import Emitter from '@js/events/core/emitter'; -import registerEmitter from '@js/events/core/emitter_registrator'; -import { hasTouches } from '@js/events/utils/index'; interface EventAlias { name: string; diff --git a/packages/devextreme/js/__internal/events/m_visibility_change.ts b/packages/devextreme/js/__internal/events/m_visibility_change.ts index 73649aaeb138..278bc4047a3d 100644 --- a/packages/devextreme/js/__internal/events/m_visibility_change.ts +++ b/packages/devextreme/js/__internal/events/m_visibility_change.ts @@ -1,5 +1,5 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import $ from '@js/core/renderer'; -import eventsEngine from '@js/events/core/events_engine'; const triggerVisibilityChangeEvent = function (eventName) { const VISIBILITY_CHANGE_SELECTOR = '.dx-visibility-change-handler'; diff --git a/packages/devextreme/js/__internal/events/pointer/m_base.ts b/packages/devextreme/js/__internal/events/pointer/m_base.ts index 9f09bc77971f..4a74403e2b36 100644 --- a/packages/devextreme/js/__internal/events/pointer/m_base.ts +++ b/packages/devextreme/js/__internal/events/pointer/m_base.ts @@ -1,9 +1,9 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { getEventTarget } from '@js/common/core/events/utils/event_target'; +import { addNamespace, eventSource, fireEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import domAdapter from '@js/core/dom_adapter'; import browser from '@js/core/utils/browser'; -import eventsEngine from '@js/events/core/events_engine'; -import { getEventTarget } from '@js/events/utils/event_target'; -import { addNamespace, eventSource, fireEvent } from '@js/events/utils/index'; const POINTER_EVENTS_NAMESPACE = 'dxPointerEvents'; diff --git a/packages/devextreme/js/__internal/events/pointer/m_mouse.ts b/packages/devextreme/js/__internal/events/pointer/m_mouse.ts index 6923ca95f16e..c5bb04abef0d 100644 --- a/packages/devextreme/js/__internal/events/pointer/m_mouse.ts +++ b/packages/devextreme/js/__internal/events/pointer/m_mouse.ts @@ -1,6 +1,6 @@ +import BaseStrategy from '@js/common/core/events/pointer/base'; +import Observer from '@js/common/core/events/pointer/observer'; import { extend } from '@js/core/utils/extend'; -import BaseStrategy from '@js/events/pointer/base'; -import Observer from '@js/events/pointer/observer'; /* eslint-disable spellcheck/spell-checker */ const eventMap = { diff --git a/packages/devextreme/js/__internal/events/pointer/m_mouse_and_touch.ts b/packages/devextreme/js/__internal/events/pointer/m_mouse_and_touch.ts index ace13e48880c..c4a325233da1 100644 --- a/packages/devextreme/js/__internal/events/pointer/m_mouse_and_touch.ts +++ b/packages/devextreme/js/__internal/events/pointer/m_mouse_and_touch.ts @@ -1,8 +1,8 @@ +import BaseStrategy from '@js/common/core/events/pointer/base'; +import MouseStrategy from '@js/common/core/events/pointer/mouse'; +import TouchStrategy from '@js/common/core/events/pointer/touch'; +import { isMouseEvent } from '@js/common/core/events/utils/index'; import { extend } from '@js/core/utils/extend'; -import BaseStrategy from '@js/events/pointer/base'; -import MouseStrategy from '@js/events/pointer/mouse'; -import TouchStrategy from '@js/events/pointer/touch'; -import { isMouseEvent } from '@js/events/utils/index'; /* eslint-disable spellcheck/spell-checker */ const eventMap = { diff --git a/packages/devextreme/js/__internal/events/pointer/m_touch.ts b/packages/devextreme/js/__internal/events/pointer/m_touch.ts index f6fc7b28f21f..159f8652c595 100644 --- a/packages/devextreme/js/__internal/events/pointer/m_touch.ts +++ b/packages/devextreme/js/__internal/events/pointer/m_touch.ts @@ -1,6 +1,6 @@ +import BaseStrategy from '@js/common/core/events/pointer/base'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -import BaseStrategy from '@js/events/pointer/base'; import devices from '@ts/core/m_devices'; /* eslint-disable spellcheck/spell-checker */ diff --git a/packages/devextreme/js/__internal/events/utils/index.ts b/packages/devextreme/js/__internal/events/utils/index.ts index 407f3dced19d..ed0d11d30964 100644 --- a/packages/devextreme/js/__internal/events/utils/index.ts +++ b/packages/devextreme/js/__internal/events/utils/index.ts @@ -1,7 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -import eventsEngine from '@js/events/core/events_engine'; import { focused } from '@js/ui/widget/selectors'; import mappedAddNamespace from './m_add_namespace'; diff --git a/packages/devextreme/js/__internal/events/utils/m_event_nodes_disposing.ts b/packages/devextreme/js/__internal/events/utils/m_event_nodes_disposing.ts index 3baf9abb34ae..4db01c1452c5 100644 --- a/packages/devextreme/js/__internal/events/utils/m_event_nodes_disposing.ts +++ b/packages/devextreme/js/__internal/events/utils/m_event_nodes_disposing.ts @@ -1,5 +1,5 @@ -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; function nodesByEvent(event) { return event && [ diff --git a/packages/devextreme/js/__internal/filter_builder/m_filter_builder.ts b/packages/devextreme/js/__internal/filter_builder/m_filter_builder.ts index 992e4395f599..abf302038afd 100644 --- a/packages/devextreme/js/__internal/filter_builder/m_filter_builder.ts +++ b/packages/devextreme/js/__internal/filter_builder/m_filter_builder.ts @@ -1,4 +1,7 @@ /* eslint-disable max-classes-per-file */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { normalizeKeyName } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import Guid from '@js/core/guid'; @@ -6,9 +9,6 @@ import $ from '@js/core/renderer'; import { when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { normalizeKeyName } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Popup from '@js/ui/popup/ui.popup'; import EditorFactoryMixin from '@js/ui/shared/ui.editor_factory_mixin'; import TreeView from '@js/ui/tree_view'; diff --git a/packages/devextreme/js/__internal/filter_builder/m_utils.ts b/packages/devextreme/js/__internal/filter_builder/m_utils.ts index 600b85c216da..373b1ff2dbf3 100644 --- a/packages/devextreme/js/__internal/filter_builder/m_utils.ts +++ b/packages/devextreme/js/__internal/filter_builder/m_utils.ts @@ -1,14 +1,13 @@ +import messageLocalization from '@js/common/core/localization/message'; +import { DataSource } from '@js/common/data/data_source/data_source'; +import { errors as dataErrors } from '@js/common/data/errors'; import $ from '@js/core/renderer'; import { compileGetter } from '@js/core/utils/data'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { captionize } from '@js/core/utils/inflector'; import { isDefined, isFunction } from '@js/core/utils/type'; -import { DataSource } from '@js/data/data_source/data_source'; -// @ts-expect-error errors.d.ts is badly typed and doesn't contain all exported entities. -import { errors as dataErrors } from '@js/data/errors'; import formatHelper from '@js/format_helper'; -import messageLocalization from '@js/localization/message'; import filterUtils from '@js/ui/shared/filtering'; import errors from '@js/ui/widget/ui.errors'; @@ -142,7 +141,7 @@ function getCriteriaOperation(criteria) { const item = criteria[i]; if (!Array.isArray(item)) { if (value && value !== item) { - throw new dataErrors.Error('E4019'); + throw dataErrors.Error('E4019'); } if (item !== '!') { value = item; diff --git a/packages/devextreme/js/__internal/grids/data_grid/export/m_export.ts b/packages/devextreme/js/__internal/grids/data_grid/export/m_export.ts index d27e6139b0e9..b3bee519040b 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/export/m_export.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/export/m_export.ts @@ -2,13 +2,13 @@ import '@js/ui/button'; import '@js/ui/drop_down_button'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { getDefaultAlignment } from '@js/core/utils/position'; import { format } from '@js/core/utils/string'; import { isDefined, isFunction } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import List from '@js/ui/list_light'; import errors from '@js/ui/widget/ui.errors'; import { prepareItems } from '@ts/grids/grid_core/m_export'; diff --git a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping.ts b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping.ts index 7093eac76a80..921272af50c6 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping.ts @@ -1,12 +1,12 @@ /* eslint-disable max-classes-per-file */ /* eslint-disable @typescript-eslint/method-signature-style */ +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { Deferred, when } from '@js/core/utils/deferred'; import { each } from '@js/core/utils/iterator'; import { getHeight } from '@js/core/utils/size'; import { isDefined, isString } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import { restoreFocus, setTabIndex } from '@js/ui/shared/accessibility'; import type { DataController } from '@ts/grids/grid_core/data_controller/m_data_controller'; import type DataSourceAdapter from '@ts/grids/grid_core/data_source_adapter/m_data_source_adapter'; diff --git a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_collapsed.ts b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_collapsed.ts index 6ab6b600ee71..72613af77893 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_collapsed.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_collapsed.ts @@ -1,8 +1,7 @@ +import { errors as dataErrors } from '@js/common/data/errors'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -// @ts-expect-error -import { errors as dataErrors } from '@js/data/errors'; import errors from '@js/ui/widget/ui.errors'; import dataGridCore from '../m_core'; diff --git a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_core.ts b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_core.ts index 1ae9b0b1dc66..b876477b9cde 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_core.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_core.ts @@ -1,7 +1,6 @@ +import { normalizeSortingInfo } from '@js/common/data/utils'; import $ from '@js/core/renderer'; import { when } from '@js/core/utils/deferred'; -// @ts-expect-error -import { normalizeSortingInfo } from '@js/data/utils'; import gridCore from '../m_core'; diff --git a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_expanded.ts b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_expanded.ts index 77c4f349e578..86133e053ac0 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_expanded.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/grouping/m_grouping_expanded.ts @@ -1,11 +1,10 @@ +import dataQuery from '@js/common/data/query'; +import storeHelper from '@js/common/data/store_helper'; +import { keysEqual } from '@js/common/data/utils'; import { toComparable } from '@js/core/utils/data'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -import dataQuery from '@js/data/query'; -import storeHelper from '@js/data/store_helper'; -// @ts-expect-error -import { keysEqual } from '@js/data/utils'; import dataGridCore from '../m_core'; import { createGroupFilter } from '../m_utils'; @@ -288,6 +287,7 @@ export class GroupingHelper extends GroupingHelperCore { if (groupCount) { let { data } = options; + // @ts-expect-error const query = dataQuery(data); storeHelper.multiLevelGroup(query, groups).enumerate().done((groupedData) => { data = groupedData; diff --git a/packages/devextreme/js/__internal/grids/data_grid/m_aggregate_calculator.ts b/packages/devextreme/js/__internal/grids/data_grid/m_aggregate_calculator.ts index 89a0e7cb35d7..4c9f0afb875c 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/m_aggregate_calculator.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/m_aggregate_calculator.ts @@ -1,9 +1,7 @@ +import { errors } from '@js/common/data/errors'; +import { aggregators } from '@js/common/data/utils'; import { compileGetter } from '@js/core/utils/data'; import { isFunction } from '@js/core/utils/type'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -// @ts-expect-error -import { aggregators } from '@js/data/utils'; function depthFirstSearch(i, depth, root, callback) { let j = 0; diff --git a/packages/devextreme/js/__internal/grids/data_grid/m_utils.ts b/packages/devextreme/js/__internal/grids/data_grid/m_utils.ts index cb7600b999ef..0d2a9d97bc6a 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/m_utils.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/m_utils.ts @@ -1,5 +1,4 @@ -// @ts-expect-error -import { normalizeSortingInfo } from '@js/data/utils'; +import { normalizeSortingInfo } from '@js/common/data/utils'; import gridCoreUtils from '@ts/grids/grid_core/m_utils'; export function createGroupFilter(path, storeLoadOptions) { diff --git a/packages/devextreme/js/__internal/grids/data_grid/summary/m_summary.ts b/packages/devextreme/js/__internal/grids/data_grid/summary/m_summary.ts index 2374ed7fb45b..307de0b4286c 100644 --- a/packages/devextreme/js/__internal/grids/data_grid/summary/m_summary.ts +++ b/packages/devextreme/js/__internal/grids/data_grid/summary/m_summary.ts @@ -1,4 +1,8 @@ /* eslint-disable max-classes-per-file */ +import messageLocalization from '@js/common/core/localization/message'; +import dataQuery from '@js/common/data/query'; +import storeHelper from '@js/common/data/store_helper'; +import { normalizeSortingInfo } from '@js/common/data/utils'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { compileGetter } from '@js/core/utils/data'; @@ -8,11 +12,6 @@ import { isDefined, isEmptyObject, isFunction, isPlainObject, isString, } from '@js/core/utils/type'; -import dataQuery from '@js/data/query'; -import storeHelper from '@js/data/store_helper'; -// @ts-expect-error -import { normalizeSortingInfo } from '@js/data/utils'; -import messageLocalization from '@js/localization/message'; import errors from '@js/ui/widget/ui.errors'; import type { DataController } from '@ts/grids/grid_core/data_controller/m_data_controller'; import type DataSourceAdapter from '@ts/grids/grid_core/data_source_adapter/m_data_source_adapter'; @@ -128,6 +127,7 @@ const sortGroupsBySummaryCore = function (items, groups, sortByGroups) { let query; if (group && sorts && sorts.length) { + // @ts-expect-error query = dataQuery(items); each(sorts, function (index) { if (index === 0) { @@ -340,6 +340,7 @@ const dataSourceAdapterExtender = (Base: ModuleType) => class } private sortLastLevelGroupItems(items, groups, paths) { + // @ts-expect-error const groupedItems = storeHelper.multiLevelGroup(dataQuery(items), groups).toArray(); let result = []; diff --git a/packages/devextreme/js/__internal/grids/grid_core/adaptivity/m_adaptivity.ts b/packages/devextreme/js/__internal/grids/grid_core/adaptivity/m_adaptivity.ts index 2397d606f47d..f4b44409b835 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/adaptivity/m_adaptivity.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/adaptivity/m_adaptivity.ts @@ -1,5 +1,10 @@ /* eslint-disable @typescript-eslint/method-signature-style */ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import Guid from '@js/core/guid'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -10,11 +15,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getWidth } from '@js/core/utils/size'; import { isDefined, isString } from '@js/core/utils/type'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Form from '@js/ui/form'; import { isMaterial } from '@js/ui/themes'; import type { ResizingController } from '@ts/grids/grid_core/views/m_grid_view'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/column_chooser/m_column_chooser.ts b/packages/devextreme/js/__internal/grids/grid_core/column_chooser/m_column_chooser.ts index 009f18226d47..e36d2a2cb89d 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/column_chooser/m_column_chooser.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/column_chooser/m_column_chooser.ts @@ -1,4 +1,5 @@ /* eslint-disable max-classes-per-file */ +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { deferUpdate } from '@js/core/utils/common'; @@ -6,7 +7,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getOuterHeight, getOuterWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import Popup from '@js/ui/popup/ui.popup'; // @ts-expect-error diff --git a/packages/devextreme/js/__internal/grids/grid_core/column_fixing/m_column_fixing.ts b/packages/devextreme/js/__internal/grids/grid_core/column_fixing/m_column_fixing.ts index 7e5c3b6e8a85..10d20bad13ea 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/column_fixing/m_column_fixing.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/column_fixing/m_column_fixing.ts @@ -1,7 +1,10 @@ /* eslint-disable max-classes-per-file */ // TODO Move DataGrid's summary methods to the DataGrid // TODO Move virtual scrolling related methods to the virtual_scrolling -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as wheelEventName } from '@js/common/core/events/core/wheel'; +import messageLocalization from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import browser from '@js/core/utils/browser'; @@ -11,9 +14,6 @@ import { getBoundingRect } from '@js/core/utils/position'; import { getOuterWidth } from '@js/core/utils/size'; import { setWidth } from '@js/core/utils/style'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as wheelEventName } from '@js/events/core/wheel'; -import messageLocalization from '@js/localization/message'; import Scrollable from '@js/ui/scroll_view/ui.scrollable'; import type { EditorFactory } from '@ts/grids/grid_core/editor_factory/m_editor_factory'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/column_headers/m_column_headers.ts b/packages/devextreme/js/__internal/grids/grid_core/column_headers/m_column_headers.ts index bbd921c1439e..b3b267cbc9a7 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/column_headers/m_column_headers.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/column_headers/m_column_headers.ts @@ -1,3 +1,5 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import messageLocalization from '@js/common/core/localization/message'; import domAdapter from '@js/core/dom_adapter'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -5,8 +7,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getHeight } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import messageLocalization from '@js/localization/message'; import type { HeaderFilterController } from '@ts/grids/grid_core/header_filter/m_header_filter'; import type { HeaderPanel } from '@ts/grids/grid_core/header_panel/m_header_panel'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts b/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts index 9c656763152e..053f199517be 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts @@ -1,4 +1,8 @@ /* eslint-disable prefer-destructuring */ +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; +import { DataSource } from '@js/common/data/data_source/data_source'; +import { normalizeDataSourceOptions } from '@js/common/data/data_source/utils'; import type { ColumnBase } from '@js/common/grids'; import config from '@js/core/config'; import $ from '@js/core/renderer'; @@ -14,10 +18,6 @@ import { } from '@js/core/utils/type'; import variableWrapper from '@js/core/utils/variable_wrapper'; import Store from '@js/data/abstract_store'; -import { DataSource } from '@js/data/data_source/data_source'; -import { normalizeDataSourceOptions } from '@js/data/data_source/utils'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import filterUtils from '@js/ui/shared/filtering'; import errors from '@js/ui/widget/ui.errors'; import inflector from '@ts/core/utils/m_inflector'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller_utils.ts b/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller_utils.ts index ca081854f989..8753c2518ede 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller_utils.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller_utils.ts @@ -1,4 +1,5 @@ /* eslint-disable prefer-destructuring */ +import numberLocalization from '@js/common/core/localization/number'; import { normalizeIndexes } from '@js/core/utils/array'; import { equalByValue } from '@js/core/utils/common'; import { compileGetter, compileSetter } from '@js/core/utils/data'; @@ -11,7 +12,6 @@ import { isDefined, isFunction, isNumeric, isObject, isString, type, } from '@js/core/utils/type'; import variableWrapper from '@js/core/utils/variable_wrapper'; -import numberLocalization from '@js/localization/number'; import { HIDDEN_COLUMNS_WIDTH } from '../adaptivity/const'; import gridCoreUtils from '../m_utils'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.ts b/packages/devextreme/js/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.ts index e51c32750e9f..be6be7f5cd72 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.ts @@ -1,5 +1,13 @@ /* eslint-disable max-classes-per-file */ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + end as dragEventEnd, + move as dragEventMove, + start as dragEventStart, +} from '@js/common/core/events/drag'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, eventData as getEventData, isTouchEvent } from '@js/common/core/events/utils/index'; import domAdapter from '@js/core/dom_adapter'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -12,14 +20,6 @@ import { setHeight, setWidth, } from '@js/core/utils/size'; import { isDefined, isObject, isString } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { - end as dragEventEnd, - move as dragEventMove, - start as dragEventStart, -} from '@js/events/drag'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, eventData as getEventData, isTouchEvent } from '@js/events/utils/index'; import swatchContainer from '@js/ui/widget/swatch_container'; import type { EditorFactory } from '@ts/grids/grid_core/editor_factory/m_editor_factory'; import type { ModuleType } from '@ts/grids/grid_core/m_types'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_controller.ts b/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_controller.ts index 1512ba48ea41..ce924bf71a0e 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_controller.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_controller.ts @@ -1,4 +1,6 @@ /* eslint-disable @typescript-eslint/method-signature-style */ +import ArrayStore from '@js/common/data/array_store'; +import { CustomStore } from '@js/common/data/custom_store'; import $ from '@js/core/renderer'; import { findChanges } from '@js/core/utils/array_compare'; import { deferRender, equalByValue } from '@js/core/utils/common'; @@ -6,8 +8,6 @@ import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isObject } from '@js/core/utils/type'; -import ArrayStore from '@js/data/array_store'; -import CustomStore from '@js/data/custom_store'; import errors from '@js/ui/widget/ui.errors'; import type { EditingController } from '@ts/grids/grid_core/editing/m_editing'; import type { EditorFactory } from '@ts/grids/grid_core/editor_factory/m_editor_factory'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_helper_mixin.ts b/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_helper_mixin.ts index 50c95f81ed83..b05b335e9fdd 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_helper_mixin.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/data_controller/m_data_helper_mixin.ts @@ -1,6 +1,6 @@ +import { DataSource } from '@js/common/data/data_source/data_source'; +import { normalizeDataSourceOptions } from '@js/common/data/data_source/utils'; import { extend } from '@js/core/utils/extend'; -import { DataSource } from '@js/data/data_source/data_source'; -import { normalizeDataSourceOptions } from '@js/data/data_source/utils'; import DataController from '@ts/ui/collection/m_data_controller'; import type { Controller } from '../m_modules'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter.ts b/packages/devextreme/js/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter.ts index abc0466823e5..3b6c735dcb9a 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter.ts @@ -1,12 +1,12 @@ /* eslint-disable @typescript-eslint/no-dynamic-delete */ +import ArrayStore from '@js/common/data/array_store'; +import { applyBatch } from '@js/common/data/array_utils'; import Callbacks from '@js/core/utils/callbacks'; import { getKeyHash } from '@js/core/utils/common'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isFunction, isPlainObject } from '@js/core/utils/type'; -import ArrayStore from '@js/data/array_store'; -import { applyBatch } from '@js/data/array_utils'; import modules from '../m_modules'; import gridCoreUtils from '../m_utils'; @@ -529,7 +529,6 @@ export default class DataSourceAdapter extends modules.Controller { options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data); } } - // @ts-expect-error new ArrayStore(options.data).load(loadOptions).done((data) => { options.data = data; if (needStoreCache) { diff --git a/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing.ts b/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing.ts index a8a4617bc2aa..f2b311cfa752 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing.ts @@ -1,4 +1,11 @@ /* eslint-disable @typescript-eslint/no-unused-vars, max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { removeEvent } from '@js/common/core/events/remove'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; +import { createObjectWithChanges } from '@js/common/data/array_utils'; import type { GridsEditMode } from '@js/common/grids'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -17,13 +24,6 @@ import { isDefined, isEmptyObject, isFunction, isObject, } from '@js/core/utils/type'; -import { createObjectWithChanges } from '@js/data/array_utils'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { removeEvent } from '@js/events/remove'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import { confirm } from '@js/ui/dialog'; import { current, isFluent } from '@js/ui/themes'; import domUtils from '@ts/core/utils/m_dom'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_cell_based.ts b/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_cell_based.ts index ce2c2a1936c0..f6a407840b87 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_cell_based.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_cell_based.ts @@ -1,4 +1,10 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import { createObjectWithChanges } from '@js/common/data/array_utils'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; import { deferRender } from '@js/core/utils/common'; @@ -6,12 +12,6 @@ import type { DeferredObj } from '@js/core/utils/deferred'; import { Deferred, when } from '@js/core/utils/deferred'; import { isElementInDom } from '@js/core/utils/dom'; import { isDefined, isString } from '@js/core/utils/type'; -import { createObjectWithChanges } from '@js/data/array_utils'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import type { HeaderPanel } from '@ts/grids/grid_core/header_panel/m_header_panel'; import type { RowsView } from '@ts/grids/grid_core/views/m_rows_view'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_form_based.ts b/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_form_based.ts index 640d8e1c773c..05a530e0f618 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_form_based.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/editing/m_editing_form_based.ts @@ -1,4 +1,6 @@ /* eslint-disable max-classes-per-file */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; import devices from '@js/core/devices'; import Guid from '@js/core/guid'; import type { dxElementWrapper } from '@js/core/renderer'; @@ -9,8 +11,6 @@ import { isElementInDom } from '@js/core/utils/dom'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isString } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; import Button from '@js/ui/button'; import Form from '@js/ui/form'; import Popup from '@js/ui/popup/ui.popup'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/editor_factory/m_editor_factory.ts b/packages/devextreme/js/__internal/grids/grid_core/editor_factory/m_editor_factory.ts index 3eb1bf61695e..61c2c2ec7a26 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/editor_factory/m_editor_factory.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/editor_factory/m_editor_factory.ts @@ -1,5 +1,9 @@ /* eslint-disable @typescript-eslint/method-signature-style */ -import positionUtils from '@js/animation/position'; +import positionUtils from '@js/common/core/animation/position'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, normalizeKeyName } from '@js/common/core/events/utils/index'; import domAdapter from '@js/core/dom_adapter'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -10,10 +14,6 @@ import { getOuterHeight, getOuterWidth, setOuterHeight, setOuterWidth, } from '@js/core/utils/size'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, normalizeKeyName } from '@js/events/utils/index'; import EditorFactoryMixin from '@js/ui/shared/ui.editor_factory_mixin'; import type { ColumnsResizerViewController, @@ -194,7 +194,6 @@ export class EditorFactory extends ViewControllerWithMixin { protected updateFocusOverlaySize($element, position): void { $element.hide(); - // @ts-expect-error const location = positionUtils.calculate($element, extend({ collision: 'fit' }, position)); if (location.h.oversize > 0) { @@ -254,7 +253,6 @@ export class EditorFactory extends ViewControllerWithMixin { }; this.updateFocusOverlaySize(this._$focusOverlay, focusOverlayPosition); - // @ts-expect-error positionUtils.setup(this._$focusOverlay, focusOverlayPosition); this._$focusOverlay.css('visibility', 'visible'); // for ios diff --git a/packages/devextreme/js/__internal/grids/grid_core/error_handling/m_error_handling.ts b/packages/devextreme/js/__internal/grids/grid_core/error_handling/m_error_handling.ts index e3130f6ba24f..d73f533a203c 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/error_handling/m_error_handling.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/error_handling/m_error_handling.ts @@ -1,9 +1,9 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { each } from '@js/core/utils/iterator'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import messageLocalization from '@js/localization/message'; import type { ColumnsController } from '@ts/grids/grid_core/columns_controller/m_columns_controller'; import type { ResizingController } from '@ts/grids/grid_core/views/m_grid_view'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_builder.ts b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_builder.ts index da01a1164d22..ba331eaf8860 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_builder.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_builder.ts @@ -1,6 +1,6 @@ +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import messageLocalization from '@js/localization/message'; import FilterBuilder from '@js/ui/filter_builder'; import Popup from '@js/ui/popup/ui.popup'; import ScrollView from '@js/ui/scroll_view'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_custom_operations.ts b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_custom_operations.ts index b852a5466d81..9a64587d5845 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_custom_operations.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_custom_operations.ts @@ -1,8 +1,8 @@ +import messageLocalization from '@js/common/core/localization/message'; +import { DataSource } from '@js/common/data/data_source/data_source'; import $ from '@js/core/renderer'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; -import { DataSource } from '@js/data/data_source/data_source'; -import messageLocalization from '@js/localization/message'; import errors from '@js/ui/widget/ui.errors'; import { getFilterExpression, isCondition, isGroup, renderValueText, diff --git a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_panel.ts b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_panel.ts index 28085ef378dd..f103c2486d24 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_panel.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_panel.ts @@ -1,10 +1,10 @@ /* eslint-disable max-classes-per-file */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import messageLocalization from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { Deferred, when } from '@js/core/utils/deferred'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import messageLocalization from '@js/localization/message'; import CheckBox from '@js/ui/check_box'; import inflector from '@ts/core/utils/m_inflector'; import { diff --git a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_row.ts b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_row.ts index 55bc1642dd67..496779c3de95 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_row.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/filter/m_filter_row.ts @@ -1,13 +1,13 @@ /* eslint-disable max-classes-per-file */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { normalizeKeyName } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { equalByValue } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { each, map } from '@js/core/utils/iterator'; import { getOuterWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { normalizeKeyName } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Editor from '@js/ui/editor/editor'; import Menu from '@js/ui/menu'; import Overlay from '@js/ui/overlay/ui.overlay'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter.ts b/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter.ts index 8e93098c9c74..9701c24a428c 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter.ts @@ -1,17 +1,17 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; +import { normalizeDataSourceOptions } from '@js/common/data/data_source/utils'; +import dataQuery from '@js/common/data/query'; +import storeHelper from '@js/common/data/store_helper'; import { compileGetter } from '@js/core/utils/data'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getDefaultAlignment } from '@js/core/utils/position'; import { isDefined, isFunction, isObject } from '@js/core/utils/type'; -import { normalizeDataSourceOptions } from '@js/data/data_source/utils'; -import dataQuery from '@js/data/query'; -import storeHelper from '@js/data/store_helper'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import { restoreFocus, saveFocusedElementInfo } from '@js/ui/shared/accessibility'; import filterUtils from '@js/ui/shared/filtering'; import type { ColumnHeadersView } from '@ts/grids/grid_core/column_headers/m_column_headers'; @@ -62,6 +62,7 @@ function ungroupUTCDates(items, dateParts?, dates?) { function convertDataFromUTCToLocal(data, column) { const dates = ungroupUTCDates(data); + // @ts-expect-error const query = dataQuery(dates); const group = gridCoreUtils.getHeaderFilterGroupParameters({ ...column, diff --git a/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter_core.ts b/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter_core.ts index 56b1eed01234..4eaa86385eb8 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter_core.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter_core.ts @@ -2,11 +2,11 @@ import '@ts/ui/list/modules/m_search'; import '@ts/ui/list/modules/m_selection'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isFunction } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import List from '@js/ui/list_light'; import Popup from '@js/ui/popup/ui.popup'; import TreeView from '@js/ui/tree_view'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/header_panel/m_header_panel.ts b/packages/devextreme/js/__internal/grids/grid_core/header_panel/m_header_panel.ts index 9a0565cb7b7d..b89733dfe7f3 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/header_panel/m_header_panel.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/header_panel/m_header_panel.ts @@ -1,9 +1,9 @@ /* eslint-disable max-classes-per-file */ +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { getPathParts } from '@js/core/utils/data'; import { extend } from '@js/core/utils/extend'; import { isDefined, isString } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import type { Properties as ToolbarProperties } from '@js/ui/toolbar'; import Toolbar from '@js/ui/toolbar'; import type { EditingController } from '@ts/grids/grid_core/editing/m_editing'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation.ts b/packages/devextreme/js/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation.ts index a7b43ddb972c..aca95231433f 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation.ts @@ -1,4 +1,13 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { keyboard } from '@js/common/core/events/short'; +import { + addNamespace, + createEvent, + isCommandKeyPressed, +} from '@js/common/core/events/utils/index'; import { noop } from '@js/core//utils/common'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -13,15 +22,6 @@ import { getWidth, } from '@js/core/utils/size'; import { isDeferred, isDefined, isEmptyObject } from '@js/core/utils/type'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { keyboard } from '@js/events/short'; -import { - addNamespace, - createEvent, - isCommandKeyPressed, -} from '@js/events/utils/index'; import * as accessibility from '@js/ui/shared/accessibility'; import { focused } from '@js/ui/widget/selectors'; import type { AdaptiveColumnsController } from '@ts/grids/grid_core/adaptivity/m_adaptivity'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/m_modules.ts b/packages/devextreme/js/__internal/grids/grid_core/m_modules.ts index 33c4b6202543..98b7a1b77786 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/m_modules.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/m_modules.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ /* eslint-disable max-classes-per-file */ /* eslint-disable @typescript-eslint/method-signature-style */ +import messageLocalization from '@js/common/core/localization/message'; import type { Component } from '@js/core/component'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -10,7 +11,6 @@ import { grep } from '@js/core/utils/common'; import { each } from '@js/core/utils/iterator'; import { isFunction } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import errors from '@js/ui/widget/ui.errors'; import type { diff --git a/packages/devextreme/js/__internal/grids/grid_core/m_utils.ts b/packages/devextreme/js/__internal/grids/grid_core/m_utils.ts index ed1b02a6e6f8..8b3916fd8a25 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/m_utils.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/m_utils.ts @@ -1,5 +1,9 @@ // @ts-check +import eventsEngine from '@js/common/core/events/core/events_engine'; +import DataSource from '@js/common/data/data_source'; +import { normalizeDataSourceOptions } from '@js/common/data/data_source/utils'; +import { normalizeSortingInfo as normalizeSortingInfoUtility } from '@js/common/data/utils'; import $ from '@js/core/renderer'; import { equalByValue } from '@js/core/utils/common'; import { toComparable } from '@js/core/utils/data'; @@ -12,11 +16,6 @@ import { format } from '@js/core/utils/string'; import { isDefined, isFunction, isString } from '@js/core/utils/type'; import variableWrapper from '@js/core/utils/variable_wrapper'; import { getWindow } from '@js/core/utils/window'; -import { DataSource } from '@js/data/data_source/data_source'; -import { normalizeDataSourceOptions } from '@js/data/data_source/utils'; -// @ts-expect-error -import { normalizeSortingInfo as normalizeSortingInfoUtility } from '@js/data/utils'; -import eventsEngine from '@js/events/core/events_engine'; import formatHelper from '@js/format_helper'; import LoadPanel from '@js/ui/load_panel'; import sharedFiltering from '@js/ui/shared/filtering'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/master_detail/m_master_detail.ts b/packages/devextreme/js/__internal/grids/grid_core/master_detail/m_master_detail.ts index b8c03fb566b3..abfb08354af7 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/master_detail/m_master_detail.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/master_detail/m_master_detail.ts @@ -1,4 +1,5 @@ /* eslint-disable max-classes-per-file */ +import messageLocalization from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; // @ts-expect-error @@ -7,7 +8,6 @@ import { Deferred, when } from '@js/core/utils/deferred'; import { each } from '@js/core/utils/iterator'; import { getHeight, getWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import type { ColumnsController } from '@ts/grids/grid_core/columns_controller/m_columns_controller'; import type { DataController } from '@ts/grids/grid_core/data_controller/m_data_controller'; import type { ModuleType } from '@ts/grids/grid_core/m_types'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/pager/m_pager.ts b/packages/devextreme/js/__internal/grids/grid_core/pager/m_pager.ts index 7f7a91c8d8c8..3aa5a32261dc 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/pager/m_pager.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/pager/m_pager.ts @@ -1,6 +1,6 @@ +import messageLocalization from '@js/common/core/localization/message'; import { isDefined } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import Pagination from '@ts/pagination/wrappers/pagination'; import modules from '../m_modules'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/search/m_search.ts b/packages/devextreme/js/__internal/grids/grid_core/search/m_search.ts index f88bd74c25cc..bf39e10ba154 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/search/m_search.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/search/m_search.ts @@ -1,10 +1,10 @@ /* eslint-disable max-classes-per-file */ /* eslint-disable @typescript-eslint/method-signature-style */ +import messageLocalization from '@js/common/core/localization/message'; +import dataQuery from '@js/common/data/query'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; import { compileGetter, toComparable } from '@js/core/utils/data'; -import dataQuery from '@js/data/query'; -import messageLocalization from '@js/localization/message'; import type { Column } from '../columns_controller/m_columns_controller'; import type { DataController, Filter } from '../data_controller/m_data_controller'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/selection/m_selection.ts b/packages/devextreme/js/__internal/grids/grid_core/selection/m_selection.ts index f285d250cc38..0c91b098fa77 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/selection/m_selection.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/selection/m_selection.ts @@ -1,4 +1,10 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import { addNamespace, isCommandKeyPressed } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; +import { applyBatch } from '@js/common/data/array_utils'; import $ from '@js/core/renderer'; import { equalByValue } from '@js/core/utils/common'; import type { DeferredObj } from '@js/core/utils/deferred'; @@ -6,12 +12,6 @@ import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined } from '@js/core/utils/type'; -import { applyBatch } from '@js/data/array_utils'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import { addNamespace, isCommandKeyPressed } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import errors from '@js/ui/widget/ui.errors'; import supportUtils from '@ts/core/utils/m_support'; import type { ColumnHeadersView } from '@ts/grids/grid_core/column_headers/m_column_headers'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting.ts b/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting.ts index 9bdd1b6867c7..a9c53b297c68 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting.ts @@ -1,10 +1,10 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, isCommandKeyPressed } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { isDefined } from '@js/core/utils/type'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, isCommandKeyPressed } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import type { ColumnHeadersView } from '@ts/grids/grid_core/column_headers/m_column_headers'; import type { HeaderPanel } from '@ts/grids/grid_core/header_panel/m_header_panel'; import type { ModuleType } from '@ts/grids/grid_core/m_types'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting_mixin.ts b/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting_mixin.ts index 089620c6a2db..6e47646043a8 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting_mixin.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/sorting/m_sorting_mixin.ts @@ -1,6 +1,6 @@ +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { isDefined } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import type { ModuleType } from '@ts/grids/grid_core/m_types'; const SORT_CLASS = 'dx-sort'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/state_storing/m_state_storing_core.ts b/packages/devextreme/js/__internal/grids/grid_core/state_storing/m_state_storing_core.ts index 62a492635cf6..81e653e05061 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/state_storing/m_state_storing_core.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/state_storing/m_state_storing_core.ts @@ -1,3 +1,4 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; // @ts-expect-error import { fromPromise } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; @@ -5,7 +6,6 @@ import { each } from '@js/core/utils/iterator'; import { sessionStorage } from '@js/core/utils/storage'; import { isDefined, isEmptyObject, isPlainObject } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; import errors from '@js/ui/widget/ui.errors'; import type { ExportController } from '@ts/grids/data_grid/export/m_export'; import type { ColumnsController } from '@ts/grids/grid_core/columns_controller/m_columns_controller'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/validating/m_validating.ts b/packages/devextreme/js/__internal/grids/grid_core/validating/m_validating.ts index e57de7fe8e24..5cdf2905f603 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/validating/m_validating.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/validating/m_validating.ts @@ -1,5 +1,9 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable max-classes-per-file */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import messageLocalization from '@js/common/core/localization/message'; +import { createObjectWithChanges } from '@js/common/data/array_utils'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import browser from '@js/core/utils/browser'; @@ -14,10 +18,6 @@ import { } from '@js/core/utils/size'; import { encodeHtml } from '@js/core/utils/string'; import { isDefined, isEmptyObject, isObject } from '@js/core/utils/type'; -import { createObjectWithChanges } from '@js/data/array_utils'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import LoadIndicator from '@js/ui/load_indicator'; import Overlay from '@js/ui/overlay/ui.overlay'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/views/m_columns_view.ts b/packages/devextreme/js/__internal/grids/grid_core/views/m_columns_view.ts index 3f660fd3ec58..29a24973e8bd 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/views/m_columns_view.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/views/m_columns_view.ts @@ -1,4 +1,9 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as dblclickEvent } from '@js/common/core/events/double_click'; +import pointerEvents from '@js/common/core/events/pointer'; +import { removeEvent } from '@js/common/core/events/remove'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; import { data as elementData } from '@js/core/element_data'; @@ -21,11 +26,6 @@ import { isRenderer, isString, } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as dblclickEvent } from '@js/events/double_click'; -import pointerEvents from '@js/events/pointer'; -import { removeEvent } from '@js/events/remove'; import supportUtils from '@ts/core/utils/m_support'; import type { AdaptiveColumnsController } from '@ts/grids/grid_core/adaptivity/m_adaptivity'; import type { ColumnChooserController, ColumnChooserView } from '@ts/grids/grid_core/column_chooser/m_column_chooser'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/views/m_grid_view.ts b/packages/devextreme/js/__internal/grids/grid_core/views/m_grid_view.ts index 85818fb3a0ef..738fcdf312b7 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/views/m_grid_view.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/views/m_grid_view.ts @@ -1,4 +1,5 @@ /* eslint-disable max-classes-per-file */ +import messageLocalization from '@js/common/core/localization/message'; import domAdapter from '@js/core/dom_adapter'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -11,7 +12,6 @@ import { getBoundingRect } from '@js/core/utils/position'; import { getHeight, getWidth } from '@js/core/utils/size'; import { isDefined, isNumeric, isString } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import * as accessibility from '@js/ui/shared/accessibility'; import type { EditorFactory } from '@ts/grids/grid_core/editor_factory/m_editor_factory'; import { A11yStatusContainerComponent } from '@ts/grids/grid_core/views/a11y_status_container_component'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/views/m_rows_view.ts b/packages/devextreme/js/__internal/grids/grid_core/views/m_rows_view.ts index 4fead939fd26..58645a2fb7e5 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/views/m_rows_view.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/views/m_rows_view.ts @@ -1,5 +1,8 @@ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ /* eslint-disable @typescript-eslint/no-unused-vars */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; +import messageLocalization from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import browser from '@js/core/utils/browser'; @@ -13,9 +16,6 @@ import { isEmpty } from '@js/core/utils/string'; import { setHeight } from '@js/core/utils/style'; import { isDefined, isNumeric, isString } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; -import messageLocalization from '@js/localization/message'; import Scrollable from '@js/ui/scroll_view/ui.scrollable'; import type { ColumnHeadersView } from '@ts/grids/grid_core/column_headers/m_column_headers'; import type { diff --git a/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core.ts b/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core.ts index 94c528bfed7f..6126c458ccc9 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core.ts @@ -1,4 +1,5 @@ -import positionUtils from '@js/animation/position'; +import positionUtils from '@js/common/core/animation/position'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import $ from '@js/core/renderer'; import browser from '@js/core/utils/browser'; import Callbacks from '@js/core/utils/callbacks'; @@ -6,7 +7,6 @@ import { Deferred } from '@js/core/utils/deferred'; import { each } from '@js/core/utils/iterator'; import { isDefined } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; import gridCoreUtils from '../m_utils'; import { VirtualDataLoader } from '../virtual_data_loader/m_virtual_data_loader'; @@ -27,7 +27,6 @@ function subscribeToExternalScrollers($element, scrollChangedHandler, $targetEle function getElementOffset(scrollable) { const $scrollableElement = scrollable.element ? scrollable.$element() : scrollable; - // @ts-expect-error const scrollableOffset = positionUtils.offset($scrollableElement); if (!scrollableOffset) { diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/data_source/m_data_source.ts b/packages/devextreme/js/__internal/grids/pivot_grid/data_source/m_data_source.ts index e918861e9f53..ce4da7a1481d 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/data_source/m_data_source.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/data_source/m_data_source.ts @@ -1,3 +1,4 @@ +import { normalizeDataSourceOptions } from '@js/common/data/data_source/utils'; import Class from '@js/core/class'; import { EventsStrategy } from '@js/core/events_strategy'; import { normalizeIndexes } from '@js/core/utils/array'; @@ -9,7 +10,6 @@ import { isString, } from '@js/core/utils/type'; import Store from '@js/data/abstract_store'; -import { normalizeDataSourceOptions } from '@js/data/data_source/utils'; import commonUtils from '@ts/core/utils/m_common'; import inflector from '@ts/core/utils/m_inflector'; diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/export/m_export.ts b/packages/devextreme/js/__internal/grids/pivot_grid/export/m_export.ts index 2eb856688eaa..62779c70e2be 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/export/m_export.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/export/m_export.ts @@ -1,3 +1,4 @@ +import localizationNumber from '@js/common/core/localization/number'; import Class from '@js/core/class'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; @@ -6,7 +7,6 @@ import { getDefaultAlignment } from '@js/core/utils/position'; import { isDefined, isFunction } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; import formatHelper from '@js/format_helper'; -import localizationNumber from '@js/localization/number'; import { prepareItems } from '@ts/grids/grid_core/m_export'; const DEFAULT_DATA_TYPE = 'string'; diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser.ts b/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser.ts index 8de13c1f0cf1..91a449e64ae4 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser.ts @@ -1,5 +1,6 @@ import '../data_source/m_data_source'; +import localizationMessage from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; @@ -7,7 +8,6 @@ import { getImageContainer } from '@js/core/utils/icon'; import { each } from '@js/core/utils/iterator'; import { isDefined } from '@js/core/utils/type'; import { hasWindow as hasWindowFn } from '@js/core/utils/window'; -import localizationMessage from '@js/localization/message'; import ContextMenu from '@js/ui/context_menu'; import TreeView from '@js/ui/tree_view'; diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.ts b/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.ts index f5529b5637a7..ff723ee78737 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.ts @@ -1,14 +1,14 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import localizationMessage from '@js/common/core/localization/message'; +import ArrayStore from '@js/common/data/array_store'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each, map } from '@js/core/utils/iterator'; import { isDefined } from '@js/core/utils/type'; -import ArrayStore from '@js/data/array_store'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import localizationMessage from '@js/localization/message'; import Widget from '@js/ui/widget/ui.widget'; import columnStateMixin from '@ts/grids/grid_core/column_state_mixin/m_column_state_mixin'; import { diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/local_store/m_local_store.ts b/packages/devextreme/js/__internal/grids/pivot_grid/local_store/m_local_store.ts index 8bf174c771ab..174166bf6091 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/local_store/m_local_store.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/local_store/m_local_store.ts @@ -1,3 +1,9 @@ +import ArrayStore from '@js/common/data/array_store'; +import { CustomStore } from '@js/common/data/custom_store'; +import { DataSource } from '@js/common/data/data_source/data_source'; +import dataQuery from '@js/common/data/query'; +// eslint-disable-next-line import/extensions +import { aggregators } from '@js/common/data/utils'; import Class from '@js/core/class'; import { noop } from '@js/core/utils/common'; import { compileGetter, toComparable } from '@js/core/utils/data'; @@ -5,13 +11,6 @@ import dateSerialization from '@js/core/utils/date_serialization'; import { Deferred, when } from '@js/core/utils/deferred'; import { each } from '@js/core/utils/iterator'; import { isDefined, isNumeric, isString } from '@js/core/utils/type'; -import ArrayStore from '@js/data/array_store'; -import CustomStore from '@js/data/custom_store'; -import { DataSource } from '@js/data/data_source/data_source'; -import dataQuery from '@js/data/query'; -// eslint-disable-next-line import/extensions -// @ts-expect-error -import { aggregators } from '@js/data/utils'; import { discoverObjectFields, @@ -425,6 +424,7 @@ const LocalStore = Class.inherit((function () { if (dataSource.store() instanceof CustomStore && filter) { filter = processFilter(filter, fieldSelectors); + // @ts-expect-error return dataQuery(dataSource.items()).filter(filter).toArray(); } diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/m_widget.ts b/packages/devextreme/js/__internal/grids/pivot_grid/m_widget.ts index 3253b006ca7a..903711ff9f93 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/m_widget.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/m_widget.ts @@ -1,3 +1,7 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import localizationMessage from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; @@ -12,10 +16,6 @@ import { import { format as formatString } from '@js/core/utils/string'; import { isDefined } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import localizationMessage from '@js/localization/message'; import type { Properties } from '@js/ui/button'; import Button from '@js/ui/button'; import ContextMenu from '@js/ui/context_menu'; diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/m_widget_utils.ts b/packages/devextreme/js/__internal/grids/pivot_grid/m_widget_utils.ts index 697ddbd57e77..45ecb4607f9f 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/m_widget_utils.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/m_widget_utils.ts @@ -1,3 +1,6 @@ +import localizationDate from '@js/common/core/localization/date'; +import ArrayStore from '@js/common/data/array_store'; +import { DataSource } from '@js/common/data/data_source/data_source'; import domAdapter from '@js/core/dom_adapter'; import coreAjaxUtils from '@js/core/utils/ajax'; import callOnce from '@js/core/utils/call_once'; @@ -6,10 +9,7 @@ import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each, map } from '@js/core/utils/iterator'; import { isDefined, isNumeric, type } from '@js/core/utils/type'; -import ArrayStore from '@js/data/array_store'; -import { DataSource } from '@js/data/data_source/data_source'; import formatHelper from '@js/format_helper'; -import localizationDate from '@js/localization/date'; import { CLASSES } from './const'; diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/remote_store/m_remote_store.ts b/packages/devextreme/js/__internal/grids/pivot_grid/remote_store/m_remote_store.ts index 6e480b6e7a35..2ad0119a8873 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/remote_store/m_remote_store.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/remote_store/m_remote_store.ts @@ -1,11 +1,11 @@ +import { DataSource } from '@js/common/data/data_source/data_source'; +import { normalizeLoadResult } from '@js/common/data/data_source/utils'; import Class from '@js/core/class'; import dateSerialization from '@js/core/utils/date_serialization'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isString } from '@js/core/utils/type'; -import { DataSource } from '@js/data/data_source/data_source'; -import { normalizeLoadResult } from '@js/data/data_source/utils'; import pivotGridUtils, { capitalizeFirstLetter, diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/sortable/m_sortable.ts b/packages/devextreme/js/__internal/grids/pivot_grid/sortable/m_sortable.ts index 9b2599eb8b60..b8d8acbac108 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/sortable/m_sortable.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/sortable/m_sortable.ts @@ -1,3 +1,13 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + drop as dragEventDrop, + end as dragEventEnd, + enter as dragEventEnter, + leave as dragEventLeave, + move as dragEventMove, + start as dragEventStart, +} from '@js/common/core/events/drag'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import DOMComponent from '@js/core/dom_component'; @@ -9,16 +19,6 @@ import { setWidth, } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { - drop as dragEventDrop, - end as dragEventEnd, - enter as dragEventEnter, - leave as dragEventLeave, - move as dragEventMove, - start as dragEventStart, -} from '@js/events/drag'; -import { addNamespace } from '@js/events/utils/index'; import swatchContainer from '@js/ui/widget/swatch_container'; const { getSwatchContainer } = swatchContainer; diff --git a/packages/devextreme/js/__internal/grids/pivot_grid/xmla_store/m_xmla_store.ts b/packages/devextreme/js/__internal/grids/pivot_grid/xmla_store/m_xmla_store.ts index 0c169ba4ca76..fffca92b9638 100644 --- a/packages/devextreme/js/__internal/grids/pivot_grid/xmla_store/m_xmla_store.ts +++ b/packages/devextreme/js/__internal/grids/pivot_grid/xmla_store/m_xmla_store.ts @@ -1,3 +1,5 @@ +import { getLanguageId } from '@js/common/core/localization/language_codes'; +import { errors } from '@js/common/data/errors'; import Class from '@js/core/class'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; @@ -9,9 +11,6 @@ import { isDefined, isFunction, isNumeric, isString, } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -// @ts-expect-error -import { errors } from '@js/data/errors'; -import { getLanguageId } from '@js/localization/language_codes'; import pivotGridUtils, { foreachTree, @@ -70,7 +69,7 @@ const XmlaStore = Class.inherit((function () { xml = undefined; } if (!xml || xml.getElementsByTagName('parsererror').length || xml.childNodes.length === 0) { - throw new errors.Error('E4023', text); + throw errors.Error('E4023', text); } } catch (e: any) { deferred.reject({ @@ -833,7 +832,7 @@ const XmlaStore = Class.inherit((function () { if (errorElement.length) { const description = errorElement.attr('Description'); - const error = new errors.Error('E4000', description); + const error = errors.Error('E4000', description); errors.log('E4000', description); return error; } diff --git a/packages/devextreme/js/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.ts b/packages/devextreme/js/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.ts index 68c1d7fef938..edb94858ebfa 100644 --- a/packages/devextreme/js/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.ts +++ b/packages/devextreme/js/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.ts @@ -1,13 +1,13 @@ +import ArrayStore from '@js/common/data/array_store'; +import { createObjectWithChanges } from '@js/common/data/array_utils'; +import query from '@js/common/data/query'; +import storeHelper from '@js/common/data/store_helper'; import { equalByValue } from '@js/core/utils/common'; import { compileGetter, compileSetter } from '@js/core/utils/data'; import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isFunction } from '@js/core/utils/type'; -import ArrayStore from '@js/data/array_store'; -import { createObjectWithChanges } from '@js/data/array_utils'; -import query from '@js/data/query'; -import storeHelper from '@js/data/store_helper'; import errors from '@js/ui/widget/ui.errors'; import DataSourceAdapter from '@ts/grids/grid_core/data_source_adapter/m_data_source_adapter'; import gridCoreUtils from '@ts/grids/grid_core/m_utils'; @@ -36,6 +36,7 @@ const getChildKeys = function (that, keys) { // @ts-expect-error const applySorting = (data: any[], sort: any): any => queryByOptions( + // @ts-expect-error query(data), { sort, @@ -436,6 +437,7 @@ class DataSourceAdapterTreeList extends DataSourceAdapter { this.loadFromStore(loadOptions, store).done((loadedData) => { if (loadedData.length) { if (needLocalFiltering) { + // @ts-expect-error loadedData = query(loadedData).filter(filter).toArray(); } this._loadParentsOrChildren(concatLoadedData(loadedData), options, needChildren).done(d.resolve).fail(d.reject); diff --git a/packages/devextreme/js/__internal/grids/tree_list/editing/m_editing.ts b/packages/devextreme/js/__internal/grids/tree_list/editing/m_editing.ts index 2bf1d2d645c0..3473089fbc3a 100644 --- a/packages/devextreme/js/__internal/grids/tree_list/editing/m_editing.ts +++ b/packages/devextreme/js/__internal/grids/tree_list/editing/m_editing.ts @@ -1,11 +1,11 @@ /* eslint-disable max-classes-per-file */ import '../module_not_extended/editor_factory'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { isDefined } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import errors from '@js/ui/widget/ui.errors'; import type { DataController } from '@ts/grids/grid_core/data_controller/m_data_controller'; import { dataControllerEditingExtenderMixin, editingModule } from '@ts/grids/grid_core/editing/m_editing'; diff --git a/packages/devextreme/js/__internal/grids/tree_list/rows/m_rows.ts b/packages/devextreme/js/__internal/grids/tree_list/rows/m_rows.ts index 359bad272b51..d6dee9e48511 100644 --- a/packages/devextreme/js/__internal/grids/tree_list/rows/m_rows.ts +++ b/packages/devextreme/js/__internal/grids/tree_list/rows/m_rows.ts @@ -1,7 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; import $ from '@js/core/renderer'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; import { rowsModule, RowsView } from '@ts/grids/grid_core/views/m_rows_view'; import treeListCore from '../m_core'; diff --git a/packages/devextreme/js/__internal/m_draggable.ts b/packages/devextreme/js/__internal/m_draggable.ts index 0b9dddc299f6..effe2a324beb 100644 --- a/packages/devextreme/js/__internal/m_draggable.ts +++ b/packages/devextreme/js/__internal/m_draggable.ts @@ -1,5 +1,15 @@ -import positionUtils from '@js/animation/position'; -import { locate, move } from '@js/animation/translator'; +import positionUtils from '@js/common/core/animation/position'; +import { locate, move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + end as dragEventEnd, + enter as dragEventEnter, + leave as dragEventLeave, + move as dragEventMove, + start as dragEventStart, +} from '@js/common/core/events/drag'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, needSkipEvent } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import DOMComponent from '@js/core/dom_component'; @@ -22,16 +32,6 @@ import { quadToObject } from '@js/core/utils/string'; import { isFunction, isNumeric, isObject } from '@js/core/utils/type'; import { value as viewPort } from '@js/core/utils/view_port'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { - end as dragEventEnd, - enter as dragEventEnter, - leave as dragEventLeave, - move as dragEventMove, - start as dragEventStart, -} from '@js/events/drag'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, needSkipEvent } from '@js/events/utils/index'; import Animator from './ui/scroll_view/m_animator'; diff --git a/packages/devextreme/js/__internal/m_sortable.ts b/packages/devextreme/js/__internal/m_sortable.ts index 781a83d89ebf..32c3ec3737a3 100644 --- a/packages/devextreme/js/__internal/m_sortable.ts +++ b/packages/devextreme/js/__internal/m_sortable.ts @@ -1,5 +1,6 @@ -import fx from '@js/animation/fx'; -import { resetPosition } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { resetPosition } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import registerComponent from '@js/core/component_registrator'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; @@ -10,7 +11,6 @@ import { getHeight, getOuterHeight, getOuterWidth, getWidth, } from '@js/core/utils/size'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; import Draggable from '@ts/m_draggable'; import { isDefined } from '../core/utils/type'; diff --git a/packages/devextreme/js/__internal/pagination/common/base_pagination_props.ts b/packages/devextreme/js/__internal/pagination/common/base_pagination_props.ts index 7e2b48c1b369..bddc0fa54a79 100644 --- a/packages/devextreme/js/__internal/pagination/common/base_pagination_props.ts +++ b/packages/devextreme/js/__internal/pagination/common/base_pagination_props.ts @@ -2,7 +2,7 @@ import type { DisplayMode } from '@js/common'; import type { PageSize } from '@js/ui/pagination_types'; import { BaseWidgetDefaultProps, type BaseWidgetProps } from '@ts/core/r1/base_props'; -import messageLocalization from '../../../localization/message'; +import messageLocalization from '../../../common/core/localization/message'; import type { EventCallback } from '../../core/r1/event_callback'; export interface BasePaginationProps extends BaseWidgetProps { diff --git a/packages/devextreme/js/__internal/pagination/drop_down_editors/select_box.tsx b/packages/devextreme/js/__internal/pagination/drop_down_editors/select_box.tsx index bce6e0ee9111..788467c16cce 100644 --- a/packages/devextreme/js/__internal/pagination/drop_down_editors/select_box.tsx +++ b/packages/devextreme/js/__internal/pagination/drop_down_editors/select_box.tsx @@ -1,9 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { BaseInfernoComponent } from '@devextreme/runtime/inferno'; +import type { DataSource, DataSourceOptions } from '../../../common/data'; import type Store from '../../../data/abstract_store'; -import type DataSource from '../../../data/data_source'; -import type { Options as DataSourceOptions } from '../../../data/data_source'; import LegacySelectBox from '../../../ui/select_box'; import { DomComponentWrapper } from '../../core/r1/dom_component_wrapper'; import type { EventCallback } from '../../core/r1/event_callback'; diff --git a/packages/devextreme/js/__internal/pagination/utils/compatibility_utils.ts b/packages/devextreme/js/__internal/pagination/utils/compatibility_utils.ts index 4881cc6d2d46..74328d9776ca 100644 --- a/packages/devextreme/js/__internal/pagination/utils/compatibility_utils.ts +++ b/packages/devextreme/js/__internal/pagination/utils/compatibility_utils.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable @typescript-eslint/no-unsafe-return */ -import messageLocalization from '@js/localization/message'; +import messageLocalization from '@js/common/core/localization/message'; import type { PaginationConfigContextValue } from '../common/pagination_config_context'; import { PaginationConfigContext } from '../common/pagination_config_context'; diff --git a/packages/devextreme/js/__internal/scheduler/appointment_popup/m_form.ts b/packages/devextreme/js/__internal/scheduler/appointment_popup/m_form.ts index a96877ded246..1e8803c7d47f 100644 --- a/packages/devextreme/js/__internal/scheduler/appointment_popup/m_form.ts +++ b/packages/devextreme/js/__internal/scheduler/appointment_popup/m_form.ts @@ -4,13 +4,13 @@ import '@js/ui/tag_box'; import '@js/ui/switch'; import '@js/ui/select_box'; +import messageLocalization from '@js/common/core/localization/message'; +import DataSource from '@js/common/data/data_source'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import dateUtils from '@js/core/utils/date'; import dateSerialization from '@js/core/utils/date_serialization'; import { extend } from '@js/core/utils/extend'; -import DataSource from '@js/data/data_source'; -import messageLocalization from '@js/localization/message'; import Form from '@js/ui/form'; import { current, isFluent } from '@js/ui/themes'; import { ExpressionUtils } from '@ts/scheduler/m_expression_utils'; diff --git a/packages/devextreme/js/__internal/scheduler/appointment_popup/m_popup.ts b/packages/devextreme/js/__internal/scheduler/appointment_popup/m_popup.ts index 356c12fa726e..58211e07e350 100644 --- a/packages/devextreme/js/__internal/scheduler/appointment_popup/m_popup.ts +++ b/packages/devextreme/js/__internal/scheduler/appointment_popup/m_popup.ts @@ -1,9 +1,9 @@ +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import dateUtils from '@js/core/utils/date'; import { Deferred, when } from '@js/core/utils/deferred'; -import { triggerResizeEvent } from '@js/events/visibility_change'; -import messageLocalization from '@js/localization/message'; import Popup from '@js/ui/popup/ui.popup'; import { ExpressionUtils } from '@ts/scheduler/m_expression_utils'; import { diff --git a/packages/devextreme/js/__internal/scheduler/appointments/data_provider/m_appointment_filter.ts b/packages/devextreme/js/__internal/scheduler/appointments/data_provider/m_appointment_filter.ts index f3cc15047a10..2593c049ee71 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/data_provider/m_appointment_filter.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/data_provider/m_appointment_filter.ts @@ -1,9 +1,9 @@ /* eslint-disable max-classes-per-file */ +import query from '@js/common/data/query'; import { wrapToArray } from '@js/core/utils/array'; import dateUtils from '@js/core/utils/date'; import { each, map } from '@js/core/utils/iterator'; import { isDefined, isFunction } from '@js/core/utils/type'; -import query from '@js/data/query'; import { dateUtilsTs } from '@ts/core/utils/date'; import { getAppointmentTakesAllDay, getDatesWithoutTime, hasResourceValue, isDateAndTimeView, @@ -348,14 +348,18 @@ export class AppointmentFilterBaseStrategy { filterPreparedItems(filterOptions, preparedItems) { const combinedFilter = this._createAppointmentFilter(filterOptions); + // @ts-expect-error return query(preparedItems) + // @ts-expect-error .filter(combinedFilter) .toArray(); } filterAllDayAppointments(preparedItems) { const combinedFilter = this._createAllDayAppointmentFilter(); + // @ts-expect-error return query(preparedItems) + // @ts-expect-error .filter(combinedFilter) .toArray() .map(({ rawAppointment }) => rawAppointment); @@ -452,7 +456,9 @@ export class AppointmentFilterVirtualStrategy extends AppointmentFilterBaseStrat combinedFilters.push(filter); }); + // @ts-expect-error return query(itemsToFilter) + // @ts-expect-error .filter(combinedFilters) .toArray(); } diff --git a/packages/devextreme/js/__internal/scheduler/appointments/m_appointment.ts b/packages/devextreme/js/__internal/scheduler/appointments/m_appointment.ts index 98e1ca14256c..b560186f4d6a 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/m_appointment.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/m_appointment.ts @@ -1,5 +1,10 @@ /* eslint-disable max-classes-per-file */ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import DOMComponent from '@js/core/dom_component'; import Guid from '@js/core/guid'; @@ -8,11 +13,6 @@ import $ from '@js/core/renderer'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import Resizable from '@js/ui/resizable'; import { hide, show } from '@ts/ui/tooltip/m_tooltip'; diff --git a/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_collection.ts b/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_collection.ts index cfb444240ae6..e32d32f4ced6 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_collection.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_collection.ts @@ -1,5 +1,8 @@ /* eslint-disable spellcheck/spell-checker */ -import { locate, move } from '@js/animation/translator'; +import { locate, move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as dblclickEvent } from '@js/common/core/events/double_click'; +import { addNamespace, isFakeClickEvent } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -19,9 +22,6 @@ import { setOuterHeight, setOuterWidth } from '@js/core/utils/size'; import { isDeferred, isDefined, isPlainObject, isString, } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as dblclickEvent } from '@js/events/double_click'; -import { addNamespace, isFakeClickEvent } from '@js/events/utils/index'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.edit'; import { dateUtilsTs } from '@ts/core/utils/date'; diff --git a/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_layout.ts b/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_layout.ts index d57f55f56d4b..00d1e4700d78 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_layout.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/m_appointment_layout.ts @@ -1,6 +1,6 @@ +import messageLocalization from '@js/common/core/localization/message'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; -import messageLocalization from '@js/localization/message'; import { APPOINTMENT_CONTENT_CLASSES } from '../m_classes'; diff --git a/packages/devextreme/js/__internal/scheduler/appointments/m_text_utils.ts b/packages/devextreme/js/__internal/scheduler/appointments/m_text_utils.ts index b9298006d4ed..066513962ec9 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/m_text_utils.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/m_text_utils.ts @@ -1,5 +1,5 @@ +import dateLocalization from '@js/common/core/localization/date'; import dateUtils from '@js/core/utils/date'; -import dateLocalization from '@js/localization/date'; export const createFormattedDateText = (options) => { const { diff --git a/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.ts b/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.ts index a39a230f7211..033968f99373 100644 --- a/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.ts +++ b/packages/devextreme/js/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.ts @@ -1,5 +1,5 @@ +import query from '@js/common/data/query'; import dateUtils from '@js/core/utils/date'; -import query from '@js/data/query'; import { sortAppointmentsByStartDate } from '../data_provider/m_utils'; import HorizontalAppointmentsStrategy from './m_strategy_horizontal'; @@ -65,6 +65,7 @@ class HorizontalMonthLineRenderingStrategy extends HorizontalAppointmentsStrateg let result = super._getSortedPositions(map); if (!skipSorting) { + // @ts-expect-error result = query(result).sortBy('top').thenBy('left').thenBy('cellPosition') .thenBy('i') .toArray(); diff --git a/packages/devextreme/js/__internal/scheduler/header/m_date_navigator.ts b/packages/devextreme/js/__internal/scheduler/header/m_date_navigator.ts index a97f263a1ff0..826640e86704 100644 --- a/packages/devextreme/js/__internal/scheduler/header/m_date_navigator.ts +++ b/packages/devextreme/js/__internal/scheduler/header/m_date_navigator.ts @@ -1,5 +1,5 @@ +import messageLocalization from '@js/common/core/localization/message'; import dateUtils from '@js/core/utils/date'; -import messageLocalization from '@js/localization/message'; import { isMaterialBased } from '@js/ui/themes'; const { trimTime } = dateUtils; diff --git a/packages/devextreme/js/__internal/scheduler/header/m_utils.ts b/packages/devextreme/js/__internal/scheduler/header/m_utils.ts index 11a2a6b0deb7..fef9f566e07d 100644 --- a/packages/devextreme/js/__internal/scheduler/header/m_utils.ts +++ b/packages/devextreme/js/__internal/scheduler/header/m_utils.ts @@ -1,9 +1,9 @@ +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import errors from '@js/core/errors'; import dateUtils from '@js/core/utils/date'; import { camelize } from '@js/core/utils/inflector'; import { isFunction, isObject } from '@js/core/utils/type'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import { VIEWS } from '../m_constants'; diff --git a/packages/devextreme/js/__internal/scheduler/m_compact_appointments_helper.ts b/packages/devextreme/js/__internal/scheduler/m_compact_appointments_helper.ts index 28b5cd402aec..d047f4c5b941 100644 --- a/packages/devextreme/js/__internal/scheduler/m_compact_appointments_helper.ts +++ b/packages/devextreme/js/__internal/scheduler/m_compact_appointments_helper.ts @@ -1,8 +1,8 @@ -import { locate, move } from '@js/animation/translator'; +import { locate, move } from '@js/common/core/animation/translator'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { FunctionTemplate } from '@js/core/templates/function_template'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import { createAppointmentAdapter } from './m_appointment_adapter'; diff --git a/packages/devextreme/js/__internal/scheduler/m_recurrence_editor.ts b/packages/devextreme/js/__internal/scheduler/m_recurrence_editor.ts index c656bfbf4069..b08fc871d1ef 100644 --- a/packages/devextreme/js/__internal/scheduler/m_recurrence_editor.ts +++ b/packages/devextreme/js/__internal/scheduler/m_recurrence_editor.ts @@ -1,14 +1,14 @@ /* eslint-disable max-classes-per-file, spellcheck/spell-checker */ import '@js/ui/radio_group'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import Guid from '@js/core/guid'; import $ from '@js/core/renderer'; import dateUtils from '@js/core/utils/date'; import { extend } from '@js/core/utils/extend'; import { isDefined } from '@js/core/utils/type'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import ButtonGroup from '@js/ui/button_group'; import DateBox from '@js/ui/date_box'; import Editor from '@js/ui/editor/editor'; diff --git a/packages/devextreme/js/__internal/scheduler/m_scheduler.ts b/packages/devextreme/js/__internal/scheduler/m_scheduler.ts index 6e02a87edf87..7d425480f2eb 100644 --- a/packages/devextreme/js/__internal/scheduler/m_scheduler.ts +++ b/packages/devextreme/js/__internal/scheduler/m_scheduler.ts @@ -1,3 +1,7 @@ +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; +import DataHelperMixin from '@js/common/data/data_helper'; import registerComponent from '@js/core/component_registrator'; import config from '@js/core/config'; import devices from '@js/core/devices'; @@ -26,10 +30,6 @@ import { isString, } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import DataHelperMixin from '@js/data_helper'; -import { triggerResizeEvent } from '@js/events/visibility_change'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import { custom as customDialog } from '@js/ui/dialog'; import type { AppointmentTooltipShowingEvent, ViewType } from '@js/ui/scheduler'; import { isMaterial, isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/scheduler/r1/appointment_popup/config.ts b/packages/devextreme/js/__internal/scheduler/r1/appointment_popup/config.ts index c8bd33cec9a2..39d5b62a65f2 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/appointment_popup/config.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/appointment_popup/config.ts @@ -1,8 +1,8 @@ -import type { AnimationConfig } from '@js/animation/fx'; +import type { AnimationConfig } from '@js/common/core/animation'; +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import { getWidth } from '@js/core/utils/size'; import { getWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import type { IToolbarButtonConfig } from './types'; diff --git a/packages/devextreme/js/__internal/scheduler/r1/components/base/all_day_panel_title.tsx b/packages/devextreme/js/__internal/scheduler/r1/components/base/all_day_panel_title.tsx index bdc5b4b08aaa..13a65b2279e5 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/components/base/all_day_panel_title.tsx +++ b/packages/devextreme/js/__internal/scheduler/r1/components/base/all_day_panel_title.tsx @@ -1,6 +1,6 @@ import type { InfernoEffect } from '@devextreme/runtime/inferno'; import { createReRenderEffect, InfernoWrapperComponent } from '@devextreme/runtime/inferno'; -import messageLocalization from '@js/localization/message'; +import messageLocalization from '@js/common/core/localization/message'; export class AllDayPanelTitle extends InfernoWrapperComponent { createEffects(): InfernoEffect[] { diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts index e6d62b3559bc..623b80ddeb20 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/base.ts @@ -1,7 +1,7 @@ +import dateLocalization from '@js/common/core/localization/date'; import { equalByValue } from '@js/core/utils/common'; import dateUtils from '@js/core/utils/date'; import { isDefined } from '@js/core/utils/type'; -import dateLocalization from '@js/localization/date'; import { dateUtilsTs } from '@ts/core/utils/date'; import { VERTICAL_GROUP_COUNT_CLASSES } from '../../m_classes'; diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/format_weekday.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/format_weekday.ts index eabb46e6e8de..d70223d06c11 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/format_weekday.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/format_weekday.ts @@ -1,4 +1,4 @@ -import dateLocalization from '@js/localization/date'; +import dateLocalization from '@js/common/core/localization/date'; export const formatWeekday = (date: Date): string => dateLocalization .getDayNames('abbreviated')[date.getDay()]; diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/month.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/month.ts index 564312f12709..3a6f01562b6f 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/month.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/month.ts @@ -1,5 +1,5 @@ +import dateLocalization from '@js/common/core/localization/date'; import dateUtils from '@js/core/utils/date'; -import dateLocalization from '@js/localization/date'; import type { CalculateCellIndex } from '../types'; import { diff --git a/packages/devextreme/js/__internal/scheduler/r1/utils/week.ts b/packages/devextreme/js/__internal/scheduler/r1/utils/week.ts index 9ccd7560fced..720780d027b0 100644 --- a/packages/devextreme/js/__internal/scheduler/r1/utils/week.ts +++ b/packages/devextreme/js/__internal/scheduler/r1/utils/week.ts @@ -1,5 +1,5 @@ +import dateLocalization from '@js/common/core/localization/date'; import dateUtils from '@js/core/utils/date'; -import dateLocalization from '@js/localization/date'; import type { CalculateStartViewDate } from '../types'; import { diff --git a/packages/devextreme/js/__internal/scheduler/resources/m_utils.ts b/packages/devextreme/js/__internal/scheduler/resources/m_utils.ts index a6950525075d..1fc8c59c2ca7 100644 --- a/packages/devextreme/js/__internal/scheduler/resources/m_utils.ts +++ b/packages/devextreme/js/__internal/scheduler/resources/m_utils.ts @@ -1,3 +1,5 @@ +import { DataSource } from '@js/common/data/data_source/data_source'; +import { normalizeDataSourceOptions } from '@js/common/data/data_source/utils'; import { wrapToArray } from '@js/core/utils/array'; import { equalByValue } from '@js/core/utils/common'; import { compileGetter, compileSetter } from '@js/core/utils/data'; @@ -6,8 +8,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { deepExtendArraySafe } from '@js/core/utils/object'; import { isDefined } from '@js/core/utils/type'; -import { DataSource } from '@js/data/data_source/data_source'; -import { normalizeDataSourceOptions } from '@js/data/data_source/utils'; import { current, isFluent } from '@js/ui/themes'; import { getGroupCount, hasResourceValue } from '@ts/scheduler/r1/utils/index'; diff --git a/packages/devextreme/js/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.ts b/packages/devextreme/js/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.ts index 4e52ba124577..74741d9548bf 100644 --- a/packages/devextreme/js/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.ts +++ b/packages/devextreme/js/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.ts @@ -1,4 +1,4 @@ -import messageLocalization from '@js/localization/message'; +import messageLocalization from '@js/common/core/localization/message'; import supportUtils from '@ts/core/utils/m_support'; import Tooltip from '@ts/ui/m_tooltip'; diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_agenda.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_agenda.ts index 5f6877a181fd..831a3fcffc8a 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_agenda.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_agenda.ts @@ -1,3 +1,4 @@ +import dateLocalization from '@js/common/core/localization/date'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -7,7 +8,6 @@ import dateUtils from '@js/core/utils/date'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { setHeight, setOuterHeight } from '@js/core/utils/size'; -import dateLocalization from '@js/localization/date'; import { agendaUtils, formatWeekday, getVerticalGroupCountClass } from '@ts/scheduler/r1/utils/index'; import { diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_virtual_scrolling.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_virtual_scrolling.ts index 0b80c1148f07..fe016b0bfdcb 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_virtual_scrolling.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_virtual_scrolling.ts @@ -1,9 +1,9 @@ /* eslint-disable max-classes-per-file */ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import domAdapter from '@js/core/dom_adapter'; import { isDefined } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; const DEFAULT_CELL_HEIGHT = 50; const MIN_CELL_WIDTH = 1; diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts index 3c35e4f6b380..638f0589743d 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts @@ -1,4 +1,15 @@ -import { locate, resetPosition } from '@js/animation/translator'; +import { locate, resetPosition } from '@js/common/core/animation/translator'; +import { name as clickEventName } from '@js/common/core/events/click'; +import { name as contextMenuEventName } from '@js/common/core/events/contextmenu'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + drop as dragEventDrop, + enter as dragEventEnter, + leave as dragEventLeave, +} from '@js/common/core/events/drag'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, isMouseEvent } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; @@ -17,17 +28,6 @@ import { } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import { name as contextMenuEventName } from '@js/events/contextmenu'; -import eventsEngine from '@js/events/core/events_engine'; -import { - drop as dragEventDrop, - enter as dragEventEnter, - leave as dragEventLeave, -} from '@js/events/drag'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, isMouseEvent } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Scrollable from '@js/ui/scroll_view/ui.scrollable'; import errors from '@js/ui/widget/ui.errors'; import { getMemoizeScrollTo } from '@ts/core/utils/scroll'; diff --git a/packages/devextreme/js/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.ts b/packages/devextreme/js/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.ts index 20b5e5ad5137..64246160bc32 100644 --- a/packages/devextreme/js/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.ts +++ b/packages/devextreme/js/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.ts @@ -1,5 +1,5 @@ +import dateLocalization from '@js/common/core/localization/date'; import dateUtils from '@js/core/utils/date'; -import dateLocalization from '@js/localization/date'; import { getToday, isFirstCellInMonthWithIntervalCount, monthUtils, setOptionHour, } from '@ts/scheduler/r1/utils/index'; diff --git a/packages/devextreme/js/__internal/ui/button/button.tsx b/packages/devextreme/js/__internal/ui/button/button.tsx index 4c6c01568c63..eca0ce7f4d69 100644 --- a/packages/devextreme/js/__internal/ui/button/button.tsx +++ b/packages/devextreme/js/__internal/ui/button/button.tsx @@ -2,12 +2,12 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { createReRenderEffect, InfernoEffect, InfernoWrapperComponent } from '@devextreme/runtime/inferno'; +import { click } from '@js/common/core/events/short'; +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import { convertRulesToOptions, createDefaultOptionRules } from '@js/core/options/utils'; import { getImageSourceType } from '@js/core/utils/icon'; import { camelize } from '@js/core/utils/inflector'; -import { click } from '@js/events/short'; -import messageLocalization from '@js/localization/message'; import { current, isMaterial } from '@js/ui/themes'; import type { EffectReturn } from '@ts/core/r1/utils/effect_return'; import { getTemplate } from '@ts/core/r1/utils/index'; diff --git a/packages/devextreme/js/__internal/ui/calendar/m_calendar.base_view.ts b/packages/devextreme/js/__internal/ui/calendar/m_calendar.base_view.ts index af12441db9b4..89f9e58d8879 100644 --- a/packages/devextreme/js/__internal/ui/calendar/m_calendar.base_view.ts +++ b/packages/devextreme/js/__internal/ui/calendar/m_calendar.base_view.ts @@ -1,3 +1,9 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { start as hoverStartEventName } from '@js/common/core/events/hover'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; import { data as elementData } from '@js/core/element_data'; @@ -6,12 +12,6 @@ import { noop } from '@js/core/utils/common'; import coreDateUtils from '@js/core/utils/date'; import dateSerialization from '@js/core/utils/date_serialization'; import { extend } from '@js/core/utils/extend'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { start as hoverStartEventName } from '@js/events/hover'; -import { addNamespace } from '@js/events/utils/index'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import Widget from '@js/ui/widget/ui.widget'; // @ts-expect-error diff --git a/packages/devextreme/js/__internal/ui/calendar/m_calendar.ts b/packages/devextreme/js/__internal/ui/calendar/m_calendar.ts index ee851870fc81..ef0b48f5f88c 100644 --- a/packages/devextreme/js/__internal/ui/calendar/m_calendar.ts +++ b/packages/devextreme/js/__internal/ui/calendar/m_calendar.ts @@ -1,5 +1,11 @@ -import fx from '@js/animation/fx'; -import { move } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import Swipeable from '@js/common/core/events/gesture/swipeable'; +import { end as hoverEndEventName } from '@js/common/core/events/hover'; +import { addNamespace, isCommandKeyPressed } from '@js/common/core/events/utils/index'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import Guid from '@js/core/guid'; @@ -15,12 +21,6 @@ import { isDefined, isFunction, isNumeric, isString, } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import Swipeable from '@js/events/gesture/swipeable'; -import { end as hoverEndEventName } from '@js/events/hover'; -import { addNamespace, isCommandKeyPressed } from '@js/events/utils/index'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import Editor from '@js/ui/editor/editor'; import { isFluent } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/calendar/m_calendar.views.ts b/packages/devextreme/js/__internal/ui/calendar/m_calendar.views.ts index 87026c6e198f..3a7cca47bd99 100644 --- a/packages/devextreme/js/__internal/ui/calendar/m_calendar.views.ts +++ b/packages/devextreme/js/__internal/ui/calendar/m_calendar.views.ts @@ -1,10 +1,10 @@ +import dateLocalization from '@js/common/core/localization/date'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import dateUtils from '@js/core/utils/date'; import dateSerialization from '@js/core/utils/date_serialization'; import { extend } from '@js/core/utils/extend'; -import dateLocalization from '@js/localization/date'; import BaseView from './m_calendar.base_view'; diff --git a/packages/devextreme/js/__internal/ui/chat/alertlist.ts b/packages/devextreme/js/__internal/ui/chat/alertlist.ts index 34fbcc8cccf1..e241c105b49e 100644 --- a/packages/devextreme/js/__internal/ui/chat/alertlist.ts +++ b/packages/devextreme/js/__internal/ui/chat/alertlist.ts @@ -1,5 +1,5 @@ +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; -import messageLocalization from '@js/localization/message'; import type { Alert, } from '@js/ui/chat'; diff --git a/packages/devextreme/js/__internal/ui/chat/avatar.ts b/packages/devextreme/js/__internal/ui/chat/avatar.ts index b794a3904ffe..6ad857a810c2 100644 --- a/packages/devextreme/js/__internal/ui/chat/avatar.ts +++ b/packages/devextreme/js/__internal/ui/chat/avatar.ts @@ -1,7 +1,7 @@ +import messageLocalization from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { isDefined } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import type { WidgetOptions } from '@js/ui/widget/ui.widget'; import type { OptionChanged } from '@ts/core/widget/types'; import Widget from '@ts/core/widget/widget'; diff --git a/packages/devextreme/js/__internal/ui/chat/chat.ts b/packages/devextreme/js/__internal/ui/chat/chat.ts index e3db3e2a4ca0..d3c8aa0f114f 100644 --- a/packages/devextreme/js/__internal/ui/chat/chat.ts +++ b/packages/devextreme/js/__internal/ui/chat/chat.ts @@ -1,11 +1,11 @@ +import { Guid } from '@js/common'; +import messageLocalization from '@js/common/core/localization/message'; +import type { DataSourceOptions } from '@js/common/data'; +import DataHelperMixin from '@js/common/data/data_helper'; import registerComponent from '@js/core/component_registrator'; -import Guid from '@js/core/guid'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { isDefined } from '@js/core/utils/type'; -import type { Options as DataSourceOptions } from '@js/data/data_source'; -import DataHelperMixin from '@js/data_helper'; -import messageLocalization from '@js/localization/message'; import type { Message, MessageEnteredEvent, diff --git a/packages/devextreme/js/__internal/ui/chat/messagebox.ts b/packages/devextreme/js/__internal/ui/chat/messagebox.ts index 6453cad0ec62..b2c236b368a3 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagebox.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagebox.ts @@ -1,6 +1,6 @@ +import type { NativeEventInfo } from '@js/common/core/events'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; -import type { NativeEventInfo } from '@js/events'; -import messageLocalization from '@js/localization/message'; import type { ClickEvent } from '@js/ui/button'; import Button from '@js/ui/button'; import type { Properties as DOMComponentProperties } from '@ts/core/widget/dom_component'; diff --git a/packages/devextreme/js/__internal/ui/chat/messagegroup.ts b/packages/devextreme/js/__internal/ui/chat/messagegroup.ts index d80ba2d5232d..f4b11e8491c8 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagegroup.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagegroup.ts @@ -1,10 +1,10 @@ +import type { Format } from '@js/common/core/localization'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import dateSerialization from '@js/core/utils/date_serialization'; import { isDate } from '@js/core/utils/type'; -import type { Format } from '@js/localization'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import type { Message } from '@js/ui/chat'; import type { WidgetOptions } from '@js/ui/widget/ui.widget'; import type { OptionChanged } from '@ts/core/widget/types'; diff --git a/packages/devextreme/js/__internal/ui/chat/messagelist.ts b/packages/devextreme/js/__internal/ui/chat/messagelist.ts index 61120ffc06ef..8651083b49a9 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagelist.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagelist.ts @@ -1,4 +1,7 @@ -import Guid from '@js/core/guid'; +import { Guid } from '@js/common'; +import type { Format } from '@js/common/core/localization'; +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import type { DeepPartial, } from '@js/core/index'; @@ -11,9 +14,6 @@ import dateSerialization from '@js/core/utils/date_serialization'; import { isElementInDom } from '@js/core/utils/dom'; import { getHeight } from '@js/core/utils/size'; import { isDate, isDefined } from '@js/core/utils/type'; -import type { Format } from '@js/localization'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import type { Message, User } from '@js/ui/chat'; import ScrollView from '@js/ui/scroll_view'; import type { WidgetOptions } from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/chat/typingindicator.ts b/packages/devextreme/js/__internal/ui/chat/typingindicator.ts index f577fc593706..8914f3510b0c 100644 --- a/packages/devextreme/js/__internal/ui/chat/typingindicator.ts +++ b/packages/devextreme/js/__internal/ui/chat/typingindicator.ts @@ -1,7 +1,7 @@ +import messageLocalization from '@js/common/core/localization/message'; import type { Properties as DOMComponentProperties } from '@js/core/dom_component'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; -import messageLocalization from '@js/localization/message'; import type { User } from '@js/ui/chat'; import DOMComponent from '@ts/core/widget/dom_component'; import type { OptionChanged } from '@ts/core/widget/types'; diff --git a/packages/devextreme/js/__internal/ui/collection/base.ts b/packages/devextreme/js/__internal/ui/collection/base.ts index deb3dd9d0f36..9928a0d14007 100644 --- a/packages/devextreme/js/__internal/ui/collection/base.ts +++ b/packages/devextreme/js/__internal/ui/collection/base.ts @@ -1,5 +1,5 @@ +import type { DataSource } from '@js/common/data'; import type { dxElementWrapper } from '@js/core/renderer'; -import type DataSource from '@js/data/data_source'; import type { CollectionWidgetOptions, ItemLike } from '@js/ui/collection/ui.collection_widget.base'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.base'; diff --git a/packages/devextreme/js/__internal/ui/collection/m_collection_widget.base.ts b/packages/devextreme/js/__internal/ui/collection/m_collection_widget.base.ts index 0929f7b24f06..a5c410bd3806 100644 --- a/packages/devextreme/js/__internal/ui/collection/m_collection_widget.base.ts +++ b/packages/devextreme/js/__internal/ui/collection/m_collection_widget.base.ts @@ -1,3 +1,11 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import { name as contextMenuEventName } from '@js/common/core/events/contextmenu'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, isCommandKeyPressed } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; +import DataHelperMixin from '@js/common/data/data_helper'; import Action from '@js/core/action'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -17,14 +25,6 @@ import { each } from '@js/core/utils/iterator'; import { getOuterHeight, getOuterWidth } from '@js/core/utils/size'; import { findTemplates } from '@js/core/utils/template_manager'; import { isDefined, isFunction, isPlainObject } from '@js/core/utils/type'; -import DataHelperMixin from '@js/data_helper'; -import { name as clickEventName } from '@js/events/click'; -import { name as contextMenuEventName } from '@js/events/contextmenu'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, isCommandKeyPressed } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import { focusable } from '@js/ui/widget/selectors'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/collection/m_collection_widget.edit.ts b/packages/devextreme/js/__internal/ui/collection/m_collection_widget.edit.ts index 20a164a29af9..2a6f79d24a2e 100644 --- a/packages/devextreme/js/__internal/ui/collection/m_collection_widget.edit.ts +++ b/packages/devextreme/js/__internal/ui/collection/m_collection_widget.edit.ts @@ -1,3 +1,6 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { DataSource } from '@js/common/data/data_source/data_source'; +import { normalizeLoadResult } from '@js/common/data/data_source/utils'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { compileGetter } from '@js/core/utils/data'; @@ -10,9 +13,6 @@ import { import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined } from '@js/core/utils/type'; -import { DataSource } from '@js/data/data_source/data_source'; -import { normalizeLoadResult } from '@js/data/data_source/utils'; -import eventsEngine from '@js/events/core/events_engine'; import errors from '@js/ui/widget/ui.errors'; import Selection from '@ts/ui/selection/m_selection'; diff --git a/packages/devextreme/js/__internal/ui/collection/m_collection_widget.live_update.ts b/packages/devextreme/js/__internal/ui/collection/m_collection_widget.live_update.ts index c25d64b03992..f34d4db5fd94 100644 --- a/packages/devextreme/js/__internal/ui/collection/m_collection_widget.live_update.ts +++ b/packages/devextreme/js/__internal/ui/collection/m_collection_widget.live_update.ts @@ -1,3 +1,5 @@ +import { indexByKey, insert, update } from '@js/common/data/array_utils'; +import { keysEqual } from '@js/common/data/utils'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; import { findChanges } from '@js/core/utils/array_compare'; @@ -5,9 +7,6 @@ import { noop } from '@js/core/utils/common'; import { when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -import { indexByKey, insert, update } from '@js/data/array_utils'; -// @ts-expect-error -import { keysEqual } from '@js/data/utils'; import CollectionWidget from './m_collection_widget.async'; diff --git a/packages/devextreme/js/__internal/ui/color_box/m_color_view.ts b/packages/devextreme/js/__internal/ui/color_box/m_color_view.ts index fa15351f6048..1968b94ee191 100644 --- a/packages/devextreme/js/__internal/ui/color_box/m_color_view.ts +++ b/packages/devextreme/js/__internal/ui/color_box/m_color_view.ts @@ -1,15 +1,15 @@ -import { locate, move } from '@js/animation/translator'; import Color from '@js/color'; +import { locate, move } from '@js/common/core/animation/translator'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { isCommandKeyPressed } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import Guid from '@js/core/guid'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getHeight, getOuterHeight, getWidth } from '@js/core/utils/size'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { isCommandKeyPressed } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Draggable from '@js/ui/draggable'; import Editor from '@js/ui/editor/editor'; import NumberBox from '@js/ui/number_box'; diff --git a/packages/devextreme/js/__internal/ui/context_menu/m_context_menu.ts b/packages/devextreme/js/__internal/ui/context_menu/m_context_menu.ts index db6054566a6b..30c11c7f6906 100644 --- a/packages/devextreme/js/__internal/ui/context_menu/m_context_menu.ts +++ b/packages/devextreme/js/__internal/ui/context_menu/m_context_menu.ts @@ -1,7 +1,11 @@ /* eslint-disable max-classes-per-file */ -import fx from '@js/animation/fx'; -import type { PositionConfig } from '@js/animation/position'; -import animationPosition from '@js/animation/position'; +import type { PositionConfig } from '@js/common/core/animation'; +import { fx } from '@js/common/core/animation'; +import animationPosition from '@js/common/core/animation/position'; +import { name as contextMenuEventName } from '@js/common/core/events/contextmenu'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -19,10 +23,6 @@ import { isDefined, isFunction, isObject, isPlainObject, isRenderer, isWindow, } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import { name as contextMenuEventName } from '@js/events/contextmenu'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import { addNamespace } from '@js/events/utils/index'; import type { Item } from '@js/ui/context_menu'; import type { Properties as OverlayProperties } from '@js/ui/overlay'; import type dxOverlay from '@js/ui/overlay'; @@ -716,7 +716,6 @@ class ContextMenu extends MenuBase { this._scrollToElement($item); const submenuPosition = this._getSubmenuPosition($item); - // @ts-expect-error animationPosition.setup($submenu, submenuPosition); }); } @@ -789,7 +788,6 @@ class ContextMenu extends MenuBase { fx.stop($submenu); } - // @ts-expect-error animationPosition.setup($submenu, submenuPosition); if (animation) { diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.base.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.base.ts index b77ceedc7d34..af0d0c18a7e2 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.base.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.base.ts @@ -1,3 +1,5 @@ +import dateLocalization from '@js/common/core/localization/date'; +import messageLocalization from '@js/common/core/localization/message'; import config from '@js/core/config'; import devices from '@js/core/devices'; import browser from '@js/core/utils/browser'; @@ -9,8 +11,6 @@ import { each } from '@js/core/utils/iterator'; import { inputType } from '@js/core/utils/support'; import { isDate as isDateType, isNumeric, isString } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import dateLocalization from '@js/localization/date'; -import messageLocalization from '@js/localization/message'; import DropDownEditor from '@ts/ui/drop_down_editor/m_drop_down_editor'; import Calendar from './m_date_box.strategy.calendar'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.parts.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.parts.ts index f02403eab6ae..f22389d2aeec 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.parts.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.parts.ts @@ -1,7 +1,7 @@ +import { getPatternSetters } from '@js/common/core/localization/ldml/date.parser'; import { noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { fitIntoRange } from '@js/core/utils/math'; -import { getPatternSetters } from '@js/localization/ldml/date.parser'; const monthGetter = (date) => date.getMonth() + 1; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.ts index 3cc127de11ac..0d77af4f8eb6 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.mask.ts @@ -1,3 +1,10 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/common/core/events/utils/index'; +import dateLocalization from '@js/common/core/localization/date'; +import defaultDateNames from '@js/common/core/localization/default_date_names'; +import { getFormat } from '@js/common/core/localization/ldml/date.format'; +import { getRegExpInfo } from '@js/common/core/localization/ldml/date.parser'; +import numberLocalization from '@js/common/core/localization/number'; import devices from '@js/core/devices'; import browser from '@js/core/utils/browser'; import { clipboardText } from '@js/core/utils/dom'; @@ -6,13 +13,6 @@ import { fitIntoRange, inRange, sign } from '@js/core/utils/math'; import { isDate, isDefined, isFunction, isString, } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/events/utils/index'; -import dateLocalization from '@js/localization/date'; -import defaultDateNames from '@js/localization/default_date_names'; -import { getFormat } from '@js/localization/ldml/date.format'; -import { getRegExpInfo } from '@js/localization/ldml/date.parser'; -import numberLocalization from '@js/localization/number'; import DateBoxBase from './m_date_box.base'; import { getDatePartIndexByPosition, renderDateParts } from './m_date_box.mask.parts'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar.ts index bec81621a3fc..f8262d92a7fc 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar.ts @@ -1,9 +1,9 @@ +import messageLocalization from '@js/common/core/localization/message'; // @ts-expect-error import { splitPair } from '@js/core/utils/common'; import dateUtils from '@js/core/utils/date'; import { extend } from '@js/core/utils/extend'; import { isEmptyObject, isFunction } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; import Calendar from '@js/ui/calendar'; import { isMaterial } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar_with_time.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar_with_time.ts index 44daeef1e3bd..e8dde0f33e23 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar_with_time.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.calendar_with_time.ts @@ -1,9 +1,9 @@ +import dateLocalization from '@js/common/core/localization/date'; import $ from '@js/core/renderer'; import dateUtils from '@js/core/utils/date'; import { extend } from '@js/core/utils/extend'; import { getWidth } from '@js/core/utils/size'; import { getWindow } from '@js/core/utils/window'; -import dateLocalization from '@js/localization/date'; import Box from '@js/ui/box'; import CalendarStrategy from './m_date_box.strategy.calendar'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.date_view.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.date_view.ts index ce25b0f19ac6..bdaea2cfd82a 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.date_view.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.date_view.ts @@ -1,8 +1,8 @@ +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { inputType } from '@js/core/utils/support'; import { getWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import DateBoxStrategy from './m_date_box.strategy'; import dateUtils from './m_date_utils'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.list.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.list.ts index c114e8f99fb0..9c3a104fa91b 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.list.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.list.ts @@ -1,12 +1,12 @@ import '@ts/ui/list/modules/m_selection'; +import dateLocalization from '@js/common/core/localization/date'; import { ensureDefined, noop } from '@js/core/utils/common'; import dateSerialization from '@js/core/utils/date_serialization'; import { extend } from '@js/core/utils/extend'; import { getHeight, getOuterHeight } from '@js/core/utils/size'; import { isDate } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import dateLocalization from '@js/localization/date'; import List from '@js/ui/list_light'; import { getSizeValue } from '@ts/ui/drop_down_editor/m_utils'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.ts index 2dc3574f0859..4928de858ac8 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_box.strategy.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import dateLocalization from '@js/common/core/localization/date'; import Class from '@js/core/class'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; -import eventsEngine from '@js/events/core/events_engine'; -import dateLocalization from '@js/localization/date'; const { abstract } = Class; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_utils.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_utils.ts index 3e2c68199587..28429841f8b0 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_utils.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_utils.ts @@ -1,8 +1,8 @@ +import dateLocalization from '@js/common/core/localization/date'; import $ from '@js/core/renderer'; import dateSerialization from '@js/core/utils/date_serialization'; import { each } from '@js/core/utils/iterator'; import { isDate } from '@js/core/utils/type'; -import dateLocalization from '@js/localization/date'; const DATE_COMPONENTS = ['year', 'day', 'month', 'day']; const TIME_COMPONENTS = ['hours', 'minutes', 'seconds', 'milliseconds']; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_view.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_view.ts index f67d639bb999..ed2217734bbe 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_view.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_view.ts @@ -1,9 +1,9 @@ +import dateLocalization from '@js/common/core/localization/date'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import dateUtils from '@js/core/utils/date'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; -import dateLocalization from '@js/localization/date'; import Editor from '@js/ui/editor/editor'; import uiDateUtils from './m_date_utils'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_date_view_roller.ts b/packages/devextreme/js/__internal/ui/date_box/m_date_view_roller.ts index c14f5ee0b266..74ca62286777 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_date_view_roller.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_date_view_roller.ts @@ -1,14 +1,14 @@ -import fx from '@js/animation/fx'; -import { resetPosition } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { resetPosition } from '@js/common/core/animation/translator'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getHeight } from '@js/core/utils/size'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import { convertToLocation } from '@ts/ui/scroll_view/utils/convert_location'; import Scrollable from '../scroll_view/m_scrollable'; diff --git a/packages/devextreme/js/__internal/ui/date_box/m_time_view.ts b/packages/devextreme/js/__internal/ui/date_box/m_time_view.ts index 3f3205139499..c146f763a4ed 100644 --- a/packages/devextreme/js/__internal/ui/date_box/m_time_view.ts +++ b/packages/devextreme/js/__internal/ui/date_box/m_time_view.ts @@ -1,7 +1,7 @@ +import dateLocalization from '@js/common/core/localization/date'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import dateLocalization from '@js/localization/date'; import Box from '@js/ui/box'; import Editor from '@js/ui/editor/editor'; import NumberBox from '@js/ui/number_box'; diff --git a/packages/devextreme/js/__internal/ui/date_range_box/m_date_range_box.ts b/packages/devextreme/js/__internal/ui/date_range_box/m_date_range_box.ts index 5261da4a7cef..a9a104d12dd4 100644 --- a/packages/devextreme/js/__internal/ui/date_range_box/m_date_range_box.ts +++ b/packages/devextreme/js/__internal/ui/date_range_box/m_date_range_box.ts @@ -1,4 +1,7 @@ import type { Position } from '@js/common'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import config from '@js/core/config'; import devices from '@js/core/devices'; @@ -11,9 +14,6 @@ import { extend } from '@js/core/utils/extend'; import { getImageContainer } from '@js/core/utils/icon'; import { camelize } from '@js/core/utils/inflector'; import { each } from '@js/core/utils/iterator'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import type { Properties } from '@js/ui/date_range_box'; import Editor from '@js/ui/editor/editor'; import { current, isFluent, isMaterial } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/date_range_box/m_multiselect_date_box.ts b/packages/devextreme/js/__internal/ui/date_range_box/m_multiselect_date_box.ts index ebaa709861c0..ef6369966465 100644 --- a/packages/devextreme/js/__internal/ui/date_range_box/m_multiselect_date_box.ts +++ b/packages/devextreme/js/__internal/ui/date_range_box/m_multiselect_date_box.ts @@ -1,8 +1,8 @@ // eslint-disable-next-line max-classes-per-file +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import { getWidth } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils'; // eslint-disable-next-line @typescript-eslint/consistent-type-imports import type { DateBoxBase, Properties } from '@js/ui/date_box'; import DateBox from '@js/ui/date_box'; diff --git a/packages/devextreme/js/__internal/ui/date_range_box/strategy/m_rangeCalendar.ts b/packages/devextreme/js/__internal/ui/date_range_box/strategy/m_rangeCalendar.ts index c8137ddf56da..e56696abe042 100644 --- a/packages/devextreme/js/__internal/ui/date_range_box/strategy/m_rangeCalendar.ts +++ b/packages/devextreme/js/__internal/ui/date_range_box/strategy/m_rangeCalendar.ts @@ -1,6 +1,6 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import { extend } from '@js/core/utils/extend'; import { isFunction } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; import type Calendar from '@js/ui/calendar'; import type DateBox from '@js/ui/date_box'; diff --git a/packages/devextreme/js/__internal/ui/drawer/m_drawer.animation.ts b/packages/devextreme/js/__internal/ui/drawer/m_drawer.animation.ts index b4249c6bc0c0..bdd3d9e52b1b 100644 --- a/packages/devextreme/js/__internal/ui/drawer/m_drawer.animation.ts +++ b/packages/devextreme/js/__internal/ui/drawer/m_drawer.animation.ts @@ -1,4 +1,4 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; import { camelize } from '@js/core/utils/inflector'; export const animation = { diff --git a/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.overlap.ts b/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.overlap.ts index 5754cccc4dfc..ffa6c038f006 100644 --- a/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.overlap.ts +++ b/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.overlap.ts @@ -1,4 +1,4 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; import $ from '@js/core/renderer'; import { ensureDefined } from '@js/core/utils/common'; import { camelize } from '@js/core/utils/inflector'; diff --git a/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.push.ts b/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.push.ts index 77520c1e1205..ac51bd026c4a 100644 --- a/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.push.ts +++ b/packages/devextreme/js/__internal/ui/drawer/m_drawer.rendering.strategy.push.ts @@ -1,4 +1,4 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; import $ from '@js/core/renderer'; import { animation } from './m_drawer.animation'; diff --git a/packages/devextreme/js/__internal/ui/drawer/m_drawer.ts b/packages/devextreme/js/__internal/ui/drawer/m_drawer.ts index f1ad55b444c1..1b3692e20630 100644 --- a/packages/devextreme/js/__internal/ui/drawer/m_drawer.ts +++ b/packages/devextreme/js/__internal/ui/drawer/m_drawer.ts @@ -1,4 +1,7 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import { name as CLICK_EVENT_NAME } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; import registerComponent from '@js/core/component_registrator'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; @@ -8,9 +11,6 @@ import { extend } from '@js/core/utils/extend'; import { getBoundingRect } from '@js/core/utils/position'; import { isDefined, isFunction } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { name as CLICK_EVENT_NAME } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { triggerResizeEvent } from '@js/events/visibility_change'; import Widget from '@js/ui/widget/ui.widget'; import { animation } from './m_drawer.animation'; diff --git a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_button.ts b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_button.ts index 6a85f9d55e71..577e44ea8826 100644 --- a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_button.ts +++ b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_button.ts @@ -1,7 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import eventsEngine from '@js/events/core/events_engine'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import TextEditorButton from '../text_box/texteditor_button_collection/m_button'; diff --git a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_editor.ts b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_editor.ts index b6d00e1c7216..36b252952a40 100644 --- a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_editor.ts +++ b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_editor.ts @@ -1,5 +1,9 @@ -import animationPosition from '@js/animation/position'; -import { locate, move } from '@js/animation/translator'; +import animationPosition from '@js/common/core/animation/position'; +import { locate, move } from '@js/common/core/animation/translator'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -16,10 +20,6 @@ import { each } from '@js/core/utils/iterator'; import { getDefaultAlignment } from '@js/core/utils/position'; import { isDefined } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Popup from '@js/ui/popup/ui.popup'; import TextBox from '@js/ui/text_box'; import { focused } from '@js/ui/widget/selectors'; @@ -731,9 +731,7 @@ const DropDownEditor = TextBox.inherit({ let positionSide = 'bottom'; if (this._popup && this._popup.option('visible')) { - // @ts-expect-error const { top: myTop } = animationPosition.setup(this.$element()); - // @ts-expect-error const { top: popupTop } = animationPosition.setup(this._popup.$content()); positionSide = (myTop + this.option('popupPosition').offset.v) > popupTop ? 'bottom' : 'top'; diff --git a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts index 2bc92c415f2b..13c7999b3a69 100644 --- a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts +++ b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts @@ -1,3 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; +import dataQuery from '@js/common/data/query'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import Guid from '@js/core/guid'; @@ -15,10 +19,6 @@ import { each } from '@js/core/utils/iterator'; import { getOuterHeight } from '@js/core/utils/size'; import { isDefined, isObject, isWindow } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import dataQuery from '@js/data/query'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import DataExpressionMixin from '@js/ui/editor/ui.data_expression'; import List from '@js/ui/list_light'; import errors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts b/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts index c61e64b46529..fae1c38874c6 100644 --- a/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts +++ b/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts @@ -1,3 +1,6 @@ +import ArrayStore from '@js/common/data/array_store'; +import DataHelperMixin from '@js/common/data/data_helper'; +import DataSource from '@js/common/data/data_source'; import { ensureDefined, noop } from '@js/core/utils/common'; import { compileGetter, @@ -9,9 +12,6 @@ import { isDefined, isFunction, isObject as isObjectType, isString, } from '@js/core/utils/type'; import variableWrapper from '@js/core/utils/variable_wrapper'; -import ArrayStore from '@js/data/array_store'; -import { DataSource } from '@js/data/data_source/data_source'; -import DataHelperMixin from '@js/data_helper'; const DataExpressionMixin = extend({}, DataHelperMixin, { diff --git a/packages/devextreme/js/__internal/ui/editor/m_editor.ts b/packages/devextreme/js/__internal/ui/editor/m_editor.ts index fc2201b1b3e3..ceb25826f671 100644 --- a/packages/devextreme/js/__internal/ui/editor/m_editor.ts +++ b/packages/devextreme/js/__internal/ui/editor/m_editor.ts @@ -1,3 +1,5 @@ +import EventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, normalizeKeyName } from '@js/common/core/events/utils/index'; import { data } from '@js/core/element_data'; import Guid from '@js/core/guid'; import $ from '@js/core/renderer'; @@ -5,8 +7,6 @@ import Callbacks from '@js/core/utils/callbacks'; import { noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { hasWindow } from '@js/core/utils/window'; -import EventsEngine from '@js/events/core/events_engine'; -import { addNamespace, normalizeKeyName } from '@js/events/utils/index'; import ValidationEngine from '@js/ui/validation_engine'; import ValidationMessage from '@js/ui/validation_message'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/form/components/m_field_item.ts b/packages/devextreme/js/__internal/ui/form/components/m_field_item.ts index 8a30e848a70b..c54022e26604 100644 --- a/packages/devextreme/js/__internal/ui/form/components/m_field_item.ts +++ b/packages/devextreme/js/__internal/ui/form/components/m_field_item.ts @@ -1,9 +1,9 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; import { captionize } from '@js/core/utils/inflector'; import { format } from '@js/core/utils/string'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; import { isMaterialBased } from '@js/ui/themes'; import Validator from '@js/ui/validator'; import errors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/form/m_form.layout_manager.ts b/packages/devextreme/js/__internal/ui/form/m_form.layout_manager.ts index 591a96c1fc71..870f9bfe3735 100644 --- a/packages/devextreme/js/__internal/ui/form/m_form.layout_manager.ts +++ b/packages/devextreme/js/__internal/ui/form/m_form.layout_manager.ts @@ -4,6 +4,9 @@ import '@js/ui/check_box'; import '@js/ui/date_box'; import '@js/ui/button'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { removeEvent } from '@js/common/core/events/remove'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { normalizeIndexes } from '@js/core/utils/array'; @@ -17,9 +20,6 @@ import { import variableWrapper from '@js/core/utils/variable_wrapper'; // @ts-expect-error import { getCurrentScreenFactor, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { removeEvent } from '@js/events/remove'; -import messageLocalization from '@js/localization/message'; import ResponsiveBox from '@js/ui/responsive_box'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/form/m_form.ts b/packages/devextreme/js/__internal/ui/form/m_form.ts index 64e1f0f5463e..fde3b04ae54d 100644 --- a/packages/devextreme/js/__internal/ui/form/m_form.ts +++ b/packages/devextreme/js/__internal/ui/form/m_form.ts @@ -2,6 +2,9 @@ import './m_form.layout_manager'; import '@js/ui/validation_summary'; import '@js/ui/validation_group'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { triggerResizeEvent, triggerShownEvent } from '@js/common/core/events/visibility_change'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import config from '@js/core/config'; import { getPublicElement } from '@js/core/element'; @@ -17,9 +20,6 @@ import { } from '@js/core/utils/type'; // @ts-expect-error import { defaultScreenFactorFunc, getCurrentScreenFactor, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { triggerResizeEvent, triggerShownEvent } from '@js/events/visibility_change'; -import messageLocalization from '@js/localization/message'; import Editor from '@js/ui/editor/editor'; import Scrollable from '@js/ui/scroll_view/ui.scrollable'; import TabPanel from '@js/ui/tab_panel'; diff --git a/packages/devextreme/js/__internal/ui/hierarchical_collection/m_data_adapter.ts b/packages/devextreme/js/__internal/ui/hierarchical_collection/m_data_adapter.ts index 6825fae3427e..38db373c7b0e 100644 --- a/packages/devextreme/js/__internal/ui/hierarchical_collection/m_data_adapter.ts +++ b/packages/devextreme/js/__internal/ui/hierarchical_collection/m_data_adapter.ts @@ -1,10 +1,10 @@ +import query from '@js/common/data/query'; +import storeHelper from '@js/common/data/store_helper'; import Class from '@js/core/class'; import { noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isFunction } from '@js/core/utils/type'; -import query from '@js/data/query'; -import storeHelper from '@js/data/store_helper'; import TextBox from '@js/ui/text_box'; import errors from '@js/ui/widget/ui.errors'; import uiSearchBoxMixin from '@js/ui/widget/ui.search_box_mixin'; @@ -374,6 +374,7 @@ const DataAdapter = Class.inherit({ }, getChildrenNodes(parentKey) { + // @ts-expect-error return query(this._dataStructure, { langParams: this.options.langParams }).filter(['internalFields.parentKey', parentKey]).toArray(); }, @@ -479,6 +480,7 @@ const DataAdapter = Class.inherit({ dataStructure = dataStructure || this._initialDataStructure; + // @ts-expect-error return query(dataStructure, { langParams: this.options.langParams }).filter(criteria).toArray(); }, diff --git a/packages/devextreme/js/__internal/ui/html_editor/m_html_editor.ts b/packages/devextreme/js/__internal/ui/html_editor/m_html_editor.ts index bb54fda96c46..dee7738ecb12 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/m_html_editor.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/m_html_editor.ts @@ -1,5 +1,11 @@ import './converters/m_delta'; +// @ts-expect-error +import { Event as dxEvent } from '@js/common/core/events'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import scrollEvents from '@js/common/core/events/gesture/emitter.gesture.scroll'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import config from '@js/core/config'; import devices from '@js/core/devices'; @@ -16,12 +22,6 @@ import { import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { isDefined, isFunction } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import scrollEvents from '@js/events/gesture/emitter.gesture.scroll'; -// @ts-expect-error -import { Event as dxEvent } from '@js/events/index'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import Editor from '@js/ui/editor/editor'; import { prepareScrollData } from '@ts/ui/text_box/m_utils.scroll'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_dropImage.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_dropImage.ts index 6f8ceef66a34..eb734a59f814 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_dropImage.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_dropImage.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import browser from '@js/core/utils/browser'; import { each } from '@js/core/utils/iterator'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import Quill from 'devextreme-quill'; import BaseModule from './m_base'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageCursor.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageCursor.ts index a8f042f84d32..e3ced1a7faa3 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageCursor.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageCursor.ts @@ -1,5 +1,5 @@ -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import Quill from 'devextreme-quill'; import BaseModule from './m_base'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageUpload.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageUpload.ts index 14b7814d9d4d..ede71155ee4d 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageUpload.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_imageUpload.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import FileUploader from '@js/ui/file_uploader'; import Quill from 'devextreme-quill'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_mentions.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_mentions.ts index a2499d886156..a388a9a09263 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_mentions.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_mentions.ts @@ -1,9 +1,9 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; import { compileGetter } from '@js/core/utils/data'; import { extend } from '@js/core/utils/extend'; import { isString } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; import type List from '@js/ui/list'; import type Popup from '@js/ui/popup'; import Quill from 'devextreme-quill'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_popup.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_popup.ts index c9c1887b245d..3bd2b87f3245 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_popup.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_popup.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getHeight } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import type ListType from '@js/ui/list'; import List from '@js/ui/list_light'; import Popup from '@js/ui/popup'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_resizing.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_resizing.ts index 886c663b42d9..cde4c424f0f7 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_resizing.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_resizing.ts @@ -1,4 +1,7 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; +import { name as ClickEvent } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, normalizeKeyName } from '@js/common/core/events/utils/index'; import devices from '@js/core/devices'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -6,9 +9,6 @@ import { getBoundingRect } from '@js/core/utils/position'; import { getHeight, getOuterHeight, getOuterWidth, getWidth, } from '@js/core/utils/size'; -import { name as ClickEvent } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, normalizeKeyName } from '@js/events/utils/index'; import Resizable from '@js/ui/resizable'; import Quill from 'devextreme-quill'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableContextMenu.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableContextMenu.ts index d2311df2fff6..c777642b350d 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableContextMenu.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableContextMenu.ts @@ -1,11 +1,11 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import localizationMessage from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { camelize, titleize } from '@js/core/utils/inflector'; import { each } from '@js/core/utils/iterator'; import { isObject, isString } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import localizationMessage from '@js/localization/message'; import type { Item } from '@js/ui/context_menu'; import ContextMenu from '@js/ui/context_menu'; import Quill from 'devextreme-quill'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableResizing.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableResizing.ts index b5661d37ac40..8b0896f416a5 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableResizing.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_tableResizing.ts @@ -1,4 +1,6 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; @@ -8,8 +10,6 @@ import _windowResizeCallbacks from '@js/core/utils/resize_callbacks'; import { getHeight, getOuterHeight, getOuterWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import type { Properties } from '@js/ui/draggable'; import Draggable from '@js/ui/draggable'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/modules/m_toolbar.ts b/packages/devextreme/js/__internal/ui/html_editor/modules/m_toolbar.ts index 078052d79ab9..5db29446d347 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/modules/m_toolbar.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/modules/m_toolbar.ts @@ -2,6 +2,9 @@ import '@js/ui/select_box'; import '@ts/ui/color_box/m_color_view'; import '@js/ui/number_box'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import localizationMessage from '@js/common/core/localization/message'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; @@ -10,9 +13,6 @@ import { each } from '@js/core/utils/iterator'; import { isDefined, isEmptyObject, isObject, isString, } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import localizationMessage from '@js/localization/message'; import type { Item } from '@js/ui/toolbar'; import Toolbar from '@js/ui/toolbar'; import errors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/ui/m_formDialog.ts b/packages/devextreme/js/__internal/ui/html_editor/ui/m_formDialog.ts index 432b67b44bf6..a0930e02d7de 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/ui/m_formDialog.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/ui/m_formDialog.ts @@ -1,3 +1,4 @@ +import localizationMessage from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import type { DeferredObj } from '@js/core/utils/deferred'; @@ -8,7 +9,6 @@ import { getCurrentScreenFactor, hasWindow, } from '@js/core/utils/window'; -import localizationMessage from '@js/localization/message'; import Form from '@js/ui/form'; import Popup from '@js/ui/popup'; import { isFluent, isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/utils/m_image_uploader_helper.ts b/packages/devextreme/js/__internal/ui/html_editor/utils/m_image_uploader_helper.ts index 5020b1e2365c..0e4b344ece1c 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/utils/m_image_uploader_helper.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/utils/m_image_uploader_helper.ts @@ -1,11 +1,11 @@ /* eslint-disable max-classes-per-file */ +import localizationMessage from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { map } from '@js/core/utils/iterator'; import { getHeight, getWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import localizationMessage from '@js/localization/message'; import ButtonGroup from '@js/ui/button_group'; import FileUploader from '@js/ui/file_uploader'; import TextBox from '@js/ui/text_box'; diff --git a/packages/devextreme/js/__internal/ui/html_editor/utils/m_toolbar_helper.ts b/packages/devextreme/js/__internal/ui/html_editor/utils/m_toolbar_helper.ts index f107910b39a8..fd601a7300c9 100644 --- a/packages/devextreme/js/__internal/ui/html_editor/utils/m_toolbar_helper.ts +++ b/packages/devextreme/js/__internal/ui/html_editor/utils/m_toolbar_helper.ts @@ -1,10 +1,10 @@ +import localizationMessage from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { camelize } from '@js/core/utils/inflector'; import { each } from '@js/core/utils/iterator'; import { getOuterHeight, getOuterWidth, getWidth } from '@js/core/utils/size'; import { isBoolean, isDefined } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import localizationMessage from '@js/localization/message'; import ButtonGroup from '@js/ui/button_group'; import ColorBox from '@js/ui/color_box'; import Form from '@js/ui/form'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.base.ts b/packages/devextreme/js/__internal/ui/list/m_list.base.ts index 42c7cdc16af6..e12df90ab1f8 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.base.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.base.ts @@ -1,4 +1,9 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { end as swipeEventEnd } from '@js/common/core/events/swipe'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; import Guid from '@js/core/guid'; @@ -13,11 +18,6 @@ import { each } from '@js/core/utils/iterator'; import { getHeight, getOuterHeight, setHeight } from '@js/core/utils/size'; import { isDefined, isPlainObject } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { end as swipeEventEnd } from '@js/events/swipe'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.live_update'; import ScrollView from '@js/ui/scroll_view'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.context.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.context.ts index 48ac21a6214d..4844e6a695bf 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.context.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.context.ts @@ -1,6 +1,6 @@ +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { getOuterHeight, getOuterWidth } from '@js/core/utils/size'; -import messageLocalization from '@js/localization/message'; import Overlay from '@js/ui/overlay/ui.overlay'; import { ListBase } from './m_list.base'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.reorder.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.reorder.ts index 979bf0e05366..927458f864b5 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.reorder.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.reorder.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { isMouseEvent } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getWidth, setWidth } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; -import { isMouseEvent } from '@js/events/utils/index'; import Sortable from '@js/ui/sortable'; import EditDecorator from './m_list.edit.decorator'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.selection.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.selection.ts index 439109aaafe5..e0a5ff758ec2 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.selection.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.selection.ts @@ -1,10 +1,10 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { Deferred, type DeferredObj } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import CheckBox from '@js/ui/check_box'; import RadioButton from '@js/ui/radio_group/radio_button'; import errors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.swipe.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.swipe.ts index 21211b6ce514..92034e437435 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.swipe.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.swipe.ts @@ -1,5 +1,5 @@ -import fx from '@js/animation/fx'; -import { move } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { move } from '@js/common/core/animation/translator'; import { Deferred } from '@js/core/utils/deferred'; import { getWidth } from '@js/core/utils/size'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.button.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.button.ts index 73b27f305daa..dfe55b474bd0 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.button.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.button.ts @@ -1,7 +1,7 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { getOuterWidth, getWidth } from '@js/core/utils/size'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import { isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.slide.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.slide.ts index 06bf94d30bf7..81878f22113c 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.slide.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.slide.ts @@ -1,13 +1,13 @@ -import fx from '@js/animation/fx'; -import { locate, move } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { locate, move } from '@js/common/core/animation/translator'; +import { name as clickEventName } from '@js/common/core/events/click'; +import { active } from '@js/common/core/events/core/emitter.feedback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { getOuterWidth, setWidth } from '@js/core/utils/size'; -import { name as clickEventName } from '@js/events/click'; -import { active } from '@js/events/core/emitter.feedback'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import ActionSheet from '@js/ui/action_sheet'; import { isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.ts index 320f64e8804d..c2a2c7cbe771 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.switchable.ts @@ -1,10 +1,10 @@ +import { active } from '@js/common/core/events/core/emitter.feedback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { getOuterHeight, setHeight } from '@js/core/utils/size'; -import { active } from '@js/events/core/emitter.feedback'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import EditDecorator from './m_list.edit.decorator'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.ts index 6eede70a613f..cf883ae334c3 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.decorator.ts @@ -1,14 +1,14 @@ -import Class from '@js/core/class'; -import $ from '@js/core/renderer'; -import { noop } from '@js/core/utils/common'; -import { getWidth } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import { end as swipeEventEnd, start as swipeEventStart, swipe as swipeEventSwipe, -} from '@js/events/swipe'; -import { addNamespace } from '@js/events/utils/index'; +} from '@js/common/core/events/swipe'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import Class from '@js/core/class'; +import $ from '@js/core/renderer'; +import { noop } from '@js/core/utils/common'; +import { getWidth } from '@js/core/utils/size'; const LIST_EDIT_DECORATOR = 'dxListEditDecorator'; const SWIPE_START_EVENT_NAME = addNamespace(swipeEventStart, LIST_EDIT_DECORATOR); diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.strategy.grouped.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.strategy.grouped.ts index a1804e5b7877..9dc94180c61f 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.strategy.grouped.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.strategy.grouped.ts @@ -1,8 +1,8 @@ +import query from '@js/common/data/query'; +import storeHelper from '@js/common/data/store_helper'; import $ from '@js/core/renderer'; import { each } from '@js/core/utils/iterator'; import { isNumeric } from '@js/core/utils/type'; -import query from '@js/data/query'; -import storeHelper from '@js/data/store_helper'; import EditStrategy from '@ts/ui/collection/m_collection_widget.edit.strategy.plain'; const LIST_ITEM_CLASS = 'dx-list-item'; diff --git a/packages/devextreme/js/__internal/ui/list/m_list.edit.ts b/packages/devextreme/js/__internal/ui/list/m_list.edit.ts index c464c048dcaf..5b8f8d09ec23 100644 --- a/packages/devextreme/js/__internal/ui/list/m_list.edit.ts +++ b/packages/devextreme/js/__internal/ui/list/m_list.edit.ts @@ -1,7 +1,7 @@ +import { isTouchEvent } from '@js/common/core/events/utils/index'; +import localizationMessage from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import { isTouchEvent } from '@js/events/utils/index'; -import localizationMessage from '@js/localization/message'; import { ListBase } from './m_list.base'; import EditProvider from './m_list.edit.provider'; diff --git a/packages/devextreme/js/__internal/ui/m_accordion.ts b/packages/devextreme/js/__internal/ui/m_accordion.ts index a1c1f08e94fb..9dff961f85a7 100644 --- a/packages/devextreme/js/__internal/ui/m_accordion.ts +++ b/packages/devextreme/js/__internal/ui/m_accordion.ts @@ -1,4 +1,7 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -12,9 +15,6 @@ import { getImageContainer } from '@js/core/utils/icon'; import * as iteratorUtils from '@js/core/utils/iterator'; import { getHeight, getOuterHeight, setHeight } from '@js/core/utils/size'; import { isDefined, isPlainObject } from '@js/core/utils/type'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.live_update'; import { isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/m_action_sheet.ts b/packages/devextreme/js/__internal/ui/m_action_sheet.ts index bbe997297eac..754c9e6d72eb 100644 --- a/packages/devextreme/js/__internal/ui/m_action_sheet.ts +++ b/packages/devextreme/js/__internal/ui/m_action_sheet.ts @@ -1,3 +1,4 @@ +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { BindableTemplate } from '@js/core/templates/bindable_template'; @@ -5,7 +6,6 @@ import { noop } from '@js/core/utils/common'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { getWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.edit'; import Popover from '@js/ui/popover/ui.popover'; diff --git a/packages/devextreme/js/__internal/ui/m_autocomplete.ts b/packages/devextreme/js/__internal/ui/m_autocomplete.ts index fde9e9388e2e..0d0b5e25b557 100644 --- a/packages/devextreme/js/__internal/ui/m_autocomplete.ts +++ b/packages/devextreme/js/__internal/ui/m_autocomplete.ts @@ -1,9 +1,9 @@ +import { isCommandKeyPressed } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; -import { isCommandKeyPressed } from '@js/events/utils/index'; import DropDownList from '@js/ui/drop_down_editor/ui.drop_down_list'; const AUTOCOMPLETE_CLASS = 'dx-autocomplete'; diff --git a/packages/devextreme/js/__internal/ui/m_defer_rendering.ts b/packages/devextreme/js/__internal/ui/m_defer_rendering.ts index 1894a410a47d..75ac61edb085 100644 --- a/packages/devextreme/js/__internal/ui/m_defer_rendering.ts +++ b/packages/devextreme/js/__internal/ui/m_defer_rendering.ts @@ -1,4 +1,6 @@ -import { TransitionExecutor } from '@js/animation/transition_executor/transition_executor'; +import { TransitionExecutor } from '@js/common/core/animation/transition_executor/transition_executor'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { triggerShownEvent } from '@js/common/core/events/visibility_change'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; @@ -17,8 +19,6 @@ import { each } from '@js/core/utils/iterator'; import { getBoundingRect } from '@js/core/utils/position'; import { isPromise } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { triggerShownEvent } from '@js/events/visibility_change'; import LoadIndicator from '@js/ui/load_indicator'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/m_dialog.ts b/packages/devextreme/js/__internal/ui/m_dialog.ts index 5bf591ec0c58..05a3ae4c94fe 100644 --- a/packages/devextreme/js/__internal/ui/m_dialog.ts +++ b/packages/devextreme/js/__internal/ui/m_dialog.ts @@ -1,3 +1,5 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import messageLocalization from '@js/common/core/localization/message'; import Action from '@js/core/action'; import config from '@js/core/config'; import devices from '@js/core/devices'; @@ -10,8 +12,6 @@ import { getHeight, getWidth } from '@js/core/utils/size'; import { isPlainObject } from '@js/core/utils/type'; import { value as getViewport } from '@js/core/utils/view_port'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import messageLocalization from '@js/localization/message'; import Popup from '@js/ui/popup/ui.popup'; import { isFluent } from '@js/ui/themes'; import errors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/m_drop_down_box.ts b/packages/devextreme/js/__internal/ui/m_drop_down_box.ts index cf6dbb96de22..dbf14e91dd60 100644 --- a/packages/devextreme/js/__internal/ui/m_drop_down_box.ts +++ b/packages/devextreme/js/__internal/ui/m_drop_down_box.ts @@ -1,3 +1,5 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { normalizeKeyName } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -9,8 +11,6 @@ import { Deferred, when } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { map } from '@js/core/utils/iterator'; import { isDefined, isObject } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { normalizeKeyName } from '@js/events/utils/index'; import DataExpressionMixin from '@js/ui/editor/ui.data_expression'; import { tabbable } from '@js/ui/widget/selectors'; import DropDownEditor from '@ts/ui/drop_down_editor/m_drop_down_editor'; diff --git a/packages/devextreme/js/__internal/ui/m_drop_down_button.ts b/packages/devextreme/js/__internal/ui/m_drop_down_button.ts index 0ea068ef0dc2..49ba7ec7a25a 100644 --- a/packages/devextreme/js/__internal/ui/m_drop_down_button.ts +++ b/packages/devextreme/js/__internal/ui/m_drop_down_button.ts @@ -1,3 +1,4 @@ +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import { getPublicElement } from '@js/core/element'; import Guid from '@js/core/guid'; @@ -10,7 +11,6 @@ import { extend } from '@js/core/utils/extend'; import { getImageContainer } from '@js/core/utils/icon'; import { isDefined, isObject, isPlainObject } from '@js/core/utils/type'; import DataController from '@js/data_controller'; -import messageLocalization from '@js/localization/message'; import ButtonGroup from '@js/ui/button_group'; import List from '@js/ui/list_light'; import Popup from '@js/ui/popup/ui.popup'; diff --git a/packages/devextreme/js/__internal/ui/m_file_uploader.ts b/packages/devextreme/js/__internal/ui/m_file_uploader.ts index a40626874bc1..9a18fdc2d69c 100644 --- a/packages/devextreme/js/__internal/ui/m_file_uploader.ts +++ b/packages/devextreme/js/__internal/ui/m_file_uploader.ts @@ -1,4 +1,8 @@ /* eslint-disable max-classes-per-file */ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, isTouchEvent } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -14,10 +18,6 @@ import { each } from '@js/core/utils/iterator'; import { getOffset, getWidth } from '@js/core/utils/size'; import { isDefined, isFunction, isNumeric } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, isTouchEvent } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import type { ButtonStyle, ButtonType } from '@js/ui/button'; import Button from '@js/ui/button'; import type { Properties as PublicProperties } from '@js/ui/file_uploader'; diff --git a/packages/devextreme/js/__internal/ui/m_gallery.ts b/packages/devextreme/js/__internal/ui/m_gallery.ts index 69f20a920198..da1f5b71aff6 100644 --- a/packages/devextreme/js/__internal/ui/m_gallery.ts +++ b/packages/devextreme/js/__internal/ui/m_gallery.ts @@ -1,5 +1,11 @@ -import fx from '@js/animation/fx'; -import { move } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { move } from '@js/common/core/animation/translator'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import Swipeable from '@js/common/core/events/gesture/swipeable'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -13,12 +19,6 @@ import { } from '@js/core/utils/size'; import { isDefined, isPlainObject } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import Swipeable from '@js/events/gesture/swipeable'; -import { addNamespace } from '@js/events/utils/index'; -import { triggerResizeEvent } from '@js/events/visibility_change'; -import messageLocalization from '@js/localization/message'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.edit'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/m_load_indicator.ts b/packages/devextreme/js/__internal/ui/m_load_indicator.ts index fb3f48ba0749..236a336da665 100644 --- a/packages/devextreme/js/__internal/ui/m_load_indicator.ts +++ b/packages/devextreme/js/__internal/ui/m_load_indicator.ts @@ -1,10 +1,10 @@ +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getHeight, getWidth } from '@js/core/utils/size'; import { getNavigator } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; // @ts-expect-error import { current, isGeneric, isMaterialBased } from '@js/ui/themes'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/m_load_panel.ts b/packages/devextreme/js/__internal/ui/m_load_panel.ts index 814d508493e6..2af54f41313a 100644 --- a/packages/devextreme/js/__internal/ui/m_load_panel.ts +++ b/packages/devextreme/js/__internal/ui/m_load_panel.ts @@ -1,9 +1,9 @@ +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; -import messageLocalization from '@js/localization/message'; import LoadIndicator from '@js/ui/load_indicator'; import Overlay from '@js/ui/overlay/ui.overlay'; import { isFluent, isMaterial } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/m_lookup.ts b/packages/devextreme/js/__internal/ui/m_lookup.ts index 996b610c8ab8..d43b84eb0384 100644 --- a/packages/devextreme/js/__internal/ui/m_lookup.ts +++ b/packages/devextreme/js/__internal/ui/m_lookup.ts @@ -1,4 +1,6 @@ -import { locate, move, resetPosition } from '@js/animation/translator'; +import { locate, move, resetPosition } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -13,8 +15,6 @@ import { } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; import { getWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import messageLocalization from '@js/localization/message'; import DropDownList from '@js/ui/drop_down_editor/ui.drop_down_list'; import Popover from '@js/ui/popover/ui.popover'; import TextBox from '@js/ui/text_box'; diff --git a/packages/devextreme/js/__internal/ui/m_multi_view.ts b/packages/devextreme/js/__internal/ui/m_multi_view.ts index 1eebc72ad25f..7a8ad4f3ae99 100644 --- a/packages/devextreme/js/__internal/ui/m_multi_view.ts +++ b/packages/devextreme/js/__internal/ui/m_multi_view.ts @@ -1,4 +1,7 @@ -import { locate } from '@js/animation/translator'; +import { locate } from '@js/common/core/animation/translator'; +import Swipeable from '@js/common/core/events/gesture/swipeable'; +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -9,9 +12,6 @@ import { extend } from '@js/core/utils/extend'; import { sign } from '@js/core/utils/math'; import { getWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import Swipeable from '@js/events/gesture/swipeable'; -import { triggerResizeEvent } from '@js/events/visibility_change'; -import messageLocalization from '@js/localization/message'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.live_update'; import { _translator, animation } from './multi_view/m_multi_view.animation'; diff --git a/packages/devextreme/js/__internal/ui/m_range_slider.ts b/packages/devextreme/js/__internal/ui/m_range_slider.ts index 8f0501990950..b9fd532e0ae4 100644 --- a/packages/devextreme/js/__internal/ui/m_range_slider.ts +++ b/packages/devextreme/js/__internal/ui/m_range_slider.ts @@ -1,12 +1,12 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { eventData } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; // @ts-expect-error import { applyServerDecimalSeparator } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { getWidth } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; -import { eventData } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Slider from '@js/ui/slider'; import SliderHandle from './slider/m_slider_handle'; diff --git a/packages/devextreme/js/__internal/ui/m_select_box.ts b/packages/devextreme/js/__internal/ui/m_select_box.ts index 7d5db4b74df0..5e3afb659c10 100644 --- a/packages/devextreme/js/__internal/ui/m_select_box.ts +++ b/packages/devextreme/js/__internal/ui/m_select_box.ts @@ -1,5 +1,7 @@ import '@ts/ui/list/modules/m_selection'; +import { normalizeKeyName } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -11,8 +13,6 @@ import { Deferred, fromPromise } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isDefined, isPromise } from '@js/core/utils/type'; -import { normalizeKeyName } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import DropDownList from '@js/ui/drop_down_editor/ui.drop_down_list'; const DISABLED_STATE_SELECTOR = '.dx-state-disabled'; diff --git a/packages/devextreme/js/__internal/ui/m_switch.ts b/packages/devextreme/js/__internal/ui/m_switch.ts index 184442a4002f..d2de40a8152d 100644 --- a/packages/devextreme/js/__internal/ui/m_switch.ts +++ b/packages/devextreme/js/__internal/ui/m_switch.ts @@ -1,4 +1,10 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import { name as clickEventName } from '@js/common/core/events/click'; +import { lock } from '@js/common/core/events/core/emitter.feedback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import Swipeable from '@js/common/core/events/gesture/swipeable'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; @@ -6,12 +12,6 @@ import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { getBoundingRect } from '@js/core/utils/position'; import { getOuterWidth } from '@js/core/utils/size'; -import { name as clickEventName } from '@js/events/click'; -import { lock } from '@js/events/core/emitter.feedback'; -import eventsEngine from '@js/events/core/events_engine'; -import Swipeable from '@js/events/gesture/swipeable'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import Editor from '@js/ui/editor/editor'; const SWITCH_CLASS = 'dx-switch'; diff --git a/packages/devextreme/js/__internal/ui/m_tag_box.ts b/packages/devextreme/js/__internal/ui/m_tag_box.ts index 00a424704b45..52c05ea7045a 100644 --- a/packages/devextreme/js/__internal/ui/m_tag_box.ts +++ b/packages/devextreme/js/__internal/ui/m_tag_box.ts @@ -1,3 +1,8 @@ +import { name as clickEvent } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; +import { normalizeLoadResult } from '@js/common/data/data_source/utils'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -16,11 +21,6 @@ import { SelectionFilterCreator as FilterCreator } from '@js/core/utils/selectio import { getHeight, getOuterWidth } from '@js/core/utils/size'; import { isDefined, isObject, isString } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { normalizeLoadResult } from '@js/data/data_source/utils'; -import { name as clickEvent } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import SelectBox from '@js/ui/select_box'; import errors from '@js/ui/widget/ui.errors'; import caret from '@ts/ui/text_box/m_utils.caret'; diff --git a/packages/devextreme/js/__internal/ui/m_text_area.ts b/packages/devextreme/js/__internal/ui/m_text_area.ts index c44159027e0b..e96b7593b6eb 100644 --- a/packages/devextreme/js/__internal/ui/m_text_area.ts +++ b/packages/devextreme/js/__internal/ui/m_text_area.ts @@ -1,3 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import scrollEvents from '@js/common/core/events/gesture/emitter.gesture.scroll'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, eventData } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { ensureDefined, noop } from '@js/core/utils/common'; @@ -7,10 +11,6 @@ import { } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import scrollEvents from '@js/events/gesture/emitter.gesture.scroll'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, eventData } from '@js/events/utils/index'; import TextBox from '@js/ui/text_box'; import { allowScroll, prepareScrollData } from '@ts/ui/text_box/m_utils.scroll'; diff --git a/packages/devextreme/js/__internal/ui/m_track_bar.ts b/packages/devextreme/js/__internal/ui/m_track_bar.ts index d27ad1547dce..2bd30976db84 100644 --- a/packages/devextreme/js/__internal/ui/m_track_bar.ts +++ b/packages/devextreme/js/__internal/ui/m_track_bar.ts @@ -1,4 +1,4 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; diff --git a/packages/devextreme/js/__internal/ui/m_validation_engine.ts b/packages/devextreme/js/__internal/ui/m_validation_engine.ts index 2e16c4df9e42..35858d1ff3c2 100644 --- a/packages/devextreme/js/__internal/ui/m_validation_engine.ts +++ b/packages/devextreme/js/__internal/ui/m_validation_engine.ts @@ -1,4 +1,6 @@ /* eslint-disable max-classes-per-file */ +import messageLocalization from '@js/common/core/localization/message'; +import numberLocalization from '@js/common/core/localization/number'; import Class from '@js/core/class'; import errors from '@js/core/errors'; import { EventsStrategy } from '@js/core/events_strategy'; @@ -20,8 +22,6 @@ import { isPromise, isString, } from '@js/core/utils/type'; -import messageLocalization from '@js/localization/message'; -import numberLocalization from '@js/localization/number'; const EMAIL_VALIDATION_REGEX = /^[\d\w.+_-]+@[\d\w._-]+\.[\w]+$/i; diff --git a/packages/devextreme/js/__internal/ui/m_validation_summary.ts b/packages/devextreme/js/__internal/ui/m_validation_summary.ts index 1a112152a53f..d3c7ea85d50c 100644 --- a/packages/devextreme/js/__internal/ui/m_validation_summary.ts +++ b/packages/devextreme/js/__internal/ui/m_validation_summary.ts @@ -1,9 +1,9 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import registerComponent from '@js/core/component_registrator'; // @ts-expect-error import { grep } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { each, map } from '@js/core/utils/iterator'; -import eventsEngine from '@js/events/core/events_engine'; import CollectionWidget from '@js/ui/collection/ui.collection_widget.edit'; import ValidationEngine from './m_validation_engine'; diff --git a/packages/devextreme/js/__internal/ui/map/m_map.ts b/packages/devextreme/js/__internal/ui/map/m_map.ts index 0978656a6b6b..1548b3613005 100644 --- a/packages/devextreme/js/__internal/ui/map/m_map.ts +++ b/packages/devextreme/js/__internal/ui/map/m_map.ts @@ -1,3 +1,6 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; @@ -9,9 +12,6 @@ import { extend } from '@js/core/utils/extend'; import { titleize } from '@js/core/utils/inflector'; import { each } from '@js/core/utils/iterator'; import { isNumeric } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import errors from '@js/ui/widget/ui.errors'; import Widget from '@js/ui/widget/ui.widget'; diff --git a/packages/devextreme/js/__internal/ui/map/m_provider.google_static.ts b/packages/devextreme/js/__internal/ui/map/m_provider.google_static.ts index 6ba8b1315cd9..5a9d38c315d3 100644 --- a/packages/devextreme/js/__internal/ui/map/m_provider.google_static.ts +++ b/packages/devextreme/js/__internal/ui/map/m_provider.google_static.ts @@ -1,8 +1,8 @@ import Color from '@js/color'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import { each } from '@js/core/utils/iterator'; import { getHeight, getWidth } from '@js/core/utils/size'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; import Provider from './m_provider'; diff --git a/packages/devextreme/js/__internal/ui/map/m_provider.ts b/packages/devextreme/js/__internal/ui/map/m_provider.ts index c77f1445d9a6..dd34bd4d1bbe 100644 --- a/packages/devextreme/js/__internal/ui/map/m_provider.ts +++ b/packages/devextreme/js/__internal/ui/map/m_provider.ts @@ -1,7 +1,7 @@ +import { addNamespace } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import { map } from '@js/core/utils/iterator'; import { isNumeric, isPlainObject } from '@js/core/utils/type'; -import { addNamespace } from '@js/events/utils/index'; const { abstract } = Class; diff --git a/packages/devextreme/js/__internal/ui/menu/m_menu.ts b/packages/devextreme/js/__internal/ui/menu/m_menu.ts index 6c292099d296..8fb0b99009a9 100644 --- a/packages/devextreme/js/__internal/ui/menu/m_menu.ts +++ b/packages/devextreme/js/__internal/ui/menu/m_menu.ts @@ -1,4 +1,8 @@ -import type { PositionConfig } from '@js/animation/position'; +import type { PositionConfig } from '@js/common/core/animation'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { end as hoverEventEnd } from '@js/common/core/events/hover'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import { getPublicElement } from '@js/core/element'; import type { dxElementWrapper } from '@js/core/renderer'; @@ -8,10 +12,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getOuterWidth } from '@js/core/utils/size'; import { isDefined, isObject, isPlainObject } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { end as hoverEventEnd } from '@js/events/hover'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import Button from '@js/ui/button'; import type { Item } from '@js/ui/menu'; import type { Properties as OverlayProperties } from '@js/ui/overlay'; diff --git a/packages/devextreme/js/__internal/ui/menu/m_submenu.ts b/packages/devextreme/js/__internal/ui/menu/m_submenu.ts index 30ede2cb371e..96aaa27e3f9a 100644 --- a/packages/devextreme/js/__internal/ui/menu/m_submenu.ts +++ b/packages/devextreme/js/__internal/ui/menu/m_submenu.ts @@ -1,7 +1,7 @@ import '@js/ui/context_menu'; -import type { PositionConfig } from '@js/animation/position'; -import animationPosition from '@js/animation/position'; +import type { PositionConfig } from '@js/common/core/animation'; +import animationPosition from '@js/common/core/animation/position'; import { getPublicElement } from '@js/core/element'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; @@ -178,7 +178,6 @@ class Submenu extends ContextMenu { position.offset = '2.5 0'; position.at = position.my = 'right bottom'; } - // @ts-expect-error animationPosition.setup(this.$contentDelimiter, position); } diff --git a/packages/devextreme/js/__internal/ui/multi_view/m_multi_view.animation.ts b/packages/devextreme/js/__internal/ui/multi_view/m_multi_view.animation.ts index dd3f3ef4bdfb..efe04ac43cff 100644 --- a/packages/devextreme/js/__internal/ui/multi_view/m_multi_view.animation.ts +++ b/packages/devextreme/js/__internal/ui/multi_view/m_multi_view.animation.ts @@ -1,5 +1,5 @@ -import fx from '@js/animation/fx'; -import { move } from '@js/animation/translator'; +import { fx } from '@js/common/core/animation'; +import { move } from '@js/common/core/animation/translator'; import type { dxElementWrapper } from '@js/core/renderer'; // eslint-disable-next-line @typescript-eslint/naming-convention diff --git a/packages/devextreme/js/__internal/ui/number_box/m_number_box.base.ts b/packages/devextreme/js/__internal/ui/number_box/m_number_box.base.ts index 00f836ade6c6..89609c2545f6 100644 --- a/packages/devextreme/js/__internal/ui/number_box/m_number_box.base.ts +++ b/packages/devextreme/js/__internal/ui/number_box/m_number_box.base.ts @@ -1,3 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + addNamespace, getChar, isCommandKeyPressed, normalizeKeyName, +} from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; @@ -11,11 +16,6 @@ import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { fitIntoRange, inRange } from '@js/core/utils/math'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { - addNamespace, getChar, isCommandKeyPressed, normalizeKeyName, -} from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import TextEditor from '@js/ui/text_box/ui.text_editor'; import SpinButtons from './m_number_box.spins'; diff --git a/packages/devextreme/js/__internal/ui/number_box/m_number_box.caret.ts b/packages/devextreme/js/__internal/ui/number_box/m_number_box.caret.ts index 3373be789bca..88760d7972ff 100644 --- a/packages/devextreme/js/__internal/ui/number_box/m_number_box.caret.ts +++ b/packages/devextreme/js/__internal/ui/number_box/m_number_box.caret.ts @@ -1,6 +1,6 @@ +import number from '@js/common/core/localization/number'; import { escapeRegExp } from '@js/core/utils/common'; import { fitIntoRange } from '@js/core/utils/math'; -import number from '@js/localization/number'; import { getNthOccurrence, getRealSeparatorIndex, splitByIndex } from './m_utils'; diff --git a/packages/devextreme/js/__internal/ui/number_box/m_number_box.mask.ts b/packages/devextreme/js/__internal/ui/number_box/m_number_box.mask.ts index c400b56d2b2a..b5220125bf00 100644 --- a/packages/devextreme/js/__internal/ui/number_box/m_number_box.mask.ts +++ b/packages/devextreme/js/__internal/ui/number_box/m_number_box.mask.ts @@ -1,3 +1,10 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as dxDblClickEvent } from '@js/common/core/events/double_click'; +import { + addNamespace, getChar, isCommandKeyPressed, normalizeKeyName, +} from '@js/common/core/events/utils/index'; +import { getFormat as getLDMLFormat } from '@js/common/core/localization/ldml/number'; +import number from '@js/common/core/localization/number'; import devices from '@js/core/devices'; import { ensureDefined, escapeRegExp } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; @@ -5,13 +12,6 @@ import { fitIntoRange, inRange } from '@js/core/utils/math'; import { isDefined, isFunction, isNumeric, isString, } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as dxDblClickEvent } from '@js/events/double_click'; -import { - addNamespace, getChar, isCommandKeyPressed, normalizeKeyName, -} from '@js/events/utils/index'; -import { getFormat as getLDMLFormat } from '@js/localization/ldml/number'; -import number from '@js/localization/number'; import NumberBoxBase from './m_number_box.base'; import { diff --git a/packages/devextreme/js/__internal/ui/number_box/m_number_box.spin.ts b/packages/devextreme/js/__internal/ui/number_box/m_number_box.spin.ts index e793737c9572..018093e1f112 100644 --- a/packages/devextreme/js/__internal/ui/number_box/m_number_box.spin.ts +++ b/packages/devextreme/js/__internal/ui/number_box/m_number_box.spin.ts @@ -1,12 +1,12 @@ +import { lock } from '@js/common/core/events/core/emitter.feedback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; -import { lock } from '@js/events/core/emitter.feedback'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import Widget from '@js/ui/widget/ui.widget'; const SPIN_CLASS = 'dx-numberbox-spin'; diff --git a/packages/devextreme/js/__internal/ui/number_box/m_number_box.spins.ts b/packages/devextreme/js/__internal/ui/number_box/m_number_box.spins.ts index edd241e304b1..5a4b212f3087 100644 --- a/packages/devextreme/js/__internal/ui/number_box/m_number_box.spins.ts +++ b/packages/devextreme/js/__internal/ui/number_box/m_number_box.spins.ts @@ -1,8 +1,8 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointer from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import eventsEngine from '@js/events/core/events_engine'; -import pointer from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import TextEditorButton from '@ts/ui/text_box/texteditor_button_collection/m_button'; import SpinButton from './m_number_box.spin'; diff --git a/packages/devextreme/js/__internal/ui/overlay/m_overlay.ts b/packages/devextreme/js/__internal/ui/overlay/m_overlay.ts index fff3c3b4bad1..86535626c15b 100644 --- a/packages/devextreme/js/__internal/ui/overlay/m_overlay.ts +++ b/packages/devextreme/js/__internal/ui/overlay/m_overlay.ts @@ -1,4 +1,13 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import { hideCallback as hideTopOverlayCallback } from '@js/common/core/environment/hide_callback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + move as dragEventMove, +} from '@js/common/core/events/drag'; +import pointerEvents from '@js/common/core/events/pointer'; +import { keyboard } from '@js/common/core/events/short'; +import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/common/core/events/utils/index'; +import { triggerHidingEvent, triggerResizeEvent, triggerShownEvent } from '@js/common/core/events/visibility_change'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -17,15 +26,6 @@ import { isFunction, isObject, isPromise, isWindow, } from '@js/core/utils/type'; import { changeCallback } from '@js/core/utils/view_port'; -import eventsEngine from '@js/events/core/events_engine'; -import { - move as dragEventMove, -} from '@js/events/drag'; -import pointerEvents from '@js/events/pointer'; -import { keyboard } from '@js/events/short'; -import { addNamespace, isCommandKeyPressed, normalizeKeyName } from '@js/events/utils/index'; -import { triggerHidingEvent, triggerResizeEvent, triggerShownEvent } from '@js/events/visibility_change'; -import { hideCallback as hideTopOverlayCallback } from '@js/mobile/hide_callback'; import type OverlayInstance from '@js/ui/overlay'; import { tabbable } from '@js/ui/widget/selectors'; import uiErrors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/overlay/m_overlay_position_controller.ts b/packages/devextreme/js/__internal/ui/overlay/m_overlay_position_controller.ts index c05b35db1bf7..d14bd3518c32 100644 --- a/packages/devextreme/js/__internal/ui/overlay/m_overlay_position_controller.ts +++ b/packages/devextreme/js/__internal/ui/overlay/m_overlay_position_controller.ts @@ -1,5 +1,5 @@ -import positionUtils from '@js/animation/position'; -import { locate, move, resetPosition } from '@js/animation/translator'; +import positionUtils from '@js/common/core/animation/position'; +import { locate, move, resetPosition } from '@js/common/core/animation/translator'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; @@ -162,7 +162,6 @@ class OverlayPositionController { positionWrapper() { if (this._$visualContainer) { - // @ts-expect-error positionUtils.setup(this._$wrapper, { my: 'top left', at: 'top left', of: this._$visualContainer }); } } @@ -188,7 +187,6 @@ class OverlayPositionController { this._$wrapper.css('overflow', 'hidden'); if (!this._props._skipContentPositioning) { - // @ts-expect-error const resultPosition = positionUtils.setup(this._$content, this._position); this._initialPosition = resultPosition; } diff --git a/packages/devextreme/js/__internal/ui/popover/m_popover.ts b/packages/devextreme/js/__internal/ui/popover/m_popover.ts index a44645739713..b250bf143193 100644 --- a/packages/devextreme/js/__internal/ui/popover/m_popover.ts +++ b/packages/devextreme/js/__internal/ui/popover/m_popover.ts @@ -1,5 +1,7 @@ -import positionUtils from '@js/animation/position'; -import { move } from '@js/animation/translator'; +import positionUtils from '@js/common/core/animation/position'; +import { move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -12,8 +14,6 @@ import { } from '@js/core/utils/size'; import { isObject, isString } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import Popup from '@js/ui/popup/ui.popup'; import { isMaterial, isMaterialBased } from '@js/ui/themes'; import errors from '@js/ui/widget/ui.errors'; @@ -258,7 +258,6 @@ const Popover = Popup.inherit({ this._updateContentSize(shouldUpdateDimensions); const contentPosition = this._getContainerPosition(); - // @ts-expect-error const resultLocation = positionUtils.setup(this.$overlayContent(), contentPosition); const positionSide = this._getSideByLocation(resultLocation); @@ -288,7 +287,6 @@ const Popover = Popup.inherit({ if (!this.$content() || !shouldUpdateDimensions) { return; } - // @ts-expect-error const containerLocation = positionUtils.calculate(this.$overlayContent(), this._getContainerPosition()); if ((containerLocation.h.oversize > 0) && this._isHorizontalSide() && !containerLocation.h.fit) { @@ -343,13 +341,11 @@ const Popover = Popup.inherit({ const axis = this._isVerticalSide(side) ? 'left' : 'top'; const sizeProperty = this._isVerticalSide(side) ? 'width' : 'height'; const $target = $(this._positionController._position.of); - // @ts-expect-error - const targetOffset = positionUtils.offset($target) || { top: 0, left: 0 }; - // @ts-expect-error + const targetOffset = positionUtils.offset($target) ?? { top: 0, left: 0 }; const contentOffset = positionUtils.offset(this.$overlayContent()); const arrowSize = arrowRect[sizeProperty]; - const contentLocation = contentOffset[axis]; + const contentLocation = contentOffset?.[axis]; const contentSize = getBoundingRect(this.$overlayContent().get(0))[sizeProperty]; const targetLocation = targetOffset[axis]; const targetElement = $target.get(0); diff --git a/packages/devextreme/js/__internal/ui/popover/m_popover_position_controller.ts b/packages/devextreme/js/__internal/ui/popover/m_popover_position_controller.ts index 0d00d2866111..29aa705618c1 100644 --- a/packages/devextreme/js/__internal/ui/popover/m_popover_position_controller.ts +++ b/packages/devextreme/js/__internal/ui/popover/m_popover_position_controller.ts @@ -1,4 +1,4 @@ -import positionUtils from '@js/animation/position'; +import positionUtils from '@js/common/core/animation/position'; import type { dxElementWrapper } from '@js/core/renderer'; // @ts-expect-error import { pairToObject } from '@js/core/utils/common'; @@ -93,9 +93,7 @@ class PopoverPositionController extends OverlayPositionController { } _isPopoverInside(): boolean { - // @ts-expect-error const my = positionUtils.setup.normalizeAlign(this._position.my); - // @ts-expect-error const at = positionUtils.setup.normalizeAlign(this._position.at); return my.h === at.h && my.v === at.v; @@ -110,9 +108,7 @@ class PopoverPositionController extends OverlayPositionController { } _getDisplaySide(position) { - // @ts-expect-error const my = positionUtils.setup.normalizeAlign(position.my); - // @ts-expect-error const at = positionUtils.setup.normalizeAlign(position.at); const weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1; diff --git a/packages/devextreme/js/__internal/ui/popup/m_popup.ts b/packages/devextreme/js/__internal/ui/popup/m_popup.ts index 7739ea48e868..fac7d0cc9259 100644 --- a/packages/devextreme/js/__internal/ui/popup/m_popup.ts +++ b/packages/devextreme/js/__internal/ui/popup/m_popup.ts @@ -1,5 +1,7 @@ import '@js/ui/toolbar/ui.toolbar.base'; +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -24,8 +26,6 @@ import { } from '@js/core/utils/size'; import { isDefined, isObject } from '@js/core/utils/type'; import { compare as compareVersions } from '@js/core/utils/version'; -import { triggerResizeEvent } from '@js/events/visibility_change'; -import messageLocalization from '@js/localization/message'; import Button from '@js/ui/button'; import Overlay from '@js/ui/overlay/ui.overlay'; import type { ToolbarItem } from '@js/ui/popup'; diff --git a/packages/devextreme/js/__internal/ui/popup/m_popup_drag.ts b/packages/devextreme/js/__internal/ui/popup/m_popup_drag.ts index 73ce016aa3e8..d984d73c3d58 100644 --- a/packages/devextreme/js/__internal/ui/popup/m_popup_drag.ts +++ b/packages/devextreme/js/__internal/ui/popup/m_popup_drag.ts @@ -1,15 +1,15 @@ -import { locate, move } from '@js/animation/translator'; -import domAdapter from '@js/core/dom_adapter'; -import { fitIntoRange } from '@js/core/utils/math'; -import { getOffset, getOuterHeight, getOuterWidth } from '@js/core/utils/size'; -import { isWindow } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; +import { locate, move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; import { end as dragEndEvent, move as dragMoveEvent, start as dragStartEvent, -} from '@js/events/drag'; -import { addNamespace } from '@js/events/utils/index'; +} from '@js/common/core/events/drag'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import domAdapter from '@js/core/dom_adapter'; +import { fitIntoRange } from '@js/core/utils/math'; +import { getOffset, getOuterHeight, getOuterWidth } from '@js/core/utils/size'; +import { isWindow } from '@js/core/utils/type'; const KEYBOARD_DRAG_STEP = 5; diff --git a/packages/devextreme/js/__internal/ui/popup/m_popup_position_controller.ts b/packages/devextreme/js/__internal/ui/popup/m_popup_position_controller.ts index 12334b4a5d47..1c0d46fbc48b 100644 --- a/packages/devextreme/js/__internal/ui/popup/m_popup_position_controller.ts +++ b/packages/devextreme/js/__internal/ui/popup/m_popup_position_controller.ts @@ -1,4 +1,4 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { originalViewPort } from '@js/core/utils/view_port'; diff --git a/packages/devextreme/js/__internal/ui/radio_group/m_radio_button.ts b/packages/devextreme/js/__internal/ui/radio_group/m_radio_button.ts index 36ab609b7982..fd31c1302776 100644 --- a/packages/devextreme/js/__internal/ui/radio_group/m_radio_button.ts +++ b/packages/devextreme/js/__internal/ui/radio_group/m_radio_button.ts @@ -1,10 +1,10 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import Editor from '@js/ui/editor/editor'; const RADIO_BUTTON_CLASS = 'dx-radiobutton'; diff --git a/packages/devextreme/js/__internal/ui/resizable/m_resizable.ts b/packages/devextreme/js/__internal/ui/resizable/m_resizable.ts index d02ec6cb39c0..9a3507161565 100644 --- a/packages/devextreme/js/__internal/ui/resizable/m_resizable.ts +++ b/packages/devextreme/js/__internal/ui/resizable/m_resizable.ts @@ -1,4 +1,8 @@ -import { locate, move } from '@js/animation/translator'; +import { locate, move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { end as dragEventEnd, move as dragEventMove, start as dragEventStart } from '@js/common/core/events/drag'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import { triggerResizeEvent } from '@js/common/core/events/visibility_change'; import registerComponent from '@js/core/component_registrator'; import DOMComponent from '@js/core/dom_component'; import $ from '@js/core/renderer'; @@ -12,10 +16,6 @@ import { } from '@js/core/utils/size'; import { isFunction, isPlainObject, isWindow } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { end as dragEventEnd, move as dragEventMove, start as dragEventStart } from '@js/events/drag'; -import { addNamespace } from '@js/events/utils/index'; -import { triggerResizeEvent } from '@js/events/visibility_change'; const RESIZABLE = 'dxResizable'; const RESIZABLE_CLASS = 'dx-resizable'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_animator.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_animator.ts index 65a014773612..7aff7918cecc 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_animator.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_animator.ts @@ -1,4 +1,4 @@ -import { cancelAnimationFrame, requestAnimationFrame } from '@js/animation/frame'; +import { cancelAnimationFrame, requestAnimationFrame } from '@js/common/core/animation/frame'; import Class from '@js/core/class'; import { noop } from '@js/core/utils/common'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.pull_down.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.pull_down.ts index 4fa5508758b5..afc0d98a8c8f 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.pull_down.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.pull_down.ts @@ -1,4 +1,4 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; import $ from '@js/core/renderer'; import Callbacks from '@js/core/utils/callbacks'; import { Deferred } from '@js/core/utils/deferred'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.swipe_down.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.swipe_down.ts index 9e1e73395a88..1af57ac7f611 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.swipe_down.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.native.swipe_down.ts @@ -1,9 +1,9 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; +import { eventData } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; import Callbacks from '@js/core/utils/callbacks'; import { Deferred } from '@js/core/utils/deferred'; import { getOuterHeight } from '@js/core/utils/size'; -import { eventData } from '@js/events/utils/index'; import LoadIndicator from '@js/ui/load_indicator'; import NativeStrategy from './m_scrollable.native'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.ts index d00dff90bf24..57ad746d5bd0 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scroll_view.ts @@ -1,3 +1,4 @@ +import messageLocalization from '@js/common/core/localization/message'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import { getPublicElement } from '@js/core/element'; @@ -5,7 +6,6 @@ import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { hasWindow } from '@js/core/utils/window'; -import messageLocalization from '@js/localization/message'; import LoadIndicator from '@js/ui/load_indicator'; import LoadPanel from '@js/ui/load_panel'; import { isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.native.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.native.ts index 429b15cf60ba..9699c39704f4 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.native.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.native.ts @@ -1,11 +1,11 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { isDxMouseWheelEvent } from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { each } from '@js/core/utils/iterator'; import { getHeight, getWidth } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; -import { isDxMouseWheelEvent } from '@js/events/utils/index'; import Scrollbar from './m_scrollbar'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.simulated.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.simulated.ts index 46d3d27e2540..66309a045793 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.simulated.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.simulated.ts @@ -1,4 +1,11 @@ -import { locate, move, resetPosition } from '@js/animation/translator'; +import { locate, move, resetPosition } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { + addNamespace as addEventNamespace, + isCommandKeyPressed, + isDxMouseWheelEvent, + normalizeKeyName, +} from '@js/common/core/events/utils/index'; import Class from '@js/core/class'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; @@ -19,13 +26,6 @@ import { getBoundingRect } from '@js/core/utils/position'; import { getHeight, getWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import { - addNamespace as addEventNamespace, - isCommandKeyPressed, - isDxMouseWheelEvent, - normalizeKeyName, -} from '@js/events/utils/index'; import Animator from './m_animator'; import Scrollbar from './m_scrollbar'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.ts index 89f68984aaaf..f781eebb4fc6 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollable.ts @@ -1,3 +1,6 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import scrollEvents from '@js/common/core/events/gesture/emitter.gesture.scroll'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import DOMComponent from '@js/core/dom_component'; @@ -12,9 +15,6 @@ import { } from '@js/core/utils/size'; import { isDefined, isPlainObject } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import scrollEvents from '@js/events/gesture/emitter.gesture.scroll'; -import { addNamespace } from '@js/events/utils/index'; import { getElementLocationInternal } from '@ts/ui/scroll_view/utils/get_element_location_internal'; import supportUtils from '../../core/utils/m_support'; diff --git a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollbar.ts b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollbar.ts index cdfec30b44c2..8c04a693e1bb 100644 --- a/packages/devextreme/js/__internal/ui/scroll_view/m_scrollbar.ts +++ b/packages/devextreme/js/__internal/ui/scroll_view/m_scrollbar.ts @@ -1,4 +1,7 @@ -import { move } from '@js/animation/translator'; +import { move } from '@js/common/core/animation/translator'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; // @ts-expect-error @@ -6,9 +9,6 @@ import { deferRenderer } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import readyCallback from '@js/core/utils/ready_callbacks'; import { isPlainObject } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import Widget from '@js/ui/widget/ui.widget'; const SCROLLBAR = 'dxScrollbar'; diff --git a/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.deferred.ts b/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.deferred.ts index 617e73cba900..45b1014aa0c6 100644 --- a/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.deferred.ts +++ b/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.deferred.ts @@ -1,7 +1,7 @@ +import dataQuery from '@js/common/data/query'; import type { DeferredObj } from '@js/core/utils/deferred'; import { Deferred } from '@js/core/utils/deferred'; import { isString } from '@js/core/utils/type'; -import dataQuery from '@js/data/query'; import errors from '@js/ui/widget/ui.errors'; import SelectionStrategy from './m_selection.strategy'; @@ -82,6 +82,7 @@ export default class DeferredStrategy extends SelectionStrategy { }, }, }; + // @ts-expect-error return !!dataQuery([itemData], queryParams).filter(selectionFilter).toArray().length; } diff --git a/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.standard.ts b/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.standard.ts index bafa1b45fa41..7f8ea7c23963 100644 --- a/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.standard.ts +++ b/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.standard.ts @@ -1,3 +1,4 @@ +import dataQuery from '@js/common/data/query'; import { getUniqueValues, removeDuplicates } from '@js/core/utils/array'; import { isKeysEqual } from '@js/core/utils/array_compare'; import { getKeyHash } from '@js/core/utils/common'; @@ -5,7 +6,6 @@ import type { DeferredObj } from '@js/core/utils/deferred'; import { Deferred, when } from '@js/core/utils/deferred'; import { SelectionFilterCreator } from '@js/core/utils/selection_filter'; import { isDefined, isObject } from '@js/core/utils/type'; -import dataQuery from '@js/data/query'; import errors from '@js/ui/widget/ui.errors'; import SelectionStrategy from './m_selection.strategy'; @@ -115,6 +115,7 @@ export default class StandardStrategy extends SelectionStrategy { if (isDeselect) { const { selectedItems } = this.options; deselectedItems = combinedFilter && keys.length !== selectedItems.length + // @ts-expect-error ? dataQuery(selectedItems).filter(combinedFilter).toArray() : selectedItems.slice(0); } diff --git a/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.ts b/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.ts index 3c8e23cfbeaf..8f9a2eed529f 100644 --- a/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.ts +++ b/packages/devextreme/js/__internal/ui/selection/m_selection.strategy.ts @@ -1,3 +1,4 @@ +import dataQuery from '@js/common/data/query'; import { equalByValue, getKeyHash, @@ -5,7 +6,6 @@ import { } from '@js/core/utils/common'; import { Deferred } from '@js/core/utils/deferred'; import { isObject, isPlainObject, isPromise } from '@js/core/utils/type'; -import dataQuery from '@js/data/query'; export default class SelectionStrategy { options: any; @@ -156,6 +156,7 @@ export default class SelectionStrategy { if (localFilter && !isSelectAll) { filteredItems = filteredItems.filter(localFilter); } else if (needLoadAllData) { + // @ts-expect-error filteredItems = dataQuery(filteredItems).filter(remoteFilter).toArray(); } @@ -196,6 +197,7 @@ export default class SelectionStrategy { let selectedItems = this.options.ignoreDisabledItems ? this.options.selectedItems : this.options.selectedItems.filter((item) => !item?.disabled); if (dataFilter) { + // @ts-expect-error selectedItems = dataQuery(selectedItems).filter(dataFilter).toArray(); } diff --git a/packages/devextreme/js/__internal/ui/slider/m_slider.ts b/packages/devextreme/js/__internal/ui/slider/m_slider.ts index 51f370d60ccc..cbd72f849fa1 100644 --- a/packages/devextreme/js/__internal/ui/slider/m_slider.ts +++ b/packages/devextreme/js/__internal/ui/slider/m_slider.ts @@ -1,3 +1,12 @@ +import { name as clickName } from '@js/common/core/events/click'; +import { lock } from '@js/common/core/events/core/emitter.feedback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import Swipeable from '@js/common/core/events/gesture/swipeable'; +import pointerEvents from '@js/common/core/events/pointer'; +import { + addNamespace, eventData, isMouseEvent, isTouchEvent, +} from '@js/common/core/events/utils/index'; +import numberLocalization from '@js/common/core/localization/number'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; @@ -7,15 +16,6 @@ import { Deferred } from '@js/core/utils/deferred'; import { extend } from '@js/core/utils/extend'; import { getExponentLength, getRemainderByDivision, roundFloatPart } from '@js/core/utils/math'; import { getWidth, setWidth } from '@js/core/utils/size'; -import { name as clickName } from '@js/events/click'; -import { lock } from '@js/events/core/emitter.feedback'; -import eventsEngine from '@js/events/core/events_engine'; -import Swipeable from '@js/events/gesture/swipeable'; -import pointerEvents from '@js/events/pointer'; -import { - addNamespace, eventData, isMouseEvent, isTouchEvent, -} from '@js/events/utils/index'; -import numberLocalization from '@js/localization/number'; import { current as currentTheme, isMaterial } from '@js/ui/themes'; import { render } from '@js/ui/widget/utils.ink_ripple'; diff --git a/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip.ts b/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip.ts index d51d927804e9..784891de302f 100644 --- a/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip.ts +++ b/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip.ts @@ -1,5 +1,5 @@ +import numberLocalization from '@js/common/core/localization/number'; import { extend } from '@js/core/utils/extend'; -import numberLocalization from '@js/localization/number'; import Tooltip from '@js/ui/tooltip'; import { SliderTooltipPositionController } from './m_slider_tooltip_position_controller'; diff --git a/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip_position_controller.ts b/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip_position_controller.ts index a4b3eeb760fa..3189c9ec6f7c 100644 --- a/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip_position_controller.ts +++ b/packages/devextreme/js/__internal/ui/slider/m_slider_tooltip_position_controller.ts @@ -1,5 +1,5 @@ -import positionUtils from '@js/animation/position'; -import { move } from '@js/animation/translator'; +import positionUtils from '@js/common/core/animation/position'; +import { move } from '@js/common/core/animation/translator'; import { extend } from '@js/core/utils/extend'; import { isString } from '@js/core/utils/type'; import { PopoverPositionController } from '@ts/ui/popover/m_popover_position_controller'; @@ -36,7 +36,6 @@ class SliderTooltipPositionController extends PopoverPositionController { } _fitIntoSlider() { - // @ts-expect-error const { collisionSide, oversize } = positionUtils.calculate(this._$content, this._position).h; const { left } = this._visualPosition; const isLeftSide = collisionSide === 'left'; diff --git a/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_item.ts b/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_item.ts index cc43aca58d0f..3a8b7dd7bbea 100644 --- a/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_item.ts +++ b/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_item.ts @@ -1,11 +1,11 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getImageContainer } from '@js/core/utils/icon'; import { isPlainObject } from '@js/core/utils/type'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; import Overlay from '@js/ui/overlay/ui.overlay'; import type { Properties as PublicProperties } from '@js/ui/speed_dial_action'; import { isMaterial } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_main_item.ts b/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_main_item.ts index 15c48196802b..0dda420c847e 100644 --- a/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_main_item.ts +++ b/packages/devextreme/js/__internal/ui/speed_dial_action/m_speed_dial_main_item.ts @@ -1,9 +1,9 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import config from '@js/core/config'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getHeight } from '@js/core/utils/size'; -import eventsEngine from '@js/events/core/events_engine'; import { isCompact, isFluent, isMaterial } from '@js/ui/themes'; import swatchContainer from '@js/ui/widget/swatch_container'; import errors from '@js/ui/widget/ui.errors'; diff --git a/packages/devextreme/js/__internal/ui/splitter/resize_handle.ts b/packages/devextreme/js/__internal/ui/splitter/resize_handle.ts index 6eec1305cf50..9cc1873e1d54 100644 --- a/packages/devextreme/js/__internal/ui/splitter/resize_handle.ts +++ b/packages/devextreme/js/__internal/ui/splitter/resize_handle.ts @@ -1,14 +1,14 @@ import type { DragDirection } from '@js/common'; +import { name as CLICK_EVENT } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as DOUBLE_CLICK_EVENT } from '@js/common/core/events/double_click'; +import { end as dragEventEnd, move as dragEventMove, start as dragEventStart } from '@js/common/core/events/drag'; +import { addNamespace, isCommandKeyPressed } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import Guid from '@js/core/guid'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import type { DxEvent } from '@js/events'; -import { name as CLICK_EVENT } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as DOUBLE_CLICK_EVENT } from '@js/events/double_click'; -import { end as dragEventEnd, move as dragEventMove, start as dragEventStart } from '@js/events/drag'; -import { addNamespace, isCommandKeyPressed } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import type { ItemCollapsedEvent, ItemExpandedEvent, ResizeEndEvent, ResizeEvent, ResizeStartEvent, } from '@js/ui/splitter'; diff --git a/packages/devextreme/js/__internal/ui/splitter/splitter.ts b/packages/devextreme/js/__internal/ui/splitter/splitter.ts index 145ced8108a1..25feb83b1dbc 100644 --- a/packages/devextreme/js/__internal/ui/splitter/splitter.ts +++ b/packages/devextreme/js/__internal/ui/splitter/splitter.ts @@ -1,4 +1,5 @@ import type { Orientation } from '@js/common'; +import { lock } from '@js/common/core/events/core/emitter.feedback'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; @@ -15,7 +16,6 @@ import { } from '@js/core/utils/size'; import { isDefined, isObject } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { lock } from '@js/events/core/emitter.feedback'; import type { Item, ItemCollapsedEvent, diff --git a/packages/devextreme/js/__internal/ui/splitter/utils/layout.ts b/packages/devextreme/js/__internal/ui/splitter/utils/layout.ts index a0d846c8b177..27122e2004e5 100644 --- a/packages/devextreme/js/__internal/ui/splitter/utils/layout.ts +++ b/packages/devextreme/js/__internal/ui/splitter/utils/layout.ts @@ -1,4 +1,5 @@ import type { Orientation } from '@js/common'; +import { toFixed } from '@js/common/core/localization/utils'; import type { dxElementWrapper } from '@js/core/renderer'; import { getHeight, @@ -8,7 +9,6 @@ import { normalizeStyleProp, styleProp, } from '@js/core/utils/style'; import { isDefined, isNumeric, isString } from '@js/core/utils/type'; -import { toFixed } from '@js/localization/utils'; import type { Item } from '@js/ui/splitter'; import { compareNumbersWithPrecision, PRECISION } from './number_comparison'; diff --git a/packages/devextreme/js/__internal/ui/splitter/utils/layout_default.ts b/packages/devextreme/js/__internal/ui/splitter/utils/layout_default.ts index 798ee8a0d866..a7fa013f7288 100644 --- a/packages/devextreme/js/__internal/ui/splitter/utils/layout_default.ts +++ b/packages/devextreme/js/__internal/ui/splitter/utils/layout_default.ts @@ -1,5 +1,5 @@ +import { toFixed } from '@js/common/core/localization/utils'; import { isDefined } from '@js/core/utils/type'; -import { toFixed } from '@js/localization/utils'; import { findLastIndexOfVisibleItem, normalizePanelSize } from './layout'; import { compareNumbersWithPrecision, PRECISION } from './number_comparison'; diff --git a/packages/devextreme/js/__internal/ui/splitter/utils/number_comparison.ts b/packages/devextreme/js/__internal/ui/splitter/utils/number_comparison.ts index 670d3307dc62..0416630d991e 100644 --- a/packages/devextreme/js/__internal/ui/splitter/utils/number_comparison.ts +++ b/packages/devextreme/js/__internal/ui/splitter/utils/number_comparison.ts @@ -1,4 +1,4 @@ -import { toFixed } from '@js/localization/utils'; +import { toFixed } from '@js/common/core/localization/utils'; export const PRECISION = 10; diff --git a/packages/devextreme/js/__internal/ui/tabs/m_tabs.ts b/packages/devextreme/js/__internal/ui/tabs/m_tabs.ts index face35ffa494..deb4f7c1d79f 100644 --- a/packages/devextreme/js/__internal/ui/tabs/m_tabs.ts +++ b/packages/devextreme/js/__internal/ui/tabs/m_tabs.ts @@ -1,3 +1,7 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import holdEvent from '@js/common/core/events/hold'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import devices from '@js/core/devices'; import $ from '@js/core/renderer'; @@ -8,10 +12,6 @@ import { each } from '@js/core/utils/iterator'; import { getHeight, getOuterWidth, getWidth } from '@js/core/utils/size'; import { isDefined, isPlainObject } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; -import holdEvent from '@js/events/hold'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import Button from '@js/ui/button'; // eslint-disable-next-line import/no-named-default import { default as CollectionWidget } from '@js/ui/collection/ui.collection_widget.live_update'; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_text_box.ts b/packages/devextreme/js/__internal/ui/text_box/m_text_box.ts index 4f6251a9fb85..32bfec720511 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_text_box.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_text_box.ts @@ -1,9 +1,9 @@ +import { normalizeKeyName } from '@js/common/core/events/utils/index'; import registerComponent from '@js/core/component_registrator'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import { getOuterWidth, getWidth } from '@js/core/utils/size'; import { getWindow } from '@js/core/utils/window'; -import { normalizeKeyName } from '@js/events/utils/index'; import TextEditor from './m_text_editor'; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.base.ts b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.base.ts index 71c712a49748..42e42501905f 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.base.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.base.ts @@ -1,3 +1,6 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace, normalizeKeyName } from '@js/common/core/events/utils/index'; import config from '@js/core/config'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; @@ -9,9 +12,6 @@ import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { getWidth } from '@js/core/utils/size'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace, normalizeKeyName } from '@js/events/utils/index'; import Editor from '@js/ui/editor/editor'; import LoadIndicator from '@js/ui/load_indicator'; import { current, isFluent, isMaterial } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.clear.ts b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.clear.ts index 19640aaf9635..98a1b9268b4a 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.clear.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.clear.ts @@ -1,8 +1,8 @@ +import { name as click } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointer from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; -import { name as click } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import pointer from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; import TextEditorButton from '@ts/ui/text_box/texteditor_button_collection/m_button'; const pointerDown = pointer.down; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.label.ts b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.label.ts index 5aaed4429ea1..dfc4060b3a6b 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.label.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.label.ts @@ -1,13 +1,13 @@ +import { name as click } from '@js/common/core/events/click'; +import { active } from '@js/common/core/events/core/emitter.feedback'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { start as hoverStart } from '@js/common/core/events/hover'; +import { addNamespace } from '@js/common/core/events/utils/index'; import Guid from '@js/core/guid'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; import { getWidth } from '@js/core/utils/size'; import { getWindow } from '@js/core/utils/window'; -import { name as click } from '@js/events/click'; -import { active } from '@js/events/core/emitter.feedback'; -import eventsEngine from '@js/events/core/events_engine'; -import { start as hoverStart } from '@js/events/hover'; -import { addNamespace } from '@js/events/utils/index'; const TEXTEDITOR_LABEL_CLASS = 'dx-texteditor-label'; const TEXTEDITOR_WITH_LABEL_CLASS = 'dx-texteditor-with-label'; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.strategy.ts b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.strategy.ts index 772fc3a57beb..4832d3a02585 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.strategy.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.strategy.ts @@ -1,7 +1,7 @@ +import EventsEngine from '@js/common/core/events/core/events_engine'; +import { addNamespace } from '@js/common/core/events/utils/index'; import browser from '@js/core/utils/browser'; import { clipboardText as getClipboardText } from '@js/core/utils/dom'; -import EventsEngine from '@js/events/core/events_engine'; -import { addNamespace } from '@js/events/utils/index'; const MASK_EVENT_NAMESPACE = 'dxMask'; const BLUR_EVENT = 'blur beforedeactivate'; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.ts b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.ts index 3441f1c700b7..7d01c93a5bc4 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_text_editor.mask.ts @@ -1,15 +1,15 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as wheelEventName } from '@js/common/core/events/core/wheel'; +import { + addNamespace, createEvent, isCommandKeyPressed, normalizeKeyName, +} from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import $ from '@js/core/renderer'; import { noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { each } from '@js/core/utils/iterator'; import { isEmpty } from '@js/core/utils/string'; import { isDefined } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as wheelEventName } from '@js/events/core/wheel'; -import { - addNamespace, createEvent, isCommandKeyPressed, normalizeKeyName, -} from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import { focused } from '@js/ui/widget/selectors'; import TextEditorBase from './m_text_editor.base'; diff --git a/packages/devextreme/js/__internal/ui/text_box/m_utils.scroll.ts b/packages/devextreme/js/__internal/ui/text_box/m_utils.scroll.ts index 5ee6e307f364..3adde44c9925 100644 --- a/packages/devextreme/js/__internal/ui/text_box/m_utils.scroll.ts +++ b/packages/devextreme/js/__internal/ui/text_box/m_utils.scroll.ts @@ -1,5 +1,5 @@ +import { isDxMouseWheelEvent } from '@js/common/core/events/utils/index'; import $ from '@js/core/renderer'; -import { isDxMouseWheelEvent } from '@js/events/utils/index'; // @ts-expect-error const allowScroll = function (container, delta, shiftKey?: boolean) { diff --git a/packages/devextreme/js/__internal/ui/text_box/texteditor_button_collection/m_custom.ts b/packages/devextreme/js/__internal/ui/text_box/texteditor_button_collection/m_custom.ts index 75475fc6559c..e3b4b922030b 100644 --- a/packages/devextreme/js/__internal/ui/text_box/texteditor_button_collection/m_custom.ts +++ b/packages/devextreme/js/__internal/ui/text_box/texteditor_button_collection/m_custom.ts @@ -1,8 +1,8 @@ +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { end, start } from '@js/common/core/events/hover'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { end, start } from '@js/events/hover'; import Button from '@js/ui/button'; import TextEditorButton from './m_button'; diff --git a/packages/devextreme/js/__internal/ui/toast/m_toast.ts b/packages/devextreme/js/__internal/ui/toast/m_toast.ts index a6df10c0a7bd..c53cb40caeee 100644 --- a/packages/devextreme/js/__internal/ui/toast/m_toast.ts +++ b/packages/devextreme/js/__internal/ui/toast/m_toast.ts @@ -1,11 +1,11 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import pointerEvents from '@js/common/core/events/pointer'; import registerComponent from '@js/core/component_registrator'; import domAdapter from '@js/core/dom_adapter'; import $ from '@js/core/renderer'; import { extend } from '@js/core/utils/extend'; import readyCallbacks from '@js/core/utils/ready_callbacks'; import { isString } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import pointerEvents from '@js/events/pointer'; import Overlay from '@js/ui/overlay/ui.overlay'; import { isMaterialBased } from '@js/ui/themes'; diff --git a/packages/devextreme/js/__internal/ui/toolbar/m_toolbar.base.ts b/packages/devextreme/js/__internal/ui/toolbar/m_toolbar.base.ts index 36f7ef9bb329..77b2f91b7974 100644 --- a/packages/devextreme/js/__internal/ui/toolbar/m_toolbar.base.ts +++ b/packages/devextreme/js/__internal/ui/toolbar/m_toolbar.base.ts @@ -1,4 +1,4 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; import registerComponent from '@js/core/component_registrator'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; diff --git a/packages/devextreme/js/__internal/ui/tree_view/m_tree_view.base.ts b/packages/devextreme/js/__internal/ui/tree_view/m_tree_view.base.ts index eb1df50f5cec..bab507e26c34 100644 --- a/packages/devextreme/js/__internal/ui/tree_view/m_tree_view.base.ts +++ b/packages/devextreme/js/__internal/ui/tree_view/m_tree_view.base.ts @@ -1,4 +1,10 @@ -import fx from '@js/animation/fx'; +import { fx } from '@js/common/core/animation'; +import { name as clickEventName } from '@js/common/core/events/click'; +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { name as dblclickEvent } from '@js/common/core/events/double_click'; +import pointerEvents from '@js/common/core/events/pointer'; +import { addNamespace } from '@js/common/core/events/utils/index'; +import messageLocalization from '@js/common/core/localization/message'; import domAdapter from '@js/core/dom_adapter'; import { getPublicElement } from '@js/core/element'; import $ from '@js/core/renderer'; @@ -14,12 +20,6 @@ import { isDefined, isFunction, isPrimitive, isString, } from '@js/core/utils/type'; import { hasWindow } from '@js/core/utils/window'; -import { name as clickEventName } from '@js/events/click'; -import eventsEngine from '@js/events/core/events_engine'; -import { name as dblclickEvent } from '@js/events/double_click'; -import pointerEvents from '@js/events/pointer'; -import { addNamespace } from '@js/events/utils/index'; -import messageLocalization from '@js/localization/message'; import CheckBox from '@js/ui/check_box'; import HierarchicalCollectionWidget from '@js/ui/hierarchical_collection/ui.hierarchical_collection_widget'; import LoadIndicator from '@js/ui/load_indicator'; diff --git a/packages/devextreme/js/__internal/viz/chart_components/m_base_chart.ts b/packages/devextreme/js/__internal/viz/chart_components/m_base_chart.ts index fbc70a2bc258..5a6b1c8382d8 100644 --- a/packages/devextreme/js/__internal/viz/chart_components/m_base_chart.ts +++ b/packages/devextreme/js/__internal/viz/chart_components/m_base_chart.ts @@ -1,10 +1,10 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; +import { isPointerEvent, isTouchEvent } from '@js/common/core/events/utils/index'; // @ts-expect-error import { grep, noop } from '@js/core/utils/common'; import { extend } from '@js/core/utils/extend'; import { reverseEach as _reverseEach } from '@js/core/utils/iterator'; import { isDefined as _isDefined, isFunction } from '@js/core/utils/type'; -import eventsEngine from '@js/events/core/events_engine'; -import { isPointerEvent, isTouchEvent } from '@js/events/utils/index'; import { LayoutManager } from '@js/viz/chart_components/layout_manager'; import * as trackerModule from '@js/viz/chart_components/tracker'; import { ThemeManager } from '@js/viz/components/chart_theme_manager'; diff --git a/packages/devextreme/js/__internal/viz/core/m_base_widget.ts b/packages/devextreme/js/__internal/viz/core/m_base_widget.ts index bd9c5079613d..511302860a8e 100644 --- a/packages/devextreme/js/__internal/viz/core/m_base_widget.ts +++ b/packages/devextreme/js/__internal/viz/core/m_base_widget.ts @@ -1,3 +1,4 @@ +import eventsEngine from '@js/common/core/events/core/events_engine'; import devices from '@js/core/devices'; import domAdapter from '@js/core/dom_adapter'; import DOMComponent from '@js/core/dom_component'; @@ -11,7 +12,6 @@ import { isDefined, isFunction, isNumeric, isObject as _isObject, type, } from '@js/core/utils/type'; import { getWindow, hasWindow } from '@js/core/utils/window'; -import eventsEngine from '@js/events/core/events_engine'; import { BaseThemeManager } from '@js/viz/core/base_theme_manager'; import { createEventTrigger, diff --git a/packages/devextreme/js/animation/frame.d.ts b/packages/devextreme/js/animation/frame.d.ts index b9bd4438793d..52f791ff914a 100644 --- a/packages/devextreme/js/animation/frame.d.ts +++ b/packages/devextreme/js/animation/frame.d.ts @@ -1,15 +1,4 @@ -/** - * @docid utils.cancelAnimationFrame - * @publicName cancelAnimationFrame(requestID) - * @namespace DevExpress.utils - * @public - */ -export function cancelAnimationFrame(requestID: number): void; - -/** - * @docid utils.requestAnimationFrame - * @publicName requestAnimationFrame(callback) - * @namespace DevExpress.utils - * @public - */ -export function requestAnimationFrame(callback: Function): number; +export { + cancelAnimationFrame, + requestAnimationFrame, +} from '../common/core/animation'; diff --git a/packages/devextreme/js/animation/frame.js b/packages/devextreme/js/animation/frame.js new file mode 100644 index 000000000000..d2d9b93ca616 --- /dev/null +++ b/packages/devextreme/js/animation/frame.js @@ -0,0 +1 @@ +export { cancelAnimationFrame, requestAnimationFrame } from '../common/core/animation'; diff --git a/packages/devextreme/js/animation/fx.d.ts b/packages/devextreme/js/animation/fx.d.ts index d92b547687a8..e23f4c360e09 100644 --- a/packages/devextreme/js/animation/fx.d.ts +++ b/packages/devextreme/js/animation/fx.d.ts @@ -1,153 +1,15 @@ -import { DxElement } from '../core/element'; -import { DxPromise } from '../core/utils/deferred'; -import { PositionConfig } from './position'; +import { fx, AnimationConfig } from '../common/core/animation'; -import { - Direction, -} from '../common'; - -export type AnimationType = 'css' | 'fade' | 'fadeIn' | 'fadeOut' | 'pop' | 'slide' | 'slideIn' | 'slideOut'; - -/** - * @docid - * @public - * @type object - */ -export type AnimationState = string | number | { - /** - * @docid - * @public - */ - opacity: number; -} | { - /** - * @docid - * @public - */ - scale: number; -} | { - /** - * @docid - * @public - */ - position: PositionConfig; -} | { - /** - * @docid - * @public - */ - left: number; -} | { - /** - * @docid - * @public - */ - top: number; -}; - -/** - * @docid - * @namespace DevExpress - * @type object|number|string - * @public - */ -export type AnimationConfig = { - /** - * @docid - * @public - */ - complete?: (($element: DxElement, config: AnimationConfig) => void); - /** - * @docid - * @default 0 - * @public - */ - delay?: number; - /** - * @docid - * @default undefined - * @public - */ - direction?: Direction | undefined; - /** - * @docid - * @default 400 - * @public - */ - duration?: number; - /** - * @docid - * @default 'ease' - * @public - */ - easing?: string; - /** - * @docid - * @default {} - * @public - */ - from?: AnimationState; - /** - * @docid - * @default undefined - * @public - */ - staggerDelay?: number | undefined; - /** - * @docid - * @public - */ - start?: (($element: DxElement, config: AnimationConfig) => void); - /** - * @docid - * @default {} - * @public - */ - to?: AnimationState; - /** - * @docid - * @default 'custom' - * @public - */ - type?: AnimationType; -}; +export { + AnimationState, + AnimationConfig, + AnimationType, +} from '../common/core/animation'; /** * @public - * @deprecated Use the AnimationConfig type instead + * @deprecated Use the AnimationConfig type from common/core/animation instead */ export type animationConfig = AnimationConfig; -/** - * @public - * @docid - * @section utils - * @namespace DevExpress - */ -declare const fx: { - /** - * @docid - * @publicName animate(element, config) - * @return Promise - * @namespace DevExpress.fx - * @public - */ - animate(element: Element, config: AnimationConfig): DxPromise; - - /** - * @docid - * @publicName isAnimating(element) - * @namespace DevExpress.fx - * @public - */ - isAnimating(element: Element): boolean; - - /** - * @docid - * @publicName stop(element, jumpToEnd) - * @namespace DevExpress.fx - * @public - */ - stop(element: Element, jumpToEnd: boolean): void; -}; export default fx; diff --git a/packages/devextreme/js/animation/fx.js b/packages/devextreme/js/animation/fx.js new file mode 100644 index 000000000000..8cbfcfb4bd36 --- /dev/null +++ b/packages/devextreme/js/animation/fx.js @@ -0,0 +1,3 @@ +import { fx } from '../common/core/animation'; + +export default fx; diff --git a/packages/devextreme/js/animation/position.d.ts b/packages/devextreme/js/animation/position.d.ts index bdc714237b6d..f318b2db2287 100644 --- a/packages/devextreme/js/animation/position.d.ts +++ b/packages/devextreme/js/animation/position.d.ts @@ -1,115 +1,14 @@ -import { - UserDefinedElement, -} from '../core/element'; +import { PositionConfig } from '../common/core/animation'; -import { - HorizontalAlignment, - PositionAlignment, - VerticalAlignment, -} from '../common'; - -/** @public */ -export type CollisionResolution = 'fit' | 'flip' | 'flipfit' | 'none'; -/** @public */ -export type CollisionResolutionCombination = 'fit' | 'fit flip' | 'fit flipfit' | 'fit none' | 'flip' | 'flip fit' | 'flip none' | 'flipfit' | 'flipfit fit' | 'flipfit none' | 'none' | 'none fit' | 'none flip' | 'none flipfit'; - -/** - * @docid - * @namespace DevExpress - * @type object - * @public - */ -export interface PositionConfig { - /** - * @docid - * @public - */ - at?: PositionAlignment | { - /** - * @docid - */ - x?: HorizontalAlignment; - /** - * @docid - */ - y?: VerticalAlignment; - }; - /** - * @docid - * @public - */ - boundary?: string | UserDefinedElement | Window; - /** - * @docid - * @public - */ - boundaryOffset?: string | { - /** - * @docid - * @default 0 - */ - x?: number; - /** - * @docid - * @default 0 - */ - y?: number; - }; - /** - * @docid - * @public - */ - collision?: CollisionResolutionCombination | { - /** - * @docid - * @default 'none' - */ - x?: CollisionResolution; - /** - * @docid - * @default 'none' - */ - y?: CollisionResolution; - }; - /** - * @docid - * @public - */ - my?: PositionAlignment | { - /** - * @docid - */ - x?: HorizontalAlignment; - /** - * @docid - */ - y?: VerticalAlignment; - }; - /** - * @docid - * @public - */ - of?: string | UserDefinedElement | Window; - /** - * @docid - * @public - */ - offset?: string | { - /** - * @docid - * @default 0 - */ - x?: number; - /** - * @docid - * @default 0 - */ - y?: number; - }; -} +export { + CollisionResolution, + CollisionResolutionCombination, + PositionConfig, +} from '../common/core/animation'; /** * @public - * @deprecated Use the PositionConfig type instead + * @deprecated Use the PositionConfig type from common/core/animation instead + * @namespace DevExpress.animation */ export interface positionConfig extends PositionConfig { } diff --git a/packages/devextreme/js/animation/presets.d.ts b/packages/devextreme/js/animation/presets.d.ts index bed84b56a128..e6b56dc14e3f 100644 --- a/packages/devextreme/js/animation/presets.d.ts +++ b/packages/devextreme/js/animation/presets.d.ts @@ -1,59 +1,3 @@ -import { - Device, -} from '../core/devices'; - -import { - AnimationConfig, -} from './fx'; - -/** - * @docid - * @namespace DevExpress - * @public - */ -declare const animationPresets: { - /** - * @docid - * @publicName applyChanges() - * @public - */ - applyChanges(): void; - /** - * @docid - * @publicName clear() - * @public - */ - clear(): void; - /** - * @docid - * @publicName clear(name) - * @public - */ - clear(name: string): void; - /** - * @docid - * @publicName getPreset(name) - * @public - */ - getPreset(name: string): AnimationConfig; - /** - * @docid - * @publicName registerDefaultPresets() - * @public - */ - registerDefaultPresets(): void; - /** - * @docid - * @publicName registerPreset(name, config) - * @public - */ - registerPreset(name: string, config: { animation: AnimationConfig; device?: Device }): void; - /** - * @docid - * @publicName resetToDefaults() - * @public - */ - resetToDefaults(): void; -}; +import { animationPresets } from '../common/core/animation'; export default animationPresets; diff --git a/packages/devextreme/js/animation/presets.js b/packages/devextreme/js/animation/presets.js new file mode 100644 index 000000000000..e6b56dc14e3f --- /dev/null +++ b/packages/devextreme/js/animation/presets.js @@ -0,0 +1,3 @@ +import { animationPresets } from '../common/core/animation'; + +export default animationPresets; diff --git a/packages/devextreme/js/animation/transition_executor.d.ts b/packages/devextreme/js/animation/transition_executor.d.ts index ebfe785da8d4..231dbc1b3789 100644 --- a/packages/devextreme/js/animation/transition_executor.d.ts +++ b/packages/devextreme/js/animation/transition_executor.d.ts @@ -1,52 +1,3 @@ -import { - UserDefinedElementsArray, -} from '../core/element'; +import { TransitionExecutor } from '../common/core/animation'; -import { - DxPromise, -} from '../core/utils/deferred'; - -import { - AnimationConfig, -} from './fx'; - -/** - * @docid - * @namespace DevExpress - * @public - */ -export default class TransitionExecutor { - /** - * @docid - * @publicName enter(elements, animation) - * @param1 elements:jQuery - * @public - */ - enter(elements: UserDefinedElementsArray, animation: AnimationConfig | string): void; - /** - * @docid - * @publicName leave(elements, animation) - * @param1 elements:jQuery - * @public - */ - leave(elements: UserDefinedElementsArray, animation: AnimationConfig | string): void; - /** - * @docid - * @publicName reset() - * @public - */ - reset(): void; - /** - * @docid - * @publicName start() - * @return Promise - * @public - */ - start(): DxPromise; - /** - * @docid - * @publicName stop() - * @public - */ - stop(): void; -} +export default TransitionExecutor; diff --git a/packages/devextreme/js/animation/transition_executor.js b/packages/devextreme/js/animation/transition_executor.js new file mode 100644 index 000000000000..231dbc1b3789 --- /dev/null +++ b/packages/devextreme/js/animation/transition_executor.js @@ -0,0 +1,3 @@ +import { TransitionExecutor } from '../common/core/animation'; + +export default TransitionExecutor; diff --git a/packages/devextreme/js/bundles/modules/core.js b/packages/devextreme/js/bundles/modules/core.js index 6af1b7be42b0..d50aaaefd35b 100644 --- a/packages/devextreme/js/bundles/modules/core.js +++ b/packages/devextreme/js/bundles/modules/core.js @@ -12,8 +12,8 @@ if(DevExpress._DEVEXTREME_BUNDLE_INITIALIZED) { DevExpress._DEVEXTREME_BUNDLE_INITIALIZED = true; DevExpress.clientExporter = require('../../exporter'); -DevExpress.excelExporter = require('../../excel_exporter'); -DevExpress.pdfExporter = require('../../pdf_exporter'); +DevExpress.excelExporter = require('../../common/export/excel'); +DevExpress.pdfExporter = require('../../common/export/pdf'); DevExpress.VERSION = require('../../core/version').version; DevExpress.assertDevExtremeVersion = require('../../core/version_check').assertDevExtremeVersion; @@ -24,12 +24,12 @@ DevExpress.DOMComponent = require('../../core/dom_component'); DevExpress.Component = require('../../core/component').Component; DevExpress.registerComponent = require('../../core/component_registrator'); -DevExpress.devices = require('../../core/devices'); +DevExpress.devices = require('../../common/core/environment').devices; DevExpress.trial = require('../../core/trial_panel'); DevExpress.Color = require('../../color'); -const animationFrame = require('../../animation/frame'); +const animationFrame = require('../../common/core/animation/frame'); /** * @name utils @@ -40,14 +40,14 @@ DevExpress.utils = {}; DevExpress.utils.requestAnimationFrame = animationFrame.requestAnimationFrame; DevExpress.utils.cancelAnimationFrame = animationFrame.cancelAnimationFrame; -DevExpress.utils.initMobileViewport = require('../../mobile/init_mobile_viewport/init_mobile_viewport').initMobileViewport; +DevExpress.utils.initMobileViewport = require('../../common/core/environment').initMobileViewport; -DevExpress.utils.getTimeZones = require('../../time_zone_utils').getTimeZones; +DevExpress.utils.getTimeZones = require('../../common/core/environment').getTimeZones; // TODO: MODULARITY: Remove this DevExpress.utils.extendFromObject = require('../../core/utils/extend').extendFromObject; -DevExpress.utils.triggerShownEvent = require('../../events/visibility_change').triggerShownEvent; -DevExpress.utils.triggerHidingEvent = require('../../events/visibility_change').triggerHidingEvent; +DevExpress.utils.triggerShownEvent = require('../../common/core/events/visibility_change').triggerShownEvent; +DevExpress.utils.triggerHidingEvent = require('../../common/core/events/visibility_change').triggerHidingEvent; DevExpress.utils.resetActiveElement = require('../../core/utils/dom').resetActiveElement; DevExpress.utils.findBestMatches = require('../../core/utils/common').findBestMatches; DevExpress.createQueue = require('../../core/utils/queue').create; @@ -66,23 +66,23 @@ DevExpress.utils.ajax = require('../../core/utils/ajax'); DevExpress.viewPort = require('../../core/utils/view_port').value; -DevExpress.hideTopOverlay = require('../../mobile/hide_top_overlay'); +DevExpress.hideTopOverlay = require('../../common/core/environment').hideTopOverlay; DevExpress.formatHelper = require('../../format_helper'); -DevExpress.config = require('../../core/config'); +DevExpress.config = require('../../common').config; -DevExpress.animationPresets = require('../../animation/presets/presets').presets; -DevExpress.fx = require('../../animation/fx'); -DevExpress.TransitionExecutor = require('../../animation/transition_executor/transition_executor').TransitionExecutor; -DevExpress.AnimationPresetCollection = require('../../animation/presets/presets').PresetCollection; +DevExpress.animationPresets = require('../../common/core/animation/presets/presets').presets; +DevExpress.fx = require('../../common/core/animation').fx; +DevExpress.TransitionExecutor = require('../../common/core/animation/transition_executor/transition_executor').TransitionExecutor; +DevExpress.AnimationPresetCollection = require('../../common/core/animation/presets/presets').PresetCollection; -DevExpress.events = require('../../events'); +DevExpress.events = require('../../common/core/events'); -DevExpress.events.click = require('../../events/click'); -DevExpress.events.utils = require('../../events/utils'); -DevExpress.events.GestureEmitter = require('../../events/gesture/emitter.gesture'); +DevExpress.events.click = require('../../common/core/events/click'); +DevExpress.events.utils = require('../../common/core/events/utils/index'); +DevExpress.events.GestureEmitter = require('../../common/core/events/gesture/emitter.gesture'); -DevExpress.localization = require('../../localization'); +DevExpress.localization = require('../../common/core/localization'); DevExpress.templateRendered = require('../../core/templates/template_base').renderedCallbacks; DevExpress.setTemplateEngine = require('../../core/templates/template_engine_registry').setTemplateEngine; diff --git a/packages/devextreme/js/bundles/modules/core.legacy.js b/packages/devextreme/js/bundles/modules/core.legacy.js new file mode 100644 index 000000000000..456e1705f9aa --- /dev/null +++ b/packages/devextreme/js/bundles/modules/core.legacy.js @@ -0,0 +1,27 @@ +/* eslint-disable import/no-commonjs */ +require('../../excel_exporter'); +require('../../pdf_exporter'); +require('../../mobile/hide_top_overlay'); +require('../../mobile/init_mobile_viewport'); +require('../../file_management/custom_provider'); +require('../../file_management/error'); +require('../../file_management/file_system_item'); +require('../../file_management/object_provider'); +require('../../file_management/provider_base'); +require('../../file_management/remote_provider'); +require('../../events/index'); +require('../../time_zone_utils'); +require('../../core/config'); +require('../../core/devices'); +require('../../core/set_template_engine'); +require('../../core/templates/template'); +require('../../animation/frame'); +require('../../animation/fx'); +require('../../animation/presets'); +require('../../animation/transition_executor'); + +require('../../localization/globalize/core'); +require('../../localization/globalize/message'); +require('../../localization/globalize/number'); +require('../../localization/globalize/date'); +require('../../localization/globalize/currency'); diff --git a/packages/devextreme/js/bundles/modules/data.js b/packages/devextreme/js/bundles/modules/data.js index a1b15cd9d629..b96f6a467ec4 100644 --- a/packages/devextreme/js/bundles/modules/data.js +++ b/packages/devextreme/js/bundles/modules/data.js @@ -6,34 +6,34 @@ module.exports = DevExpress.data = DevExpress.data || {}; Object.defineProperty(DevExpress.data, 'errorHandler', { get: function() { - return require('../../data/errors').errorHandler; + return require('../../common/data').errorHandler; }, set: function(value) { errors.log('W0003', 'DevExpress.data', 'errorHandler', '21.1', 'Use the \'setErrorHandler\' method instead'); - require('../../data/errors').setErrorHandler(value); + require('../../common/data/errors').setErrorHandler(value); } }); // TODO: try remove (plugins failed without this) Object.defineProperty(DevExpress.data, '_errorHandler', { get: function() { - return require('../../data/errors').handleError; + return require('../../common/data/errors').handleError; }, set: function(value) { errors.log('W0003', 'DevExpress.data', '_errorHandler', '21.1', 'Use the \'setErrorHandler\' method instead'); - require('../../data/errors').setErrorHandler(value); + require('../../common/data/errors').setErrorHandler(value); } }); -DevExpress.data.setErrorHandler = require('../../data/errors').setErrorHandler; -DevExpress.data.DataSource = require('../../data/data_source'); -DevExpress.data.query = require('../../data/query'); +DevExpress.data.setErrorHandler = require('../../common/data/errors').setErrorHandler; +DevExpress.data.DataSource = require('../../common/data/data_source'); +DevExpress.data.query = require('../../common/data/query'); DevExpress.data.Store = require('../../data/abstract_store'); -DevExpress.data.ArrayStore = require('../../data/array_store'); -DevExpress.data.CustomStore = require('../../data/custom_store'); -DevExpress.data.LocalStore = require('../../data/local_store'); -DevExpress.data.base64_encode = require('../../data/utils').base64_encode; -DevExpress.data.applyChanges = require('../../data/apply_changes'); +DevExpress.data.ArrayStore = require('../../common/data/array_store'); +DevExpress.data.CustomStore = require('../../common/data/custom_store').CustomStore; +DevExpress.data.LocalStore = require('../../common/data/local_store'); +DevExpress.data.base64_encode = require('../../common/data/utils').base64_encode; +DevExpress.data.applyChanges = require('../../common/data/apply_changes'); DevExpress.data.Guid = require('../../core/guid'); @@ -41,12 +41,12 @@ DevExpress.data.utils = {}; DevExpress.data.utils.compileGetter = require('../../core/utils/data').compileGetter; DevExpress.data.utils.compileSetter = require('../../core/utils/data').compileSetter; -DevExpress.EndpointSelector = require('../../data/endpoint_selector'); +DevExpress.EndpointSelector = require('../../common/data/endpoint_selector'); -DevExpress.data.queryImpl = require('../../data/query_implementation').queryImpl; -DevExpress.data.queryAdapters = require('../../data/query_adapters'); +DevExpress.data.queryImpl = require('../../common/data/query_implementation').queryImpl; +DevExpress.data.queryAdapters = require('../../common/data/query_adapters'); -const dataUtils = require('../../data/utils'); +const dataUtils = require('../../common/data/utils'); DevExpress.data.utils.normalizeBinaryCriterion = dataUtils.normalizeBinaryCriterion; DevExpress.data.utils.normalizeSortingInfo = dataUtils.normalizeSortingInfo; @@ -59,7 +59,7 @@ DevExpress.data.utils.processRequestResultLock = dataUtils.processRequestResultL DevExpress.data.utils.toComparable = require('../../core/utils/data').toComparable; -DevExpress.data.utils.multiLevelGroup = require('../../data/store_helper').multiLevelGroup; -DevExpress.data.utils.arrangeSortingInfo = require('../../data/store_helper').arrangeSortingInfo; +DevExpress.data.utils.multiLevelGroup = require('../../common/data/store_helper').multiLevelGroup; +DevExpress.data.utils.arrangeSortingInfo = require('../../common/data/store_helper').arrangeSortingInfo; -DevExpress.data.utils.normalizeDataSourceOptions = require('../../data/data_source/utils').normalizeDataSourceOptions; +DevExpress.data.utils.normalizeDataSourceOptions = require('../../common/data/data_source/utils').normalizeDataSourceOptions; diff --git a/packages/devextreme/js/bundles/modules/data.legacy.js b/packages/devextreme/js/bundles/modules/data.legacy.js new file mode 100644 index 000000000000..383b6263db96 --- /dev/null +++ b/packages/devextreme/js/bundles/modules/data.legacy.js @@ -0,0 +1,14 @@ +/* eslint-disable import/no-commonjs */ +require('../../data/errors'); +require('../../data/data_source'); +require('../../data/query'); +require('../../data/abstract_store'); +require('../../data/array_store'); +require('../../data/custom_store'); +require('../../data/local_store'); +require('../../data/utils'); +require('../../data/apply_changes'); +require('../../core/guid'); +require('../../core/utils/data'); +require('../../data/endpoint_selector'); +require('../../data/utils'); diff --git a/packages/devextreme/js/bundles/modules/data.odata.js b/packages/devextreme/js/bundles/modules/data.odata.js index d8c83c7cf918..72ae54bc7b18 100644 --- a/packages/devextreme/js/bundles/modules/data.odata.js +++ b/packages/devextreme/js/bundles/modules/data.odata.js @@ -2,16 +2,16 @@ /* eslint-disable import/no-commonjs */ require('./data'); -DevExpress.data.ODataStore = require('../../data/odata/store'); -DevExpress.data.ODataContext = require('../../data/odata/context'); +DevExpress.data.ODataStore = require('../../common/data/odata/store'); +DevExpress.data.ODataContext = require('../../common/data/odata/context'); DevExpress.data.utils = DevExpress.data.utils || {}; DevExpress.data.utils.odata = {}; -DevExpress.data.utils.odata.keyConverters = require('../../data/odata/utils').keyConverters; -DevExpress.data.EdmLiteral = require('../../data/odata/utils').EdmLiteral; +DevExpress.data.utils.odata.keyConverters = require('../../common/data/odata/utils').keyConverters; +DevExpress.data.EdmLiteral = require('../../common/data/odata/utils').EdmLiteral; -const ODataUtilsModule = require('../../data/odata/utils'); +const ODataUtilsModule = require('../../common/data/odata/utils'); DevExpress.data.utils.odata.serializePropName = ODataUtilsModule.serializePropName; DevExpress.data.utils.odata.serializeValue = ODataUtilsModule.serializeValue; DevExpress.data.utils.odata.serializeKey = ODataUtilsModule.serializeKey; @@ -22,4 +22,4 @@ DevExpress.data.OData__internals = ODataUtilsModule.OData__internals; ///#ENDDEBUG DevExpress.data.queryAdapters = DevExpress.data.queryAdapters || {}; -DevExpress.data.queryAdapters.odata = require('../../data/odata/query_adapter').odata; +DevExpress.data.queryAdapters.odata = require('../../common/data/odata/query_adapter').odata; diff --git a/packages/devextreme/js/bundles/modules/data.odata.legacy.js b/packages/devextreme/js/bundles/modules/data.odata.legacy.js new file mode 100644 index 000000000000..fb8f1be0f52d --- /dev/null +++ b/packages/devextreme/js/bundles/modules/data.odata.legacy.js @@ -0,0 +1,6 @@ +/* eslint-disable import/no-commonjs */ +require('./data'); + +require('../../data/odata/store'); +require('../../data/odata/context'); +require('../../data/odata/utils'); diff --git a/packages/devextreme/js/bundles/modules/parts/core.js b/packages/devextreme/js/bundles/modules/parts/core.js index fa8f8003c335..42cf4ea853d3 100644 --- a/packages/devextreme/js/bundles/modules/parts/core.js +++ b/packages/devextreme/js/bundles/modules/parts/core.js @@ -3,29 +3,30 @@ /* Core (dx.module-core.js) */ /* eslint-disable import/no-commonjs */ const DevExpress = require('../../../bundles/modules/core'); +require('../../../bundles/modules/core.legacy'); /* Integrations (dx.module-core.js) */ require('../../../integration/jquery'); require('../../../integration/knockout'); -require('../../../localization/globalize/core'); -require('../../../localization/globalize/message'); -require('../../../localization/globalize/number'); -require('../../../localization/globalize/date'); -require('../../../localization/globalize/currency'); +require('../../../common/core/localization/globalize/core'); +require('../../../common/core/localization/globalize/message'); +require('../../../common/core/localization/globalize/number'); +require('../../../common/core/localization/globalize/date'); +require('../../../common/core/localization/globalize/currency'); /* Events (dx.module-core.js) */ -require('../../../events/click'); -require('../../../events/contextmenu'); -require('../../../events/double_click'); -require('../../../events/drag'); -require('../../../events/hold'); -require('../../../events/hover'); -require('../../../events/pointer'); -require('../../../events/swipe'); -require('../../../events/transform'); +require('../../../common/core/events/click'); +require('../../../common/core/events/contextmenu'); +require('../../../common/core/events/double_click'); +require('../../../common/core/events/drag'); +require('../../../common/core/events/hold'); +require('../../../common/core/events/hover'); +require('../../../common/core/events/pointer'); +require('../../../common/core/events/swipe'); +require('../../../common/core/events/transform'); /// BUNDLER_PARTS_END module.exports = DevExpress; diff --git a/packages/devextreme/js/bundles/modules/parts/data.js b/packages/devextreme/js/bundles/modules/parts/data.js index 76699046df9e..28eb725c9fdf 100644 --- a/packages/devextreme/js/bundles/modules/parts/data.js +++ b/packages/devextreme/js/bundles/modules/parts/data.js @@ -5,8 +5,10 @@ const DevExpress = require('./core'); /* Data (dx.module-core.js) */ const data = DevExpress.data = require('../../../bundles/modules/data'); +require('../../../bundles/modules/data.legacy'); data.odata = require('../../../bundles/modules/data.odata'); +require('../../../bundles/modules/data.odata.legacy'); /// BUNDLER_PARTS_END module.exports = data; diff --git a/packages/devextreme/js/common.d.ts b/packages/devextreme/js/common.d.ts index cbacea24eb7c..3410b323816b 100644 --- a/packages/devextreme/js/common.d.ts +++ b/packages/devextreme/js/common.d.ts @@ -1,13 +1,21 @@ -import { PositionConfig } from './animation/position'; +import { PositionConfig } from './common/core/animation'; import type { OmitInternal, } from './core'; -import { FloatingActionButtonDirection } from './core/config'; + +import { + Device, +} from './common/core/environment'; + +import { + DeepPartial, +} from './core'; import type dxDraggable from './ui/draggable'; import type dxScrollable from './ui/scroll_view/ui.scrollable'; import type dxSortable from './ui/sortable'; import type { Properties as ButtonProperties } from './ui/button'; +import { UserDefinedElement } from './core/element'; /** * @public @@ -847,44 +855,66 @@ export type DisplayMode = 'adaptive' | 'compact' | 'full'; /** * @docid - * @hidden - * @namespace DevExpress.common + * @namespace DevExpress.data + * @public */ -export type PagerBase = { - /** - * @docid - * @public - * @default "adaptive" - */ - displayMode?: DisplayMode; - /** - * @docid - * @public - * @default "Page {0} of {1} ({2} items)" - */ - infoText?: string; - /** - * @docid - * @public - * @default false - */ - showInfo?: boolean; +export class Guid { + constructor(); + constructor(value: string); /** * @docid + * @publicName toString() * @public - * @default false - */ - showNavigationButtons?: boolean; - /** - * @docid - * @public - * @default false */ - showPageSizeSelector?: boolean; + toString(): string; /** * @docid + * @publicName valueOf() * @public - * @default "Page Navigation" */ - label?: string; + valueOf(): string; +} + +/** +* @docid +* @public +*/ +export type DefaultOptionsRule = { + device?: Device | Device[] | ((device: Device) => boolean); + options: DeepPartial; }; + +/** @public */ +export type FloatingActionButtonDirection = 'auto' | 'up' | 'down'; + +/** + * @docid + * @publicName config() + * @namespace DevExpress + * @public + */ +export function config(): GlobalConfig; + +/** + * @docid + * @publicName config(config) + * @namespace DevExpress + * @public + */ +// eslint-disable-next-line @typescript-eslint/no-shadow +export function config(config: GlobalConfig): void; + +/** + * @docid + * @section Common + * @public + */ +export type template = string | Function | UserDefinedElement; + +/** + * @docid + * @publicName setTemplateEngine(options) + * @namespace DevExpress + * @public + */ +export function setTemplateEngine(templateEngineOptions: { compile?: Function; render?: Function }): void; diff --git a/packages/devextreme/js/common.js b/packages/devextreme/js/common.js new file mode 100644 index 000000000000..7110b0df4ba5 --- /dev/null +++ b/packages/devextreme/js/common.js @@ -0,0 +1,9 @@ +import config from './common/config'; +import Guid from './common/guid'; +import setTemplateEngine from './common/set_template_engine'; + +export { + config, + Guid, + setTemplateEngine, +}; diff --git a/packages/devextreme/js/common/core/animation.d.ts b/packages/devextreme/js/common/core/animation.d.ts new file mode 100644 index 000000000000..244183143bbc --- /dev/null +++ b/packages/devextreme/js/common/core/animation.d.ts @@ -0,0 +1,368 @@ +import { DxElement, UserDefinedElementsArray, UserDefinedElement } from '../../core/element'; +import { Device } from './environment'; + +import { + HorizontalAlignment, + PositionAlignment, + VerticalAlignment, + Direction, +} from '../../common'; + +import { + DxPromise, +} from '../../core/utils/deferred'; + +export type AnimationType = 'css' | 'fade' | 'fadeIn' | 'fadeOut' | 'pop' | 'slide' | 'slideIn' | 'slideOut'; + +/** + * @docid utils.cancelAnimationFrame + * @publicName cancelAnimationFrame(requestID) + * @namespace DevExpress.common.core.animation + * @public + */ +export function cancelAnimationFrame(requestID: number): void; + +/** + * @docid utils.requestAnimationFrame + * @publicName requestAnimationFrame(callback) + * @namespace DevExpress.common.core.animation + * @public + */ +export function requestAnimationFrame(callback: Function): number; + +/** + * @docid + * @public + * @type object + * @namespace DevExpress.common.core.animation + */ +export type AnimationState = string | number | { + /** + * @docid + * @public + */ + opacity: number; +} | { + /** + * @docid + * @public + */ + scale: number; +} | { + /** + * @docid + * @public + */ + position: PositionConfig; +} | { + /** + * @docid + * @public + */ + left: number; +} | { + /** + * @docid + * @public + */ + top: number; +}; + +/** + * @docid + * @namespace DevExpress.common.core.animation + * @type object|number|string + * @public + */ +export type AnimationConfig = { + /** + * @docid + * @public + */ + complete?: (($element: DxElement, config: AnimationConfig) => void); + /** + * @docid + * @default 0 + * @public + */ + delay?: number; + /** + * @docid + * @default undefined + * @public + */ + direction?: Direction | undefined; + /** + * @docid + * @default 400 + * @public + */ + duration?: number; + /** + * @docid + * @default 'ease' + * @public + */ + easing?: string; + /** + * @docid + * @default {} + * @public + */ + from?: AnimationState; + /** + * @docid + * @default undefined + * @public + */ + staggerDelay?: number | undefined; + /** + * @docid + * @public + */ + start?: (($element: DxElement, config: AnimationConfig) => void); + /** + * @docid + * @default {} + * @public + */ + to?: AnimationState; + /** + * @docid + * @default 'custom' + * @public + */ + type?: AnimationType; +}; + +/** + * @public + * @docid + * @section utils + * @namespace DevExpress.common.core.animation + */ +// eslint-disable-next-line @typescript-eslint/init-declarations +export const fx: { + /** + * @docid + * @publicName animate(element, config) + * @return Promise + * @namespace DevExpress.fx + * @public + */ + animate(element: Element, config: AnimationConfig): DxPromise; + + /** + * @docid + * @publicName isAnimating(element) + * @namespace DevExpress.fx + * @public + */ + isAnimating(element: Element): boolean; + + /** + * @docid + * @publicName stop(element, jumpToEnd) + * @namespace DevExpress.fx + * @public + */ + stop(element: Element, jumpToEnd: boolean): void; +}; + +/** + * @public + * @namespace DevExpress.common.core.animation + */ +export type CollisionResolution = 'fit' | 'flip' | 'flipfit' | 'none'; +/** + * @public + * @namespace DevExpress.common.core.animation + */ +export type CollisionResolutionCombination = 'fit' | 'fit flip' | 'fit flipfit' | 'fit none' | 'flip' | 'flip fit' | 'flip none' | 'flipfit' | 'flipfit fit' | 'flipfit none' | 'none' | 'none fit' | 'none flip' | 'none flipfit'; + +/** + * @docid + * @namespace DevExpress.common.core.animation + * @type object + * @public + */ +export type PositionConfig = { + /** + * @docid + * @public + */ + at?: PositionAlignment | { + /** + * @docid + */ + x?: HorizontalAlignment; + /** + * @docid + */ + y?: VerticalAlignment; + }; + /** + * @docid + * @public + */ + boundary?: string | UserDefinedElement | Window; + /** + * @docid + * @public + */ + boundaryOffset?: string | { + /** + * @docid + * @default 0 + */ + x?: number; + /** + * @docid + * @default 0 + */ + y?: number; + }; + /** + * @docid + * @public + */ + collision?: CollisionResolutionCombination | { + /** + * @docid + * @default 'none' + */ + x?: CollisionResolution; + /** + * @docid + * @default 'none' + */ + y?: CollisionResolution; + }; + /** + * @docid + * @public + */ + my?: PositionAlignment | { + /** + * @docid + */ + x?: HorizontalAlignment; + /** + * @docid + */ + y?: VerticalAlignment; + }; + /** + * @docid + * @public + */ + of?: string | UserDefinedElement | Window; + /** + * @docid + * @public + */ + offset?: string | { + /** + * @docid + * @default 0 + */ + x?: number; + /** + * @docid + * @default 0 + */ + y?: number; + }; +}; + +/** + * @docid + * @namespace DevExpress.common.core.animation + * @public + */ +// eslint-disable-next-line @typescript-eslint/init-declarations +export const animationPresets: { + /** + * @docid + * @publicName applyChanges() + * @public + */ + applyChanges(): void; + /** + * @docid + * @publicName clear() + * @public + */ + clear(): void; + /** + * @docid + * @publicName clear(name) + * @public + */ + clear(name: string): void; + /** + * @docid + * @publicName getPreset(name) + * @public + */ + getPreset(name: string): AnimationConfig; + /** + * @docid + * @publicName registerDefaultPresets() + * @public + */ + registerDefaultPresets(): void; + /** + * @docid + * @publicName registerPreset(name, config) + * @public + */ + registerPreset(name: string, config: { animation: AnimationConfig; device?: Device }): void; + /** + * @docid + * @publicName resetToDefaults() + * @public + */ + resetToDefaults(): void; +}; + +/** + * @docid + * @namespace DevExpress.common.core.animation + * @public + */ +export class TransitionExecutor { + /** + * @docid + * @publicName enter(elements, animation) + * @param1 elements:jQuery + * @public + */ + enter(elements: UserDefinedElementsArray, animation: AnimationConfig | string): void; + /** + * @docid + * @publicName leave(elements, animation) + * @param1 elements:jQuery + * @public + */ + leave(elements: UserDefinedElementsArray, animation: AnimationConfig | string): void; + /** + * @docid + * @publicName reset() + * @public + */ + reset(): void; + /** + * @docid + * @publicName start() + * @return Promise + * @public + */ + start(): DxPromise; + /** + * @docid + * @publicName stop() + * @public + */ + stop(): void; +} diff --git a/packages/devextreme/js/common/core/animation.js b/packages/devextreme/js/common/core/animation.js new file mode 100644 index 000000000000..d759e10cf8f6 --- /dev/null +++ b/packages/devextreme/js/common/core/animation.js @@ -0,0 +1,12 @@ +import { requestAnimationFrame, cancelAnimationFrame } from './animation/frame'; +import fx from './animation/fx'; +import animationPresets from './animation/presets'; +import TransitionExecutor from './animation/transition_executor'; + +export { + requestAnimationFrame, + cancelAnimationFrame, + fx, + animationPresets, + TransitionExecutor, +}; diff --git a/packages/devextreme/js/common/core/animation/easing.js b/packages/devextreme/js/common/core/animation/easing.js index a44fbd765536..8c3e7fc7ff88 100644 --- a/packages/devextreme/js/common/core/animation/easing.js +++ b/packages/devextreme/js/common/core/animation/easing.js @@ -1,4 +1,4 @@ -import { isFunction } from '../core/utils/type'; +import { isFunction } from '../../../core/utils/type'; const CSS_TRANSITION_EASING_REGEX = /cubic-bezier\((\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\)/; diff --git a/packages/devextreme/js/common/core/animation/frame.js b/packages/devextreme/js/common/core/animation/frame.js index 85c3847c9ec6..c1142d2775e2 100644 --- a/packages/devextreme/js/common/core/animation/frame.js +++ b/packages/devextreme/js/common/core/animation/frame.js @@ -1,6 +1,6 @@ -import { hasWindow, getWindow } from '../core/utils/window'; +import { hasWindow, getWindow } from '../../../core/utils/window'; const window = hasWindow() ? getWindow() : {}; -import callOnce from '../core/utils/call_once'; +import callOnce from '../../../core/utils/call_once'; const FRAME_ANIMATION_STEP_TIME = 1000 / 60; diff --git a/packages/devextreme/js/common/core/animation/fx.js b/packages/devextreme/js/common/core/animation/fx.js index c6cc7f7898be..6eaac35fca2c 100644 --- a/packages/devextreme/js/common/core/animation/fx.js +++ b/packages/devextreme/js/common/core/animation/fx.js @@ -1,12 +1,12 @@ -import $ from '../core/renderer'; -import { getWindow } from '../core/utils/window'; +import $ from '../../../core/renderer'; +import { getWindow } from '../../../core/utils/window'; const window = getWindow(); import eventsEngine from '../events/core/events_engine'; -import errors from '../core/errors'; -import { getPublicElement } from '../core/element'; -import { extend } from '../core/utils/extend'; -import { isFunction, isPlainObject } from '../core/utils/type'; -import { each, map } from '../core/utils/iterator'; +import errors from '../../../core/errors'; +import { getPublicElement } from '../../../core/element'; +import { extend } from '../../../core/utils/extend'; +import { isFunction, isPlainObject } from '../../../core/utils/type'; +import { each, map } from '../../../core/utils/iterator'; import { getTranslateCss, parseTranslate, @@ -19,13 +19,13 @@ import { getEasing } from './easing'; import { requestAnimationFrame, cancelAnimationFrame } from './frame'; -import supportUtils from '../__internal/core/utils/m_support'; +import supportUtils from '../../../__internal/core/utils/m_support'; import positionUtils from './position'; import { removeEvent } from '../events/remove'; import { addNamespace } from '../events/utils/index'; -import { when, Deferred } from '../core/utils/deferred'; +import { when, Deferred } from '../../../core/utils/deferred'; const removeEventName = addNamespace(removeEvent, 'dxFX'); -import { noop } from '../core/utils/common'; +import { noop } from '../../../core/utils/common'; const RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i; diff --git a/packages/devextreme/js/common/core/animation/position.js b/packages/devextreme/js/common/core/animation/position.js index a0de691c56d0..23f9edc549d4 100644 --- a/packages/devextreme/js/common/core/animation/position.js +++ b/packages/devextreme/js/common/core/animation/position.js @@ -1,19 +1,19 @@ -import { getOuterWidth, getOuterHeight, getWidth, getHeight } from '../core/utils/size'; -import $ from '../core/renderer'; +import { getOuterWidth, getOuterHeight, getWidth, getHeight } from '../../../core/utils/size'; +import $ from '../../../core/renderer'; -import { splitPair, pairToObject } from '../core/utils/common'; -import { each } from '../core/utils/iterator'; -import { getWindow } from '../core/utils/window'; +import { splitPair, pairToObject } from '../../../core/utils/common'; +import { each } from '../../../core/utils/iterator'; +import { getWindow } from '../../../core/utils/window'; const window = getWindow(); -import domAdapter from '../core/dom_adapter'; -import { isWindow, isDefined } from '../core/utils/type'; -import { extend } from '../core/utils/extend'; -import { getBoundingRect } from '../core/utils/position'; -import browser from '../core/utils/browser'; +import domAdapter from '../../../core/dom_adapter'; +import { isWindow, isDefined } from '../../../core/utils/type'; +import { extend } from '../../../core/utils/extend'; +import { getBoundingRect } from '../../../core/utils/position'; +import browser from '../../../core/utils/browser'; import { resetPosition, move } from './translator'; -import { touch } from '../core/utils/support'; -import devices from '../core/devices'; -import { setStyle } from '../core/utils/style'; +import { touch } from '../../../core/utils/support'; +import devices from '../../../core/devices'; +import { setStyle } from '../../../core/utils/style'; const horzRe = /left|right/; const vertRe = /top|bottom/; diff --git a/packages/devextreme/js/common/core/animation/presets/presets.js b/packages/devextreme/js/common/core/animation/presets/presets.js index 7775d572ff57..3b6f2bf23508 100644 --- a/packages/devextreme/js/common/core/animation/presets/presets.js +++ b/packages/devextreme/js/common/core/animation/presets/presets.js @@ -1,8 +1,8 @@ -import { getWidth } from '../../core/utils/size'; -import { Component } from '../../core/component'; -import { each } from '../../core/utils/iterator'; -import { extend } from '../../core/utils/extend'; -import devices from '../../core/devices'; +import { getWidth } from '../../../../core/utils/size'; +import { Component } from '../../../../core/component'; +import { each } from '../../../../core/utils/iterator'; +import { extend } from '../../../../core/utils/extend'; +import devices from '../../environment/devices'; import fx from '../fx'; const directionPostfixes = { diff --git a/packages/devextreme/js/common/core/animation/transition_executor.js b/packages/devextreme/js/common/core/animation/transition_executor.js index 62e969cd574c..2e874294f9a9 100644 --- a/packages/devextreme/js/common/core/animation/transition_executor.js +++ b/packages/devextreme/js/common/core/animation/transition_executor.js @@ -1,2 +1,3 @@ import { TransitionExecutor } from './transition_executor/transition_executor'; + export default TransitionExecutor; diff --git a/packages/devextreme/js/common/core/animation/transition_executor/transition_executor.js b/packages/devextreme/js/common/core/animation/transition_executor/transition_executor.js index c52563030251..abbd1ad22452 100644 --- a/packages/devextreme/js/common/core/animation/transition_executor/transition_executor.js +++ b/packages/devextreme/js/common/core/animation/transition_executor/transition_executor.js @@ -1,12 +1,12 @@ -import $ from '../../core/renderer'; -import Class from '../../core/class'; -import { extend } from '../../core/utils/extend'; -import commonUtils from '../../__internal/core/utils/m_common'; -import { isFunction, isPlainObject } from '../../core/utils/type'; -import { map } from '../../core/utils/iterator'; +import $ from '../../../../core/renderer'; +import Class from '../../../../core/class'; +import { extend } from '../../../../core/utils/extend'; +import commonUtils from '../../../../__internal/core/utils/m_common'; +import { isFunction, isPlainObject } from '../../../../core/utils/type'; +import { map } from '../../../../core/utils/iterator'; import fx from '../fx'; import { presets } from '../presets/presets'; -import { when, Deferred } from '../../core/utils/deferred'; +import { when, Deferred } from '../../../../core/utils/deferred'; const directionPostfixes = { forward: ' dx-forward', diff --git a/packages/devextreme/js/common/core/animation/translator.js b/packages/devextreme/js/common/core/animation/translator.js index d07d84115ffc..6f3cce60d091 100644 --- a/packages/devextreme/js/common/core/animation/translator.js +++ b/packages/devextreme/js/common/core/animation/translator.js @@ -1,6 +1,6 @@ -import $ from '../core/renderer'; -import { data as elementData, removeData } from '../core/element_data'; -import { type } from '../core/utils/type'; +import $ from '../../../core/renderer'; +import { data as elementData, removeData } from '../../../core/element_data'; +import { type } from '../../../core/utils/type'; const TRANSLATOR_DATA_KEY = 'dxTranslator'; const TRANSFORM_MATRIX_REGEX = /matrix(3d)?\((.+?)\)/; diff --git a/packages/devextreme/js/common/core/environment.d.ts b/packages/devextreme/js/common/core/environment.d.ts new file mode 100644 index 000000000000..f07c872dbcb4 --- /dev/null +++ b/packages/devextreme/js/common/core/environment.d.ts @@ -0,0 +1,101 @@ +/** + * @public + * @docid + * @section commonObjectStructures + * @namespace DevExpress.common.core.environment + */ +export type Device = { + /** + * @docid + * @public + */ + android?: boolean; + /** + * @docid + * @public + */ + deviceType?: 'phone' | 'tablet' | 'desktop'; + /** + * @docid + * @public + */ + generic?: boolean; + /** + * @docid + * @public + */ + grade?: 'A' | 'B' | 'C'; + /** + * @docid + * @public + */ + ios?: boolean; + /** + * @docid + * @public + */ + phone?: boolean; + /** + * @docid + * @public + */ + platform?: 'android' | 'ios' | 'generic'; + /** + * @docid + * @public + */ + tablet?: boolean; + /** + * @docid + * @public + */ + version?: Array; +}; + +type EventName = 'orientationChanged'; + +/** + * @docid + * @publicName hideTopOverlay() + * @namespace DevExpress.common.core.environment + * @public + */ +export function hideTopOverlay(): boolean; + +/** + * @docid utils.initMobileViewport + * @publicName initMobileViewport(options) + * @namespace DevExpress.common.core.environment + * @public + */ +export function initMobileViewport(options: { allowZoom?: boolean; allowPan?: boolean; allowSelection?: boolean }): void; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.environment + */ +export type SchedulerTimeZone = { + /** + * @docid + */ + id: string; + /** + * @docid + */ + offset: number; + /** + * @docid + */ + title: string; +}; + +/** +* @docid utils.getTimeZones +* @publicName getTimeZones(date) +* @param1 date:Date|undefined +* @namespace DevExpress.common.core.environment +* @static +* @public +*/ +export function getTimeZones(date?: Date): Array; diff --git a/packages/devextreme/js/common/core/environment.js b/packages/devextreme/js/common/core/environment.js new file mode 100644 index 000000000000..06bf67894425 --- /dev/null +++ b/packages/devextreme/js/common/core/environment.js @@ -0,0 +1,11 @@ +import devices from './environment/devices'; +import hideTopOverlay from './environment/hide_top_overlay'; +import initMobileViewport from './environment/init_mobile_viewport'; +import { getTimeZones } from './environment/time_zone_utils'; + +export { + devices, + hideTopOverlay, + initMobileViewport, + getTimeZones, +}; diff --git a/packages/devextreme/js/common/core/environment/devices.js b/packages/devextreme/js/common/core/environment/devices.js index 3dec987c04a6..5e7fa24382e6 100644 --- a/packages/devextreme/js/common/core/environment/devices.js +++ b/packages/devextreme/js/common/core/environment/devices.js @@ -5,4 +5,4 @@ * @param1_field1 window:Window * @hidden */ -export { default } from '../__internal/core/m_devices'; +export { default } from '../../../__internal/core/m_devices'; diff --git a/packages/devextreme/js/common/core/environment/init_mobile_viewport.js b/packages/devextreme/js/common/core/environment/init_mobile_viewport.js index e653449b86fb..dcbf6087aa1b 100644 --- a/packages/devextreme/js/common/core/environment/init_mobile_viewport.js +++ b/packages/devextreme/js/common/core/environment/init_mobile_viewport.js @@ -1,2 +1,3 @@ import { initMobileViewport } from './init_mobile_viewport/init_mobile_viewport'; + export default initMobileViewport; diff --git a/packages/devextreme/js/common/core/environment/init_mobile_viewport/init_mobile_viewport.js b/packages/devextreme/js/common/core/environment/init_mobile_viewport/init_mobile_viewport.js index 37b7ccfa47f3..d337bd7dcc8a 100644 --- a/packages/devextreme/js/common/core/environment/init_mobile_viewport/init_mobile_viewport.js +++ b/packages/devextreme/js/common/core/environment/init_mobile_viewport/init_mobile_viewport.js @@ -1,15 +1,15 @@ -import { getWidth, setWidth } from '../../core/utils/size'; -import $ from '../../core/renderer'; -import { getWindow } from '../../core/utils/window'; +import { getWidth, setWidth } from '../../../../core/utils/size'; +import $ from '../../../../core/renderer'; +import { getWindow } from '../../../../core/utils/window'; const window = getWindow(); import eventsEngine from '../../events/core/events_engine'; -import { extend } from '../../core/utils/extend'; -import resizeCallbacks from '../../core/utils/resize_callbacks'; -import { styleProp } from '../../core/utils/style'; +import { extend } from '../../../../core/utils/extend'; +import resizeCallbacks from '../../../../core/utils/resize_callbacks'; +import { styleProp } from '../../../../core/utils/style'; -import devices from '../../__internal/core/m_devices'; -import domAdapter from '../../__internal/core/m_dom_adapter'; -import supportUtils from '../../__internal/core/utils/m_support'; +import devices from '../../../../__internal/core/m_devices'; +import domAdapter from '../../../../__internal/core/m_dom_adapter'; +import supportUtils from '../../../../__internal/core/utils/m_support'; export const initMobileViewport = function(options) { options = extend({}, options); diff --git a/packages/devextreme/js/common/core/environment/time_zone_utils.js b/packages/devextreme/js/common/core/environment/time_zone_utils.js index e959a19f83c2..4bbab0e11a5e 100644 --- a/packages/devextreme/js/common/core/environment/time_zone_utils.js +++ b/packages/devextreme/js/common/core/environment/time_zone_utils.js @@ -1,3 +1,3 @@ -import timeZoneUtils from './__internal/scheduler/m_utils_time_zone'; +import timeZoneUtils from '../../../__internal/scheduler/m_utils_time_zone'; export const getTimeZones = timeZoneUtils.getTimeZones; diff --git a/packages/devextreme/js/common/core/events.d.ts b/packages/devextreme/js/common/core/events.d.ts new file mode 100644 index 000000000000..25cc577bb730 --- /dev/null +++ b/packages/devextreme/js/common/core/events.d.ts @@ -0,0 +1,255 @@ +import { DxElement } from '../../core/element'; +import { + DxEvent, + EventObject as EventObjectInternal, +} from '../../events/events.types'; + +/** + * @section commonObjectStructures + * @public + * @namespace DevExpress.common.core.events + */ +export type EventObject = EventObjectInternal; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type InitializedEventInfo = { + /** + * @docid + * @type this + */ + readonly component?: TComponent; + /** @docid */ + readonly element?: DxElement; +}; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type EventInfo = { + /** + * @docid + * @type this + */ + readonly component: TComponent; + /** @docid */ + readonly element: DxElement; + /** + * @docid + * @hidden + */ + readonly model?: any; +}; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type NativeEventInfo = { + /** + * @docid + * @type this + */ + readonly component: TComponent; + /** @docid */ + readonly element: DxElement; + /** + * @docid + * @hidden + */ + readonly model?: any; + /** + * @docid + * @type event + */ + readonly event?: DxEvent; +}; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type ChangedOptionInfo = { + /** @docid */ + readonly name: string; + /** @docid */ + readonly fullName: string; + /** @docid */ + readonly value?: any; + /** @docid */ + readonly previousValue?: any; +}; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type ItemInfo = { + /** + * @docid + * @type object + */ + readonly itemData?: TItemData; + /** @docid */ + readonly itemElement: DxElement; + /** @docid */ + readonly itemIndex: number; +}; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type Cancelable = { + /** @docid */ + cancel?: boolean; +}; + +/** + * @docid + * @public + * @namespace DevExpress.common.core.events + */ +export type AsyncCancelable = { + /** + * @docid + * @type boolean|Promise + */ + cancel: boolean | PromiseLike; +}; + +/** + * @docid eventsMethods.off + * @publicName off(element) + * @namespace DevExpress.common.core.events + * @public + */ +export function off(element: Element | Array): void; + +/** + * @docid eventsMethods.off + * @publicName off(element, eventName) + * @namespace DevExpress.common.core.events + * @public + */ +export function off(element: Element | Array, eventName: string): void; + +/** + * @docid eventsMethods.off + * @publicName off(element, eventName, handler) + * @namespace DevExpress.common.core.events + * @public + */ +export function off(element: Element | Array, eventName: string, handler: Function): void; + +/** + * @docid eventsMethods.off + * @publicName off(element, eventName, selector) + * @namespace DevExpress.common.core.events + * @public + */ +export function off(element: Element | Array, eventName: string, selector: string): void; + +/** + * @docid eventsMethods.off + * @publicName off(element, eventName, selector, handler) + * @namespace DevExpress.common.core.events + * @public + */ +export function off(element: Element | Array, eventName: string, selector: string, handler: Function): void; + +/** + * @docid eventsMethods.on + * @publicName on(element, eventName, data, handler) + * @namespace DevExpress.common.core.events + * @param3 data:object + * @public + */ +export function on(element: Element | Array, eventName: string, data: any, handler: Function): void; + +/** + * @docid eventsMethods.on + * @publicName on(element, eventName, handler) + * @namespace DevExpress.common.core.events + * @public + */ +export function on(element: Element | Array, eventName: string, handler: Function): void; + +/** + * @docid eventsMethods.on + * @publicName on(element, eventName, selector, data, handler) + * @namespace DevExpress.common.core.events + * @param4 data:object + * @public + */ +export function on(element: Element | Array, eventName: string, selector: string, data: any, handler: Function): void; + +/** + * @docid eventsMethods.on + * @publicName on(element, eventName, selector, handler) + * @namespace DevExpress.common.core.events + * @public + */ +export function on(element: Element | Array, eventName: string, selector: string, handler: Function): void; + +/** + * @docid eventsMethods.one + * @publicName one(element, eventName, data, handler) + * @namespace DevExpress.common.core.events + * @param3 data:object + * @public + */ +export function one(element: Element | Array, eventName: string, data: any, handler: Function): void; + +/** + * @docid eventsMethods.one + * @publicName one(element, eventName, handler) + * @namespace DevExpress.common.core.events + * @public + */ +export function one(element: Element | Array, eventName: string, handler: Function): void; + +/** + * @docid eventsMethods.one + * @publicName one(element, eventName, selector, data, handler) + * @namespace DevExpress.common.core.events + * @param4 data:object + * @public + */ +export function one(element: Element | Array, eventName: string, selector: string, data: any, handler: Function): void; + +/** + * @docid eventsMethods.one + * @publicName one(element, eventName, selector, handler) + * @namespace DevExpress.common.core.events + * @public + */ +export function one(element: Element | Array, eventName: string, selector: string, handler: Function): void; + +/** + * @docid eventsMethods.trigger + * @publicName trigger(element, event) + * @namespace DevExpress.common.core.events + * @param2 event:string|event + * @public + */ +export function trigger(element: Element | Array, event: string | DxEvent): void; + +/** + * @docid eventsMethods.trigger + * @publicName trigger(element, event, extraParameters) + * @namespace DevExpress.common.core.events + * @param2 event:string|event + * @param3 extraParameters:object + * @public + */ +export function trigger(element: Element | Array, event: string | DxEvent, extraParameters: any): void; diff --git a/packages/devextreme/js/common/core/events/index.js b/packages/devextreme/js/common/core/events.js similarity index 77% rename from packages/devextreme/js/common/core/events/index.js rename to packages/devextreme/js/common/core/events.js index 23db4967fe9f..c28aa6b6dc60 100644 --- a/packages/devextreme/js/common/core/events/index.js +++ b/packages/devextreme/js/common/core/events.js @@ -1,4 +1,4 @@ -import eventsEngine from './core/events_engine'; +import eventsEngine from './events/core/events_engine'; /** * @name events @@ -10,7 +10,6 @@ export const on = eventsEngine.on; export const one = eventsEngine.one; export const off = eventsEngine.off; export const trigger = eventsEngine.trigger; -export const triggerHandler = eventsEngine.triggerHandler; /** * @name events.Event diff --git a/packages/devextreme/js/common/core/events/click.js b/packages/devextreme/js/common/core/events/click.js index b11d13e812b5..e8f6d2b71543 100644 --- a/packages/devextreme/js/common/core/events/click.js +++ b/packages/devextreme/js/common/core/events/click.js @@ -5,4 +5,4 @@ * @module events/click */ -export * from '../__internal/events/m_click'; +export * from '../../../__internal/events/m_click'; diff --git a/packages/devextreme/js/common/core/events/contextmenu.js b/packages/devextreme/js/common/core/events/contextmenu.js index d8c4c5830d05..fbc7d931c96a 100644 --- a/packages/devextreme/js/common/core/events/contextmenu.js +++ b/packages/devextreme/js/common/core/events/contextmenu.js @@ -5,4 +5,4 @@ * @module events/contextmenu */ -export * from '../__internal/events/m_contextmenu'; +export * from '../../../__internal/events/m_contextmenu'; diff --git a/packages/devextreme/js/common/core/events/core/emitter.feedback.js b/packages/devextreme/js/common/core/events/core/emitter.feedback.js index f086130e30a5..f9bd36072953 100644 --- a/packages/devextreme/js/common/core/events/core/emitter.feedback.js +++ b/packages/devextreme/js/common/core/events/core/emitter.feedback.js @@ -1 +1 @@ -export * from '../../__internal/events/core/m_emitter.feedback'; +export * from '../../../../__internal/events/core/m_emitter.feedback'; diff --git a/packages/devextreme/js/common/core/events/core/emitter.js b/packages/devextreme/js/common/core/events/core/emitter.js index 223a042f3077..16a98780423c 100644 --- a/packages/devextreme/js/common/core/events/core/emitter.js +++ b/packages/devextreme/js/common/core/events/core/emitter.js @@ -1 +1 @@ -export { default } from '../../__internal/events/core/m_emitter'; +export { default } from '../../../../__internal/events/core/m_emitter'; diff --git a/packages/devextreme/js/common/core/events/core/emitter_registrator.js b/packages/devextreme/js/common/core/events/core/emitter_registrator.js index c9f061241a98..a58da303773d 100644 --- a/packages/devextreme/js/common/core/events/core/emitter_registrator.js +++ b/packages/devextreme/js/common/core/events/core/emitter_registrator.js @@ -1 +1 @@ -export { default } from '../../__internal/events/core/m_emitter_registrator'; +export { default } from '../../../../__internal/events/core/m_emitter_registrator'; diff --git a/packages/devextreme/js/common/core/events/core/event_registrator.js b/packages/devextreme/js/common/core/events/core/event_registrator.js index 4de26caede8d..79d9f9c3afee 100644 --- a/packages/devextreme/js/common/core/events/core/event_registrator.js +++ b/packages/devextreme/js/common/core/events/core/event_registrator.js @@ -1 +1 @@ -export { default } from '../../__internal/events/core/m_event_registrator'; +export { default } from '../../../../__internal/events/core/m_event_registrator'; diff --git a/packages/devextreme/js/common/core/events/core/event_registrator_callbacks.js b/packages/devextreme/js/common/core/events/core/event_registrator_callbacks.js index fc0c626b1575..186b84d66c72 100644 --- a/packages/devextreme/js/common/core/events/core/event_registrator_callbacks.js +++ b/packages/devextreme/js/common/core/events/core/event_registrator_callbacks.js @@ -1,3 +1,3 @@ -import MemorizedCallbacks from '../../core/memorized_callbacks'; +import MemorizedCallbacks from '../../../../core/memorized_callbacks'; export default new MemorizedCallbacks(); diff --git a/packages/devextreme/js/common/core/events/core/events_engine.d.ts b/packages/devextreme/js/common/core/events/core/events_engine.d.ts index a5f7cd4fadd5..6fa6b862e6d5 100644 --- a/packages/devextreme/js/common/core/events/core/events_engine.d.ts +++ b/packages/devextreme/js/common/core/events/core/events_engine.d.ts @@ -7,5 +7,5 @@ type EventsEngineType = { }; declare const eventsEngine: EventsEngineType; -export declare function set(eventEngine: any): void; +export function set(eventEngine: any): void; export default eventsEngine; diff --git a/packages/devextreme/js/common/core/events/core/events_engine.js b/packages/devextreme/js/common/core/events/core/events_engine.js index a8e5d0c5e304..a054da76531c 100644 --- a/packages/devextreme/js/common/core/events/core/events_engine.js +++ b/packages/devextreme/js/common/core/events/core/events_engine.js @@ -1 +1 @@ -export { default } from '../../__internal/events/core/m_events_engine'; +export { default } from '../../../../__internal/events/core/m_events_engine'; diff --git a/packages/devextreme/js/common/core/events/core/hook_touch_props.js b/packages/devextreme/js/common/core/events/core/hook_touch_props.js index 96daa6e79e09..38903edf8c54 100644 --- a/packages/devextreme/js/common/core/events/core/hook_touch_props.js +++ b/packages/devextreme/js/common/core/events/core/hook_touch_props.js @@ -1 +1 @@ -export { default } from '../../__internal/events/core/m_hook_touch_props'; +export { default } from '../../../../__internal/events/core/m_hook_touch_props'; diff --git a/packages/devextreme/js/common/core/events/core/keyboard_processor.js b/packages/devextreme/js/common/core/events/core/keyboard_processor.js index d7e367d4c144..bcb1a25c2576 100644 --- a/packages/devextreme/js/common/core/events/core/keyboard_processor.js +++ b/packages/devextreme/js/common/core/events/core/keyboard_processor.js @@ -1 +1 @@ -export { default } from '../../__internal/events/core/m_keyboard_processor'; +export { default } from '../../../../__internal/events/core/m_keyboard_processor'; diff --git a/packages/devextreme/js/common/core/events/core/wheel.js b/packages/devextreme/js/common/core/events/core/wheel.js index c9d2e35c81d2..0c94207e4c62 100644 --- a/packages/devextreme/js/common/core/events/core/wheel.js +++ b/packages/devextreme/js/common/core/events/core/wheel.js @@ -1 +1 @@ -export * from '../../__internal/events/core/m_wheel'; +export * from '../../../../__internal/events/core/m_wheel'; diff --git a/packages/devextreme/js/common/core/events/double_click.js b/packages/devextreme/js/common/core/events/double_click.js index 3e0cf4edb96e..6b14a60f2ffb 100644 --- a/packages/devextreme/js/common/core/events/double_click.js +++ b/packages/devextreme/js/common/core/events/double_click.js @@ -1,4 +1,4 @@ -import { name, dblClick } from '../__internal/events/m_dblclick'; +import { name, dblClick } from '../../../__internal/events/m_dblclick'; import registerEvent from './core/event_registrator'; registerEvent(name, dblClick); diff --git a/packages/devextreme/js/common/core/events/drag.js b/packages/devextreme/js/common/core/events/drag.js index c03bdb173853..9a3b67fda0ea 100644 --- a/packages/devextreme/js/common/core/events/drag.js +++ b/packages/devextreme/js/common/core/events/drag.js @@ -42,4 +42,4 @@ * @type_function_param1_field2 cancel:boolean * @module events/drag */ -export * from '../__internal/events/m_drag'; +export * from '../../../__internal/events/m_drag'; diff --git a/packages/devextreme/js/common/core/events/gesture/emitter.gesture.js b/packages/devextreme/js/common/core/events/gesture/emitter.gesture.js index bacdf0ee957e..289513d8018d 100644 --- a/packages/devextreme/js/common/core/events/gesture/emitter.gesture.js +++ b/packages/devextreme/js/common/core/events/gesture/emitter.gesture.js @@ -1 +1 @@ -export { default } from '../../__internal/events/gesture/m_emitter.gesture'; +export { default } from '../../../../__internal/events/gesture/m_emitter.gesture'; diff --git a/packages/devextreme/js/common/core/events/gesture/emitter.gesture.scroll.js b/packages/devextreme/js/common/core/events/gesture/emitter.gesture.scroll.js index d3ae4e160f92..dccab6bcd841 100644 --- a/packages/devextreme/js/common/core/events/gesture/emitter.gesture.scroll.js +++ b/packages/devextreme/js/common/core/events/gesture/emitter.gesture.scroll.js @@ -1 +1 @@ -export { default } from '../../__internal/events/gesture/m_emitter.gesture.scroll'; +export { default } from '../../../../__internal/events/gesture/m_emitter.gesture.scroll'; diff --git a/packages/devextreme/js/common/core/events/gesture/swipeable.js b/packages/devextreme/js/common/core/events/gesture/swipeable.js index e6d44d8d75e9..7ad8476f5ecb 100644 --- a/packages/devextreme/js/common/core/events/gesture/swipeable.js +++ b/packages/devextreme/js/common/core/events/gesture/swipeable.js @@ -1 +1 @@ -export { default } from '../../__internal/events/gesture/m_swipeable'; +export { default } from '../../../../__internal/events/gesture/m_swipeable'; diff --git a/packages/devextreme/js/common/core/events/hold.js b/packages/devextreme/js/common/core/events/hold.js index 2174679ed7e7..f3370e430a6c 100644 --- a/packages/devextreme/js/common/core/events/hold.js +++ b/packages/devextreme/js/common/core/events/hold.js @@ -5,4 +5,4 @@ * @module events/hold */ -export { default } from '../__internal/events/m_hold'; +export { default } from '../../../__internal/events/m_hold'; diff --git a/packages/devextreme/js/common/core/events/hover.js b/packages/devextreme/js/common/core/events/hover.js index e603188362d0..54da4e40155a 100644 --- a/packages/devextreme/js/common/core/events/hover.js +++ b/packages/devextreme/js/common/core/events/hover.js @@ -12,4 +12,4 @@ * @module events/hover */ -export * from '../__internal/events/m_hover'; +export * from '../../../__internal/events/m_hover'; diff --git a/packages/devextreme/js/common/core/events/index.d.ts b/packages/devextreme/js/common/core/events/index.d.ts deleted file mode 100644 index 999a80e69b94..000000000000 --- a/packages/devextreme/js/common/core/events/index.d.ts +++ /dev/null @@ -1,354 +0,0 @@ -import { - DxElement, -} from '../core/element'; - -/* eslint-disable @typescript-eslint/no-empty-interface */ -export interface EventExtension { } -export interface EventType { } -/* eslint-enable @typescript-eslint/no-empty-interface */ -/** - * @docid - * @type EventObject|jQuery.Event - */ -export type DxEvent = {} extends EventType ? (EventObject & TNativeEvent) : EventType; - -/** - * @docid - * @public - */ -export interface InitializedEventInfo { - /** - * @docid - * @type this - */ - readonly component?: TComponent; - /** @docid */ - readonly element?: DxElement; -} - -/** - * @docid - * @public - */ -export interface EventInfo { - /** - * @docid - * @type this - */ - readonly component: TComponent; - /** @docid */ - readonly element: DxElement; - /** - * @docid - * @hidden - */ - readonly model?: any; -} - -/** - * @docid - * @public - */ -export interface NativeEventInfo { - /** - * @docid - * @type this - */ - readonly component: TComponent; - /** @docid */ - readonly element: DxElement; - /** - * @docid - * @hidden - */ - readonly model?: any; - /** - * @docid - * @type event - */ - readonly event?: DxEvent; -} - -/** - * @docid - * @public - */ -export interface ChangedOptionInfo { - /** @docid */ - readonly name: string; - /** @docid */ - readonly fullName: string; - /** @docid */ - readonly value?: any; - /** @docid */ - readonly previousValue?: any; -} - -/** - * @docid - * @public - */ -export interface ItemInfo { - /** - * @docid - * @type object - */ - readonly itemData?: TItemData; - /** @docid */ - readonly itemElement: DxElement; - /** @docid */ - readonly itemIndex: number; -} - -/** - * @docid - * @public - */ -export interface Cancelable { - /** @docid */ - cancel?: boolean; -} - -/** - * @docid - * @public - */ -export type AsyncCancelable = { - /** - * @docid - * @type boolean|Promise - */ - cancel: boolean | PromiseLike; -}; - -/** @deprecated EventObject */ -export type dxEvent = EventObject; - -/** - * @docid - * @section commonObjectStructures - * @public - */ -export type EventObject = { - /** - * @docid - * @public - */ - currentTarget: Element; - - /** - * @docid - * @public - */ - data: any; - - /** - * @docid - * @public - */ - delegateTarget: Element; - - /** - * @docid - * @public - */ - target: Element; - /** - * @docid - * @publicName isDefaultPrevented() - * @public - */ - isDefaultPrevented(): boolean; - /** - * @docid - * @publicName isImmediatePropagationStopped() - * @public - */ - isImmediatePropagationStopped(): boolean; - /** - * @docid - * @publicName isPropagationStopped() - * @public - */ - isPropagationStopped(): boolean; - /** - * @docid - * @publicName preventDefault() - * @public - */ - preventDefault(): void; - /** - * @docid - * @publicName stopImmediatePropagation() - * @public - */ - stopImmediatePropagation(): void; - /** - * @docid - * @publicName stopPropagation() - * @public - */ - stopPropagation(): void; -}; - -/** - * @docid - * @type EventObject|jQuery.Event - * @hidden - * @deprecated DxEvent - */ -export type event = DxEvent; - -/** - * @docid - * @publicName handler(event, extraParameters) - * @param2 extraParameters:object - * @hidden - */ -export function eventsHandler(event: DxEvent, extraParameters: any): boolean; - -/** - * @docid eventsMethods.off - * @publicName off(element) - * @namespace DevExpress.events - * @public - */ -export function off(element: Element | Array): void; - -/** - * @docid eventsMethods.off - * @publicName off(element, eventName) - * @namespace DevExpress.events - * @public - */ -export function off(element: Element | Array, eventName: string): void; - -/** - * @docid eventsMethods.off - * @publicName off(element, eventName, handler) - * @namespace DevExpress.events - * @public - */ -export function off(element: Element | Array, eventName: string, handler: Function): void; - -/** - * @docid eventsMethods.off - * @publicName off(element, eventName, selector) - * @namespace DevExpress.events - * @public - */ -export function off(element: Element | Array, eventName: string, selector: string): void; - -/** - * @docid eventsMethods.off - * @publicName off(element, eventName, selector, handler) - * @namespace DevExpress.events - * @public - */ -export function off(element: Element | Array, eventName: string, selector: string, handler: Function): void; - -/** - * @docid eventsMethods.on - * @publicName on(element, eventName, data, handler) - * @namespace DevExpress.events - * @param3 data:object - * @public - */ -export function on(element: Element | Array, eventName: string, data: any, handler: Function): void; - -/** - * @docid eventsMethods.on - * @publicName on(element, eventName, handler) - * @namespace DevExpress.events - * @public - */ -export function on(element: Element | Array, eventName: string, handler: Function): void; - -/** - * @docid eventsMethods.on - * @publicName on(element, eventName, selector, data, handler) - * @namespace DevExpress.events - * @param4 data:object - * @public - */ -export function on(element: Element | Array, eventName: string, selector: string, data: any, handler: Function): void; - -/** - * @docid eventsMethods.on - * @publicName on(element, eventName, selector, handler) - * @namespace DevExpress.events - * @public - */ -export function on(element: Element | Array, eventName: string, selector: string, handler: Function): void; - -/** - * @docid eventsMethods.one - * @publicName one(element, eventName, data, handler) - * @namespace DevExpress.events - * @param3 data:object - * @public - */ -export function one(element: Element | Array, eventName: string, data: any, handler: Function): void; - -/** - * @docid eventsMethods.one - * @publicName one(element, eventName, handler) - * @namespace DevExpress.events - * @public - */ -export function one(element: Element | Array, eventName: string, handler: Function): void; - -/** - * @docid eventsMethods.one - * @publicName one(element, eventName, selector, data, handler) - * @namespace DevExpress.events - * @param4 data:object - * @public - */ -export function one(element: Element | Array, eventName: string, selector: string, data: any, handler: Function): void; - -/** - * @docid eventsMethods.one - * @publicName one(element, eventName, selector, handler) - * @namespace DevExpress.events - * @public - */ -export function one(element: Element | Array, eventName: string, selector: string, handler: Function): void; - -/** - * @docid eventsMethods.trigger - * @publicName trigger(element, event) - * @namespace DevExpress.events - * @param2 event:string|event - * @public - */ -export function trigger(element: Element | Array, event: string | DxEvent): void; - -/** - * @docid eventsMethods.trigger - * @publicName trigger(element, event, extraParameters) - * @namespace DevExpress.events - * @param2 event:string|event - * @param3 extraParameters:object - * @public - */ -export function trigger(element: Element | Array, event: string | DxEvent, extraParameters: any): void; - -/** - * @docid eventsMethods.triggerHandler - * @publicName triggerHandler(element, event) - * @namespace DevExpress.events - * @param2 event:string|event - * @hidden - */ -export function triggerHandler(element: Element | Array, event: string | DxEvent): void; - -/** - * @docid eventsMethods.triggerHandler - * @publicName triggerHandler(element, event, extraParameters) - * @namespace DevExpress.events - * @param2 event:string|event - * @param3 extraParameters:object - * @hidden - */ -export function triggerHandler(element: Element | Array, event: string | DxEvent, extraParameters: any): void; diff --git a/packages/devextreme/js/common/core/events/pointer.js b/packages/devextreme/js/common/core/events/pointer.js index 76b7978e98d7..6293482e3f40 100644 --- a/packages/devextreme/js/common/core/events/pointer.js +++ b/packages/devextreme/js/common/core/events/pointer.js @@ -55,4 +55,4 @@ * @module events/pointer */ -export { default } from '../__internal/events/m_pointer'; +export { default } from '../../../__internal/events/m_pointer'; diff --git a/packages/devextreme/js/common/core/events/pointer/base.js b/packages/devextreme/js/common/core/events/pointer/base.js index 305dab9967e0..5d381e0b1bd7 100644 --- a/packages/devextreme/js/common/core/events/pointer/base.js +++ b/packages/devextreme/js/common/core/events/pointer/base.js @@ -1 +1 @@ -export { default } from '../../__internal/events/pointer/m_base'; +export { default } from '../../../../__internal/events/pointer/m_base'; diff --git a/packages/devextreme/js/common/core/events/pointer/mouse.js b/packages/devextreme/js/common/core/events/pointer/mouse.js index aaded4766988..ea5914c7618d 100644 --- a/packages/devextreme/js/common/core/events/pointer/mouse.js +++ b/packages/devextreme/js/common/core/events/pointer/mouse.js @@ -1 +1 @@ -export { default } from '../../__internal/events/pointer/m_mouse'; +export { default } from '../../../../__internal/events/pointer/m_mouse'; diff --git a/packages/devextreme/js/common/core/events/pointer/mouse_and_touch.js b/packages/devextreme/js/common/core/events/pointer/mouse_and_touch.js index dde0522c0306..1b08169cfa1b 100644 --- a/packages/devextreme/js/common/core/events/pointer/mouse_and_touch.js +++ b/packages/devextreme/js/common/core/events/pointer/mouse_and_touch.js @@ -1 +1 @@ -export { default } from '../../__internal/events/pointer/m_mouse_and_touch'; +export { default } from '../../../../__internal/events/pointer/m_mouse_and_touch'; diff --git a/packages/devextreme/js/common/core/events/pointer/observer.js b/packages/devextreme/js/common/core/events/pointer/observer.js index 6b5fefe472db..23d7d02347de 100644 --- a/packages/devextreme/js/common/core/events/pointer/observer.js +++ b/packages/devextreme/js/common/core/events/pointer/observer.js @@ -1 +1 @@ -export { default } from '../../__internal/events/pointer/m_observer'; +export { default } from '../../../../__internal/events/pointer/m_observer'; diff --git a/packages/devextreme/js/common/core/events/pointer/touch.js b/packages/devextreme/js/common/core/events/pointer/touch.js index f41aa71ccc75..340b3fea5bbf 100644 --- a/packages/devextreme/js/common/core/events/pointer/touch.js +++ b/packages/devextreme/js/common/core/events/pointer/touch.js @@ -1 +1 @@ -export { default } from '../../__internal/events/pointer/m_touch'; +export { default } from '../../../../__internal/events/pointer/m_touch'; diff --git a/packages/devextreme/js/common/core/events/remove.js b/packages/devextreme/js/common/core/events/remove.js index b475e099cbec..8c8d8ad142d9 100644 --- a/packages/devextreme/js/common/core/events/remove.js +++ b/packages/devextreme/js/common/core/events/remove.js @@ -5,4 +5,4 @@ * @module events/remove */ -export * from '../__internal/events/m_remove'; +export * from '../../../__internal/events/m_remove'; diff --git a/packages/devextreme/js/common/core/events/short.js b/packages/devextreme/js/common/core/events/short.js index 70e38ebf6b7b..0520fdf01641 100644 --- a/packages/devextreme/js/common/core/events/short.js +++ b/packages/devextreme/js/common/core/events/short.js @@ -1 +1 @@ -export * from '../__internal/events/m_short'; +export * from '../../../__internal/events/m_short'; diff --git a/packages/devextreme/js/common/core/events/swipe.js b/packages/devextreme/js/common/core/events/swipe.js index 31e61bbd529e..a65c8d786508 100644 --- a/packages/devextreme/js/common/core/events/swipe.js +++ b/packages/devextreme/js/common/core/events/swipe.js @@ -22,4 +22,4 @@ * @module events/swipe */ -export * from '../__internal/events/m_swipe'; +export * from '../../../__internal/events/m_swipe'; diff --git a/packages/devextreme/js/common/core/events/transform.js b/packages/devextreme/js/common/core/events/transform.js index db22a4cec363..a93e6d82b40b 100644 --- a/packages/devextreme/js/common/core/events/transform.js +++ b/packages/devextreme/js/common/core/events/transform.js @@ -1,4 +1,4 @@ -import { exportNames } from '../__internal/events/m_transform'; +import { exportNames } from '../../../__internal/events/m_transform'; /** * @name UI Events.dxtransformstart diff --git a/packages/devextreme/js/common/core/events/utils/add_namespace.js b/packages/devextreme/js/common/core/events/utils/add_namespace.js index ffa6a046fa06..3adbbc2f4233 100644 --- a/packages/devextreme/js/common/core/events/utils/add_namespace.js +++ b/packages/devextreme/js/common/core/events/utils/add_namespace.js @@ -1 +1 @@ -export { default } from '../../__internal/events/utils/m_add_namespace'; +export { default } from '../../../../__internal/events/utils/m_add_namespace'; diff --git a/packages/devextreme/js/common/core/events/utils/event_nodes_disposing.js b/packages/devextreme/js/common/core/events/utils/event_nodes_disposing.js index 0dd3c94270d2..fee24fce3ef6 100644 --- a/packages/devextreme/js/common/core/events/utils/event_nodes_disposing.js +++ b/packages/devextreme/js/common/core/events/utils/event_nodes_disposing.js @@ -1 +1 @@ -export * from '../../__internal/events/utils/m_event_nodes_disposing'; +export * from '../../../../__internal/events/utils/m_event_nodes_disposing'; diff --git a/packages/devextreme/js/common/core/events/utils/event_target.js b/packages/devextreme/js/common/core/events/utils/event_target.js index 6b0f3d4dd2a0..f384e1acc1a7 100644 --- a/packages/devextreme/js/common/core/events/utils/event_target.js +++ b/packages/devextreme/js/common/core/events/utils/event_target.js @@ -1 +1 @@ -export * from '../../__internal/events/utils/m_event_target'; +export * from '../../../../__internal/events/utils/m_event_target'; diff --git a/packages/devextreme/js/common/core/events/utils/index.js b/packages/devextreme/js/common/core/events/utils/index.js index 4e21a47cee31..a486606d05b0 100644 --- a/packages/devextreme/js/common/core/events/utils/index.js +++ b/packages/devextreme/js/common/core/events/utils/index.js @@ -1 +1 @@ -export * from '../../__internal/events/utils/index'; +export * from '../../../../__internal/events/utils/index'; diff --git a/packages/devextreme/js/common/core/events/visibility_change.js b/packages/devextreme/js/common/core/events/visibility_change.js index eae6f20c886a..93ea077c6d9a 100644 --- a/packages/devextreme/js/common/core/events/visibility_change.js +++ b/packages/devextreme/js/common/core/events/visibility_change.js @@ -1,4 +1,4 @@ -import VisibilityChangeModule from '../__internal/events/m_visibility_change'; +import VisibilityChangeModule from '../../../__internal/events/m_visibility_change'; export const triggerShownEvent = VisibilityChangeModule.triggerShownEvent; export const triggerHidingEvent = VisibilityChangeModule.triggerHidingEvent; diff --git a/packages/devextreme/js/common/core/localization.d.ts b/packages/devextreme/js/common/core/localization.d.ts new file mode 100644 index 000000000000..cc9d92092845 --- /dev/null +++ b/packages/devextreme/js/common/core/localization.d.ts @@ -0,0 +1,135 @@ +import { Format as FormatType } from '../../common'; + +/** + * @docid localization.formatDate + * @publicName formatDate(value, format) + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function formatDate(value: Date, format: Format): string; + +/** + * @docid localization.formatMessage + * @publicName formatMessage(key, value) + * @param2 value:string|Array + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function formatMessage(key: string, ...values: Array): string; + +/** + * @docid localization.formatNumber + * @publicName formatNumber(value, format) + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function formatNumber(value: number, format: Format): string; + +/** + * @docid localization.loadMessages + * @publicName loadMessages(messages) + * @param1 messages:object + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function loadMessages(messages: any): void; + +/** + * @docid localization.locale + * @publicName locale() + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function locale(): string; + +/** + * @docid localization.locale + * @publicName locale(locale) + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +// eslint-disable-next-line @typescript-eslint/no-shadow +export function locale(locale: string): void; + +/** + * @docid localization.parseDate + * @publicName parseDate(text, format) + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function parseDate(text: string, format: Format): Date; + +/** + * @docid localization.parseNumber + * @publicName parseNumber(text, format) + * @static + * @namespace DevExpress.common.core.localization + * @public + */ +export function parseNumber(text: string, format: Format): number; + +type ExternalFormat = + Intl.DateTimeFormatOptions | + Intl.NumberFormatOptions; + +type PredefinedFormat = FormatType; + +/** + * @docid + * @type Object|Enums.Format|string|function + * @default undefined + * @section Common + * @namespace DevExpress.common.core.localization + * @public + */ +export type Format = + FormatObject | + PredefinedFormat | + string | + ((value: number | Date) => string) | + ((value: Date) => string) | + ((value: number) => string) | + ExternalFormat | undefined; + +export interface FormatObject { + /** + * @docid Format.currency + * @public + */ + currency?: string; + /** + * @docid Format.useCurrencyAccountingStyle + * @type boolean + * @default true + * @public + */ + useCurrencyAccountingStyle?: boolean; + /** + * @docid Format.formatter + * @public + */ + formatter?: ((value: number | Date) => string); + /** + * @docid Format.parser + * @public + */ + parser?: ((value: string) => number | Date); + /** + * @docid Format.precision + * @public + */ + precision?: number; + /** + * @docid Format.type + * @public + * @type Enums.Format|string + */ + type?: PredefinedFormat | string; +} diff --git a/packages/devextreme/js/common/core/localization/core.js b/packages/devextreme/js/common/core/localization/core.js index 0d096f183a46..7887125559e6 100644 --- a/packages/devextreme/js/common/core/localization/core.js +++ b/packages/devextreme/js/common/core/localization/core.js @@ -1,4 +1,4 @@ -import dependencyInjector from '../core/utils/dependency_injector'; +import dependencyInjector from '../../../core/utils/dependency_injector'; import parentLocales from './cldr-data/parent_locales'; import getParentLocale from './parentLocale'; diff --git a/packages/devextreme/js/common/core/localization/currency.js b/packages/devextreme/js/common/core/localization/currency.js index b469b714666c..9e3cc67301cf 100644 --- a/packages/devextreme/js/common/core/localization/currency.js +++ b/packages/devextreme/js/common/core/localization/currency.js @@ -1,4 +1,4 @@ -import { extend } from '../core/utils/extend'; +import { extend } from '../../../core/utils/extend'; export default { _formatNumberCore: function(value, format, formatConfig) { diff --git a/packages/devextreme/js/common/core/localization/date.js b/packages/devextreme/js/common/core/localization/date.js index abc316d12dd4..4b5a29ed137c 100644 --- a/packages/devextreme/js/common/core/localization/date.js +++ b/packages/devextreme/js/common/core/localization/date.js @@ -1,7 +1,7 @@ -import dependencyInjector from '../core/utils/dependency_injector'; -import { isString } from '../core/utils/type'; -import { each } from '../core/utils/iterator'; -import errors from '../core/errors'; +import dependencyInjector from '../../../core/utils/dependency_injector'; +import { isString } from '../../../core/utils/type'; +import { each } from '../../../core/utils/iterator'; +import errors from '../../../core/errors'; import { getFormatter as getLDMLDateFormatter } from './ldml/date.formatter'; import { getFormat as getLDMLDateFormat } from './ldml/date.format'; import { getParser as getLDMLDateParser } from './ldml/date.parser'; diff --git a/packages/devextreme/js/common/core/localization/default_date_names.js b/packages/devextreme/js/common/core/localization/default_date_names.js index 85bbdaf91fee..8d45246eb399 100644 --- a/packages/devextreme/js/common/core/localization/default_date_names.js +++ b/packages/devextreme/js/common/core/localization/default_date_names.js @@ -1,4 +1,4 @@ -import { map } from '../core/utils/iterator'; +import { map } from '../../../core/utils/iterator'; const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; const DAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; diff --git a/packages/devextreme/js/common/core/localization/globalize/currency.js b/packages/devextreme/js/common/core/localization/globalize/currency.js index 37b3a818c73d..dbeae744cb6c 100644 --- a/packages/devextreme/js/common/core/localization/globalize/currency.js +++ b/packages/devextreme/js/common/core/localization/globalize/currency.js @@ -6,7 +6,7 @@ import '../currency'; import 'globalize/currency'; // eslint-disable-next-line no-restricted-imports import Globalize from 'globalize'; -import config from '../../core/config'; +import { config } from '../../../../common'; import numberLocalization from '../number'; const CURRENCY_STYLES = ['symbol', 'accounting']; diff --git a/packages/devextreme/js/common/core/localization/globalize/date.js b/packages/devextreme/js/common/core/localization/globalize/date.js index dddeb7827dbb..24f3e4eb5b05 100644 --- a/packages/devextreme/js/common/core/localization/globalize/date.js +++ b/packages/devextreme/js/common/core/localization/globalize/date.js @@ -9,8 +9,8 @@ const RTL_MARKS_REGEX = /[\u200E\u200F]/g; // eslint-disable-next-line no-restricted-imports import Globalize from 'globalize'; import dateLocalization from '../date'; -import { isObject } from '../../core/utils/type'; -import * as iteratorUtils from '../../core/utils/iterator'; +import { isObject } from '../../../../core/utils/type'; +import * as iteratorUtils from '../../../../core/utils/iterator'; if(Globalize && Globalize.formatDate) { diff --git a/packages/devextreme/js/common/core/localization/globalize/number.js b/packages/devextreme/js/common/core/localization/globalize/number.js index 4a3cdda578d8..568d9599cb8b 100644 --- a/packages/devextreme/js/common/core/localization/globalize/number.js +++ b/packages/devextreme/js/common/core/localization/globalize/number.js @@ -2,7 +2,7 @@ import './core'; // eslint-disable-next-line no-restricted-imports import Globalize from 'globalize'; import numberLocalization from '../number'; -import errors from '../../core/errors'; +import errors from '../../../../core/errors'; // eslint-disable-next-line no-restricted-imports, import/no-unresolved import 'globalize/number'; diff --git a/packages/devextreme/js/common/core/localization/intl/date.js b/packages/devextreme/js/common/core/localization/intl/date.js index c75851db4d23..d1bed9a81c3a 100644 --- a/packages/devextreme/js/common/core/localization/intl/date.js +++ b/packages/devextreme/js/common/core/localization/intl/date.js @@ -1,5 +1,5 @@ /* globals Intl */ -import { extend } from '../../core/utils/extend'; +import { extend } from '../../../../core/utils/extend'; import localizationCoreUtils from '../core'; const SYMBOLS_TO_REMOVE_REGEX = /[\u200E\u200F]/g; diff --git a/packages/devextreme/js/common/core/localization/intl/number.js b/packages/devextreme/js/common/core/localization/intl/number.js index 15c172fd1e78..55012d3da52b 100644 --- a/packages/devextreme/js/common/core/localization/intl/number.js +++ b/packages/devextreme/js/common/core/localization/intl/number.js @@ -1,5 +1,5 @@ /* globals Intl */ -import dxConfig from '../../core/config'; +import { config as dxConfig } from '../../../../common'; import localizationCoreUtils from '../core'; import openXmlCurrencyFormat from '../open_xml_currency_format'; import accountingFormats from '../cldr-data/accounting_formats'; diff --git a/packages/devextreme/js/common/core/localization/ldml/date.parser.js b/packages/devextreme/js/common/core/localization/ldml/date.parser.js index b9ad3b6f3ca7..96197a9ee6d5 100644 --- a/packages/devextreme/js/common/core/localization/ldml/date.parser.js +++ b/packages/devextreme/js/common/core/localization/ldml/date.parser.js @@ -1,5 +1,5 @@ -import { escapeRegExp } from '../../core/utils/common'; -import { logger } from '../../core/utils/console'; +import { escapeRegExp } from '../../../../core/utils/common'; +import { logger } from '../../../../core/utils/console'; const FORMAT_TYPES = { '3': 'abbreviated', diff --git a/packages/devextreme/js/common/core/localization/ldml/number.js b/packages/devextreme/js/common/core/localization/ldml/number.js index 180e103fa70d..628a8713d3a0 100644 --- a/packages/devextreme/js/common/core/localization/ldml/number.js +++ b/packages/devextreme/js/common/core/localization/ldml/number.js @@ -1,4 +1,4 @@ -import { fitIntoRange, multiplyInExponentialForm } from '../../core/utils/math'; +import { fitIntoRange, multiplyInExponentialForm } from '../../../../core/utils/math'; import { toFixed } from '../utils'; const DEFAULT_CONFIG = { thousandsSeparator: ',', decimalSeparator: '.' }; diff --git a/packages/devextreme/js/common/core/localization/message.js b/packages/devextreme/js/common/core/localization/message.js index aa0af71f02f5..d0772abe30c0 100644 --- a/packages/devextreme/js/common/core/localization/message.js +++ b/packages/devextreme/js/common/core/localization/message.js @@ -1,7 +1,7 @@ -import dependencyInjector from '../core/utils/dependency_injector'; -import { extend } from '../core/utils/extend'; -import { format as stringFormat } from '../core/utils/string'; -import { humanize } from '../core/utils/inflector'; +import dependencyInjector from '../../../core/utils/dependency_injector'; +import { extend } from '../../../core/utils/extend'; +import { format as stringFormat } from '../../../core/utils/string'; +import { humanize } from '../../../core/utils/inflector'; import coreLocalization from './core'; import { defaultMessages } from './default_messages'; diff --git a/packages/devextreme/js/common/core/localization/number.js b/packages/devextreme/js/common/core/localization/number.js index 4a5a8330b68c..e9db126e1347 100644 --- a/packages/devextreme/js/common/core/localization/number.js +++ b/packages/devextreme/js/common/core/localization/number.js @@ -1,10 +1,10 @@ -import dependencyInjector from '../core/utils/dependency_injector'; -import { escapeRegExp } from '../core/utils/common'; -import { each } from '../core/utils/iterator'; -import { isPlainObject } from '../core/utils/type'; +import dependencyInjector from '../../../core/utils/dependency_injector'; +import { escapeRegExp } from '../../../core/utils/common'; +import { each } from '../../../core/utils/iterator'; +import { isPlainObject } from '../../../core/utils/type'; import { getFormatter } from './ldml/number'; -import config from '../core/config'; -import errors from '../core/errors'; +import config from '../../../core/config'; +import errors from '../../../core/errors'; import { toFixed } from './utils'; import currencyLocalization from './currency'; import intlNumberLocalization from './intl/number'; diff --git a/packages/devextreme/js/common/core/localization/utils.js b/packages/devextreme/js/common/core/localization/utils.js index ca7164e0d1b8..3deba5d56cc6 100644 --- a/packages/devextreme/js/common/core/localization/utils.js +++ b/packages/devextreme/js/common/core/localization/utils.js @@ -1,4 +1,4 @@ -import { sign, multiplyInExponentialForm } from '../core/utils/math'; +import { sign, multiplyInExponentialForm } from '../../../core/utils/math'; const DECIMAL_BASE = 10; diff --git a/packages/devextreme/js/common/data.d.ts b/packages/devextreme/js/common/data.d.ts new file mode 100644 index 000000000000..92644d033f79 --- /dev/null +++ b/packages/devextreme/js/common/data.d.ts @@ -0,0 +1,1340 @@ +/* eslint-disable max-classes-per-file */ +import { DxExtendedPromise, DxPromise } from '../core/utils/deferred'; +import AbstractStore, { AbstractStoreOptions } from '../data/abstract_store'; + +import type { + Store as StoreBase, + StoreOptions as StoreOptionsBase, +} from '../data/store'; + +import type { + SearchOperation as SearchOperationInternal, + GroupingInterval as GroupingIntervalInternal, + SortDescriptor as SortDescriptorInternal, + GroupDescriptor as GroupDescriptorInternal, + SelectDescriptor as SelectDescriptorInternal, + FilterDescriptor as FilterDescriptorInternal, + SummaryDescriptor as SummaryDescriptorInternal, + LoadOptions as LoadOptionsInternal, +} from './data.types'; + +/** + * @namespace DevExpress.common.data + * @public + */ +export type SearchOperation = SearchOperationInternal; + +/** + * @namespace DevExpress.common.data + * @public + */ +export type GroupingInterval = GroupingIntervalInternal; + +/** + * @docid + * @public + * @type object + * @skip + * @namespace DevExpress.common.data + */ +export type SortDescriptor = SortDescriptorInternal; + +/** + * @docid + * @public + * @type object + * @skip + * @namespace DevExpress.common.data + */ +export type GroupDescriptor = GroupDescriptorInternal; + +/** + * @docid + * @public + * @type object + * @skip + * @namespace DevExpress.common.data + */ +export type SelectDescriptor = SelectDescriptorInternal; + +/** + * @docid + * @public + * @type object + * @namespace DevExpress.common.data + */ +export type FilterDescriptor = FilterDescriptorInternal; + +/** + * @public + * @docid + * @type object + * @namespace DevExpress.common.data + */ +export type LoadOptions = LoadOptionsInternal; + +/** + * @docid + * @public + * @type object + * @namespace DevExpress.common.data + */ +export type SummaryDescriptor = SummaryDescriptorInternal; + +/** + * @docid Utils.applyChanges + * @publicName applyChanges(data, changes, options) + * @param3 options?:any + * @namespace DevExpress.common.data + * @public + */ +export function applyChanges(data: Array, changes: Array, options?: { keyExpr?: string | Array; immutable?: boolean }): Array; + +/** + * @docid + * @namespace DevExpress.common.data + * @public + * @type object + * @inherits StoreOptions + */ +export type ArrayStoreOptions< + TItem = any, + TKey = any, +> = AbstractStoreOptions & { + /** + * @docid + * @public + */ + data?: Array; +}; + +/** + * @docid + * @namespace DevExpress.common.data + * @public + * @options ArrayStoreOptions + */ +export class ArrayStore< + TItem = any, + TKey = any, +> extends AbstractStore { + constructor(options?: ArrayStoreOptions); + /** + * @docid + * @publicName byKey(key) + * @param1 key:object|string|number + * @return Promise + * @public + */ + byKey(key: TKey): DxPromise; + /** + * @docid + * @publicName clear() + * @public + */ + clear(): void; + /** + * @docid + * @publicName createQuery() + * @return object + * @public + */ + createQuery(): Query; +} + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export type GroupItem< + TItem = any, +> = { + /** @docid */ + key: any | string | number; + /** + * @docid + * @type Array|Array|null + */ + items: Array | Array> | null; + /** @docid */ + count?: number; + /** @docid */ + summary?: Array; +}; + +type LoadResultArray = Array | Array>; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export type LoadResultObject = { + /** + * @docid + * @type Array|Array + */ + data: Array | Array>; + /** @docid */ + totalCount?: number; + /** @docid */ + summary?: Array; + /** @docid */ + groupCount?: number; + }; + +/** + * @docid + * @public + * @type object + * @namespace DevExpress.common.data + */ +export type LoadResult< + TItem = any, +> = + | Object + | LoadResultArray + | LoadResultObject; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export function isLoadResultObject(res: LoadResult): res is LoadResultObject; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export function isGroupItemsArray(res: LoadResult): res is Array>; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export function isItemsArray(res: LoadResult): res is Array; + +type LoadFunctionResult = T | DxPromise | PromiseLike; + +/** + * @docid + * @public + * @type object + * @deprecated Use LoadResult instead + * @namespace DevExpress.common.data + */ +export type ResolvedData = LoadResult; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + * @type object + */ +export type CustomStoreOptions< + TItem = any, + TKey = any, +> = StoreOptionsBase & { + /** + * @docid + * @public + * @type_function_param1 key:object|string|number + * @type_function_param2 extraOptions:LoadOptions + * @type_function_return Promise + */ + byKey?: ((key: TKey, extraOptions?: LoadOptions) => PromiseLike); + /** + * @docid + * @default true + * @public + */ + cacheRawData?: boolean; + /** + * @docid + * @type_function_param1 values:object + * @type_function_return Promise + * @public + */ + insert?: ((values: TItem) => PromiseLike); + /** + * @docid + * @type_function_param1 options:LoadOptions + * @type_function_return LoadResult|Promise + * @public + */ + load: (options: LoadOptions) => LoadFunctionResult>; + /** + * @docid + * @default 'processed' + * @public + */ + loadMode?: 'processed' | 'raw'; + /** + * @docid + * @type_function_param1 result:LoadResult + * @type_function_param2 loadOptions:LoadOptions + * @action + * @public + */ + onLoaded?: ((result: LoadResult, loadOptions: LoadOptions) => void); + /** + * @docid + * @type_function_param1 key:object|string|number + * @type_function_return Promise + * @public + */ + remove?: ((key: TKey) => PromiseLike); + /** + * @docid + * @type_function_param1_field filter:object + * @type_function_param1_field group:object + * @type_function_return Promise + * @public + */ + totalCount?: ((loadOptions: { filter?: FilterDescriptor | Array; group?: GroupDescriptor | Array> }) => PromiseLike); + /** + * @docid + * @type_function_param1 key:object|string|number + * @type_function_param2 values:object + * @type_function_return Promise + * @public + */ + update?: ((key: TKey, values: TItem) => PromiseLike); + /** + * @docid + * @default undefined + * @public + */ + useDefaultSearch?: boolean | undefined; +}; + +/** + * @docid + * @inherits Store + * @public + * @options CustomStoreOptions + * @namespace DevExpress.common.data + */ +export class CustomStore< + TItem = any, + TKey = any, +> extends StoreBase { + constructor(options?: CustomStoreOptions); + /** + * @docid + * @publicName byKey(key, extraOptions) + * @param1 key:object|string|number + * @param2 extraOptions:LoadOptions + * @return Promise + * @public + */ + byKey(key: TKey, extraOptions?: LoadOptions): DxPromise; + /** + * @docid + * @publicName clearRawDataCache() + * @public + */ + clearRawDataCache(): void; + /** + * @docid + * @publicName load() + * @return Promise + * @public + */ + load(): DxExtendedPromise>; + /** + * @docid + * @publicName load(options) + * @param1 options:LoadOptions + * @return Promise + * @public + */ + load(options: LoadOptions): DxExtendedPromise>; +} + +type DataSourceEventName = 'changed' | 'loadError' | 'loadingChanged'; + +/** + * @namespace DevExpress.common.data + * @docid + * @public + * @type object + */ +export type DataSourceOptions< + TStoreItem = any, + TMappedItem = TStoreItem, + TItem = TMappedItem, + TKey = any, +> = { + /** + * @docid + * @public + */ + customQueryParams?: any; + /** + * @docid + * @public + */ + expand?: Array | string; + /** + * @docid + * @type Filter expression + * @public + */ + filter?: FilterDescriptor | Array; + /** + * @docid + * @type Group expression + * @public + */ + group?: GroupDescriptor | Array>; + /** + * @docid + * @public + */ + // eslint-disable-next-line spellcheck/spell-checker + langParams?: LangParams; + /** + * @docid + * @type_function_param1 dataItem:object + * @type_function_return object + * @public + */ + map?: ((dataItem: TStoreItem) => TMappedItem); + /** + * @docid + * @type_function_param1_field changes:Array + * @action + * @public + */ + onChanged?: ((e: { readonly changes?: Array }) => void); + /** + * @docid + * @action + * @public + */ + onLoadError?: ((error: { readonly message?: string }) => void); + /** + * @docid + * @action + * @public + */ + onLoadingChanged?: ((isLoading: boolean) => void); + /** + * @docid + * @default 20 + * @public + */ + pageSize?: number; + /** + * @docid + * @default undefined + * @public + */ + paginate?: boolean | undefined; + /** + * @docid + * @type_function_param1 data:Array + * @type_function_return Array + * @public + */ + postProcess?: ((data: Array) => Array); + /** + * @docid + * @default undefined + * @public + */ + pushAggregationTimeout?: number | undefined; + /** + * @docid + * @public + */ + requireTotalCount?: boolean; + /** + * @docid + * @default false + * @public + */ + reshapeOnPush?: boolean; + /** + * @docid + * @type getter|Array + * @public + */ + searchExpr?: string | Function | Array; + /** + * @docid + * @default "contains" + * @public + */ + searchOperation?: SearchOperation; + /** + * @docid + * @default null + * @public + */ + searchValue?: any; + /** + * @docid + * @type Select expression + * @public + */ + select?: SelectDescriptor; + /** + * @docid + * @type Sort expression + * @public + */ + sort?: SortDescriptor | Array>; + /** + * @docid + * @public + * @type Store|StoreOptions|Array + */ + store?: Array | Store | StoreOptions; +}; + +/** + * @docid + * @public + * @options DataSourceOptions + * @namespace DevExpress.common.data + */ +export class DataSource< + TItem = any, + TKey = any, +> { + constructor(data: Array); + constructor(options: CustomStoreOptions | DataSourceOptions); + constructor(store: Store); + constructor(url: string); + /** + * @docid + * @publicName cancel(operationId) + * @public + */ + cancel(operationId: number): boolean; + /** + * @docid + * @publicName dispose() + * @public + */ + dispose(): void; + /** + * @docid + * @publicName filter() + * @return object + * @public + */ + filter(): FilterDescriptor | Array; + /** + * @docid + * @publicName filter(filterExpr) + * @param1 filterExpr:object + * @public + */ + filter(filterExpr: FilterDescriptor | Array): void; + /** + * @docid + * @publicName group() + * @return object + * @public + */ + group(): GroupDescriptor | Array>; + /** + * @docid + * @publicName group(groupExpr) + * @param1 groupExpr:object + * @public + */ + group(groupExpr: GroupDescriptor | Array>): void; + /** + * @docid + * @publicName isLastPage() + * @public + */ + isLastPage(): boolean; + /** + * @docid + * @publicName isLoaded() + * @public + */ + isLoaded(): boolean; + /** + * @docid + * @publicName isLoading() + * @public + */ + isLoading(): boolean; + /** + * @docid + * @publicName items() + * @public + */ + items(): Array; + /** + * @docid + * @publicName key() + * @public + */ + key(): string | Array; + /** + * @docid + * @publicName load() + * @return Promise + * @public + */ + load(): DxExtendedPromise; + /** + * @docid + * @publicName loadOptions() + * @return object + * @public + */ + loadOptions(): LoadOptions; + /** + * @docid + * @publicName off(eventName) + * @param1 eventName:string + * @return this + * @public + */ + off(eventName: DataSourceEventName): this; + /** + * @docid + * @publicName off(eventName, eventHandler) + * @param1 eventName:string + * @return this + * @public + */ + off(eventName: DataSourceEventName, eventHandler: Function): this; + /** + * @docid + * @publicName on(eventName, eventHandler) + * @param1 eventName:string + * @return this + * @public + */ + on(eventName: DataSourceEventName, eventHandler: Function): this; + /** + * @docid + * @publicName on(events) + * @param1 events:object + * @return this + * @public + */ + on(events: { [key in DataSourceEventName]?: Function }): this; + /** + * @docid + * @publicName pageIndex() + * @return numeric + * @public + */ + pageIndex(): number; + /** + * @docid + * @publicName pageIndex(newIndex) + * @param1 newIndex:numeric + * @public + */ + pageIndex(newIndex: number): void; + /** + * @docid + * @publicName pageSize() + * @return numeric + * @public + */ + pageSize(): number; + /** + * @docid + * @publicName pageSize(value) + * @param1 value:numeric + * @public + */ + pageSize(value: number): void; + /** + * @docid + * @publicName paginate() + * @public + */ + paginate(): boolean; + /** + * @docid + * @publicName paginate(value) + * @public + */ + paginate(value: boolean): void; + /** + * @docid + * @publicName reload() + * @return Promise + * @public + */ + reload(): DxExtendedPromise; + /** + * @docid + * @publicName requireTotalCount() + * @public + */ + requireTotalCount(): boolean; + /** + * @docid + * @publicName requireTotalCount(value) + * @public + */ + requireTotalCount(value: boolean): void; + /** + * @docid + * @publicName searchExpr() + * @return getter|Array + * @public + */ + searchExpr(): string & Function & Array; + /** + * @docid + * @publicName searchExpr(expr) + * @param1 expr:getter|Array + * @public + */ + searchExpr(expr: string | Function | Array): void; + /** + * @docid + * @publicName searchOperation() + * @public + */ + searchOperation(): string; + /** + * @docid + * @publicName searchOperation(op) + * @public + */ + searchOperation(op: string): void; + /** + * @docid + * @publicName searchValue() + * @public + */ + searchValue(): any; + /** + * @docid + * @publicName searchValue(value) + * @public + */ + searchValue(value: any): void; + /** + * @docid + * @publicName select() + * @return any + * @public + */ + select(): SelectDescriptor; + /** + * @docid + * @publicName select(expr) + * @param1 expr:any + * @public + */ + select(expr: SelectDescriptor): void; + /** + * @docid + * @publicName sort() + * @return any + * @public + */ + sort(): SortDescriptor | Array>; + /** + * @docid + * @publicName sort(sortExpr) + * @param1 sortExpr:any + * @public + */ + sort(sortExpr: SortDescriptor | Array>): void; + /** + * @docid + * @publicName store() + * @return object + * @public + */ + store(): Store; + /** + * @docid + * @publicName totalCount() + * @return numeric + * @public + */ + totalCount(): number; +} + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export type LangParams = { + /** + * @docid + * @public + */ + locale: string; + /** + * @docid + * @public + * @type object + */ + collatorOptions?: Intl.CollatorOptions; +}; + +/** +* @public +* @namespace DevExpress.data.utils +*/ +export type Store = + CustomStore | + ArrayStore | + LocalStore | + ODataStore; + +/** +* @public +* @namespace DevExpress.data.utils +* @type object +*/ +export type StoreOptions = + CustomStoreOptions | + ArrayStoreOptions & { type: 'array' } | + LocalStoreOptions & { type: 'local' } | + ODataStoreOptions & { type: 'odata' }; + +/** + * @docid + * @namespace DevExpress.common.data + * @public + */ +export class EndpointSelector { + constructor(options: any); + /** + * @docid + * @publicName urlFor(key) + * @public + */ + urlFor(key: string): string; +} + +/** + * @docid Utils.errorHandler + * @type function(e) + * @namespace DevExpress.common.data + * @deprecated Utils.setErrorHandler + * @public + */ +export function errorHandler(e: Error): void; + +/** + * @docid Utils.setErrorHandler + * @type function(handler) + * @namespace DevExpress.common.data + * @public + */ +export function setErrorHandler(handler: (e: Error) => void): void; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + */ +export type LocalStoreOptions< + TItem = any, + TKey = any, +> = ArrayStoreOptions & { + /** + * @docid + * @default 10000 + * @public + */ + flushInterval?: number; + /** + * @docid + * @default false + * @public + */ + immediate?: boolean; + /** + * @docid + * @public + */ + name?: string; +}; + +/** + * @docid + * @inherits ArrayStore + * @public + * @options LocalStoreOptions + * @namespace DevExpress.common.data + */ +export class LocalStore< + TItem = any, + TKey = any, +> extends ArrayStore { + constructor(options?: LocalStoreOptions); + /** + * @docid + * @publicName clear() + * @public + */ + clear(): void; +} + +/** + * @docid + * @type object + * @public + * @namespace DevExpress.common.data + */ +export type Query = { + /** + * @docid + * @publicName aggregate(seed, step, finalize) + * @param1 seed:object + * @return Promise + * @public + */ + aggregate(seed: any, step: Function, finalize: Function): DxPromise; + /** + * @docid + * @publicName aggregate(step) + * @return Promise + * @public + */ + aggregate(step: Function): DxPromise; + /** + * @docid + * @publicName avg() + * @return Promise + * @public + */ + avg(): DxPromise; + /** + * @docid + * @publicName avg(getter) + * @param1 getter:object + * @return Promise + * @public + */ + avg(getter: any): DxPromise; + /** + * @docid + * @publicName count() + * @return Promise + * @public + */ + count(): DxPromise; + /** + * @docid + * @publicName enumerate() + * @return Promise + * @public + */ + enumerate(): DxPromise; + /** + * @docid + * @publicName filter(criteria) + * @public + */ + filter(criteria: Array): Query; + /** + * @docid + * @publicName filter(predicate) + * @public + */ + filter(predicate: Function): Query; + /** + * @docid + * @publicName groupBy(getter) + * @param1 getter:object + * @public + */ + groupBy(getter: any): Query; + /** + * @docid + * @publicName max() + * @return Promise + * @public + */ + max(): DxPromise; + /** + * @docid + * @publicName max(getter) + * @param1 getter:object + * @return Promise + * @public + */ + max(getter: any): DxPromise; + /** + * @docid + * @publicName min() + * @return Promise + * @public + */ + min(): DxPromise; + /** + * @docid + * @publicName min(getter) + * @param1 getter:object + * @return Promise + * @public + */ + min(getter: any): DxPromise; + /** + * @docid + * @publicName select(getter) + * @param1 getter:object|Array + * @public + */ + select(...getters: any[]): Query; + /** + * @docid + * @publicName slice(skip, take) + * @param2 take:number|undefined + * @public + */ + slice(skip: number, take?: number): Query; + /** + * @docid + * @publicName sortBy(getter) + * @param1 getter:object + * @public + */ + sortBy(getter: any): Query; + /** + * @docid + * @publicName sortBy(getter, desc) + * @param1 getter:object + * @public + */ + sortBy(getter: any, desc: boolean): Query; + /** + * @docid + * @publicName sum() + * @return Promise + * @public + */ + sum(): DxPromise; + /** + * @docid + * @publicName sum(getter) + * @param1 getter:object + * @return Promise + * @public + */ + sum(getter: any): DxPromise; + /** + * @docid + * @publicName thenBy(getter) + * @param1 getter:object + * @public + */ + thenBy(getter: any): Query; + /** + * @docid + * @publicName thenBy(getter, desc) + * @param1 getter:object + * @public + */ + thenBy(getter: any, desc: boolean): Query; + /** + * @docid + * @publicName toArray() + * @public + */ + toArray(): Array; +}; + +/** + * @docid Utils.query + * @publicName query(array, queryOptions) + * @param2 queryOptions:object + * @namespace DevExpress.common.data + * @public + */ +export function query(array: Array, queryOptions?: any): Query; + +/** + * @docid Utils.query + * @publicName query(url, queryOptions) + * @param2 queryOptions:object + * @namespace DevExpress.common.data + * @public + */ +export function query(url: string, queryOptions: any): Query; + +/** + * @docid Utils.base64_encode + * @publicName base64_encode(input) + * @namespace DevExpress.common.data + * @public + */ +export function base64_encode(input: string | Array): string; + +/** + * @docid Utils.compileGetter + * @publicName compileGetter(expr) + * @namespace DevExpress.common.data + * @public + */ +export function compileGetter(expr: string | Array): Function; + +/** + * @docid Utils.compileSetter + * @publicName compileSetter(expr) + * @namespace DevExpress.common.data + * @public + */ +export function compileSetter(expr: string | Array): Function; + +export interface ODataRequestOptions { + accepts: any; + async: boolean; + contentType: string | boolean; + data: any; + dataType: string; + headers: any; + jsonp?: boolean; + method: string; + timeout: number; + url: string; + xhrFields: any; +} + +export type HttpMethod = 'GET' | 'POST' | 'PATCH' | 'MERGE'; + +/** + * @docid + * @public + * @namespace DevExpress.common.data + * @type object + */ +export type ODataContextOptions = { + /** + * @docid + * @type_function_param1_field params:object + * @type_function_param1_field payload:object + * @type_function_param1_field headers:object + * @public + */ + beforeSend?: ((options: { url: string; async: boolean; method: string; timeout: number; params: any; payload: any; headers: any }) => void); + /** + * @docid + * @public + */ + deserializeDates?: boolean; + /** + * @docid + * @public + */ + entities?: any; + /** + * @docid + * @type_function_param1 e:Error + * @type_function_param1_field errorDetails:object + * @type_function_param1_field requestOptions:object + * @public + */ + errorHandler?: ((e: { httpStatus: number; errorDetails: any; requestOptions: ODataRequestOptions }) => void); + /** + * @docid + * @public + */ + filterToLower?: boolean; + /** + * @docid + * @default false + * @public + */ + jsonp?: boolean; + /** + * @docid + * @public + */ + url?: string; + /** + * @docid + * @default 4 + * @acceptValues 2|3|4 + * @public + */ + version?: number; + /** + * @docid + * @default false + * @public + */ + withCredentials?: boolean; +}; + +/** + * @docid + * @public + * @options ODataContextOptions + * @namespace DevExpress.common.data + */ +export class ODataContext { + constructor(options?: ODataContextOptions); + /** + * @docid + * @publicName get(operationName, params) + * @param2 params:object + * @return Promise + * @public + */ + get(operationName: string, params: any): DxPromise; + /** + * @docid + * @publicName invoke(operationName, params, httpMethod) + * @param2 params:object + * @param3 httpMethod:string + * @return Promise + * @public + */ + invoke(operationName: string, params: any, httpMethod: HttpMethod): DxPromise; + /** + * @docid + * @publicName objectLink(entityAlias, key) + * @param2 key:object|string|number + * @return object + * @public + */ + objectLink(entityAlias: string, key: any | string | number): any; +} + +/** + * @docid + * @public + * @namespace DevExpress.common.data + * @type object + */ +export type ODataStoreOptions< + TItem = any, + TKey = any, +> = AbstractStoreOptions & { + /** + * @docid + * @type_function_param1_field params:object + * @type_function_param1_field payload:object + * @type_function_param1_field headers:object + * @public + */ + beforeSend?: ((options: { url: string; async: boolean; method: string; timeout: number; params: any; payload: any; headers: any }) => void); + /** + * @docid + * @public + */ + deserializeDates?: boolean; + /** + * @docid + * @type_function_param1 e:Error + * @type_function_param1_field errorDetails:object + * @type_function_param1_field requestOptions:object + * @public + */ + errorHandler?: ((e: { httpStatus: number; errorDetails: any; requestOptions: ODataRequestOptions }) => void); + /** + * @docid + * @default {} + * @public + */ + fieldTypes?: any; + /** + * @docid + * @public + */ + filterToLower?: boolean; + /** + * @docid + * @default false + * @public + */ + jsonp?: boolean; + /** + * @docid + * @type string|object + * @acceptValues "String"|"Int32"|"Int64"|"Guid"|"Boolean"|"Single"|"Decimal" + * @public + */ + keyType?: 'String' | 'Int32' | 'Int64' | 'Guid' | 'Boolean' | 'Single' | 'Decimal' | any; + /** + * @docid + * @public + */ + url?: string; + /** + * @docid + * @default 4 + * @acceptValues 2|3|4 + * @public + */ + version?: number; + /** + * @docid + * @default false + * @public + */ + withCredentials?: boolean; +}; + +/** + * @docid + * @inherits Store + * @public + * @options ODataStoreOptions + * @namespace DevExpress.common.data + */ +export class ODataStore< + TItem = any, + TKey = any, +> extends AbstractStore { + constructor(options?: ODataStoreOptions); + /** + * @docid + * @publicName byKey(key, extraOptions) + * @param1 key:object|string|number + * @return Promise + * @public + */ + byKey(key: TKey, extraOptions?: { expand?: string | Array; select?: string | Array }): DxPromise; + /** + * @docid + * @publicName createQuery(loadOptions) + * @return object + * @public + */ + createQuery(loadOptions?: { expand?: string | Array; requireTotalCount?: boolean; customQueryParams?: any }): Query; +} + +/** + * @docid + * @namespace DevExpress.common.data + * @public + */ +export class EdmLiteral { + constructor(value: string); + /** + * @docid + * @publicName valueOf() + * @public + */ + valueOf(): string; +} + +/** + * @const Utils.keyConverters + * @publicName odata.keyConverters + * @namespace DevExpress.common.data + * @public + */ +// eslint-disable-next-line vars-on-top, import/no-mutable-exports, no-var, @typescript-eslint/init-declarations, @typescript-eslint/no-explicit-any +export var keyConverters: any; diff --git a/packages/devextreme/js/common/data.js b/packages/devextreme/js/common/data.js new file mode 100644 index 000000000000..8c5cd19312a2 --- /dev/null +++ b/packages/devextreme/js/common/data.js @@ -0,0 +1,36 @@ +import applyChanges from './data/apply_changes'; +import ArrayStore from './data/array_store'; +import { CustomStore, isGroupItemsArray, isItemsArray, isLoadResultObject } from './data/custom_store'; +import DataSource from './data/data_source'; +import EndpointSelector from './data/endpoint_selector'; +import { errorHandler, setErrorHandler } from './data/errors'; +import LocalStore from './data/local_store'; +import query from './data/query'; +import { base64_encode, compileGetter, compileSetter } from './data/utils'; +import DataHelperMixin from './data/data_helper'; +import ODataContext from './data/odata/context'; +import ODataStore from './data/odata/store'; +import { EdmLiteral, keyConverters } from './data/odata/utils'; + +export { + applyChanges, + ArrayStore, + CustomStore, + isGroupItemsArray, + isItemsArray, + isLoadResultObject, + DataSource, + EndpointSelector, + errorHandler, + setErrorHandler, + LocalStore, + query, + base64_encode, + compileGetter, + compileSetter, + DataHelperMixin, + ODataContext, + ODataStore, + EdmLiteral, + keyConverters, +}; diff --git a/packages/devextreme/js/common/data.types.d.ts b/packages/devextreme/js/common/data.types.d.ts new file mode 100644 index 000000000000..3dcdfb98be1a --- /dev/null +++ b/packages/devextreme/js/common/data.types.d.ts @@ -0,0 +1,153 @@ +import { + KeySelector, + OrderingDescriptor, + SelectionDescriptor, +} from '../data/data.types'; + +/** + * @namespace DevExpress.data + */ +export type SearchOperation = '=' | '<>' | '>' | '>=' | '<' | '<=' | 'startswith' | 'endswith' | 'contains' | 'notcontains'; + +/** + * @namespace DevExpress.data + */ +export type GroupingInterval = 'year' | 'quarter' | 'month' | 'day' | 'dayOfWeek' | 'hour' | 'minute' | 'second'; + +/** + * @namespace DevExpress.data + */ +export type SortDescriptor = KeySelector | OrderingDescriptor; + +/** + * @namespace DevExpress.data + */ +export type GroupDescriptor = KeySelector | (OrderingDescriptor & { + groupInterval?: number | GroupingInterval; + isExpanded?: boolean; +}); + +/** + * @namespace DevExpress.data + */ +export type SelectDescriptor = string | Array | ((source: T) => any); + +/** + * @namespace DevExpress.data + */ +export type FilterDescriptor = any; + +/** + * @namespace DevExpress.data + */ +export type SummaryDescriptor = KeySelector | SelectionDescriptor & { + summaryType?: 'sum' | 'avg' | 'min' | 'max' | 'count'; +}; + +/** + * @namespace DevExpress.data + */ +export interface LoadOptions { + /** + * @docid + * @public + */ + customQueryParams?: any; + /** + * @docid + * @public + */ + startDate?: Date; + /** + * @docid + * @public + */ + endDate?: Date; + /** + * @docid + * @public + */ + expand?: Array; + /** + * @docid + * @public + * @type object + */ + filter?: FilterDescriptor | Array; + /** + * @docid + * @public + * @type object + */ + group?: GroupDescriptor | Array>; + /** + * @docid + * @public + * @type SummaryDescriptor | Array + */ + groupSummary?: SummaryDescriptor | Array>; + /** + * @docid + * @public + */ + parentIds?: Array; + /** + * @docid + * @public + */ + requireGroupCount?: boolean; + /** + * @docid + * @public + */ + requireTotalCount?: boolean; + /** + * @docid + * @type getter|Array + * @public + */ + searchExpr?: string | Function | Array; + /** + * @docid + * @public + */ + searchOperation?: SearchOperation; + /** + * @docid + * @public + */ + searchValue?: any; + /** + * @docid + * @public + * @type object + */ + select?: SelectDescriptor; + /** + * @docid + * @public + */ + skip?: number; + /** + * @docid + * @public + * @type object + */ + sort?: SortDescriptor | Array>; + /** + * @docid + * @public + */ + take?: number; + /** + * @docid + * @public + * @type SummaryDescriptor | Array + */ + totalSummary?: SummaryDescriptor | Array>; + /** + * @docid + * @public + */ + userData?: any; +} diff --git a/packages/devextreme/js/common/data/abstract_store.js b/packages/devextreme/js/common/data/abstract_store.js index 28ec4a10a01a..a5d02c408838 100644 --- a/packages/devextreme/js/common/data/abstract_store.js +++ b/packages/devextreme/js/common/data/abstract_store.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_abstract_store'; +export { default } from '../../__internal/data/m_abstract_store'; diff --git a/packages/devextreme/js/common/data/array_query.js b/packages/devextreme/js/common/data/array_query.js index eb370819807a..a3877e9bbd98 100644 --- a/packages/devextreme/js/common/data/array_query.js +++ b/packages/devextreme/js/common/data/array_query.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_array_query'; +export { default } from '../../__internal/data/m_array_query'; diff --git a/packages/devextreme/js/common/data/array_store.js b/packages/devextreme/js/common/data/array_store.js index a6a9ab189189..0715f4b3927f 100644 --- a/packages/devextreme/js/common/data/array_store.js +++ b/packages/devextreme/js/common/data/array_store.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_array_store'; +export { default } from '../../__internal/data/m_array_store'; diff --git a/packages/devextreme/js/common/data/array_utils.js b/packages/devextreme/js/common/data/array_utils.js index 7d6bc9402225..74993adf03d4 100644 --- a/packages/devextreme/js/common/data/array_utils.js +++ b/packages/devextreme/js/common/data/array_utils.js @@ -1 +1 @@ -export * from '../__internal/data/m_array_utils'; +export * from '../../__internal/data/m_array_utils'; diff --git a/packages/devextreme/js/common/data/custom-store.d.ts b/packages/devextreme/js/common/data/custom-store.d.ts index a10801a29fc5..c352ead2c6ae 100644 --- a/packages/devextreme/js/common/data/custom-store.d.ts +++ b/packages/devextreme/js/common/data/custom-store.d.ts @@ -1,69 +1,8 @@ -/** - * @docid - * @public - */ -export type GroupItem< - TItem = any, -> = { - /** @docid */ - key: any | string | number; - /** - * @docid - * @type Array|Array|null - */ - items: Array | Array> | null; - /** @docid */ - count?: number; - /** @docid */ - summary?: Array; -}; - -type LoadResultArray = Array | Array>; - -/** - * @docid - * @public - */ -export type LoadResultObject = { - /** - * @docid - * @type Array|Array - */ - data: Array | Array>; - /** @docid */ - totalCount?: number; - /** @docid */ - summary?: Array; - /** @docid */ - groupCount?: number; - }; - -/** - * @docid - * @public - * @type object - */ -export type LoadResult< - TItem = any, -> = - | Object - | LoadResultArray - | LoadResultObject; - -/** - * @docid - * @public - */ -export function isLoadResultObject(res: LoadResult): res is LoadResultObject; - -/** - * @docid - * @public - */ -export function isGroupItemsArray(res: LoadResult): res is Array>; - -/** - * @docid - * @public - */ -export function isItemsArray(res: LoadResult): res is Array; +export { + GroupItem, + LoadResultObject, + LoadResult, + isLoadResultObject, + isGroupItemsArray, + isItemsArray, +} from '../data'; diff --git a/packages/devextreme/js/common/data/custom-store.js b/packages/devextreme/js/common/data/custom-store.js index 095a86a5b60b..8537994ae794 100644 --- a/packages/devextreme/js/common/data/custom-store.js +++ b/packages/devextreme/js/common/data/custom-store.js @@ -1,18 +1,5 @@ -function isGroupItem(item) { - if(item === undefined || item === null || typeof item !== 'object') { - return false; - } - return 'key' in item && 'items' in item; -} - -export function isLoadResultObject(res) { - return !Array.isArray(res) && 'data' in res; -} - -export function isGroupItemsArray(res) { - return Array.isArray(res) && !!res.length && isGroupItem(res[0]); -} - -export function isItemsArray(res) { - return Array.isArray(res) && !isGroupItem(res[0]); -} +export { + isLoadResultObject, + isGroupItemsArray, + isItemsArray, +} from './custom_store'; diff --git a/packages/devextreme/js/common/data/custom_store.js b/packages/devextreme/js/common/data/custom_store.js index ce6176339591..7e530635fab3 100644 --- a/packages/devextreme/js/common/data/custom_store.js +++ b/packages/devextreme/js/common/data/custom_store.js @@ -1 +1,27 @@ -export { default } from '../__internal/data/m_custom_store'; +import CustomStore from '../../__internal/data/m_custom_store'; + +function isGroupItem(item) { + if(item === undefined || item === null || typeof item !== 'object') { + return false; + } + return 'key' in item && 'items' in item; +} + +function isLoadResultObject(res) { + return !Array.isArray(res) && 'data' in res; +} + +function isGroupItemsArray(res) { + return Array.isArray(res) && !!res.length && isGroupItem(res[0]); +} + +function isItemsArray(res) { + return Array.isArray(res) && !isGroupItem(res[0]); +} + +export { + CustomStore, + isLoadResultObject, + isGroupItemsArray, + isItemsArray, +}; diff --git a/packages/devextreme/js/common/data/data_helper.js b/packages/devextreme/js/common/data/data_helper.js new file mode 100644 index 000000000000..998956583371 --- /dev/null +++ b/packages/devextreme/js/common/data/data_helper.js @@ -0,0 +1,166 @@ + +import { DataSource } from './data_source/data_source'; +import { extend } from '../../core/utils/extend'; +import { normalizeDataSourceOptions } from './data_source/utils'; +import DataController from '../../__internal/ui/collection/m_data_controller'; + +const DATA_SOURCE_OPTIONS_METHOD = '_dataSourceOptions'; +const DATA_SOURCE_CHANGED_METHOD = '_dataSourceChangedHandler'; +const DATA_SOURCE_LOAD_ERROR_METHOD = '_dataSourceLoadErrorHandler'; +const DATA_SOURCE_LOADING_CHANGED_METHOD = '_dataSourceLoadingChangedHandler'; +const DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD = '_dataSourceFromUrlLoadMode'; +const SPECIFIC_DATA_SOURCE_OPTION = '_getSpecificDataSourceOption'; +const NORMALIZE_DATA_SOURCE = '_normalizeDataSource'; + + +const DataHelperMixin = { + + postCtor: function() { + this.on('disposing', function() { + this._disposeDataSource(); + }.bind(this)); + }, + + _refreshDataSource: function() { + this._initDataSource(); + this._loadDataSource(); + }, + + _initDataSource: function() { + let dataSourceOptions = (SPECIFIC_DATA_SOURCE_OPTION in this) ? this[SPECIFIC_DATA_SOURCE_OPTION]() : this.option('dataSource'); + let widgetDataSourceOptions; + let dataSourceType; + + this._disposeDataSource(); + + if(dataSourceOptions) { + if(dataSourceOptions instanceof DataSource) { + this._isSharedDataSource = true; + this._dataSource = dataSourceOptions; + } else { + widgetDataSourceOptions = (DATA_SOURCE_OPTIONS_METHOD in this) ? this[DATA_SOURCE_OPTIONS_METHOD]() : {}; + dataSourceType = this._dataSourceType ? this._dataSourceType() : DataSource; + + dataSourceOptions = normalizeDataSourceOptions(dataSourceOptions, { + fromUrlLoadMode: (DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD in this) && this[DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD]() + }); + + this._dataSource = new dataSourceType(extend(true, {}, widgetDataSourceOptions, dataSourceOptions)); + } + + if(NORMALIZE_DATA_SOURCE in this) { + this._dataSource = this[NORMALIZE_DATA_SOURCE](this._dataSource); + } + + this._addDataSourceHandlers(); + this._initDataController(); + } + }, + + _initDataController: function() { + const dataController = this.option?.('_dataController'); + const dataSource = this._dataSource; + + if(dataController) { + this._dataController = dataController; + } else { + this._dataController = new DataController(dataSource); + } + }, + + _addDataSourceHandlers: function() { + if(DATA_SOURCE_CHANGED_METHOD in this) { + this._addDataSourceChangeHandler(); + } + + if(DATA_SOURCE_LOAD_ERROR_METHOD in this) { + this._addDataSourceLoadErrorHandler(); + } + + if(DATA_SOURCE_LOADING_CHANGED_METHOD in this) { + this._addDataSourceLoadingChangedHandler(); + } + + this._addReadyWatcher(); + }, + + _addReadyWatcher: function() { + this.readyWatcher = (function(isLoading) { + this._ready && this._ready(!isLoading); + }).bind(this); + this._dataSource.on('loadingChanged', this.readyWatcher); + }, + + _addDataSourceChangeHandler: function() { + const dataSource = this._dataSource; + this._proxiedDataSourceChangedHandler = (function(e) { + this[DATA_SOURCE_CHANGED_METHOD](dataSource.items(), e); + }).bind(this); + dataSource.on('changed', this._proxiedDataSourceChangedHandler); + }, + + _addDataSourceLoadErrorHandler: function() { + this._proxiedDataSourceLoadErrorHandler = this[DATA_SOURCE_LOAD_ERROR_METHOD].bind(this); + this._dataSource.on('loadError', this._proxiedDataSourceLoadErrorHandler); + }, + + _addDataSourceLoadingChangedHandler: function() { + this._proxiedDataSourceLoadingChangedHandler = this[DATA_SOURCE_LOADING_CHANGED_METHOD].bind(this); + this._dataSource.on('loadingChanged', this._proxiedDataSourceLoadingChangedHandler); + }, + + _loadDataSource: function() { + const dataSource = this._dataSource; + if(dataSource) { + if(dataSource.isLoaded()) { + this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler(); + } else { + dataSource.load(); + } + } + }, + + _loadSingle: function(key, value) { + key = key === 'this' ? this._dataSource.key() || 'this' : key; + return this._dataSource.loadSingle(key, value); + }, + + _isLastPage: function() { + return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize; + }, + + _isDataSourceLoading: function() { + return this._dataSource && this._dataSource.isLoading(); + }, + + _disposeDataSource: function() { + if(this._dataSource) { + if(this._isSharedDataSource) { + delete this._isSharedDataSource; + + this._proxiedDataSourceChangedHandler && this._dataSource.off('changed', this._proxiedDataSourceChangedHandler); + this._proxiedDataSourceLoadErrorHandler && this._dataSource.off('loadError', this._proxiedDataSourceLoadErrorHandler); + this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off('loadingChanged', this._proxiedDataSourceLoadingChangedHandler); + + if(this._dataSource._eventsStrategy) { + this._dataSource._eventsStrategy.off('loadingChanged', this.readyWatcher); + } + } else { + this._dataSource.dispose(); + } + + delete this._dataSource; + + delete this._proxiedDataSourceChangedHandler; + delete this._proxiedDataSourceLoadErrorHandler; + delete this._proxiedDataSourceLoadingChangedHandler; + } + }, + + getDataSource: function() { + return this._dataSource || null; + } + +}; + +export default DataHelperMixin; diff --git a/packages/devextreme/js/common/data/data_source.js b/packages/devextreme/js/common/data/data_source.js index fcf080056c7a..56ca945f1932 100644 --- a/packages/devextreme/js/common/data/data_source.js +++ b/packages/devextreme/js/common/data/data_source.js @@ -1,3 +1,2 @@ - import { DataSource } from './data_source/data_source'; export default DataSource; diff --git a/packages/devextreme/js/common/data/data_source/data_source.js b/packages/devextreme/js/common/data/data_source/data_source.js index f8d6c50bce74..806ca4198f06 100644 --- a/packages/devextreme/js/common/data/data_source/data_source.js +++ b/packages/devextreme/js/common/data/data_source/data_source.js @@ -26,4 +26,4 @@ * @name DataSourceOptions.store.type * @type Enums.StoreType */ -export * from '../../__internal/data/data_source/m_data_source'; +export * from '../../../__internal/data/data_source/m_data_source'; diff --git a/packages/devextreme/js/common/data/data_source/operation_manager.js b/packages/devextreme/js/common/data/data_source/operation_manager.js index 42f6097f70a8..059f55b8e65f 100644 --- a/packages/devextreme/js/common/data/data_source/operation_manager.js +++ b/packages/devextreme/js/common/data/data_source/operation_manager.js @@ -1 +1 @@ -export { default } from '../../__internal/data/data_source/m_operation_manager'; +export { default } from '../../../__internal/data/data_source/m_operation_manager'; diff --git a/packages/devextreme/js/common/data/data_source/utils.js b/packages/devextreme/js/common/data/data_source/utils.js index 030e499772d0..8b2686832ca6 100644 --- a/packages/devextreme/js/common/data/data_source/utils.js +++ b/packages/devextreme/js/common/data/data_source/utils.js @@ -1 +1 @@ -export * from '../../__internal/data/data_source/m_utils'; +export * from '../../../__internal/data/data_source/m_utils'; diff --git a/packages/devextreme/js/common/data/endpoint_selector.js b/packages/devextreme/js/common/data/endpoint_selector.js index 278737be119a..e613c011c0ce 100644 --- a/packages/devextreme/js/common/data/endpoint_selector.js +++ b/packages/devextreme/js/common/data/endpoint_selector.js @@ -4,4 +4,4 @@ * @param1 options:Object * @hidden */ -export { default } from '../__internal/data/m_endpoint_selector'; +export { default } from '../../__internal/data/m_endpoint_selector'; diff --git a/packages/devextreme/js/common/data/errors.js b/packages/devextreme/js/common/data/errors.js index 73263e080700..f2ad9f675151 100644 --- a/packages/devextreme/js/common/data/errors.js +++ b/packages/devextreme/js/common/data/errors.js @@ -88,4 +88,4 @@ * @name ErrorsData.W4002 */ -export * from '../__internal/data/m_errors'; +export * from '../../__internal/data/m_errors'; diff --git a/packages/devextreme/js/common/data/local_store.js b/packages/devextreme/js/common/data/local_store.js index 4788d4b71d29..2b903d32d98b 100644 --- a/packages/devextreme/js/common/data/local_store.js +++ b/packages/devextreme/js/common/data/local_store.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_local_store'; +export { default } from '../../__internal/data/m_local_store'; diff --git a/packages/devextreme/js/common/data/odata/context.js b/packages/devextreme/js/common/data/odata/context.js index e3621d0b626c..e6d45490192c 100644 --- a/packages/devextreme/js/common/data/odata/context.js +++ b/packages/devextreme/js/common/data/odata/context.js @@ -1 +1 @@ -export { default } from '../../__internal/data/odata/m_context'; +export { default } from '../../../__internal/data/odata/m_context'; diff --git a/packages/devextreme/js/common/data/odata/query_adapter.js b/packages/devextreme/js/common/data/odata/query_adapter.js index 4b6486934b8c..a56104665e6c 100644 --- a/packages/devextreme/js/common/data/odata/query_adapter.js +++ b/packages/devextreme/js/common/data/odata/query_adapter.js @@ -1 +1 @@ -export * from '../../__internal/data/odata/m_query_adapter'; +export * from '../../../__internal/data/odata/m_query_adapter'; diff --git a/packages/devextreme/js/common/data/odata/request_dispatcher.js b/packages/devextreme/js/common/data/odata/request_dispatcher.js index 0aba5a72cb0f..13fc3dc1b4c6 100644 --- a/packages/devextreme/js/common/data/odata/request_dispatcher.js +++ b/packages/devextreme/js/common/data/odata/request_dispatcher.js @@ -1 +1 @@ -export { default } from '../../__internal/data/odata/m_request_dispatcher'; +export { default } from '../../../__internal/data/odata/m_request_dispatcher'; diff --git a/packages/devextreme/js/common/data/odata/store.js b/packages/devextreme/js/common/data/odata/store.js index 8168fdb0262c..75362c160631 100644 --- a/packages/devextreme/js/common/data/odata/store.js +++ b/packages/devextreme/js/common/data/odata/store.js @@ -1 +1 @@ -export { default } from '../../__internal/data/odata/m_store'; +export { default } from '../../../__internal/data/odata/m_store'; diff --git a/packages/devextreme/js/common/data/odata/utils.js b/packages/devextreme/js/common/data/odata/utils.js index c1c0081a98d0..dd6b652bf0b2 100644 --- a/packages/devextreme/js/common/data/odata/utils.js +++ b/packages/devextreme/js/common/data/odata/utils.js @@ -3,4 +3,4 @@ * @publicName ctor(value) * @param1 value:string */ -export * from '../../__internal/data/odata/m_utils'; +export * from '../../../__internal/data/odata/m_utils'; diff --git a/packages/devextreme/js/common/data/query.js b/packages/devextreme/js/common/data/query.js index 9daad5afb660..b1e2c444e038 100644 --- a/packages/devextreme/js/common/data/query.js +++ b/packages/devextreme/js/common/data/query.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_query'; +export { default } from '../../__internal/data/m_query'; diff --git a/packages/devextreme/js/common/data/remote_query.js b/packages/devextreme/js/common/data/remote_query.js index b147929d99c5..592ebfe65d2c 100644 --- a/packages/devextreme/js/common/data/remote_query.js +++ b/packages/devextreme/js/common/data/remote_query.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_remote_query'; +export { default } from '../../__internal/data/m_remote_query'; diff --git a/packages/devextreme/js/common/data/store_helper.js b/packages/devextreme/js/common/data/store_helper.js index b52b1c493c83..bb0fca23c7d1 100644 --- a/packages/devextreme/js/common/data/store_helper.js +++ b/packages/devextreme/js/common/data/store_helper.js @@ -1 +1 @@ -export { default } from '../__internal/data/m_store_helper'; +export { default } from '../../__internal/data/m_store_helper'; diff --git a/packages/devextreme/js/common/data/utils.js b/packages/devextreme/js/common/data/utils.js index f056b6c0caa8..a59212919375 100644 --- a/packages/devextreme/js/common/data/utils.js +++ b/packages/devextreme/js/common/data/utils.js @@ -1,4 +1,11 @@ +import { compileGetter, compileSetter } from '../../core/utils/data'; + /** * @name Utils */ -export * from '../__internal/data/m_utils'; +export * from '../../__internal/data/m_utils'; + +export { + compileGetter, + compileSetter +}; diff --git a/packages/devextreme/js/common/export.d.ts b/packages/devextreme/js/common/export.d.ts deleted file mode 100644 index fbe88f9161db..000000000000 --- a/packages/devextreme/js/common/export.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @docid - * @type object - * @namespace DevExpress - */ -export interface ExportLoadPanel { - /** - * @docid - * @default true - */ - enabled?: boolean; - /** - * @docid - * @default "Exporting..." - */ - text?: string; - /** - * @docid - * @default 200 - */ - width?: number; - /** - * @docid - * @default 90 - */ - height?: number; - /** - * @docid - * @default true - */ - showIndicator?: boolean; - /** - * @docid - * @default "" - */ - indicatorSrc?: string; - /** - * @docid - * @default true - */ - showPane?: boolean; - /** - * @docid - * @default false - */ - shading?: boolean; - /** - * @docid - * @default '' - */ - shadingColor?: string; -} diff --git a/packages/devextreme/js/common/export/excel.d.ts b/packages/devextreme/js/common/export/excel.d.ts index c4cddd182240..9f3700adf226 100644 --- a/packages/devextreme/js/common/export/excel.d.ts +++ b/packages/devextreme/js/common/export/excel.d.ts @@ -1,212 +1,69 @@ -import { DxPromise } from './core/utils/deferred'; -import dxDataGrid, { Column } from './ui/data_grid'; -import dxPivotGrid, { Cell } from './ui/pivot_grid'; -import { ExportLoadPanel } from './exporter/export_load_panel'; +import { DxPromise } from '../../core/utils/deferred'; +import dxPivotGrid from '../../ui/pivot_grid'; +import dxDataGrid from '../../ui/data_grid'; + +import { + CellRange, + ExcelDataGridCell, + ExcelExportBaseOptions, + ExcelPivotGridCell, +} from '../../excel_exporter.types'; /** * @public - * @namespace DevExpress.excelExporter + * @namespace DevExpress.common.Export.excel */ export type DataGridCell = ExcelDataGridCell; -/** - * @namespace DevExpress.excelExporter - * @deprecated Use DataGridCell instead - */ -export interface ExcelDataGridCell { - /** - * @docid - * @public - * @type dxDataGridColumn - */ - column?: Column; - /** - * @docid - * @public - */ - data?: any; - /** - * @docid - * @public - */ - groupIndex?: number; - /** - * @docid - * @public - */ - groupSummaryItems?: Array<{ - /** - * @docid - */ - name?: string; - /** - * @docid - */ - value?: any; - }>; - /** - * @docid - * @public - */ - rowType?: string; - /** - * @docid - * @public - */ - totalSummaryItemName?: string; - /** - * @docid - * @public - */ - value?: any; -} - /** * @public - * @namespace DevExpress.excelExporter + * @namespace DevExpress.common.Export.excel */ export type PivotGridCell = ExcelPivotGridCell; /** - * @namespace DevExpress.excelExporter - * @deprecated Use PivotGridCell instead - */ -export interface ExcelPivotGridCell extends Cell { - /** - * @docid - * @public - */ - area?: 'column' | 'row' | 'data'; - /** - * @docid - * @public - */ - rowIndex?: number; - /** - * @docid - * @public - */ - columnIndex?: number; - /** - * @docid - * @public - */ - headerType?: 'column' | 'row' | 'data' | 'filter'; -} - -/** - * @docid - * @namespace DevExpress.excelExporter - * @type object - */ -export interface CellAddress { - /** - * @docid - * @public - */ - row?: number; - /** - * @docid - * @public - */ - column?: number; -} - -/** - * @docid - * @namespace DevExpress.excelExporter - * @type object - */ -export interface CellRange { - /** - * @docid - * @public - */ - from?: CellAddress; - /** - * @docid - * @public - */ - to?: CellAddress; -} - -/** - * @docid - * @namespace DevExpress.excelExporter - * @hidden - */ -export interface ExcelExportBaseProps { - /** - * @docid - * @default undefined - * @public - */ - worksheet?: object | undefined; - /** - * @docid - * @default { row: 1, column: 1 } - * @public - */ - topLeftCell?: CellAddress | string; - /** - * @docid - * @default true - * @public - */ - keepColumnWidths?: boolean; - /** - * @docid - * @public - */ - loadPanel?: ExportLoadPanel; - /** - * @docid - * @default false - * @public - */ - encodeExecutableContent?: boolean; -} - -/** - * @docid + * @docid ExcelExportDataGridProps * @public - * @namespace DevExpress.excelExporter - * @inherits ExcelExportBaseProps + * @namespace DevExpress.common.Export.excel + * @inherits ExcelExportBaseOptions + * @type object */ -export interface ExcelExportDataGridProps extends ExcelExportBaseProps { +export type DataGridExportOptions = ExcelExportBaseOptions & { /** - * @docid + * @docid ExcelExportDataGridProps.component * @default undefined * @public */ component?: dxDataGrid | undefined; /** - * @docid + * @docid ExcelExportDataGridProps.selectedRowsOnly * @default false * @public */ selectedRowsOnly?: boolean; /** - * @docid + * @docid ExcelExportDataGridProps.autoFilterEnabled * @default false * @public */ autoFilterEnabled?: boolean; /** - * @docid + * @docid ExcelExportDataGridProps.customizeCell * @type_function_param1_field gridCell:ExcelDataGridCell * @type_function_param1_field excelCell:Object * @public */ customizeCell?: ((options: { gridCell?: DataGridCell; excelCell?: any }) => void); -} +}; /** * @docid - * @namespace DevExpress.excelExporter - * @inherits ExcelExportBaseProps + * @public + * @namespace DevExpress.common.Export.excel + * @inherits ExcelExportBaseOptions + * @type object */ -export interface ExcelExportPivotGridProps extends ExcelExportBaseProps { +export type PivotGridExportOptions = ExcelExportBaseOptions & { /** * @docid * @default undefined @@ -256,24 +113,25 @@ export interface ExcelExportPivotGridProps extends ExcelExportBaseProps { * @public */ customizeCell?: ((options: { pivotCell?: PivotGridCell; excelCell?: any }) => void); -} +}; /** * @docid excelExporter.exportDataGrid * @publicName exportDataGrid(options) + * @param1 options:ExcelExportDataGridProps * @return Promise - * @namespace DevExpress.excelExporter + * @namespace DevExpress.common.Export.excel * @static * @public */ -export function exportDataGrid(options: ExcelExportDataGridProps): DxPromise; +export function exportDataGrid(options: DataGridExportOptions): DxPromise; /** * @docid excelExporter.exportPivotGrid * @publicName exportPivotGrid(options) * @return Promise - * @namespace DevExpress.excelExporter + * @namespace DevExpress.common.Export.excel * @static * @public */ -export function exportPivotGrid(options: ExcelExportPivotGridProps): DxPromise; +export function exportPivotGrid(options: PivotGridExportOptions): DxPromise; diff --git a/packages/devextreme/js/common/export/excel.js b/packages/devextreme/js/common/export/excel.js index 811a52494b39..c4ebeb180080 100644 --- a/packages/devextreme/js/common/export/excel.js +++ b/packages/devextreme/js/common/export/excel.js @@ -1,5 +1,5 @@ -import { exportDataGrid } from './exporter/exceljs/export_data_grid'; -import { exportPivotGrid } from './exporter/exceljs/export_pivot_grid'; +import { exportDataGrid } from '../../exporter/exceljs/export_data_grid'; +import { exportPivotGrid } from '../../exporter/exceljs/export_pivot_grid'; /** * @name excelExporter diff --git a/packages/devextreme/js/common/export/pdf.d.ts b/packages/devextreme/js/common/export/pdf.d.ts index c84402838790..1598355d9835 100644 --- a/packages/devextreme/js/common/export/pdf.d.ts +++ b/packages/devextreme/js/common/export/pdf.d.ts @@ -1,32 +1,240 @@ -import { DxPromise } from './core/utils/deferred'; -import dxDataGrid from './ui/data_grid'; -import { ExportLoadPanel } from './exporter/export_load_panel'; +import { DxPromise } from '../../core/utils/deferred'; +import { PdfDataGridCell } from '../../pdf_exporter.types'; +import dxDataGrid from '../../ui/data_grid'; import dxGantt, { GanttPdfExportMode, GanttPdfExportDateRange, -} from './ui/gantt'; -import { - DataGridCell as ExcelCell, -} from './excel_exporter'; +} from '../../ui/gantt'; +import { ExportLoadPanel } from '../../exporter/export_load_panel'; /** + * @docid * @public - * @namespace DevExpress.pdfExporter + * @namespace DevExpress.common.Export.pdf */ -export type DataGridCell = PdfDataGridCell; +export type GanttExportFont = { + /** + * @docid + * @default undefined + * @public + */ + fontObject: object | undefined; + /** + * @docid + * @default undefined + * @public + */ + name: string | undefined; + /** + * @docid + * @default 'normal' + * @acceptValues "bold" | "normal" | "italic" + * @public + */ + style?: string; + /** + * @docid + * @default undefined + * @acceptValues "normal" | "bold" | 400 | 700 + * @public + */ + weight?: string | number | undefined; +}; - /** - * @namespace DevExpress.pdfExporter - * @deprecated Use DataGridCell instead +/** + * @docid + * @public + * @namespace DevExpress.common.Export.pdf + * @type object + */ +export type GanttExportOptions = { + /** + * @docid + * @type_function_param1 options:object + * @public + */ + createDocumentMethod?: ((options: any) => object); + /** + * @docid + * @default undefined + * @public + */ + jsPDFDocument?: object | undefined; + /** + * @docid + * @default undefined + * @public + */ + component?: dxGantt | undefined; + /** + * @docid + * @default undefined + * @public + */ + format?: string | object | undefined; + /** + * @docid + * @default true + * @public + */ + landscape?: boolean; + /** + * @docid + * @default undefined + * @public + */ + fileName?: string | undefined; + /** + * @docid + * @default undefined + * @public + */ + margins?: object | undefined; + /** + * @docid + * @default 'all' + * @public + */ + exportMode?: GanttPdfExportMode; + /** + * @docid + * @public + */ + dateRange?: GanttPdfExportDateRange | object; + /** + * @docid + * @public */ -export interface PdfDataGridCell extends ExcelCell {} + font?: GanttExportFont; +}; + +/** + * @docid PdfExportDataGridProps + * @public + * @namespace DevExpress.common.Export.pdf + * @type object + */ +export type DataGridExportOptions = { + /** + * @docid PdfExportDataGridProps.jsPDFDocument + * @default undefined + * @public + */ + jsPDFDocument?: object | undefined; + /** + * @docid PdfExportDataGridProps.component + * @default undefined + * @public + */ + component?: dxDataGrid | undefined; + /** + * @docid PdfExportDataGridProps.topLeft + * @public + */ + topLeft?: { + /** + * @docid PdfExportDataGridProps.topLeft.x + * @default 0 + * @public + */ + x?: number; + /** + * @docid PdfExportDataGridProps.topLeft.y + * @default 0 + * @public + */ + y?: number; + }; + /** + * @docid PdfExportDataGridProps.columnWidths + * @default undefined + * @public + */ + columnWidths?: Array | undefined; + /** + * @docid PdfExportDataGridProps.indent + * @default 0 + * @public + */ + indent?: number; + /** + * @docid PdfExportDataGridProps.margin + * @public + */ + margin?: { + /** + * @docid PdfExportDataGridProps.margin.top + * @public + */ + top?: number; + /** + * @docid PdfExportDataGridProps.margin.left + * @public + */ + left?: number; + /** + * @docid PdfExportDataGridProps.margin.right + * @public + */ + right?: number; + /** + * @docid PdfExportDataGridProps.margin.bottom + * @public + */ + bottom?: number; + }; + /** + * @docid PdfExportDataGridProps.repeatHeaders + * @default true + * @public + */ + repeatHeaders?: boolean; + /** + * @docid PdfExportDataGridProps.selectedRowsOnly + * @default false + * @public + */ + selectedRowsOnly?: boolean; + /** + * @docid PdfExportDataGridProps.customDrawCell + * @type_function_param1_field gridCell:PdfDataGridCell + * @type_function_param1_field pdfCell:PdfCell + * @type_function_param1_field doc:object + * @public + */ + customDrawCell?: ((options: { gridCell?: DataGridCell; pdfCell?: Cell; doc?: any; rect?: { x: number; y: number; h: number; w: number }; cancel?: boolean }) => void); + /** + * @docid PdfExportDataGridProps.customizeCell + * @type_function_param1_field gridCell:PdfDataGridCell + * @type_function_param1_field pdfCell:PdfCell + * @public + */ + customizeCell?: ((options: { gridCell?: DataGridCell; pdfCell?: Cell }) => void); + /** + * @docid PdfExportDataGridProps.onRowExporting + * @type_function_param1_field rowCells:Array + * @public + */ + onRowExporting?: ((options: { rowCells?: Array; rowHeight?: number }) => void); + /** + * @docid PdfExportDataGridProps.loadPanel + * @public + */ + loadPanel?: ExportLoadPanel; +}; + +/** + * @public + * @namespace DevExpress.common.Export.pdf + */ +export type DataGridCell = PdfDataGridCell; /** * @public * @docid PdfCell - * @namespace DevExpress.pdfExporter + * @namespace DevExpress.common.Export.pdf */ -export interface Cell { +export type Cell = { /** * @docid PdfCell.backgroundColor * @default '#FFFFFF' @@ -141,234 +349,25 @@ export interface Cell { * @public */ wordWrapEnabled?: boolean; -} - -/** - * @docid - * @namespace DevExpress.pdfExporter - */ -export interface PdfExportDataGridProps { - /** - * @docid - * @default undefined - * @public - */ - jsPDFDocument?: object | undefined; - /** - * @docid - * @default undefined - * @public - */ - component?: dxDataGrid | undefined; - /** - * @docid - * @public - */ - topLeft?: { - /** - * @docid - * @default 0 - * @public - */ - x?: number; - /** - * @docid - * @default 0 - * @public - */ - y?: number; - }; - /** - * @docid - * @default undefined - * @public - */ - columnWidths?: Array | undefined; - /** - * @docid - * @default 0 - * @public - */ - indent?: number; - /** - * @docid - * @public - */ - margin?: { - /** - * @docid - * @public - */ - top?: number; - /** - * @docid - * @public - */ - left?: number; - /** - * @docid - * @public - */ - right?: number; - /** - * @docid - * @public - */ - bottom?: number; - }; - /** - * @docid - * @default true - * @public - */ - repeatHeaders?: boolean; - /** - * @docid - * @default false - * @public - */ - selectedRowsOnly?: boolean; - /** - * @docid - * @type_function_param1_field gridCell:PdfDataGridCell - * @type_function_param1_field pdfCell:PdfCell - * @type_function_param1_field doc:object - * @public - */ - customDrawCell?: ((options: { gridCell?: DataGridCell; pdfCell?: Cell; doc?: any; rect?: { x: number; y: number; h: number; w: number }; cancel?: boolean }) => void); - /** - * @docid - * @type_function_param1_field gridCell:PdfDataGridCell - * @type_function_param1_field pdfCell:PdfCell - * @public - */ - customizeCell?: ((options: { gridCell?: DataGridCell; pdfCell?: Cell }) => void); - /** - * @docid - * @type_function_param1_field rowCells:Array - * @public - */ - onRowExporting?: ((options: { rowCells?: Array; rowHeight?: number }) => void); - /** - * @docid - * @public - */ - loadPanel?: ExportLoadPanel; -} +}; /** * @docid pdfExporter.exportDataGrid * @publicName exportDataGrid(options) + * @param1 options: PdfExportDataGridProps * @return Promise - * @namespace DevExpress.pdfExporter + * @namespace DevExpress.common.Export.pdf * @static * @public */ -export function exportDataGrid(options: PdfExportDataGridProps): DxPromise; - -/** - * @docid - * @namespace DevExpress.pdfExporter - */ -export interface PdfExportGanttProps { - /** - * @docid - * @type_function_param1 options:object - * @public - */ - createDocumentMethod?: ((options: any) => object); - /** - * @docid - * @default undefined - * @public - */ - jsPDFDocument?: object | undefined; - /** - * @docid - * @default undefined - * @public - */ - component?: dxGantt | undefined; - /** - * @docid - * @default undefined - * @public - */ - format?: string | object | undefined; - /** - * @docid - * @default true - * @public - */ - landscape?: boolean; - /** - * @docid - * @default undefined - * @public - */ - fileName?: string | undefined; - /** - * @docid - * @default undefined - * @public - */ - margins?: object | undefined; - /** - * @docid - * @default 'all' - * @public - */ - exportMode?: GanttPdfExportMode; - /** - * @docid - * @public - */ - dateRange?: GanttPdfExportDateRange | object; - /** - * @docid - * @public - */ - font?: PdfExportGanttFont; -} - -/** - * @docid - */ -export interface PdfExportGanttFont { - /** - * @docid - * @default undefined - * @public - */ - fontObject: object | undefined; - /** - * @docid - * @default undefined - * @public - */ - name: string | undefined; - /** - * @docid - * @default 'normal' - * @acceptValues "bold" | "normal" | "italic" - * @public - */ - style?: string; - /** - * @docid - * @default undefined - * @acceptValues "normal" | "bold" | 400 | 700 - * @public - */ - weight?: string | number | undefined; -} +export function exportDataGrid(options: DataGridExportOptions): DxPromise; /** * @docid pdfExporter.exportGantt * @publicName exportGantt(options) * @return Promise - * @namespace DevExpress.pdfExporter + * @namespace DevExpress.common.Export.pdf * @static * @public */ -export function exportGantt(options: PdfExportGanttProps): DxPromise; +export function exportGantt(options: GanttExportOptions): DxPromise; diff --git a/packages/devextreme/js/common/export/pdf.js b/packages/devextreme/js/common/export/pdf.js index 47aeeefad84c..efb7c84c2bcd 100644 --- a/packages/devextreme/js/common/export/pdf.js +++ b/packages/devextreme/js/common/export/pdf.js @@ -1,6 +1,6 @@ -import { exportDataGrid } from './exporter/jspdf/export_data_grid'; -import { exportDataGrid as exportDataGridWithAutoTable } from './exporter/jspdf/autotable/export_data_grid'; -import { exportGantt } from './exporter/jspdf/export_gantt'; +import { exportDataGrid } from '../../exporter/jspdf/export_data_grid'; +import { exportDataGrid as exportDataGridWithAutoTable } from '../../exporter/jspdf/autotable/export_data_grid'; +import { exportGantt } from '../../exporter/jspdf/export_gantt'; /** * @name PdfDataGridCell diff --git a/packages/devextreme/js/common/grids.d.ts b/packages/devextreme/js/common/grids.d.ts index ee1ae422450f..a698df0baa24 100644 --- a/packages/devextreme/js/common/grids.d.ts +++ b/packages/devextreme/js/common/grids.d.ts @@ -13,7 +13,7 @@ import { Sortable, SortOrder, ValidationRule, - PagerBase, + template, } from '../common'; import { @@ -27,27 +27,25 @@ import { } from '../core/element'; import { - DxPromise, -} from '../core/utils/deferred'; - -import { - template, -} from '../core/templates/template'; + DataSource, + DataSourceOptions, +} from './data'; -import DataSource, { - Options as DataSourceOptions, - DataSourceLike, -} from '../data/data_source'; +import { DataSourceLike } from '../data/data_source'; import { Cancelable, EventInfo, NativeEventInfo, -} from '../events/index'; +} from './core/events'; + +import { + DxPromise, +} from '../core/utils/deferred'; import { Format, -} from '../localization'; +} from './core/localization'; import { FilterLookupDataSource, @@ -70,7 +68,8 @@ import { import { WidgetOptions, } from '../ui/widget/ui.widget'; -import { PositionConfig } from '../animation/position'; +import { PositionConfig } from './core/animation'; +import { PagerBase } from '../ui/pagination'; /** * @docid diff --git a/packages/devextreme/js/common/set_template_engine.js b/packages/devextreme/js/common/set_template_engine.js index 31aeacde2545..de327c598a08 100644 --- a/packages/devextreme/js/common/set_template_engine.js +++ b/packages/devextreme/js/common/set_template_engine.js @@ -1,2 +1,3 @@ import { setTemplateEngine } from '../__internal/core/m_set_template_engine'; + export default setTemplateEngine; diff --git a/packages/devextreme/js/core/config.d.ts b/packages/devextreme/js/core/config.d.ts index 51490ed48a42..abd2dd13228e 100644 --- a/packages/devextreme/js/core/config.d.ts +++ b/packages/devextreme/js/core/config.d.ts @@ -1,29 +1,16 @@ -import { GlobalConfig } from '../common'; +import { + config, + GlobalConfig, +} from '../common'; -/** @public */ -export type FloatingActionButtonDirection = 'auto' | 'up' | 'down'; +export { + FloatingActionButtonDirection, +} from '../common'; /** - * @docid - * @publicName config() * @namespace DevExpress - * @public + * @deprecated Use GlobalConfig from /common instead */ -declare function config(): GlobalConfig; - -/** - * @docid - * @publicName config(config) - * @namespace DevExpress - * @public - */ -// eslint-disable-next-line @typescript-eslint/no-shadow -declare function config(config: GlobalConfig): void; - -/** -* @namespace DevExpress -* @deprecated Use GlobalConfig instead -*/ export type globalConfig = GlobalConfig; export default config; diff --git a/packages/devextreme/js/core/config.js b/packages/devextreme/js/core/config.js new file mode 100644 index 000000000000..17d8c0fbf2b9 --- /dev/null +++ b/packages/devextreme/js/core/config.js @@ -0,0 +1,3 @@ +import { config } from '../common'; + +export default config; diff --git a/packages/devextreme/js/core/devices.d.ts b/packages/devextreme/js/core/devices.d.ts index 4ec5b6781d3e..dc86d685f44d 100644 --- a/packages/devextreme/js/core/devices.d.ts +++ b/packages/devextreme/js/core/devices.d.ts @@ -1,134 +1,84 @@ -/** - * @public - * @docid - * @section commonObjectStructures - * @namespace DevExpress - */ -export type Device = { - /** - * @docid - * @public - */ - android?: boolean; - /** - * @docid - * @public - */ - deviceType?: 'phone' | 'tablet' | 'desktop'; - /** - * @docid - * @public - */ - generic?: boolean; - /** - * @docid - * @public - */ - grade?: 'A' | 'B' | 'C'; - /** - * @docid - * @public - */ - ios?: boolean; - /** - * @docid - * @public - */ - phone?: boolean; - /** - * @docid - * @public - */ - platform?: 'android' | 'ios' | 'generic'; - /** - * @docid - * @public - */ - tablet?: boolean; - /** - * @docid - * @public - */ - version?: Array; -}; +import { Device, EventName } from '../common/core/environment'; -type EventName = 'orientationChanged'; +export { + Device, +} from '../common/core/environment'; /** - * @docid - * @publicName devices - * @section Utils - * @namespace DevExpress - * @public - */ +* @docid +* @publicName devices +* @section Utils +* @public +*/ declare class DevicesObject { - constructor(options?: { window?: Window }); - /** - * @docid - * @publicName current() - * @public - */ - current(): Device; - /** - * @docid - * @publicName current(deviceName) - * @public - */ - current(deviceName: string | Device): void; - /** - * @docid - * @publicName off(eventName) - * @param1 eventName:string - * @return this - * @public - */ - off(eventName: EventName): this; - /** - * @docid - * @publicName off(eventName, eventHandler) - * @param1 eventName:string - * @return this - * @public - */ - off(eventName: EventName, eventHandler: Function): this; - /** - * @docid - * @publicName on(eventName, eventHandler) - * @param1 eventName:string - * @return this - * @public - */ - on(eventName: EventName, eventHandler: Function): this; - /** - * @docid - * @publicName on(events) - * @param1 events:object - * @return this - * @public - */ - on(events: { [key in EventName]?: Function }): this; - /** - * @docid - * @publicName orientation() - * @return String - * @public - */ - orientation(): 'portrait' | 'landscape' | undefined; - /** - * @docid - * @publicName real() - * @public - */ - real(): Device; - isSimulator(): boolean; + constructor(options?: { window?: Window }); + /** + * @docid + * @publicName current() + * @public + */ + current(): Device; + /** + * @docid + * @publicName current(deviceName) + * @public + */ + current(deviceName: string | Device): void; + /** + * @docid + * @publicName off(eventName) + * @param1 eventName:string + * @return this + * @public + */ + off(eventName: EventName): this; + /** + * @docid + * @publicName off(eventName, eventHandler) + * @param1 eventName:string + * @return this + * @public + */ + off(eventName: EventName, eventHandler: Function): this; + /** + * @docid + * @publicName on(eventName, eventHandler) + * @param1 eventName:string + * @return this + * @public + */ + on(eventName: EventName, eventHandler: Function): this; + /** + * @docid + * @publicName on(events) + * @param1 events:object + * @return this + * @public + */ + on(events: { [key in EventName]?: Function }): this; + /** + * @docid + * @publicName orientation() + * @return String + * @public + */ + orientation(): 'portrait' | 'landscape' | undefined; + /** + * @docid + * @publicName real() + * @public + */ + real(): Device; + isSimulator(): boolean; } /** - * @const devices - * @namespace DevExpress - * @hidden - * @public - */ - +* @const devices +* @namespace DevExpress.common.core.environment +* @hidden +* @public +*/ +// eslint-disable-next-line @typescript-eslint/init-declarations declare const devices: DevicesObject; + export default devices; diff --git a/packages/devextreme/js/core/devices.js b/packages/devextreme/js/core/devices.js new file mode 100644 index 000000000000..e069c4e5fb31 --- /dev/null +++ b/packages/devextreme/js/core/devices.js @@ -0,0 +1,3 @@ +import { devices } from '../common/core/environment'; + +export default devices; diff --git a/packages/devextreme/js/core/dom_component.d.ts b/packages/devextreme/js/core/dom_component.d.ts index 7a52aa01534b..1edb6eda8ec6 100644 --- a/packages/devextreme/js/core/dom_component.d.ts +++ b/packages/devextreme/js/core/dom_component.d.ts @@ -12,7 +12,7 @@ import { ChangedOptionInfo, EventInfo, InitializedEventInfo, -} from '../events/index'; +} from '../common/core/events'; import { TemplateManager } from './template_manager'; import { FunctionTemplate } from './templates/function_template'; diff --git a/packages/devextreme/js/core/guid.d.ts b/packages/devextreme/js/core/guid.d.ts index b84c5497c208..80747a9917bb 100644 --- a/packages/devextreme/js/core/guid.d.ts +++ b/packages/devextreme/js/core/guid.d.ts @@ -1,21 +1,3 @@ -/** - * @docid - * @namespace DevExpress.data - * @public - */ -export default class Guid { - constructor(); - constructor(value: string); - /** - * @docid - * @publicName toString() - * @public - */ - toString(): string; - /** - * @docid - * @publicName valueOf() - * @public - */ - valueOf(): string; -} +import { Guid } from '../common'; + +export default Guid; diff --git a/packages/devextreme/js/core/guid.js b/packages/devextreme/js/core/guid.js new file mode 100644 index 000000000000..80747a9917bb --- /dev/null +++ b/packages/devextreme/js/core/guid.js @@ -0,0 +1,3 @@ +import { Guid } from '../common'; + +export default Guid; diff --git a/packages/devextreme/js/core/options.d.ts b/packages/devextreme/js/core/options.d.ts index 3a2aca745d3d..5411ad197048 100644 --- a/packages/devextreme/js/core/options.d.ts +++ b/packages/devextreme/js/core/options.d.ts @@ -1,16 +1,3 @@ -import { - Device, -} from './devices'; - -import { - DeepPartial, -} from './index'; - -/** - * @docid - * @public - */ -export type DefaultOptionsRule = { - device?: Device | Device[] | ((device: Device) => boolean); - options: DeepPartial; -}; +export { + DefaultOptionsRule, +} from '../common'; diff --git a/packages/devextreme/js/core/options/utils.d.ts b/packages/devextreme/js/core/options/utils.d.ts index cd098f2fc766..327a1e004535 100644 --- a/packages/devextreme/js/core/options/utils.d.ts +++ b/packages/devextreme/js/core/options/utils.d.ts @@ -1,6 +1,6 @@ import { Device, -} from '../devices'; +} from '../../common/core/environment'; import { DefaultOptionsRule, diff --git a/packages/devextreme/js/core/set_template_engine.d.ts b/packages/devextreme/js/core/set_template_engine.d.ts index e0ff4f7dc9a7..c8bd6303ec02 100644 --- a/packages/devextreme/js/core/set_template_engine.d.ts +++ b/packages/devextreme/js/core/set_template_engine.d.ts @@ -1,9 +1,3 @@ -/** - * @docid - * @publicName setTemplateEngine(options) - * @namespace DevExpress - * @public - */ -declare function setTemplateEngine(templateEngineOptions: { compile?: Function; render?: Function }): void; +import { setTemplateEngine } from '../common'; export default setTemplateEngine; diff --git a/packages/devextreme/js/core/set_template_engine.js b/packages/devextreme/js/core/set_template_engine.js new file mode 100644 index 000000000000..c7d3a1ad5914 --- /dev/null +++ b/packages/devextreme/js/core/set_template_engine.js @@ -0,0 +1 @@ +export { setTemplateEngine as default } from '../common'; diff --git a/packages/devextreme/js/core/templates/template.d.ts b/packages/devextreme/js/core/templates/template.d.ts index 47bc5899f2ce..b4417396b48c 100644 --- a/packages/devextreme/js/core/templates/template.d.ts +++ b/packages/devextreme/js/core/templates/template.d.ts @@ -1,6 +1,6 @@ -import { - UserDefinedElement, -} from '../element'; +export type { + template, +} from '../../common'; /** * @docid @@ -26,10 +26,3 @@ export type dxTemplate = Template; export class Template { constructor(options?: dxTemplateOptions); } - -/** - * @docid - * @section Common - * @public - */ -export type template = string | Function | UserDefinedElement; diff --git a/packages/devextreme/js/core/utils/deferred.d.ts b/packages/devextreme/js/core/utils/deferred.d.ts index 060192b9f3af..069420ecc849 100644 --- a/packages/devextreme/js/core/utils/deferred.d.ts +++ b/packages/devextreme/js/core/utils/deferred.d.ts @@ -2,7 +2,7 @@ interface Callback { // eslint-disable-next-line @typescript-eslint/prefer-function-type (value: T, ...args: T[]): void; } -declare class DeferredObj { +export class DeferredObj { constructor(); state(): 'pending' | 'rejected' | 'resolved'; always(alwaysCallback?: Callback): DeferredObj; @@ -24,6 +24,7 @@ export function Deferred(): DeferredObj; // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-unused-vars export interface PromiseType { } + /** * @docid * @type Promise diff --git a/packages/devextreme/js/common/data/abstract_store.d.ts b/packages/devextreme/js/data/abstract_store.d.ts similarity index 59% rename from packages/devextreme/js/common/data/abstract_store.d.ts rename to packages/devextreme/js/data/abstract_store.d.ts index 98fe86b7122e..6219e4e33846 100644 --- a/packages/devextreme/js/common/data/abstract_store.d.ts +++ b/packages/devextreme/js/data/abstract_store.d.ts @@ -2,12 +2,10 @@ import { DxExtendedPromise, } from '../core/utils/deferred'; import { - Store as BaseStore, - Options as BaseStoreOptions, + Store as StoreBase, + StoreOptions as StoreOptionsBase, } from './store'; -import { - LoadOptions, -} from './index'; +import { LoadOptions } from '../common/data'; export type Options< TItem = any, @@ -15,12 +13,12 @@ export type Options< > = AbstractStoreOptions; /** - * @namespace DevExpress.data + * @namespace DevExpress.common.data */ -interface AbstractStoreOptions< +export interface AbstractStoreOptions< TItem = any, TKey = any, - > extends BaseStoreOptions { + > extends StoreOptionsBase { /** * @docid StoreOptions.onLoaded * @type_function_param2 loadOptions:LoadOptions @@ -31,12 +29,12 @@ interface AbstractStoreOptions< } /** - * @namespace DevExpress.data + * @namespace DevExpress.common.data */ export default class AbstractStore< TItem = any, TKey = any, - > extends BaseStore { + > extends StoreBase { constructor(options?: Options); /** * @docid Store.load() @@ -56,13 +54,13 @@ export default class AbstractStore< } /** - * @namespace DevExpress.data - * @deprecated Use Options from data/store instead + * @namespace DevExpress.common.data + * @deprecated Use StoreOptions from common/data instead */ -export type StoreOptions = BaseStoreOptions; +export type StoreOptions = StoreOptionsBase; /** - * @namespace DevExpress.data - * @deprecated Use Store from data/store instead + * @namespace DevExpress.common.data + * @deprecated Use Store from common/data instead */ -export type Store = BaseStore; +export type Store = StoreBase; diff --git a/packages/devextreme/js/data/abstract_store.js b/packages/devextreme/js/data/abstract_store.js new file mode 100644 index 000000000000..1209bbeb82c1 --- /dev/null +++ b/packages/devextreme/js/data/abstract_store.js @@ -0,0 +1 @@ +export { default } from '../common/data/abstract_store'; diff --git a/packages/devextreme/js/data/apply_changes.d.ts b/packages/devextreme/js/data/apply_changes.d.ts index 8073ae0becbb..29a114fa0de0 100644 --- a/packages/devextreme/js/data/apply_changes.d.ts +++ b/packages/devextreme/js/data/apply_changes.d.ts @@ -1,10 +1,3 @@ -/** - * @docid Utils.applyChanges - * @publicName applyChanges(data, changes, options) - * @param3 options?:any - * @namespace DevExpress.data - * @public - */ -declare function applyChanges(data: Array, changes: Array, options?: { keyExpr?: string | Array; immutable?: boolean }): Array; +import { applyChanges } from '../common/data'; export default applyChanges; diff --git a/packages/devextreme/js/data/apply_changes.js b/packages/devextreme/js/data/apply_changes.js new file mode 100644 index 000000000000..29a114fa0de0 --- /dev/null +++ b/packages/devextreme/js/data/apply_changes.js @@ -0,0 +1,3 @@ +import { applyChanges } from '../common/data'; + +export default applyChanges; diff --git a/packages/devextreme/js/data/array_store.d.ts b/packages/devextreme/js/data/array_store.d.ts index 60a69bff9384..b1276b1174f4 100644 --- a/packages/devextreme/js/data/array_store.d.ts +++ b/packages/devextreme/js/data/array_store.d.ts @@ -1,61 +1,17 @@ -import Store, { - Options as StoreOptions, -} from './abstract_store'; -import { Query } from './query'; -import { DxPromise } from '../core/utils/deferred'; +import { ArrayStore, ArrayStoreOptions } from '../common/data'; -/** @public */ -export type Options< - TItem = any, - TKey = any, -> = ArrayStoreOptions; - -/** - * @docid - * @namespace DevExpress.data - * @deprecated Use Options instead - */ -export interface ArrayStoreOptions< - TItem = any, - TKey = any, -> extends StoreOptions { - /** - * @docid - * @public - */ - data?: Array; -} +export { + ArrayStoreOptions, +} from '../common/data'; /** - * @docid - * @inherits Store * @public - * @options ArrayStoreOptions + * @deprecated Use ArrayStoreOptions from /common/data instead + * @namespace DevExpress.data.ArrayStore */ -export default class ArrayStore< +export type Options< TItem = any, TKey = any, -> extends Store { - constructor(options?: Options); - /** - * @docid - * @publicName byKey(key) - * @param1 key:object|string|number - * @return Promise - * @public - */ - byKey(key: TKey): DxPromise; - /** - * @docid - * @publicName clear() - * @public - */ - clear(): void; - /** - * @docid - * @publicName createQuery() - * @return object - * @public - */ - createQuery(): Query; -} +> = ArrayStoreOptions; + +export default ArrayStore; diff --git a/packages/devextreme/js/data/array_store.js b/packages/devextreme/js/data/array_store.js new file mode 100644 index 000000000000..aad197a240d5 --- /dev/null +++ b/packages/devextreme/js/data/array_store.js @@ -0,0 +1,3 @@ +import ArrayStore from '../common/data/array_store'; + +export default ArrayStore; diff --git a/packages/devextreme/js/data/custom_store.d.ts b/packages/devextreme/js/data/custom_store.d.ts index 222d495a08d8..383a4679e75e 100644 --- a/packages/devextreme/js/data/custom_store.d.ts +++ b/packages/devextreme/js/data/custom_store.d.ts @@ -1,151 +1,19 @@ -import { FilterDescriptor, GroupDescriptor, LoadOptions } from './index'; -import { Store, Options as StoreOptions } from './store'; -import { DxExtendedPromise, DxPromise } from '../core/utils/deferred'; -import { GroupItem as CustomStoreGroupItem, LoadResult } from '../common/data/custom-store'; +import { CustomStore, CustomStoreOptions } from '../common/data'; -/** @public */ -export type Options< - TItem = any, - TKey = any, -> = CustomStoreOptions; - -/** - * @public - * @deprecated Use GroupItem from common/data/custom-store instead - */ -export type GroupItem = CustomStoreGroupItem; +export { + GroupItem, + ResolvedData, + CustomStoreOptions, +} from '../common/data'; /** - * @docid * @public - * @type object - * @deprecated Use LoadResult instead + * @deprecated Use CustomStoreOptions from /common/data instead + * @namespace DevExpress.data.CustomStore */ -export type ResolvedData = LoadResult; - -type LoadFunctionResult = T | DxPromise | PromiseLike; - -/** - * @docid - * @namespace DevExpress.data - * @deprecated Use Options instead - */ -export interface CustomStoreOptions< +export type Options< TItem = any, TKey = any, -> extends StoreOptions { - /** - * @docid - * @public - * @type_function_param1 key:object|string|number - * @type_function_param2 extraOptions:LoadOptions - * @type_function_return Promise - */ - byKey?: ((key: TKey, extraOptions?: LoadOptions) => PromiseLike); - /** - * @docid - * @default true - * @public - */ - cacheRawData?: boolean; - /** - * @docid - * @type_function_param1 values:object - * @type_function_return Promise - * @public - */ - insert?: ((values: TItem) => PromiseLike); - /** - * @docid - * @type_function_param1 options:LoadOptions - * @type_function_return LoadResult|Promise - * @public - */ - load: (options: LoadOptions) => LoadFunctionResult>; - /** - * @docid - * @default 'processed' - * @public - */ - loadMode?: 'processed' | 'raw'; - /** - * @docid - * @type_function_param1 result:LoadResult - * @type_function_param2 loadOptions:LoadOptions - * @action - * @public - */ - onLoaded?: ((result: LoadResult, loadOptions: LoadOptions) => void); - /** - * @docid - * @type_function_param1 key:object|string|number - * @type_function_return Promise - * @public - */ - remove?: ((key: TKey) => PromiseLike); - /** - * @docid - * @type_function_param1_field filter:object - * @type_function_param1_field group:object - * @type_function_return Promise - * @public - */ - totalCount?: ((loadOptions: { filter?: FilterDescriptor | Array; group?: GroupDescriptor | Array> }) => PromiseLike); - /** - * @docid - * @type_function_param1 key:object|string|number - * @type_function_param2 values:object - * @type_function_return Promise - * @public - */ - update?: ((key: TKey, values: TItem) => PromiseLike); - /** - * @docid - * @default undefined - * @public - */ - useDefaultSearch?: boolean | undefined; -} +> = CustomStoreOptions; -/** - * @docid - * @inherits Store - * @public - * @options CustomStoreOptions - */ -export default class CustomStore< - TItem = any, - TKey = any, -> extends Store { - constructor(options?: Options); - /** - * @docid - * @publicName byKey(key, extraOptions) - * @param1 key:object|string|number - * @param2 extraOptions:LoadOptions - * @return Promise - * @public - */ - byKey(key: TKey, extraOptions?: LoadOptions): DxPromise; - /** - * @docid - * @publicName clearRawDataCache() - * @public - */ - clearRawDataCache(): void; - /** - * @docid - * @publicName load() - * @return Promise - * @public - */ - load(): DxExtendedPromise>; - /** - * @docid - * @publicName load(options) - * @param1 options:LoadOptions - * @return Promise - * @public - */ - load(options: LoadOptions): DxExtendedPromise>; -} +export default CustomStore; diff --git a/packages/devextreme/js/data/custom_store.js b/packages/devextreme/js/data/custom_store.js new file mode 100644 index 000000000000..d2c2125517d3 --- /dev/null +++ b/packages/devextreme/js/data/custom_store.js @@ -0,0 +1,3 @@ +import { CustomStore } from '../common/data/custom_store'; + +export default CustomStore; diff --git a/packages/devextreme/js/data/data.types.d.ts b/packages/devextreme/js/data/data.types.d.ts new file mode 100644 index 000000000000..526b0109ff4c --- /dev/null +++ b/packages/devextreme/js/data/data.types.d.ts @@ -0,0 +1,9 @@ +export type KeySelector = string | ((source: T) => string | number | Date | Object); + +export type SelectionDescriptor = { + selector: KeySelector; +}; + +export type OrderingDescriptor = SelectionDescriptor & { + desc?: boolean; +}; diff --git a/packages/devextreme/js/data/data_source.d.ts b/packages/devextreme/js/data/data_source.d.ts index efc983e6fb13..3adcca7fb4b5 100644 --- a/packages/devextreme/js/data/data_source.d.ts +++ b/packages/devextreme/js/data/data_source.d.ts @@ -1,17 +1,18 @@ import { - FilterDescriptor, - GroupDescriptor, LangParams, - LoadOptions, - SearchOperation, - SelectDescriptor, - SortDescriptor, - Store, - StoreOptions, -} from './index'; -import { DxExtendedPromise } from '../core/utils/deferred'; -import { Options as CustomStoreOptions } from './custom_store'; + DataSource, + DataSourceOptions, + FilterDescriptor, + GroupDescriptor, + SearchOperation, + SelectDescriptor, + SortDescriptor, + Store, + StoreOptions, +} from '../common/data'; -/** @public */ +export { + DataSourceOptions, +} from '../common/data'; export type Options< TStoreItem = any, TMappedItem = TStoreItem, @@ -19,414 +20,6 @@ export type Options< TKey = any, > = DataSourceOptions; -/** - * @namespace DevExpress.data - * @deprecated Use Options instead - * @docid - */ -export interface DataSourceOptions< - TStoreItem = any, - TMappedItem = TStoreItem, - TItem = TMappedItem, - TKey = any, -> { - /** - * @docid - * @public - */ - customQueryParams?: any; - /** - * @docid - * @public - */ - expand?: Array | string; - /** - * @docid - * @type Filter expression - * @public - */ - filter?: FilterDescriptor | Array; - /** - * @docid - * @type Group expression - * @public - */ - group?: GroupDescriptor | Array>; - /** - * @docid - * @public - */ - // eslint-disable-next-line spellcheck/spell-checker - langParams?: LangParams; - /** - * @docid - * @type_function_param1 dataItem:object - * @type_function_return object - * @public - */ - map?: ((dataItem: TStoreItem) => TMappedItem); - /** - * @docid - * @type_function_param1_field changes:Array - * @action - * @public - */ - onChanged?: ((e: { readonly changes?: Array }) => void); - /** - * @docid - * @action - * @public - */ - onLoadError?: ((error: { readonly message?: string }) => void); - /** - * @docid - * @action - * @public - */ - onLoadingChanged?: ((isLoading: boolean) => void); - /** - * @docid - * @default 20 - * @public - */ - pageSize?: number; - /** - * @docid - * @default undefined - * @public - */ - paginate?: boolean | undefined; - /** - * @docid - * @type_function_param1 data:Array - * @type_function_return Array - * @public - */ - postProcess?: ((data: Array) => Array); - /** - * @docid - * @default undefined - * @public - */ - pushAggregationTimeout?: number | undefined; - /** - * @docid - * @public - */ - requireTotalCount?: boolean; - /** - * @docid - * @default false - * @public - */ - reshapeOnPush?: boolean; - /** - * @docid - * @type getter|Array - * @public - */ - searchExpr?: string | Function | Array; - /** - * @docid - * @default "contains" - * @public - */ - searchOperation?: SearchOperation; - /** - * @docid - * @default null - * @public - */ - searchValue?: any; - /** - * @docid - * @type Select expression - * @public - */ - select?: SelectDescriptor; - /** - * @docid - * @type Sort expression - * @public - */ - sort?: SortDescriptor | Array>; - /** - * @docid - * @public - * @type Store|StoreOptions|Array - */ - store?: Array | Store | StoreOptions; -} -/** - * @docid - * @public - * @options DataSourceOptions - */ -export default class DataSource< - TItem = any, - TKey = any, -> { - constructor(data: Array); - constructor(options: CustomStoreOptions | Options); - constructor(store: Store); - constructor(url: string); - /** - * @docid - * @publicName cancel(operationId) - * @public - */ - cancel(operationId: number): boolean; - /** - * @docid - * @publicName dispose() - * @public - */ - dispose(): void; - /** - * @docid - * @publicName filter() - * @return object - * @public - */ - filter(): FilterDescriptor | Array; - /** - * @docid - * @publicName filter(filterExpr) - * @param1 filterExpr:object - * @public - */ - filter(filterExpr: FilterDescriptor | Array): void; - /** - * @docid - * @publicName group() - * @return object - * @public - */ - group(): GroupDescriptor | Array>; - /** - * @docid - * @publicName group(groupExpr) - * @param1 groupExpr:object - * @public - */ - group(groupExpr: GroupDescriptor | Array>): void; - /** - * @docid - * @publicName isLastPage() - * @public - */ - isLastPage(): boolean; - /** - * @docid - * @publicName isLoaded() - * @public - */ - isLoaded(): boolean; - /** - * @docid - * @publicName isLoading() - * @public - */ - isLoading(): boolean; - /** - * @docid - * @publicName items() - * @public - */ - items(): Array; - /** - * @docid - * @publicName key() - * @public - */ - key(): string | Array; - /** - * @docid - * @publicName load() - * @return Promise - * @public - */ - load(): DxExtendedPromise; - /** - * @docid - * @publicName loadOptions() - * @return object - * @public - */ - loadOptions(): LoadOptions; - /** - * @docid - * @publicName off(eventName) - * @param1 eventName:string - * @return this - * @public - */ - off(eventName: EventName): this; - /** - * @docid - * @publicName off(eventName, eventHandler) - * @param1 eventName:string - * @return this - * @public - */ - off(eventName: EventName, eventHandler: Function): this; - /** - * @docid - * @publicName on(eventName, eventHandler) - * @param1 eventName:string - * @return this - * @public - */ - on(eventName: EventName, eventHandler: Function): this; - /** - * @docid - * @publicName on(events) - * @param1 events:object - * @return this - * @public - */ - on(events: { [key in EventName]?: Function }): this; - /** - * @docid - * @publicName pageIndex() - * @return numeric - * @public - */ - pageIndex(): number; - /** - * @docid - * @publicName pageIndex(newIndex) - * @param1 newIndex:numeric - * @public - */ - pageIndex(newIndex: number): void; - /** - * @docid - * @publicName pageSize() - * @return numeric - * @public - */ - pageSize(): number; - /** - * @docid - * @publicName pageSize(value) - * @param1 value:numeric - * @public - */ - pageSize(value: number): void; - /** - * @docid - * @publicName paginate() - * @public - */ - paginate(): boolean; - /** - * @docid - * @publicName paginate(value) - * @public - */ - paginate(value: boolean): void; - /** - * @docid - * @publicName reload() - * @return Promise - * @public - */ - reload(): DxExtendedPromise; - /** - * @docid - * @publicName requireTotalCount() - * @public - */ - requireTotalCount(): boolean; - /** - * @docid - * @publicName requireTotalCount(value) - * @public - */ - requireTotalCount(value: boolean): void; - /** - * @docid - * @publicName searchExpr() - * @return getter|Array - * @public - */ - searchExpr(): string & Function & Array; - /** - * @docid - * @publicName searchExpr(expr) - * @param1 expr:getter|Array - * @public - */ - searchExpr(expr: string | Function | Array): void; - /** - * @docid - * @publicName searchOperation() - * @public - */ - searchOperation(): string; - /** - * @docid - * @publicName searchOperation(op) - * @public - */ - searchOperation(op: string): void; - /** - * @docid - * @publicName searchValue() - * @public - */ - searchValue(): any; - /** - * @docid - * @publicName searchValue(value) - * @public - */ - searchValue(value: any): void; - /** - * @docid - * @publicName select() - * @return any - * @public - */ - select(): SelectDescriptor; - /** - * @docid - * @publicName select(expr) - * @param1 expr:any - * @public - */ - select(expr: SelectDescriptor): void; - /** - * @docid - * @publicName sort() - * @return any - * @public - */ - sort(): SortDescriptor | Array>; - /** - * @docid - * @publicName sort(sortExpr) - * @param1 sortExpr:any - * @public - */ - sort(sortExpr: SortDescriptor | Array>): void; - /** - * @docid - * @publicName store() - * @return object - * @public - */ - store(): Store; - /** - * @docid - * @publicName totalCount() - * @return numeric - * @public - */ - totalCount(): number; -} - /** * @docid * @type Store|DataSource|DataSourceOptions|string|Array|null @@ -438,7 +31,7 @@ export type DataSourceLike = DataSourceOptionsStub | DataSource; -interface DataSourceOptionsStub< +export interface DataSourceOptionsStub< TStoreItem = any, TMappedItem = TStoreItem, TItem = TMappedItem, @@ -465,4 +58,4 @@ interface DataSourceOptionsStub< store?: Array | Store | StoreOptions; } -type EventName = 'changed' | 'loadError' | 'loadingChanged'; +export default DataSource; diff --git a/packages/devextreme/js/data/data_source.js b/packages/devextreme/js/data/data_source.js new file mode 100644 index 000000000000..74cc596eadc0 --- /dev/null +++ b/packages/devextreme/js/data/data_source.js @@ -0,0 +1,3 @@ +import DataSource from '../common/data/data_source'; + +export default DataSource; diff --git a/packages/devextreme/js/data/endpoint_selector.d.ts b/packages/devextreme/js/data/endpoint_selector.d.ts index 19c601d6eec4..868960c2ae4a 100644 --- a/packages/devextreme/js/data/endpoint_selector.d.ts +++ b/packages/devextreme/js/data/endpoint_selector.d.ts @@ -1,14 +1,3 @@ -/** - * @docid - * @namespace DevExpress - * @public - */ -export default class EndpointSelector { - constructor(options: any); - /** - * @docid - * @publicName urlFor(key) - * @public - */ - urlFor(key: string): string; -} +import { EndpointSelector } from '../common/data'; + +export default EndpointSelector; diff --git a/packages/devextreme/js/data/endpoint_selector.js b/packages/devextreme/js/data/endpoint_selector.js new file mode 100644 index 000000000000..809f8730695c --- /dev/null +++ b/packages/devextreme/js/data/endpoint_selector.js @@ -0,0 +1,3 @@ +import EndpointSelector from '../common/data/endpoint_selector'; + +export default EndpointSelector; diff --git a/packages/devextreme/js/data/errors.d.ts b/packages/devextreme/js/data/errors.d.ts index a51ecdc208e5..df232810705e 100644 --- a/packages/devextreme/js/data/errors.d.ts +++ b/packages/devextreme/js/data/errors.d.ts @@ -1,16 +1,4 @@ -/** - * @docid Utils.errorHandler - * @type function(e) - * @namespace DevExpress.data - * @deprecated Utils.setErrorHandler - * @public - */ -export function errorHandler(e: Error): void; - -/** - * @docid Utils.setErrorHandler - * @type function(handler) - * @namespace DevExpress.data - * @public - */ -export function setErrorHandler(handler: (e: Error) => void): void; +export { + setErrorHandler, + errorHandler, +} from '../common/data'; diff --git a/packages/devextreme/js/data/errors.js b/packages/devextreme/js/data/errors.js new file mode 100644 index 000000000000..bde57eb9729f --- /dev/null +++ b/packages/devextreme/js/data/errors.js @@ -0,0 +1,2 @@ +export { setErrorHandler } from '../common/data'; +export { errorHandler } from '../common/data/errors'; diff --git a/packages/devextreme/js/data/index.d.ts b/packages/devextreme/js/data/index.d.ts index 22ddfbea28bb..bc3e599575d0 100644 --- a/packages/devextreme/js/data/index.d.ts +++ b/packages/devextreme/js/data/index.d.ts @@ -1,213 +1,13 @@ -import CustomStore, { Options as CustomStoreOptions } from './custom_store'; -import ArrayStore, { Options as ArrayStoreOptions } from './array_store'; -import LocalStore, { Options as LocalStoreOptions } from './local_store'; -import ODataStore, { Options as ODataStoreOptions } from './odata/store'; - -/** - * @public - */ -export type SearchOperation = '=' | '<>' | '>' | '>=' | '<' | '<=' | 'startswith' | 'endswith' | 'contains' | 'notcontains'; - -type KeySelector = string | ((source: T) => string | number | Date | Object); - -type SelectionDescriptor = { - selector: KeySelector; -}; - -type OrderingDescriptor = SelectionDescriptor & { - desc?: boolean; -}; - -/** - * @public - */ -export type GroupingInterval = 'year' | 'quarter' | 'month' | 'day' | 'dayOfWeek' | 'hour' | 'minute' | 'second'; - -/** - * @docid - * @public - * @type object - * @skip - */ -export type GroupDescriptor = KeySelector | (OrderingDescriptor & { - groupInterval?: number | GroupingInterval; - isExpanded?: boolean; -}); - -/** - * @docid - * @public - * @type object - * @skip - */ -export type SortDescriptor = KeySelector | OrderingDescriptor; - -/** - * @docid - * @public - * @type object - * @skip - */ -export type SelectDescriptor = string | Array | ((source: T) => any); -/** - * @docid - * @public - */ -export type FilterDescriptor = any; -/** - * @docid - * @public - */ -export type LangParams = { - /** - * @docid - * @public - */ - locale: string; - /** - * @docid - * @public - * @type object - */ - collatorOptions?: Intl.CollatorOptions; -}; - /** - * @docid - * @public - * @type object - */ -export type SummaryDescriptor = KeySelector | SelectionDescriptor & { - summaryType?: 'sum' | 'avg' | 'min' | 'max' | 'count'; -}; - -/** - * @public - * @docid - * @namespace DevExpress.data - * @type object - */ -export interface LoadOptions { - /** - * @docid - * @public - */ - customQueryParams?: any; - /** - * @docid - * @public - */ - startDate?: Date; - /** - * @docid - * @public - */ - endDate?: Date; - /** - * @docid - * @public - */ - expand?: Array; - /** - * @docid - * @public - * @type object - */ - filter?: FilterDescriptor | Array; - /** - * @docid - * @public - * @type object - */ - group?: GroupDescriptor | Array>; - /** - * @docid - * @public - * @type SummaryDescriptor | Array - */ - groupSummary?: SummaryDescriptor | Array>; - /** - * @docid - * @public - */ - parentIds?: Array; - /** - * @docid - * @public - */ - requireGroupCount?: boolean; - /** - * @docid - * @public - */ - requireTotalCount?: boolean; - /** - * @docid - * @type getter|Array - * @public - */ - searchExpr?: string | Function | Array; - /** - * @docid - * @public - */ - searchOperation?: SearchOperation; - /** - * @docid - * @public - */ - searchValue?: any; - /** - * @docid - * @public - * @type object - */ - select?: SelectDescriptor; - /** - * @docid - * @public - */ - skip?: number; - /** - * @docid - * @public - * @type object - */ - sort?: SortDescriptor | Array>; - /** - * @docid - * @public - */ - take?: number; - /** - * @docid - * @public - * @type SummaryDescriptor | Array - */ - totalSummary?: SummaryDescriptor | Array>; - /** - * @docid - * @public - */ - userData?: any; -} - -/** - * @public - * @namespace DevExpress.data.utils - */ -export type Store = - CustomStore | - ArrayStore | - LocalStore | - ODataStore; - -/** - * @public - * @namespace DevExpress.data.utils - * @type object - */ -export type StoreOptions = - CustomStoreOptions | - ArrayStoreOptions & { type: 'array' } | - LocalStoreOptions & { type: 'local' } | - ODataStoreOptions & { type: 'odata' }; +export { + SearchOperation, + GroupingInterval, + GroupDescriptor, + SortDescriptor, + SelectDescriptor, + FilterDescriptor, + LangParams, + SummaryDescriptor, + LoadOptions, + Store, + StoreOptions, +} from '../common/data'; diff --git a/packages/devextreme/js/data/load_options.d.ts b/packages/devextreme/js/data/load_options.d.ts index 27306760f118..4c6cad2fbdf0 100644 --- a/packages/devextreme/js/data/load_options.d.ts +++ b/packages/devextreme/js/data/load_options.d.ts @@ -1,4 +1,4 @@ -import { LoadOptions as BaseLoadOptions } from './index'; +import { LoadOptions as BaseLoadOptions } from '../common/data'; -/** @deprecated Use LoadOptions from 'devextreme/data' instead */ +/** @deprecated Use LoadOptions from common/data instead */ export interface LoadOptions extends BaseLoadOptions { } diff --git a/packages/devextreme/js/data/local_store.d.ts b/packages/devextreme/js/data/local_store.d.ts index 930258b98fba..7c5183f29251 100644 --- a/packages/devextreme/js/data/local_store.d.ts +++ b/packages/devextreme/js/data/local_store.d.ts @@ -1,56 +1,20 @@ -import ArrayStore, { - ArrayStoreOptions, -} from './array_store'; +import { + LocalStoreOptions, + LocalStore, +} from '../common/data'; -/** @public */ -export type Options< - TItem = any, - TKey = any, -> = LocalStoreOptions; +export { + LocalStoreOptions, +} from '../common/data'; -/** - * @docid - * @namespace DevExpress.data - * @deprecated Use Options instead - */ -export interface LocalStoreOptions< - TItem = any, - TKey = any, -> extends ArrayStoreOptions { - /** - * @docid - * @default 10000 - * @public - */ - flushInterval?: number; - /** - * @docid - * @default false - * @public - */ - immediate?: boolean; - /** - * @docid - * @public - */ - name?: string; -} +export default LocalStore; /** - * @docid - * @inherits ArrayStore - * @public - * @options LocalStoreOptions - */ -export default class LocalStore< - TItem = any, - TKey = any, -> extends ArrayStore { - constructor(options?: Options); - /** - * @docid - * @publicName clear() - * @public - */ - clear(): void; -} +* @public +* @deprecated Use LocalStoreOptions from /common/data instead +* @namespace DevExpress.data.LocalStore +*/ +export type Options< + TItem = any, + TKey = any, +> = LocalStoreOptions; diff --git a/packages/devextreme/js/data/local_store.js b/packages/devextreme/js/data/local_store.js new file mode 100644 index 000000000000..d920b16d129c --- /dev/null +++ b/packages/devextreme/js/data/local_store.js @@ -0,0 +1,3 @@ +import LocalStore from '../common/data/local_store'; + +export default LocalStore; diff --git a/packages/devextreme/js/data/odata/context.d.ts b/packages/devextreme/js/data/odata/context.d.ts index 08ac14b0028c..9d0280eb4d55 100644 --- a/packages/devextreme/js/data/odata/context.d.ts +++ b/packages/devextreme/js/data/odata/context.d.ts @@ -1,115 +1,8 @@ -import { - DxPromise, -} from '../../core/utils/deferred'; +import { ODataContext } from '../../common/data'; -export interface ODataRequestOptions { - accepts: any; - async: boolean; - contentType: string | boolean; - data: any; - dataType: string; - headers: any; - jsonp?: boolean; - method: string; - timeout: number; - url: string; - xhrFields: any; -} +export { + ODataContextOptions, + ODataRequestOptions, +} from '../../common/data'; -/** - * @docid - * @namespace DevExpress.data - * @type object - */ -export interface ODataContextOptions { - /** - * @docid - * @type_function_param1_field params:object - * @type_function_param1_field payload:object - * @type_function_param1_field headers:object - * @public - */ - beforeSend?: ((options: { url: string; async: boolean; method: string; timeout: number; params: any; payload: any; headers: any }) => void); - /** - * @docid - * @public - */ - deserializeDates?: boolean; - /** - * @docid - * @public - */ - entities?: any; - /** - * @docid - * @type_function_param1 e:Error - * @type_function_param1_field errorDetails:object - * @type_function_param1_field requestOptions:object - * @public - */ - errorHandler?: ((e: { httpStatus: number; errorDetails: any; requestOptions: ODataRequestOptions }) => void); - /** - * @docid - * @public - */ - filterToLower?: boolean; - /** - * @docid - * @default false - * @public - */ - jsonp?: boolean; - /** - * @docid - * @public - */ - url?: string; - /** - * @docid - * @default 4 - * @acceptValues 2|3|4 - * @public - */ - version?: number; - /** - * @docid - * @default false - * @public - */ - withCredentials?: boolean; -} -/** - * @docid - * @public - * @options ODataContextOptions - */ -export default class ODataContext { - constructor(options?: ODataContextOptions); - /** - * @docid - * @publicName get(operationName, params) - * @param2 params:object - * @return Promise - * @public - */ - get(operationName: string, params: any): DxPromise; - /** - * @docid - * @publicName invoke(operationName, params, httpMethod) - * @param2 params:object - * @param3 httpMethod:string - * @return Promise - * @public - */ - invoke(operationName: string, params: any, httpMethod: HttpMethod): DxPromise; - /** - * @docid - * @publicName objectLink(entityAlias, key) - * @param2 key:object|string|number - * @return object - * @public - */ - objectLink(entityAlias: string, key: any | string | number): any; -} - -type HttpMethod = 'GET' | 'POST' | 'PATCH' | 'MERGE'; +export default ODataContext; diff --git a/packages/devextreme/js/data/odata/context.js b/packages/devextreme/js/data/odata/context.js new file mode 100644 index 000000000000..5d6088e9f5c2 --- /dev/null +++ b/packages/devextreme/js/data/odata/context.js @@ -0,0 +1,3 @@ +import ODataContext from '../../common/data/odata/context'; + +export default ODataContext; diff --git a/packages/devextreme/js/data/odata/store.d.ts b/packages/devextreme/js/data/odata/store.d.ts index 1d493c231314..09dd1949248f 100644 --- a/packages/devextreme/js/data/odata/store.d.ts +++ b/packages/devextreme/js/data/odata/store.d.ts @@ -1,112 +1,16 @@ -import { DxPromise } from '../../core/utils/deferred'; -import Store, { Options as StoreOptions } from '../abstract_store'; -import { Query } from '../query'; -import { ODataRequestOptions } from './context'; +import { ODataStoreOptions, ODataStore } from '../../common/data'; -/** @public */ +/** + * @public + * @namespace DevExpress.data.ODataStore + */ export type Options< TItem = any, TKey = any, > = ODataStoreOptions; -/** - * @docid - * @namespace DevExpress.data - * @deprecated Use Options instead - */ -export interface ODataStoreOptions< - TItem = any, - TKey = any, -> extends StoreOptions { - /** - * @docid - * @type_function_param1_field params:object - * @type_function_param1_field payload:object - * @type_function_param1_field headers:object - * @public - */ - beforeSend?: ((options: { url: string; async: boolean; method: string; timeout: number; params: any; payload: any; headers: any }) => void); - /** - * @docid - * @public - */ - deserializeDates?: boolean; - /** - * @docid - * @type_function_param1 e:Error - * @type_function_param1_field errorDetails:object - * @type_function_param1_field requestOptions:object - * @public - */ - errorHandler?: ((e: { httpStatus: number; errorDetails: any; requestOptions: ODataRequestOptions }) => void); - /** - * @docid - * @default {} - * @public - */ - fieldTypes?: any; - /** - * @docid - * @public - */ - filterToLower?: boolean; - /** - * @docid - * @default false - * @public - */ - jsonp?: boolean; - /** - * @docid - * @type string|object - * @acceptValues "String"|"Int32"|"Int64"|"Guid"|"Boolean"|"Single"|"Decimal" - * @public - */ - keyType?: 'String' | 'Int32' | 'Int64' | 'Guid' | 'Boolean' | 'Single' | 'Decimal' | any; - /** - * @docid - * @public - */ - url?: string; - /** - * @docid - * @default 4 - * @acceptValues 2|3|4 - * @public - */ - version?: number; - /** - * @docid - * @default false - * @public - */ - withCredentials?: boolean; -} +export { + ODataStoreOptions, +}; -/** - * @docid - * @inherits Store - * @public - * @options ODataStoreOptions - */ -export default class ODataStore< - TItem = any, - TKey = any, -> extends Store { - constructor(options?: Options); - /** - * @docid - * @publicName byKey(key, extraOptions) - * @param1 key:object|string|number - * @return Promise - * @public - */ - byKey(key: TKey, extraOptions?: { expand?: string | Array; select?: string | Array }): DxPromise; - /** - * @docid - * @publicName createQuery(loadOptions) - * @return object - * @public - */ - createQuery(loadOptions?: { expand?: string | Array; requireTotalCount?: boolean; customQueryParams?: any }): Query; -} +export default ODataStore; diff --git a/packages/devextreme/js/data/odata/store.js b/packages/devextreme/js/data/odata/store.js new file mode 100644 index 000000000000..ddf8b216739f --- /dev/null +++ b/packages/devextreme/js/data/odata/store.js @@ -0,0 +1,3 @@ +import ODataStore from '../../common/data/odata/store'; + +export default ODataStore; diff --git a/packages/devextreme/js/data/odata/utils.d.ts b/packages/devextreme/js/data/odata/utils.d.ts index 17b6810f4510..816523238d44 100644 --- a/packages/devextreme/js/data/odata/utils.d.ts +++ b/packages/devextreme/js/data/odata/utils.d.ts @@ -1,23 +1,4 @@ -/** - * @docid - * @namespace DevExpress.data - * @public - */ -export class EdmLiteral { - constructor(value: string); - /** - * @docid - * @publicName valueOf() - * @public - */ - valueOf(): string; -} - -/** - * @const Utils.keyConverters - * @publicName odata.keyConverters - * @namespace DevExpress.data.utils.odata - * @public - */ -// eslint-disable-next-line vars-on-top, import/no-mutable-exports, no-var, @typescript-eslint/init-declarations, @typescript-eslint/no-explicit-any -export var keyConverters: any; +export { + EdmLiteral, + keyConverters, +} from '../../common/data'; diff --git a/packages/devextreme/js/data/odata/utils.js b/packages/devextreme/js/data/odata/utils.js new file mode 100644 index 000000000000..a1010e078a09 --- /dev/null +++ b/packages/devextreme/js/data/odata/utils.js @@ -0,0 +1 @@ +export { EdmLiteral, keyConverters } from '../../common/data/odata/utils'; diff --git a/packages/devextreme/js/data/query.d.ts b/packages/devextreme/js/data/query.d.ts index 5c009faf1be0..234d42c6d11c 100644 --- a/packages/devextreme/js/data/query.d.ts +++ b/packages/devextreme/js/data/query.d.ts @@ -1,187 +1,7 @@ -import { - DxPromise, -} from '../core/utils/deferred'; +import { query } from '../common/data'; -/** - * @docid - * @type object - * @public - */ -export interface Query { - /** - * @docid - * @publicName aggregate(seed, step, finalize) - * @param1 seed:object - * @return Promise - * @public - */ - aggregate(seed: any, step: Function, finalize: Function): DxPromise; - /** - * @docid - * @publicName aggregate(step) - * @return Promise - * @public - */ - aggregate(step: Function): DxPromise; - /** - * @docid - * @publicName avg() - * @return Promise - * @public - */ - avg(): DxPromise; - /** - * @docid - * @publicName avg(getter) - * @param1 getter:object - * @return Promise - * @public - */ - avg(getter: any): DxPromise; - /** - * @docid - * @publicName count() - * @return Promise - * @public - */ - count(): DxPromise; - /** - * @docid - * @publicName enumerate() - * @return Promise - * @public - */ - enumerate(): DxPromise; - /** - * @docid - * @publicName filter(criteria) - * @public - */ - filter(criteria: Array): Query; - /** - * @docid - * @publicName filter(predicate) - * @public - */ - filter(predicate: Function): Query; - /** - * @docid - * @publicName groupBy(getter) - * @param1 getter:object - * @public - */ - groupBy(getter: any): Query; - /** - * @docid - * @publicName max() - * @return Promise - * @public - */ - max(): DxPromise; - /** - * @docid - * @publicName max(getter) - * @param1 getter:object - * @return Promise - * @public - */ - max(getter: any): DxPromise; - /** - * @docid - * @publicName min() - * @return Promise - * @public - */ - min(): DxPromise; - /** - * @docid - * @publicName min(getter) - * @param1 getter:object - * @return Promise - * @public - */ - min(getter: any): DxPromise; - /** - * @docid - * @publicName select(getter) - * @param1 getter:object|Array - * @public - */ - select(...getters: any[]): Query; - /** - * @docid - * @publicName slice(skip, take) - * @param2 take:number|undefined - * @public - */ - slice(skip: number, take?: number): Query; - /** - * @docid - * @publicName sortBy(getter) - * @param1 getter:object - * @public - */ - sortBy(getter: any): Query; - /** - * @docid - * @publicName sortBy(getter, desc) - * @param1 getter:object - * @public - */ - sortBy(getter: any, desc: boolean): Query; - /** - * @docid - * @publicName sum() - * @return Promise - * @public - */ - sum(): DxPromise; - /** - * @docid - * @publicName sum(getter) - * @param1 getter:object - * @return Promise - * @public - */ - sum(getter: any): DxPromise; - /** - * @docid - * @publicName thenBy(getter) - * @param1 getter:object - * @public - */ - thenBy(getter: any): Query; - /** - * @docid - * @publicName thenBy(getter, desc) - * @param1 getter:object - * @public - */ - thenBy(getter: any, desc: boolean): Query; - /** - * @docid - * @publicName toArray() - * @public - */ - toArray(): Array; -} - -/** - * @docid Utils.query - * @publicName query(array, queryOptions) - * @param2 queryOptions:object - * @namespace DevExpress.data - * @public - */ -declare function query(array: Array, queryOptions?: any): Query; - -/** - * @docid Utils.query - * @publicName query(url, queryOptions) - * @param2 queryOptions:object - * @namespace DevExpress.data - * @public - */ -declare function query(url: string, queryOptions: any): Query; +export { + Query, +} from '../common/data'; export default query; diff --git a/packages/devextreme/js/data/query.js b/packages/devextreme/js/data/query.js new file mode 100644 index 000000000000..919279dbfc6b --- /dev/null +++ b/packages/devextreme/js/data/query.js @@ -0,0 +1,3 @@ +import { query } from '../common/data'; + +export default query; diff --git a/packages/devextreme/js/data/store.d.ts b/packages/devextreme/js/data/store.d.ts index b3800fb57a41..69688449b727 100644 --- a/packages/devextreme/js/data/store.d.ts +++ b/packages/devextreme/js/data/store.d.ts @@ -1,20 +1,13 @@ -import { - DxPromise, - DxExtendedPromise, -} from '../core/utils/deferred'; -import { DeepPartial } from '../core/index'; -import { - FilterDescriptor, - GroupDescriptor, - LoadOptions, -} from './index'; +import { DxPromise, DxExtendedPromise } from '../core/utils/deferred'; +import { DeepPartial } from '../core'; +import { FilterDescriptor, GroupDescriptor, LoadOptions } from '../common/data'; /** * @docid StoreOptions - * @namespace DevExpress.data.Store + * @namespace DevExpress.common.data * @hidden */ -export type Options< +export type StoreOptions< TItem = any, TKey = any, > = { @@ -100,19 +93,19 @@ export type Options< onUpdating?: ((key: TKey, values: TItem) => void); }; -type EventName = 'loaded' | 'loading' | 'inserted' | 'inserting' | 'updated' | 'updating' | 'push' | 'removed' | 'removing' | 'modified' | 'modifying'; +type StoreEventName = 'loaded' | 'loading' | 'inserted' | 'inserting' | 'updated' | 'updating' | 'push' | 'removed' | 'removing' | 'modified' | 'modifying'; /** * @docid Store - * @namespace DevExpress.data + * @namespace DevExpress.common.data * @hidden - * @options Options + * @options StoreOptions */ export class Store< TItem = any, TKey = any, > { - constructor(options?: Options); + constructor(options?: StoreOptions); /** * @docid * @publicName insert(values) @@ -142,7 +135,7 @@ export class Store< * @return this * @public */ - off(eventName: EventName): this; + off(eventName: StoreEventName): this; /** * @docid * @publicName off(eventName, eventHandler) @@ -150,7 +143,7 @@ export class Store< * @return this * @public */ - off(eventName: EventName, eventHandler: Function): this; + off(eventName: StoreEventName, eventHandler: Function): this; /** * @docid * @publicName on(eventName, eventHandler) @@ -158,7 +151,7 @@ export class Store< * @return this * @public */ - on(eventName: EventName, eventHandler: Function): this; + on(eventName: StoreEventName, eventHandler: Function): this; /** * @docid * @publicName on(events) @@ -166,7 +159,7 @@ export class Store< * @return this * @public */ - on(events: { [key in EventName]?: Function }): this; + on(events: { [key in StoreEventName]?: Function }): this; /** * @docid * @publicName push(changes) diff --git a/packages/devextreme/js/data/utils.d.ts b/packages/devextreme/js/data/utils.d.ts index c32257ed8259..9239caa554e8 100644 --- a/packages/devextreme/js/data/utils.d.ts +++ b/packages/devextreme/js/data/utils.d.ts @@ -1,7 +1,3 @@ -/** - * @docid Utils.base64_encode - * @publicName base64_encode(input) - * @namespace DevExpress.data - * @public - */ -export function base64_encode(input: string | Array): string; +export { + base64_encode, +} from '../common/data'; diff --git a/packages/devextreme/js/data/utils.js b/packages/devextreme/js/data/utils.js new file mode 100644 index 000000000000..09f625a3571f --- /dev/null +++ b/packages/devextreme/js/data/utils.js @@ -0,0 +1 @@ +export * from '../common/data/utils'; diff --git a/packages/devextreme/js/data_helper.d.ts b/packages/devextreme/js/data_helper.d.ts index ba00d91f5bc7..6c6cebe4f675 100644 --- a/packages/devextreme/js/data_helper.d.ts +++ b/packages/devextreme/js/data_helper.d.ts @@ -1,14 +1,14 @@ -import DataSource from './data/data_source'; +import { DataSource } from './common/data'; /** * @docid * @hidden */ -export default class DataHelperMixin { - /** - * @docid - * @publicName getDataSource() - * @public - */ - getDataSource(): DataSource; +export class DataHelperMixin { + /** + * @docid + * @publicName getDataSource() + * @public + */ + getDataSource(): DataSource; } diff --git a/packages/devextreme/js/data_helper.js b/packages/devextreme/js/data_helper.js index 7bff404fea60..6af09beb52ca 100644 --- a/packages/devextreme/js/data_helper.js +++ b/packages/devextreme/js/data_helper.js @@ -1,166 +1,3 @@ - -import { DataSource } from './data/data_source/data_source'; -import { extend } from './core/utils/extend'; -import { normalizeDataSourceOptions } from './data/data_source/utils'; -import DataController from './__internal/ui/collection/m_data_controller'; - -const DATA_SOURCE_OPTIONS_METHOD = '_dataSourceOptions'; -const DATA_SOURCE_CHANGED_METHOD = '_dataSourceChangedHandler'; -const DATA_SOURCE_LOAD_ERROR_METHOD = '_dataSourceLoadErrorHandler'; -const DATA_SOURCE_LOADING_CHANGED_METHOD = '_dataSourceLoadingChangedHandler'; -const DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD = '_dataSourceFromUrlLoadMode'; -const SPECIFIC_DATA_SOURCE_OPTION = '_getSpecificDataSourceOption'; -const NORMALIZE_DATA_SOURCE = '_normalizeDataSource'; - - -const DataHelperMixin = { - - postCtor: function() { - this.on('disposing', function() { - this._disposeDataSource(); - }.bind(this)); - }, - - _refreshDataSource: function() { - this._initDataSource(); - this._loadDataSource(); - }, - - _initDataSource: function() { - let dataSourceOptions = (SPECIFIC_DATA_SOURCE_OPTION in this) ? this[SPECIFIC_DATA_SOURCE_OPTION]() : this.option('dataSource'); - let widgetDataSourceOptions; - let dataSourceType; - - this._disposeDataSource(); - - if(dataSourceOptions) { - if(dataSourceOptions instanceof DataSource) { - this._isSharedDataSource = true; - this._dataSource = dataSourceOptions; - } else { - widgetDataSourceOptions = (DATA_SOURCE_OPTIONS_METHOD in this) ? this[DATA_SOURCE_OPTIONS_METHOD]() : {}; - dataSourceType = this._dataSourceType ? this._dataSourceType() : DataSource; - - dataSourceOptions = normalizeDataSourceOptions(dataSourceOptions, { - fromUrlLoadMode: (DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD in this) && this[DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD]() - }); - - this._dataSource = new dataSourceType(extend(true, {}, widgetDataSourceOptions, dataSourceOptions)); - } - - if(NORMALIZE_DATA_SOURCE in this) { - this._dataSource = this[NORMALIZE_DATA_SOURCE](this._dataSource); - } - - this._addDataSourceHandlers(); - this._initDataController(); - } - }, - - _initDataController: function() { - const dataController = this.option?.('_dataController'); - const dataSource = this._dataSource; - - if(dataController) { - this._dataController = dataController; - } else { - this._dataController = new DataController(dataSource); - } - }, - - _addDataSourceHandlers: function() { - if(DATA_SOURCE_CHANGED_METHOD in this) { - this._addDataSourceChangeHandler(); - } - - if(DATA_SOURCE_LOAD_ERROR_METHOD in this) { - this._addDataSourceLoadErrorHandler(); - } - - if(DATA_SOURCE_LOADING_CHANGED_METHOD in this) { - this._addDataSourceLoadingChangedHandler(); - } - - this._addReadyWatcher(); - }, - - _addReadyWatcher: function() { - this.readyWatcher = (function(isLoading) { - this._ready && this._ready(!isLoading); - }).bind(this); - this._dataSource.on('loadingChanged', this.readyWatcher); - }, - - _addDataSourceChangeHandler: function() { - const dataSource = this._dataSource; - this._proxiedDataSourceChangedHandler = (function(e) { - this[DATA_SOURCE_CHANGED_METHOD](dataSource.items(), e); - }).bind(this); - dataSource.on('changed', this._proxiedDataSourceChangedHandler); - }, - - _addDataSourceLoadErrorHandler: function() { - this._proxiedDataSourceLoadErrorHandler = this[DATA_SOURCE_LOAD_ERROR_METHOD].bind(this); - this._dataSource.on('loadError', this._proxiedDataSourceLoadErrorHandler); - }, - - _addDataSourceLoadingChangedHandler: function() { - this._proxiedDataSourceLoadingChangedHandler = this[DATA_SOURCE_LOADING_CHANGED_METHOD].bind(this); - this._dataSource.on('loadingChanged', this._proxiedDataSourceLoadingChangedHandler); - }, - - _loadDataSource: function() { - const dataSource = this._dataSource; - if(dataSource) { - if(dataSource.isLoaded()) { - this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler(); - } else { - dataSource.load(); - } - } - }, - - _loadSingle: function(key, value) { - key = key === 'this' ? this._dataSource.key() || 'this' : key; - return this._dataSource.loadSingle(key, value); - }, - - _isLastPage: function() { - return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize; - }, - - _isDataSourceLoading: function() { - return this._dataSource && this._dataSource.isLoading(); - }, - - _disposeDataSource: function() { - if(this._dataSource) { - if(this._isSharedDataSource) { - delete this._isSharedDataSource; - - this._proxiedDataSourceChangedHandler && this._dataSource.off('changed', this._proxiedDataSourceChangedHandler); - this._proxiedDataSourceLoadErrorHandler && this._dataSource.off('loadError', this._proxiedDataSourceLoadErrorHandler); - this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off('loadingChanged', this._proxiedDataSourceLoadingChangedHandler); - - if(this._dataSource._eventsStrategy) { - this._dataSource._eventsStrategy.off('loadingChanged', this.readyWatcher); - } - } else { - this._dataSource.dispose(); - } - - delete this._dataSource; - - delete this._proxiedDataSourceChangedHandler; - delete this._proxiedDataSourceLoadErrorHandler; - delete this._proxiedDataSourceLoadingChangedHandler; - } - }, - - getDataSource: function() { - return this._dataSource || null; - } - -}; +import { DataHelperMixin } from './common/data'; export default DataHelperMixin; diff --git a/packages/devextreme/js/events/events.types.d.ts b/packages/devextreme/js/events/events.types.d.ts new file mode 100644 index 000000000000..fb26232efc89 --- /dev/null +++ b/packages/devextreme/js/events/events.types.d.ts @@ -0,0 +1,114 @@ +/** + * @namespace DevExpress.events + */ +export type EventObject = { + /** + * @docid + * @public + */ + currentTarget: Element; + + /** + * @docid + * @public + */ + data: any; + + /** + * @docid + * @public + */ + delegateTarget: Element; + + /** + * @docid + * @public + */ + target: Element; + /** + * @docid + * @publicName isDefaultPrevented() + * @public + */ + isDefaultPrevented(): boolean; + /** + * @docid + * @publicName isImmediatePropagationStopped() + * @public + */ + isImmediatePropagationStopped(): boolean; + /** + * @docid + * @publicName isPropagationStopped() + * @public + */ + isPropagationStopped(): boolean; + /** + * @docid + * @publicName preventDefault() + * @public + */ + preventDefault(): void; + /** + * @docid + * @publicName stopImmediatePropagation() + * @public + */ + stopImmediatePropagation(): void; + /** + * @docid + * @publicName stopPropagation() + * @public + */ + stopPropagation(): void; +}; + +/** + * @docid + * @publicName handler(event, extraParameters) + * @param2 extraParameters:object + * @hidden + */ +export function eventsHandler(event: DxEvent, extraParameters: any): boolean; + +/* eslint-disable @typescript-eslint/no-empty-interface */ +export interface EventExtension { } +export interface EventType { } +/* eslint-enable @typescript-eslint/no-empty-interface */ + +/** + * @docid + * @type EventObject|jQuery.Event + * + */ +export type DxEvent = {} extends EventType ? (EventObject & TNativeEvent) : EventType; + +/** @deprecated EventObject */ +export type dxEvent = EventObject; + +/** + * @docid + * @type EventObject|jQuery.Event + * @hidden + * @deprecated DxEvent + */ +export type event = DxEvent; + +/** + * @docid eventsMethods.triggerHandler + * @publicName triggerHandler(element, event) + * @namespace DevExpress.events + * @param2 event:string|event + * @hidden + */ +export function triggerHandler(element: Element | Array, event: string | DxEvent): void; + +/** + * @docid eventsMethods.triggerHandler + * @publicName triggerHandler(element, event, extraParameters) + * @namespace DevExpress.events + * @param2 event:string|event + * @param3 extraParameters:object + * @hidden + */ +export function triggerHandler(element: Element | Array, event: string | DxEvent, extraParameters: any): void; diff --git a/packages/devextreme/js/events/events.types.js b/packages/devextreme/js/events/events.types.js new file mode 100644 index 000000000000..9d88b0cfa4df --- /dev/null +++ b/packages/devextreme/js/events/events.types.js @@ -0,0 +1,3 @@ +import eventsEngine from '../common/core/events/core/events_engine'; + +export const triggerHandler = eventsEngine.triggerHandler; diff --git a/packages/devextreme/js/events/index.d.ts b/packages/devextreme/js/events/index.d.ts new file mode 100644 index 000000000000..ac9674be8739 --- /dev/null +++ b/packages/devextreme/js/events/index.d.ts @@ -0,0 +1,23 @@ +export { + InitializedEventInfo, + EventInfo, + NativeEventInfo, + ChangedOptionInfo, + ItemInfo, + Cancelable, + AsyncCancelable, + off, + on, + one, + trigger, +} from '../common/core/events'; + +export { + eventsHandler, + triggerHandler, + EventExtension, + EventType, + DxEvent, + dxEvent, + event, +} from './events.types'; diff --git a/packages/devextreme/js/events/index.js b/packages/devextreme/js/events/index.js new file mode 100644 index 000000000000..f81cb7d08b50 --- /dev/null +++ b/packages/devextreme/js/events/index.js @@ -0,0 +1,10 @@ +export { + on, + one, + off, + trigger, +} from '../common/core/events'; + +export { + triggerHandler, +} from './events.types'; diff --git a/packages/devextreme/js/excel_exporter.d.ts b/packages/devextreme/js/excel_exporter.d.ts new file mode 100644 index 000000000000..b6974f3910c8 --- /dev/null +++ b/packages/devextreme/js/excel_exporter.d.ts @@ -0,0 +1,16 @@ +export { + DataGridCell, + PivotGridCell, + DataGridExportOptions as ExcelExportDataGridProps, + PivotGridExportOptions as ExcelExportPivotGridProps, + exportDataGrid, + exportPivotGrid, +} from './common/export/excel'; + +export { + ExcelExportBaseOptions as ExcelExportBaseProps, + ExcelPivotGridCell, + CellAddress, + CellRange, + ExcelDataGridCell, +} from './excel_exporter.types'; diff --git a/packages/devextreme/js/excel_exporter.js b/packages/devextreme/js/excel_exporter.js new file mode 100644 index 000000000000..48ace077fbad --- /dev/null +++ b/packages/devextreme/js/excel_exporter.js @@ -0,0 +1 @@ +export { exportDataGrid, exportPivotGrid } from './common/export/excel'; diff --git a/packages/devextreme/js/excel_exporter.types.d.ts b/packages/devextreme/js/excel_exporter.types.d.ts new file mode 100644 index 000000000000..b1f6e46e3993 --- /dev/null +++ b/packages/devextreme/js/excel_exporter.types.d.ts @@ -0,0 +1,156 @@ +import { ExportLoadPanel } from './exporter/export_load_panel'; +import { Cell } from './ui/pivot_grid'; +import { Column } from './ui/data_grid'; + +/** + * @docid + * @namespace DevExpress.excelExporter + * @type object + * @hidden + */ +export interface ExcelExportBaseOptions { + /** + * @docid + * @default undefined + * @public + */ + worksheet?: object | undefined; + /** + * @docid + * @default { row: 1, column: 1 } + * @public + */ + topLeftCell?: CellAddress | string; + /** + * @docid + * @default true + * @public + */ + keepColumnWidths?: boolean; + /** + * @docid + * @public + */ + loadPanel?: ExportLoadPanel; + /** + * @docid + * @default false + * @public + */ + encodeExecutableContent?: boolean; +} + +/** + * @namespace DevExpress.excelExporter + * @deprecated Use PivotGridCell instead + */ +export interface ExcelPivotGridCell extends Cell { + /** + * @docid + * @public + */ + area?: 'column' | 'row' | 'data'; + /** + * @docid + * @public + */ + rowIndex?: number; + /** + * @docid + * @public + */ + columnIndex?: number; + /** + * @docid + * @public + */ + headerType?: 'column' | 'row' | 'data' | 'filter'; +} + +/** + * @docid + * @namespace DevExpress.excelExporter + * @type object + */ +export interface CellAddress { + /** + * @docid + * @public + */ + row?: number; + /** + * @docid + * @public + */ + column?: number; +} + +/** +* @docid +* @namespace DevExpress.excelExporter +* @type object +*/ +export interface CellRange { + /** + * @docid + * @public + */ + from?: CellAddress; + /** + * @docid + * @public + */ + to?: CellAddress; +} + +/** + * @namespace DevExpress.excelExporter + * @deprecated Use DataGridCell instead + */ +export interface ExcelDataGridCell { + /** + * @docid + * @public + * @type dxDataGridColumn + */ + column?: Column; + /** + * @docid + * @public + */ + data?: any; + /** + * @docid + * @public + */ + groupIndex?: number; + /** + * @docid + * @public + */ + groupSummaryItems?: Array<{ + /** + * @docid + */ + name?: string; + /** + * @docid + */ + value?: any; + }>; + /** + * @docid + * @public + */ + rowType?: string; + /** + * @docid + * @public + */ + totalSummaryItemName?: string; + /** + * @docid + * @public + */ + value?: any; +} diff --git a/packages/devextreme/js/exporter/common/export_load_panel.js b/packages/devextreme/js/exporter/common/export_load_panel.js index 8d303b1943b6..1f045f5d30a5 100644 --- a/packages/devextreme/js/exporter/common/export_load_panel.js +++ b/packages/devextreme/js/exporter/common/export_load_panel.js @@ -1,6 +1,6 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import { isDefined } from '../../core/utils/type'; import LoadPanel from '../../ui/load_panel'; import gridUtils from '../../__internal/grids/grid_core/m_utils'; diff --git a/packages/devextreme/js/exporter/exceljs/export_format.js b/packages/devextreme/js/exporter/exceljs/export_format.js index 1286c1454c15..3389898b69f6 100644 --- a/packages/devextreme/js/exporter/exceljs/export_format.js +++ b/packages/devextreme/js/exporter/exceljs/export_format.js @@ -1,11 +1,11 @@ import { format as stringFormat } from '../../core/utils/string'; -import numberFormatter from '../../localization/number'; -import dateLocalization from '../../localization/date'; +import numberFormatter from '../../common/core/localization/number'; +import dateLocalization from '../../common/core/localization/date'; import { isDefined, isString, isObject, isNumeric } from '../../core/utils/type'; -import { getFormat } from '../../localization/ldml/date.format'; -import { getLanguageId } from '../../localization/language_codes'; +import { getFormat } from '../../common/core/localization/ldml/date.format'; +import { getLanguageId } from '../../common/core/localization/language_codes'; import { extend } from '../../core/utils/extend'; -import '../../localization/currency'; +import '../../common/core/localization/currency'; const ARABIC_ZERO_CODE = 1632; const DEFINED_NUMBER_FORMTATS = { diff --git a/packages/devextreme/js/exporter/export_load_panel.d.ts b/packages/devextreme/js/exporter/export_load_panel.d.ts new file mode 100644 index 000000000000..d6ef042f215a --- /dev/null +++ b/packages/devextreme/js/exporter/export_load_panel.d.ts @@ -0,0 +1,52 @@ +/** + * @docid + * @type object + * @namespace DevExpress + */ +export interface ExportLoadPanel { + /** + * @docid + * @default true + */ + enabled?: boolean; + /** + * @docid + * @default "Exporting..." + */ + text?: string; + /** + * @docid + * @default 200 + */ + width?: number; + /** + * @docid + * @default 90 + */ + height?: number; + /** + * @docid + * @default true + */ + showIndicator?: boolean; + /** + * @docid + * @default "" + */ + indicatorSrc?: string; + /** + * @docid + * @default true + */ + showPane?: boolean; + /** + * @docid + * @default false + */ + shading?: boolean; + /** + * @docid + * @default '' + */ + shadingColor?: string; +} diff --git a/packages/devextreme/js/exporter/jspdf/autotable/export.js b/packages/devextreme/js/exporter/jspdf/autotable/export.js index 99da73c8c40f..8de1697c21cc 100644 --- a/packages/devextreme/js/exporter/jspdf/autotable/export.js +++ b/packages/devextreme/js/exporter/jspdf/autotable/export.js @@ -1,8 +1,8 @@ import { isDate, isDefined, isObject, isFunction, isNumeric } from '../../../core/utils/type'; import { extend } from '../../../core/utils/extend'; -import dateLocalization from '../../../localization/date'; -import numberLocalization from '../../../localization/number'; -import messageLocalization from '../../../localization/message'; +import dateLocalization from '../../../common/core/localization/date'; +import numberLocalization from '../../../common/core/localization/number'; +import messageLocalization from '../../../common/core/localization/message'; import { ExportLoadPanel } from '../../common/export_load_panel'; import { hasWindow } from '../../../core/utils/window'; diff --git a/packages/devextreme/js/exporter/jspdf/common/export.js b/packages/devextreme/js/exporter/jspdf/common/export.js index ccd774e6b600..b87e90605629 100644 --- a/packages/devextreme/js/exporter/jspdf/common/export.js +++ b/packages/devextreme/js/exporter/jspdf/common/export.js @@ -7,7 +7,7 @@ import { generateRowsInfo, getBaseTableStyle } from './rows_generator'; import { splitByPages } from './rows_splitting'; import { drawCellsContent, drawCellsLines, drawGridLines, getDocumentStyles, setDocumentStyles, addNewPage } from './draw_utils'; import { applyRtl, applyWordWrap, toPdfUnit } from './pdf_utils'; -import messageLocalization from '../../../localization/message'; +import messageLocalization from '../../../common/core/localization/message'; import { ExportLoadPanel } from '../../common/export_load_panel'; import { hasWindow } from '../../../core/utils/window'; diff --git a/packages/devextreme/js/exporter/jspdf/common/rows_generator.js b/packages/devextreme/js/exporter/jspdf/common/rows_generator.js index 3aac4c886ec6..47f487d48d45 100644 --- a/packages/devextreme/js/exporter/jspdf/common/rows_generator.js +++ b/packages/devextreme/js/exporter/jspdf/common/rows_generator.js @@ -1,6 +1,6 @@ import { isDate, isDefined, isNumeric } from '../../../core/utils/type'; -import dateLocalization from '../../../localization/date'; -import numberLocalization from '../../../localization/number'; +import dateLocalization from '../../../common/core/localization/date'; +import numberLocalization from '../../../common/core/localization/number'; import { toPdfUnit } from './pdf_utils'; const defaultStyles = { diff --git a/packages/devextreme/js/common/file_management/custom_provider.js b/packages/devextreme/js/file_management/custom_provider.js similarity index 100% rename from packages/devextreme/js/common/file_management/custom_provider.js rename to packages/devextreme/js/file_management/custom_provider.js diff --git a/packages/devextreme/js/common/file_management/error.js b/packages/devextreme/js/file_management/error.js similarity index 100% rename from packages/devextreme/js/common/file_management/error.js rename to packages/devextreme/js/file_management/error.js diff --git a/packages/devextreme/js/common/file_management/error_codes.js b/packages/devextreme/js/file_management/error_codes.js similarity index 100% rename from packages/devextreme/js/common/file_management/error_codes.js rename to packages/devextreme/js/file_management/error_codes.js diff --git a/packages/devextreme/js/common/file_management/file_system_item.js b/packages/devextreme/js/file_management/file_system_item.js similarity index 100% rename from packages/devextreme/js/common/file_management/file_system_item.js rename to packages/devextreme/js/file_management/file_system_item.js diff --git a/packages/devextreme/js/common/file_management/object_provider.js b/packages/devextreme/js/file_management/object_provider.js similarity index 99% rename from packages/devextreme/js/common/file_management/object_provider.js rename to packages/devextreme/js/file_management/object_provider.js index a05ae10457b3..33e103ba22f6 100644 --- a/packages/devextreme/js/common/file_management/object_provider.js +++ b/packages/devextreme/js/file_management/object_provider.js @@ -1,8 +1,8 @@ import { ensureDefined } from '../core/utils/common'; import { compileGetter, compileSetter } from '../core/utils/data'; -import Guid from '../core/guid'; +import { Guid } from '../common'; import { isFunction } from '../core/utils/type'; -import { errors } from '../data/errors'; +import { errors } from '../common/data/errors'; import { Deferred } from '../core/utils/deferred'; import { getWindow } from '../core/utils/window'; import { fileSaver } from '../exporter/file_saver'; diff --git a/packages/devextreme/js/common/file_management/provider_base.js b/packages/devextreme/js/file_management/provider_base.js similarity index 100% rename from packages/devextreme/js/common/file_management/provider_base.js rename to packages/devextreme/js/file_management/provider_base.js diff --git a/packages/devextreme/js/common/file_management/remote_provider.js b/packages/devextreme/js/file_management/remote_provider.js similarity index 99% rename from packages/devextreme/js/common/file_management/remote_provider.js rename to packages/devextreme/js/file_management/remote_provider.js index c1c657ce5c7b..c04d740ede91 100644 --- a/packages/devextreme/js/common/file_management/remote_provider.js +++ b/packages/devextreme/js/file_management/remote_provider.js @@ -1,11 +1,11 @@ import $ from '../core/renderer'; import ajax from '../core/utils/ajax'; import { ensureDefined, noop } from '../core/utils/common'; -import Guid from '../core/guid'; +import { Guid } from '../common'; import { getWindow } from '../core/utils/window'; import { each } from '../core/utils/iterator'; import { Deferred } from '../core/utils/deferred'; -import eventsEngine from '../events/core/events_engine'; +import eventsEngine from '../common/core/events/core/events_engine'; import FileSystemProviderBase from './provider_base'; import { compileGetter } from '../core/utils/data'; diff --git a/packages/devextreme/js/common/file_management/utils.js b/packages/devextreme/js/file_management/utils.js similarity index 100% rename from packages/devextreme/js/common/file_management/utils.js rename to packages/devextreme/js/file_management/utils.js diff --git a/packages/devextreme/js/format_helper.d.ts b/packages/devextreme/js/format_helper.d.ts index ed4f1c706830..b92812b5e6cb 100644 --- a/packages/devextreme/js/format_helper.d.ts +++ b/packages/devextreme/js/format_helper.d.ts @@ -1,6 +1,6 @@ import { Format, -} from './localization'; +} from './common/core/localization'; export interface FormatHelper { format( diff --git a/packages/devextreme/js/format_helper.js b/packages/devextreme/js/format_helper.js index f194972695c0..de05bc7ec2a0 100644 --- a/packages/devextreme/js/format_helper.js +++ b/packages/devextreme/js/format_helper.js @@ -7,11 +7,11 @@ import { isPlainObject } from './core/utils/type'; import dateUtils from './core/utils/date'; -import numberLocalization from './localization/number'; -import dateLocalization from './localization/date'; +import numberLocalization from './common/core/localization/number'; +import dateLocalization from './common/core/localization/date'; import dependencyInjector from './core/utils/dependency_injector'; -import './localization/currency'; +import './common/core/localization/currency'; export default dependencyInjector({ format: function(value, format) { diff --git a/packages/devextreme/js/integration/jquery.d.ts b/packages/devextreme/js/integration/jquery.d.ts index ccb50918ffb6..adfc6a505e17 100644 --- a/packages/devextreme/js/integration/jquery.d.ts +++ b/packages/devextreme/js/integration/jquery.d.ts @@ -92,7 +92,7 @@ declare module '../core/utils/deferred' { interface PromiseType extends JQueryPromise { } } -declare module '../events/index' { +declare module '../common/core/events' { interface EventType extends JQueryEventObject { cancel?: boolean; } diff --git a/packages/devextreme/js/integration/jquery/easing.js b/packages/devextreme/js/integration/jquery/easing.js index 8c26bcbb08cf..a569caf2a777 100644 --- a/packages/devextreme/js/integration/jquery/easing.js +++ b/packages/devextreme/js/integration/jquery/easing.js @@ -1,6 +1,6 @@ // eslint-disable-next-line no-restricted-imports import jQuery from 'jquery'; -import { setEasing } from '../../animation/easing'; +import { setEasing } from '../../common/core/animation/easing'; if(jQuery) { setEasing(jQuery.easing); diff --git a/packages/devextreme/js/integration/jquery/events.js b/packages/devextreme/js/integration/jquery/events.js index 1c1368d4fe39..15bd55198735 100644 --- a/packages/devextreme/js/integration/jquery/events.js +++ b/packages/devextreme/js/integration/jquery/events.js @@ -1,8 +1,8 @@ // eslint-disable-next-line no-restricted-imports import jQuery from 'jquery'; -import eventsEngine from '../../events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; import useJQueryFn from './use_jquery'; -import registerEventCallbacks from '../../events/core/event_registrator_callbacks'; +import registerEventCallbacks from '../../common/core/events/core/event_registrator_callbacks'; import domAdapter from '../../core/dom_adapter'; const useJQuery = useJQueryFn(); diff --git a/packages/devextreme/js/integration/jquery/hooks.js b/packages/devextreme/js/integration/jquery/hooks.js index 156ab55a7be0..0b2d0a6a5deb 100644 --- a/packages/devextreme/js/integration/jquery/hooks.js +++ b/packages/devextreme/js/integration/jquery/hooks.js @@ -5,9 +5,9 @@ const useJQuery = useJQueryFn(); import { compare as compareVersion } from '../../core/utils/version'; import { each } from '../../core/utils/iterator'; import { isNumeric } from '../../core/utils/type'; -import { setEventFixMethod } from '../../events/utils/index'; -import registerEvent from '../../events/core/event_registrator'; -import hookTouchProps from '../../events/core/hook_touch_props'; +import { setEventFixMethod } from '../../common/core/events/utils/index'; +import registerEvent from '../../common/core/events/core/event_registrator'; +import hookTouchProps from '../../common/core/events/core/hook_touch_props'; if(useJQuery) { if(compareVersion(jQuery.fn.jquery, [3]) < 0) { diff --git a/packages/devextreme/js/integration/knockout/event_registrator.js b/packages/devextreme/js/integration/knockout/event_registrator.js index 81f23cb31023..38be731ab78b 100644 --- a/packages/devextreme/js/integration/knockout/event_registrator.js +++ b/packages/devextreme/js/integration/knockout/event_registrator.js @@ -1,10 +1,10 @@ import $ from '../../core/renderer'; -import eventsEngine from '../../events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; // eslint-disable-next-line no-restricted-imports import ko from 'knockout'; import { isPlainObject } from '../../core/utils/type'; -import eventRegistratorCallbacks from '../../events/core/event_registrator_callbacks'; -import { addNamespace } from '../../events/utils/index'; +import eventRegistratorCallbacks from '../../common/core/events/core/event_registrator_callbacks'; +import { addNamespace } from '../../common/core/events/utils/index'; if(ko) { eventRegistratorCallbacks.add(function(name) { diff --git a/packages/devextreme/js/localization.d.ts b/packages/devextreme/js/localization.d.ts index 52d0f5343287..22611cfef47a 100644 --- a/packages/devextreme/js/localization.d.ts +++ b/packages/devextreme/js/localization.d.ts @@ -1,131 +1,11 @@ -import { Format as PredefinedFormat } from './common'; - -/** - * @docid localization.formatDate - * @publicName formatDate(value, format) - * @static - * @namespace DevExpress.localization - * @public - */ -export function formatDate(value: Date, format: Format): string; - -/** - * @docid localization.formatMessage - * @publicName formatMessage(key, value) - * @param2 value:string|Array - * @static - * @namespace DevExpress.localization - * @public - */ -export function formatMessage(key: string, ...values: Array): string; - -/** - * @docid localization.formatNumber - * @publicName formatNumber(value, format) - * @static - * @namespace DevExpress.localization - * @public - */ -export function formatNumber(value: number, format: Format): string; - -/** - * @docid localization.loadMessages - * @publicName loadMessages(messages) - * @param1 messages:object - * @static - * @namespace DevExpress.localization - * @public - */ -export function loadMessages(messages: any): void; - -/** - * @docid localization.locale - * @publicName locale() - * @static - * @namespace DevExpress.localization - * @public - */ -export function locale(): string; - -/** - * @docid localization.locale - * @publicName locale(locale) - * @static - * @namespace DevExpress.localization - * @public - */ -// eslint-disable-next-line @typescript-eslint/no-shadow -export function locale(locale: string): void; - -/** - * @docid localization.parseDate - * @publicName parseDate(text, format) - * @static - * @namespace DevExpress.localization - * @public - */ -export function parseDate(text: string, format: Format): Date; - -/** - * @docid localization.parseNumber - * @publicName parseNumber(text, format) - * @static - * @namespace DevExpress.localization - * @public - */ -export function parseNumber(text: string, format: Format): number; - -export interface FormatObject { - /** - * @docid Format.currency - * @public - */ - currency?: string; - /** - * @docid Format.useCurrencyAccountingStyle - * @type boolean - * @default true - * @public - */ - useCurrencyAccountingStyle?: boolean; - /** - * @docid Format.formatter - * @public - */ - formatter?: ((value: number | Date) => string); - /** - * @docid Format.parser - * @public - */ - parser?: ((value: string) => number | Date); - /** - * @docid Format.precision - * @public - */ - precision?: number; - /** - * @docid Format.type - * @public - */ - type?: PredefinedFormat | string; -} -type ExternalFormat = - Intl.DateTimeFormatOptions | - Intl.NumberFormatOptions; - -/** - * @docid - * @type Object|Enums.Format|string|function - * @default undefined - * @section Common - * @namespace DevExpress.ui - * @public - */ -export type Format = - FormatObject | - PredefinedFormat | - string | - ((value: number | Date) => string) | - ((value: Date) => string) | - ((value: number) => string) | - ExternalFormat | undefined; +export { + formatDate, + formatMessage, + formatNumber, + loadMessages, + locale, + parseDate, + parseNumber, + Format, + FormatObject, +} from './common/core/localization'; diff --git a/packages/devextreme/js/localization.js b/packages/devextreme/js/localization.js new file mode 100644 index 000000000000..f184d26ec496 --- /dev/null +++ b/packages/devextreme/js/localization.js @@ -0,0 +1,9 @@ +export { + formatDate, + formatMessage, + formatNumber, + loadMessages, + locale, + parseDate, + parseNumber, +} from './common/core/localization'; diff --git a/packages/devextreme/js/localization/globalize/core.js b/packages/devextreme/js/localization/globalize/core.js new file mode 100644 index 000000000000..fc36b71d45a6 --- /dev/null +++ b/packages/devextreme/js/localization/globalize/core.js @@ -0,0 +1 @@ +import '../../common/core/localization/globalize/core'; diff --git a/packages/devextreme/js/localization/globalize/currency.js b/packages/devextreme/js/localization/globalize/currency.js new file mode 100644 index 000000000000..bf9568470ff3 --- /dev/null +++ b/packages/devextreme/js/localization/globalize/currency.js @@ -0,0 +1 @@ +import '../../common/core/localization/globalize/currency'; diff --git a/packages/devextreme/js/localization/globalize/date.js b/packages/devextreme/js/localization/globalize/date.js new file mode 100644 index 000000000000..5c7855d46282 --- /dev/null +++ b/packages/devextreme/js/localization/globalize/date.js @@ -0,0 +1 @@ +import '../../common/core/localization/globalize/date'; diff --git a/packages/devextreme/js/localization/globalize/message.js b/packages/devextreme/js/localization/globalize/message.js new file mode 100644 index 000000000000..19b1d397369e --- /dev/null +++ b/packages/devextreme/js/localization/globalize/message.js @@ -0,0 +1 @@ +import '../../common/core/localization/globalize/message'; diff --git a/packages/devextreme/js/localization/globalize/number.js b/packages/devextreme/js/localization/globalize/number.js new file mode 100644 index 000000000000..67e44eca5ca9 --- /dev/null +++ b/packages/devextreme/js/localization/globalize/number.js @@ -0,0 +1 @@ +import '../../common/core/localization/globalize/number'; diff --git a/packages/devextreme/js/mobile/hide_top_overlay.d.ts b/packages/devextreme/js/mobile/hide_top_overlay.d.ts index a292db6c2e1d..2c333b5ede11 100644 --- a/packages/devextreme/js/mobile/hide_top_overlay.d.ts +++ b/packages/devextreme/js/mobile/hide_top_overlay.d.ts @@ -1,7 +1,3 @@ -/** - * @docid - * @publicName hideTopOverlay() - * @namespace DevExpress - * @public - */ -export default function hideTopOverlay(): boolean; +import { hideTopOverlay } from '../common/core/environment'; + +export default hideTopOverlay; diff --git a/packages/devextreme/js/mobile/hide_top_overlay.js b/packages/devextreme/js/mobile/hide_top_overlay.js new file mode 100644 index 000000000000..2c333b5ede11 --- /dev/null +++ b/packages/devextreme/js/mobile/hide_top_overlay.js @@ -0,0 +1,3 @@ +import { hideTopOverlay } from '../common/core/environment'; + +export default hideTopOverlay; diff --git a/packages/devextreme/js/mobile/init_mobile_viewport.d.ts b/packages/devextreme/js/mobile/init_mobile_viewport.d.ts index f05a90738bcd..337826dd1c1b 100644 --- a/packages/devextreme/js/mobile/init_mobile_viewport.d.ts +++ b/packages/devextreme/js/mobile/init_mobile_viewport.d.ts @@ -1,7 +1,3 @@ -/** - * @docid utils.initMobileViewport - * @publicName initMobileViewport(options) - * @namespace DevExpress.utils - * @public - */ -export default function initMobileViewport(options: { allowZoom?: boolean; allowPan?: boolean; allowSelection?: boolean }): void; +import { initMobileViewport } from '../common/core/environment'; + +export default initMobileViewport; diff --git a/packages/devextreme/js/mobile/init_mobile_viewport.js b/packages/devextreme/js/mobile/init_mobile_viewport.js new file mode 100644 index 000000000000..337826dd1c1b --- /dev/null +++ b/packages/devextreme/js/mobile/init_mobile_viewport.js @@ -0,0 +1,3 @@ +import { initMobileViewport } from '../common/core/environment'; + +export default initMobileViewport; diff --git a/packages/devextreme/js/pdf_exporter.d.ts b/packages/devextreme/js/pdf_exporter.d.ts new file mode 100644 index 000000000000..c13c297b203e --- /dev/null +++ b/packages/devextreme/js/pdf_exporter.d.ts @@ -0,0 +1,22 @@ +import { + DataGridCell, + Cell, + exportDataGrid, + exportGantt, + GanttExportFont, + DataGridExportOptions, + GanttExportOptions, +} from './common/export/pdf'; + +import { PdfDataGridCell } from './pdf_exporter.types'; + +export { + DataGridCell, + Cell, + exportDataGrid, + exportGantt, + GanttExportFont as PdfExportGanttFont, + DataGridExportOptions as PdfExportDataGridProps, + GanttExportOptions as PdfExportGanttProps, + PdfDataGridCell, +}; diff --git a/packages/devextreme/js/pdf_exporter.js b/packages/devextreme/js/pdf_exporter.js new file mode 100644 index 000000000000..e4c51779877d --- /dev/null +++ b/packages/devextreme/js/pdf_exporter.js @@ -0,0 +1,8 @@ +export { + exportGantt, + exportDataGrid, +} from './common/export/pdf'; + +export { + exportDataGrid as exportDataGridWithAutoTable, +} from './exporter/jspdf/autotable/export_data_grid'; diff --git a/packages/devextreme/js/pdf_exporter.types.d.ts b/packages/devextreme/js/pdf_exporter.types.d.ts new file mode 100644 index 000000000000..cdc4b7fe1994 --- /dev/null +++ b/packages/devextreme/js/pdf_exporter.types.d.ts @@ -0,0 +1,9 @@ +import { + DataGridCell as ExcelCell, +} from './common/export/excel'; + +/** + * @namespace DevExpress.pdfExporter + * @deprecated Use DataGridCell instead + */ +export interface PdfDataGridCell extends ExcelCell {} diff --git a/packages/devextreme/js/time_zone_utils.d.ts b/packages/devextreme/js/time_zone_utils.d.ts index 621a32cd4d41..afbc768f5fe5 100644 --- a/packages/devextreme/js/time_zone_utils.d.ts +++ b/packages/devextreme/js/time_zone_utils.d.ts @@ -1,28 +1,4 @@ -/** - * @docid - * @public - */ -export interface dxSchedulerTimeZone { - /** - * @docid - */ - id: string; - /** - * @docid - */ - offset: number; - /** - * @docid - */ - title: string; -} - -/** - * @docid utils.getTimeZones - * @publicName getTimeZones(date) - * @param1 date:Date|undefined - * @namespace DevExpress.utils - * @static - * @public - */ -export function getTimeZones(date?: Date): Array; +export { + getTimeZones, + SchedulerTimeZone as dxSchedulerTimeZone, +} from './common/core/environment'; diff --git a/packages/devextreme/js/time_zone_utils.js b/packages/devextreme/js/time_zone_utils.js new file mode 100644 index 000000000000..b88a0df88d76 --- /dev/null +++ b/packages/devextreme/js/time_zone_utils.js @@ -0,0 +1 @@ +export { getTimeZones } from './common/core/environment'; diff --git a/packages/devextreme/js/ui/accordion.d.ts b/packages/devextreme/js/ui/accordion.d.ts index ccccfa8e8e64..f9a0c03411bb 100644 --- a/packages/devextreme/js/ui/accordion.d.ts +++ b/packages/devextreme/js/ui/accordion.d.ts @@ -6,7 +6,7 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { DxPromise, @@ -18,7 +18,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/action_sheet.d.ts b/packages/devextreme/js/ui/action_sheet.d.ts index f8415c1c7aca..58ca7254a967 100644 --- a/packages/devextreme/js/ui/action_sheet.d.ts +++ b/packages/devextreme/js/ui/action_sheet.d.ts @@ -14,7 +14,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/autocomplete.d.ts b/packages/devextreme/js/ui/autocomplete.d.ts index b83d05497b9b..f62990b9d195 100644 --- a/packages/devextreme/js/ui/autocomplete.d.ts +++ b/packages/devextreme/js/ui/autocomplete.d.ts @@ -4,7 +4,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import dxDropDownList, { dxDropDownListOptions, diff --git a/packages/devextreme/js/ui/box.d.ts b/packages/devextreme/js/ui/box.d.ts index 2d2dd46f805d..f180e8cc66cb 100644 --- a/packages/devextreme/js/ui/box.d.ts +++ b/packages/devextreme/js/ui/box.d.ts @@ -6,7 +6,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/button.d.ts b/packages/devextreme/js/ui/button.d.ts index 6002849771f7..b7ad4e77c1ce 100644 --- a/packages/devextreme/js/ui/button.d.ts +++ b/packages/devextreme/js/ui/button.d.ts @@ -5,24 +5,21 @@ import { import { template, -} from '../core/templates/template'; + ButtonType, + ButtonStyle, +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, } from './widget/ui.widget'; -import { - ButtonType, - ButtonStyle, -} from '../common'; - export { ButtonType, ButtonStyle, diff --git a/packages/devextreme/js/ui/button_group.d.ts b/packages/devextreme/js/ui/button_group.d.ts index 9d4ce383459d..c8b256f5b0df 100644 --- a/packages/devextreme/js/ui/button_group.d.ts +++ b/packages/devextreme/js/ui/button_group.d.ts @@ -5,7 +5,10 @@ import { import { template, -} from '../core/templates/template'; + ButtonType, + ButtonStyle, + SingleMultipleOrNone, +} from '../common'; import { EventInfo, @@ -13,7 +16,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import { CollectionWidgetItem, @@ -24,12 +27,6 @@ import Widget, { WidgetOptions, } from './widget/ui.widget'; -import { - ButtonType, - ButtonStyle, - SingleMultipleOrNone, -} from '../common'; - export { ButtonType, ButtonStyle, diff --git a/packages/devextreme/js/ui/calendar.d.ts b/packages/devextreme/js/ui/calendar.d.ts index 36b05d2c476d..a2d626d953cb 100644 --- a/packages/devextreme/js/ui/calendar.d.ts +++ b/packages/devextreme/js/ui/calendar.d.ts @@ -8,21 +8,18 @@ import { EventInfo, InitializedEventInfo, NativeEventInfo, -} from '../events/index'; +} from '../common/core/events'; import { template, -} from '../core/templates/template'; + FirstDayOfWeek, +} from '../common'; import Editor, { ValueChangedInfo, EditorOptions, } from './editor/editor'; -import { - FirstDayOfWeek, -} from '../common'; - export { FirstDayOfWeek, }; diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 425befb69287..54ad51e07b0f 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -1,6 +1,6 @@ import { Format, -} from '../localization'; +} from '../common/core/localization'; import { UserDefinedElement, @@ -9,7 +9,7 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import Widget, { WidgetOptions } from './widget/ui.widget'; import { @@ -17,7 +17,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import DataSource, { DataSourceLike } from '../data/data_source'; /** diff --git a/packages/devextreme/js/ui/check_box.d.ts b/packages/devextreme/js/ui/check_box.d.ts index 131bc27fcfcb..07eb72bd5d5c 100644 --- a/packages/devextreme/js/ui/check_box.d.ts +++ b/packages/devextreme/js/ui/check_box.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Editor, { EditorOptions, diff --git a/packages/devextreme/js/ui/collection/ui.collection_widget.base.d.ts b/packages/devextreme/js/ui/collection/ui.collection_widget.base.d.ts index ee2df9161cfe..81845353ca8a 100644 --- a/packages/devextreme/js/ui/collection/ui.collection_widget.base.d.ts +++ b/packages/devextreme/js/ui/collection/ui.collection_widget.base.d.ts @@ -5,7 +5,7 @@ import { import { template, -} from '../../core/templates/template'; +} from '../../common'; import DataSource, { DataSourceLike } from '../../data/data_source'; @@ -14,7 +14,7 @@ import { NativeEventInfo, ItemInfo, AsyncCancelable, -} from '../../events/index'; +} from '../../common/core/events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/color_box.d.ts b/packages/devextreme/js/ui/color_box.d.ts index 35b9855eb355..f4c2ab026577 100644 --- a/packages/devextreme/js/ui/color_box.d.ts +++ b/packages/devextreme/js/ui/color_box.d.ts @@ -8,11 +8,12 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { template, -} from '../core/templates/template'; + ApplyValueMode, +} from '../common'; import dxDropDownEditor, { dxDropDownEditorOptions, @@ -27,10 +28,6 @@ import { Properties as PopupProperties, } from './popup'; -import { - ApplyValueMode, -} from '../common'; - /** * @docid _ui_color_box_ChangeEvent * @public diff --git a/packages/devextreme/js/ui/context_menu.d.ts b/packages/devextreme/js/ui/context_menu.d.ts index a84ed0e002b3..554f592e594a 100644 --- a/packages/devextreme/js/ui/context_menu.d.ts +++ b/packages/devextreme/js/ui/context_menu.d.ts @@ -1,7 +1,7 @@ import { DataSourceLike } from '../data/data_source'; import { PositionConfig, -} from '../animation/position'; +} from '../common/core/animation'; import { UserDefinedElement, @@ -12,14 +12,15 @@ import { } from '../core/utils/deferred'; import { - DxEvent, Cancelable, EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import dxMenuBase, { dxMenuBaseOptions, diff --git a/packages/devextreme/js/ui/context_menu/ui.menu_base.d.ts b/packages/devextreme/js/ui/context_menu/ui.menu_base.d.ts index aaf33396145e..27b3d4ff9b6f 100644 --- a/packages/devextreme/js/ui/context_menu/ui.menu_base.d.ts +++ b/packages/devextreme/js/ui/context_menu/ui.menu_base.d.ts @@ -1,7 +1,7 @@ import { DataSourceLike } from '../../data/data_source'; import { AnimationConfig, -} from '../../animation/fx'; +} from '../../common/core/animation'; import HierarchicalCollectionWidget, { HierarchicalCollectionWidgetOptions, diff --git a/packages/devextreme/js/ui/data_grid.d.ts b/packages/devextreme/js/ui/data_grid.d.ts index d6c9816cca23..bd141435d065 100644 --- a/packages/devextreme/js/ui/data_grid.d.ts +++ b/packages/devextreme/js/ui/data_grid.d.ts @@ -1,5 +1,4 @@ -import DataSource, { -} from '../data/data_source'; +import { DataSource } from '../common/data'; import { UserDefinedElement, @@ -13,7 +12,13 @@ import { import { template, -} from '../core/templates/template'; + HorizontalAlignment, + Mode, + Scrollable, + SelectAllMode, + SortOrder, + ToolbarItemLocation, +} from '../common'; import { Cancelable, @@ -21,7 +26,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { dxToolbarItem, @@ -34,15 +39,6 @@ import { Format, } from '../localization'; -import { - HorizontalAlignment, - Mode, - Scrollable, - SelectAllMode, - SortOrder, - ToolbarItemLocation, -} from '../common'; - import { AdaptiveDetailRowPreparingInfo, ColumnBase as ComponentColumnBase, diff --git a/packages/devextreme/js/ui/date_box.d.ts b/packages/devextreme/js/ui/date_box.d.ts index c578f9705e3f..2359b3e439f8 100644 --- a/packages/devextreme/js/ui/date_box.d.ts +++ b/packages/devextreme/js/ui/date_box.d.ts @@ -4,7 +4,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { ComponentDisabledDate, diff --git a/packages/devextreme/js/ui/date_range_box.d.ts b/packages/devextreme/js/ui/date_range_box.d.ts index 4e32102d3958..17198fb90abf 100644 --- a/packages/devextreme/js/ui/date_range_box.d.ts +++ b/packages/devextreme/js/ui/date_range_box.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { DxElement, diff --git a/packages/devextreme/js/ui/defer_rendering.d.ts b/packages/devextreme/js/ui/defer_rendering.d.ts index b25c5c73fee7..59fea5aeb387 100644 --- a/packages/devextreme/js/ui/defer_rendering.d.ts +++ b/packages/devextreme/js/ui/defer_rendering.d.ts @@ -1,12 +1,12 @@ import { AnimationConfig, -} from '../animation/fx'; +} from '../common/core/animation'; import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/diagram.d.ts b/packages/devextreme/js/ui/diagram.d.ts index aa19468c161f..47e5629894ee 100644 --- a/packages/devextreme/js/ui/diagram.d.ts +++ b/packages/devextreme/js/ui/diagram.d.ts @@ -6,24 +6,21 @@ import { import { template, -} from '../core/templates/template'; + Orientation, + PageOrientation, + ToolbarItemLocation, +} from '../common'; import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, } from './widget/ui.widget'; -import { - Orientation, - PageOrientation, - ToolbarItemLocation, -} from '../common'; - /** * @public * @namespace DevExpress.ui.dxDiagram diff --git a/packages/devextreme/js/ui/diagram/diagram.commands_manager.js b/packages/devextreme/js/ui/diagram/diagram.commands_manager.js index 8bc38b7db5a5..f629f72ec95d 100644 --- a/packages/devextreme/js/ui/diagram/diagram.commands_manager.js +++ b/packages/devextreme/js/ui/diagram/diagram.commands_manager.js @@ -3,7 +3,7 @@ import { fileSaver } from '../../exporter/file_saver'; import { isFunction } from '../../core/utils/type'; import { getWindow } from '../../core/utils/window'; import { extend } from '../../core/utils/extend'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; const SEPARATOR = 'separator'; const SEPARATOR_COMMAND = { widget: SEPARATOR }; diff --git a/packages/devextreme/js/ui/diagram/diagram.items_option.js b/packages/devextreme/js/ui/diagram/diagram.items_option.js index b1a2bc3c9851..2ae6694bdbe3 100644 --- a/packages/devextreme/js/ui/diagram/diagram.items_option.js +++ b/packages/devextreme/js/ui/diagram/diagram.items_option.js @@ -1,6 +1,6 @@ import { extend } from '../../core/utils/extend'; import { Component } from '../../core/component'; -import DataHelperMixin from '../../data_helper'; +import DataHelperMixin from '../../common/data/data_helper'; const ItemsOptionBase = Component.inherit({}).include(DataHelperMixin); diff --git a/packages/devextreme/js/ui/diagram/diagram.toolbox_manager.js b/packages/devextreme/js/ui/diagram/diagram.toolbox_manager.js index ccc9541dc75f..a63f31fbf31f 100644 --- a/packages/devextreme/js/ui/diagram/diagram.toolbox_manager.js +++ b/packages/devextreme/js/ui/diagram/diagram.toolbox_manager.js @@ -1,4 +1,4 @@ -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; const DiagramToolboxManager = { getDefaultGroups() { diff --git a/packages/devextreme/js/ui/diagram/ui.diagram.dialog_manager.js b/packages/devextreme/js/ui/diagram/ui.diagram.dialog_manager.js index 5142203af7a8..b148918f36cb 100644 --- a/packages/devextreme/js/ui/diagram/ui.diagram.dialog_manager.js +++ b/packages/devextreme/js/ui/diagram/ui.diagram.dialog_manager.js @@ -1,6 +1,6 @@ import $ from '../../core/renderer'; import { getDiagram } from './diagram.importer'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import FileUploader from '../file_uploader'; import { getWindow } from '../../core/utils/window'; diff --git a/packages/devextreme/js/ui/diagram/ui.diagram.dialogs.js b/packages/devextreme/js/ui/diagram/ui.diagram.dialogs.js index d1b45ff7851f..63aed4ebbf5d 100644 --- a/packages/devextreme/js/ui/diagram/ui.diagram.dialogs.js +++ b/packages/devextreme/js/ui/diagram/ui.diagram.dialogs.js @@ -1,6 +1,6 @@ import $ from '../../core/renderer'; import Widget from '../widget/ui.widget'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import Popup from '../popup/ui.popup'; import { extend } from '../../core/utils/extend'; diff --git a/packages/devextreme/js/ui/diagram/ui.diagram.js b/packages/devextreme/js/ui/diagram/ui.diagram.js index d0bb7bfd93a5..d6fcf75e9385 100644 --- a/packages/devextreme/js/ui/diagram/ui.diagram.js +++ b/packages/devextreme/js/ui/diagram/ui.diagram.js @@ -6,14 +6,14 @@ import registerComponent from '../../core/component_registrator'; import { extend } from '../../core/utils/extend'; import { isFunction, isDefined } from '../../core/utils/type'; import { compileSetter, compileGetter } from '../../core/utils/data'; -import positionUtils from '../../animation/position'; +import positionUtils from '../../common/core/animation/position'; import { getDiagram } from './diagram.importer'; import { getWindow, hasWindow } from '../../core/utils/window'; import { getPublicElement } from '../../core/element'; -import eventsEngine from '../../events/core/events_engine'; -import { addNamespace } from '../../events/utils/index'; -import messageLocalization from '../../localization/message'; -import numberLocalization from '../../localization/number'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import { addNamespace } from '../../common/core/events/utils/index'; +import messageLocalization from '../../common/core/localization/message'; +import numberLocalization from '../../common/core/localization/number'; import * as zIndexPool from '../../__internal/ui/overlay/m_z_index'; import Overlay from '../overlay/ui.overlay'; diff --git a/packages/devextreme/js/ui/diagram/ui.diagram.panel.js b/packages/devextreme/js/ui/diagram/ui.diagram.panel.js index 1c80f4e69635..437d008446ee 100644 --- a/packages/devextreme/js/ui/diagram/ui.diagram.panel.js +++ b/packages/devextreme/js/ui/diagram/ui.diagram.panel.js @@ -1,8 +1,8 @@ import $ from '../../core/renderer'; import Widget from '../widget/ui.widget'; -import eventsEngine from '../../events/core/events_engine'; -import { addNamespace } from '../../events/utils/index'; -import pointerEvents from '../../events/pointer'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import { addNamespace } from '../../common/core/events/utils/index'; +import pointerEvents from '../../common/core/events/pointer'; const POINTERUP_EVENT_NAME = addNamespace(pointerEvents.up, 'dxDiagramPanel'); const PREVENT_REFOCUS_SELECTOR = '.dx-textbox'; diff --git a/packages/devextreme/js/ui/diagram/ui.diagram.toolbox.js b/packages/devextreme/js/ui/diagram/ui.diagram.toolbox.js index 6d2111f7e48b..58c444b77add 100644 --- a/packages/devextreme/js/ui/diagram/ui.diagram.toolbox.js +++ b/packages/devextreme/js/ui/diagram/ui.diagram.toolbox.js @@ -3,7 +3,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; import { hasWindow } from '../../core/utils/window'; import { Deferred } from '../../core/utils/deferred'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import TextBox from '../text_box'; import Accordion from '../accordion'; import ScrollView from '../scroll_view'; diff --git a/packages/devextreme/js/ui/draggable.d.ts b/packages/devextreme/js/ui/draggable.d.ts index bcc92b2ae0b9..0ef8e6023ce4 100644 --- a/packages/devextreme/js/ui/draggable.d.ts +++ b/packages/devextreme/js/ui/draggable.d.ts @@ -9,7 +9,8 @@ import { import { template, -} from '../core/templates/template'; + DragDirection, +} from '../common'; import { Cancelable, @@ -17,14 +18,10 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import dxSortable from './sortable'; -import { - DragDirection, -} from '../common'; - /** * @namespace DevExpress.ui * @docid diff --git a/packages/devextreme/js/ui/drawer.d.ts b/packages/devextreme/js/ui/drawer.d.ts index 4581c95ace2e..c17ff8c8ddb9 100644 --- a/packages/devextreme/js/ui/drawer.d.ts +++ b/packages/devextreme/js/ui/drawer.d.ts @@ -8,14 +8,15 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { - DxEvent, EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/drop_down_box.d.ts b/packages/devextreme/js/ui/drop_down_box.d.ts index fbd490fadcc8..3ca54c38b2f7 100644 --- a/packages/devextreme/js/ui/drop_down_box.d.ts +++ b/packages/devextreme/js/ui/drop_down_box.d.ts @@ -5,7 +5,7 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import DataSource, { DataSourceLike } from '../data/data_source'; @@ -14,7 +14,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import dxDropDownEditor, { dxDropDownEditorOptions, diff --git a/packages/devextreme/js/ui/drop_down_button.d.ts b/packages/devextreme/js/ui/drop_down_button.d.ts index 0a9b0783e588..23a84c41e53e 100644 --- a/packages/devextreme/js/ui/drop_down_button.d.ts +++ b/packages/devextreme/js/ui/drop_down_button.d.ts @@ -1,6 +1,7 @@ import { ButtonType, ButtonStyle, + template, } from '../common'; import { @@ -12,10 +13,6 @@ import { DxPromise, } from '../core/utils/deferred'; -import { - template, -} from '../core/templates/template'; - import DataSource, { DataSourceLike } from '../data/data_source'; import { @@ -23,7 +20,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Item as dxListItem, diff --git a/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_editor.d.ts b/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_editor.d.ts index dd6084994fe5..698bec39036e 100644 --- a/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_editor.d.ts +++ b/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_editor.d.ts @@ -5,7 +5,11 @@ import { import { template, -} from '../../core/templates/template'; + ApplyValueMode, + Mode, + Position, + TextEditorButton, +} from '../../common'; import dxTextBox, { dxTextBoxOptions, @@ -21,14 +25,7 @@ import { import { EventInfo, -} from '../../events/index'; - -import { - ApplyValueMode, - Mode, - Position, - TextEditorButton, -} from '../../common'; +} from '../../common/core/events'; /** @public */ export type DropDownPredefinedButton = 'clear' | 'dropDown'; diff --git a/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_list.d.ts b/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_list.d.ts index 2541e1649b7c..194d825e4613 100644 --- a/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_list.d.ts +++ b/packages/devextreme/js/ui/drop_down_editor/ui.drop_down_list.d.ts @@ -5,15 +5,16 @@ import { import { template, -} from '../../core/templates/template'; + SimplifiedSearchMode, +} from '../../common'; -import DataSource from '../../data/data_source'; +import { DataSource } from '../../common/data'; import { EventInfo, NativeEventInfo, ItemInfo, -} from '../../events/index'; +} from '../../common/core/events'; import { ValueChangedInfo, @@ -27,10 +28,6 @@ import dxDropDownEditor, { dxDropDownEditorOptions, } from './ui.drop_down_editor'; -import { - SimplifiedSearchMode, -} from '../../common'; - /** * @docid _ui_drop_down_editor_ui_drop_down_list_SelectionChangedInfo * @hidden diff --git a/packages/devextreme/js/ui/editor/editor.d.ts b/packages/devextreme/js/ui/editor/editor.d.ts index d73494dde913..2083bbf82587 100644 --- a/packages/devextreme/js/ui/editor/editor.d.ts +++ b/packages/devextreme/js/ui/editor/editor.d.ts @@ -1,6 +1,6 @@ import { NativeEventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/editor/ui.data_expression.d.ts b/packages/devextreme/js/ui/editor/ui.data_expression.d.ts index 49c5c8c1f39c..bdb9a7404a71 100644 --- a/packages/devextreme/js/ui/editor/ui.data_expression.d.ts +++ b/packages/devextreme/js/ui/editor/ui.data_expression.d.ts @@ -5,7 +5,7 @@ import { import { template, -} from '../../core/templates/template'; +} from '../../common'; import DataSource, { DataSourceLike } from '../../data/data_source'; diff --git a/packages/devextreme/js/ui/file_manager.d.ts b/packages/devextreme/js/ui/file_manager.d.ts index a434ab6735d6..f697ee06e450 100644 --- a/packages/devextreme/js/ui/file_manager.d.ts +++ b/packages/devextreme/js/ui/file_manager.d.ts @@ -13,7 +13,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import FileSystemItem from '../file_management/file_system_item'; @@ -31,9 +31,6 @@ import Widget, { import { template, -} from '../core/templates/template'; - -import { DataType, SingleOrMultiple, HorizontalAlignment, diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.command_manager.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.command_manager.js index 1237f4116aa8..f36384de22d0 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.command_manager.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.command_manager.js @@ -1,7 +1,7 @@ import { extend } from '../../core/utils/extend'; import { each } from '../../core/utils/iterator'; import { isString } from '../../core/utils/type'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; export const defaultPermissions = { create: false, diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.delete_item.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.delete_item.js index b0a72f413ed4..506a2a1f6bf5 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.delete_item.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.delete_item.js @@ -1,7 +1,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import ScrollView from '../scroll_view'; import FileManagerDialogBase from './ui.file_manager.dialog'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.folder_chooser.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.folder_chooser.js index 3be7c3c0b8f6..9b65622d2bdb 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.folder_chooser.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.folder_chooser.js @@ -1,7 +1,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import { getMapFromObject } from './ui.file_manager.common'; import FileManagerDialogBase from './ui.file_manager.dialog'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.js index bd8d77ee1966..0cc00154b8a1 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog.js @@ -1,7 +1,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; import { isDefined } from '../../core/utils/type'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import Widget from '../widget/ui.widget'; import Popup from '../popup/ui.popup'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog_manager.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog_manager.js index d731aec0b34f..aae402052bd5 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog_manager.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.dialog_manager.js @@ -1,7 +1,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import FileManagerNameEditorDialog from './ui.file_manager.dialog.name_editor'; import FileManagerFolderChooserDialog from './ui.file_manager.dialog.folder_chooser'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.editing.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.editing.js index 9991c9357a41..6e35258b626f 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.editing.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.editing.js @@ -5,7 +5,7 @@ import { each } from '../../core/utils/iterator'; import { format } from '../../core/utils/string'; import { isDefined } from '../../core/utils/type'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import Widget from '../widget/ui.widget'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.details.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.details.js index 2fffacec6c98..4a361c39cdd7 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.details.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.details.js @@ -2,7 +2,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; import { extendAttributes, getDisplayFileSize } from './ui.file_manager.common'; import { isString, isFunction, isDefined } from '../../core/utils/type'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; // NOTE: Using the "public" export here for the theme-builder deps check import DataGrid from '../../ui/data_grid'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.js index 87257e5df141..7f22babf96b3 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.js @@ -1,13 +1,13 @@ import { extend } from '../../core/utils/extend'; import { when } from '../../core/utils/deferred'; import { hasWindow } from '../../core/utils/window'; -import { name as dblClickName } from '../../events/double_click'; -import { addNamespace } from '../../events/utils/index'; -import eventsEngine from '../../events/core/events_engine'; +import { name as dblClickName } from '../../common/core/events/double_click'; +import { addNamespace } from '../../common/core/events/utils/index'; +import eventsEngine from '../../common/core/events/core/events_engine'; import { getImageContainer } from '../../core/utils/icon'; import devices from '../../core/devices'; -import CustomStore from '../../data/custom_store'; +import { CustomStore } from '../../common/data/custom_store'; import Widget from '../widget/ui.widget'; const FILE_MANAGER_FILES_VIEW_CLASS = 'dx-filemanager-files-view'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.thumbnails.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.thumbnails.js index f3ab8a3687f0..3b4cd4ceb621 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.thumbnails.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.item_list.thumbnails.js @@ -2,11 +2,11 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; import { isDefined } from '../../core/utils/type'; import { Deferred } from '../../core/utils/deferred'; -import eventsEngine from '../../events/core/events_engine'; -import { addNamespace } from '../../events/utils/index'; -import { name as contextMenuEventName } from '../../events/contextmenu'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import { addNamespace } from '../../common/core/events/utils/index'; +import { name as contextMenuEventName } from '../../common/core/events/contextmenu'; import { getDisplayFileSize } from './ui.file_manager.common'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import FileManagerThumbnailListBox from './ui.file_manager.items_list.thumbnails.list_box'; import FileManagerItemListBase from './ui.file_manager.item_list'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.items_list.thumbnails.list_box.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.items_list.thumbnails.list_box.js index 72a2f9ab816f..72c087b05dd6 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.items_list.thumbnails.list_box.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.items_list.thumbnails.list_box.js @@ -4,9 +4,9 @@ import { extend } from '../../core/utils/extend'; import { isDefined } from '../../core/utils/type'; import { Deferred, when } from '../../core/utils/deferred'; -import holdEvent from '../../events/hold'; -import { addNamespace, isCommandKeyPressed } from '../../events/utils/index'; -import eventsEngine from '../../events/core/events_engine'; +import holdEvent from '../../common/core/events/hold'; +import { addNamespace, isCommandKeyPressed } from '../../common/core/events/utils/index'; +import eventsEngine from '../../common/core/events/core/events_engine'; import { BindableTemplate } from '../../core/templates/bindable_template'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.js index e63c6cbf3421..f10f3472a1df 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.js @@ -4,7 +4,7 @@ import { isDefined, isEmptyObject, isFunction, type } from '../../core/utils/typ import { Deferred, when } from '../../core/utils/deferred'; import { ensureDefined, equalByValue } from '../../core/utils/common'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import registerComponent from '../../core/component_registrator'; import Widget from '../widget/ui.widget'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.messages.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.messages.js index ed2f8e56831f..8aa6a1a4ce10 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.messages.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.messages.js @@ -1,4 +1,4 @@ -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import ErrorCode from '../../file_management/error_codes'; export const FileManagerMessages = { diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.notification.progress_panel.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.notification.progress_panel.js index e45c45790920..2a5f02aefa4e 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.notification.progress_panel.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.notification.progress_panel.js @@ -2,7 +2,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; import { ensureDefined } from '../../core/utils/common'; import { getImageContainer } from '../../core/utils/icon'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import Widget from '../widget/ui.widget'; import ProgressBar from '../progress_bar'; diff --git a/packages/devextreme/js/ui/file_manager/ui.file_manager.toolbar.js b/packages/devextreme/js/ui/file_manager/ui.file_manager.toolbar.js index 59d87bb01862..79f3efc7c79c 100644 --- a/packages/devextreme/js/ui/file_manager/ui.file_manager.toolbar.js +++ b/packages/devextreme/js/ui/file_manager/ui.file_manager.toolbar.js @@ -3,7 +3,7 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; import { isDefined, isString } from '../../core/utils/type'; import { ensureDefined } from '../../core/utils/common'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import { extendAttributes } from './ui.file_manager.common'; import { isCompact, isFluent, isMaterial } from '../themes'; diff --git a/packages/devextreme/js/ui/file_uploader.d.ts b/packages/devextreme/js/ui/file_uploader.d.ts index b59341e50ac0..8390e42d14cc 100644 --- a/packages/devextreme/js/ui/file_uploader.d.ts +++ b/packages/devextreme/js/ui/file_uploader.d.ts @@ -8,7 +8,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Editor, { EditorOptions, diff --git a/packages/devextreme/js/ui/filter_builder.d.ts b/packages/devextreme/js/ui/filter_builder.d.ts index ae356c722c2d..a6a51ea7e354 100644 --- a/packages/devextreme/js/ui/filter_builder.d.ts +++ b/packages/devextreme/js/ui/filter_builder.d.ts @@ -6,14 +6,15 @@ import { import { template, -} from '../core/templates/template'; + DataType, +} from '../common'; import { Cancelable, EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, @@ -23,10 +24,6 @@ import { Format, } from '../localization'; -import { - DataType, -} from '../common'; - export { DataType, }; diff --git a/packages/devextreme/js/ui/form.d.ts b/packages/devextreme/js/ui/form.d.ts index 09b069daf00b..7224504d8b51 100644 --- a/packages/devextreme/js/ui/form.d.ts +++ b/packages/devextreme/js/ui/form.d.ts @@ -9,13 +9,25 @@ import { import { template, -} from '../core/templates/template'; + AsyncRule, + CompareRule, + CustomRule, + EmailRule, + HorizontalAlignment, + Mode, + NumericRule, + PatternRule, + RangeRule, + RequiredRule, + StringLengthRule, + VerticalAlignment, +} from '../common'; import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import dxButton, { dxButtonOptions, @@ -35,21 +47,6 @@ import Widget, { WidgetOptions, } from './widget/ui.widget'; -import { - AsyncRule, - CompareRule, - CustomRule, - EmailRule, - HorizontalAlignment, - Mode, - NumericRule, - PatternRule, - RangeRule, - RequiredRule, - StringLengthRule, - VerticalAlignment, -} from '../common'; - export { HorizontalAlignment, Mode, diff --git a/packages/devextreme/js/ui/gallery.d.ts b/packages/devextreme/js/ui/gallery.d.ts index c27e60791265..8e98ce43264d 100644 --- a/packages/devextreme/js/ui/gallery.d.ts +++ b/packages/devextreme/js/ui/gallery.d.ts @@ -9,7 +9,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/gantt.d.ts b/packages/devextreme/js/ui/gantt.d.ts index 0782fd0473f6..229f106b9d69 100644 --- a/packages/devextreme/js/ui/gantt.d.ts +++ b/packages/devextreme/js/ui/gantt.d.ts @@ -5,13 +5,14 @@ import { } from '../core/element'; import { - DxEvent, Cancelable, EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import { Column as TreeListColumn, @@ -31,18 +32,15 @@ import { import { template, -} from '../core/templates/template'; - -import { - DxPromise, -} from '../core/utils/deferred'; - -import { FirstDayOfWeek, SingleMultipleOrNone, ToolbarItemLocation, } from '../common'; +import { + DxPromise, +} from '../core/utils/deferred'; + import { HeaderFilterSearchConfig, } from '../common/grids'; diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.bars.js b/packages/devextreme/js/ui/gantt/ui.gantt.bars.js index cbb62d2e9031..28d6a889c58c 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.bars.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.bars.js @@ -1,7 +1,7 @@ import $ from '../../core/renderer'; import ToolbarMenu from '../toolbar'; import ContextMenu from '../context_menu'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import { extend } from '../../core/utils/extend'; const TOOLBAR_SEPARATOR_CLASS = 'dx-gantt-toolbar-separator'; diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.data.option.js b/packages/devextreme/js/ui/gantt/ui.gantt.data.option.js index 2e0ded84f6c6..8076b7d23e39 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.data.option.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.data.option.js @@ -1,5 +1,5 @@ import { Component } from '../../core/component'; -import DataHelperMixin from '../../data_helper'; +import DataHelperMixin from '../../common/data/data_helper'; class DataOption extends Component { constructor(optionName, getLoadPanel, dataSourceChangedCallback) { diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.dialogs.js b/packages/devextreme/js/ui/gantt/ui.gantt.dialogs.js index a76e4335f2d6..390c582e843a 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.dialogs.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.dialogs.js @@ -2,8 +2,8 @@ import Popup from '../popup/ui.popup'; import Form from '../form'; import '../tag_box'; import '../radio_group'; -import dateLocalization from '../../localization/date'; -import messageLocalization from '../../localization/message'; +import dateLocalization from '../../common/core/localization/date'; +import messageLocalization from '../../common/core/localization/message'; import '../list_light'; import '../../__internal/ui/list/modules/m_deleting'; diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.export_helper.js b/packages/devextreme/js/ui/gantt/ui.gantt.export_helper.js index f38c0a3ef829..b69f447846d3 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.export_helper.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.export_helper.js @@ -1,8 +1,8 @@ import { getWindow } from '../../core/utils/window'; import gridCoreUtils from '../../__internal/grids/grid_core/m_utils'; import { isDate, isDefined, isNumeric } from '../../core/utils/type'; -import dateLocalization from '../../localization/date'; -import numberLocalization from '../../localization/number'; +import dateLocalization from '../../common/core/localization/date'; +import numberLocalization from '../../common/core/localization/number'; const window = getWindow(); const TREELIST_EMPTY_SPACE = 'dx-treelist-empty-space'; diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.helper.js b/packages/devextreme/js/ui/gantt/ui.gantt.helper.js index 8fc9506795bf..e9895f0502d6 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.helper.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.helper.js @@ -1,6 +1,6 @@ import { compileGetter, compileSetter } from '../../core/utils/data'; import { isFunction } from '../../core/utils/type'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; export const GanttHelper = { diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.treelist.js b/packages/devextreme/js/ui/gantt/ui.gantt.treelist.js index 4e51cb597724..6523f8585c10 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.treelist.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.treelist.js @@ -4,8 +4,8 @@ import dxTreeList from '../tree_list'; import { getBoundingRect } from '../../core/utils/position'; import { isDefined } from '../../core/utils/type'; import { GanttHelper } from './ui.gantt.helper'; -import { DataSource } from '../../data/data_source/data_source'; -import ArrayStore from '../../data/array_store'; +import DataSource from '../../common/data/data_source'; +import ArrayStore from '../../common/data/array_store'; import { compileGetter } from '../../core/utils/data'; import { GanttTreeListNodesState } from './ui.gantt.treelist.nodes_state'; diff --git a/packages/devextreme/js/ui/gantt/ui.gantt.view.js b/packages/devextreme/js/ui/gantt/ui.gantt.view.js index 837d04d55a18..27fe3aaabde1 100644 --- a/packages/devextreme/js/ui/gantt/ui.gantt.view.js +++ b/packages/devextreme/js/ui/gantt/ui.gantt.view.js @@ -2,12 +2,12 @@ import $ from '../../core/renderer'; import Widget from '../widget/ui.widget'; import { getGanttViewCore } from './gantt_importer'; import { TaskAreaContainer } from './ui.gantt.task.area.container'; -import dateLocalization from '../../localization/date'; +import dateLocalization from '../../common/core/localization/date'; import { isDefined } from '../../core/utils/type'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import { format } from '../../core/utils/string'; -import coreLocalization from '../../localization/core'; -import { requestAnimationFrame, cancelAnimationFrame } from '../../animation/frame'; +import coreLocalization from '../../common/core/localization/core'; +import { requestAnimationFrame, cancelAnimationFrame } from '../../common/core/animation/frame'; const visualStateKey = 'visualState'; diff --git a/packages/devextreme/js/ui/html_editor.d.ts b/packages/devextreme/js/ui/html_editor.d.ts index 4f582708162a..937cd154e6d4 100644 --- a/packages/devextreme/js/ui/html_editor.d.ts +++ b/packages/devextreme/js/ui/html_editor.d.ts @@ -6,19 +6,16 @@ import { import { template, -} from '../core/templates/template'; + EditorStyle, + ToolbarItemLocation, +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; - -import { - EditorStyle, - ToolbarItemLocation, -} from '../common'; +} from '../common/core/events'; import Editor, { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/list.d.ts b/packages/devextreme/js/ui/list.d.ts index bebab8fd2f12..e35daf99c07d 100644 --- a/packages/devextreme/js/ui/list.d.ts +++ b/packages/devextreme/js/ui/list.d.ts @@ -6,7 +6,11 @@ import { import { template, -} from '../core/templates/template'; + SelectAllMode, + ScrollbarMode, + PageLoadMode, + SingleMultipleAllOrNone, +} from '../common'; import { DxPromise, @@ -18,7 +22,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, @@ -35,13 +39,6 @@ import { SearchBoxMixinOptions, } from './widget/ui.search_box_mixin'; -import { - SelectAllMode, - ScrollbarMode, - PageLoadMode, - SingleMultipleAllOrNone, -} from '../common'; - export { SelectAllMode, ScrollbarMode, diff --git a/packages/devextreme/js/ui/load_indicator.d.ts b/packages/devextreme/js/ui/load_indicator.d.ts index 59187c5bece3..4836f99b6b8c 100644 --- a/packages/devextreme/js/ui/load_indicator.d.ts +++ b/packages/devextreme/js/ui/load_indicator.d.ts @@ -2,7 +2,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/load_panel.d.ts b/packages/devextreme/js/ui/load_panel.d.ts index 44350522bd43..60b29374ad30 100644 --- a/packages/devextreme/js/ui/load_panel.d.ts +++ b/packages/devextreme/js/ui/load_panel.d.ts @@ -7,15 +7,12 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { AnimationConfig, -} from '../animation/fx'; - -import { PositionConfig, -} from '../animation/position'; +} from '../common/core/animation'; import dxOverlay, { dxOverlayAnimation, diff --git a/packages/devextreme/js/ui/lookup.d.ts b/packages/devextreme/js/ui/lookup.d.ts index 934a12d0c8d7..6da51449f727 100644 --- a/packages/devextreme/js/ui/lookup.d.ts +++ b/packages/devextreme/js/ui/lookup.d.ts @@ -5,7 +5,9 @@ import { import { template, -} from '../core/templates/template'; + ApplyValueMode, + PageLoadMode, +} from '../common'; import { EventInfo, @@ -13,7 +15,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import { ValueChangedInfo, @@ -36,11 +38,6 @@ import { TitleRenderedInfo, } from './popup'; -import { - ApplyValueMode, - PageLoadMode, -} from '../common'; - export { ApplyValueMode, PageLoadMode, diff --git a/packages/devextreme/js/ui/map.d.ts b/packages/devextreme/js/ui/map.d.ts index 29899a7c5388..159188f2b6a6 100644 --- a/packages/devextreme/js/ui/map.d.ts +++ b/packages/devextreme/js/ui/map.d.ts @@ -7,7 +7,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/menu.d.ts b/packages/devextreme/js/ui/menu.d.ts index 5eda089cabe1..4b9f0089f3b0 100644 --- a/packages/devextreme/js/ui/menu.d.ts +++ b/packages/devextreme/js/ui/menu.d.ts @@ -10,7 +10,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/multi_view.d.ts b/packages/devextreme/js/ui/multi_view.d.ts index 0e08bdbdd4f8..57a5d9b137e3 100644 --- a/packages/devextreme/js/ui/multi_view.d.ts +++ b/packages/devextreme/js/ui/multi_view.d.ts @@ -6,7 +6,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/number_box.d.ts b/packages/devextreme/js/ui/number_box.d.ts index bc9fb5903a7b..60a423be1d5c 100644 --- a/packages/devextreme/js/ui/number_box.d.ts +++ b/packages/devextreme/js/ui/number_box.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { TextEditorButton, diff --git a/packages/devextreme/js/ui/overlay.d.ts b/packages/devextreme/js/ui/overlay.d.ts index e27a254f215c..7638b70e5a25 100644 --- a/packages/devextreme/js/ui/overlay.d.ts +++ b/packages/devextreme/js/ui/overlay.d.ts @@ -1,6 +1,6 @@ import { AnimationConfig, -} from '../animation/fx'; +} from '../common/core/animation'; import { UserDefinedElement, @@ -9,17 +9,18 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { DxPromise, } from '../core/utils/deferred'; import { - DxEvent, Cancelable, EventInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/pagination.d.ts b/packages/devextreme/js/ui/pagination.d.ts index 6024a7aef341..20b0c1bf1256 100644 --- a/packages/devextreme/js/ui/pagination.d.ts +++ b/packages/devextreme/js/ui/pagination.d.ts @@ -1,11 +1,55 @@ import Widget, { WidgetOptions } from './widget/ui.widget'; import { - PagerBase, + DisplayMode, } from '../common'; export { DisplayMode, -} from '../common'; +}; + +/** + * @docid + * @hidden + * @namespace DevExpress.common + */ +export type PagerBase = { + /** + * @docid + * @public + * @default "adaptive" + */ + displayMode?: DisplayMode; + /** + * @docid + * @public + * @default "Page {0} of {1} ({2} items)" + */ + infoText?: string; + /** + * @docid + * @public + * @default false + */ + showInfo?: boolean; + /** + * @docid + * @public + * @default false + */ + showNavigationButtons?: boolean; + /** + * @docid + * @public + * @default false + */ + showPageSizeSelector?: boolean; + /** + * @docid + * @public + * @default "Page Navigation" + */ + label?: string; + }; /** * @public diff --git a/packages/devextreme/js/ui/pivot_grid.d.ts b/packages/devextreme/js/ui/pivot_grid.d.ts index cda99d3eaed4..9c8840a8b30e 100644 --- a/packages/devextreme/js/ui/pivot_grid.d.ts +++ b/packages/devextreme/js/ui/pivot_grid.d.ts @@ -8,7 +8,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import PivotGridDataSource, { Field, diff --git a/packages/devextreme/js/ui/pivot_grid/data_source.d.ts b/packages/devextreme/js/ui/pivot_grid/data_source.d.ts index ae1f66d4fffd..f6cb506ead28 100644 --- a/packages/devextreme/js/ui/pivot_grid/data_source.d.ts +++ b/packages/devextreme/js/ui/pivot_grid/data_source.d.ts @@ -3,11 +3,10 @@ import { } from '../../core/utils/deferred'; import { + DataSource, Store, StoreOptions, -} from '../../data/index'; - -import DataSource from '../../data/data_source'; +} from '../../common/data'; import { Format, diff --git a/packages/devextreme/js/ui/pivot_grid_field_chooser.d.ts b/packages/devextreme/js/ui/pivot_grid_field_chooser.d.ts index 349e043f27dd..9b77bda0bac5 100644 --- a/packages/devextreme/js/ui/pivot_grid_field_chooser.d.ts +++ b/packages/devextreme/js/ui/pivot_grid_field_chooser.d.ts @@ -1,9 +1,10 @@ import { - DxEvent, EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import PivotGridDataSource, { Field, diff --git a/packages/devextreme/js/ui/popover.d.ts b/packages/devextreme/js/ui/popover.d.ts index 8b239591f5c0..52e80101f630 100644 --- a/packages/devextreme/js/ui/popover.d.ts +++ b/packages/devextreme/js/ui/popover.d.ts @@ -1,10 +1,7 @@ import { AnimationConfig, -} from '../animation/fx'; - -import { PositionConfig, -} from '../animation/position'; +} from '../common/core/animation'; import { UserDefinedElement, @@ -15,12 +12,13 @@ import { } from '../core/utils/deferred'; import { - DxEvent, Cancelable, EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import dxPopup, { dxPopupAnimation, diff --git a/packages/devextreme/js/ui/popup.d.ts b/packages/devextreme/js/ui/popup.d.ts index 692a641420fe..c97792d8769c 100644 --- a/packages/devextreme/js/ui/popup.d.ts +++ b/packages/devextreme/js/ui/popup.d.ts @@ -1,10 +1,7 @@ import { AnimationConfig, -} from '../animation/fx'; - -import { PositionConfig, -} from '../animation/position'; +} from '../common/core/animation'; import { UserDefinedElement, @@ -13,7 +10,10 @@ import { import { template, -} from '../core/templates/template'; + PositionAlignment, + ToolbarItemLocation, + ToolbarItemComponent, +} from '../common'; import { Cancelable, @@ -21,18 +21,12 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Item as dxToolbarItem, } from './toolbar'; -import { - PositionAlignment, - ToolbarItemLocation, - ToolbarItemComponent, -} from '../common'; - import dxOverlay, { dxOverlayAnimation, dxOverlayOptions, diff --git a/packages/devextreme/js/ui/progress_bar.d.ts b/packages/devextreme/js/ui/progress_bar.d.ts index e840b6ce2de1..6c308b0c7b12 100644 --- a/packages/devextreme/js/ui/progress_bar.d.ts +++ b/packages/devextreme/js/ui/progress_bar.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/radio_group.d.ts b/packages/devextreme/js/ui/radio_group.d.ts index 699adbdde305..e93f9b414096 100644 --- a/packages/devextreme/js/ui/radio_group.d.ts +++ b/packages/devextreme/js/ui/radio_group.d.ts @@ -1,11 +1,11 @@ -import DataSource from '../data/data_source'; +import { DataSource } from '../common/data'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Editor, { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/range_slider.d.ts b/packages/devextreme/js/ui/range_slider.d.ts index a0e8e4167909..3eef9e2964b3 100644 --- a/packages/devextreme/js/ui/range_slider.d.ts +++ b/packages/devextreme/js/ui/range_slider.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/recurrence_editor.d.ts b/packages/devextreme/js/ui/recurrence_editor.d.ts index dc4fa28f503c..aacb84fefb02 100644 --- a/packages/devextreme/js/ui/recurrence_editor.d.ts +++ b/packages/devextreme/js/ui/recurrence_editor.d.ts @@ -7,7 +7,7 @@ import { InitializedEventInfo, ChangedOptionInfo, NativeEventInfo, -} from '../events/index'; +} from '../common/core/events'; /** * @docid _ui_recurrence_editor_ContentReadyEvent diff --git a/packages/devextreme/js/ui/resizable.d.ts b/packages/devextreme/js/ui/resizable.d.ts index d8f16a6a773a..fdf14ed727a2 100644 --- a/packages/devextreme/js/ui/resizable.d.ts +++ b/packages/devextreme/js/ui/resizable.d.ts @@ -8,7 +8,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; /** @public */ export type ResizeHandle = 'bottom' | 'left' | 'right' | 'top' | 'all'; diff --git a/packages/devextreme/js/ui/responsive_box.d.ts b/packages/devextreme/js/ui/responsive_box.d.ts index ce2723a4af14..bbe3f4dfc17c 100644 --- a/packages/devextreme/js/ui/responsive_box.d.ts +++ b/packages/devextreme/js/ui/responsive_box.d.ts @@ -6,7 +6,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index 8773c5d31487..aff8b8ed9416 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -5,18 +5,22 @@ import { import { template, -} from '../core/templates/template'; + FirstDayOfWeek, + Orientation, + ScrollMode, +} from '../common'; import DataSource, { DataSourceLike } from '../data/data_source'; import { - DxEvent, EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, Cancelable, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import { CollectionWidgetItem, @@ -33,12 +37,6 @@ import Widget, { WidgetOptions, } from './widget/ui.widget'; -import { - FirstDayOfWeek, - Orientation, - ScrollMode, -} from '../common'; - interface AppointmentDraggingEvent { readonly component: dxScheduler; readonly event?: DxEvent; diff --git a/packages/devextreme/js/ui/scroll_view.d.ts b/packages/devextreme/js/ui/scroll_view.d.ts index c108118780e4..00bc3601f549 100644 --- a/packages/devextreme/js/ui/scroll_view.d.ts +++ b/packages/devextreme/js/ui/scroll_view.d.ts @@ -6,7 +6,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import dxScrollable, { dxScrollableOptions, diff --git a/packages/devextreme/js/ui/scroll_view/ui.scrollable.d.ts b/packages/devextreme/js/ui/scroll_view/ui.scrollable.d.ts index d07682976007..9600f8cc8f27 100644 --- a/packages/devextreme/js/ui/scroll_view/ui.scrollable.d.ts +++ b/packages/devextreme/js/ui/scroll_view/ui.scrollable.d.ts @@ -13,7 +13,7 @@ import { import { NativeEventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import { ScrollDirection, diff --git a/packages/devextreme/js/ui/select_box.d.ts b/packages/devextreme/js/ui/select_box.d.ts index 3c2745db0b62..b226c35c2494 100644 --- a/packages/devextreme/js/ui/select_box.d.ts +++ b/packages/devextreme/js/ui/select_box.d.ts @@ -5,7 +5,7 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { EventInfo, @@ -13,7 +13,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import { DropDownButtonTemplateDataModel, diff --git a/packages/devextreme/js/ui/shared/accessibility.js b/packages/devextreme/js/ui/shared/accessibility.js index d238cc56fe37..c889c887619a 100644 --- a/packages/devextreme/js/ui/shared/accessibility.js +++ b/packages/devextreme/js/ui/shared/accessibility.js @@ -1,6 +1,6 @@ import $ from '../../core/renderer'; -import eventsEngine from '../../events/core/events_engine'; -import { normalizeKeyName } from '../../events/utils/index'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import { normalizeKeyName } from '../../common/core/events/utils/index'; import { extend } from '../../core/utils/extend'; import domAdapter from '../../core/dom_adapter'; import { noop } from '../../core/utils/common'; diff --git a/packages/devextreme/js/ui/shared/ui.editor_factory_mixin.js b/packages/devextreme/js/ui/shared/ui.editor_factory_mixin.js index bc73c09becb3..e2f693daa68c 100644 --- a/packages/devextreme/js/ui/shared/ui.editor_factory_mixin.js +++ b/packages/devextreme/js/ui/shared/ui.editor_factory_mixin.js @@ -1,5 +1,5 @@ import $ from '../../core/renderer'; -import eventsEngine from '../../events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; import { isDefined, isObject, isFunction } from '../../core/utils/type'; import variableWrapper from '../../core/utils/variable_wrapper'; import { compileGetter } from '../../core/utils/data'; @@ -7,8 +7,8 @@ import browser from '../../core/utils/browser'; import { extend } from '../../core/utils/extend'; import devices from '../../core/devices'; import { getPublicElement } from '../../core/element'; -import { normalizeDataSourceOptions } from '../../data/data_source/utils'; -import { normalizeKeyName } from '../../events/utils/index'; +import { normalizeDataSourceOptions } from '../../common/data/data_source/utils'; +import { normalizeKeyName } from '../../common/core/events/utils/index'; const { isWrapped } = variableWrapper; diff --git a/packages/devextreme/js/ui/slider.d.ts b/packages/devextreme/js/ui/slider.d.ts index 8842dffcae6d..42b09d9de9ab 100644 --- a/packages/devextreme/js/ui/slider.d.ts +++ b/packages/devextreme/js/ui/slider.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/sortable.d.ts b/packages/devextreme/js/ui/sortable.d.ts index b203d8994c6f..09c68f791d68 100644 --- a/packages/devextreme/js/ui/sortable.d.ts +++ b/packages/devextreme/js/ui/sortable.d.ts @@ -7,27 +7,25 @@ import { import { template, -} from '../core/templates/template'; + DragHighlight, + Orientation, +} from '../common'; import { - DxEvent, Cancelable, EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import dxDraggable, { DraggableBase, DraggableBaseOptions, } from './draggable'; -import { - DragHighlight, - Orientation, -} from '../common'; - export { DragHighlight, Orientation, diff --git a/packages/devextreme/js/ui/speed_dial_action.d.ts b/packages/devextreme/js/ui/speed_dial_action.d.ts index dbf290e61954..b71f1026f344 100644 --- a/packages/devextreme/js/ui/speed_dial_action.d.ts +++ b/packages/devextreme/js/ui/speed_dial_action.d.ts @@ -7,7 +7,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Widget, { WidgetOptions, diff --git a/packages/devextreme/js/ui/splitter.d.ts b/packages/devextreme/js/ui/splitter.d.ts index afaeb0d96b12..b59317bc37f9 100644 --- a/packages/devextreme/js/ui/splitter.d.ts +++ b/packages/devextreme/js/ui/splitter.d.ts @@ -8,7 +8,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/splitter_control.js b/packages/devextreme/js/ui/splitter_control.js index 340a5f9e01d1..1d1a53df352a 100644 --- a/packages/devextreme/js/ui/splitter_control.js +++ b/packages/devextreme/js/ui/splitter_control.js @@ -1,10 +1,10 @@ import $ from '../core/renderer'; import Widget from './widget/ui.widget'; import domAdapter from '../core/dom_adapter'; -import eventsEngine from '../events/core/events_engine'; -import pointerEvents from '../events/pointer'; +import eventsEngine from '../common/core/events/core/events_engine'; +import pointerEvents from '../common/core/events/pointer'; import { getWindow } from '../core/utils/window'; -import { addNamespace } from '../events/utils/index'; +import { addNamespace } from '../common/core/events/utils/index'; import Guid from '../core/guid'; const window = getWindow(); diff --git a/packages/devextreme/js/ui/switch.d.ts b/packages/devextreme/js/ui/switch.d.ts index 4969ab64ef37..0abcc3da551b 100644 --- a/packages/devextreme/js/ui/switch.d.ts +++ b/packages/devextreme/js/ui/switch.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import Editor, { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/tab_panel.d.ts b/packages/devextreme/js/ui/tab_panel.d.ts index df996cb013b9..8d013d39d9e4 100644 --- a/packages/devextreme/js/ui/tab_panel.d.ts +++ b/packages/devextreme/js/ui/tab_panel.d.ts @@ -6,7 +6,10 @@ import { import { template, -} from '../core/templates/template'; + Position, + TabsIconPosition, + TabsStyle, +} from '../common'; import { EventInfo, @@ -14,13 +17,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; - -import { - Position, - TabsIconPosition, - TabsStyle, -} from '../common'; +} from '../common/core/events'; import CollectionWidget, { SelectionChangeInfo, diff --git a/packages/devextreme/js/ui/tabs.d.ts b/packages/devextreme/js/ui/tabs.d.ts index 97decc7aaeed..8b4714f2f582 100644 --- a/packages/devextreme/js/ui/tabs.d.ts +++ b/packages/devextreme/js/ui/tabs.d.ts @@ -6,7 +6,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/tag_box.d.ts b/packages/devextreme/js/ui/tag_box.d.ts index 81777a0c0465..bcd65388f928 100644 --- a/packages/devextreme/js/ui/tag_box.d.ts +++ b/packages/devextreme/js/ui/tag_box.d.ts @@ -5,7 +5,9 @@ import { import { template, -} from '../core/templates/template'; + ApplyValueMode, + SelectAllMode, +} from '../common'; import { Cancelable, @@ -14,7 +16,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import { SelectionChangeInfo, @@ -33,11 +35,6 @@ import dxSelectBox, { CustomItemCreatingInfo, } from './select_box'; -import { - ApplyValueMode, - SelectAllMode, -} from '../common'; - /** * @docid _ui_tag_box_ChangeEvent * @public diff --git a/packages/devextreme/js/ui/text_area.d.ts b/packages/devextreme/js/ui/text_area.d.ts index 60ae24793f92..e1409a3a8af4 100644 --- a/packages/devextreme/js/ui/text_area.d.ts +++ b/packages/devextreme/js/ui/text_area.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/text_box.d.ts b/packages/devextreme/js/ui/text_box.d.ts index 853df90583e8..75762ea2ce4c 100644 --- a/packages/devextreme/js/ui/text_box.d.ts +++ b/packages/devextreme/js/ui/text_box.d.ts @@ -3,7 +3,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { ValueChangedInfo, diff --git a/packages/devextreme/js/ui/text_box/ui.text_editor.base.d.ts b/packages/devextreme/js/ui/text_box/ui.text_editor.base.d.ts index 323cf3ce58ed..4523d23133dc 100644 --- a/packages/devextreme/js/ui/text_box/ui.text_editor.base.d.ts +++ b/packages/devextreme/js/ui/text_box/ui.text_editor.base.d.ts @@ -1,6 +1,6 @@ import { NativeEventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import dxButton from '../button'; diff --git a/packages/devextreme/js/ui/tile_view.d.ts b/packages/devextreme/js/ui/tile_view.d.ts index 14e6acc8d1c2..1fbf822124e1 100644 --- a/packages/devextreme/js/ui/tile_view.d.ts +++ b/packages/devextreme/js/ui/tile_view.d.ts @@ -6,7 +6,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/toast.d.ts b/packages/devextreme/js/ui/toast.d.ts index 7f124dbe5912..32604009d8bc 100644 --- a/packages/devextreme/js/ui/toast.d.ts +++ b/packages/devextreme/js/ui/toast.d.ts @@ -1,18 +1,16 @@ import { AnimationConfig, -} from '../animation/fx'; - -import { PositionConfig, -} from '../animation/position'; +} from '../common/core/animation'; import { - DxEvent, Cancelable, EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; + +import { DxEvent } from '../events'; import dxOverlay, { dxOverlayAnimation, diff --git a/packages/devextreme/js/ui/toolbar.d.ts b/packages/devextreme/js/ui/toolbar.d.ts index c44b6eaa6a52..33512ec49a23 100644 --- a/packages/devextreme/js/ui/toolbar.d.ts +++ b/packages/devextreme/js/ui/toolbar.d.ts @@ -6,7 +6,9 @@ import { import { template, -} from '../core/templates/template'; + ToolbarItemLocation, + ToolbarItemComponent, +} from '../common'; import { EventInfo, @@ -14,12 +16,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; - -import { - ToolbarItemLocation, - ToolbarItemComponent, -} from '../common'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/tooltip.d.ts b/packages/devextreme/js/ui/tooltip.d.ts index 2f815b1dbfe0..6397deb27f01 100644 --- a/packages/devextreme/js/ui/tooltip.d.ts +++ b/packages/devextreme/js/ui/tooltip.d.ts @@ -3,7 +3,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import dxPopover, { dxPopoverOptions, diff --git a/packages/devextreme/js/ui/tree_list.d.ts b/packages/devextreme/js/ui/tree_list.d.ts index 25a8ca704947..65c5509ce3ca 100644 --- a/packages/devextreme/js/ui/tree_list.d.ts +++ b/packages/devextreme/js/ui/tree_list.d.ts @@ -6,13 +6,18 @@ import { import { template, -} from '../core/templates/template'; + DataStructure, + Mode, + ScrollMode, + SingleMultipleOrNone, + ToolbarItemLocation, +} from '../common'; import { DxPromise, } from '../core/utils/deferred'; -import DataSource from '../data/data_source'; +import { DataSource } from '../common/data'; import { Cancelable, @@ -20,15 +25,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; - -import { - DataStructure, - Mode, - ScrollMode, - SingleMultipleOrNone, - ToolbarItemLocation, -} from '../common'; +} from '../common/core/events'; import { AdaptiveDetailRowPreparingInfo, diff --git a/packages/devextreme/js/ui/tree_view.d.ts b/packages/devextreme/js/ui/tree_view.d.ts index c9415f478a43..4c182b047d18 100644 --- a/packages/devextreme/js/ui/tree_view.d.ts +++ b/packages/devextreme/js/ui/tree_view.d.ts @@ -12,7 +12,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { CollectionWidgetItem, diff --git a/packages/devextreme/js/ui/validation_group.d.ts b/packages/devextreme/js/ui/validation_group.d.ts index 5e614e2ba787..4a5a361a1f03 100644 --- a/packages/devextreme/js/ui/validation_group.d.ts +++ b/packages/devextreme/js/ui/validation_group.d.ts @@ -10,7 +10,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { AsyncRule, diff --git a/packages/devextreme/js/ui/validation_summary.d.ts b/packages/devextreme/js/ui/validation_summary.d.ts index 6b51ce56c76a..ed2e75a213ee 100644 --- a/packages/devextreme/js/ui/validation_summary.d.ts +++ b/packages/devextreme/js/ui/validation_summary.d.ts @@ -4,7 +4,7 @@ import { InitializedEventInfo, ChangedOptionInfo, ItemInfo, -} from '../events/index'; +} from '../common/core/events'; import CollectionWidget, { CollectionWidgetOptions, diff --git a/packages/devextreme/js/ui/validator.d.ts b/packages/devextreme/js/ui/validator.d.ts index cba624c8287a..8cc8a58c6628 100644 --- a/packages/devextreme/js/ui/validator.d.ts +++ b/packages/devextreme/js/ui/validator.d.ts @@ -10,7 +10,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { AsyncRule, diff --git a/packages/devextreme/js/ui/widget/template.d.ts b/packages/devextreme/js/ui/widget/template.d.ts index 5118abe3c78a..d5f89de338ca 100644 --- a/packages/devextreme/js/ui/widget/template.d.ts +++ b/packages/devextreme/js/ui/widget/template.d.ts @@ -1,11 +1,12 @@ -import { +import type { template, -} from '../../core/templates/template'; +} from '../../common'; /** * @docid ui.template * @namespace DevExpress.ui * @deprecated + * @type object * @public */ export type Template = template; diff --git a/packages/devextreme/js/ui/widget/ui.search_box_mixin.js b/packages/devextreme/js/ui/widget/ui.search_box_mixin.js index c386734ad875..4491d72a5413 100644 --- a/packages/devextreme/js/ui/widget/ui.search_box_mixin.js +++ b/packages/devextreme/js/ui/widget/ui.search_box_mixin.js @@ -1,6 +1,6 @@ import $ from '../../core/renderer'; import { extend } from '../../core/utils/extend'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import errors from '../widget/ui.errors'; import { Deferred } from '../../core/utils/deferred'; import { stubComponent } from '../../core/utils/stubs'; diff --git a/packages/devextreme/js/ui/widget/ui.widget.d.ts b/packages/devextreme/js/ui/widget/ui.widget.d.ts index 87fe3bcd01f8..b193f5e45f29 100644 --- a/packages/devextreme/js/ui/widget/ui.widget.d.ts +++ b/packages/devextreme/js/ui/widget/ui.widget.d.ts @@ -5,7 +5,7 @@ import DOMComponent, { import { EventInfo, -} from '../../events/index'; +} from '../../common/core/events'; /** * @namespace DevExpress.ui diff --git a/packages/devextreme/js/utils.d.ts b/packages/devextreme/js/utils.d.ts index 21d9b4461ad5..83af02c7c84b 100644 --- a/packages/devextreme/js/utils.d.ts +++ b/packages/devextreme/js/utils.d.ts @@ -1,15 +1,4 @@ -/** - * @docid Utils.compileGetter - * @publicName compileGetter(expr) - * @namespace DevExpress.data.utils - * @public - */ -export function compileGetter(expr: string | Array): Function; - -/** - * @docid Utils.compileSetter - * @publicName compileSetter(expr) - * @namespace DevExpress.data.utils - * @public - */ -export function compileSetter(expr: string | Array): Function; +export { + compileGetter, + compileSetter, +} from './common/data'; diff --git a/packages/devextreme/js/utils.js b/packages/devextreme/js/utils.js index 1733a2aedeb2..39ce31a3a29a 100644 --- a/packages/devextreme/js/utils.js +++ b/packages/devextreme/js/utils.js @@ -1,7 +1 @@ -import { compileGetter, compileSetter } from './core/utils/data'; - - -export { - compileGetter, - compileSetter -}; +export { compileGetter, compileSetter } from './common/data'; diff --git a/packages/devextreme/js/viz/bar_gauge.d.ts b/packages/devextreme/js/viz/bar_gauge.d.ts index 0b103253c679..197ba14b4044 100644 --- a/packages/devextreme/js/viz/bar_gauge.d.ts +++ b/packages/devextreme/js/viz/bar_gauge.d.ts @@ -5,13 +5,13 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, diff --git a/packages/devextreme/js/viz/bullet.d.ts b/packages/devextreme/js/viz/bullet.d.ts index bcbd6b775051..7f3f9fde76b0 100644 --- a/packages/devextreme/js/viz/bullet.d.ts +++ b/packages/devextreme/js/viz/bullet.d.ts @@ -2,7 +2,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { FileSavingEventInfo, diff --git a/packages/devextreme/js/viz/chart.d.ts b/packages/devextreme/js/viz/chart.d.ts index 6ca37fe59ef4..b31838092ba3 100644 --- a/packages/devextreme/js/viz/chart.d.ts +++ b/packages/devextreme/js/viz/chart.d.ts @@ -9,7 +9,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, @@ -17,7 +17,11 @@ import { import { template, -} from '../core/templates/template'; + SingleOrMultiple, + HorizontalAlignment, + Position, + VerticalAlignment, +} from '../common'; import { BaseChart, @@ -39,13 +43,6 @@ import { IncidentInfo, } from './core/base_widget'; -import { - SingleOrMultiple, - HorizontalAlignment, - Position, - VerticalAlignment, -} from '../common'; - import { ArgumentAxisHoverMode, AxisScaleType, diff --git a/packages/devextreme/js/viz/chart_components/base_chart.d.ts b/packages/devextreme/js/viz/chart_components/base_chart.d.ts index a8f58fe68b74..d1221eb46190 100644 --- a/packages/devextreme/js/viz/chart_components/base_chart.d.ts +++ b/packages/devextreme/js/viz/chart_components/base_chart.d.ts @@ -5,14 +5,15 @@ import { import { template, -} from '../../core/templates/template'; + SingleOrMultiple, +} from '../../common'; import DataSource, { DataSourceLike } from '../../data/data_source'; import { EventInfo, NativeEventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import { Format, @@ -44,10 +45,6 @@ import { PaletteExtensionMode, } from '../../common/charts'; -import { - SingleOrMultiple, -} from '../../common'; - /** * @docid * @hidden diff --git a/packages/devextreme/js/viz/chart_components/scroll_bar.js b/packages/devextreme/js/viz/chart_components/scroll_bar.js index c94223ce2a0b..cb0a054dfe4b 100644 --- a/packages/devextreme/js/viz/chart_components/scroll_bar.js +++ b/packages/devextreme/js/viz/chart_components/scroll_bar.js @@ -1,10 +1,10 @@ -import eventsEngine from '../../events/core/events_engine'; -import { fireEvent } from '../../events/utils/index'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import { fireEvent } from '../../common/core/events/utils/index'; import { extend } from '../../core/utils/extend'; import { Translator2D } from '../translators/translator2d'; import { isDefined } from '../../core/utils/type'; import { noop } from '../../core/utils/common'; -import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../events/drag'; +import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../common/core/events/drag'; const _min = Math.min; const _max = Math.max; diff --git a/packages/devextreme/js/viz/chart_components/shutter_zoom.js b/packages/devextreme/js/viz/chart_components/shutter_zoom.js index 97b0becfb80a..d58f07eacd99 100644 --- a/packages/devextreme/js/viz/chart_components/shutter_zoom.js +++ b/packages/devextreme/js/viz/chart_components/shutter_zoom.js @@ -1,4 +1,4 @@ -import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../events/drag'; +import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../common/core/events/drag'; const SHUTTER_EVENTS_NS = '.shutter-zoom'; const DRAG_START_EVENT_NAME = dragEventStart + SHUTTER_EVENTS_NS; const DRAG_UPDATE_EVENT_NAME = dragEventMove + SHUTTER_EVENTS_NS; diff --git a/packages/devextreme/js/viz/chart_components/tracker.js b/packages/devextreme/js/viz/chart_components/tracker.js index c196126e275b..5a4493c32e7d 100644 --- a/packages/devextreme/js/viz/chart_components/tracker.js +++ b/packages/devextreme/js/viz/chart_components/tracker.js @@ -1,12 +1,12 @@ import domAdapter from '../../core/dom_adapter'; -import eventsEngine from '../../events/core/events_engine'; -import { name as clickEventName } from '../../events/click'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import { name as clickEventName } from '../../common/core/events/click'; import { extend } from '../../core/utils/extend'; import { each as _each } from '../../core/utils/iterator'; import consts from '../components/consts'; import { getDistance, pointInCanvas as inCanvas, normalizeEnum as _normalizeEnum } from '../core/utils'; -import pointerEvents from '../../events/pointer'; -import { addNamespace } from '../../events/utils/index'; +import pointerEvents from '../../common/core/events/pointer'; +import { addNamespace } from '../../common/core/events/utils/index'; import { isDefined } from '../../core/utils/type'; import { noop as _noop } from '../../core/utils/common'; import errors from '../../core/errors'; diff --git a/packages/devextreme/js/viz/chart_components/zoom_and_pan.js b/packages/devextreme/js/viz/chart_components/zoom_and_pan.js index 3d9c68eaefeb..c6493f5a425d 100644 --- a/packages/devextreme/js/viz/chart_components/zoom_and_pan.js +++ b/packages/devextreme/js/viz/chart_components/zoom_and_pan.js @@ -2,9 +2,9 @@ import { isDefined } from '../../core/utils/type'; import { extend } from '../../core/utils/extend'; import { normalizeEnum, getVizRangeObject } from '../core/utils'; -import { name as wheelEvent } from '../../events/core/wheel'; -import * as transformEvents from '../../events/transform'; -import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../events/drag'; +import { name as wheelEvent } from '../../common/core/events/core/wheel'; +import * as transformEvents from '../../common/core/events/transform'; +import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../common/core/events/drag'; const EVENTS_NS = '.zoomAndPanNS'; diff --git a/packages/devextreme/js/viz/circular_gauge.d.ts b/packages/devextreme/js/viz/circular_gauge.d.ts index f1805c2f40b2..61bf9b612030 100644 --- a/packages/devextreme/js/viz/circular_gauge.d.ts +++ b/packages/devextreme/js/viz/circular_gauge.d.ts @@ -6,7 +6,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { FileSavingEventInfo, @@ -16,7 +16,7 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { BaseGauge, diff --git a/packages/devextreme/js/viz/components/tracker.js b/packages/devextreme/js/viz/components/tracker.js index 4d586ec57b6d..c08f04c6e8e7 100644 --- a/packages/devextreme/js/viz/components/tracker.js +++ b/packages/devextreme/js/viz/components/tracker.js @@ -1,8 +1,8 @@ -import { eventData as _eventData } from '../../events/utils/index'; +import { eventData as _eventData } from '../../common/core/events/utils/index'; import domAdapter from '../../core/dom_adapter'; -import { name as clickEventName } from '../../events/click'; -import pointer from '../../events/pointer'; -import eventsEngine from '../../events/core/events_engine'; +import { name as clickEventName } from '../../common/core/events/click'; +import pointer from '../../common/core/events/pointer'; +import eventsEngine from '../../common/core/events/core/events_engine'; const downPointerEventName = pointer.down; const movePointerEventName = pointer.move; diff --git a/packages/devextreme/js/viz/core/annotations.js b/packages/devextreme/js/viz/core/annotations.js index cbd5cfcc92fb..100b8afc6d4f 100644 --- a/packages/devextreme/js/viz/core/annotations.js +++ b/packages/devextreme/js/viz/core/annotations.js @@ -4,10 +4,10 @@ import { Tooltip } from '../core/tooltip'; import { extend } from '../../core/utils/extend'; import { patchFontOptions } from './utils'; import { Plaque } from './plaque'; -import pointerEvents from '../../events/pointer'; -import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../events/drag'; -import { addNamespace } from '../../events/utils/index'; -import eventsEngine from '../../events/core/events_engine'; +import pointerEvents from '../../common/core/events/pointer'; +import { start as dragEventStart, move as dragEventMove, end as dragEventEnd } from '../../common/core/events/drag'; +import { addNamespace } from '../../common/core/events/utils/index'; +import eventsEngine from '../../common/core/events/core/events_engine'; const getDocument = domAdapter.getDocument; diff --git a/packages/devextreme/js/viz/core/base_widget.d.ts b/packages/devextreme/js/viz/core/base_widget.d.ts index f38d30aedac1..a7fc2975fbec 100644 --- a/packages/devextreme/js/viz/core/base_widget.d.ts +++ b/packages/devextreme/js/viz/core/base_widget.d.ts @@ -10,7 +10,7 @@ import { import { Cancelable, EventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import { Format, diff --git a/packages/devextreme/js/viz/core/data_source.js b/packages/devextreme/js/viz/core/data_source.js index 5f33a3c1ee9c..27518ef780e8 100644 --- a/packages/devextreme/js/viz/core/data_source.js +++ b/packages/devextreme/js/viz/core/data_source.js @@ -1,5 +1,5 @@ import { noop } from '../../core/utils/common'; -import DataHelperMixin from '../../data_helper'; +import DataHelperMixin from '../../common/data/data_helper'; const postCtor = DataHelperMixin.postCtor; let name; const members = { diff --git a/packages/devextreme/js/viz/core/export.js b/packages/devextreme/js/viz/core/export.js index 3cfb800306f7..49add1f9fbe9 100644 --- a/packages/devextreme/js/viz/core/export.js +++ b/packages/devextreme/js/viz/core/export.js @@ -3,11 +3,11 @@ import { getWindow } from '../../core/utils/window'; import { patchFontOptions } from './utils'; import { HIDDEN_FOR_EXPORT } from '../../core/utils/svg'; import { export as _export, image as imageExporter, svg as svgExporter, pdf as pdfExporter } from '../../exporter'; -import messageLocalization from '../../localization/message'; +import messageLocalization from '../../common/core/localization/message'; import { isDefined } from '../../core/utils/type'; import { getTheme } from '../themes'; -import { start as hoverEventStart, end as hoverEventEnd } from '../../events/hover'; -import pointerEvents from '../../events/pointer'; +import { start as hoverEventStart, end as hoverEventEnd } from '../../common/core/events/hover'; +import pointerEvents from '../../common/core/events/pointer'; import { logger } from '../../core/utils/console'; import { getWidth } from '../../core/utils/size'; import { Renderer } from './renderers/renderer'; diff --git a/packages/devextreme/js/viz/core/renderers/animation.js b/packages/devextreme/js/viz/core/renderers/animation.js index 91e2c79bb021..beea948c287c 100644 --- a/packages/devextreme/js/viz/core/renderers/animation.js +++ b/packages/devextreme/js/viz/core/renderers/animation.js @@ -1,4 +1,4 @@ -import { requestAnimationFrame, cancelAnimationFrame } from '../../../animation/frame'; +import { requestAnimationFrame, cancelAnimationFrame } from '../../../common/core/animation/frame'; const noop = function() { }; export const easingFunctions = { easeOutCubic: function(pos, start, end) { return (pos === 1) ? end : ((1 - Math.pow((1 - pos), 3)) * (end - start) + (+start)); }, diff --git a/packages/devextreme/js/viz/core/renderers/renderer.js b/packages/devextreme/js/viz/core/renderers/renderer.js index 4795d7acbc6d..3317f2c83207 100644 --- a/packages/devextreme/js/viz/core/renderers/renderer.js +++ b/packages/devextreme/js/viz/core/renderers/renderer.js @@ -3,7 +3,7 @@ import domAdapter from '../../../core/dom_adapter'; import { getWindow } from '../../../core/utils/window'; import callOnce from '../../../core/utils/call_once'; -import eventsEngine from '../../../events/core/events_engine'; +import eventsEngine from '../../../common/core/events/core/events_engine'; import { getSvgMarkup } from '../../../core/utils/svg'; import { AnimationController } from './animation'; import { normalizeBBox, rotateBBox, normalizeEnum, normalizeArcParams, getNextDefsSvgId } from '../utils'; diff --git a/packages/devextreme/js/viz/funnel.d.ts b/packages/devextreme/js/viz/funnel.d.ts index 68a3015db7c2..11df9b417337 100644 --- a/packages/devextreme/js/viz/funnel.d.ts +++ b/packages/devextreme/js/viz/funnel.d.ts @@ -7,14 +7,16 @@ import { import { template, -} from '../core/templates/template'; + HorizontalEdge, + SingleMultipleOrNone, +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, @@ -33,11 +35,6 @@ import BaseWidget, { IncidentInfo, } from './core/base_widget'; -import { - HorizontalEdge, - SingleMultipleOrNone, -} from '../common'; - import { DashStyle, HatchDirection, diff --git a/packages/devextreme/js/viz/gauges/base_gauge.d.ts b/packages/devextreme/js/viz/gauges/base_gauge.d.ts index 9c8db391b798..3d169ef86766 100644 --- a/packages/devextreme/js/viz/gauges/base_gauge.d.ts +++ b/packages/devextreme/js/viz/gauges/base_gauge.d.ts @@ -5,15 +5,17 @@ import { import { template, -} from '../../core/templates/template'; + HorizontalEdge, + VerticalEdge, +} from '../../common'; import { EventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import { Format, -} from '../../localization'; +} from '../../common/core/localization'; import BaseWidget, { BaseWidgetLoadingIndicator, @@ -21,11 +23,6 @@ import BaseWidget, { BaseWidgetTooltip, } from '../core/base_widget'; -import { - HorizontalEdge, - VerticalEdge, -} from '../../common'; - import { AnimationEaseMode, Palette, diff --git a/packages/devextreme/js/viz/gauges/tracker.js b/packages/devextreme/js/viz/gauges/tracker.js index 7c148091735e..48816cd98603 100644 --- a/packages/devextreme/js/viz/gauges/tracker.js +++ b/packages/devextreme/js/viz/gauges/tracker.js @@ -1,10 +1,10 @@ -import eventsEngine from '../../events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; import Class from '../../core/class'; import domAdapter from '../../core/dom_adapter'; -import { name as wheelEventName } from '../../events/core/wheel'; +import { name as wheelEventName } from '../../common/core/events/core/wheel'; import ReadyCallbacks from '../../core/utils/ready_callbacks'; -import { addNamespace } from '../../events/utils/index'; -import pointerEvents from '../../events/pointer'; +import { addNamespace } from '../../common/core/events/utils/index'; +import pointerEvents from '../../common/core/events/pointer'; ///#DEBUG import { debug } from '../../core/utils/console'; ///#ENDDEBUG diff --git a/packages/devextreme/js/viz/linear_gauge.d.ts b/packages/devextreme/js/viz/linear_gauge.d.ts index 0079aa0c4867..06283ea8b9bd 100644 --- a/packages/devextreme/js/viz/linear_gauge.d.ts +++ b/packages/devextreme/js/viz/linear_gauge.d.ts @@ -2,7 +2,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { FileSavingEventInfo, diff --git a/packages/devextreme/js/viz/pie_chart.d.ts b/packages/devextreme/js/viz/pie_chart.d.ts index 2c3096263e98..03a33bd4f755 100644 --- a/packages/devextreme/js/viz/pie_chart.d.ts +++ b/packages/devextreme/js/viz/pie_chart.d.ts @@ -5,14 +5,14 @@ import { import { template, -} from '../core/templates/template'; +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, diff --git a/packages/devextreme/js/viz/polar_chart.d.ts b/packages/devextreme/js/viz/polar_chart.d.ts index 8490e8b0bd3b..df3467eb1df3 100644 --- a/packages/devextreme/js/viz/polar_chart.d.ts +++ b/packages/devextreme/js/viz/polar_chart.d.ts @@ -9,7 +9,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, @@ -34,7 +34,8 @@ import { import { template, -} from '../core/templates/template'; + SingleOrMultiple, +} from '../common'; import { FileSavingEventInfo, @@ -42,10 +43,6 @@ import { IncidentInfo, } from './core/base_widget'; -import { - SingleOrMultiple, -} from '../common'; - import { ArgumentAxisHoverMode, AxisScaleType, diff --git a/packages/devextreme/js/viz/range_selector.d.ts b/packages/devextreme/js/viz/range_selector.d.ts index ee84c775a622..ac633fe31b30 100644 --- a/packages/devextreme/js/viz/range_selector.d.ts +++ b/packages/devextreme/js/viz/range_selector.d.ts @@ -5,7 +5,7 @@ import { NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, diff --git a/packages/devextreme/js/viz/range_selector/tracker.js b/packages/devextreme/js/viz/range_selector/tracker.js index 4c64a4980ad4..703565ce6823 100644 --- a/packages/devextreme/js/viz/range_selector/tracker.js +++ b/packages/devextreme/js/viz/range_selector/tracker.js @@ -1,5 +1,5 @@ -import eventsEngine from '../../events/core/events_engine'; -import pointerEvents from '../../events/pointer'; +import eventsEngine from '../../common/core/events/core/events_engine'; +import pointerEvents from '../../common/core/events/pointer'; import { getWindow } from '../../core/utils/window'; import domAdapter from '../../core/dom_adapter'; import { each } from '../../core/utils/iterator'; diff --git a/packages/devextreme/js/viz/sankey.d.ts b/packages/devextreme/js/viz/sankey.d.ts index f29a7f0b2047..6fea1dcdedbf 100644 --- a/packages/devextreme/js/viz/sankey.d.ts +++ b/packages/devextreme/js/viz/sankey.d.ts @@ -7,14 +7,15 @@ import { import { template, -} from '../core/templates/template'; + VerticalAlignment, +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import BaseWidget, { BaseWidgetOptions, @@ -24,10 +25,6 @@ import BaseWidget, { IncidentInfo, } from './core/base_widget'; -import { - VerticalAlignment, -} from '../common'; - import { HatchDirection, Palette, diff --git a/packages/devextreme/js/viz/sparkline.d.ts b/packages/devextreme/js/viz/sparkline.d.ts index 94263a5ee38c..2c4c516fae0e 100644 --- a/packages/devextreme/js/viz/sparkline.d.ts +++ b/packages/devextreme/js/viz/sparkline.d.ts @@ -4,7 +4,7 @@ import { EventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { FileSavingEventInfo, diff --git a/packages/devextreme/js/viz/sparklines/base_sparkline.d.ts b/packages/devextreme/js/viz/sparklines/base_sparkline.d.ts index 57e98373fce9..70fe5a8d4cf3 100644 --- a/packages/devextreme/js/viz/sparklines/base_sparkline.d.ts +++ b/packages/devextreme/js/viz/sparklines/base_sparkline.d.ts @@ -5,11 +5,11 @@ import { import { template, -} from '../../core/templates/template'; +} from '../../common'; import { EventInfo, -} from '../../events/index'; +} from '../../common/core/events'; import BaseWidget, { BaseWidgetExport, diff --git a/packages/devextreme/js/viz/sparklines/base_sparkline.js b/packages/devextreme/js/viz/sparklines/base_sparkline.js index f69136bf7669..697fe576ff61 100644 --- a/packages/devextreme/js/viz/sparklines/base_sparkline.js +++ b/packages/devextreme/js/viz/sparklines/base_sparkline.js @@ -1,10 +1,10 @@ -import eventsEngine from '../../events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; import domAdapter from '../../core/dom_adapter'; import { isFunction } from '../../core/utils/type'; import BaseWidget from '../../__internal/viz/core/m_base_widget'; import { extend } from '../../core/utils/extend'; -import { addNamespace } from '../../events/utils/index'; -import pointerEvents from '../../events/pointer'; +import { addNamespace } from '../../common/core/events/utils/index'; +import pointerEvents from '../../common/core/events/pointer'; import { pointInCanvas } from '../core/utils'; import $ from '../../core/renderer'; diff --git a/packages/devextreme/js/viz/tree_map.d.ts b/packages/devextreme/js/viz/tree_map.d.ts index fc80e072c193..fbb36e05d561 100644 --- a/packages/devextreme/js/viz/tree_map.d.ts +++ b/packages/devextreme/js/viz/tree_map.d.ts @@ -7,14 +7,15 @@ import { import { template, -} from '../core/templates/template'; + SingleMultipleOrNone, +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import BaseWidget, { BaseWidgetMargin, @@ -25,10 +26,6 @@ import BaseWidget, { IncidentInfo, } from './core/base_widget'; -import { - SingleMultipleOrNone, -} from '../common'; - import { Palette, PaletteExtensionMode, diff --git a/packages/devextreme/js/viz/vector_map.d.ts b/packages/devextreme/js/viz/vector_map.d.ts index e6bc4a43adf4..3e77d059f765 100644 --- a/packages/devextreme/js/viz/vector_map.d.ts +++ b/packages/devextreme/js/viz/vector_map.d.ts @@ -7,14 +7,17 @@ import { import { template, -} from '../core/templates/template'; + HorizontalAlignment, + SingleMultipleOrNone, + VerticalEdge, +} from '../common'; import { EventInfo, NativeEventInfo, InitializedEventInfo, ChangedOptionInfo, -} from '../events/index'; +} from '../common/core/events'; import { Format, @@ -45,12 +48,6 @@ import { Font, } from '../common/charts'; -import { - HorizontalAlignment, - SingleMultipleOrNone, - VerticalEdge, -} from '../common'; - export { SingleMultipleOrNone, Palette, diff --git a/packages/devextreme/js/viz/vector_map/map_layer.js b/packages/devextreme/js/viz/vector_map/map_layer.js index a7bb5cffa499..a6b60250c913 100644 --- a/packages/devextreme/js/viz/vector_map/map_layer.js +++ b/packages/devextreme/js/viz/vector_map/map_layer.js @@ -1,7 +1,7 @@ import { noop } from '../../core/utils/common'; import { extend } from '../../core/utils/extend'; import { each } from '../../core/utils/iterator'; -import DataHelperMixin from '../../data_helper'; +import DataHelperMixin from '../../common/data/data_helper'; import { isFunction as _isFunction, isDefined as _isDefined } from '../../core/utils/type'; import { Deferred, when } from '../../core/utils/deferred'; import { parseScalar as _parseScalar, diff --git a/packages/devextreme/js/viz/vector_map/tracker.js b/packages/devextreme/js/viz/vector_map/tracker.js index b6f0a8e241d6..e94fbbb5b31f 100644 --- a/packages/devextreme/js/viz/vector_map/tracker.js +++ b/packages/devextreme/js/viz/vector_map/tracker.js @@ -1,9 +1,9 @@ -import eventsEngine from '../../events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; import { getNavigator, hasProperty } from '../../core/utils/window'; import domAdapter from '../../core/dom_adapter'; import { makeEventEmitter } from './event_emitter'; -import { addNamespace } from '../../events/utils/index'; -import { name as wheelEventName } from '../../events/core/wheel'; +import { addNamespace } from '../../common/core/events/utils/index'; +import { name as wheelEventName } from '../../common/core/events/core/wheel'; import { parseScalar } from '../core/utils'; const navigator = getNavigator(); diff --git a/packages/devextreme/project.json b/packages/devextreme/project.json index 5d2b5674ecaf..e6d99395baf0 100644 --- a/packages/devextreme/project.json +++ b/packages/devextreme/project.json @@ -21,8 +21,8 @@ "{projectRoot}/artifacts", "!{projectRoot}/artifacts/css", "{projectRoot}/js/bundles/dx.custom.js", - "{projectRoot}/js/localization/cldr-data", - "{projectRoot}/js/localization/default_messages.js", + "{projectRoot}/js/common/core/localization/cldr-data", + "{projectRoot}/js/common/core/localization/default_messages.js", "{projectRoot}/js/renovation/**/*.j.tsx", "{projectRoot}/testing/tests/Renovation/widgets.json" ] @@ -64,8 +64,8 @@ "{projectRoot}/artifacts", "!{projectRoot}/artifacts/css", "{projectRoot}/js/bundles/dx.custom.js", - "{projectRoot}/js/localization/cldr-data", - "{projectRoot}/js/localization/default_messages.js", + "{projectRoot}/js/common/core/localization/cldr-data", + "{projectRoot}/js/common/core/localization/default_messages.js", "{projectRoot}/js/renovation/**/*.j.tsx", "{projectRoot}/testing/tests/Renovation/widgets.json" ], diff --git a/packages/devextreme/testing/helpers/data.errorHandlingHelper.js b/packages/devextreme/testing/helpers/data.errorHandlingHelper.js index af3d56a2637d..9e4d4d445357 100644 --- a/packages/devextreme/testing/helpers/data.errorHandlingHelper.js +++ b/packages/devextreme/testing/helpers/data.errorHandlingHelper.js @@ -5,7 +5,7 @@ if(typeof define === 'function' && define.amd) { define(function(require, exports, module) { - root.DevExpress.data.testing.ErrorHandlingHelper = module.exports = factory(require('jquery'), require('core/class'), require('data/errors')); + root.DevExpress.data.testing.ErrorHandlingHelper = module.exports = factory(require('jquery'), require('core/class'), require('common/data/errors')); }); } else { root.DevExpress.data.testing.ErrorHandlingHelper = factory(window.jQuery, DevExpress.Class, DevExpress.data); diff --git a/packages/devextreme/testing/helpers/dataGridMocks.js b/packages/devextreme/testing/helpers/dataGridMocks.js index 5e004fc85ec8..966f4ccb369a 100644 --- a/packages/devextreme/testing/helpers/dataGridMocks.js +++ b/packages/devextreme/testing/helpers/dataGridMocks.js @@ -12,7 +12,7 @@ if(typeof define === 'function' && define.amd) { require('__internal/core/utils/m_dom'), require('__internal/core/utils/m_common'), require('__internal/core/utils/m_type'), - require('data/array_store'), + require('common/data/array_store'), 'DataGrid' ); }); @@ -26,7 +26,7 @@ if(typeof define === 'function' && define.amd) { DevExpress.require('__internal/core/utils/m_dom'), DevExpress.require('__internal/core/utils/m_common'), DevExpress.require('__internal/core/utils/m_type'), - DevExpress.require('data/array_store'), + DevExpress.require('common/data/array_store'), 'DataGrid' )); } diff --git a/packages/devextreme/testing/helpers/eventHelper.js b/packages/devextreme/testing/helpers/eventHelper.js index 176238f0a3b2..0e02549c83e4 100644 --- a/packages/devextreme/testing/helpers/eventHelper.js +++ b/packages/devextreme/testing/helpers/eventHelper.js @@ -1,4 +1,4 @@ -import registerEventCallbacks from 'events/core/event_registrator_callbacks'; +import registerEventCallbacks from 'common/core/events/core/event_registrator_callbacks'; export const special = {}; diff --git a/packages/devextreme/testing/helpers/fileManager/events.js b/packages/devextreme/testing/helpers/fileManager/events.js index c00410613759..14c34ca19301 100644 --- a/packages/devextreme/testing/helpers/fileManager/events.js +++ b/packages/devextreme/testing/helpers/fileManager/events.js @@ -1,4 +1,4 @@ -import pointerEvents from 'events/pointer'; +import pointerEvents from 'common/core/events/pointer'; export const triggerCellClick = ($cell, singleSelection) => { $cell diff --git a/packages/devextreme/testing/helpers/grid/keyboardNavigationHelper.js b/packages/devextreme/testing/helpers/grid/keyboardNavigationHelper.js index 8493ddbda084..697783eeed59 100644 --- a/packages/devextreme/testing/helpers/grid/keyboardNavigationHelper.js +++ b/packages/devextreme/testing/helpers/grid/keyboardNavigationHelper.js @@ -1,14 +1,14 @@ import $ from 'jquery'; import devices from '__internal/core/m_devices'; -import { addNamespace, createEvent } from 'events/utils/index'; +import { addNamespace, createEvent } from 'common/core/events/utils/index'; import { setupDataGridModules, MockDataController, MockColumnsController, MockSelectionController } from '../dataGridMocks.js'; -import clickEvent from 'events/click'; -import pointerEvents from 'events/pointer'; -import { keyboard } from 'events/short'; +import clickEvent from 'common/core/events/click'; +import pointerEvents from 'common/core/events/pointer'; +import { keyboard } from 'common/core/events/short'; import DataGridWrapper from '../wrappers/dataGridWrappers.js'; export const dataGridWrapper = new DataGridWrapper('#container'); diff --git a/packages/devextreme/testing/helpers/jQueryEventsPatch.js b/packages/devextreme/testing/helpers/jQueryEventsPatch.js index d6f3ea676162..5cfc97c2445c 100644 --- a/packages/devextreme/testing/helpers/jQueryEventsPatch.js +++ b/packages/devextreme/testing/helpers/jQueryEventsPatch.js @@ -1,6 +1,6 @@ /* global jQuery */ -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; let originalJQueryEvent; const originalJQueryMethods = {}; diff --git a/packages/devextreme/testing/helpers/pointerMock.js b/packages/devextreme/testing/helpers/pointerMock.js index f3f751f7de31..d5c923fe5d17 100644 --- a/packages/devextreme/testing/helpers/pointerMock.js +++ b/packages/devextreme/testing/helpers/pointerMock.js @@ -5,8 +5,8 @@ root.pointerMock = module.exports = factory( require('jquery'), require('inferno'), - require('events/gesture/emitter.gesture'), - require('events/click')); + require('common/core/events/gesture/emitter.gesture'), + require('common/core/events/click')); }); } else { root.pointerMock = factory(jQuery, DevExpress.events.GestureEmitter, DevExpress.events.click); diff --git a/packages/devextreme/testing/helpers/scheduler/helpers.js b/packages/devextreme/testing/helpers/scheduler/helpers.js index 1d5532258c14..5f2eee2a0af7 100644 --- a/packages/devextreme/testing/helpers/scheduler/helpers.js +++ b/packages/devextreme/testing/helpers/scheduler/helpers.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import { locate } from 'animation/translator'; +import { locate } from 'common/core/animation/translator'; import devices from '__internal/core/m_devices'; import pointerMock from '../../helpers/pointerMock.js'; import dataUtils from 'core/element_data'; diff --git a/packages/devextreme/testing/helpers/treeListMocks.js b/packages/devextreme/testing/helpers/treeListMocks.js index da98c335a813..45f1d23b83e0 100644 --- a/packages/devextreme/testing/helpers/treeListMocks.js +++ b/packages/devextreme/testing/helpers/treeListMocks.js @@ -12,7 +12,7 @@ if(typeof define === 'function' && define.amd) { require('__internal/core/utils/m_dom'), require('__internal/core/utils/m_common'), require('__internal/core/utils/m_type'), - require('data/array_store'), + require('common/data/array_store'), 'TreeList' ); }); @@ -26,7 +26,7 @@ if(typeof define === 'function' && define.amd) { DevExpress.require('__internal/core/utils/m_dom'), DevExpress.require('__internal/core/utils/m_common'), DevExpress.require('__internal/core/utils/m_type'), - DevExpress.require('data/array_store'), + DevExpress.require('common/data/array_store'), 'TreeList' )); } diff --git a/packages/devextreme/testing/tests/Bootstrap Integration/widget_bundled.tests.js b/packages/devextreme/testing/tests/Bootstrap Integration/widget_bundled.tests.js index 559c99e400a3..7e2f308a28c9 100644 --- a/packages/devextreme/testing/tests/Bootstrap Integration/widget_bundled.tests.js +++ b/packages/devextreme/testing/tests/Bootstrap Integration/widget_bundled.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import GoogleStaticProvider from '__internal/ui/map/m_provider.google_static'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.animation/easing.tests.js b/packages/devextreme/testing/tests/DevExpress.animation/easing.tests.js index adf9e3eeef7a..b09d7ca4bf74 100644 --- a/packages/devextreme/testing/tests/DevExpress.animation/easing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.animation/easing.tests.js @@ -1,4 +1,4 @@ -const easing = require('animation/easing'); +const easing = require('common/core/animation/easing'); QUnit.module('easing'); diff --git a/packages/devextreme/testing/tests/DevExpress.animation/fx.tests.js b/packages/devextreme/testing/tests/DevExpress.animation/fx.tests.js index cf4909c380ef..7263b533411a 100644 --- a/packages/devextreme/testing/tests/DevExpress.animation/fx.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.animation/fx.tests.js @@ -1,10 +1,10 @@ import $ from 'jquery'; import renderer from 'core/renderer'; -import eventsEngine from 'events/core/events_engine'; -import fx from 'animation/fx'; -import translator from 'animation/translator'; -import animationFrame from 'animation/frame'; -import positionUtils from 'animation/position'; +import eventsEngine from 'common/core/events/core/events_engine'; +import fx from 'common/core/animation/fx'; +import translator from 'common/core/animation/translator'; +import animationFrame from 'common/core/animation/frame'; +import positionUtils from 'common/core/animation/position'; import support from '__internal/core/utils/m_support'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.animation/position.tests.js b/packages/devextreme/testing/tests/DevExpress.animation/position.tests.js index 1598072bb10c..4a2dbe729c71 100644 --- a/packages/devextreme/testing/tests/DevExpress.animation/position.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.animation/position.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import positionUtils from 'animation/position'; -import translator from 'animation/translator'; +import positionUtils from 'common/core/animation/position'; +import translator from 'common/core/animation/translator'; import browser from 'core/utils/browser'; import fixtures from '../../helpers/positionFixtures.js'; import devices from 'core/devices.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.animation/transitionExecutors.tests.js b/packages/devextreme/testing/tests/DevExpress.animation/transitionExecutors.tests.js index bfe41d92d605..0c8f20239018 100644 --- a/packages/devextreme/testing/tests/DevExpress.animation/transitionExecutors.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.animation/transitionExecutors.tests.js @@ -1,10 +1,10 @@ import $ from 'jquery'; import { noop } from '__internal/core/utils/m_common'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; -import { presets as animationPresets } from 'animation/presets/presets'; -import TransitionExecutorModule from 'animation/transition_executor/transition_executor'; +import { presets as animationPresets } from 'common/core/animation/presets/presets'; +import TransitionExecutorModule from 'common/core/animation/transition_executor/transition_executor'; QUnit.module('transition executor', { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.animation/translator.tests.js b/packages/devextreme/testing/tests/DevExpress.animation/translator.tests.js index 22387d5b9389..795307a74539 100644 --- a/packages/devextreme/testing/tests/DevExpress.animation/translator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.animation/translator.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const translator = require('animation/translator'); +const translator = require('common/core/animation/translator'); const styleUtils = require('core/utils/style'); const transformStyle = styleUtils.styleProp('transform'); diff --git a/packages/devextreme/testing/tests/DevExpress.core/domComponent.tests.js b/packages/devextreme/testing/tests/DevExpress.core/domComponent.tests.js index 755e5c4f6609..d425dbf2bb60 100644 --- a/packages/devextreme/testing/tests/DevExpress.core/domComponent.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.core/domComponent.tests.js @@ -7,8 +7,8 @@ import { TemplateManager } from 'core/template_manager'; import { noop } from 'core/utils/common'; import publicComponentUtils from 'core/utils/public_component'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import eventsEngine from 'events/core/events_engine'; -import { triggerResizeEvent } from 'events/visibility_change'; +import eventsEngine from 'common/core/events/core/events_engine'; +import { triggerResizeEvent } from 'common/core/events/visibility_change'; import licenseModule, { setLicenseCheckSkipCondition } from '__internal/core/license/license_validation'; import $ from 'jquery'; diff --git a/packages/devextreme/testing/tests/DevExpress.core/utils.animationFrame.tests.js b/packages/devextreme/testing/tests/DevExpress.core/utils.animationFrame.tests.js index d9f77af4f661..d7e6613bccd6 100644 --- a/packages/devextreme/testing/tests/DevExpress.core/utils.animationFrame.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.core/utils.animationFrame.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const animationFrame = require('animation/frame'); +const animationFrame = require('common/core/animation/frame'); QUnit.module('animation frame'); diff --git a/packages/devextreme/testing/tests/DevExpress.core/utils.dom.tests.js b/packages/devextreme/testing/tests/DevExpress.core/utils.dom.tests.js index d942925e548d..51e2fd52a7fd 100644 --- a/packages/devextreme/testing/tests/DevExpress.core/utils.dom.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.core/utils.dom.tests.js @@ -3,7 +3,7 @@ import domUtils from '__internal/core/utils/m_dom'; import support from '__internal/core/utils/m_support'; import styleUtils from 'core/utils/style'; import devices from '__internal/core/m_devices'; -import initMobileViewport from 'mobile/init_mobile_viewport'; +import initMobileViewport from 'common/core/environment/init_mobile_viewport'; import keyboardMock from '../../helpers/keyboardMock.js'; QUnit.module('createMarkup'); diff --git a/packages/devextreme/testing/tests/DevExpress.core/utils.topOverlay.tests.js b/packages/devextreme/testing/tests/DevExpress.core/utils.topOverlay.tests.js index 21eeb586be11..e166fe4a77b8 100644 --- a/packages/devextreme/testing/tests/DevExpress.core/utils.topOverlay.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.core/utils.topOverlay.tests.js @@ -1,5 +1,5 @@ -const hideTopOverlay = require('mobile/hide_top_overlay'); -const hideTopOverlayCallback = require('mobile/hide_callback').hideCallback; +const hideTopOverlay = require('common/core/environment/hide_top_overlay'); +const hideTopOverlayCallback = require('common/core/environment/hide_callback').hideCallback; QUnit.module('top overlay util'); diff --git a/packages/devextreme/testing/tests/DevExpress.core/utils.type.tests.js b/packages/devextreme/testing/tests/DevExpress.core/utils.type.tests.js index 89dd97bbd897..64fc102e8fbf 100644 --- a/packages/devextreme/testing/tests/DevExpress.core/utils.type.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.core/utils.type.tests.js @@ -2,7 +2,7 @@ const $ = require('jquery'); const typeUtils = require('core/utils/type'); const Deferred = require('core/utils/deferred').Deferred; const renderer = require('core/renderer'); -const eventsEngine = require('events/core/events_engine'); +const eventsEngine = require('common/core/events/core/events_engine'); QUnit.module('Type checking'); diff --git a/packages/devextreme/testing/tests/DevExpress.data/applyChanges.tests.js b/packages/devextreme/testing/tests/DevExpress.data/applyChanges.tests.js index c695345634ae..69e06664766a 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/applyChanges.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/applyChanges.tests.js @@ -1,7 +1,7 @@ import { extend } from 'core/utils/extend'; -import { errors } from 'data/errors'; -import applyChanges from 'data/apply_changes'; -import { applyBatch } from 'data/array_utils'; +import { errors } from 'common/data/errors'; +import applyChanges from 'common/data/apply_changes'; +import { applyBatch } from 'common/data/array_utils'; QUnit.module('Apply Changes', { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.data/dataSource.tests.js b/packages/devextreme/testing/tests/DevExpress.data/dataSource.tests.js index 08893a18ea7a..945740dc6339 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/dataSource.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/dataSource.tests.js @@ -3,12 +3,12 @@ import { noop } from 'core/utils/common'; import typeUtils from 'core/utils/type'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; import ajaxMock from '../../helpers/ajaxMock.js'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import Store from 'data/abstract_store'; -import ArrayStore from 'data/array_store'; -import ODataStore from 'data/odata/store'; +import ArrayStore from 'common/data/array_store'; +import ODataStore from 'common/data/odata/store'; import AggregateCalculator from '__internal/grids/data_grid/m_aggregate_calculator'; -import LocalStore from 'data/local_store'; +import LocalStore from 'common/data/local_store'; const TEN_NUMBERS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; diff --git a/packages/devextreme/testing/tests/DevExpress.data/dataSourceCreating.tests.js b/packages/devextreme/testing/tests/DevExpress.data/dataSourceCreating.tests.js index 85817d81fd97..ef08ff6e5590 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/dataSourceCreating.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/dataSourceCreating.tests.js @@ -1,8 +1,8 @@ -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import LocalStore from 'data/local_store'; -import ODataStore from 'data/odata/store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import LocalStore from 'common/data/local_store'; +import ODataStore from 'common/data/odata/store'; import ajaxMock from '../../helpers/ajaxMock.js'; QUnit.test('no options', function(assert) { diff --git a/packages/devextreme/testing/tests/DevExpress.data/odataCommonOData.tests.js b/packages/devextreme/testing/tests/DevExpress.data/odataCommonOData.tests.js index 29fec4dfbad4..b34ede44a4c0 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/odataCommonOData.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/odataCommonOData.tests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); -const converters = require('data/odata/utils').keyConverters; -const interpretJsonFormat = require('data/odata/utils').OData__internals.interpretJsonFormat; +const converters = require('common/data/odata/utils').keyConverters; +const interpretJsonFormat = require('common/data/odata/utils').OData__internals.interpretJsonFormat; const Guid = require('core/guid'); QUnit.module('OData 2'); diff --git a/packages/devextreme/testing/tests/DevExpress.data/odataQuery.tests.js b/packages/devextreme/testing/tests/DevExpress.data/odataQuery.tests.js index 34c68a7770b1..ae4afe0e4af7 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/odataQuery.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/odataQuery.tests.js @@ -1,11 +1,11 @@ import $ from 'jquery'; -import { EdmLiteral } from 'data/odata/utils'; -import query from 'data/query'; +import { EdmLiteral } from 'common/data/odata/utils'; +import query from 'common/data/query'; import config from 'core/config'; import ErrorHandlingHelper from '../../helpers/data.errorHandlingHelper.js'; import ajaxMock from '../../helpers/ajaxMock.js'; -import 'data/odata/query_adapter'; +import 'common/data/odata/query_adapter'; const MUST_NOT_REACH_MESSAGE = 'Shouldn\'t reach this point'; diff --git a/packages/devextreme/testing/tests/DevExpress.data/odataStore.tests.js b/packages/devextreme/testing/tests/DevExpress.data/odataStore.tests.js index 47aeef00fdec..d04ce4da3d7e 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/odataStore.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/odataStore.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import { EdmLiteral } from 'data/odata/utils'; -import ODataStore from 'data/odata/store'; -import ODataContext from 'data/odata/context'; +import { EdmLiteral } from 'common/data/odata/utils'; +import ODataStore from 'common/data/odata/store'; +import ODataContext from 'common/data/odata/context'; import Guid from 'core/guid'; import config from 'core/config'; import ErrorHandlingHelper from '../../helpers/data.errorHandlingHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.data/queryArray.tests.js b/packages/devextreme/testing/tests/DevExpress.data/queryArray.tests.js index 3dcef8b21a72..75f50b9b8518 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/queryArray.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/queryArray.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import QUERY from 'data/query'; +import QUERY from 'common/data/query'; import ErrorHandlingHelper from '../../helpers/data.errorHandlingHelper.js'; QUnit.module('Misc'); diff --git a/packages/devextreme/testing/tests/DevExpress.data/storeArray.tests.js b/packages/devextreme/testing/tests/DevExpress.data/storeArray.tests.js index 84cc244759c6..fa57b16bac3f 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/storeArray.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/storeArray.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import config from 'core/config'; import ErrorHandlingHelper from '../../helpers/data.errorHandlingHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.data/storeCustom.tests.js b/packages/devextreme/testing/tests/DevExpress.data/storeCustom.tests.js index b54f31ff3851..77d783ec7864 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/storeCustom.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/storeCustom.tests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); -const CustomStore = require('data/custom_store'); -const { isLoadResultObject, isGroupItemsArray, isItemsArray } = require('common/data/custom-store'); -const processRequestResultLock = require('data/utils').processRequestResultLock; +const CustomStore = require('common/data/custom_store').CustomStore; +const { isLoadResultObject, isGroupItemsArray, isItemsArray } = require('common/data/custom_store'); +const processRequestResultLock = require('common/data/utils').processRequestResultLock; const config = require('core/config'); const ERRORS = { INVALID_RETURN: 'E4012', diff --git a/packages/devextreme/testing/tests/DevExpress.data/storeCustom_loadModeRaw.tests.js b/packages/devextreme/testing/tests/DevExpress.data/storeCustom_loadModeRaw.tests.js index 96d1feb16542..1d77cb003870 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/storeCustom_loadModeRaw.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/storeCustom_loadModeRaw.tests.js @@ -1,4 +1,4 @@ -const CustomStore = require('data/custom_store'); +const CustomStore = require('common/data/custom_store').CustomStore; const ErrorHandlingHelper = require('../../helpers/data.errorHandlingHelper.js'); const RAW = 'raw'; diff --git a/packages/devextreme/testing/tests/DevExpress.data/storeLocal.tests.js b/packages/devextreme/testing/tests/DevExpress.data/storeLocal.tests.js index 612e6ff9d87b..84d9f5ef2c2c 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/storeLocal.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/storeLocal.tests.js @@ -1,4 +1,4 @@ -const LocalStore = require('data/local_store'); +const LocalStore = require('common/data/local_store'); const TEST_NAME = '65DFE188-D178-11E1-A097-51216288709B'; const DX_LOCALSTORAGE_ITEM_NAME = 'dx-data-localStore-' + TEST_NAME; diff --git a/packages/devextreme/testing/tests/DevExpress.data/utils.tests.js b/packages/devextreme/testing/tests/DevExpress.data/utils.tests.js index 8431238e4f57..8636eb417d75 100644 --- a/packages/devextreme/testing/tests/DevExpress.data/utils.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.data/utils.tests.js @@ -1,7 +1,7 @@ import Guid from 'core/guid'; -import { processRequestResultLock, keysEqual, isGroupCriterion, throttleChanges, base64_encode as b64, isUniformEqualsByOr } from 'data/utils'; -import { EdmLiteral } from 'data/odata/utils'; -import { createObjectWithChanges } from 'data/array_utils'; +import { processRequestResultLock, keysEqual, isGroupCriterion, throttleChanges, base64_encode as b64, isUniformEqualsByOr } from 'common/data/utils'; +import { EdmLiteral } from 'common/data/odata/utils'; +import { createObjectWithChanges } from 'common/data/array_utils'; QUnit.module('keysEqual'); diff --git a/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js index 69d27708414a..84839ffc80ad 100644 --- a/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js @@ -1,8 +1,8 @@ import { setHeight } from 'core/utils/size'; import $ from 'core/renderer'; import localization from 'localization'; -import ja from 'localization/messages/ja.json!'; -import messageLocalization from 'localization/message'; +import ja from 'common/core/localization/messages/ja.json!'; +import messageLocalization from 'common/core/localization/message'; import { getWindow, setWindow } from 'core/utils/window'; const LOAD_PANEL_CLASS = 'dx-loadpanel'; diff --git a/packages/devextreme/testing/tests/DevExpress.jquery/easing.tests.js b/packages/devextreme/testing/tests/DevExpress.jquery/easing.tests.js index 93fb2aea7c16..5fe65561f3a5 100644 --- a/packages/devextreme/testing/tests/DevExpress.jquery/easing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.jquery/easing.tests.js @@ -1,6 +1,6 @@ define(function(require) { const $ = require('jquery'); - const easing = require('animation/easing'); + const easing = require('common/core/animation/easing'); require('integration/jquery'); diff --git a/packages/devextreme/testing/tests/DevExpress.jquery/eventRegistrator.tests.js b/packages/devextreme/testing/tests/DevExpress.jquery/eventRegistrator.tests.js index 070d6b6c34f9..515a82a64cb8 100644 --- a/packages/devextreme/testing/tests/DevExpress.jquery/eventRegistrator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.jquery/eventRegistrator.tests.js @@ -1,6 +1,6 @@ define(function(require) { const $ = require('jquery'); - const registerEvent = require('events/core/event_registrator'); + const registerEvent = require('common/core/events/core/event_registrator'); const Class = require('core/class'); require('integration/jquery'); diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/dataGrid.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/dataGrid.tests.js index 457fb2d01906..243371183df1 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/dataGrid.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/dataGrid.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import ko from 'knockout'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { logger } from 'core/utils/console'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dataSourceAdapter from '__internal/grids/data_grid/m_data_source_adapter'; import dataGridMocks from '../../helpers/dataGridMocks.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/datebox.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/datebox.tests.js index e29096d6e049..03537c6f0d0b 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/datebox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/datebox.tests.js @@ -1,11 +1,11 @@ import '../../helpers/noIntl.js'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import support from '__internal/core/utils/m_support'; import devices from '__internal/core/m_devices'; import uiDateUtils from '__internal/ui/date_box/m_date_utils'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import ko from 'knockout'; import 'integration/knockout'; diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/eventRegistration.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/eventRegistration.tests.js index 36f117bdb39b..d361180f9fd4 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/eventRegistration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/eventRegistration.tests.js @@ -1,11 +1,11 @@ const $ = require('jquery'); const ko = require('knockout'); -const registerEvent = require('events/core/event_registrator'); -const dragEvents = require('events/drag'); -const clickEvent = require('events/click'); -const holdEvent = require('events/hold'); -const pointerEvents = require('events/pointer'); -const swipeEvents = require('events/swipe'); +const registerEvent = require('common/core/events/core/event_registrator'); +const dragEvents = require('common/core/events/drag'); +const clickEvent = require('common/core/events/click'); +const holdEvent = require('common/core/events/hold'); +const pointerEvents = require('common/core/events/pointer'); +const swipeEvents = require('common/core/events/swipe'); require('integration/knockout'); diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/form.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/form.tests.js index 8029aeed34a1..31700ce67b68 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/form.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/form.tests.js @@ -4,7 +4,7 @@ import { FIELD_ITEM_CONTENT_CLASS } from '__internal/ui/form/constants'; import { FIELD_ITEM_CONTENT_LOCATION_CLASS } from '__internal/ui/form/components/m_field_item'; import { FIELD_ITEM_LABEL_LOCATION_CLASS } from '__internal/ui/form/components/m_label'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/form'; import 'ui/text_area'; diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/lookup.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/lookup.tests.js index 23670235094d..35414eb2f14c 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/lookup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/lookup.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const executeAsyncMock = require('../../helpers/executeAsyncMock.js'); const ko = require('knockout'); diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/overlay.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/overlay.tests.js index 8d639dd14750..4a0fee800fa1 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/overlay.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/overlay.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const ko = require('knockout'); require('ui/overlay/ui.overlay'); diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/selectBox.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/selectBox.tests.js index 84f6b611e11e..e1ef4e07e3a6 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/selectBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/selectBox.tests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); const SelectBox = require('ui/select_box'); -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const ko = require('knockout'); require('integration/knockout'); diff --git a/packages/devextreme/testing/tests/DevExpress.knockout/tagBox.tests.js b/packages/devextreme/testing/tests/DevExpress.knockout/tagBox.tests.js index 5a48c80d0db8..88ba2a659dd1 100644 --- a/packages/devextreme/testing/tests/DevExpress.knockout/tagBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.knockout/tagBox.tests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); const TagBox = require('ui/tag_box'); -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const ko = require('knockout'); require('integration/knockout'); diff --git a/packages/devextreme/testing/tests/DevExpress.localization/ldml.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/ldml.tests.js index 5817e1307444..b29a2a08b8c5 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/ldml.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/ldml.tests.js @@ -1,17 +1,17 @@ require('../../helpers/noIntl.js'); -const getNumberFormatter = require('localization/ldml/number').getFormatter; -const getNumberFormat = require('localization/ldml/number').getFormat; -const getDateParser = require('localization/ldml/date.parser').getParser; -const getRegExpInfo = require('localization/ldml/date.parser').getRegExpInfo; -const getDateFormatter = require('localization/ldml/date.formatter').getFormatter; -const getDateFormat = require('localization/ldml/date.format').getFormat; -const defaultDateNames = require('localization/default_date_names'); -const numberLocalization = require('localization/number'); -const dateLocalization = require('localization/date'); +const getNumberFormatter = require('common/core/localization/ldml/number').getFormatter; +const getNumberFormat = require('common/core/localization/ldml/number').getFormat; +const getDateParser = require('common/core/localization/ldml/date.parser').getParser; +const getRegExpInfo = require('common/core/localization/ldml/date.parser').getRegExpInfo; +const getDateFormatter = require('common/core/localization/ldml/date.formatter').getFormatter; +const getDateFormat = require('common/core/localization/ldml/date.format').getFormat; +const defaultDateNames = require('common/core/localization/default_date_names'); +const numberLocalization = require('common/core/localization/number'); +const dateLocalization = require('common/core/localization/date'); const extend = require('core/utils/extend').extend; const console = require('core/utils/console').logger; -require('localization/currency'); +require('common/core/localization/currency'); const dateParts = extend({}, defaultDateNames, { getPeriodNames: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js index c2e0e95a785c..30e914299833 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js @@ -1,33 +1,33 @@ -const messageLocalization = require('localization/message'); +const messageLocalization = require('common/core/localization/message'); const localization = require('localization'); const dictionaries = {}; -dictionaries['ar'] = require('localization/messages/ar.json!'); -dictionaries['ca'] = require('localization/messages/ca.json!'); -dictionaries['cs'] = require('localization/messages/cs.json!'); -dictionaries['de'] = require('localization/messages/de.json!'); -dictionaries['el'] = require('localization/messages/el.json!'); -dictionaries['en'] = require('localization/messages/en.json!'); -dictionaries['es'] = require('localization/messages/es.json!'); -dictionaries['fi'] = require('localization/messages/fi.json!'); -dictionaries['fr'] = require('localization/messages/fr.json!'); -dictionaries['hu'] = require('localization/messages/hu.json!'); -dictionaries['it'] = require('localization/messages/it.json!'); -dictionaries['ja'] = require('localization/messages/ja.json!'); -dictionaries['lt'] = require('localization/messages/lt.json!'); -dictionaries['lv'] = require('localization/messages/lv.json!'); -dictionaries['nb'] = require('localization/messages/nb.json!'); -dictionaries['nl'] = require('localization/messages/nl.json!'); -dictionaries['pt'] = require('localization/messages/pt.json!'); -dictionaries['ro'] = require('localization/messages/ro.json!'); -dictionaries['ru'] = require('localization/messages/ru.json!'); -dictionaries['sl'] = require('localization/messages/sl.json!'); -dictionaries['sv'] = require('localization/messages/sv.json!'); -dictionaries['tr'] = require('localization/messages/tr.json!'); -dictionaries['vi'] = require('localization/messages/vi.json!'); -dictionaries['zh-tw'] = require('localization/messages/zh-tw.json!'); -dictionaries['zh'] = require('localization/messages/zh.json!'); -dictionaries['fa'] = require('localization/messages/fa.json!'); +dictionaries['ar'] = require('common/core/localization/messages/ar.json!'); +dictionaries['ca'] = require('common/core/localization/messages/ca.json!'); +dictionaries['cs'] = require('common/core/localization/messages/cs.json!'); +dictionaries['de'] = require('common/core/localization/messages/de.json!'); +dictionaries['el'] = require('common/core/localization/messages/el.json!'); +dictionaries['en'] = require('common/core/localization/messages/en.json!'); +dictionaries['es'] = require('common/core/localization/messages/es.json!'); +dictionaries['fi'] = require('common/core/localization/messages/fi.json!'); +dictionaries['fr'] = require('common/core/localization/messages/fr.json!'); +dictionaries['hu'] = require('common/core/localization/messages/hu.json!'); +dictionaries['it'] = require('common/core/localization/messages/it.json!'); +dictionaries['ja'] = require('common/core/localization/messages/ja.json!'); +dictionaries['lt'] = require('common/core/localization/messages/lt.json!'); +dictionaries['lv'] = require('common/core/localization/messages/lv.json!'); +dictionaries['nb'] = require('common/core/localization/messages/nb.json!'); +dictionaries['nl'] = require('common/core/localization/messages/nl.json!'); +dictionaries['pt'] = require('common/core/localization/messages/pt.json!'); +dictionaries['ro'] = require('common/core/localization/messages/ro.json!'); +dictionaries['ru'] = require('common/core/localization/messages/ru.json!'); +dictionaries['sl'] = require('common/core/localization/messages/sl.json!'); +dictionaries['sv'] = require('common/core/localization/messages/sv.json!'); +dictionaries['tr'] = require('common/core/localization/messages/tr.json!'); +dictionaries['vi'] = require('common/core/localization/messages/vi.json!'); +dictionaries['zh-tw'] = require('common/core/localization/messages/zh-tw.json!'); +dictionaries['zh'] = require('common/core/localization/messages/zh.json!'); +dictionaries['fa'] = require('common/core/localization/messages/fa.json!'); const LOCALES = [ 'ar', 'ca', 'cs', 'de', 'el', diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.base.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.base.tests.js index fa576022e381..13324b337cf0 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.base.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.base.tests.js @@ -1,9 +1,9 @@ import '../../helpers/noIntl.js'; import sharedTests from './sharedParts/localization.shared.js'; import localization from 'localization'; -import numberLocalization from 'localization/number'; -import dateLocalization from 'localization/date'; -import messageLocalization from 'localization/message'; +import numberLocalization from 'common/core/localization/number'; +import dateLocalization from 'common/core/localization/date'; +import messageLocalization from 'common/core/localization/message'; import { logger } from 'core/utils/console'; QUnit.module('base localization', {}, () => { diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.custom.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.custom.tests.js index 1177965ed1de..c3079b762b39 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.custom.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.custom.tests.js @@ -1,5 +1,5 @@ -const numberLocalization = require('localization/number'); -const dateLocalization = require('localization/date'); +const numberLocalization = require('common/core/localization/number'); +const dateLocalization = require('common/core/localization/date'); QUnit.module('Custom date names', { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.tests.js index caace08a1911..d028a628baf6 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.tests.js @@ -2,11 +2,11 @@ SystemJS.config({ meta: { './localization.base.tests.js': { deps: [ - 'localization/globalize/core', - 'localization/globalize/number', - 'localization/globalize/currency', - 'localization/globalize/date', - 'localization/globalize/message' + 'common/core/localization/globalize/core', + 'common/core/localization/globalize/number', + 'common/core/localization/globalize/currency', + 'common/core/localization/globalize/date', + 'common/core/localization/globalize/message' ] } }, @@ -29,19 +29,19 @@ define(function(require, exports, module) { require('devextreme-cldr-data/da.json!json') ]; - require('localization/globalize/core'); - require('localization/globalize/number'); - require('localization/globalize/currency'); - require('localization/globalize/date'); - require('localization/globalize/message'); + require('common/core/localization/globalize/core'); + require('common/core/localization/globalize/number'); + require('common/core/localization/globalize/currency'); + require('common/core/localization/globalize/date'); + require('common/core/localization/globalize/message'); const generateExpectedDate = require('../../helpers/dateHelper.js').generateDate; const $ = require('jquery'); const Globalize = require('globalize'); - const numberLocalization = require('localization/number'); - const dateLocalization = require('localization/date'); - const messageLocalization = require('localization/message'); + const numberLocalization = require('common/core/localization/number'); + const dateLocalization = require('common/core/localization/date'); + const messageLocalization = require('common/core/localization/message'); const config = require('core/config'); const ExcelJSLocalizationFormatTests = require('../DevExpress.exporter/exceljsParts/exceljs.format.tests.js'); diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.widgets.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.widgets.tests.js index 72451b01e2ff..459ce6cb4c20 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.widgets.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.globalize.widgets.tests.js @@ -16,14 +16,14 @@ cldrData.forEach(localeCldrData => { Globalize.load(localeCldrData); }); -require('localization/globalize/core'); -require('localization/globalize/number'); -require('localization/globalize/currency'); -require('localization/globalize/date'); -require('localization/globalize/message'); +require('common/core/localization/globalize/core'); +require('common/core/localization/globalize/number'); +require('common/core/localization/globalize/currency'); +require('common/core/localization/globalize/date'); +require('common/core/localization/globalize/message'); const $ = require('jquery'); -const dateLocalization = require('localization/date'); +const dateLocalization = require('common/core/localization/date'); require('ui/date_box'); require('viz/chart'); diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.tests.js index d703cb459f62..67bfb491acee 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.tests.js @@ -1,12 +1,12 @@ import '../../helpers/noIntl.js'; import Intl from 'intl'; import sharedTests from './sharedParts/localization.shared.js'; -import dateLocalization from 'localization/date'; -import numberLocalization from 'localization/number'; -import intlDateLocalization from 'localization/intl/date'; -import intlNumberLocalization from 'localization/intl/number'; -import { locale } from 'localization/core'; -import { disableIntl } from 'localization'; +import dateLocalization from 'common/core/localization/date'; +import numberLocalization from 'common/core/localization/number'; +import intlDateLocalization from 'common/core/localization/intl/date'; +import intlNumberLocalization from 'common/core/localization/intl/number'; +import { locale } from 'common/core/localization/core'; +import { disableIntl } from 'common/core/localization'; import config from 'core/config'; import ExcelJSLocalizationFormatTests from '../DevExpress.exporter/exceljsParts/exceljs.format.tests.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.widgets.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.widgets.tests.js index 7d04d2d60d70..b8568c4684bb 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.widgets.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.intl.widgets.tests.js @@ -1,11 +1,11 @@ import 'intl'; -import 'localization/number'; -import { locale } from 'localization/core'; +import 'common/core/localization/number'; +import { locale } from 'common/core/localization/core'; import $ from 'jquery'; import 'ui/date_box'; import { ExportFormat } from 'exporter/exceljs/export_format'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import keyboardMock from '../../helpers/keyboardMock.js'; const TEXTEDITOR_INPUT_SELECTOR = '.dx-texteditor-input'; diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js index 6f4570399b3b..fb2c4c879ee2 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js @@ -1,7 +1,7 @@ const localization = require('localization'); const dictionaries = {}; -dictionaries['zh-tw'] = require('localization/messages/zh-tw.json!'); +dictionaries['zh-tw'] = require('common/core/localization/messages/zh-tw.json!'); QUnit.module('Locale messages of DevExtreme', { }, () => { diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.nativeIntl.base.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.nativeIntl.base.tests.js index e934db79c565..802712834c5e 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.nativeIntl.base.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.nativeIntl.base.tests.js @@ -1,6 +1,6 @@ -import dateLocalization from 'localization/date'; -import numberLocalization from 'localization/number'; -import { locale } from 'localization/core'; +import dateLocalization from 'common/core/localization/date'; +import numberLocalization from 'common/core/localization/number'; +import { locale } from 'common/core/localization/core'; locale('en'); diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.utils.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.utils.tests.js index b2fef7d89ea5..7a30ec972570 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.utils.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.utils.tests.js @@ -1,4 +1,4 @@ -import { toFixed } from 'localization/utils'; +import { toFixed } from 'common/core/localization/utils'; const { module: testModule, test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.localization/sharedParts/localization.shared.js b/packages/devextreme/testing/tests/DevExpress.localization/sharedParts/localization.shared.js index cf45f8dd2395..75749894b0da 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/sharedParts/localization.shared.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/sharedParts/localization.shared.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import dateLocalization from 'localization/date'; -import numberLocalization from 'localization/number'; -import messageLocalization from 'localization/message'; +import dateLocalization from 'common/core/localization/date'; +import numberLocalization from 'common/core/localization/number'; +import messageLocalization from 'common/core/localization/message'; import errors from 'core/errors'; import localization from 'localization'; import config from 'core/config'; diff --git a/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js index 3db8ffa96ac4..edf83bb11f69 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js @@ -1,8 +1,8 @@ -require('localization/globalize/core'); -require('localization/globalize/number'); -require('localization/globalize/currency'); -require('localization/globalize/date'); -require('localization/globalize/message'); +require('common/core/localization/globalize/core'); +require('common/core/localization/globalize/number'); +require('common/core/localization/globalize/currency'); +require('common/core/localization/globalize/date'); +require('common/core/localization/globalize/message'); const cldrData = [ require('devextreme-cldr-data/fr.json!json') ]; @@ -10,7 +10,7 @@ const cldrData = [ const ValidationEngine = require('ui/validation_engine'); const Globalize = require('globalize'); const localization = require('localization'); -const fr = require('localization/messages/fr.json!'); +const fr = require('common/core/localization/messages/fr.json!'); cldrData.forEach(localeCldrData => { Globalize.load(localeCldrData); diff --git a/packages/devextreme/testing/tests/DevExpress.performance/overlaysStyleRecalculations.tests.js b/packages/devextreme/testing/tests/DevExpress.performance/overlaysStyleRecalculations.tests.js index ba690583970c..27278b49c314 100644 --- a/packages/devextreme/testing/tests/DevExpress.performance/overlaysStyleRecalculations.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.performance/overlaysStyleRecalculations.tests.js @@ -5,7 +5,7 @@ require('ui/popup'); require('generic_light.css!'); const $ = require('jquery'); -const positionUtils = require('animation/position'); +const positionUtils = require('common/core/animation/position'); positionUtils.calculateScrollbarWidth(); diff --git a/packages/devextreme/testing/tests/DevExpress.performance/translatorRecalculations.tests.js b/packages/devextreme/testing/tests/DevExpress.performance/translatorRecalculations.tests.js index 232060e7df51..cab359634bbf 100644 --- a/packages/devextreme/testing/tests/DevExpress.performance/translatorRecalculations.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.performance/translatorRecalculations.tests.js @@ -1,6 +1,6 @@ require('../../helpers/qunitPerformanceExtension.js'); const $ = require('jquery'); -const translator = require('animation/translator'); +const translator = require('common/core/animation/translator'); QUnit.testStart(function() { $('#qunit-fixture').html('
'); diff --git a/packages/devextreme/testing/tests/DevExpress.serverSide/widgetsCreation.tests.js b/packages/devextreme/testing/tests/DevExpress.serverSide/widgetsCreation.tests.js index 2d3b4b8802d8..cd0c19786b31 100644 --- a/packages/devextreme/testing/tests/DevExpress.serverSide/widgetsCreation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.serverSide/widgetsCreation.tests.js @@ -1,6 +1,6 @@ const widgets = require('../../helpers/widgetsList.js').widgetsList; -const DataSource = require('data/data_source'); +const DataSource = require('common/data/data_source'); QUnit.module('Widget creation', { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/click.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/click.tests.js index bb78aa995d6f..b1a60379837d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/click.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/click.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; -import clickEvent from 'events/click'; +import clickEvent from 'common/core/events/click'; import domUtils from '__internal/core/utils/m_dom'; import support from '__internal/core/utils/m_support'; import devices from '__internal/core/m_devices'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/contextmenu.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/contextmenu.tests.js index 25de98e2b59d..b2fbf79af553 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/contextmenu.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/contextmenu.tests.js @@ -2,8 +2,8 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; const devices = require('core/devices'); const support = require('core/utils/support'); -const holdEvent = require('events/hold'); -const contextMenuEvent = require('events/contextmenu'); +const holdEvent = require('common/core/events/hold'); +const contextMenuEvent = require('common/core/events/contextmenu'); QUnit.testStart(function() { const markup = diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/dblclick.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/dblclick.tests.js index 0d6d62db4230..0a29dd77b7f3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/dblclick.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/dblclick.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const dblclickEvent = require('events/dblclick'); +const dblclickEvent = require('common/core/events/dblclick'); const { dblClick } = require('__internal/events/m_dblclick'); const pointerMock = require('../../helpers/pointerMock.js'); @@ -39,7 +39,7 @@ QUnit.test('dxdblclick should not be handled on a usual dxclick even if dblClick const el = $('#element'); const handler = sinon.stub(); - // emulate calling .off('dxdblclick') before import 'events/dblclick' (T1208575) + // emulate calling .off('dxdblclick') before import 'common/core/events/dblclick' (T1208575) dblClick.remove(); el.off(dblclickEvent.name); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/drag.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/drag.tests.js index 075133aea5e5..182e9b32063c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/drag.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/drag.tests.js @@ -1,8 +1,8 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; -const dragEvents = require('events/drag'); +const dragEvents = require('common/core/events/drag'); const support = require('core/utils/support'); -const GestureEmitter = require('events/gesture/emitter.gesture'); +const GestureEmitter = require('common/core/events/gesture/emitter.gesture'); const dropTargets = dragEvents.dropTargets; const pointerMock = require('../../helpers/pointerMock.js'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/eventRegistrator.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/eventRegistrator.tests.js index 8991da54889f..0bdf439505a3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/eventRegistrator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/eventRegistrator.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import registerEvent from 'events/core/event_registrator'; -import eventsEngine from 'events/core/events_engine'; -import registerEventCallbacks from 'events/core/event_registrator_callbacks'; +import registerEvent from 'common/core/events/core/event_registrator'; +import eventsEngine from 'common/core/events/core/events_engine'; +import registerEventCallbacks from 'common/core/events/core/event_registrator_callbacks'; import Class from 'core/class'; import eventHelper from '../../helpers/eventHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/events.utils.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/events.utils.tests.js index b1debe5b84b3..9def33e8166b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/events.utils.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/events.utils.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { compare } from 'core/utils/version'; -import { getEventTarget } from 'events/utils/event_target'; +import { getEventTarget } from 'common/core/events/utils/event_target'; import { eventData, eventDelta, @@ -9,7 +9,7 @@ import { normalizeKeyName, getChar, isCommandKeyPressed, -} from 'events/utils/index'; +} from 'common/core/events/utils/index'; import pointerMock from '../../helpers/pointerMock.js'; import nativePointerMock from '../../helpers/nativePointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/eventsEngine.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/eventsEngine.tests.js index 9131093a4db0..69dd769503b9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/eventsEngine.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/eventsEngine.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import keyboardMock from '../../helpers/keyboardMock.js'; -import registerEvent from 'events/core/event_registrator'; +import registerEvent from 'common/core/events/core/event_registrator'; import { compare as compareVersion } from 'core/utils/version'; QUnit.module('base'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/eventsInteraction.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/eventsInteraction.tests.js index d4ccecc93f9b..627e83b40965 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/eventsInteraction.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/eventsInteraction.tests.js @@ -2,17 +2,17 @@ import $ from 'jquery'; import { noop } from '__internal/core/utils/m_common'; import domUtils from '__internal/core/utils/m_dom'; import devices from '__internal/core/m_devices'; -import eventUtils from 'events/utils/index'; -import Emitter from 'events/core/emitter'; -import GestureEmitter from 'events/gesture/emitter.gesture'; -import registerEmitter from 'events/core/emitter_registrator'; -import feedbackEvents from 'events/core/emitter.feedback'; -import scrollEvents from 'events/gesture/emitter.gesture.scroll'; -import holdEvent from 'events/hold'; -import swipeEvents from 'events/swipe'; -import transformEvent from 'events/transform'; -import dragEvents from 'events/drag'; -import dblclickEvent from 'events/dblclick'; +import eventUtils from 'common/core/events/utils/index'; +import Emitter from 'common/core/events/core/emitter'; +import GestureEmitter from 'common/core/events/gesture/emitter.gesture'; +import registerEmitter from 'common/core/events/core/emitter_registrator'; +import feedbackEvents from 'common/core/events/core/emitter.feedback'; +import scrollEvents from 'common/core/events/gesture/emitter.gesture.scroll'; +import holdEvent from 'common/core/events/hold'; +import swipeEvents from 'common/core/events/swipe'; +import transformEvent from 'common/core/events/transform'; +import dragEvents from 'common/core/events/drag'; +import dblclickEvent from 'common/core/events/dblclick'; import pointerMock from '../../helpers/pointerMock.js'; const GESTURE_COVER_CLASS = 'dx-gesture-cover'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/feedback.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/feedback.tests.js index ca7bdd606531..6458f0852da3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/feedback.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/feedback.tests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; const devices = require('core/devices'); -const feedbackEvents = require('events/core/emitter.feedback'); +const feedbackEvents = require('common/core/events/core/emitter.feedback'); const pointerMock = require('../../helpers/pointerMock.js'); QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/hold.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/hold.tests.js index fefc05414cfb..78a4db9961b1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/hold.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/hold.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const holdEvent = require('events/hold'); +const holdEvent = require('common/core/events/hold'); const pointerMock = require('../../helpers/pointerMock.js'); QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/hover.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/hover.tests.js index 0924e5cdb6cb..a358fb58f39d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/hover.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/hover.tests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); const devices = require('core/devices'); -const hoverEvents = require('events/hover'); +const hoverEvents = require('common/core/events/hover'); QUnit.testStart(function() { const markup = diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/baseTests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/baseTests.js index e17b0d147aca..abb399642422 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/baseTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/baseTests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; -const BaseStrategy = require('events/pointer/base'); -const registerEvent = require('events/core/event_registrator'); +const BaseStrategy = require('common/core/events/pointer/base'); +const registerEvent = require('common/core/events/core/event_registrator'); const special = require('../../../helpers/eventHelper.js').special; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseAndTouchTests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseAndTouchTests.js index fa064fc4536e..ac065b0129b6 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseAndTouchTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseAndTouchTests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); -const MouseAndTouchStrategy = require('events/pointer/mouse_and_touch'); -const registerEvent = require('events/core/event_registrator'); +const MouseAndTouchStrategy = require('common/core/events/pointer/mouse_and_touch'); +const registerEvent = require('common/core/events/core/event_registrator'); const nativePointerMock = require('../../../helpers/nativePointerMock.js'); const special = require('../../../helpers/eventHelper.js').special; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseTests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseTests.js index 2ba312e54303..8733017ed2d0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/mouseTests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); -const MouseStrategy = require('events/pointer/mouse'); -const registerEvent = require('events/core/event_registrator'); +const MouseStrategy = require('common/core/events/pointer/mouse'); +const registerEvent = require('common/core/events/core/event_registrator'); const nativePointerMock = require('../../../helpers/nativePointerMock.js'); const special = require('../../../helpers/eventHelper.js').special; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/strategySelectionTests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/strategySelectionTests.js index 20c35dbfa8d8..323f83a215b7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/strategySelectionTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/strategySelectionTests.js @@ -1,8 +1,8 @@ import GlobalConfig from 'core/config'; -import { getStrategy } from 'events/pointer'; -import TouchStrategy from 'events/pointer/touch'; -import MouseStrategy from 'events/pointer/mouse'; -import MouseAndTouchStrategy from 'events/pointer/mouse_and_touch'; +import { getStrategy } from 'common/core/events/pointer'; +import TouchStrategy from 'common/core/events/pointer/touch'; +import MouseStrategy from 'common/core/events/pointer/mouse'; +import MouseAndTouchStrategy from 'common/core/events/pointer/mouse_and_touch'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/touchTests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/touchTests.js index 5857804e8c85..78cf41582d81 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/touchTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/pointerParts/touchTests.js @@ -1,10 +1,10 @@ const $ = require('jquery'); -const TouchStrategy = require('events/pointer/touch'); -const registerEvent = require('events/core/event_registrator'); +const TouchStrategy = require('common/core/events/pointer/touch'); +const registerEvent = require('common/core/events/core/event_registrator'); const nativePointerMock = require('../../../helpers/nativePointerMock.js'); const noop = require('core/utils/common').noop; const special = require('../../../helpers/eventHelper.js').special; -const eventsEngine = require('events/core/events_engine'); +const eventsEngine = require('common/core/events/core/events_engine'); QUnit.module('touch events', { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/remove.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/remove.tests.js index 93ab45907107..b5f4cc51e47b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/remove.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/remove.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import eventsEngine from 'events/core/events_engine'; -import { removeEvent } from 'events/remove'; +import eventsEngine from 'common/core/events/core/events_engine'; +import { removeEvent } from 'common/core/events/remove'; QUnit.testStart(function() { const markup = '
'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/scroll.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/scroll.tests.js index d15ad4438cab..d80ac13750a1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/scroll.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/scroll.tests.js @@ -1,11 +1,11 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; -const scrollEvents = require('events/gesture/emitter.gesture.scroll'); -const GestureEmitter = require('events/gesture/emitter.gesture'); -const eventUtils = require('events/utils/index'); +const scrollEvents = require('common/core/events/gesture/emitter.gesture.scroll'); +const GestureEmitter = require('common/core/events/gesture/emitter.gesture'); +const eventUtils = require('common/core/events/utils/index'); const devices = require('core/devices'); const compareVersions = require('core/utils/version').compare; -const animationFrame = require('animation/frame'); +const animationFrame = require('common/core/animation/frame'); const pointerMock = require('../../helpers/pointerMock.js'); QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/swipe.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/swipe.tests.js index b2b216b4a6ac..fbfa26200fb5 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/swipe.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/swipe.tests.js @@ -1,11 +1,11 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; -import swipeEvents from 'events/swipe'; +import swipeEvents from 'common/core/events/swipe'; import mathUtils from 'core/utils/math'; import domUtils from '__internal/core/utils/m_dom'; import Action from '__internal/core/m_action'; import devices from '__internal/core/m_devices'; -import GestureEmitter from 'events/gesture/emitter.gesture'; +import GestureEmitter from 'common/core/events/gesture/emitter.gesture'; import pointerMock from '../../helpers/pointerMock.js'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/transformation.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/transformation.tests.js index 42ee470f4d90..a0e83e63a5a6 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/transformation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/transformation.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const transformEvent = require('events/transform'); +const transformEvent = require('common/core/events/transform'); $('#qunit-fixture').addClass('qunit-fixture-visible'); QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.events/wheel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.events/wheel.tests.js index 400784272019..458537abb57c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.events/wheel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.events/wheel.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const wheelEvent = require('events/core/wheel'); +const wheelEvent = require('common/core/events/core/wheel'); const nativePointerMock = require('../../helpers/nativePointerMock.js'); QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.integration.tests.js index 14987b98a6f6..065bbf64d23b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.integration.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import typeUtils from 'core/utils/type'; import browser from 'core/utils/browser'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import config from 'core/config'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.tests.js index 52cbd4f0801d..e31a921306a1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/adaptiveColumns.tests.js @@ -7,7 +7,7 @@ import { noop as noop } from 'core/utils/common'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; import dataGridMocks from '../../helpers/dataGridMocks.js'; import pointerMock from '../../helpers/pointerMock.js'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import typeUtils from 'core/utils/type'; import config from 'core/config'; import renderer from 'core/renderer'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooser.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooser.integration.tests.js index 4aacf0bd2a18..c0ccae2eb2f8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooser.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooser.integration.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; QUnit.testStart(function() { const gridMarkup = ` diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooserModule.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooserModule.tests.js index 523515b3ce96..ce46b35f237d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooserModule.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnChooserModule.tests.js @@ -8,7 +8,7 @@ import devices from '__internal/core/m_devices'; import themes from 'ui/themes'; import dataGridMocks from '../../helpers/dataGridMocks.js'; import publicComponentUtils from 'core/utils/public_component'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import { TreeViewSearchBoxWrapper } from '../../helpers/wrappers/searchBoxWrappers.js'; const device = devices.real(); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.integration.tests.js index ece56b890fbd..e7d48ef9d175 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.integration.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import browser from 'core/utils/browser'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import commonUtils from 'core/utils/common'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.tests.js index cdf71831588a..376215cf6ef8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnFixing.tests.js @@ -9,7 +9,7 @@ import nativePointerMock from '../../helpers/nativePointerMock.js'; import { setupDataGridModules, MockDataController, MockColumnsController } from '../../helpers/dataGridMocks.js'; import gridCoreUtils from '__internal/grids/grid_core/m_utils'; import dataUtils from 'core/element_data'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import { getOuterHeight } from 'core/utils/size'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsController.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsController.tests.js index 87bcb225c478..f6d917b6793b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsController.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsController.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import dateLocalization from 'localization/date'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import dateLocalization from 'common/core/localization/date'; import { isFunction } from 'core/utils/type'; import gridCore from '__internal/grids/data_grid/m_core'; import dataSourceAdapter from '__internal/grids/data_grid/m_data_source_adapter'; @@ -14,9 +14,9 @@ import ajaxMock from '../../helpers/ajaxMock.js'; import 'ui/data_grid'; -import 'localization/globalize/currency'; -import 'localization/globalize/number'; -import { locale } from 'localization/core'; +import 'common/core/localization/globalize/currency'; +import 'common/core/localization/globalize/number'; +import { locale } from 'common/core/localization/core'; const createMockDataSource = function(items, loadOptions) { loadOptions = loadOptions || {}; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsHeadersView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsHeadersView.tests.js index dcb9f6736e7a..ee037ba51fe7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsHeadersView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsHeadersView.tests.js @@ -6,11 +6,11 @@ import typeUtils from 'core/utils/type'; import { format } from 'core/utils/string'; import config from 'core/config'; import devices from '__internal/core/m_devices'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import dataGridMocks from '../../helpers/dataGridMocks.js'; import { findShadowHostOrDocument } from '../../helpers/dataGridHelper.js'; -import dateLocalization from 'localization/date'; -import messageLocalization from 'localization/message'; +import dateLocalization from 'common/core/localization/date'; +import messageLocalization from 'common/core/localization/message'; import { addShadowDomStyles } from 'core/utils/shadow_dom.js'; import 'ui/data_grid'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsResizingReorderingModule.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsResizingReorderingModule.tests.js index 58395ff82d76..b35855666997 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsResizingReorderingModule.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsResizingReorderingModule.tests.js @@ -6,7 +6,7 @@ import 'ui/data_grid'; import $ from 'jquery'; import { noop } from 'core/utils/common'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dataGridMocks from '../../helpers/dataGridMocks.js'; const MockTablePositionViewController = dataGridMocks.MockTablePositionViewController; @@ -20,7 +20,7 @@ const MockColumnsController = dataGridMocks.MockColumnsController; const MockEditingController = dataGridMocks.MockEditingController; import gridCore from '__internal/grids/data_grid/m_core'; -import dragEvents from 'events/drag'; +import dragEvents from 'common/core/events/drag'; import columnsResizingReordering from '__internal/grids/data_grid/module_not_extended/columns_resizing_reordering'; import { ColumnChooserView } from '__internal/grids/data_grid/module_not_extended/column_chooser'; import { ColumnHeadersView } from '__internal/grids/data_grid/module_not_extended/column_headers'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsView.tests.js index 7115bd35e590..a372e45c8d8f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/columnsView.tests.js @@ -7,7 +7,7 @@ import 'ui/data_grid'; import browser from 'core/utils/browser'; import { ColumnsView } from '__internal/grids/grid_core/views/m_columns_view'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dataGridMocks from '../../helpers/dataGridMocks.js'; const MockColumnsController = dataGridMocks.MockColumnsController; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataController.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataController.tests.js index 4c8f74f96489..07c53c564db5 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataController.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataController.tests.js @@ -2,10 +2,10 @@ import $ from 'jquery'; import config from 'core/config'; import formatHelper from 'format_helper'; import errors from 'ui/widget/ui.errors'; -import { errors as dataErrors } from 'data/errors'; +import { errors as dataErrors } from 'common/data/errors'; import typeUtils from 'core/utils/type'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; import gridCoreUtils from '__internal/grids/grid_core/m_utils'; import { setupDataGridModules, MockGridDataSource } from '../../helpers/dataGridMocks.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataGrid.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataGrid.tests.js index 021b42030641..e2000e8a5f9c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataGrid.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataGrid.tests.js @@ -9,11 +9,11 @@ import devices from '__internal/core/m_devices'; import { version } from 'core/version'; import errors from 'core/errors'; import gridCore from '__internal/grids/data_grid/m_core'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import messageLocalization from 'localization/message'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import messageLocalization from 'common/core/localization/message'; import { setTemplateEngine } from 'core/templates/template_engine_registry'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import config from 'core/config'; import ajaxMock from '../../helpers/ajaxMock.js'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataSource.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataSource.tests.js index 6cf38d965b14..bc43bc4c75f4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataSource.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/dataSource.tests.js @@ -1,11 +1,11 @@ import $ from 'jquery'; import { logger } from 'core/utils/console'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import ODataStore from 'data/odata/store'; -import dataQuery from 'data/query'; -import { queryByOptions } from 'data/store_helper'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import ODataStore from 'common/data/odata/store'; +import dataQuery from 'common/data/query'; +import { queryByOptions } from 'common/data/store_helper'; import gridCore from '__internal/grids/data_grid/m_core'; import { createOffsetFilter } from '__internal/grids/data_grid/grouping/m_grouping_core'; import { setupDataGridModules } from '../../helpers/dataGridMocks.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.integration.tests.js index ea186dd1c2b2..23cbd3158a7f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.integration.tests.js @@ -1,10 +1,10 @@ import $ from 'jquery'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; -import pointerEvents from 'events/pointer'; +import fx from 'common/core/animation/fx'; +import pointerEvents from 'common/core/events/pointer'; import themes from 'ui/themes'; import typeUtils from 'core/utils/type'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import SelectBox from 'ui/select_box'; import 'ui/text_area'; import config from 'core/config'; @@ -18,7 +18,7 @@ import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.j import { generateItems } from '../../helpers/dataGridMocks.js'; import { getOuterHeight } from 'core/utils/size'; import { getEmulatorStyles } from '../../helpers/stylesHelper.js'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; const TEXTEDITOR_INPUT_SELECTOR = '.dx-texteditor-input'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.tests.js index 6d5f8a21bc2e..b712d1cc835b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editing.tests.js @@ -1,4 +1,4 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import config from 'core/config'; import devices from '__internal/core/m_devices'; import dataUtils from 'core/element_data'; @@ -9,11 +9,11 @@ import { Deferred } from 'core/utils/deferred'; import { getHeight, getWidth, setWidth, getOffset } from 'core/utils/size'; import typeUtils from 'core/utils/type'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; -import eventsEngine from 'events/core/events_engine'; -import pointerEvents from 'events/pointer'; -import { name as clickEventName } from 'events/click'; -import { name as dblClickEventName } from 'events/dblclick'; -import { triggerResizeEvent } from 'events/visibility_change'; +import eventsEngine from 'common/core/events/core/events_engine'; +import pointerEvents from 'common/core/events/pointer'; +import { name as clickEventName } from 'common/core/events/click'; +import { name as dblClickEventName } from 'common/core/events/dblclick'; +import { triggerResizeEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; import 'ui/autocomplete'; @@ -29,7 +29,7 @@ import { getCells, generateItems, MockColumnsController, MockDataController, set import pointerMock from '../../helpers/pointerMock.js'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { findShadowHostOrDocument } from '../../helpers/dataGridHelper.js'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; QUnit.testStart(function() { const markup = diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editorFactory.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editorFactory.tests.js index 62034517bae9..807f0e5b6085 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editorFactory.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/editorFactory.tests.js @@ -39,7 +39,7 @@ import 'ui/tag_box'; import TextArea from 'ui/text_area'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import browser from 'core/utils/browser'; import devices from '__internal/core/m_devices'; import SelectBox from 'ui/select_box'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/exportController.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/exportController.tests.js index 4c3fcd3b2c40..05fab53a5e4f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/exportController.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/exportController.tests.js @@ -5,8 +5,8 @@ import 'generic_light.css!'; import 'ui/data_grid'; import { setupDataGridModules } from '../../helpers/dataGridMocks.js'; -import ArrayStore from 'data/array_store'; -import messageLocalization from 'localization/message'; +import ArrayStore from 'common/data/array_store'; +import messageLocalization from 'common/core/localization/message'; import { prepareItems } from '__internal/grids/grid_core/m_export'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterBuilder.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterBuilder.tests.js index 14626172b33c..7bddf49743e8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterBuilder.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterBuilder.tests.js @@ -1,7 +1,7 @@ import 'ui/data_grid'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dataGridMocks from '../../helpers/dataGridMocks.js'; const setupDataGridModules = dataGridMocks.setupDataGridModules; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterPanel.tests.js index 59032b18ed13..b20fa3f0080c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterPanel.tests.js @@ -1,10 +1,10 @@ import 'ui/data_grid'; import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import { setupDataGridModules } from '../../helpers/dataGridMocks.js'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import errors from 'ui/widget/ui.errors'; const FILTER_PANEL_CLASS = 'dx-datagrid-filter-panel'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterRow.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterRow.tests.js index 858cc643fa2a..1744b86ee05f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterRow.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterRow.tests.js @@ -2,15 +2,15 @@ import 'generic_light.css!'; import 'ui/data_grid'; import 'ui/tag_box'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import $ from 'jquery'; import { noop } from 'core/utils/common'; import { value as viewPort } from 'core/utils/view_port'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; -import dateLocalization from 'localization/date'; +import fx from 'common/core/animation/fx'; +import dateLocalization from 'common/core/localization/date'; import { setupDataGridModules, MockDataController, MockColumnsController } from '../../helpers/dataGridMocks.js'; const device = devices.real(); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterSync.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterSync.tests.js index 493ebf26e57b..7431103e369b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterSync.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filterSync.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import { setupDataGridModules } from '../../helpers/dataGridMocks.js'; import * as customOperations from '__internal/grids/grid_core/filter/m_filter_custom_operations'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/data_grid'; const HEADER_FILTER_CLASS = 'dx-header-filter'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filtering.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filtering.integration.tests.js index 9d0c5c900661..b59cefcd8d46 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filtering.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/filtering.integration.tests.js @@ -1,10 +1,10 @@ import $ from 'jquery'; -import { EdmLiteral } from 'data/odata/utils'; +import { EdmLiteral } from 'common/data/odata/utils'; import commonUtils from 'core/utils/common'; import devices from '__internal/core/m_devices'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import gridCoreUtils from '__internal/grids/grid_core/m_utils'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; import { getEmulatorStyles } from '../../helpers/stylesHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.integration.tests.js index 93cf67b56db3..eae2d8691466 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.integration.tests.js @@ -1,15 +1,15 @@ import $ from 'jquery'; import typeUtils from 'core/utils/type'; import devices from '__internal/core/m_devices'; -import pointerEvents from 'events/pointer'; -import fx from 'animation/fx'; +import pointerEvents from 'common/core/events/pointer'; +import fx from 'common/core/animation/fx'; import commonUtils from 'core/utils/common'; -import { keyboard } from 'events/short'; +import { keyboard } from 'common/core/events/short'; import keyboardMock from '../../helpers/keyboardMock.js'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { CLICK_EVENT } from '../../helpers/grid/keyboardNavigationHelper.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import DataGrid from 'ui/data_grid'; import { getEmulatorStyles } from '../../helpers/stylesHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.tests.js index 515537b82400..c98a8834c3f4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/focus.tests.js @@ -1,12 +1,12 @@ import 'generic_light.css!'; import 'ui/data_grid'; -import 'data/odata/store'; +import 'common/data/odata/store'; import $ from 'jquery'; -import ArrayStore from 'data/array_store'; -import pointerEvents from 'events/pointer'; -import clickEvent from 'events/click'; +import ArrayStore from 'common/data/array_store'; +import pointerEvents from 'common/core/events/pointer'; +import clickEvent from 'common/core/events/click'; import { setupDataGridModules, generateItems } from '../../helpers/dataGridMocks.js'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { CLICK_EVENT, isMobile, device, fireKeyDown, triggerKeyDown } from '../../helpers/grid/keyboardNavigationHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/gridView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/gridView.tests.js index 35373bbff836..e6d65c183617 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/gridView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/gridView.tests.js @@ -1,5 +1,5 @@ import devices from '__internal/core/m_devices'; -import visibilityChange from 'events/visibility_change'; +import visibilityChange from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; import 'ui/data_grid'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/grouping.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/grouping.integration.tests.js index 7446d8e80e6e..9f01e09d6f54 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/grouping.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/grouping.integration.tests.js @@ -1,6 +1,6 @@ import gridCore from '__internal/grids/data_grid/m_core'; -import ArrayStore from 'data/array_store'; -import { DataSource } from 'data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; import commonUtils from 'core/utils/common'; import typeUtils from 'core/utils/type'; import config from 'core/config'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/headerFilter.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/headerFilter.tests.js index 5cfa85c32794..12054fd3ed0a 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/headerFilter.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/headerFilter.tests.js @@ -4,17 +4,17 @@ import 'ui/data_grid'; import gridCoreUtils from '__internal/grids/grid_core/m_utils'; import $ from 'jquery'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import { noop } from 'core/utils/common'; -import ODataStore from 'data/odata/store'; +import ODataStore from 'common/data/odata/store'; import devices from '__internal/core/m_devices'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { invertFilterExpression } from '__internal/grids/grid_core/header_filter/m_header_filter'; -import dragEvents from 'events/drag'; +import dragEvents from 'common/core/events/drag'; import { setupDataGridModules, MockDataController, MockColumnsController } from '../../helpers/dataGridMocks.js'; import viewPortUtils from 'core/utils/view_port'; -import fx from 'animation/fx'; -import messageLocalization from 'localization/message'; +import fx from 'common/core/animation/fx'; +import messageLocalization from 'common/core/localization/message'; import dateSerialization from 'core/utils/date_serialization'; import { ListSearchBoxWrapper } from '../../helpers/wrappers/searchBoxWrappers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.accessibility.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.accessibility.tests.js index 41970aa5a5d6..cee07ca172ce 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.accessibility.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.accessibility.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import 'generic_light.css!'; import 'ui/data_grid'; -import { createEvent } from 'events/utils/index'; +import { createEvent } from 'common/core/events/utils/index'; import { setupDataGridModules } from '../../helpers/dataGridMocks.js'; import { CLICK_EVENT, @@ -12,7 +12,7 @@ import { focusCell, dataGridWrapper } from '../../helpers/grid/keyboardNavigationHelper.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; QUnit.testStart(function() { const markup = ` diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardController.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardController.tests.js index 80895419e3b9..e1dfabf05991 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardController.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardController.tests.js @@ -8,9 +8,9 @@ import { keyboardNavigationModule } from '__internal/grids/grid_core/keyboard_na import commonUtils from 'core/utils/common'; import typeUtils from 'core/utils/type'; import publicComponentUtils from 'core/utils/public_component'; -import eventsEngine from 'events/core/events_engine'; -import pointerEvents from 'events/pointer'; -import { keyboard } from 'events/short'; +import eventsEngine from 'common/core/events/core/events_engine'; +import pointerEvents from 'common/core/events/pointer'; +import { keyboard } from 'common/core/events/short'; import { MockDataController, MockColumnsController, MockEditingController } from '../../helpers/dataGridMocks.js'; import { CLICK_EVENT, callViewsRenderCompleted } from '../../helpers/grid/keyboardNavigationHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardKeys.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardKeys.tests.js index 5996aab4694e..e5d405eace5e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardKeys.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.keyboardKeys.tests.js @@ -10,7 +10,7 @@ import keyboardMock from '../../helpers/keyboardMock.js'; import commonUtils from 'core/utils/common'; import typeUtils from 'core/utils/type'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; -import pointerEvents from 'events/pointer'; +import pointerEvents from 'common/core/events/pointer'; import { setupDataGridModules, MockDataController } from '../../helpers/dataGridMocks.js'; import { CLICK_EVENT, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.realControllers.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.realControllers.tests.js index 0b82ca67a442..d42ef80dfbfd 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.realControllers.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.realControllers.tests.js @@ -5,7 +5,7 @@ import $ from 'jquery'; import 'ui/data_grid'; import commonUtils from 'core/utils/common'; -import pointerEvents from 'events/pointer'; +import pointerEvents from 'common/core/events/pointer'; import { setupDataGridModules } from '../../helpers/dataGridMocks.js'; import { getActiveElement } from '../../helpers/shadowDom.js'; import { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.rowsView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.rowsView.tests.js index ba14041e1ea2..5d965d595942 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.rowsView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/keyboardNavigation.rowsView.tests.js @@ -3,10 +3,10 @@ import 'generic_light.css!'; import $ from 'jquery'; import 'ui/data_grid'; import commonUtils from 'core/utils/common'; -import { createEvent } from 'events/utils/index'; +import { createEvent } from 'common/core/events/utils/index'; import typeUtils from 'core/utils/type'; -import pointerEvents from 'events/pointer'; -import eventsEngine from 'events/core/events_engine'; +import pointerEvents from 'common/core/events/pointer'; +import eventsEngine from 'common/core/events/core/events_engine'; import { setupDataGridModules, MockDataController, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/masterDetail.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/masterDetail.integration.tests.js index f7709b0f1ce1..66657433e0bf 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/masterDetail.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/masterDetail.integration.tests.js @@ -1,6 +1,6 @@ import typeUtils from 'core/utils/type'; import config from 'core/config'; -import pointerEvents from 'events/pointer'; +import pointerEvents from 'common/core/events/pointer'; import commonUtils from 'core/utils/common'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; import $ from 'jquery'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/pagerView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/pagerView.tests.js index 00926234a4d4..8445df0838a4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/pagerView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/pagerView.tests.js @@ -5,7 +5,7 @@ import 'ui/data_grid'; import $ from 'jquery'; import { setupDataGridModules, MockDataController } from '../../helpers/dataGridMocks.js'; import dataUtils from 'core/element_data'; -import { createEvent } from 'events/utils/index'; +import { createEvent } from 'common/core/events/utils/index'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; import Pager from 'ui/pagination'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowDragging.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowDragging.integration.tests.js index 26a45b348cf6..864236c6b19b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowDragging.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowDragging.integration.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import DataGrid from 'ui/data_grid'; import pointerMock from '../../helpers/pointerMock.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import { generateItems } from '../../helpers/dataGridMocks.js'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowsView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowsView.tests.js index 7cdf1941c18e..90a424aad1af 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowsView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/rowsView.tests.js @@ -17,10 +17,10 @@ import pointerMock from '../../helpers/pointerMock.js'; import nativePointerMock from '../../helpers/nativePointerMock.js'; import { setupDataGridModules, MockDataController, MockColumnsController, MockSelectionController, getCells, generateItems } from '../../helpers/dataGridMocks.js'; import { findShadowHostOrDocument } from '../../helpers/dataGridHelper.js'; -import numberLocalization from 'localization/number'; +import numberLocalization from 'common/core/localization/number'; import virtualScrollingCore from '__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core'; -import ODataStore from 'data/odata/store'; -import ArrayStore from 'data/array_store'; +import ODataStore from 'common/data/odata/store'; +import ArrayStore from 'common/data/array_store'; const expandCellTemplate = gridCoreUtils.getExpandCellTemplate(); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/scrolling.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/scrolling.integration.tests.js index 184e3995ca19..27c0b4fa179c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/scrolling.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/scrolling.integration.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import commonUtils from 'core/utils/common'; import devices from '__internal/core/m_devices'; import browser from 'core/utils/browser'; -import pointerEvents from 'events/pointer'; +import pointerEvents from 'common/core/events/pointer'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; import { getHeight, getWidth } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/selection.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/selection.tests.js index 8dfb7b85c570..a99fcd24349d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/selection.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/selection.tests.js @@ -1,13 +1,13 @@ import 'ui/data_grid'; -import 'data/odata/store'; +import 'common/data/odata/store'; import $ from 'jquery'; import { setupDataGridModules, generateItems } from '../../helpers/dataGridMocks.js'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; -import clickEvent from 'events/click'; +import clickEvent from 'common/core/events/click'; import errors from 'ui/widget/ui.errors'; const dataGridWrapper = new DataGridWrapper('#container'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/stateStoring.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/stateStoring.tests.js index 1ee65154aa5a..6fcd98396d5f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/stateStoring.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/stateStoring.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import { setupDataGridModules, MockDataController } from '../../helpers/dataGridMocks.js'; -import ArrayStore from 'data/array_store'; -import fx from 'animation/fx'; +import ArrayStore from 'common/data/array_store'; +import fx from 'common/core/animation/fx'; import 'ui/data_grid'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualColumns.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualColumns.tests.js index bdafceaebb9e..7fa3b79effb6 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualColumns.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualColumns.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import dataGridMocks from '../../helpers/dataGridMocks.js'; import 'ui/data_grid'; import 'generic_light.css!'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import dataSourceAdapter from '__internal/grids/data_grid/m_data_source_adapter'; import { getOuterWidth } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualScrolling.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualScrolling.integration.tests.js index 7471f1c6c1a3..aacfa5f7a6f4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualScrolling.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/virtualScrolling.integration.tests.js @@ -2,17 +2,17 @@ import { getHeight, getWidth } from 'core/utils/size'; import devices from '__internal/core/m_devices'; import commonUtils from 'core/utils/common'; import browser from 'core/utils/browser'; -import ArrayStore from 'data/array_store'; -import { DataSource } from 'data/data_source/data_source'; -import pointerEvents from 'events/pointer'; +import ArrayStore from 'common/data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import pointerEvents from 'common/core/events/pointer'; import DataGridWrapper from '../../helpers/wrappers/dataGridWrappers.js'; import { createDataGrid, baseModuleConfig } from '../../helpers/dataGridHelper.js'; import Scrollable from 'ui/scroll_view/ui.scrollable.js'; import $ from 'jquery'; import pointerMock from '../../helpers/pointerMock.js'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import dataUtils from 'core/element_data'; -import ODataStore from 'data/odata/store'; +import ODataStore from 'common/data/odata/store'; const dataGridWrapper = new DataGridWrapper('#dataGrid'); const isRenovatedScrollable = !!Scrollable.IS_RENOVATED_WIDGET; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/autocomplete.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/autocomplete.tests.js index be257b8c8cb9..a59a8740b37b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/autocomplete.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/autocomplete.tests.js @@ -1,15 +1,15 @@ import $ from 'jquery'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import Autocomplete from 'ui/autocomplete'; import config from 'core/config'; import devices from '__internal/core/m_devices'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import resizeCallbacks from 'core/utils/resize_callbacks'; import { isRenderer } from 'core/utils/type'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import { getHeight, getOuterHeight } from 'core/utils/size'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.markup.tests.js index 7c06483a693f..40bf86ddbe24 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.markup.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import dateSerialization from 'core/utils/date_serialization'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import { isDefined, isRenderer } from 'core/utils/type'; import config from 'core/config'; import windowUtils from 'core/utils/window'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.tests.js index 6f0fbba10678..589c3eb44a1e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendar.tests.js @@ -1,11 +1,11 @@ import $ from 'jquery'; import { camelize } from 'core/utils/inflector'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import dateUtils from 'core/utils/date'; import dateSerialization from 'core/utils/date_serialization'; import { noop } from 'core/utils/common'; -import swipeEvents from 'events/swipe'; -import fx from 'animation/fx'; +import swipeEvents from 'common/core/events/swipe'; +import fx from 'common/core/animation/fx'; import Views from '__internal/ui/calendar/m_calendar.views'; import Calendar from 'ui/calendar'; import pointerMock from '../../helpers/pointerMock.js'; @@ -13,8 +13,8 @@ import keyboardMock from '../../helpers/keyboardMock.js'; import config from 'core/config'; import dataUtils from 'core/element_data'; import devices from 'core/devices.js'; -import dateLocalization from 'localization/date'; -import { normalizeKeyName } from 'events/utils/index'; +import dateLocalization from 'common/core/localization/date'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import localization from 'localization'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarView.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarView.markup.tests.js index 05620297cb43..e80fa16e1624 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarView.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarView.markup.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import dateUtils from 'core/utils/date'; import BaseView from '__internal/ui/calendar/m_calendar.base_view'; import Views from '__internal/ui/calendar/m_calendar.views'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dateSerialization from 'core/utils/date_serialization'; import 'ui/calendar'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarViews.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarViews.tests.js index 4e2adb617845..c651dd953a7d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarViews.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/calendarViews.tests.js @@ -4,10 +4,10 @@ import dateUtils from 'core/utils/date'; import BaseView from '__internal/ui/calendar/m_calendar.base_view'; import Views from '__internal/ui/calendar/m_calendar.views'; import pointerMock from '../../helpers/pointerMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dateSerialization from 'core/utils/date_serialization'; -import dateLocalization from 'localization/date'; -import messageLocalization from 'localization/message'; +import dateLocalization from 'common/core/localization/date'; +import messageLocalization from 'common/core/localization/message'; import 'ui/calendar'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/checkbox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/checkbox.tests.js index 8ca9fe5cc5e2..18d4917d8cae 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/checkbox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/checkbox.tests.js @@ -3,7 +3,7 @@ import devices from '__internal/core/m_devices'; import keyboardMock from '../../helpers/keyboardMock.js'; import { validateGroup } from 'ui/validation_engine'; import dxCheckBox from 'ui/check_box'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; // eslint-disable-next-line spellcheck/spell-checker import { rerender } from 'inferno'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.markup.tests.js index 5466de50e605..2e2555c156c0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.markup.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/color_box'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.tests.js index 0e53e926ffb1..426da5f2d34e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorBox.tests.js @@ -4,8 +4,8 @@ import devices from '__internal/core/m_devices'; import Color from 'color'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; -import fx from 'animation/fx'; -import { normalizeKeyName } from 'events/utils/index'; +import fx from 'common/core/animation/fx'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'generic_light.css!'; import 'ui/color_box'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.markup.tests.js index d7685ff6afb4..b1c5da30188d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.markup.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import '__internal/ui/color_box/m_color_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.tests.js index eecf87e3ba8f..74a7891a7649 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/colorView.tests.js @@ -3,8 +3,8 @@ import { noop } from 'core/utils/common'; import Color from 'color'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; -import fx from 'animation/fx'; -import { normalizeKeyName } from 'events/utils/index'; +import fx from 'common/core/animation/fx'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'generic_light.css!'; import '__internal/ui/color_box/m_color_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.strategy.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.strategy.tests.js index 0e55024c426f..94e7bdc274ac 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.strategy.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.strategy.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dataUtils from 'core/element_data'; import devices from 'core/devices.js'; import keyboardMock from '../../helpers/keyboardMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.tests.js index 0bcf4db7663d..909c17dd248d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateRangeBox.tests.js @@ -5,8 +5,8 @@ import DateRangeBox from 'ui/date_range_box'; import DateBox from 'ui/date_box'; import { isRenderer } from 'core/utils/type'; import { isObject } from 'core/utils/type.js'; -import fx from 'animation/fx'; -import hoverEvents from 'events/hover'; +import fx from 'common/core/animation/fx'; +import hoverEvents from 'common/core/events/hover'; import keyboardMock from '../../helpers/keyboardMock.js'; import Popup from 'ui/popup/ui.popup'; import localization from 'localization'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateView.tests.js index e3829d50a32c..aa540bb086ab 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dateView.tests.js @@ -1,10 +1,10 @@ -import fx from 'animation/fx'; -import translator from 'animation/translator'; +import fx from 'common/core/animation/fx'; +import translator from 'common/core/animation/translator'; import devices from '__internal/core/m_devices'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import '__internal/ui/date_box/m_date_view'; import '__internal/ui/date_box/m_date_view_roller'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.markup.tests.js index cfa747b15631..2e60fd803657 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.markup.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import support from '__internal/core/utils/m_support'; import uiDateUtils from '__internal/ui/date_box/m_date_utils'; import DateBox from 'ui/date_box'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import keyboardMock from '../../helpers/keyboardMock.js'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.mask.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.mask.tests.js index b64cf2697129..11fd1e75c021 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.mask.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.mask.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import { renderDateParts, getDatePartIndexByPosition } from '__internal/ui/date_box/m_date_box.mask.parts'; -import dateParser from 'localization/ldml/date.parser'; -import dateLocalization from 'localization/date'; +import dateParser from 'common/core/localization/ldml/date.parser'; +import dateLocalization from 'common/core/localization/date'; import { noop } from 'core/utils/common'; import pointerMock from '../../helpers/pointerMock.js'; import 'ui/date_box'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js index 313f68a77bef..a8a4caa865ca 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js @@ -4,23 +4,23 @@ import Box from 'ui/box'; import Calendar from 'ui/calendar'; import DateBox from 'ui/date_box'; import config from 'core/config'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import dateSerialization from 'core/utils/date_serialization'; import dateUtils from 'core/utils/date'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../helpers/keyboardMock.js'; import { getActiveElement } from '../../helpers/shadowDom.js'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import localization from 'localization'; -import ja from 'localization/messages/ja.json!'; +import ja from 'common/core/localization/messages/ja.json!'; import pointerMock from '../../helpers/pointerMock.js'; import support from '__internal/core/utils/m_support'; import typeUtils from 'core/utils/type'; import uiDateUtils from '__internal/ui/date_box/m_date_utils'; import { noop } from 'core/utils/common'; import { logger } from 'core/utils/console'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import browser from 'core/utils/browser'; import '../../helpers/calendarFixtures.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.markup.tests.js index 33b6195cca2e..ad9825e9da8e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.markup.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import DropDownBox from 'ui/drop_down_box'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.tests.js index aa78535ab2c1..b6380f72581f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownBox.tests.js @@ -1,14 +1,14 @@ import $ from 'jquery'; import renderer from 'core/renderer'; import keyboardMock from '../../helpers/keyboardMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import DropDownBox from 'ui/drop_down_box'; import typeUtils, { isRenderer } from 'core/utils/type'; import config from 'core/config'; import devices from '__internal/core/m_devices'; -import { normalizeKeyName } from 'events/utils/index'; -import CustomStore from 'data/custom_store'; -import { DataSource } from 'data/data_source/data_source'; +import { normalizeKeyName } from 'common/core/events/utils/index'; +import { CustomStore } from 'common/data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; import 'generic_light.css!'; import 'ui/validator'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownEditor.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownEditor.tests.js index 7fe118d4bdfb..5667f2beb58d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownEditor.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownEditor.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import config from 'core/config'; import devices from '__internal/core/m_devices'; -import eventsEngine from 'events/core/events_engine'; -import fx from 'animation/fx'; +import eventsEngine from 'common/core/events/core/events_engine'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import support from '__internal/core/utils/m_support'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownList.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownList.tests.js index 4b768c1f9ae6..65bf4226cb28 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownList.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownList.tests.js @@ -3,11 +3,11 @@ import { noop } from 'core/utils/common'; import devices from '__internal/core/m_devices'; import { Template } from 'core/templates/template'; import Guid from 'core/guid'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; import keyboardMock from '../../helpers/keyboardMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import ajaxMock from '../../helpers/ajaxMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownOptions.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownOptions.tests.js index ef6adc46e879..a78e5fc9309f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownOptions.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/dropDownOptions.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { dropDownEditorsList } from '../../helpers/widgetsList.js'; import { defaultDropDownOptions } from '../../helpers/dropDownOptions.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/editor.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/editor.tests.js index 605373f2d87c..3b3ed11d3275 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/editor.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/editor.tests.js @@ -4,7 +4,7 @@ import OldEditor from 'ui/editor/editor'; import CheckBoxEditor from '__internal/ui/check_box/editor_base/generated_wrapper'; import Class from 'core/class'; import ValidationEngine from 'ui/validation_engine'; -import hoverEvents from 'events/hover'; +import hoverEvents from 'common/core/events/hover'; import { wrapRenovatedWidget } from '../../helpers/wrapRenovatedWidget.js'; import Validator from 'ui/validator'; import { getOuterWidth } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.markup.tests.js index 949c77b71871..ae7ce916c143 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.markup.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import Lookup from 'ui/lookup'; import { Deferred } from 'core/utils/deferred'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.tests.js index 93323dc89330..838b145d5d19 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/lookup.tests.js @@ -1,17 +1,17 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import devices from '__internal/core/m_devices'; import dataUtils from 'core/element_data'; import config from 'core/config'; import browser from 'core/utils/browser'; import errors from 'core/errors'; import { isRenderer } from 'core/utils/type'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import Query from 'data/query'; -import { DataSource } from 'data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import Query from 'common/data/query'; +import { DataSource } from 'common/data/data_source/data_source'; import themes from 'ui/themes'; import Lookup from 'ui/lookup'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/common.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/common.tests.js index 72ee81b75e89..e12ac51610be 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/common.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/common.tests.js @@ -2,10 +2,10 @@ import $ from 'jquery'; import SpinButton from '__internal/ui/number_box/m_number_box.spin'; import config from 'core/config'; import devices from '__internal/core/m_devices'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import keyboardMock from '../../../helpers/keyboardMock.js'; import pointerMock from '../../../helpers/pointerMock.js'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'ui/number_box'; import 'ui/validator'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/mask.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/mask.tests.js index 8a7bef64bced..31ceaafc392f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/mask.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberBoxParts/mask.tests.js @@ -3,7 +3,7 @@ import browser from 'core/utils/browser'; import config from 'core/config'; import devices from '__internal/core/m_devices'; import keyboardMock from '../../../helpers/keyboardMock.js'; -import numberLocalization from 'localization/number'; +import numberLocalization from 'common/core/localization/number'; import errors from 'core/errors'; import 'ui/text_box/ui.text_editor'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberbox.format.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberbox.format.tests.js index 08fa02972804..d272889078ea 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberbox.format.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/numberbox.format.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import keyboardMock from '../../helpers/keyboardMock.js'; -import numberLocalization from 'localization/number'; +import numberLocalization from 'common/core/localization/number'; import localization from 'localization'; import 'ui/number_box'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/radioGroup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/radioGroup.tests.js index da0a2aa91d6f..52234311698d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/radioGroup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/radioGroup.tests.js @@ -2,12 +2,12 @@ import $ from 'jquery'; import devices from '__internal/core/m_devices'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; -import CustomStore from 'data/custom_store'; -import { DataSource } from 'data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; import { deferUpdate } from 'core/utils/common'; import registerKeyHandlerTestHelper from '../../helpers/registerKeyHandlerTestHelper.js'; import errors from 'ui/widget/ui.errors'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'ui/radio_group'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/rangeSlider.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/rangeSlider.tests.js index 87c4662ccd2c..93be1ed70b11 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/rangeSlider.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/rangeSlider.tests.js @@ -2,8 +2,8 @@ import $ from 'jquery'; import SliderTooltip from '__internal/ui/slider/m_slider_tooltip'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; -import fx from 'animation/fx'; -import { normalizeKeyName } from 'events/utils/index'; +import fx from 'common/core/animation/fx'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'ui/range_slider'; import 'ui/number_box'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.markup.tests.js index f30ae86e67f8..71239e4fcce2 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.markup.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import SelectBox from 'ui/select_box'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; -import fx from 'animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import fx from 'common/core/animation/fx'; import windowUtils from 'core/utils/window'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.tests.js index 8fb9b590d91b..577bf2e4398d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/selectBox.tests.js @@ -4,15 +4,15 @@ import SelectBox from 'ui/select_box'; import devices from '__internal/core/m_devices'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import fx from 'animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import fx from 'common/core/animation/fx'; import { isRenderer } from 'core/utils/type'; import errors from 'core/errors'; import config from 'core/config'; import ariaAccessibilityTestHelper from '../../helpers/ariaAccessibilityTestHelper.js'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'generic_light.css!'; import 'ui/validator'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/slider.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/slider.tests.js index 5b48bb6340bf..e0c1e58c4698 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/slider.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/slider.tests.js @@ -1,17 +1,17 @@ -import fx from 'animation/fx'; -import positionUtils from 'animation/position'; +import fx from 'common/core/animation/fx'; +import positionUtils from 'common/core/animation/position'; import 'generic_light.css!'; import config from 'core/config'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; -import { hideCallback as hideTopOverlayCallback } from 'mobile/hide_callback'; +import { hideCallback as hideTopOverlayCallback } from 'common/core/environment/hide_callback'; import 'ui/slider'; import SliderTooltip from '__internal/ui/slider/m_slider_tooltip'; import SliderHandle from '__internal/ui/slider/m_slider_handle'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; const { module, testStart, test, testInActiveWindow } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/switch.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/switch.tests.js index 3c80857a2593..6f1c0ed35639 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/switch.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/switch.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; -import fx from 'animation/fx'; -import { normalizeKeyName } from 'events/utils/index'; +import fx from 'common/core/animation/fx'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import 'generic_light.css!'; import 'ui/switch'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.markup.tests.js index 0ccd779e77c2..f6c4e6ea1224 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.markup.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import TagBox from 'ui/tag_box'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import windowModule from 'core/utils/window'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.tests.js index 96c105041037..9bb8d4085150 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/tagBox.tests.js @@ -1,23 +1,23 @@ import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { isRenderer } from 'core/utils/type'; import { createTextElementHiddenCopy } from '__internal/core/utils/m_dom'; import ajaxMock from '../../helpers/ajaxMock.js'; import config from 'core/config'; -import dataQuery from 'data/query'; +import dataQuery from 'common/data/query'; import devices from '__internal/core/m_devices'; import coreErrors from 'core/errors'; import uiErrors from 'ui/widget/ui.errors'; -import { errors as dataErrors } from 'data/errors'; -import fx from 'animation/fx'; +import { errors as dataErrors } from 'common/data/errors'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../helpers/keyboardMock.js'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import pointerMock from '../../helpers/pointerMock.js'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import ODataStore from 'data/odata/store'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import ODataStore from 'common/data/odata/store'; import TagBox from 'ui/tag_box'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import { getWidth, getHeight } from 'core/utils/size'; import Guid from 'core/guid'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/textEditorParts/common.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/textEditorParts/common.tests.js index 561d3c8f06f1..40bf5e1f5dc8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/textEditorParts/common.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/textEditorParts/common.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import domUtils from '__internal/core/utils/m_dom'; import devices from '__internal/core/m_devices'; import pointerMock from '../../../helpers/pointerMock.js'; @@ -8,7 +8,7 @@ import caretWorkaround from './caretWorkaround.js'; import themes from 'ui/themes'; import config from 'core/config'; import consoleUtils from 'core/utils/console'; -import { normalizeKeyName } from 'events/utils/index'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import { getWidth, implementationsMap } from 'core/utils/size'; import TextEditor from '__internal/ui/text_box/m_text_editor'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/timeView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/timeView.tests.js index ea6ea5d2142e..8c139c6a929b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/timeView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/timeView.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import keyboardMock from '../../helpers/keyboardMock.js'; import 'ui/date_box/ui.time_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/trackBar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/trackBar.tests.js index faa06e63aaf9..1294c9a6041f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/trackBar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/trackBar.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/track_bar'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/validationGroup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/validationGroup.tests.js index b26ef3c5b0ad..7a92ddb0f4e1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/validationGroup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/validationGroup.tests.js @@ -1,6 +1,6 @@ import Class from 'core/class'; import { Deferred } from 'core/utils/deferred'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import DefaultAdapter from '__internal/ui/validation/m_default_adapter'; import ValidationEngine from 'ui/validation_engine'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.form/form.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.form/form.tests.js index 9e82cdcbc985..ce3da955d02c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.form/form.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.form/form.tests.js @@ -5,7 +5,7 @@ import domAdapter from '__internal/core/m_dom_adapter'; import resizeCallbacks from '__internal/core/utils/m_resize_callbacks'; import typeUtils from 'core/utils/type'; import { extend } from 'core/utils/extend'; -import visibilityEventsModule from 'events/visibility_change'; +import visibilityEventsModule from 'common/core/events/visibility_change'; import { EDITORS_WITHOUT_LABELS } from '__internal/ui/form/m_form.layout_manager.utils'; import 'generic_light.css!'; import $ from 'jquery'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/events.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/events.tests.js index 156c95129201..cbd086dd5988 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/events.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/events.tests.js @@ -2,10 +2,10 @@ import $ from 'jquery'; import 'ui/html_editor'; import { deferUpdate } from 'core/utils/common'; -import { Event as dxEvent } from 'events/index'; +import { Event as dxEvent } from 'common/core/events'; import devices from '__internal/core/m_devices'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import keyboardMock from '../../../helpers/keyboardMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageCursorModule.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageCursorModule.tests.js index 423781adbbc5..99fe6df8b00f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageCursorModule.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageCursorModule.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import ImageCursor from '__internal/ui/html_editor/modules/m_imageCursor'; -import { name as clickEvent } from 'events/click'; +import { name as clickEvent } from 'common/core/events/click'; const moduleConfig = { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageUploadIntegration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageUploadIntegration.tests.js index e1e432ee2a6e..a37e42942c78 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageUploadIntegration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/imageUploadIntegration.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import keyboardMock from '../../../helpers/keyboardMock.js'; import '../../../helpers/xmlHttpRequestMock.js'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/html_editor'; const FIELD_ITEM_CLASS = 'dx-field-item'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/mentionModule.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/mentionModule.tests.js index c1c7cd2703e4..ea0b9c9d8921 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/mentionModule.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/mentionModule.tests.js @@ -5,8 +5,8 @@ import Mentions from '__internal/ui/html_editor/modules/m_mentions'; import { noop } from 'core/utils/common'; import devices from '__internal/core/m_devices'; -import { Event as dxEvent } from 'events/index'; -import { normalizeKeyName } from 'events/utils/index'; +import { Event as dxEvent } from 'common/core/events'; +import { normalizeKeyName } from 'common/core/events/utils/index'; import Quill from 'devextreme-quill'; const SUGGESTION_LIST_CLASS = 'dx-suggestion-list'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingIntegration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingIntegration.tests.js index f05740789f35..013b88b365f9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingIntegration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingIntegration.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import 'ui/html_editor'; -import { name as clickEvent } from 'events/click'; +import { name as clickEvent } from 'common/core/events/click'; import PointerMock from '../../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingModule.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingModule.tests.js index 00e1266be20f..c0746beff649 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingModule.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/resizingModule.tests.js @@ -3,7 +3,7 @@ import Quill from 'devextreme-quill'; import Resizing from '__internal/ui/html_editor/modules/m_resizing'; import devices from '__internal/core/m_devices'; -import { name as clickEvent } from 'events/click'; +import { name as clickEvent } from 'common/core/events/click'; import PointerMock from '../../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/scrolling.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/scrolling.tests.js index 414288767752..1c0cf647c3cb 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/scrolling.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/scrolling.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import nativePointerMock from '../../../helpers/nativePointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/tableContextMenuIntegration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/tableContextMenuIntegration.tests.js index 7e865222021c..e39f1cc280eb 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/tableContextMenuIntegration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/tableContextMenuIntegration.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import 'ui/html_editor'; -import { createEvent } from 'events/utils/index'; -import eventsEngine from 'events/core/events_engine'; +import { createEvent } from 'common/core/events/utils/index'; +import eventsEngine from 'common/core/events/core/events_engine'; const tableMarkup = '\ before table text
\ diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarIntegration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarIntegration.tests.js index e7917546b6ff..2caf6d03d10e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarIntegration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarIntegration.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import 'ui/html_editor'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { checkLink, prepareEmbedValue, prepareTableValue } from './utils.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarModule.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarModule.tests.js index 80e7b67e8f8f..0820c0ee012d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarModule.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.htmlEditor/htmlEditorParts/toolbarModule.tests.js @@ -9,7 +9,7 @@ import Toolbar from '__internal/ui/html_editor/modules/m_toolbar'; import FormDialog from '__internal/ui/html_editor/ui/m_formDialog'; import { noop } from 'core/utils/common'; import keyboardMock from '../../../helpers/keyboardMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import errors from 'ui/widget/ui.errors'; import localization from 'localization'; import resizeCallbacks from 'core/utils/resize_callbacks.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/dataSource_bundled.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/dataSource_bundled.tests.js index 2c2352e1317a..2b4ad041c12d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/dataSource_bundled.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/dataSource_bundled.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; import inflector from '__internal/core/utils/m_inflector'; import { PivotGridDataSource } from '__internal/grids/pivot_grid/data_source/m_data_source'; import summaryDisplayModesModule from '__internal/grids/pivot_grid/summary_display_modes/m_summary_display_modes'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/export.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/export.tests.js index 4ca2544c65d7..9d573c939658 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/export.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/export.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { DataProvider } from '__internal/grids/pivot_grid/export/m_export'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; import { checkDxFontIcon, DX_ICON_XLSX_FILE_CONTENT_CODE } from '../../helpers/checkDxFontIconHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/fieldChooser.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/fieldChooser.tests.js index 8b447dad051c..231994df9bc9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/fieldChooser.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/fieldChooser.tests.js @@ -10,7 +10,7 @@ import { isDefined } from 'core/utils/type'; import devices from '__internal/core/m_devices'; import dataUtils from 'core/element_data'; import renderer from 'core/renderer'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; import { PivotGridDataSource } from '__internal/grids/pivot_grid/data_source/m_data_source'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/pivotGrid.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/pivotGrid.tests.js index faa572fd7d05..45633cf2b948 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/pivotGrid.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/pivotGrid.tests.js @@ -15,8 +15,8 @@ QUnit.testStart(function() { addShadowDomStyles($('#qunit-fixture')); }); -import fx from 'animation/fx'; -import eventsEngine from 'events/core/events_engine'; +import fx from 'common/core/animation/fx'; +import eventsEngine from 'common/core/events/core/events_engine'; import config from 'core/config'; import devices from '__internal/core/m_devices'; import dataUtils from 'core/element_data'; @@ -29,10 +29,10 @@ import { } from 'core/utils/size'; import { isRenderer } from 'core/utils/type'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import { PivotGridDataSource } from '__internal/grids/pivot_grid/data_source/m_data_source'; import 'ui/pivot_grid/ui.pivot_grid'; import { getRealElementWidth } from '__internal/grids/pivot_grid/area_item/m_area_item'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.local.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.local.tests.js index 9f0146e6b6e3..237695e110a0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.local.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.local.tests.js @@ -1,5 +1,5 @@ import '../../content/orders.js'; -import 'data/odata/store'; +import 'common/data/odata/store'; import $ from 'jquery'; import { noop } from 'core/utils/common'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.remote.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.remote.tests.js index 6c56b401b6f0..47576ac5a2c3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.remote.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.remote.tests.js @@ -3,8 +3,8 @@ import { RemoteStore } from '__internal/grids/pivot_grid/remote_store/m_remote_s import { forEachGroup } from '__internal/grids/pivot_grid/remote_store/m_remote_store_utils'; import { sort } from '__internal/grids/pivot_grid/data_source/m_data_source_utils'; import pivotGridUtils from '__internal/grids/pivot_grid/m_widget_utils'; -import ArrayStore from 'data/array_store'; -import DataSource from 'data/data_source'; +import ArrayStore from 'common/data/array_store'; +import DataSource from 'common/data/data_source'; import '../../content/orders.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.xmla.common.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.xmla.common.tests.js index c1a5438f9e99..399dbfce3634 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.xmla.common.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/store.xmla.common.tests.js @@ -2,9 +2,9 @@ import $ from 'jquery'; import ajax from 'core/utils/ajax'; import pivotGridUtils from '__internal/grids/pivot_grid/m_widget_utils'; import { XmlaStore } from '__internal/grids/pivot_grid/xmla_store/m_xmla_store'; -import { errors } from 'data/errors'; +import { errors } from 'common/data/errors'; import localization from 'localization'; -import { getLanguageId } from 'localization/language_codes'; +import { getLanguageId } from 'common/core/localization/language_codes'; const languageId = getLanguageId(); const ERROR_RESPONCE = 'XMLAnalysisError.0xc10a004dQuery (1, 77) The Fiscal hierarchy is used more than once in the Crossjoin function.17712030127'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.resourceProcessor.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.resourceProcessor.tests.js index 1e128ca73f70..567b65c3ff22 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.resourceProcessor.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.resourceProcessor.tests.js @@ -1,6 +1,6 @@ import { AgendaResourceProcessor } from '__internal/scheduler/resources/m_agenda_resource_processor'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; const { module, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.tests.js index 808835325da7..9edc20cb647d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/agenda.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import SchedulerAgenda from '__internal/scheduler/workspaces/m_agenda'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import { AppointmentDataProvider } from '__internal/scheduler/appointments/data_provider/m_appointment_data_provider'; const DATE_TABLE_CELL_CLASS = 'dx-scheduler-date-table-cell'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-0.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-0.tests.js index 88fc1f551599..38afcfbdae5a 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-0.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-0.tests.js @@ -1,11 +1,11 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import Query from 'data/query'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import Query from 'common/data/query'; import dataUtils from 'core/element_data'; import { CLASSES, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-1.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-1.tests.js index 076d1849749a..0bb5897746cd 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-1.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.common-1.tests.js @@ -1,10 +1,10 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; -import translator from 'animation/translator'; -import dblclickEvent from 'events/dblclick'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import translator from 'common/core/animation/translator'; +import dblclickEvent from 'common/core/events/dblclick'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import { supportedScrollingModes, createWrapper, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.dragging.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.dragging.tests.js index 77a38539b704..9c87513ac4c9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.dragging.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/allDayAppointments.dragging.tests.js @@ -1,9 +1,9 @@ import { getOuterHeight } from 'core/utils/size'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; -import dragEvents from 'events/drag'; -import { DataSource } from 'data/data_source/data_source'; +import dragEvents from 'common/core/events/drag'; +import { DataSource } from 'common/data/data_source/data_source'; import dataUtils from 'core/element_data'; import { createWrapper, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.dataProcessor.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.dataProcessor.tests.js index 85d929195135..2caa4b3ec2e4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.dataProcessor.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.dataProcessor.tests.js @@ -1,6 +1,6 @@ import { compileGetter, compileSetter } from 'core/utils/data'; import config from 'core/config'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { AppointmentDataProvider } from '__internal/scheduler/appointments/data_provider/m_appointment_data_provider'; import { getPreparedDataItems } from '__internal/scheduler/r1/utils/index.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.editing.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.editing.tests.js index f98018c6e1f2..d919ca0b6be0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.editing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.editing.tests.js @@ -1,10 +1,10 @@ import { getOuterWidth, getOuterHeight } from 'core/utils/size'; import $ from 'jquery'; import { noop } from 'core/utils/common'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; import { hide } from '__internal/ui/tooltip/m_tooltip'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { Deferred } from 'core/utils/deferred'; import { initTestMarkup, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.filtering.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.filtering.tests.js index 220fcf1e9caf..77330b3b5554 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.filtering.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.filtering.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import dataUtils from 'core/element_data'; import { initTestMarkup, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.monthView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.monthView.tests.js index 3431660dbc4d..94bc36bdf4de 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.monthView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.monthView.tests.js @@ -1,11 +1,11 @@ import { getOuterWidth, getOuterHeight } from 'core/utils/size'; import $ from 'jquery'; -import translator from 'animation/translator'; -import fx from 'animation/fx'; +import translator from 'common/core/animation/translator'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; import Color from 'color'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import browser from 'core/utils/browser'; import { APPOINTMENT_FORM_GROUP_NAMES } from '__internal/scheduler/appointment_popup/m_form'; import { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.resources.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.resources.tests.js index d3d60f7fd8a4..b13e711234a3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.resources.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.resources.tests.js @@ -1,5 +1,5 @@ -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import { initTestMarkup, createWrapper diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.scroll.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.scroll.tests.js index 1ba94cd7d728..79f4b7d64c86 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.scroll.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.scroll.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import { createWrapper, initTestMarkup diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.templates.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.templates.tests.js index 5cd084df5568..8b7d65a9d431 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.templates.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.templates.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import { initTestMarkup, createWrapper, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tests.js index 720225f79b07..e5eb6f3b3519 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import { Appointment } from '__internal/scheduler/appointments/m_appointment'; import { Deferred } from 'core/utils/deferred'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; const { module, test, testStart } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.timeLines.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.timeLines.tests.js index dfe2c60d7e23..f5f5b165432d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.timeLines.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.timeLines.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; import { initTestMarkup, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tooltip.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tooltip.tests.js index 7208a8dce980..cb14107d4702 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tooltip.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.tooltip.tests.js @@ -1,4 +1,4 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { initTestMarkup, createWrapper diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.week.based.views.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.week.based.views.tests.js index 0becf99bad76..a9fbe2f1207b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.week.based.views.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointment.week.based.views.tests.js @@ -1,14 +1,14 @@ import { getHeight, getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; import errors from 'ui/widget/ui.errors'; -import translator from 'animation/translator'; -import dateLocalization from 'localization/date'; -import fx from 'animation/fx'; +import translator from 'common/core/animation/translator'; +import dateLocalization from 'common/core/localization/date'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; import Color from 'color'; import { hide } from '__internal/ui/tooltip/m_tooltip'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import dataUtils from 'core/element_data'; import dateSerialization from 'core/utils/date_serialization'; import { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointmentPopup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointmentPopup.tests.js index 7e34004484b4..7279e2a97ac3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointmentPopup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointmentPopup.tests.js @@ -5,10 +5,10 @@ import { initTestMarkup, createWrapper, isDesktopEnvironment } from '../../helpe import $ from 'jquery'; import devices from '__internal/core/m_devices'; import SelectBox from 'ui/select_box'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import { APPOINTMENT_FORM_GROUP_NAMES } from '__internal/scheduler/appointment_popup/m_form'; import { dateToMilliseconds as toMs } from 'core/utils/date'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.horizontalStrategy.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.horizontalStrategy.tests.js index 099a2881a952..9ffbf0c621ec 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.horizontalStrategy.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.horizontalStrategy.tests.js @@ -3,7 +3,7 @@ import $ from 'jquery'; import dataCoreUtils from 'core/utils/data'; import typeUtils from 'core/utils/type'; import { Deferred } from 'core/utils/deferred'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import '__internal/scheduler/m_scheduler'; import { ExpressionUtils } from '__internal/scheduler/m_expression_utils'; import { createExpressions } from '__internal/scheduler/resources/m_utils'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.tests.js index a7bde7993cd3..f03db0b2147f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.tests.js @@ -9,16 +9,16 @@ import '__internal/scheduler/workspaces/m_work_space_week'; import VerticalAppointmentsStrategy from '__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical'; import HorizontalMonthAppointmentsStrategy from '__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month'; import SchedulerAppointments from '__internal/scheduler/appointments/m_appointment_collection'; -import eventsEngine from 'events/core/events_engine'; -import dblclickEvent from 'events/dblclick'; -import translator from 'animation/translator'; +import eventsEngine from 'common/core/events/core/events_engine'; +import dblclickEvent from 'common/core/events/dblclick'; +import translator from 'common/core/animation/translator'; import dataCoreUtils from 'core/utils/data'; import commonUtils from 'core/utils/common'; import typeUtils, { isRenderer } from 'core/utils/type'; import config from 'core/config'; import Resizable from 'ui/resizable'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import { ExpressionUtils } from '__internal/scheduler/m_expression_utils'; import { Deferred } from 'core/utils/deferred'; import { createExpressions } from '__internal/scheduler/resources/m_utils'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.verticalStrategy.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.verticalStrategy.tests.js index 7f2caa21f27b..38558a04058b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.verticalStrategy.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.verticalStrategy.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import dataCoreUtils from 'core/utils/data'; import typeUtils from 'core/utils/type'; import { Deferred } from 'core/utils/deferred'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import '__internal/scheduler/m_scheduler'; import { ExpressionUtils } from '__internal/scheduler/m_expression_utils'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.events.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.events.tests.js index 219250b5c200..e5171bb93fa8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.events.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.events.tests.js @@ -1,10 +1,10 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import Color from 'color'; import config from 'core/config'; import { noop } from 'core/utils/common'; import resizeCallbacks from 'core/utils/resize_callbacks'; import { isRenderer } from 'core/utils/type'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import $ from 'jquery'; import dxScheduler from '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.initialization.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.initialization.tests.js index 3bf12679570b..bd87840ab89a 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.initialization.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.initialization.tests.js @@ -1,7 +1,7 @@ -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; -import { triggerHidingEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerHidingEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import { AppointmentDataProvider } from '__internal/scheduler/appointments/data_provider/m_appointment_data_provider'; import errors from 'ui/widget/ui.errors'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.markup.tests.js index 199f5c1a45ff..a6b49100d9a8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.markup.tests.js @@ -1,6 +1,6 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dxScheduler from '__internal/scheduler/m_scheduler'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import dateUtils from 'core/utils/date'; import { AppointmentDataProvider } from '__internal/scheduler/appointments/data_provider/m_appointment_data_provider'; import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.methods.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.methods.tests.js index c485cf937e32..36821518546f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.methods.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.methods.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import fx from 'animation/fx'; -import CustomStore from 'data/custom_store'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { CustomStore } from 'common/data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.options.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.options.tests.js index 50c77159e65a..42d65aaeaa37 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.options.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.options.tests.js @@ -1,10 +1,10 @@ import { getOuterHeight } from 'core/utils/size'; import config from 'core/config'; import devices from '__internal/core/m_devices'; -import CustomStore from 'data/custom_store'; -import { DataSource } from 'data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; -import { triggerHidingEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerHidingEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import dxSchedulerWorkSpaceDay from '__internal/scheduler/workspaces/m_work_space_day'; import errors from 'ui/widget/ui.errors'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.tests.js index f06fc99c4f45..5520801da509 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/common.tests.js @@ -1,13 +1,13 @@ import { getOuterHeight, getHeight } from 'core/utils/size'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import config from 'core/config'; import dataUtils from 'core/element_data'; import { isRenderer } from 'core/utils/type'; -import CustomStore from 'data/custom_store'; -import { DataSource } from 'data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; import timeZoneDataUtils from '__internal/scheduler/timezones/m_utils_timezones_data'; -import { triggerHidingEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerHidingEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; import { getTimeZones } from 'time_zone_utils'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/contentReadyEvent.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/contentReadyEvent.tests.js index 729fc3dd8658..2e2bfbbea0cd 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/contentReadyEvent.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/contentReadyEvent.tests.js @@ -1,9 +1,9 @@ import { SchedulerTestWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; import $ from 'jquery'; -import translator from 'animation/translator'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; -import fx from 'animation/fx'; +import translator from 'common/core/animation/translator'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import fx from 'common/core/animation/fx'; import '__internal/scheduler/m_scheduler'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dataSource.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dataSource.tests.js index c3ea1f1cf93f..c8aa780d4d35 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dataSource.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dataSource.tests.js @@ -5,15 +5,15 @@ import { initTestMarkup, isDesktopEnvironment } from '../../helpers/scheduler/helpers.js'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import fx from 'animation/fx'; -import translator from 'animation/translator'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import fx from 'common/core/animation/fx'; +import translator from 'common/core/animation/translator'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import { noop } from 'core/utils/common'; import pointerMock from '../../helpers/pointerMock.js'; -import dragEvents from 'events/drag'; +import dragEvents from 'common/core/events/drag'; const { module, test, testStart } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dragAndDropAppointments.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dragAndDropAppointments.tests.js index d800b813b3ea..22639ee2083c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dragAndDropAppointments.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/dragAndDropAppointments.tests.js @@ -1,11 +1,11 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import $ from 'jquery'; import pointerMock from '../../helpers/pointerMock.js'; import browser from 'core/utils/browser'; -import { DataSource } from 'data/data_source/data_source'; -import translator from 'animation/translator'; +import { DataSource } from 'common/data/data_source/data_source'; +import translator from 'common/core/animation/translator'; import config from 'core/config'; -import dragEvents from 'events/drag'; +import dragEvents from 'common/core/events/drag'; import dataUtils from 'core/element_data'; import Color from 'color'; import { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/editing.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/editing.tests.js index c138be185f39..2e7218bdb3fe 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/editing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/editing.tests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); const devices = require('core/devices'); const tooltip = require('__internal/ui/tooltip/m_tooltip'); -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const keyboardMock = require('../../helpers/keyboardMock.js'); const dataUtils = require('core/element_data'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.RTL.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.RTL.tests.js index 2d30b47853ce..123285126aaa 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.RTL.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.RTL.tests.js @@ -1,6 +1,6 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { createWrapper, initTestMarkup, isDesktopEnvironment } from '../../helpers/scheduler/helpers.js'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import '__internal/scheduler/m_scheduler'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.adaptivity.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.adaptivity.tests.js index 8807bc417173..325a994a7173 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.adaptivity.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.adaptivity.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { createWrapper, initTestMarkup, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.agenda.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.agenda.tests.js index 1c0a2a7b6e09..1626ceb4c9f4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.agenda.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.agenda.tests.js @@ -2,11 +2,11 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; import devices from '__internal/core/m_devices'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import dblclickEvent from 'events/dblclick'; -import fx from 'animation/fx'; +import dblclickEvent from 'common/core/events/dblclick'; +import fx from 'common/core/animation/fx'; import AgendaAppointmentsStrategy from '__internal/scheduler/appointments/rendering_strategies/m_strategy_agenda'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import dataUtils from 'core/element_data'; import { createWrapper, SchedulerTestWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentCollector.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentCollector.tests.js index a7d60dbb6649..9d8c2b74fe2f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentCollector.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentCollector.tests.js @@ -1,13 +1,13 @@ import $ from 'jquery'; -import translator from 'animation/translator'; -import fx from 'animation/fx'; +import translator from 'common/core/animation/translator'; +import fx from 'common/core/animation/fx'; import { createWrapper } from '../../helpers/scheduler/helpers.js'; import themes from 'ui/themes'; import { CompactAppointmentsHelper } from '__internal/scheduler/m_compact_appointments_helper'; import Widget from 'ui/widget/ui.widget'; import Color from 'color'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import AppointmentAdapter from '__internal/scheduler/m_appointment_adapter'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentTooltip.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentTooltip.tests.js index 9738705dc927..89a059ea6519 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentTooltip.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentTooltip.tests.js @@ -3,10 +3,10 @@ import dateSerialization from 'core/utils/date_serialization'; import Tooltip from 'ui/tooltip'; import { hide } from '__internal/ui/tooltip/m_tooltip'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import fx from 'animation/fx'; -import dateLocalization from 'localization/date'; -import messageLocalization from 'localization/message'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import dateLocalization from 'common/core/localization/date'; +import messageLocalization from 'common/core/localization/message'; +import { DataSource } from 'common/data/data_source/data_source'; import keyboardMock from '../../helpers/keyboardMock.js'; import devices from '__internal/core/m_devices'; import dataUtils from 'core/element_data'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointments.crossScrollingEnabled.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointments.crossScrollingEnabled.tests.js index 12de53f4bd51..3a1c712c31dc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointments.crossScrollingEnabled.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointments.crossScrollingEnabled.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import translator from 'animation/translator'; -import fx from 'animation/fx'; +import translator from 'common/core/animation/translator'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; import devices from '__internal/core/m_devices'; import { initTestMarkup, createWrapper } from '../../helpers/scheduler/helpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentsVertical.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentsVertical.tests.js index 92e022999c98..55fceff27c50 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentsVertical.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentsVertical.tests.js @@ -1,10 +1,10 @@ import { getOuterHeight, getOuterWidth, getWidth, getHeight } from 'core/utils/size'; import $ from 'jquery'; import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; -import translator from 'animation/translator'; -import fx from 'animation/fx'; +import translator from 'common/core/animation/translator'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import dataUtils from 'core/element_data'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dateNavigator.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dateNavigator.tests.js index 860dbaac525e..49b56c8c4b02 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dateNavigator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dateNavigator.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import '__internal/scheduler/m_scheduler'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dstAppointments.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dstAppointments.tests.js index a91264398963..c143f21ce6b2 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dstAppointments.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.dstAppointments.tests.js @@ -1,6 +1,6 @@ import { initTestMarkup, createWrapper } from '../../helpers/scheduler/helpers.js'; -import dateLocalization from 'localization/date'; -import fx from 'animation/fx'; +import dateLocalization from 'common/core/localization/date'; +import fx from 'common/core/animation/fx'; import { dateToMilliseconds as toMs } from 'core/utils/date'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.multiWeekAppointments.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.multiWeekAppointments.tests.js index ad7735085df0..f8223015ffce 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.multiWeekAppointments.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.multiWeekAppointments.tests.js @@ -1,10 +1,10 @@ import { getOuterWidth, getOuterHeight } from 'core/utils/size'; import $ from 'jquery'; import { initTestMarkup, createWrapper } from '../../helpers/scheduler/helpers.js'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import Color from 'color'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import '__internal/scheduler/m_scheduler'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.optionChange.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.optionChange.tests.js index c98c1bdd2520..34df43b98cbf 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.optionChange.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.optionChange.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import '__internal/scheduler/m_scheduler'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurrenceRuleValidation.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurrenceRuleValidation.tests.js index 54c9878baa39..9088f23acc68 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurrenceRuleValidation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurrenceRuleValidation.tests.js @@ -9,9 +9,9 @@ QUnit.testStart(function() { require('generic_light.css!'); -const fx = require('animation/fx'); -const dragEvents = require('events/drag'); -const DataSource = require('data/data_source/data_source').DataSource; +const fx = require('common/core/animation/fx'); +const dragEvents = require('common/core/events/drag'); +const DataSource = require('common/data/data_source/data_source').DataSource; require('__internal/scheduler/m_scheduler'); require('ui/drop_down_button'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurringAppointments.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurringAppointments.tests.js index deed380449a0..413d64817d9b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurringAppointments.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.recurringAppointments.tests.js @@ -1,12 +1,12 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; -import dblclickEvent from 'events/dblclick'; +import dblclickEvent from 'common/core/events/dblclick'; import Color from 'color'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; -import dragEvents from 'events/drag'; -import translator from 'animation/translator'; -import { DataSource } from 'data/data_source/data_source'; +import dragEvents from 'common/core/events/drag'; +import translator from 'common/core/animation/translator'; +import { DataSource } from 'common/data/data_source/data_source'; import dateSerialization from 'core/utils/date_serialization'; import { createWrapper, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.dataSource.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.dataSource.tests.js index 6f0a1bf4d54b..dfcd1070325d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.dataSource.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.dataSource.tests.js @@ -1,6 +1,6 @@ import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; -import fx from 'animation/fx'; -import CustomStore from 'data/custom_store'; +import fx from 'common/core/animation/fx'; +import { CustomStore } from 'common/data/custom_store'; const moduleConfig = { beforeEach() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.tests.js index 82de6fb8c0be..c13dcbc6cc68 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.resources.tests.js @@ -3,12 +3,12 @@ import devices from '__internal/core/m_devices'; import 'generic_light.css!'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import { getOuterHeight } from 'core/utils/size'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import Color from 'color'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.timeline.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.timeline.tests.js index 5ffb1fb6412f..b657c3880d4f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.timeline.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.timeline.tests.js @@ -9,8 +9,8 @@ QUnit.testStart(() => { import 'generic_light.css!'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import devices from '__internal/core/m_devices'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.viewSwitcher.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.viewSwitcher.tests.js index c0bb30d79b4a..de69d636a4f4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.viewSwitcher.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.viewSwitcher.tests.js @@ -11,7 +11,7 @@ require('generic_light.css!'); require('ui/drop_down_button'); const noop = require('core/utils/common').noop; -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; require('__internal/scheduler/m_scheduler'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.workSpace.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.workSpace.tests.js index f9e0e5b51679..8ff5de049bfe 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.workSpace.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.workSpace.tests.js @@ -1,16 +1,16 @@ import $ from 'jquery'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import { createWrapper, CLASSES, initTestMarkup, isDesktopEnvironment } from '../../helpers/scheduler/helpers.js'; import keyboardMock from '../../helpers/keyboardMock.js'; import localization from 'localization'; -import eventsEngine from 'events/core/events_engine'; -import fx from 'animation/fx'; +import eventsEngine from 'common/core/events/core/events_engine'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; -import dragEvents from 'events/drag'; -import CustomStore from 'data/custom_store'; +import dragEvents from 'common/core/events/drag'; +import { CustomStore } from 'common/data/custom_store'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import { getOuterHeight, getInnerHeight, getOuterWidth } from 'core/utils/size'; const SELECTED_CELL_CLASS = CLASSES.selectedCell.slice(1); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/keyboardNavigation.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/keyboardNavigation.tests.js index e10bab9864a1..b086b19552c0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/keyboardNavigation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/keyboardNavigation.tests.js @@ -1,4 +1,4 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import $ from 'jquery'; import keyboardMock from '../../helpers/keyboardMock.js'; import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/layoutManager.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/layoutManager.tests.js index 48029d5231f4..f6dba4a3fa63 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/layoutManager.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/layoutManager.tests.js @@ -5,7 +5,7 @@ import '__internal/scheduler/m_scheduler'; import $ from 'jquery'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import AppointmentLayoutManager from '__internal/scheduler/m_appointments_layout_manager'; import BaseAppointmentsStrategy from '__internal/scheduler/appointments/rendering_strategies/m_strategy_base'; @@ -14,7 +14,7 @@ import HorizontalAppointmentsStrategy from '__internal/scheduler/appointments/re import HorizontalMonthLineAppointmentsStrategy from '__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line'; import Color from 'color'; import dataUtils from 'core/element_data'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import { SchedulerTestWrapper } from '../../helpers/scheduler/helpers.js'; const APPOINTMENT_DEFAULT_LEFT_OFFSET = 26; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/loading.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/loading.tests.js index dadcef0df999..44f42af161a7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/loading.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/loading.tests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); const loading = require('__internal/scheduler/m_loading'); const viewPort = require('core/utils/view_port').value; -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const LoadPanel = require('ui/load_panel'); QUnit.module('loading tests', { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/pacificTime.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/pacificTime.tests.js index 4cf3509202e3..0ee4c5f70869 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/pacificTime.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/pacificTime.tests.js @@ -1,6 +1,6 @@ import { initTestMarkup, createWrapper, isDesktopEnvironment, CLASSES } from '../../helpers/scheduler/helpers.js'; import pointerMock from '../../helpers/pointerMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; import { getRecurrenceProcessor } from '__internal/scheduler/m_recurrence'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/perfomance.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/perfomance.tests.js index 40b15c59f759..fb018a5a2957 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/perfomance.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/perfomance.tests.js @@ -3,10 +3,10 @@ import '__internal/scheduler/m_scheduler'; import $ from 'jquery'; import pointerMock from '../../helpers/pointerMock.js'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import { SchedulerTestWrapper } from '../../helpers/scheduler/helpers.js'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceDialog.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceDialog.tests.js index 2f348043ff0f..ae32ab6226a4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceDialog.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceDialog.tests.js @@ -1,4 +1,4 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'generic_light.css!'; import { createWrapper, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceEditor.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceEditor.tests.js index a5568c9817a2..42f0c320a0c3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceEditor.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/recurrenceEditor.tests.js @@ -8,7 +8,7 @@ import ButtonGroup from 'ui/button_group'; import DateBox from 'ui/date_box'; import { getRecurrenceProcessor } from '__internal/scheduler/m_recurrence'; import { createTimeZoneCalculator } from '__internal/scheduler/r1/timezone_calculator/index.js'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; const FREQUENCY_EDITOR = 'dx-recurrence-selectbox-freq'; const REPEAT_COUNT_EDITOR = 'dx-recurrence-numberbox-repeat-count'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/resourceManager.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/resourceManager.tests.js index 615573335171..e3bfd926801b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/resourceManager.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/resourceManager.tests.js @@ -16,8 +16,8 @@ import { getDataAccessors, loadResources } from '__internal/scheduler/resources/m_utils'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; const testData = { rooms: [{ diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollTo.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollTo.tests.js index 6c342c9eb544..ff263e9731bd 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollTo.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollTo.tests.js @@ -1,4 +1,4 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'generic_light.css!'; import $ from 'jquery'; import errors from 'ui/widget/ui.errors'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollToTime.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollToTime.tests.js index 2afcf8232c09..3dcfc368b394 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollToTime.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/scrollToTime.tests.js @@ -1,5 +1,5 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import errors from 'ui/widget/ui.errors'; import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/subscribes.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/subscribes.tests.js index 6e679236c11d..39230f2ad22e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/subscribes.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/subscribes.tests.js @@ -7,7 +7,7 @@ import { } from '__internal/scheduler/appointments/m_settings_generator'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import dateUtils from 'core/utils/date'; import config from 'core/config'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js index 7150489f25ad..086abb0dd47e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.markup.tests.js @@ -5,7 +5,7 @@ import SchedulerTimelineWeek from '__internal/scheduler/workspaces/m_timeline_we import SchedulerTimelineWorkWeek from '__internal/scheduler/workspaces/m_timeline_work_week'; import SchedulerTimelineMonth from '__internal/scheduler/workspaces/m_timeline_month'; import dataUtils from 'core/element_data'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import SchedulerWorkSpaceVerticalStrategy from '__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical'; import SchedulerWorkSpaceHorizontalStrategy from '__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.tests.js index 56880cc842ca..551178c100a0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timeline.tests.js @@ -1,7 +1,7 @@ import { getOuterWidth, getOuterHeight } from 'core/utils/size'; import dateUtils from 'core/utils/date'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import { triggerHidingEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerHidingEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; import '__internal/scheduler/workspaces/m_timeline'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timezones.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timezones.tests.js index eb5ea7986f2c..f291df8d07c4 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timezones.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/timezones.tests.js @@ -1,6 +1,6 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { CLASSES, createWrapper, @@ -9,12 +9,12 @@ import { } from '../../helpers/scheduler/helpers.js'; import pointerMock from '../../helpers/pointerMock.js'; import dateUtils from 'core/utils/date'; -import dateLocalization from 'localization/date'; -import translator from 'animation/translator'; +import dateLocalization from 'common/core/localization/date'; +import translator from 'common/core/animation/translator'; import { hide } from '__internal/ui/tooltip/m_tooltip'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import dragEvents from 'events/drag'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import dragEvents from 'common/core/events/drag'; import timeZoneUtils from '__internal/scheduler/m_utils_time_zone'; const { testStart, test, module } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellTemplate.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellTemplate.tests.js index 447a6cfdda22..3f1170a82e6c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellTemplate.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellTemplate.tests.js @@ -1,6 +1,6 @@ import { getOuterWidth, getOuterHeight } from 'core/utils/size'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import { createWrapper, initTestMarkup } from '../../helpers/scheduler/helpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellsSelection.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellsSelection.tests.js index a75c337466ca..d5e4324c3a88 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellsSelection.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/views.cellsSelection.tests.js @@ -1,5 +1,5 @@ import 'generic_light.css!'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { createWrapper, initTestMarkup, CLASSES, isDesktopEnvironment } from '../../helpers/scheduler/helpers.js'; const { test, module, testStart } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.integration.tests.js index 9227eaf30754..33bfec9efc43 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.integration.tests.js @@ -4,7 +4,7 @@ import { getWindow } from 'core/utils/window'; import 'generic_light.css!'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { createWrapper, initTestMarkup, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.tests.js index b71feb807567..a361ac90a46d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/virtual_scrolling.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import { VirtualScrollingDispatcher } from '__internal/scheduler/workspaces/m_virtual_scrolling'; import domAdapter from '__internal/core/m_dom_adapter'; -import eventsEngine from 'events/core/events_engine'; -import { addNamespace } from 'events/utils/index'; +import eventsEngine from 'common/core/events/core/events_engine'; +import { addNamespace } from 'common/core/events/utils/index'; const { module, diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.base.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.base.tests.js index ab03e67c0fcd..7a267060e3fa 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.base.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.base.tests.js @@ -2,7 +2,7 @@ import dateUtils from 'core/utils/date'; import resizeCallbacks from 'core/utils/resize_callbacks'; import 'generic_light.css!'; import $ from 'jquery'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import '__internal/scheduler/workspaces/m_work_space_day'; import '__internal/scheduler/workspaces/m_work_space_week'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.day.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.day.tests.js index d81c7a7a320c..b0d7d2a776b7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.day.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.day.tests.js @@ -1,9 +1,9 @@ import { getOuterHeight } from 'core/utils/size'; -import dragEvents from 'events/drag'; +import dragEvents from 'common/core/events/drag'; import 'generic_light.css!'; import $ from 'jquery'; import resizeCallbacks from 'core/utils/resize_callbacks'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import '__internal/scheduler/workspaces/m_work_space_day'; const CELL_CLASS = 'dx-scheduler-date-table-cell'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.markup.tests.js index 6bcfadcc8848..300ba086289b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.markup.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import SchedulerWorkSpace from '__internal/scheduler/workspaces/m_work_space'; import SchedulerWorkSpaceHorizontalStrategy from '__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal'; import SchedulerWorkSpaceVerticalStrategy from '__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; import devices from '__internal/core/m_devices'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.week.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.week.tests.js index fbd0ce283580..728071bd5b47 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.week.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpace.week.tests.js @@ -1,5 +1,5 @@ import dateUtils from 'core/utils/date'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpaceWithHorizontalScroll.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpaceWithHorizontalScroll.tests.js index 22f38d83e963..1bc35007c3c1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpaceWithHorizontalScroll.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/workSpaceWithHorizontalScroll.tests.js @@ -1,6 +1,6 @@ import { getOuterWidth } from 'core/utils/size'; import devices from '__internal/core/m_devices'; -import { triggerHidingEvent, triggerResizeEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerHidingEvent, triggerResizeEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import 'generic_light.css!'; import $ from 'jquery'; import '__internal/scheduler/m_scheduler'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/dataController.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/dataController.tests.js index 7e8d942a9b96..48c13f570c10 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/dataController.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/dataController.tests.js @@ -1,9 +1,9 @@ import '__internal/grids/tree_list/m_widget'; import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; import Guid from 'core/guid'; -import query from 'data/query'; +import query from 'common/data/query'; import { setupTreeListModules } from '../../helpers/treeListMocks.js'; const createDataSource = function(data, storeOptions, dataSourceOptions) { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/editing.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/editing.tests.js index a3a6894bb894..739ec19cbfa7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/editing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/editing.tests.js @@ -13,9 +13,9 @@ QUnit.testStart(function() { import 'generic_light.css!'; import '__internal/grids/tree_list/m_widget'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { setupTreeListModules } from '../../helpers/treeListMocks.js'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; fx.off = true; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/gridView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/gridView.tests.js index 3a7873ec60d1..c674df72460d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/gridView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/gridView.tests.js @@ -13,7 +13,7 @@ QUnit.testStart(function() { import 'generic_light.css!'; import '__internal/grids/tree_list/m_widget'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { setupTreeListModules, MockColumnsController, MockDataController } from '../../helpers/treeListMocks.js'; fx.off = true; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/headerPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/headerPanel.tests.js index 86a3f4e6250d..58be3c61f0fb 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/headerPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/headerPanel.tests.js @@ -13,7 +13,7 @@ QUnit.testStart(function() { import 'generic_light.css!'; import '__internal/grids/tree_list/m_widget'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { setupTreeListModules, MockColumnsController, MockDataController } from '../../helpers/treeListMocks.js'; fx.off = true; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/rows.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/rows.tests.js index 51ca79a39314..fe7bb1de5abb 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/rows.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/rows.tests.js @@ -13,7 +13,7 @@ QUnit.testStart(function() { import 'generic_light.css!'; import '__internal/grids/tree_list/m_widget'; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { noop } from 'core/utils/common'; import { setupTreeListModules, MockColumnsController, MockDataController } from '../../helpers/treeListMocks.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.integration.tests.js index 1c4d0a63d6e6..aee3b13368cc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.integration.tests.js @@ -1,6 +1,6 @@ import 'ui/tree_list'; import { baseModuleConfig } from '../../helpers/dataGridHelper.js'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import $ from 'jquery'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.tests.js index 74ab81b9dde9..75b0c86e86e9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/selection.tests.js @@ -17,8 +17,8 @@ QUnit.testStart(function() { import 'generic_light.css!'; import '__internal/grids/tree_list/m_widget'; import $ from 'jquery'; -import fx from 'animation/fx'; -import ArrayStore from 'data/array_store'; +import fx from 'common/core/animation/fx'; +import ArrayStore from 'common/data/array_store'; import { setupTreeListModules } from '../../helpers/treeListMocks.js'; fx.off = true; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/treeList.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/treeList.tests.js index b1c0fdd16403..aedd188026d1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/treeList.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.treeList/treeList.tests.js @@ -16,14 +16,14 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; import devices from '__internal/core/m_devices'; import { getOuterHeight } from 'core/utils/size'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; import { TreeListWrapper } from '../../helpers/wrappers/dataGridWrappers.js'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import TreeList from '__internal/grids/tree_list/m_widget'; import pointerMock from '../../helpers/pointerMock.js'; import { CLICK_EVENT } from '../../helpers/grid/keyboardNavigationHelper.js'; -import { createEvent } from 'events/utils/index'; +import { createEvent } from 'common/core/events/utils/index'; fx.off = true; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/accordion.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/accordion.tests.js index 3bfd4c50eb28..a9d3879c71d1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/accordion.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/accordion.tests.js @@ -1,14 +1,14 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'generic_light.css!'; import config from 'core/config'; import { getHeight } from 'core/utils/size'; import { deferUpdate, noop } from 'core/utils/common'; import { extend } from 'core/utils/extend'; import { isRenderer } from 'core/utils/type'; -import CustomStore from 'data/custom_store'; -import { DataSource } from 'data/data_source/data_source'; -import holdEvent from 'events/hold'; -import { triggerShownEvent } from 'events/visibility_change'; +import { CustomStore } from 'common/data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import holdEvent from 'common/core/events/hold'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import Accordion from 'ui/accordion'; import themes from 'ui/themes'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/actionSheet.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/actionSheet.tests.js index 1e545c20d3ad..6ed74a4cff0e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/actionSheet.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/actionSheet.tests.js @@ -1,8 +1,8 @@ import { getWidth, getHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; -import fx from 'animation/fx'; -import positionUtils from 'animation/position'; -import holdEvent from 'events/hold'; +import fx from 'common/core/animation/fx'; +import positionUtils from 'common/core/animation/position'; +import holdEvent from 'common/core/events/hold'; import pointerMock from '../../helpers/pointerMock.js'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/animator.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/animator.tests.js index 6ce5ac0fea35..356f079812fe 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/animator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/animator.tests.js @@ -1,5 +1,5 @@ import Animator from '__internal/ui/scroll_view/m_animator'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; const REQEST_ANIMATION_FRAME_TIMEOUT = 10; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/box.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/box.tests.js index dadff813e2d9..ba5e00cb6453 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/box.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/box.tests.js @@ -1,4 +1,4 @@ -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import 'ui/box'; import 'ui/scroll_view/ui.scrollable'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js index 812ed5a8a285..828f749631c7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js @@ -7,7 +7,7 @@ import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import * as checkStyleHelper from '../../helpers/checkStyleHelper.js'; import localization from 'localization'; -import ja from 'localization/messages/ja.json!'; +import ja from 'common/core/localization/messages/ja.json!'; import { Deferred } from 'core/utils/deferred'; import dxButton from 'ui/button'; import { isRenderer } from 'core/utils/type'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.selection.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.selection.tests.js index 5cbaec03068d..0711e1b30500 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.selection.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.selection.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import 'ui/button'; import 'ui/button_group'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.tests.js index 2acd972a81b1..18721695eb82 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/buttonGroup.tests.js @@ -3,7 +3,7 @@ import $ from 'jquery'; import 'ui/button'; import 'ui/button_group'; import devices from '__internal/core/m_devices'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import registerKeyHandlerTestHelper from '../../helpers/registerKeyHandlerTestHelper.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/chat.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/chat.tests.js index d41f75c374b3..e4a5d2ca92a9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/chat.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/chat.tests.js @@ -5,14 +5,14 @@ import MessageList from '__internal/ui/chat/messagelist'; import AlertList from '__internal/ui/chat/alertlist'; import MessageBox, { TYPING_END_DELAY } from '__internal/ui/chat/messagebox'; import keyboardMock from '../../../helpers/keyboardMock.js'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import dataUtils from 'core/element_data'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; const CHAT_MESSAGEGROUP_CLASS = 'dx-chat-messagegroup'; const CHAT_MESSAGELIST_CLASS = 'dx-chat-messagelist'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.tests.js index 2594b6320469..9d625b283669 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import MessageGroup from '__internal/ui/chat/messagegroup'; import ChatAvatar from '__internal/ui/chat/avatar'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; const AVATAR_CLASS = 'dx-avatar'; const CHAT_MESSAGEGROUP_TIME_CLASS = 'dx-chat-messagegroup-time'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageList.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageList.tests.js index 1563d6168aba..e853c3fd501d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageList.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageList.tests.js @@ -14,7 +14,7 @@ import MessageGroup from '__internal/ui/chat/messagegroup'; import TypingIndicator from '__internal/ui/chat/typingindicator'; import devices from '__internal/core/m_devices'; import localization from 'localization'; -import dateLocalization from 'localization/date'; +import dateLocalization from 'common/core/localization/date'; const CHAT_MESSAGELIST_CONTENT_CLASS = 'dx-chat-messagelist-content'; const CHAT_MESSAGELIST_EMPTY_MESSAGE_CLASS = 'dx-chat-messagelist-empty-message'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/contextMenu.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/contextMenu.tests.js index 200ca0c4e072..72e8890f6bc7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/contextMenu.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/contextMenu.tests.js @@ -4,11 +4,11 @@ import domAdapter from '__internal/core/m_dom_adapter'; import resizeCallbacks from 'core/utils/resize_callbacks'; import support from '__internal/core/utils/m_support'; import { implementationsMap, getWidth, getHeight } from 'core/utils/size'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import ContextMenu from 'ui/context_menu'; -import { addNamespace } from 'events/utils/index'; -import contextMenuEvent from 'events/contextmenu'; -import holdEvent from 'events/hold'; +import { addNamespace } from 'common/core/events/utils/index'; +import contextMenuEvent from 'common/core/events/contextmenu'; +import holdEvent from 'common/core/events/hold'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import keyboardMock from '../../helpers/keyboardMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.animation.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.animation.tests.js index 632dd1dfcbd4..c76ddd1b3ec8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.animation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.animation.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import TransitionExecutorModule from 'animation/transition_executor/transition_executor'; +import TransitionExecutorModule from 'common/core/animation/transition_executor/transition_executor'; import 'ui/defer_rendering'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.tests.js index 27bd29c0465b..7532f603f6f1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/deferRendering.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import TransitionExecutorModule from 'animation/transition_executor/transition_executor'; +import TransitionExecutorModule from 'common/core/animation/transition_executor/transition_executor'; import dataUtils from 'core/element_data'; import 'ui/defer_rendering'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/diagramParts/dataBinding.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/diagramParts/dataBinding.tests.js index d84e50e012c8..8adecd44f449 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/diagramParts/dataBinding.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/diagramParts/dataBinding.tests.js @@ -2,8 +2,8 @@ import $ from 'jquery'; const { test } = QUnit; import 'ui/diagram'; -import DataSource from 'data/data_source'; -import ArrayStore from 'data/array_store'; +import DataSource from 'common/data/data_source'; +import ArrayStore from 'common/data/array_store'; import { DiagramCommand } from 'devexpress-diagram'; import { Consts } from '../../../helpers/diagramHelpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/draggable.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/draggable.tests.js index ca6e3f1840c0..4773e8b148ed 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/draggable.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/draggable.tests.js @@ -2,10 +2,10 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; import pointerMock from '../../helpers/pointerMock.js'; import viewPort from 'core/utils/view_port'; -import GestureEmitter from 'events/gesture/emitter.gesture.js'; -import animationFrame from 'animation/frame'; -import translator from 'animation/translator'; -import fx from 'animation/fx'; +import GestureEmitter from 'common/core/events/gesture/emitter.gesture.js'; +import animationFrame from 'common/core/animation/frame'; +import translator from 'common/core/animation/translator'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../helpers/keyboardMock.js'; import 'generic_light.css!'; import 'ui/draggable'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.scenarios.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.scenarios.tests.js index af522b075b55..e78d9004381d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.scenarios.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.scenarios.tests.js @@ -15,7 +15,7 @@ import 'ui/tree_view'; import 'generic_light.css!'; import dxDrawer from 'ui/drawer'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; const moduleConfig = { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.tests.js index 6cd1cb92aa91..4daa246b1172 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/drawer.tests.js @@ -1,13 +1,13 @@ import { getHeight, getWidth, getOuterWidth } from 'core/utils/size'; -import fx from 'animation/fx'; -import translator from 'animation/translator'; +import fx from 'common/core/animation/fx'; +import translator from 'common/core/animation/translator'; import 'generic_light.css!'; import config from 'core/config'; import resizeCallbacks from 'core/utils/resize_callbacks'; import typeUtils from 'core/utils/type'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; -import eventsEngine from 'events/core/events_engine'; -import visibilityChange from 'events/visibility_change'; +import eventsEngine from 'common/core/events/core/events_engine'; +import visibilityChange from 'common/core/events/visibility_change'; import $ from 'jquery'; import Button from 'ui/button'; import Drawer from 'ui/drawer'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.markup.tests.js index 4e0f2794616b..f832cc762498 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.markup.tests.js @@ -2,7 +2,7 @@ import { getHeight, getOuterWidth, getWidth } from 'core/utils/size'; import $ from 'jquery'; import DropDownButton from 'ui/drop_down_button'; import windowUtils from 'core/utils/window'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.tests.js index 802fb7ad746f..6f78358fb9dd 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/dropDownButton.tests.js @@ -3,11 +3,11 @@ import $ from 'jquery'; import DropDownButton from 'ui/drop_down_button'; import typeUtils, { isRenderer } from 'core/utils/type'; import config from 'core/config'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import keyboardMock from '../../helpers/keyboardMock.js'; -import ArrayStore from 'data/array_store'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import ArrayStore from 'common/data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; import { extend } from 'core/utils/extend'; import devices from '__internal/core/m_devices'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/adaptivity.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/adaptivity.tests.js index dbd20e5dd2b9..4838c746a60f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/adaptivity.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/adaptivity.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import resizeCallbacks from 'core/utils/resize_callbacks'; import 'ui/file_manager'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { FileManagerWrapper, createTestFileSystem, Consts } from '../../../helpers/fileManagerHelpers.js'; import { implementationsMap, getOuterWidth } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/contextMenu.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/contextMenu.tests.js index 7dc4b80f182d..7c5784cab477 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/contextMenu.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/contextMenu.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; const { test } = QUnit; import 'ui/file_manager'; -import fx from 'animation/fx'; -import pointerEvents from 'events/pointer'; +import fx from 'common/core/animation/fx'; +import pointerEvents from 'common/core/events/pointer'; import { Consts, FileManagerWrapper, createTestFileSystem, isDesktopDevice } from '../../../helpers/fileManagerHelpers.js'; const moduleConfig = { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/detailsView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/detailsView.tests.js index 3bbab7800c31..e0858c41dc17 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/detailsView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/detailsView.tests.js @@ -1,9 +1,9 @@ import $ from 'jquery'; import 'ui/file_manager'; -import fx from 'animation/fx'; -import pointerEvents from 'events/pointer'; +import fx from 'common/core/animation/fx'; +import pointerEvents from 'common/core/events/pointer'; import localization from 'localization'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import { FileManagerWrapper, createTestFileSystem, isDesktopDevice, createHugeFileSystem } from '../../../helpers/fileManagerHelpers.js'; import { triggerCellClick } from '../../../helpers/fileManager/events.js'; import { implementationsMap } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editing.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editing.tests.js index 6011f2b4e1e2..03f89a532b42 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editing.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editing.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import 'ui/file_manager'; import FileUploader from 'ui/file_uploader'; -import fx from 'animation/fx'; -import pointerEvents from 'events/pointer'; +import fx from 'common/core/animation/fx'; +import pointerEvents from 'common/core/events/pointer'; import ObjectFileSystemProvider from 'file_management/object_provider'; import CustomFileSystemProvider from 'file_management/custom_provider'; import FileSystemError from 'file_management/error.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingEvents.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingEvents.tests.js index eb1fe03603b4..4c4d05851af7 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingEvents.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingEvents.tests.js @@ -1,7 +1,7 @@ const { test } = QUnit; import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import FileUploader from 'ui/file_uploader'; import ObjectFileSystemProvider from 'file_management/object_provider'; import { createTestFileSystem, createEditingEvents, createUploaderFiles, stubFileReader, FileManagerWrapper, FileManagerProgressPanelWrapper } from '../../../helpers/fileManagerHelpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingProgress.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingProgress.tests.js index f03cdfabb2c9..115a8d8b7e63 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingProgress.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/editingProgress.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { Deferred } from 'core/utils/deferred'; import ObjectFileSystemProvider from 'file_management/object_provider'; import ErrorCode from 'file_management/error_codes'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/markup.tests.js index 1e45a7232e97..dae688fb8a16 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/markup.tests.js @@ -1,7 +1,7 @@ const { test } = QUnit; import $ from 'jquery'; import 'ui/file_manager'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import windowUtils from 'core/utils/window'; import { FileManagerWrapper, createTestFileSystem, Consts, isDesktopDevice } from '../../../helpers/fileManagerHelpers.js'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/navigation.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/navigation.tests.js index 5091f952c79f..2d3bedb252de 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/navigation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/navigation.tests.js @@ -6,7 +6,7 @@ import CustomFileSystemProvider from 'file_management/custom_provider'; import ObjectFileSystemProvider from 'file_management/object_provider.js'; import { FileItemsController } from 'ui/file_manager/file_items_controller'; import FileManagerBreadcrumbs from 'ui/file_manager/ui.file_manager.breadcrumbs'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { FileManagerWrapper, FileManagerBreadcrumbsWrapper, FileManagerProgressPanelWrapper, createTestFileSystem } from '../../../helpers/fileManagerHelpers.js'; import SlowFileProvider from '../../../helpers/fileManager/file_provider.slow.js'; import { implementationsMap } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/progressPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/progressPanel.tests.js index fa250f296d37..a05552b84601 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/progressPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/progressPanel.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import FileUploader from 'ui/file_uploader'; import resizeCallbacks from 'core/utils/resize_callbacks'; import { createTestFileSystem, createUploaderFiles, FileManagerProgressPanelWrapper, FileManagerWrapper } from '../../../helpers/fileManagerHelpers.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/scroll.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/scroll.tests.js index 1513bf6dbf57..9b8f00fef4d9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/scroll.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/scroll.tests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; const { test } = QUnit; import 'ui/file_manager'; -import fx from 'animation/fx'; -import pointerEvents from 'events/pointer'; +import fx from 'common/core/animation/fx'; +import pointerEvents from 'common/core/events/pointer'; import { FileManagerWrapper, FileManagerProgressPanelWrapper, createTestFileSystem, createHugeFileSystem, Consts } from '../../../helpers/fileManagerHelpers.js'; import { CLICK_EVENT } from '../../../helpers/grid/keyboardNavigationHelper.js'; import { implementationsMap } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/selection.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/selection.tests.js index 150ea384eaf5..76d3bb33ae63 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/selection.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/selection.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; const { test } = QUnit; import 'ui/file_manager'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { FileManagerWrapper, createTestFileSystem, isDesktopDevice } from '../../../helpers/fileManagerHelpers.js'; import { triggerCellClick } from '../../../helpers/fileManager/events.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/thumbnailsView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/thumbnailsView.tests.js index 6682e6aa1ae7..99db0116d6cf 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/thumbnailsView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/thumbnailsView.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import 'ui/file_manager'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { FileManagerWrapper, createTestFileSystem, isDesktopDevice } from '../../../helpers/fileManagerHelpers.js'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/toolbar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/toolbar.tests.js index 6342300c06e2..0179d6333cdc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/toolbar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/fileManagerParts/toolbar.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import 'ui/file_manager'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { Consts, FileManagerWrapper, createTestFileSystem } from '../../../helpers/fileManagerHelpers.js'; import { implementationsMap } from 'core/utils/size'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/filterBuilderParts/utilsTests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/filterBuilderParts/utilsTests.js index d8cec614de70..94ace09cb88d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/filterBuilderParts/utilsTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/filterBuilderParts/utilsTests.js @@ -1,7 +1,7 @@ import * as utils from '__internal/filter_builder/m_utils'; import * as between from '__internal/filter_builder/m_between'; -import CustomStore from 'data/custom_store'; -import messageLocalization from 'localization/message'; +import { CustomStore } from 'common/data/custom_store'; +import messageLocalization from 'common/core/localization/message'; import fields from '../../../helpers/filterBuilderTestData.js'; import filterUtils from 'ui/shared/filtering'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/gallery.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/gallery.tests.js index d3eeceb49356..df62a05aecd2 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/gallery.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/gallery.tests.js @@ -1,10 +1,10 @@ import { getHeight, getOuterHeight, getOuterWidth, getWidth } from 'core/utils/size'; import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; -import visibilityChange from 'events/visibility_change'; -import ArrayStore from 'data/array_store'; -import fx from 'animation/fx'; -import animationFrame from 'animation/frame'; +import { DataSource } from 'common/data/data_source/data_source'; +import visibilityChange from 'common/core/events/visibility_change'; +import ArrayStore from 'common/data/array_store'; +import fx from 'common/core/animation/fx'; +import animationFrame from 'common/core/animation/frame'; import resizeCallbacks from 'core/utils/resize_callbacks'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/clientSideEvents.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/clientSideEvents.tests.js index 17779645422a..1bde62f8e235 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/clientSideEvents.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/clientSideEvents.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import 'ui/gantt'; import { Consts, options, data, getGanttViewCore, showTaskEditDialog, getDependencyElements } from '../../../helpers/ganttHelpers.js'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/dialogs.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/dialogs.tests.js index 51eb9231e147..2b8e36b7424c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/dialogs.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/dialogs.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import 'ui/gantt'; import { Consts, data, options, showTaskEditDialog, getGanttViewCore } from '../../../helpers/ganttHelpers.js'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/editDataSources.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/editDataSources.tests.js index 3522835b2a85..8f90e5d3fb00 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/editDataSources.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/editDataSources.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import ArrayStore from 'common/data/array_store'; import 'ui/gantt'; import { Consts, getGanttViewCore } from '../../../helpers/ganttHelpers.js'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/refresh.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/refresh.tests.js index d1e45eea134d..4918e83f446b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/refresh.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/ganttParts/refresh.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import 'ui/gantt'; import { Consts, options, data, showTaskEditDialog } from '../../../helpers/ganttHelpers.js'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/init_dispose_widget_bundled_tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/init_dispose_widget_bundled_tests.js index 286feb077c36..a214f7b0928b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/init_dispose_widget_bundled_tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/init_dispose_widget_bundled_tests.js @@ -1,5 +1,5 @@ import GoogleStaticProvider from '__internal/ui/map/m_provider.google_static'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { each } from 'core/utils/iterator'; import 'bundles/modules/parts/widgets-web'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/commonTests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/commonTests.js index 807aaa6620bd..73d02c4d7201 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/commonTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/commonTests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { isRenderer } from 'core/utils/type'; import { noop } from 'core/utils/common'; import config from 'core/config'; @@ -7,20 +7,20 @@ import devices from '__internal/core/m_devices'; import resizeCallbacks from 'core/utils/resize_callbacks'; import errors from 'ui/widget/ui.errors'; import executeAsyncMock from '../../../helpers/executeAsyncMock.js'; -import fx from 'animation/fx'; -import holdEvent from 'events/hold'; +import fx from 'common/core/animation/fx'; +import holdEvent from 'common/core/events/hold'; import keyboardMock from '../../../helpers/keyboardMock.js'; import pointerMock from '../../../helpers/pointerMock.js'; import registerComponent from 'core/component_registrator'; -import swipeEvents from 'events/swipe'; +import swipeEvents from 'common/core/events/swipe'; import themes from 'ui/themes'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; import DOMComponent from 'core/dom_component'; import List from 'ui/list'; import { setScrollView } from '__internal/ui/list/m_list.base'; import ScrollView from 'ui/scroll_view'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import ariaAccessibilityTestHelper from '../../../helpers/ariaAccessibilityTestHelper.js'; import { reorderingPointerMock } from './utils.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingTests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingTests.js index 550556a2730f..9816363ccd2c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingTests.js @@ -2,8 +2,8 @@ import $ from 'jquery'; import typeUtils from 'core/utils/type'; import executeAsyncMock from '../../../helpers/executeAsyncMock.js'; import keyboardMock from '../../../helpers/keyboardMock.js'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; import 'ui/list'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingUITests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingUITests.js index bbcc804710e8..a12b3f76a8bc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingUITests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/editingUITests.js @@ -1,20 +1,20 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import errors from 'ui/widget/ui.errors'; -import translator from 'animation/translator'; -import holdEvent from 'events/hold'; +import translator from 'common/core/animation/translator'; +import holdEvent from 'common/core/events/hold'; import { noop } from 'core/utils/common'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import pointerMock from '../../../helpers/pointerMock.js'; -import contextMenuEvent from 'events/contextmenu'; +import contextMenuEvent from 'common/core/events/contextmenu'; import keyboardMock from '../../../helpers/keyboardMock.js'; import { registry, register } from '__internal/ui/list/m_list.edit.decorator_registry'; import SwitchableEditDecorator from '__internal/ui/list/m_list.edit.decorator.switchable'; import SwitchableButtonEditDecorator from '__internal/ui/list/m_list.edit.decorator.switchable.button'; import themes from 'ui/themes'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; import { reorderingPointerMock, toSelector } from './utils.js'; import 'ui/action_sheet'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/liveUpdateTests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/liveUpdateTests.js index 76a8b639f54f..cf8c3b7a1c66 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/liveUpdateTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/listParts/liveUpdateTests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; import 'ui/list'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadIndicator.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadIndicator.tests.js index 12940d53773e..9d3b4cf64939 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadIndicator.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadIndicator.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import support from '__internal/core/utils/m_support'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import 'ui/load_indicator'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadPanel.tests.js index 2215b6bb36e3..3c642c01eee5 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/loadPanel.tests.js @@ -1,9 +1,9 @@ import { getOuterWidth, getOuterHeight } from 'core/utils/size'; import $ from 'jquery'; import keyboardMock from '../../helpers/keyboardMock.js'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; import uiErrors from 'ui/widget/ui.errors'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'generic_light.css!'; import 'ui/load_panel'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.markup.tests.js index fadda5c4eee6..2806e2db9734 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.markup.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import Menu from '__internal/ui/menu/m_menu'; import '__internal/ui/menu/m_submenu'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.tests.js index 7e01fcaa7b66..b79a8a248707 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/menu.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import renderer from 'core/renderer'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; @@ -10,10 +10,10 @@ import domAdapter from '__internal/core/m_dom_adapter'; import Menu from '__internal/ui/menu/m_menu'; import keyboardMock from '../../helpers/keyboardMock.js'; import fixtures from '../../helpers/positionFixtures.js'; -import CustomStore from 'data/custom_store'; -import ArrayStore from 'data/array_store'; -import eventsEngine from 'events/core/events_engine'; -import { DataSource } from 'data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import ArrayStore from 'common/data/array_store'; +import eventsEngine from 'common/core/events/core/events_engine'; +import { DataSource } from 'common/data/data_source/data_source'; import * as checkStyleHelper from '../../helpers/checkStyleHelper.js'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.integration.tests.js index 2cbdbd8e9ac5..fd1b2985c3a1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.integration.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { animation, _translator } from '__internal/ui/multi_view/m_multi_view.animation'; import 'ui/multi_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.tests.js index d797a9dfe085..8a39512a008c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/multiView.tests.js @@ -1,11 +1,11 @@ -import fx from 'animation/fx'; -import translator from 'animation/translator'; +import fx from 'common/core/animation/fx'; +import translator from 'common/core/animation/translator'; import 'generic_light.css!'; import config from 'core/config'; import devices from '__internal/core/m_devices'; import { isRenderer } from 'core/utils/type'; -import Swipeable from 'events/gesture/swipeable'; -import { triggerShownEvent } from 'events/visibility_change'; +import Swipeable from 'common/core/events/gesture/swipeable'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import 'ui/multi_view'; import { animation } from '__internal/ui/multi_view/m_multi_view.animation'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/optionChanged_bundled.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/optionChanged_bundled.tests.js index d2912bcf6b75..bc28d7d5f7d1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/optionChanged_bundled.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/optionChanged_bundled.tests.js @@ -3,9 +3,9 @@ import $ from 'jquery'; import { Component } from 'core/component'; import devices from '__internal/core/m_devices'; import GoogleStaticProvider from '__internal/ui/map/m_provider.google_static'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import '../../helpers/ignoreQuillTimers.js'; import 'bundles/modules/parts/widgets-web'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/overlay.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/overlay.tests.js index 0b8dc41d9569..c3b03339b674 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/overlay.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/overlay.tests.js @@ -1,7 +1,7 @@ import { getWidth, getHeight, getOuterWidth } from 'core/utils/size'; -import fx from 'animation/fx'; -import positionUtils from 'animation/position'; -import { locate } from 'animation/translator'; +import fx from 'common/core/animation/fx'; +import positionUtils from 'common/core/animation/position'; +import { locate } from 'common/core/animation/translator'; import 'generic_light.css!'; import config from 'core/config'; import devices from '__internal/core/m_devices'; @@ -9,10 +9,10 @@ import { Template } from 'core/templates/template'; import resizeCallbacks from 'core/utils/resize_callbacks'; import { isRenderer } from 'core/utils/type'; import { value as viewPort } from 'core/utils/view_port'; -import eventsEngine from 'events/core/events_engine'; -import visibilityChange, { triggerHidingEvent, triggerShownEvent } from 'events/visibility_change'; +import eventsEngine from 'common/core/events/core/events_engine'; +import visibilityChange, { triggerHidingEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; -import { hideCallback as hideTopOverlayCallback } from 'mobile/hide_callback'; +import { hideCallback as hideTopOverlayCallback } from 'common/core/environment/hide_callback'; import errors from 'core/errors'; import uiErrors from 'ui/widget/ui.errors'; import Overlay from 'ui/overlay/ui.overlay'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/popover.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/popover.tests.js index a09aeda81aae..6407421084f5 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/popover.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/popover.tests.js @@ -1,9 +1,9 @@ import { getHeight, getWidth, getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; import fixtures from '../../helpers/positionFixtures.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; -import positionUtils from 'animation/position'; +import positionUtils from 'common/core/animation/position'; import uiErrors from 'ui/widget/ui.errors'; import Popover from 'ui/popover'; import { getBoundingRect } from 'core/utils/position'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.materialTheme.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.materialTheme.tests.js index 4cde1ded0993..c25926819f97 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.materialTheme.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.materialTheme.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { value as viewPort } from 'core/utils/view_port'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.tests.js index 54d1e9f36c06..79c984441973 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/popup.tests.js @@ -10,7 +10,7 @@ import { import $ from 'jquery'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { value as viewPort } from 'core/utils/view_port'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; @@ -23,7 +23,7 @@ import windowUtils from '__internal/core/utils/m_window'; import uiErrors from 'ui/widget/ui.errors'; import themes from 'ui/themes'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; -import visibilityChangeUtils from 'events/visibility_change'; +import visibilityChangeUtils from 'common/core/events/visibility_change'; import domAdapter from '__internal/core/m_dom_adapter'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/progressBar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/progressBar.tests.js index e1b4cf69eaf3..fc3371b1f3ee 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/progressBar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/progressBar.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/progress_bar'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizable.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizable.tests.js index 3f04ec9b0a29..63f0eef12e6c 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizable.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizable.tests.js @@ -1,5 +1,5 @@ -import translator from 'animation/translator'; -import visibilityChange from 'events/visibility_change'; +import translator from 'common/core/animation/translator'; +import visibilityChange from 'common/core/events/visibility_change'; import $ from 'jquery'; import 'ui/resizable'; import pointerMock from '../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.markup.tests.js index 17c7780ab58e..e60f48fd7536 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.markup.tests.js @@ -2,9 +2,9 @@ import $ from 'jquery'; import 'ui/splitter'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import ResizeHandle from '__internal/ui/splitter/resize_handle'; -import messageLocalization from 'localization/message'; +import messageLocalization from 'common/core/localization/message'; QUnit.testStart(function() { const markup = diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.tests.js index 58e32799d4e4..338b560c25af 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/resizeHandle.tests.js @@ -1,10 +1,10 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import pointerMock from '../../helpers/pointerMock.js'; import ResizeHandle from '__internal/ui/splitter/resize_handle'; -import { name as DOUBLE_CLICK_EVENT } from 'events/double_click'; +import { name as DOUBLE_CLICK_EVENT } from 'common/core/events/double_click'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/responsiveBox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/responsiveBox.tests.js index a2e7bc820e2c..a9146aabf51e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/responsiveBox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/responsiveBox.tests.js @@ -6,7 +6,7 @@ import ResponsiveBox from 'ui/responsive_box'; import responsiveBoxScreenMock from '../../helpers/responsiveBoxScreenMock.js'; import dxButton from 'ui/button'; import 'ui/box'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import domAdapter from '__internal/core/m_dom_adapter'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollView.tests.js index 0b4585ed517e..4a427cab5341 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollView.tests.js @@ -2,10 +2,10 @@ import $ from 'jquery'; import renderer from 'core/renderer'; import { noop } from 'core/utils/common'; import { getTranslateValues } from '__internal/ui/scroll_view/utils/get_translate_values'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import devices from '__internal/core/m_devices'; -import eventsEngine from 'events/core/events_engine'; -import messageLocalization from 'localization/message'; +import eventsEngine from 'common/core/events/core/events_engine'; +import messageLocalization from 'common/core/localization/message'; import themes from 'ui/themes'; import pointerMock from '../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.actions.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.actions.tests.js index 0c2c47ce45cb..7abe7db46727 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.actions.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.actions.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; import { getTranslateValues } from '__internal/ui/scroll_view/utils/get_translate_values'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import pointerMock from '../../../helpers/pointerMock.js'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.dynamic.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.dynamic.tests.js index 718c333c79a3..69713f341355 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.dynamic.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.dynamic.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { getTranslateValues } from '__internal/ui/scroll_view/utils/get_translate_values'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import resizeCallbacks from 'core/utils/resize_callbacks'; import pointerMock from '../../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.main.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.main.tests.js index 8ed7d7646478..d509a85b9306 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.main.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.main.tests.js @@ -1,13 +1,13 @@ -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import { getTranslateValues } from '__internal/ui/scroll_view/utils/get_translate_values'; import 'generic_light.css!'; import devices from '__internal/core/m_devices'; import domUtils from '__internal/core/utils/m_dom'; import styleUtils from 'core/utils/style'; import support from '__internal/core/utils/m_support'; -import { triggerHidingEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerHidingEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; -import initMobileViewport from 'mobile/init_mobile_viewport'; +import initMobileViewport from 'common/core/environment/init_mobile_viewport'; import Scrollable from 'ui/scroll_view/ui.scrollable'; import pointerMock from '../../../helpers/pointerMock.js'; import { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.mouseWheel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.mouseWheel.tests.js index 3390caf34a1d..b5d55b29f49e 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.mouseWheel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.mouseWheel.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import devices from '__internal/core/m_devices'; import pointerMock from '../../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.rtl.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.rtl.tests.js index aa60848560dd..3ff9108055fd 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.rtl.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.rtl.tests.js @@ -1,6 +1,6 @@ -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import 'generic_light.css!'; -import { triggerShownEvent } from 'events/visibility_change'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import Scrollable from 'ui/scroll_view/ui.scrollable'; import { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollbar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollbar.tests.js index 8bbffbf11d93..5c9225a0ba6d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollbar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollbar.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import devices from '__internal/core/m_devices'; import Scrollbar from '__internal/ui/scroll_view/m_scrollbar'; import pointerMock from '../../../helpers/pointerMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollingByThumb.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollingByThumb.tests.js index c77d8c5f7791..88a6a904f272 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollingByThumb.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.scrollingByThumb.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { getTranslateValues } from '__internal/ui/scroll_view/utils/get_translate_values'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import Scrollbar from '__internal/ui/scroll_view/m_scrollbar'; import pointerMock from '../../../helpers/pointerMock.js'; import Scrollable from 'ui/scroll_view/ui.scrollable'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.useNative.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.useNative.tests.js index b9bd6580b16a..1cc00c4e5afc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.useNative.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/scrollableParts/scrollable.useNative.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { getTranslateValues } from '__internal/ui/scroll_view/utils/get_translate_values'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; import pointerMock from '../../../helpers/pointerMock.js'; import Scrollable from 'ui/scroll_view/ui.scrollable'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/selection.test.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/selection.test.js index 5443a3199ab7..0c447c1acc6a 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/selection.test.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/selection.test.js @@ -2,9 +2,9 @@ import $ from 'jquery'; import errors from 'ui/widget/ui.errors'; import Selection from '__internal/ui/selection/m_selection'; import Guid from 'core/guid'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; -import ArrayStore from 'data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import ArrayStore from 'common/data/array_store'; const createDataSource = function(data, storeOptions, dataSourceOptions) { const arrayStore = new ArrayStore(storeOptions ? $.extend(true, { data: data }, storeOptions) : data); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/sortable.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/sortable.tests.js index d8f19c79683f..afcf528bde09 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/sortable.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/sortable.tests.js @@ -2,10 +2,10 @@ import $ from 'jquery'; import pointerMock from '../../helpers/pointerMock.js'; import 'ui/sortable'; import 'ui/scroll_view'; -import fx from 'animation/fx'; -import animationFrame from 'animation/frame'; +import fx from 'common/core/animation/fx'; +import animationFrame from 'common/core/animation/frame'; import browser from 'core/utils/browser'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; import viewPort from 'core/utils/view_port'; import devices from '__internal/core/m_devices'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/speedDialAction.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/speedDialAction.tests.js index 2af32bbbf09e..798ce2d71f80 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/speedDialAction.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/speedDialAction.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import config from 'core/config'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import SpeedDialItem from '__internal/ui/speed_dial_action/m_speed_dial_item'; import { logger } from 'core/utils/console'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/splitter.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/splitter.tests.js index 69a8e7893c33..2afc216148fe 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/splitter.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/splitter.tests.js @@ -1,13 +1,13 @@ import $ from 'jquery'; import Splitter from 'ui/splitter'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; import { isRenderer, isNumeric } from 'core/utils/type'; import config from 'core/config'; -import { createEvent } from 'events/utils/index'; -import { name as DOUBLE_CLICK_EVENT } from 'events/double_click'; -import { name as CLICK_EVENT } from 'events/click'; +import { createEvent } from 'common/core/events/utils/index'; +import { name as DOUBLE_CLICK_EVENT } from 'common/core/events/double_click'; +import { name as CLICK_EVENT } from 'common/core/events/click'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/swipeable.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/swipeable.tests.js index 7b7871d7e46a..642f8fb0440f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/swipeable.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/swipeable.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; -import Swipeable from 'events/gesture/swipeable'; -import swipeEvents from 'events/swipe'; +import Swipeable from 'common/core/events/gesture/swipeable'; +import swipeEvents from 'common/core/events/swipe'; import pointerMock from '../../helpers/pointerMock.js'; QUnit.module('swipeable', { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.repaintChangesOnly.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.repaintChangesOnly.tests.js index 8d57efe630de..e257e1a14fe0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.repaintChangesOnly.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.repaintChangesOnly.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/tab_panel'; QUnit.module('repaintChangesOnly', { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.tests.js index eddb25133241..c3565886e8a2 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.tests.js @@ -1,4 +1,4 @@ -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import config from 'core/config'; import devices from '__internal/core/m_devices'; import { deferUpdate } from 'core/utils/common'; @@ -10,7 +10,7 @@ import TabPanel from 'ui/tab_panel'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import registerKeyHandlerTestHelper from '../../helpers/registerKeyHandlerTestHelper.js'; -import translator from 'animation/translator'; +import translator from 'common/core/animation/translator'; QUnit.testStart(() => { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.width.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.width.tests.js index 1cc8ffb73487..46810c56ff84 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.width.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabPanel.width.tests.js @@ -1,7 +1,7 @@ import { getOuterWidth } from 'core/utils/size'; import 'generic_light.css!'; -import { triggerResizeEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerResizeEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import 'ui/tab_panel'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.tests.js index acade277387a..018160e8f483 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.tests.js @@ -1,9 +1,9 @@ import 'generic_light.css!'; import themes from 'ui/themes'; import { extend } from 'core/utils/extend'; -import { DataSource } from 'data/data_source/data_source'; -import holdEvent from 'events/hold'; -import { triggerShownEvent } from 'events/visibility_change'; +import { DataSource } from 'common/data/data_source/data_source'; +import holdEvent from 'common/core/events/hold'; +import { triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import 'ui/responsive_box'; import 'ui/tabs'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.width.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.width.tests.js index 3ca58b50c6c2..ba3d813e308f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.width.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tabs.width.tests.js @@ -1,5 +1,5 @@ import 'generic_light.css!'; -import { triggerResizeEvent, triggerShownEvent } from 'events/visibility_change'; +import { triggerResizeEvent, triggerShownEvent } from 'common/core/events/visibility_change'; import $ from 'jquery'; import 'ui/tabs'; import { addShadowDomStyles } from 'core/utils/shadow_dom'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tileView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tileView.tests.js index fd557ec0ca3e..5f66c2ca2ec1 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tileView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tileView.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import globalConfig from 'core/config'; import keyboardMock from '../../helpers/keyboardMock.js'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { isRenderer } from 'core/utils/type'; import { deferUpdate } from 'core/utils/common'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toast.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toast.tests.js index fa96b9decf0d..b961b10e3180 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toast.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toast.tests.js @@ -1,7 +1,7 @@ import { getWidth, getHeight, getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; import pointerMock from '../../helpers/pointerMock.js'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { value as setViewPort } from 'core/utils/view_port'; import Toast from 'ui/toast'; import devices from 'core/devices.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.disabled.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.disabled.tests.js index ce46b6c3f17f..8dd187aca0fa 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.disabled.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.disabled.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import 'ui/toolbar'; import 'ui/toolbar/ui.toolbar.base'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import 'ui/button_group'; import 'ui/text_box'; @@ -17,7 +17,7 @@ import 'ui/menu'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; const moduleConfig = { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.menu.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.menu.tests.js index 013ac6314df4..b013fb7b4ddc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.menu.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.menu.tests.js @@ -1,7 +1,7 @@ import { getOuterHeight, getOuterWidth } from 'core/utils/size'; import $ from 'jquery'; -import ArrayStore from 'data/array_store'; -import fx from 'animation/fx'; +import ArrayStore from 'common/data/array_store'; +import fx from 'common/core/animation/fx'; import Button from 'ui/button'; import Popup from 'ui/popup'; import DropDownMenu from '__internal/ui/toolbar/internal/m_toolbar.menu'; @@ -10,7 +10,7 @@ import executeAsyncMock from '../../helpers/executeAsyncMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import keyboardMock from '../../helpers/keyboardMock.js'; import config from 'core/config'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import { isRenderer } from 'core/utils/type'; import themes from 'ui/themes'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.tests.js index 72e64c685afb..8236ef1c985f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbar.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import ToolbarBase from '__internal/ui/toolbar/m_toolbar.base'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import resizeCallbacks from 'core/utils/resize_callbacks'; import themes from 'ui/themes'; import { deferUpdate } from 'core/utils/common'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbarParts/toolbar.themes.sharedTests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbarParts/toolbar.themes.sharedTests.js index 922c39d11a26..80db9043bc4b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbarParts/toolbar.themes.sharedTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/toolbarParts/toolbar.themes.sharedTests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import Toolbar from 'ui/toolbar'; const BUTTON_CLASS = 'dx-button'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tooltip.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tooltip.tests.js index aa76389e1416..296a064268d6 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/tooltip.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/tooltip.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import Tooltip from 'ui/tooltip'; import renderer from 'core/renderer'; import uiErrors from 'ui/widget/ui.errors'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.checkboxes.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.checkboxes.tests.js index f556caac8c24..a53038734cdb 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.checkboxes.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.checkboxes.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import TreeViewTestWrapper from '../../helpers/TreeViewTestHelper.js'; import { Deferred } from 'core/utils/deferred'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import { DATA, data2 } from './treeViewParts/testData.js'; import localization from 'localization'; import 'ui/tree_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.expanded.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.expanded.tests.js index c749df0433ad..2440a4d59d81 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.expanded.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.expanded.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import TreeViewTestWrapper from '../../helpers/TreeViewTestHelper.js'; import { noop } from 'core/utils/common'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { DATA } from './treeViewParts/testData.js'; import { makeSlowDataSource } from './treeViewParts/testUtils.js'; import 'ui/tree_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.tests.js index a5a470ad0342..967d64ee1c0f 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeView.tests.js @@ -1,8 +1,8 @@ /* global stripFunctions */ import $ from 'jquery'; -import CustomStore from 'data/custom_store'; -import ArrayStore from 'data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import ArrayStore from 'common/data/array_store'; import 'ui/tree_view'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/accessibility.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/accessibility.js index 996adf6395b4..0eba897beccc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/accessibility.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/accessibility.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import TreeView from 'ui/tree_view'; import ariaAccessibilityTestHelper from '../../../helpers/ariaAccessibilityTestHelper.js'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; const { module, test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/animation.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/animation.js index 2386ab4bfc19..25714187aae5 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/animation.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/animation.js @@ -1,7 +1,7 @@ /* global internals */ import $ from 'jquery'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../../helpers/keyboardMock.js'; QUnit.module('Animation', { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/events.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/events.js index e764d016cdd1..e333a7a541bc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/events.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/events.js @@ -3,11 +3,11 @@ import $ from 'jquery'; import commonUtils from 'core/utils/common'; import typeUtils from 'core/utils/type'; -import holdEvent from 'events/hold'; +import holdEvent from 'common/core/events/hold'; import devices from '__internal/core/m_devices'; -import fx from 'animation/fx'; -import contextMenuEvent from 'events/contextmenu'; -import dblclickEvent from 'events/dblclick'; +import fx from 'common/core/animation/fx'; +import contextMenuEvent from 'common/core/events/contextmenu'; +import dblclickEvent from 'common/core/events/dblclick'; import TreeViewTestWrapper from '../../../helpers/TreeViewTestHelper.js'; const createInstance = (options) => new TreeViewTestWrapper(options); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/initialization.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/initialization.js index 694ba7278fbc..8b9650374fdc 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/initialization.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/initialization.js @@ -1,6 +1,6 @@ /* global initTree */ -import ArrayStore from 'data/array_store'; -import { DataSource } from 'data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { DataSource } from 'common/data/data_source/data_source'; import TreeViewTestWrapper from '../../../helpers/TreeViewTestHelper.js'; import $ from 'jquery'; QUnit.module('Initialization', () => { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/keyboardNavigation.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/keyboardNavigation.js index 1e05073c92b4..3e66f5311cd3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/keyboardNavigation.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/keyboardNavigation.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import devices from '__internal/core/m_devices'; import keyboardMock from '../../../helpers/keyboardMock.js'; import { isRenderer } from 'core/utils/type'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/rendering.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/rendering.js index d77447be17ab..fcd1cfddcc40 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/rendering.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/rendering.js @@ -3,10 +3,10 @@ import $ from 'jquery'; import commonUtils from 'core/utils/common'; import { isFunction } from 'core/utils/type'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; import TreeViewTestWrapper from '../../../helpers/TreeViewTestHelper.js'; const NODE_LOAD_INDICATOR_CLASS = 'dx-treeview-node-loadindicator'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/selection.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/selection.js index d90f4910e9c4..0771e3bccd94 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/selection.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/selection.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import keyboardMock from '../../../helpers/keyboardMock.js'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import TreeViewTestWrapper from '../../../helpers/TreeViewTestHelper.js'; const { module, test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/testUtils.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/testUtils.js index 2991f798d60a..91413a0149ae 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/testUtils.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/testUtils.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import CustomStore from 'data/custom_store'; -import ArrayStore from 'data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import ArrayStore from 'common/data/array_store'; export const makeSlowDataSource = (data) => { return { diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/virtualMode.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/virtualMode.js index 96409d06fe08..1a217b818bf9 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/virtualMode.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/treeViewParts/virtualMode.js @@ -2,13 +2,13 @@ import $ from 'jquery'; import { noop } from 'core/utils/common'; -import fx from 'animation/fx'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; -import dblclickEvent from 'events/dblclick'; +import fx from 'common/core/animation/fx'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; +import dblclickEvent from 'common/core/events/dblclick'; import TreeView from 'ui/tree_view'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import TreeViewTestWrapper from '../../../helpers/TreeViewTestHelper.js'; import LoadIndicator from 'ui/load_indicator'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/collectionWidget.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/collectionWidget.tests.js index 14a0f679139f..f17dfaf1b2d6 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/collectionWidget.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/collectionWidget.tests.js @@ -3,12 +3,12 @@ import { noop } from 'core/utils/common'; import { isRenderer } from 'core/utils/type'; import config from 'core/config'; import registerComponent from 'core/component_registrator'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import Store from 'data/abstract_store'; -import ArrayStore from 'data/array_store'; +import ArrayStore from 'common/data/array_store'; import { setTemplateEngine } from 'core/templates/template_engine_registry'; import support from '__internal/core/utils/m_support'; -import holdEvent from 'events/hold'; +import holdEvent from 'common/core/events/hold'; import CollectionWidget from 'ui/collection/ui.collection_widget.edit'; import List from 'ui/list'; import executeAsyncMock from '../../helpers/executeAsyncMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/editingTests.js b/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/editingTests.js index 6fcf86c77c57..91b8870e57ea 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/editingTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/editingTests.js @@ -1,8 +1,8 @@ import $ from 'jquery'; import CollectionWidget from 'ui/collection/ui.collection_widget.edit'; -import { DataSource } from 'data/data_source/data_source'; -import ArrayStore from 'data/array_store'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import ArrayStore from 'common/data/array_store'; +import { CustomStore } from 'common/data/custom_store'; import executeAsyncMock from '../../../helpers/executeAsyncMock.js'; import keyboardMock from '../../../helpers/keyboardMock.js'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/liveUpdateTests.js b/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/liveUpdateTests.js index 6d01ba87c210..b18ee15d8ef0 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/liveUpdateTests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/collectionWidgetParts/liveUpdateTests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import CollectionWidget from 'ui/collection/ui.collection_widget.live_update'; -import { DataSource } from 'data/data_source/data_source'; -import CustomStore from 'data/custom_store'; +import { DataSource } from 'common/data/data_source/data_source'; +import { CustomStore } from 'common/data/custom_store'; const { module, test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/dialog.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/dialog.tests.js index d53fbd6f6f20..156fe7316ef8 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/dialog.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/dialog.tests.js @@ -4,7 +4,7 @@ import devices from '__internal/core/m_devices'; import { alert, confirm, custom } from 'ui/dialog'; import domUtils from '__internal/core/utils/m_dom'; import errors from 'ui/widget/ui.errors'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import keyboardMock from '../../helpers/keyboardMock.js'; import { value as viewPort } from 'core/utils/view_port'; import domAdapter from '__internal/core/m_dom_adapter'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/floatingActionButtonRepaint.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/floatingActionButtonRepaint.tests.js index e89538151d6f..7682004820ac 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/floatingActionButtonRepaint.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/floatingActionButtonRepaint.tests.js @@ -1,7 +1,7 @@ import $ from 'jquery'; import config from 'core/config'; import repaintFloatingActionButton from 'ui/speed_dial_action/repaint_floating_action_button'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import 'ui/speed_dial_action'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/hideToasts.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/hideToasts.tests.js index 42764de09e88..86cb76ca9d2b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/hideToasts.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/hideToasts.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import notify from 'ui/notify'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import hideToasts from 'ui/toast/hide_toasts'; QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalCollectionWidget.js b/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalCollectionWidget.js index afa01c4ea2c1..038b2f801ecf 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalCollectionWidget.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalCollectionWidget.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import HierarchicalCollectionWidget from 'ui/hierarchical_collection/ui.hierarchical_collection_widget'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; const DISABLED_STATE_CLASS = 'dx-state-disabled'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalDataAdapter.js b/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalDataAdapter.js index 27347eabf7a1..4ffaddf4654a 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalDataAdapter.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/hierarchicalCollectionWidgetParts/hierarchicalDataAdapter.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import HierarchicalDataAdapter from '__internal/ui/hierarchical_collection/m_data_adapter'; -import { processRequestResultLock } from 'data/utils'; +import { processRequestResultLock } from 'common/data/utils'; import HierarchicalCollectionTestHelper from './hierarchicalCollectionTestHelper.js'; import errors from 'ui/widget/ui.errors'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/keyboardProcessor.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/keyboardProcessor.tests.js index 72044865678f..fd104853ace6 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/keyboardProcessor.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/keyboardProcessor.tests.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import KeyboardProcessor from 'events/core/keyboard_processor'; +import KeyboardProcessor from 'common/core/events/core/keyboard_processor'; const { test } = QUnit; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/notify.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/notify.tests.js index bc77b7bd7f1d..c960f9adc11a 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/notify.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/notify.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import notify from 'ui/notify'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; import { value as viewPort } from 'core/utils/view_port'; import { isPlainObject } from 'core/utils/type'; import 'generic_light.css!'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui/tooltip.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/tooltip.tests.js index 5149503d9ec0..9ab72d865498 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/tooltip.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/tooltip.tests.js @@ -2,7 +2,7 @@ import $ from 'jquery'; import Tooltip from 'ui/tooltip'; import { show } from '__internal/ui/tooltip/m_tooltip'; import viewPort from 'core/utils/view_port'; -import fx from 'animation/fx'; +import fx from 'common/core/animation/fx'; function checkTooltip(assert) { const $testContent = $('.dx-popup-content').find('.test-content'); diff --git a/packages/devextreme/testing/tests/DevExpress.ui/widget.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/widget.tests.js index 616099e6a8aa..4c23b34429a3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/widget.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/widget.tests.js @@ -6,7 +6,7 @@ import { extend } from 'core/utils/extend'; import { TemplateBase } from 'core/templates/template_base'; import { Template } from 'core/templates/template'; import DataHelperMixin from 'data_helper'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import config from 'core/config'; diff --git a/packages/devextreme/testing/tests/DevExpress.utils/utils.inkRipple.tests.js b/packages/devextreme/testing/tests/DevExpress.utils/utils.inkRipple.tests.js index 44ec872ea0ab..ce7e9d86dcc5 100644 --- a/packages/devextreme/testing/tests/DevExpress.utils/utils.inkRipple.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.utils/utils.inkRipple.tests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); const inkRipple = require('ui/widget/utils.ink_ripple'); -const fx = require('animation/fx'); +const fx = require('common/core/animation/fx'); const INKRIPPLE_CLASS = 'dx-inkripple'; const INKRIPPLE_WAVE_CLASS = 'dx-inkripple-wave'; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.part1.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.part1.tests.js index 53a73ac4c48d..3d647e934993 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.part1.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.part1.tests.js @@ -2,7 +2,7 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; const vizMocks = require('../../helpers/vizMocks.js'); const commons = require('./chartParts/commons.js'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; const { BaseChart } = require('__internal/viz/chart_components/m_base_chart'); const rendererModule = require('viz/core/renderers/renderer'); const layoutManagerModule = require('viz/chart_components/layout_manager'); @@ -516,7 +516,7 @@ QUnit.test('not hide on resize, when resize', function(assert) { }); QUnit.test('Schedule loading indicator hiding on data source changed event', function(assert) { - const DataSource = require('data/data_source/data_source').DataSource; + const DataSource = require('common/data/data_source/data_source').DataSource; const dataSource = new DataSource({ load: function() { return []; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.tests.js index 7229bfee3640..2514bd7b64fa 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/chart.tests.js @@ -15,7 +15,7 @@ const Legend = vizMocks.Legend; const ChartTitle = vizMocks.Title; const Axis = vizMocks.stubClass(axisModule.Axis); const Range = vizMocks.stubClass(rangeModule.Range); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; const DataSourceMock = vizMocks.stubClass(DataSource); require('viz/chart'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/chartInteraction.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/chartInteraction.tests.js index af04c50dc2ad..18a6afc7c339 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/chartInteraction.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/chartInteraction.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import devices from '__internal/core/m_devices'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; import errors from 'core/errors'; import 'viz/chart'; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/chartSync.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/chartSync.tests.js index 5fbca7ff30ca..cb0506e6c71d 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/chartSync.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/chartSync.tests.js @@ -18,7 +18,7 @@ const layoutManagerModule = require('viz/chart_components/layout_manager'); const LayoutManager = vizMocks.stubClass(layoutManagerModule.LayoutManager); let validateData; // It lives outside of a test context because of "resetMocksInChart" which lives outside of a test context const dataValidatorModule = require('viz/components/data_validator'); -const CustomStore = require('data/custom_store'); +const CustomStore = require('common/data/custom_store').CustomStore; const chartThemeManagerModule = require('viz/components/chart_theme_manager'); const scrollBarModule = require('viz/chart_components/scroll_bar'); const ScrollBar = scrollBarModule.ScrollBar; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/pieChart.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/pieChart.tests.js index a070e3347a7d..a8b8754837f9 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/pieChart.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/pieChart.tests.js @@ -8,7 +8,7 @@ import { BaseChart } from '__internal/viz/chart_components/m_base_chart'; import labelModule from 'viz/series/points/label'; import dataValidatorModule from 'viz/components/data_validator'; import translator1DModule from 'viz/translators/translator1d'; -import CustomStore from 'data/custom_store'; +import { CustomStore } from 'common/data/custom_store'; import chartThemeManagerModule from 'viz/components/chart_theme_manager'; import layoutManagerModule from 'viz/chart_components/layout_manager'; import trackerModule from 'viz/chart_components/tracker'; @@ -19,7 +19,7 @@ import { } from '../../helpers/chartMocks.js'; import TemplateManagerModule from '__internal/core/m_template_manager'; import graphicObjects from '__internal/common/m_charts'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import devices from '__internal/core/m_devices'; const LabelCtor = new vizMocks.ObjectPool(labelModule.Label); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/scrollBar.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/scrollBar.tests.js index 1e766568996b..bfbb7dbfbffc 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/scrollBar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/scrollBar.tests.js @@ -3,7 +3,7 @@ import vizMocks from '../../helpers/vizMocks.js'; import { ScrollBar } from 'viz/chart_components/scroll_bar'; import translator2DModule from 'viz/translators/translator2d'; import pointerMock from '../../helpers/pointerMock.js'; -import dragEvents from 'events/drag'; +import dragEvents from 'common/core/events/drag'; const Translator = vizMocks.stubClass(translator2DModule.Translator2D); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.charts/tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.charts/tracker.tests.js index 972fe2ef4d0d..ea50c540fd12 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.charts/tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.charts/tracker.tests.js @@ -6,7 +6,7 @@ import axisModule from 'viz/axes/base_axis'; import { Crosshair } from 'viz/chart_components/crosshair'; import trackers from 'viz/chart_components/tracker'; import { MockAxis } from '../../helpers/chartMocks.js'; -import holdEvent from 'events/hold'; +import holdEvent from 'common/core/events/hold'; import errors from 'core/errors'; function getEvent(type, params) { diff --git a/packages/devextreme/testing/tests/DevExpress.viz.core/annotations.plugins.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.core/annotations.plugins.tests.js index 33b7f15e44f5..3ddf3e76c8da 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.core/annotations.plugins.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.core/annotations.plugins.tests.js @@ -4,7 +4,7 @@ import rendererModule from 'viz/core/renderers/renderer'; import TooltipModule from 'viz/core/tooltip'; import vizMocks from '../../helpers/vizMocks.js'; import pointerMock from '../../helpers/pointerMock.js'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import { getDocument } from 'core/dom_adapter'; import devices from '__internal/core/m_devices'; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.core/loadingIndicator.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.core/loadingIndicator.integration.tests.js index 5b4140afe64b..6b1d9a40c5fa 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.core/loadingIndicator.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.core/loadingIndicator.integration.tests.js @@ -3,7 +3,7 @@ require('viz/tree_map/tree_map'); const $ = require('jquery'); const vizMocks = require('../../helpers/vizMocks.js'); const loadingIndicatorModule = require('viz/core/loading_indicator'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; $('#qunit-fixture').append('
'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.funnel/funnel.tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.funnel/funnel.tracker.tests.js index 6a152c63a7b8..b5c2398f9854 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.funnel/funnel.tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.funnel/funnel.tracker.tests.js @@ -3,8 +3,8 @@ const common = require('./commonParts/common.js'); const createFunnel = common.createFunnel; const environment = common.environment; const trackerModule = require('viz/funnel/tracker'); -const clickEventName = require('events/click').name; -const pointerEvents = require('events/pointer'); +const clickEventName = require('common/core/events/click').name; +const pointerEvents = require('common/core/events/pointer'); const labelModule = require('viz/series/points/label'); const vizMocks = require('../../helpers/vizMocks.js'); const Label = labelModule.Label; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.gauges/tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.gauges/tracker.tests.js index 1b3363b38881..b74b11e33c1c 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.gauges/tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.gauges/tracker.tests.js @@ -2,7 +2,7 @@ const $ = require('jquery'); const noop = require('core/utils/common').noop; const vizMocks = require('../../helpers/vizMocks.js'); const Tracker = require('viz/gauges/tracker'); -const pointerEvents = require('events/pointer'); +const pointerEvents = require('common/core/events/pointer'); QUnit.module('Tracker', { beforeEach: function() { diff --git a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part1.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part1.tests.js index 8f67f9e2a78a..202c2f5411e8 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part1.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part1.tests.js @@ -1,6 +1,6 @@ const $ = require('jquery'); const trackerModule = require('viz/range_selector/tracker'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; const seriesDataSourceModule = require('viz/range_selector/series_data_source'); const commons = require('./rangeSelectorParts/commons.js'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part2.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part2.tests.js index 66b53a83f0c5..f30fac4fb796 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part2.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part2.tests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); const commons = require('./rangeSelectorParts/commons.js'); const seriesDataSourceModule = require('viz/range_selector/series_data_source'); -const dataSourceModule = require('data/data_source/data_source'); +const dataSourceModule = require('common/data/data_source/data_source'); const _SeriesDataSource = seriesDataSourceModule.SeriesDataSource; const dateUtils = require('core/utils/date'); const vizMocks = require('../../helpers/vizMocks.js'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part3.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part3.tests.js index 45ccd3a191d7..066708ca35d9 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part3.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/common.part3.tests.js @@ -4,8 +4,8 @@ import { DEBUG_stub_createIncidentOccurred, DEBUG_restore_createIncidentOccurred import commons from './rangeSelectorParts/commons.js'; import slidersControllerModule from 'viz/range_selector/sliders_controller'; import seriesDataSourceModule from 'viz/range_selector/series_data_source'; -import { DataSource } from 'data/data_source/data_source'; -import dateLocalization from 'localization/date'; +import { DataSource } from 'common/data/data_source/data_source'; +import dateLocalization from 'common/core/localization/date'; import axisModule from 'viz/axes/base_axis'; const _SeriesDataSource = seriesDataSourceModule.SeriesDataSource; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/range_selector.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/range_selector.integration.tests.js index b326cc17975e..bb7be9472727 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/range_selector.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/range_selector.integration.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import 'viz/range_selector/range_selector'; -import { DataSource } from 'data/data_source/data_source'; +import { DataSource } from 'common/data/data_source/data_source'; QUnit.testStart(function() { const markup = diff --git a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/tracker.tests.js index b61aed28566b..d3a52e1291f8 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.rangeSelector/tracker.tests.js @@ -1,5 +1,5 @@ const $ = require('jquery'); -const pointerEvents = require('events/pointer'); +const pointerEvents = require('common/core/events/pointer'); const trackerModule = require('viz/range_selector/tracker'); QUnit.testStart(function() { diff --git a/packages/devextreme/testing/tests/DevExpress.viz.renderers/Animation.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.renderers/Animation.tests.js index 1313bbbbde8e..52364a182d3d 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.renderers/Animation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.renderers/Animation.tests.js @@ -1,7 +1,7 @@ /* global currentAssert */ const $ = require('jquery'); -const animationFrame = require('animation/frame'); +const animationFrame = require('common/core/animation/frame'); const commonUtils = require('core/utils/common'); const typeUtils = require('core/utils/type'); const animationModule = require('viz/core/renderers/animation'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.renderers/SvgElement.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.renderers/SvgElement.tests.js index e1ee76ce0aa4..5d113cb9924b 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.renderers/SvgElement.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.renderers/SvgElement.tests.js @@ -2,7 +2,7 @@ import jQuery from 'jquery'; import typeUtils from 'core/utils/type'; import rendererModule from 'viz/core/renderers/renderer'; import coreRenderer from 'core/renderer'; -import eventsEngine from 'events/core/events_engine'; +import eventsEngine from 'common/core/events/core/events_engine'; import domAdapter from '__internal/core/m_dom_adapter'; import Color from 'color'; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.sankey/sankey.tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.sankey/sankey.tracker.tests.js index 372dc7123474..cfe4d9e8199b 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.sankey/sankey.tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.sankey/sankey.tracker.tests.js @@ -2,8 +2,8 @@ import $ from 'jquery'; import common, { createSankey, environment } from './commonParts/common.js'; import trackerModule from 'viz/sankey/tracker'; import tooltipModule from 'viz/core/tooltip'; -import { name as clickEventName } from 'events/click'; -import pointerEvents from 'events/pointer'; +import { name as clickEventName } from 'common/core/events/click'; +import pointerEvents from 'common/core/events/pointer'; import { setTooltipCustomOptions } from 'viz/sankey/tooltip'; import domAdapter from '__internal/core/m_dom_adapter'; diff --git a/packages/devextreme/testing/tests/DevExpress.viz.sparklines/baseSparklineTooltipEvents.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.sparklines/baseSparklineTooltipEvents.tests.js index 9c6c48ed38ab..0bbc8be3d200 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.sparklines/baseSparklineTooltipEvents.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.sparklines/baseSparklineTooltipEvents.tests.js @@ -3,7 +3,7 @@ const $ = require('jquery'); const vizMocks = require('../../helpers/vizMocks.js'); const rendererModule = require('viz/core/renderers/renderer'); -const pointerEvents = require('events/pointer'); +const pointerEvents = require('common/core/events/pointer'); require('viz/sparkline'); require('viz/bullet'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.sparklines/sparkline.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.sparklines/sparkline.tests.js index 691cd7511c7e..16d0f1f00652 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.sparklines/sparkline.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.sparklines/sparkline.tests.js @@ -8,7 +8,7 @@ const rendererModule = require('viz/core/renderers/renderer'); const dataValidatorModule = require('viz/components/data_validator'); const translator2DModule = require('viz/translators/translator2d'); const seriesModule = require('viz/series/base_series'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; require('viz/sparkline'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.treeMap/tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.treeMap/tracker.tests.js index 3349058cba6f..3144a0c5ff70 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.treeMap/tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.treeMap/tracker.tests.js @@ -4,8 +4,8 @@ const $ = require('jquery'); const trackerModule = require('viz/tree_map/tracker'); const tooltipModule = require('viz/core/tooltip'); -const clickEventName = require('events/click').name; -const pointerEvents = require('events/pointer'); +const clickEventName = require('common/core/events/click').name; +const pointerEvents = require('common/core/events/pointer'); const dxTreeMap = require('viz/tree_map/tree_map'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.treeMap/treeMap.base.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.treeMap/treeMap.base.tests.js index 36f5a8ebdfc3..be089a9c83e4 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.treeMap/treeMap.base.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.treeMap/treeMap.base.tests.js @@ -1,7 +1,7 @@ const $ = require('jquery'); const common = require('./commonParts/common.js'); const themeModule = require('viz/themes'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; function createDataSource(value) { return new DataSource({ diff --git a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/map.integration.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/map.integration.tests.js index ec5b0954966e..9b9883d31a5c 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/map.integration.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/map.integration.tests.js @@ -1,6 +1,6 @@ import $ from 'jquery'; -import CustomStore from 'data/custom_store'; -import DataSource from 'data/data_source'; +import { CustomStore } from 'common/data/custom_store'; +import DataSource from 'common/data/data_source'; import { projection } from 'viz/vector_map/projection'; const simpleProjection = projection({ aspectRatio: 4 / 3, diff --git a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer.tests.js index 6c53d4a603ee..7bc8257484a2 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer.tests.js @@ -11,7 +11,7 @@ let stubSelectStrategy; let StubMapLayerElement; let StubProxy; const projectionModule = require('viz/vector_map/projection.main'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; const baseThemeManagerModule = require('viz/core/base_theme_manager'); const vizMocks = require('../../helpers/vizMocks.js'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer_new.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer_new.tests.js index f13b7a33fbec..445590248afa 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer_new.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/mapLayer_new.tests.js @@ -7,7 +7,7 @@ const controlBarModule = require('viz/vector_map/control_bar/control_bar'); const legendModule = require('viz/vector_map/legend'); const tooltipModule = require('viz/core/tooltip'); const tooltipViewerModule = require('viz/vector_map/tooltip_viewer'); -const DataSource = require('data/data_source/data_source').DataSource; +const DataSource = require('common/data/data_source/data_source').DataSource; const exportMenuModule = require('viz/core/export'); // TODO maybe if you test layer - you should create exact layer? const rendererModule = require('viz/core/renderers/renderer'); diff --git a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/tracker.tests.js b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/tracker.tests.js index 611197e8e10f..adb782eeaa39 100644 --- a/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/tracker.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.viz.vectorMap/tracker.tests.js @@ -9,7 +9,7 @@ import { noop } from 'core/utils/common'; import vizMocks from '../../helpers/vizMocks.js'; import trackerModule from 'viz/vector_map/tracker'; import eventEmitterModule from 'viz/vector_map/event_emitter'; -import animationFrame from 'animation/frame'; +import animationFrame from 'common/core/animation/frame'; const FOCUS_OFF_DELAY = 100; diff --git a/packages/devextreme/ts/aliases.d.ts b/packages/devextreme/ts/aliases.d.ts index d75d552c5088..4e43900f2519 100644 --- a/packages/devextreme/ts/aliases.d.ts +++ b/packages/devextreme/ts/aliases.d.ts @@ -1,826 +1,940 @@ -declare module DevExpress { - /** @deprecated Use DevExpress.events.EventObject instead */ - export type dxEvent = DevExpress.events.EventObject; - /** @deprecated Use DevExpress.events.event instead */ - export type event = DevExpress.events.event; -} - -declare module DevExpress.viz { - /** @deprecated Use DevExpress.viz.ChartSeries instead */ - export type dxChartSeries = DevExpress.viz.ChartSeries; - /** @deprecated Use DevExpress.viz.PieChartSeries instead */ - export type dxPieChartSeries = DevExpress.viz.PieChartSeries; - /** @deprecated Use DevExpress.viz.PolarChartSeries instead */ - export type dxPolarChartSeries = DevExpress.viz.PolarChartSeries; - - /** @deprecated Use DevExpress.viz instead */ - export module charts { - /** @deprecated */ - export type dxChartOptions = DevExpress.viz.dxChartOptions; - /** @deprecated */ - export type dxChartArgumentAxis = DevExpress.viz.dxChartArgumentAxis; - /** @deprecated */ - export type dxChartArgumentAxisConstantLines = DevExpress.viz.dxChartArgumentAxisConstantLines; - /** @deprecated */ - export type dxChartArgumentAxisConstantLinesLabel = DevExpress.viz.dxChartArgumentAxisConstantLinesLabel; - /** @deprecated */ - export type dxChartArgumentAxisConstantLineStyle = DevExpress.viz.dxChartArgumentAxisConstantLineStyle; - /** @deprecated */ - export type dxChartArgumentAxisConstantLineStyleLabel = DevExpress.viz.dxChartArgumentAxisConstantLineStyleLabel; - /** @deprecated */ - export type dxChartArgumentAxisLabel = DevExpress.viz.dxChartArgumentAxisLabel; - /** @deprecated */ - export type dxChartArgumentAxisStrips = DevExpress.viz.dxChartArgumentAxisStrips; - /** @deprecated */ - export type dxChartArgumentAxisStripsLabel = DevExpress.viz.dxChartArgumentAxisStripsLabel; - /** @deprecated */ - export type dxChartArgumentAxisTitle = DevExpress.viz.dxChartArgumentAxisTitle; - /** @deprecated */ - export type dxChartCommonAxisSettings = DevExpress.viz.dxChartCommonAxisSettings; - /** @deprecated */ - export type dxChartCommonAxisSettingsConstantLineStyle = DevExpress.viz.dxChartCommonAxisSettingsConstantLineStyle; - /** @deprecated */ - export type dxChartCommonAxisSettingsConstantLineStyleLabel = DevExpress.viz.dxChartCommonAxisSettingsConstantLineStyleLabel; - /** @deprecated */ - export type dxChartCommonAxisSettingsLabel = DevExpress.viz.dxChartCommonAxisSettingsLabel; - /** @deprecated */ - export type dxChartCommonAxisSettingsStripStyle = DevExpress.viz.dxChartCommonAxisSettingsStripStyle; - /** @deprecated */ - export type dxChartCommonAxisSettingsStripStyleLabel = DevExpress.viz.dxChartCommonAxisSettingsStripStyleLabel; - /** @deprecated */ - export type dxChartCommonAxisSettingsTitle = DevExpress.viz.dxChartCommonAxisSettingsTitle; - /** @deprecated */ - export type dxChartCommonPaneSettings = DevExpress.viz.dxChartCommonPaneSettings; - /** @deprecated */ - export type dxChartCommonSeriesSettings = DevExpress.viz.dxChartCommonSeriesSettings; - /** @deprecated */ - export type dxChartLegend = DevExpress.viz.dxChartLegend; - /** @deprecated */ - export type dxChartPanes = DevExpress.viz.dxChartPanes; - /** @deprecated */ - export type dxChartSeries = DevExpress.viz.dxChartSeries; - /** @deprecated */ - export type dxChartTooltip = DevExpress.viz.dxChartTooltip; - /** @deprecated */ - export type dxChartValueAxis = DevExpress.viz.dxChartValueAxis; - /** @deprecated */ - export type dxChartValueAxisConstantLines = DevExpress.viz.dxChartValueAxisConstantLines; - /** @deprecated */ - export type dxChartValueAxisConstantLinesLabel = DevExpress.viz.dxChartValueAxisConstantLinesLabel; - /** @deprecated */ - export type dxChartValueAxisConstantLineStyle = DevExpress.viz.dxChartValueAxisConstantLineStyle; - /** @deprecated */ - export type dxChartValueAxisConstantLineStyleLabel = DevExpress.viz.dxChartValueAxisConstantLineStyleLabel; - /** @deprecated */ - export type dxChartValueAxisLabel = DevExpress.viz.dxChartValueAxisLabel; - /** @deprecated */ - export type dxChartValueAxisStrips = DevExpress.viz.dxChartValueAxisStrips; - /** @deprecated */ - export type dxChartValueAxisStripsLabel = DevExpress.viz.dxChartValueAxisStripsLabel; - /** @deprecated */ - export type dxChartValueAxisTitle = DevExpress.viz.dxChartValueAxisTitle; - - /** @deprecated */ - export type dxPieChartOptions = DevExpress.viz.dxPieChartOptions; - /** @deprecated */ - export type dxPieChartAdaptiveLayout = DevExpress.viz.dxPieChartAdaptiveLayout; - /** @deprecated */ - export type dxPieChartLegend = DevExpress.viz.dxPieChartLegend; - /** @deprecated */ - export type dxPieChartSeries = DevExpress.viz.dxPieChartSeries; - - /** @deprecated */ - export type dxPolarChartOptions = DevExpress.viz.dxPolarChartOptions; - /** @deprecated */ - export type dxPolarChartAdaptiveLayout = DevExpress.viz.dxPolarChartAdaptiveLayout; - /** @deprecated */ - export type dxPolarChartArgumentAxis = DevExpress.viz.dxPolarChartArgumentAxis; - /** @deprecated */ - export type dxPolarChartArgumentAxisConstantLines = DevExpress.viz.dxPolarChartArgumentAxisConstantLines; - /** @deprecated */ - export type dxPolarChartArgumentAxisConstantLinesLabel = DevExpress.viz.dxPolarChartArgumentAxisConstantLinesLabel; - /** @deprecated */ - export type dxPolarChartArgumentAxisLabel = DevExpress.viz.dxPolarChartArgumentAxisLabel; - /** @deprecated */ - export type dxPolarChartArgumentAxisStrips = DevExpress.viz.dxPolarChartArgumentAxisStrips; - /** @deprecated */ - export type dxPolarChartArgumentAxisStripsLabel = DevExpress.viz.dxPolarChartArgumentAxisStripsLabel; - /** @deprecated */ - export type dxPolarChartCommonAxisSettings = DevExpress.viz.dxPolarChartCommonAxisSettings; - /** @deprecated */ - export type dxPolarChartCommonAxisSettingsConstantLineStyle = DevExpress.viz.dxPolarChartCommonAxisSettingsConstantLineStyle; - /** @deprecated */ - export type dxPolarChartCommonAxisSettingsConstantLineStyleLabel = DevExpress.viz.dxPolarChartCommonAxisSettingsConstantLineStyleLabel; - /** @deprecated */ - export type dxPolarChartCommonAxisSettingsLabel = DevExpress.viz.dxPolarChartCommonAxisSettingsLabel; - /** @deprecated */ - export type dxPolarChartCommonAxisSettingsStripStyle = DevExpress.viz.dxPolarChartCommonAxisSettingsStripStyle; - /** @deprecated */ - export type dxPolarChartCommonAxisSettingsStripStyleLabel = DevExpress.viz.dxPolarChartCommonAxisSettingsStripStyleLabel; - /** @deprecated */ - export type dxPolarChartCommonAxisSettingsTick = DevExpress.viz.dxPolarChartCommonAxisSettingsTick; - /** @deprecated */ - export type dxPolarChartCommonSeriesSettings = DevExpress.viz.dxPolarChartCommonSeriesSettings; - /** @deprecated */ - export type dxPolarChartLegend = DevExpress.viz.dxPolarChartLegend; - /** @deprecated */ - export type dxPolarChartSeries = DevExpress.viz.dxPolarChartSeries; - /** @deprecated */ - export type dxPolarChartTooltip = DevExpress.viz.dxPolarChartTooltip; - /** @deprecated */ - export type dxPolarChartValueAxis = DevExpress.viz.dxPolarChartValueAxis; - /** @deprecated */ - export type dxPolarChartValueAxisConstantLines = DevExpress.viz.dxPolarChartValueAxisConstantLines; - /** @deprecated */ - export type dxPolarChartValueAxisConstantLinesLabel = DevExpress.viz.dxPolarChartValueAxisConstantLinesLabel; - /** @deprecated */ - export type dxPolarChartValueAxisLabel = DevExpress.viz.dxPolarChartValueAxisLabel; - /** @deprecated */ - export type dxPolarChartValueAxisStrips = DevExpress.viz.dxPolarChartValueAxisStrips; - /** @deprecated */ - export type dxPolarChartValueAxisStripsLabel = DevExpress.viz.dxPolarChartValueAxisStripsLabel; - /** @deprecated */ - export type dxPolarChartValueAxisTick = DevExpress.viz.dxPolarChartValueAxisTick; - } - - /** @deprecated Use DevExpress.viz instead */ - export module funnel { - /** @deprecated */ - export type dxFunnelOptions = DevExpress.viz.dxFunnelOptions; - /** @deprecated */ - export type dxFunnelTooltip = DevExpress.viz.dxFunnelTooltip; - } - - /** @deprecated Use DevExpress.viz instead */ - export module gauges { - /** @deprecated */ - export type dxCircularGaugeOptions = DevExpress.viz.dxCircularGaugeOptions; - /** @deprecated */ - export type dxCircularGaugeRangeContainer = DevExpress.viz.dxCircularGaugeRangeContainer; - /** @deprecated */ - export type dxCircularGaugeScale = DevExpress.viz.dxCircularGaugeScale; - /** @deprecated */ - export type dxCircularGaugeScaleLabel = DevExpress.viz.dxCircularGaugeScaleLabel; - - /** @deprecated */ - export type dxLinearGaugeOptions = DevExpress.viz.dxLinearGaugeOptions; - /** @deprecated */ - export type dxLinearGaugeRangeContainer = DevExpress.viz.dxLinearGaugeRangeContainer; - /** @deprecated */ - export type dxLinearGaugeScale = DevExpress.viz.dxLinearGaugeScale; - /** @deprecated */ - export type dxLinearGaugeScaleLabel = DevExpress.viz.dxLinearGaugeScaleLabel; - - /** @deprecated */ - export type dxBarGaugeOptions = DevExpress.viz.dxBarGaugeOptions; - /** @deprecated */ - export type dxBarGaugeTooltip = DevExpress.viz.dxBarGaugeTooltip; - } - - /** @deprecated Use DevExpress.viz instead */ - export module rangeSelector { - /** @deprecated */ - export type dxRangeSelectorOptions = DevExpress.viz.dxRangeSelectorOptions; - } - - /** @deprecated Use DevExpress.viz instead */ - export module sparklines { - /** @deprecated */ - export type dxSparklineOptions = DevExpress.viz.dxSparklineOptions; - /** @deprecated */ - export type dxBulletOptions = DevExpress.viz.dxBulletOptions; - } - - /** @deprecated Use DevExpress.viz instead */ - export module map { - /** @deprecated */ - export type dxVectorMapOptions = DevExpress.viz.dxVectorMapOptions; - /** @deprecated */ - export type dxVectorMapTooltip = DevExpress.viz.dxVectorMapTooltip; - } - - /** @deprecated Use DevExpress.viz instead */ - export module treeMap { - /** @deprecated */ - export type dxTreeMapOptions = DevExpress.viz.dxTreeMapOptions; - /** @deprecated */ - export type dxTreeMapTooltip = DevExpress.viz.dxTreeMapTooltip; - } -} - -declare module DevExpress.ui { - /** @deprecated Use DevExpress.ui.dxAccordionItem */ - export type dxAccordionItemTemplate = DevExpress.ui.dxAccordionItem; - - /** @deprecated Use DevExpress.ui.dxActionSheetItem */ - export type dxActionSheetItemTemplate = DevExpress.ui.dxActionSheetItem; - - /** @deprecated Use DevExpress.ui.dxBoxItem */ - export type dxBoxItemTemplate = DevExpress.ui.dxBoxItem; - - /** @deprecated Use DevExpress.ui.dxGalleryItem */ - export type dxGalleryItemTemplate = DevExpress.ui.dxGalleryItem; - - /** @deprecated Use DevExpress.ui.dxMultiViewItem */ - export type dxMultiViewItemTemplate = DevExpress.ui.dxMultiViewItem; - - /** @deprecated Use DevExpress.ui.dxResponsiveBoxItem */ - export type dxResponsiveBoxItemTemplate = DevExpress.ui.dxResponsiveBoxItem; - - /** @deprecated Use DevExpress.ui.dxSchedulerAppointment */ - export type dxSchedulerAppointmentTemplate = DevExpress.ui.dxSchedulerAppointment; - - /** @deprecated Use DevExpress.ui.dxTabsItem */ - export type dxTabsItemTemplate = DevExpress.ui.dxTabsItem; - - /** @deprecated Use DevExpress.ui.dxTabPanelItem */ - export type dxTabPanelItemTemplate = DevExpress.ui.dxTabPanelItem; - - /** @deprecated Use DevExpress.ui.dxTileViewItem */ - export type dxTileViewItemTemplate = DevExpress.ui.dxTileViewItem; - - /** @deprecated Use DevExpress.ui.dxToolbarItem */ - export type dxToolbarItemTemplate = DevExpress.ui.dxToolbarItem; - - /** @deprecated Use DevExpress.ui.CollectionWidgetItem */ - export type CollectionWidgetItemTemplate = DevExpress.ui.CollectionWidgetItem; - - /** @deprecated Use DevExpress.ui.dxContextMenuItem */ - export type dxContextMenuItemTemplate = DevExpress.ui.dxContextMenuItem; +declare namespace DevExpress { + /** @deprecated Use DevExpress.common.EventObject instead */ + export type dxEvent = common.core.events.EventObject; + /** @deprecated Use DevExpress.common.event instead */ + export type event = events.event; +} + +declare namespace DevExpress.viz { + /** @deprecated Use DevExpress.viz.ChartSeries instead */ + export type dxChartSeries = ChartSeries; + /** @deprecated Use DevExpress.viz.PieChartSeries instead */ + export type dxPieChartSeries = PieChartSeries; + /** @deprecated Use DevExpress.viz.PolarChartSeries instead */ + export type dxPolarChartSeries = PolarChartSeries; + + /** @deprecated Use DevExpress.viz instead */ + export namespace charts { + /** @deprecated */ + export type dxChartOptions = viz.dxChartOptions; + /** @deprecated */ + export type dxChartArgumentAxis = viz.dxChartArgumentAxis; + /** @deprecated */ + export type dxChartArgumentAxisConstantLines = viz.dxChartArgumentAxisConstantLines; + /** @deprecated */ + export type dxChartArgumentAxisConstantLinesLabel = viz.dxChartArgumentAxisConstantLinesLabel; + /** @deprecated */ + export type dxChartArgumentAxisConstantLineStyle = viz.dxChartArgumentAxisConstantLineStyle; + /** @deprecated */ + export type dxChartArgumentAxisConstantLineStyleLabel = viz.dxChartArgumentAxisConstantLineStyleLabel; + /** @deprecated */ + export type dxChartArgumentAxisLabel = viz.dxChartArgumentAxisLabel; + /** @deprecated */ + export type dxChartArgumentAxisStrips = viz.dxChartArgumentAxisStrips; + /** @deprecated */ + export type dxChartArgumentAxisStripsLabel = viz.dxChartArgumentAxisStripsLabel; + /** @deprecated */ + export type dxChartArgumentAxisTitle = viz.dxChartArgumentAxisTitle; + /** @deprecated */ + export type dxChartCommonAxisSettings = viz.dxChartCommonAxisSettings; + /** @deprecated */ + export type dxChartCommonAxisSettingsConstantLineStyle = viz.dxChartCommonAxisSettingsConstantLineStyle; + /** @deprecated */ + export type dxChartCommonAxisSettingsConstantLineStyleLabel = viz.dxChartCommonAxisSettingsConstantLineStyleLabel; + /** @deprecated */ + export type dxChartCommonAxisSettingsLabel = viz.dxChartCommonAxisSettingsLabel; + /** @deprecated */ + export type dxChartCommonAxisSettingsStripStyle = viz.dxChartCommonAxisSettingsStripStyle; + /** @deprecated */ + export type dxChartCommonAxisSettingsStripStyleLabel = viz.dxChartCommonAxisSettingsStripStyleLabel; + /** @deprecated */ + export type dxChartCommonAxisSettingsTitle = viz.dxChartCommonAxisSettingsTitle; + /** @deprecated */ + export type dxChartCommonPaneSettings = viz.dxChartCommonPaneSettings; + /** @deprecated */ + export type dxChartCommonSeriesSettings = viz.dxChartCommonSeriesSettings; + /** @deprecated */ + export type dxChartLegend = viz.dxChartLegend; + /** @deprecated */ + export type dxChartPanes = viz.dxChartPanes; + /** @deprecated */ + export type dxChartSeries = viz.dxChartSeries; + /** @deprecated */ + export type dxChartTooltip = viz.dxChartTooltip; + /** @deprecated */ + export type dxChartValueAxis = viz.dxChartValueAxis; + /** @deprecated */ + export type dxChartValueAxisConstantLines = viz.dxChartValueAxisConstantLines; + /** @deprecated */ + export type dxChartValueAxisConstantLinesLabel = viz.dxChartValueAxisConstantLinesLabel; + /** @deprecated */ + export type dxChartValueAxisConstantLineStyle = viz.dxChartValueAxisConstantLineStyle; + /** @deprecated */ + export type dxChartValueAxisConstantLineStyleLabel = viz.dxChartValueAxisConstantLineStyleLabel; + /** @deprecated */ + export type dxChartValueAxisLabel = viz.dxChartValueAxisLabel; + /** @deprecated */ + export type dxChartValueAxisStrips = viz.dxChartValueAxisStrips; + /** @deprecated */ + export type dxChartValueAxisStripsLabel = viz.dxChartValueAxisStripsLabel; + /** @deprecated */ + export type dxChartValueAxisTitle = viz.dxChartValueAxisTitle; + + /** @deprecated */ + export type dxPieChartOptions = viz.dxPieChartOptions; + /** @deprecated */ + export type dxPieChartAdaptiveLayout = viz.dxPieChartAdaptiveLayout; + /** @deprecated */ + export type dxPieChartLegend = viz.dxPieChartLegend; + /** @deprecated */ + export type dxPieChartSeries = viz.dxPieChartSeries; + + /** @deprecated */ + export type dxPolarChartOptions = viz.dxPolarChartOptions; + /** @deprecated */ + export type dxPolarChartAdaptiveLayout = viz.dxPolarChartAdaptiveLayout; + /** @deprecated */ + export type dxPolarChartArgumentAxis = viz.dxPolarChartArgumentAxis; + /** @deprecated */ + export type dxPolarChartArgumentAxisConstantLines = viz.dxPolarChartArgumentAxisConstantLines; + /** @deprecated */ + export type dxPolarChartArgumentAxisConstantLinesLabel = viz.dxPolarChartArgumentAxisConstantLinesLabel; + /** @deprecated */ + export type dxPolarChartArgumentAxisLabel = viz.dxPolarChartArgumentAxisLabel; + /** @deprecated */ + export type dxPolarChartArgumentAxisStrips = viz.dxPolarChartArgumentAxisStrips; + /** @deprecated */ + export type dxPolarChartArgumentAxisStripsLabel = viz.dxPolarChartArgumentAxisStripsLabel; + /** @deprecated */ + export type dxPolarChartCommonAxisSettings = viz.dxPolarChartCommonAxisSettings; + /** @deprecated */ + export type dxPolarChartCommonAxisSettingsConstantLineStyle = viz.dxPolarChartCommonAxisSettingsConstantLineStyle; + /** @deprecated */ + export type dxPolarChartCommonAxisSettingsConstantLineStyleLabel = viz.dxPolarChartCommonAxisSettingsConstantLineStyleLabel; + /** @deprecated */ + export type dxPolarChartCommonAxisSettingsLabel = viz.dxPolarChartCommonAxisSettingsLabel; + /** @deprecated */ + export type dxPolarChartCommonAxisSettingsStripStyle = viz.dxPolarChartCommonAxisSettingsStripStyle; + /** @deprecated */ + export type dxPolarChartCommonAxisSettingsStripStyleLabel = viz.dxPolarChartCommonAxisSettingsStripStyleLabel; + /** @deprecated */ + export type dxPolarChartCommonAxisSettingsTick = viz.dxPolarChartCommonAxisSettingsTick; + /** @deprecated */ + export type dxPolarChartCommonSeriesSettings = viz.dxPolarChartCommonSeriesSettings; + /** @deprecated */ + export type dxPolarChartLegend = viz.dxPolarChartLegend; + /** @deprecated */ + export type dxPolarChartSeries = viz.dxPolarChartSeries; + /** @deprecated */ + export type dxPolarChartTooltip = viz.dxPolarChartTooltip; + /** @deprecated */ + export type dxPolarChartValueAxis = viz.dxPolarChartValueAxis; + /** @deprecated */ + export type dxPolarChartValueAxisConstantLines = viz.dxPolarChartValueAxisConstantLines; + /** @deprecated */ + export type dxPolarChartValueAxisConstantLinesLabel = viz.dxPolarChartValueAxisConstantLinesLabel; + /** @deprecated */ + export type dxPolarChartValueAxisLabel = viz.dxPolarChartValueAxisLabel; + /** @deprecated */ + export type dxPolarChartValueAxisStrips = viz.dxPolarChartValueAxisStrips; + /** @deprecated */ + export type dxPolarChartValueAxisStripsLabel = viz.dxPolarChartValueAxisStripsLabel; + /** @deprecated */ + export type dxPolarChartValueAxisTick = viz.dxPolarChartValueAxisTick; + } + + /** @deprecated Use DevExpress.viz instead */ + export namespace funnel { + /** @deprecated */ + export type dxFunnelOptions = viz.dxFunnelOptions; + /** @deprecated */ + export type dxFunnelTooltip = viz.dxFunnelTooltip; + } + + /** @deprecated Use DevExpress.viz instead */ + export namespace gauges { + /** @deprecated */ + export type dxCircularGaugeOptions = viz.dxCircularGaugeOptions; + /** @deprecated */ + export type dxCircularGaugeRangeContainer = viz.dxCircularGaugeRangeContainer; + /** @deprecated */ + export type dxCircularGaugeScale = viz.dxCircularGaugeScale; + /** @deprecated */ + export type dxCircularGaugeScaleLabel = viz.dxCircularGaugeScaleLabel; + + /** @deprecated */ + export type dxLinearGaugeOptions = viz.dxLinearGaugeOptions; + /** @deprecated */ + export type dxLinearGaugeRangeContainer = viz.dxLinearGaugeRangeContainer; + /** @deprecated */ + export type dxLinearGaugeScale = viz.dxLinearGaugeScale; + /** @deprecated */ + export type dxLinearGaugeScaleLabel = viz.dxLinearGaugeScaleLabel; + + /** @deprecated */ + export type dxBarGaugeOptions = viz.dxBarGaugeOptions; + /** @deprecated */ + export type dxBarGaugeTooltip = viz.dxBarGaugeTooltip; + } + + /** @deprecated Use DevExpress.viz instead */ + export namespace rangeSelector { + /** @deprecated */ + export type dxRangeSelectorOptions = viz.dxRangeSelectorOptions; + } + + /** @deprecated Use DevExpress.viz instead */ + export namespace sparklines { + /** @deprecated */ + export type dxSparklineOptions = viz.dxSparklineOptions; + /** @deprecated */ + export type dxBulletOptions = viz.dxBulletOptions; + } + + /** @deprecated Use DevExpress.viz instead */ + export namespace map { + /** @deprecated */ + export type dxVectorMapOptions = viz.dxVectorMapOptions; + /** @deprecated */ + export type dxVectorMapTooltip = viz.dxVectorMapTooltip; + } + + /** @deprecated Use DevExpress.viz instead */ + export namespace treeMap { + /** @deprecated */ + export type dxTreeMapOptions = viz.dxTreeMapOptions; + /** @deprecated */ + export type dxTreeMapTooltip = viz.dxTreeMapTooltip; + } +} - /** @deprecated Use DevExpress.ui.dxMenuBaseItem */ - export type dxMenuBaseItemTemplate = DevExpress.ui.dxMenuBaseItem; +declare namespace DevExpress.ui { + /** @deprecated Use DevExpress.ui.dxAccordionItem */ + export type dxAccordionItemTemplate = dxAccordionItem; - /** @deprecated Use DevExpress.ui.CollectionWidgetItem */ - export type DataExpressionMixinItemTemplate = DevExpress.ui.CollectionWidgetItem; + /** @deprecated Use DevExpress.ui.dxActionSheetItem */ + export type dxActionSheetItemTemplate = dxActionSheetItem; - /** @deprecated Use DevExpress.ui.dxListItem */ - export type dxListItemTemplate = DevExpress.ui.dxListItem; + /** @deprecated Use DevExpress.ui.dxBoxItem */ + export type dxBoxItemTemplate = dxBoxItem; - /** @deprecated Use DevExpress.ui.dxMenuItem */ - export type dxMenuItemTemplate = DevExpress.ui.dxMenuItem; + /** @deprecated Use DevExpress.ui.dxGalleryItem */ + export type dxGalleryItemTemplate = dxGalleryItem; - /** @deprecated Use DevExpress.ui.dxTreeViewItem */ - export type dxTreeViewItemTemplate = DevExpress.ui.dxTreeViewItem; -} + /** @deprecated Use DevExpress.ui.dxMultiViewItem */ + export type dxMultiViewItemTemplate = dxMultiViewItem; + + /** @deprecated Use DevExpress.ui.dxResponsiveBoxItem */ + export type dxResponsiveBoxItemTemplate = dxResponsiveBoxItem; + + /** @deprecated Use DevExpress.ui.dxSchedulerAppointment */ + export type dxSchedulerAppointmentTemplate = dxSchedulerAppointment; + + /** @deprecated Use DevExpress.ui.dxTabsItem */ + export type dxTabsItemTemplate = dxTabsItem; + + /** @deprecated Use DevExpress.ui.dxTabPanelItem */ + export type dxTabPanelItemTemplate = dxTabPanelItem; + + /** @deprecated Use DevExpress.ui.dxTileViewItem */ + export type dxTileViewItemTemplate = dxTileViewItem; + + /** @deprecated Use DevExpress.ui.dxToolbarItem */ + export type dxToolbarItemTemplate = dxToolbarItem; + + /** @deprecated Use DevExpress.ui.CollectionWidgetItem */ + export type CollectionWidgetItemTemplate = CollectionWidgetItem; + + /** @deprecated Use DevExpress.ui.dxContextMenuItem */ + export type dxContextMenuItemTemplate = dxContextMenuItem; + + /** @deprecated Use DevExpress.ui.dxMenuBaseItem */ + export type dxMenuBaseItemTemplate = dxMenuBaseItem; + + /** @deprecated Use DevExpress.ui.CollectionWidgetItem */ + export type DataExpressionMixinItemTemplate = CollectionWidgetItem; + /** @deprecated Use DevExpress.ui.dxListItem */ + export type dxListItemTemplate = dxListItem; + + /** @deprecated Use DevExpress.ui.dxMenuItem */ + export type dxMenuItemTemplate = dxMenuItem; + + /** @deprecated Use DevExpress.ui.dxTreeViewItem */ + export type dxTreeViewItemTemplate = dxTreeViewItem; +} // v22.1 -declare module DevExpress.ui { - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type GridBase = DevExpress.common.grids.GridBase; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type GridBaseOptions, TRowData = any, TKey = any> = DevExpress.common.grids.GridBaseOptions; -} - -declare module DevExpress.ui.dxDataGrid { - - /** @deprecated Use DevExpress.common.Scrollable */ - export type Scrollable = DevExpress.common.Scrollable; - - /** @deprecated Use DevExpress.common.grids.ColumnChooser instead */ - export type ColumnChooser = DevExpress.common.grids.ColumnChooser; - /** @deprecated Use DevExpress.common.grids.ColumnCustomizeTextArg instead */ - export type ColumnCustomizeTextArg = DevExpress.common.grids.ColumnCustomizeTextArg; - /** @deprecated Use DevExpress.common.grids.ColumnFixing instead */ - export type ColumnFixing = DevExpress.common.grids.ColumnFixing; - /** @deprecated Use DevExpress.common.grids.ColumnFixingTexts instead */ - export type ColumnFixingTexts = DevExpress.common.grids.ColumnFixingTexts; - /** @deprecated Use DevExpress.common.grids.ColumnHeaderFilter instead */ - export type ColumnHeaderFilter = DevExpress.common.grids.ColumnHeaderFilter; - /** @deprecated Use DevExpress.common.grids.ColumnLookup instead */ - export type ColumnLookup = DevExpress.common.grids.ColumnLookup; - /** @deprecated Use DevExpress.common.grids.DataChange instead */ - export type DataChange = DevExpress.common.grids.DataChange; - /** @deprecated Use DevExpress.common.grids.FilterPanelTexts instead */ - export type FilterPanelTexts = DevExpress.common.grids.FilterPanelTexts; - /** @deprecated Use DevExpress.common.grids.FilterRow instead */ - export type FilterRow = DevExpress.common.grids.FilterRow; - /** @deprecated Use DevExpress.common.grids.FilterRowOperationDescriptions instead */ - export type FilterRowOperationDescriptions = DevExpress.common.grids.FilterRowOperationDescriptions; - /** @deprecated Use DevExpress.common.grids.HeaderFilter instead */ - export type HeaderFilter = DevExpress.common.grids.HeaderFilter; - /** @deprecated Use DevExpress.common.grids.HeaderFilterGroupInterval instead */ - export type HeaderFilterGroupInterval = DevExpress.common.grids.HeaderFilterGroupInterval; - /** @deprecated Use DevExpress.common.grids.HeaderFilterTexts instead */ - export type HeaderFilterTexts = DevExpress.common.grids.HeaderFilterTexts; - /** @deprecated Use DevExpress.common.grids.KeyboardNavigation instead */ - export type KeyboardNavigation = DevExpress.common.grids.KeyboardNavigation; - /** @deprecated Use DevExpress.common.grids.LoadPanel instead */ - export type LoadPanel = DevExpress.common.grids.LoadPanel; - /** @deprecated Use DevExpress.common.grids.Pager instead */ - export type Pager = DevExpress.common.grids.Pager; - /** @deprecated Use DevExpress.common.grids.RowDraggingTemplateData instead */ - export type RowDraggingTemplateData = DevExpress.common.grids.RowDraggingTemplateData; - /** @deprecated Use DevExpress.common.grids.RowDraggingTemplateData instead */ - export type RowDraggingTemplateDataModel = DevExpress.common.grids.RowDraggingTemplateData; - /** @deprecated Use DevExpress.common.grids.SearchPanel instead */ - export type SearchPanel = DevExpress.common.grids.SearchPanel; - /** @deprecated Use DevExpress.common.grids.Sorting instead */ - export type Sorting = DevExpress.common.grids.Sorting; - /** @deprecated Use DevExpress.common.grids.StateStoring instead */ - export type StateStoring = DevExpress.common.grids.StateStoring; - - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type AdaptiveDetailRowPreparingInfo = DevExpress.common.grids.AdaptiveDetailRowPreparingInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DataChangeInfo = DevExpress.common.grids.DataChangeInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DataErrorOccurredInfo = DevExpress.common.grids.DataErrorOccurredInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DragDropInfo = DevExpress.common.grids.DragDropInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DragReorderInfo = DevExpress.common.grids.DragReorderInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DragStartEventInfo = DevExpress.common.grids.DragStartEventInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type KeyDownInfo = DevExpress.common.grids.KeyDownInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type NewRowInfo = DevExpress.common.grids.NewRowInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type PagingBase = DevExpress.common.grids.PagingBase; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowDraggingEventInfo = DevExpress.common.grids.RowDraggingEventInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowInsertedInfo = DevExpress.common.grids.RowInsertedInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowInsertingInfo = DevExpress.common.grids.RowInsertingInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowKeyInfo = DevExpress.common.grids.RowKeyInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowRemovedInfo = DevExpress.common.grids.RowRemovedInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowRemovingInfo = DevExpress.common.grids.RowRemovingInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowUpdatedInfo = DevExpress.common.grids.RowUpdatedInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowUpdatingInfo = DevExpress.common.grids.RowUpdatingInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type RowValidatingInfo = DevExpress.common.grids.RowValidatingInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type SavingInfo = DevExpress.common.grids.SavingInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type SelectionChangedInfo = DevExpress.common.grids.SelectionChangedInfo; - /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type ToolbarPreparingInfo = DevExpress.common.grids.ToolbarPreparingInfo; -} - -declare module DevExpress.common.charts { - /** @deprecated Use DevExpress.common.grids.ApplyChangesMode instead */ - export type ApplyChangesMode = DevExpress.common.grids.ApplyChangesMode; - /** @deprecated Use DevExpress.common.grids.ApplyFilterMode instead */ - export type ApplyFilterMode = DevExpress.common.grids.ApplyFilterMode; - /** @deprecated Use DevExpress.common.grids.ColumnChooserMode instead */ - export type ColumnChooserMode = DevExpress.common.grids.ColumnChooserMode; - /** @deprecated Use DevExpress.common.grids.ColumnResizeMode instead */ - export type ColumnResizeMode = DevExpress.common.grids.ColumnResizeMode; - /** @deprecated Use DevExpress.common.grids.DataChangeType instead */ - export type DataChangeType = DevExpress.common.grids.DataChangeType; - /** @deprecated Use DevExpress.common.grids.DataRenderMode instead */ - export type DataRenderMode = DevExpress.common.grids.DataRenderMode; - /** @deprecated Use DevExpress.common.grids.EnterKeyAction instead */ - export type EnterKeyAction = DevExpress.common.grids.EnterKeyAction; - /** @deprecated Use DevExpress.common.grids.EnterKeyDirection instead */ - export type EnterKeyDirection = DevExpress.common.grids.EnterKeyDirection; - /** @deprecated Use DevExpress.common.grids.FilterOperation instead */ - export type FilterOperation = DevExpress.common.grids.FilterOperation; - /** @deprecated Use DevExpress.common.grids.FilterType instead */ - export type FilterType = DevExpress.common.grids.FilterType; - /** @deprecated Use DevExpress.common.grids.GridsEditMode instead */ - export type GridsEditMode = DevExpress.common.grids.GridsEditMode; - /** @deprecated Use DevExpress.common.grids.GridsEditRefreshMode instead */ - export type GridsEditRefreshMode = DevExpress.common.grids.GridsEditRefreshMode; - /** @deprecated Use DevExpress.common.grids.GroupExpandMode instead */ - export type GroupExpandMode = DevExpress.common.grids.GroupExpandMode; - /** @deprecated Use DevExpress.common.grids.NewRowPosition instead */ - export type NewRowPosition = DevExpress.common.grids.NewRowPosition; - /** @deprecated Use DevExpress.common.DisplayMode instead */ - export type PagerDisplayMode = DevExpress.common.DisplayMode; - /** @deprecated Use DevExpress.common.grids.PagerPageSize instead */ - export type PagerPageSize = DevExpress.common.grids.PagerPageSize; - /** @deprecated Use DevExpress.common.grids.SelectedFilterOperation instead */ - export type SelectedFilterOperation = DevExpress.common.grids.SelectedFilterOperation; - /** @deprecated Use DevExpress.common.grids.SelectionColumnDisplayMode instead */ - export type SelectionColumnDisplayMode = DevExpress.common.grids.SelectionColumnDisplayMode; - /** @deprecated Use DevExpress.common.grids.StartEditAction instead */ - export type StartEditAction = DevExpress.common.grids.StartEditAction; - /** @deprecated Use DevExpress.common.grids.StateStoreType instead */ - export type StateStoreType = DevExpress.common.grids.StateStoreType; - /** @deprecated Use DevExpress.common.grids.SummaryType instead */ - export type SummaryType = DevExpress.common.grids.SummaryType; +declare namespace DevExpress.ui { + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type GridBase = common.grids.GridBase; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type GridBaseOptions, TRowData = any, TKey = any> = common.grids.GridBaseOptions; +} + +declare namespace DevExpress.ui.dxDataGrid { + + /** @deprecated Use DevExpress.common.Scrollable */ + export type Scrollable = common.Scrollable; + + /** @deprecated Use DevExpress.common.grids.ColumnChooser instead */ + export type ColumnChooser = common.grids.ColumnChooser; + /** @deprecated Use DevExpress.common.grids.ColumnCustomizeTextArg instead */ + export type ColumnCustomizeTextArg = common.grids.ColumnCustomizeTextArg; + /** @deprecated Use DevExpress.common.grids.ColumnFixing instead */ + export type ColumnFixing = common.grids.ColumnFixing; + /** @deprecated Use DevExpress.common.grids.ColumnFixingTexts instead */ + export type ColumnFixingTexts = common.grids.ColumnFixingTexts; + /** @deprecated Use DevExpress.common.grids.ColumnHeaderFilter instead */ + export type ColumnHeaderFilter = common.grids.ColumnHeaderFilter; + /** @deprecated Use DevExpress.common.grids.ColumnLookup instead */ + export type ColumnLookup = common.grids.ColumnLookup; + /** @deprecated Use DevExpress.common.grids.DataChange instead */ + export type DataChange = common.grids.DataChange; + /** @deprecated Use DevExpress.common.grids.FilterPanelTexts instead */ + export type FilterPanelTexts = common.grids.FilterPanelTexts; + /** @deprecated Use DevExpress.common.grids.FilterRow instead */ + export type FilterRow = common.grids.FilterRow; + /** @deprecated Use DevExpress.common.grids.FilterRowOperationDescriptions instead */ + export type FilterRowOperationDescriptions = common.grids.FilterRowOperationDescriptions; + /** @deprecated Use DevExpress.common.grids.HeaderFilter instead */ + export type HeaderFilter = common.grids.HeaderFilter; + /** @deprecated Use DevExpress.common.grids.HeaderFilterGroupInterval instead */ + export type HeaderFilterGroupInterval = common.grids.HeaderFilterGroupInterval; + /** @deprecated Use DevExpress.common.grids.HeaderFilterTexts instead */ + export type HeaderFilterTexts = common.grids.HeaderFilterTexts; + /** @deprecated Use DevExpress.common.grids.KeyboardNavigation instead */ + export type KeyboardNavigation = common.grids.KeyboardNavigation; + /** @deprecated Use DevExpress.common.grids.LoadPanel instead */ + export type LoadPanel = common.grids.LoadPanel; + /** @deprecated Use DevExpress.common.grids.Pager instead */ + export type Pager = common.grids.Pager; + /** @deprecated Use DevExpress.common.grids.RowDraggingTemplateData instead */ + export type RowDraggingTemplateData = common.grids.RowDraggingTemplateData; + /** @deprecated Use DevExpress.common.grids.RowDraggingTemplateData instead */ + export type RowDraggingTemplateDataModel = common.grids.RowDraggingTemplateData; + /** @deprecated Use DevExpress.common.grids.SearchPanel instead */ + export type SearchPanel = common.grids.SearchPanel; + /** @deprecated Use DevExpress.common.grids.Sorting instead */ + export type Sorting = common.grids.Sorting; + /** @deprecated Use DevExpress.common.grids.StateStoring instead */ + export type StateStoring = common.grids.StateStoring; + + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type AdaptiveDetailRowPreparingInfo = common.grids.AdaptiveDetailRowPreparingInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type DataChangeInfo = common.grids.DataChangeInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type DataErrorOccurredInfo = common.grids.DataErrorOccurredInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type DragDropInfo = common.grids.DragDropInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type DragReorderInfo = common.grids.DragReorderInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type DragStartEventInfo = common.grids.DragStartEventInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type KeyDownInfo = common.grids.KeyDownInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type NewRowInfo = common.grids.NewRowInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type PagingBase = common.grids.PagingBase; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowDraggingEventInfo = common.grids.RowDraggingEventInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowInsertedInfo = common.grids.RowInsertedInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowInsertingInfo = common.grids.RowInsertingInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowKeyInfo = common.grids.RowKeyInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowRemovedInfo = common.grids.RowRemovedInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowRemovingInfo = common.grids.RowRemovingInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowUpdatedInfo = common.grids.RowUpdatedInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowUpdatingInfo = common.grids.RowUpdatingInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type RowValidatingInfo = common.grids.RowValidatingInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type SavingInfo = common.grids.SavingInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type SelectionChangedInfo = common.grids.SelectionChangedInfo; + /** @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ + export type ToolbarPreparingInfo = common.grids.ToolbarPreparingInfo; +} + +declare namespace DevExpress.common.charts { + /** @deprecated Use DevExpress.common.grids.ApplyChangesMode instead */ + export type ApplyChangesMode = grids.ApplyChangesMode; + /** @deprecated Use DevExpress.common.grids.ApplyFilterMode instead */ + export type ApplyFilterMode = grids.ApplyFilterMode; + /** @deprecated Use DevExpress.common.grids.ColumnChooserMode instead */ + export type ColumnChooserMode = grids.ColumnChooserMode; + /** @deprecated Use DevExpress.common.grids.ColumnResizeMode instead */ + export type ColumnResizeMode = grids.ColumnResizeMode; + /** @deprecated Use DevExpress.common.grids.DataChangeType instead */ + export type DataChangeType = grids.DataChangeType; + /** @deprecated Use DevExpress.common.grids.DataRenderMode instead */ + export type DataRenderMode = grids.DataRenderMode; + /** @deprecated Use DevExpress.common.grids.EnterKeyAction instead */ + export type EnterKeyAction = grids.EnterKeyAction; + /** @deprecated Use DevExpress.common.grids.EnterKeyDirection instead */ + export type EnterKeyDirection = grids.EnterKeyDirection; + /** @deprecated Use DevExpress.common.grids.FilterOperation instead */ + export type FilterOperation = grids.FilterOperation; + /** @deprecated Use DevExpress.common.grids.FilterType instead */ + export type FilterType = grids.FilterType; + /** @deprecated Use DevExpress.common.grids.GridsEditMode instead */ + export type GridsEditMode = grids.GridsEditMode; + /** @deprecated Use DevExpress.common.grids.GridsEditRefreshMode instead */ + export type GridsEditRefreshMode = grids.GridsEditRefreshMode; + /** @deprecated Use DevExpress.common.grids.GroupExpandMode instead */ + export type GroupExpandMode = grids.GroupExpandMode; + /** @deprecated Use DevExpress.common.grids.NewRowPosition instead */ + export type NewRowPosition = grids.NewRowPosition; + /** @deprecated Use DevExpress.common.DisplayMode instead */ + export type PagerDisplayMode = DisplayMode; + /** @deprecated Use DevExpress.common.grids.PagerPageSize instead */ + export type PagerPageSize = grids.PagerPageSize; + /** @deprecated Use DevExpress.common.grids.SelectedFilterOperation instead */ + export type SelectedFilterOperation = grids.SelectedFilterOperation; + /** @deprecated Use DevExpress.common.grids.SelectionColumnDisplayMode instead */ + export type SelectionColumnDisplayMode = grids.SelectionColumnDisplayMode; + /** @deprecated Use DevExpress.common.grids.StartEditAction instead */ + export type StartEditAction = grids.StartEditAction; + /** @deprecated Use DevExpress.common.grids.StateStoreType instead */ + export type StateStoreType = grids.StateStoreType; + /** @deprecated Use DevExpress.common.grids.SummaryType instead */ + export type SummaryType = grids.SummaryType; } // v22.2 -declare module DevExpress { - /** @deprecated Use DevExpress.GlobalConfig instead */ - export type globalConfig = DevExpress.common.GlobalConfig; -} - -declare module DevExpress.ui { - /** @deprecated Use DevExpress.common.AsyncRule instead */ - export type AsyncRule = DevExpress.common.AsyncRule; - /** @deprecated Use DevExpress.common.CompareRule instead */ - export type CompareRule = DevExpress.common.CompareRule; - /** @deprecated Use DevExpress.common.CustomRule instead */ - export type CustomRule = DevExpress.common.CustomRule; - /** @deprecated Use DevExpress.common.EmailRule instead */ - export type EmailRule = DevExpress.common.EmailRule; - /** @deprecated Use DevExpress.common.NumericRule instead */ - export type NumericRule = DevExpress.common.NumericRule; - /** @deprecated Use DevExpress.common.PatternRule instead */ - export type PatternRule = DevExpress.common.PatternRule; - /** @deprecated Use DevExpress.common.RangeRule instead */ - export type RangeRule = DevExpress.common.RangeRule; - /** @deprecated Use DevExpress.common.RequiredRule instead */ - export type RequiredRule = DevExpress.common.RequiredRule; - /** @deprecated Use DevExpress.common.StringLengthRule instead */ - export type StringLengthRule = DevExpress.common.StringLengthRule; - /** @deprecated Use DevExpress.common.ValidationCallbackData instead */ - export type ValidationCallbackData = DevExpress.common.ValidationCallbackData; - /** @deprecated Use DevExpress.common.ValidationRule instead */ - export type ValidationRule = DevExpress.common.ValidationRule; - /** @deprecated Use DevExpress.common.ValidationRuleType instead */ - export type ValidationRuleType = DevExpress.common.ValidationRuleType; -} - -declare module DevExpress.viz { - /** @deprecated Use DevExpress.common.charts.ScaleBreak instead */ - export type ScaleBreak = DevExpress.common.charts.ScaleBreak - /** @deprecated Use DevExpress.common.charts.SeriesType instead */ - export type SeriesType = DevExpress.common.charts.SeriesType - /** @deprecated Use DevExpress.common.charts.VisualRange instead */ - export type VisualRange = DevExpress.common.charts.VisualRange - /** @deprecated Use DevExpress.common.charts.TimeIntervalConfig instead */ - export type VizTimeInterval = DevExpress.common.charts.TimeIntervalConfig - /** @deprecated Use DevExpress.common.charts.SeriesPoint instead */ - export type dxChartSeriesTypesCommonSeriesPoint = DevExpress.common.charts.SeriesPoint; - /** @deprecated Use DevExpress.common.charts.SeriesLabel instead */ - export type dxChartSeriesTypesCommonSeriesLabel = DevExpress.common.charts.SeriesLabel; - /** @deprecated Use DevExpress.common.charts.LegendItem instead */ - export type BaseChartLegendItem = DevExpress.common.charts.LegendItem; +declare namespace DevExpress { + /** @deprecated Use DevExpress.GlobalConfig instead */ + export type globalConfig = common.GlobalConfig; +} + +declare namespace DevExpress.ui { + /** @deprecated Use DevExpress.common.AsyncRule instead */ + export type AsyncRule = common.AsyncRule; + /** @deprecated Use DevExpress.common.CompareRule instead */ + export type CompareRule = common.CompareRule; + /** @deprecated Use DevExpress.common.CustomRule instead */ + export type CustomRule = common.CustomRule; + /** @deprecated Use DevExpress.common.EmailRule instead */ + export type EmailRule = common.EmailRule; + /** @deprecated Use DevExpress.common.NumericRule instead */ + export type NumericRule = common.NumericRule; + /** @deprecated Use DevExpress.common.PatternRule instead */ + export type PatternRule = common.PatternRule; + /** @deprecated Use DevExpress.common.RangeRule instead */ + export type RangeRule = common.RangeRule; + /** @deprecated Use DevExpress.common.RequiredRule instead */ + export type RequiredRule = common.RequiredRule; + /** @deprecated Use DevExpress.common.StringLengthRule instead */ + export type StringLengthRule = common.StringLengthRule; + /** @deprecated Use DevExpress.common.ValidationCallbackData instead */ + export type ValidationCallbackData = common.ValidationCallbackData; + /** @deprecated Use DevExpress.common.ValidationRule instead */ + export type ValidationRule = common.ValidationRule; + /** @deprecated Use DevExpress.common.ValidationRuleType instead */ + export type ValidationRuleType = common.ValidationRuleType; +} + +declare namespace DevExpress.viz { + /** @deprecated Use DevExpress.common.charts.ScaleBreak instead */ + export type ScaleBreak = common.charts.ScaleBreak; + /** @deprecated Use DevExpress.common.charts.SeriesType instead */ + export type SeriesType = common.charts.SeriesType; + /** @deprecated Use DevExpress.common.charts.VisualRange instead */ + export type VisualRange = common.charts.VisualRange; + /** @deprecated Use DevExpress.common.charts.TimeIntervalConfig instead */ + export type VizTimeInterval = common.charts.TimeIntervalConfig; + /** @deprecated Use DevExpress.common.charts.SeriesPoint instead */ + export type dxChartSeriesTypesCommonSeriesPoint = common.charts.SeriesPoint; + /** @deprecated Use DevExpress.common.charts.SeriesLabel instead */ + export type dxChartSeriesTypesCommonSeriesLabel = common.charts.SeriesLabel; + /** @deprecated Use DevExpress.common.charts.LegendItem instead */ + export type BaseChartLegendItem = common.charts.LegendItem; } declare namespace DevExpress.data { - /** @deprecated Use DevExpress.data.Store.Options instead */ - export type StoreOptions = Store.Options; + /** @deprecated Use DevExpress.common.data.StoreOptions instead */ + export type StoreOptions = common.data.StoreOptions; } // v23.1 -declare module DevExpress.ui.dxSlider { - /** @deprecated Use DevExpress.common.SliderValueChangeMode instead */ - export type ValueChangeMode = DevExpress.common.SliderValueChangeMode; +declare namespace DevExpress.ui.dxSlider { + /** @deprecated Use DevExpress.common.SliderValueChangeMode instead */ + export type ValueChangeMode = common.SliderValueChangeMode; } -declare module DevExpress.viz.dxFunnel { - /** @deprecated Use DevExpress.common.charts.ShiftLabelOverlap instead */ - export type FunnelLabelOverlap = DevExpress.common.charts.ShiftLabelOverlap; +declare namespace DevExpress.viz.dxFunnel { + /** @deprecated Use DevExpress.common.charts.ShiftLabelOverlap instead */ + export type FunnelLabelOverlap = common.charts.ShiftLabelOverlap; } -declare module DevExpress.viz.dxPieChart { - /** @deprecated Use DevExpress.common.charts.ShiftLabelOverlap instead */ - export type PieChartLabelOverlap = DevExpress.common.charts.ShiftLabelOverlap; +declare namespace DevExpress.viz.dxPieChart { + /** @deprecated Use DevExpress.common.charts.ShiftLabelOverlap instead */ + export type PieChartLabelOverlap = common.charts.ShiftLabelOverlap; } -declare module DevExpress.viz { +declare namespace DevExpress.viz { - /** @deprecated Use DevExpress.viz.dxBarGauge.Legend instead */ - export type dxBarGaugeLegend = DevExpress.viz.dxBarGauge.Legend; + /** @deprecated Use DevExpress.viz.dxBarGauge.Legend instead */ + export type dxBarGaugeLegend = dxBarGauge.Legend; - /** @deprecated Use DevExpress.viz.dxBarGauge.LoadingIndicator instead */ - export type dxBarGaugeLoadingIndicator = DevExpress.viz.dxBarGauge.LoadingIndicator; + /** @deprecated Use DevExpress.viz.dxBarGauge.LoadingIndicator instead */ + export type dxBarGaugeLoadingIndicator = dxBarGauge.LoadingIndicator; - /** @deprecated Use DevExpress.viz.dxBarGauge.Tooltip instead */ - export type dxBarGaugeTooltip = DevExpress.viz.dxBarGauge.Tooltip; + /** @deprecated Use DevExpress.viz.dxBarGauge.Tooltip instead */ + export type dxBarGaugeTooltip = dxBarGauge.Tooltip; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxis instead */ - export type dxChartArgumentAxis = DevExpress.viz.dxChart.ArgumentAxis; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxis instead */ + export type dxChartArgumentAxis = dxChart.ArgumentAxis; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLines instead */ - export type dxChartArgumentAxisConstantLines = DevExpress.viz.dxChart.ArgumentAxisConstantLines; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLines instead */ + export type dxChartArgumentAxisConstantLines = dxChart.ArgumentAxisConstantLines; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLinesLabel instead */ - export type dxChartArgumentAxisConstantLinesLabel = DevExpress.viz.dxChart.ArgumentAxisConstantLinesLabel; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLinesLabel instead */ + export type dxChartArgumentAxisConstantLinesLabel = dxChart.ArgumentAxisConstantLinesLabel; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLineStyle instead */ - export type dxChartArgumentAxisConstantLineStyle = DevExpress.viz.dxChart.ArgumentAxisConstantLineStyle; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLineStyle instead */ + export type dxChartArgumentAxisConstantLineStyle = dxChart.ArgumentAxisConstantLineStyle; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLineStyleLabel instead */ - export type dxChartArgumentAxisConstantLineStyleLabel = DevExpress.viz.dxChart.ArgumentAxisConstantLineStyleLabel; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisConstantLineStyleLabel instead */ + export type dxChartArgumentAxisConstantLineStyleLabel = dxChart.ArgumentAxisConstantLineStyleLabel; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisLabel instead */ - export type dxChartArgumentAxisLabel = DevExpress.viz.dxChart.ArgumentAxisLabel; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisLabel instead */ + export type dxChartArgumentAxisLabel = dxChart.ArgumentAxisLabel; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisStrips instead */ - export type dxChartArgumentAxisStrips = DevExpress.viz.dxChart.ArgumentAxisStrips; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisStrips instead */ + export type dxChartArgumentAxisStrips = dxChart.ArgumentAxisStrips; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisStripsLabel instead */ - export type dxChartArgumentAxisStripsLabel = DevExpress.viz.dxChart.ArgumentAxisStripsLabel; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisStripsLabel instead */ + export type dxChartArgumentAxisStripsLabel = dxChart.ArgumentAxisStripsLabel; - /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisTitle instead */ - export type dxChartArgumentAxisTitle = DevExpress.viz.dxChart.ArgumentAxisTitle; + /** @deprecated Use DevExpress.viz.dxChart.ArgumentAxisTitle instead */ + export type dxChartArgumentAxisTitle = dxChart.ArgumentAxisTitle; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettings instead */ - export type dxChartCommonAxisSettings = DevExpress.viz.dxChart.CommonAxisSettings; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettings instead */ + export type dxChartCommonAxisSettings = dxChart.CommonAxisSettings; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsConstantLineStyle instead */ - export type dxChartCommonAxisSettingsConstantLineStyle = DevExpress.viz.dxChart.CommonAxisSettingsConstantLineStyle; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsConstantLineStyle instead */ + export type dxChartCommonAxisSettingsConstantLineStyle = dxChart.CommonAxisSettingsConstantLineStyle; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsConstantLineStyleLabel instead */ - export type dxChartCommonAxisSettingsConstantLineStyleLabel = DevExpress.viz.dxChart.CommonAxisSettingsConstantLineStyleLabel; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsConstantLineStyleLabel instead */ + export type dxChartCommonAxisSettingsConstantLineStyleLabel = dxChart.CommonAxisSettingsConstantLineStyleLabel; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsLabel instead */ - export type dxChartCommonAxisSettingsLabel = DevExpress.viz.dxChart.CommonAxisSettingsLabel; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsLabel instead */ + export type dxChartCommonAxisSettingsLabel = dxChart.CommonAxisSettingsLabel; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsStripStyle instead */ - export type dxChartCommonAxisSettingsStripStyle = DevExpress.viz.dxChart.CommonAxisSettingsStripStyle; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsStripStyle instead */ + export type dxChartCommonAxisSettingsStripStyle = dxChart.CommonAxisSettingsStripStyle; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsStripStyleLabel instead */ - export type dxChartCommonAxisSettingsStripStyleLabel = DevExpress.viz.dxChart.CommonAxisSettingsStripStyleLabel; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsStripStyleLabel instead */ + export type dxChartCommonAxisSettingsStripStyleLabel = dxChart.CommonAxisSettingsStripStyleLabel; - /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsTitle instead */ - export type dxChartCommonAxisSettingsTitle = DevExpress.viz.dxChart.CommonAxisSettingsTitle; + /** @deprecated Use DevExpress.viz.dxChart.CommonAxisSettingsTitle instead */ + export type dxChartCommonAxisSettingsTitle = dxChart.CommonAxisSettingsTitle; - /** @deprecated Use DevExpress.viz.dxChart.CommonPaneSettings instead */ - export type dxChartCommonPaneSettings = DevExpress.viz.dxChart.CommonPaneSettings; + /** @deprecated Use DevExpress.viz.dxChart.CommonPaneSettings instead */ + export type dxChartCommonPaneSettings = dxChart.CommonPaneSettings; - /** @deprecated Use DevExpress.viz.dxChart.CommonSeriesSettings instead */ - export type dxChartCommonSeriesSettings = DevExpress.viz.dxChart.CommonSeriesSettings; + /** @deprecated Use DevExpress.viz.dxChart.CommonSeriesSettings instead */ + export type dxChartCommonSeriesSettings = dxChart.CommonSeriesSettings; - /** @deprecated Use DevExpress.viz.dxChart.Legend instead */ - export type dxChartLegend = DevExpress.viz.dxChart.Legend; + /** @deprecated Use DevExpress.viz.dxChart.Legend instead */ + export type dxChartLegend = dxChart.Legend; - /** @deprecated Use DevExpress.viz.dxChart.Panes instead */ - export type dxChartPanes = DevExpress.viz.dxChart.Panes; + /** @deprecated Use DevExpress.viz.dxChart.Panes instead */ + export type dxChartPanes = dxChart.Panes; - /** @deprecated Use DevExpress.viz.dxChart.Tooltip instead */ - export type dxChartTooltip = DevExpress.viz.dxChart.Tooltip; + /** @deprecated Use DevExpress.viz.dxChart.Tooltip instead */ + export type dxChartTooltip = dxChart.Tooltip; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxis instead */ - export type dxChartValueAxis = DevExpress.viz.dxChart.ValueAxis; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxis instead */ + export type dxChartValueAxis = dxChart.ValueAxis; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLines instead */ - export type dxChartValueAxisConstantLines = DevExpress.viz.dxChart.ValueAxisConstantLines; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLines instead */ + export type dxChartValueAxisConstantLines = dxChart.ValueAxisConstantLines; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLinesLabel instead */ - export type dxChartValueAxisConstantLinesLabel = DevExpress.viz.dxChart.ValueAxisConstantLinesLabel; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLinesLabel instead */ + export type dxChartValueAxisConstantLinesLabel = dxChart.ValueAxisConstantLinesLabel; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLineStyle instead */ - export type dxChartValueAxisConstantLineStyle = DevExpress.viz.dxChart.ValueAxisConstantLineStyle; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLineStyle instead */ + export type dxChartValueAxisConstantLineStyle = dxChart.ValueAxisConstantLineStyle; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLineStyleLabel instead */ - export type dxChartValueAxisConstantLineStyleLabel = DevExpress.viz.dxChart.ValueAxisConstantLineStyleLabel; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisConstantLineStyleLabel instead */ + export type dxChartValueAxisConstantLineStyleLabel = dxChart.ValueAxisConstantLineStyleLabel; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisLabel instead */ - export type dxChartValueAxisLabel = DevExpress.viz.dxChart.ValueAxisLabel; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisLabel instead */ + export type dxChartValueAxisLabel = dxChart.ValueAxisLabel; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisStrips instead */ - export type dxChartValueAxisStrips = DevExpress.viz.dxChart.ValueAxisStrips; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisStrips instead */ + export type dxChartValueAxisStrips = dxChart.ValueAxisStrips; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisStripsLabel instead */ - export type dxChartValueAxisStripsLabel = DevExpress.viz.dxChart.ValueAxisStripsLabel; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisStripsLabel instead */ + export type dxChartValueAxisStripsLabel = dxChart.ValueAxisStripsLabel; - /** @deprecated Use DevExpress.viz.dxChart.ValueAxisTitle instead */ - export type dxChartValueAxisTitle = DevExpress.viz.dxChart.ValueAxisTitle; + /** @deprecated Use DevExpress.viz.dxChart.ValueAxisTitle instead */ + export type dxChartValueAxisTitle = dxChart.ValueAxisTitle; - /** @deprecated Use DevExpress.viz.dxPolarChart.AdaptiveLayout instead */ - export type dxPolarChartAdaptiveLayout = DevExpress.viz.dxPolarChart.AdaptiveLayout; + /** @deprecated Use DevExpress.viz.dxPolarChart.AdaptiveLayout instead */ + export type dxPolarChartAdaptiveLayout = dxPolarChart.AdaptiveLayout; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxis instead */ - export type dxPolarChartArgumentAxis = DevExpress.viz.dxPolarChart.ArgumentAxis; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxis instead */ + export type dxPolarChartArgumentAxis = dxPolarChart.ArgumentAxis; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisConstantLines instead */ - export type dxPolarChartArgumentAxisConstantLines = DevExpress.viz.dxPolarChart.ArgumentAxisConstantLines; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisConstantLines instead */ + export type dxPolarChartArgumentAxisConstantLines = dxPolarChart.ArgumentAxisConstantLines; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisConstantLinesLabel instead */ - export type dxPolarChartArgumentAxisConstantLinesLabel = DevExpress.viz.dxPolarChart.ArgumentAxisConstantLinesLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisConstantLinesLabel instead */ + export type dxPolarChartArgumentAxisConstantLinesLabel = dxPolarChart.ArgumentAxisConstantLinesLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisLabel instead */ - export type dxPolarChartArgumentAxisLabel = DevExpress.viz.dxPolarChart.ArgumentAxisLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisLabel instead */ + export type dxPolarChartArgumentAxisLabel = dxPolarChart.ArgumentAxisLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisMinorTick instead */ - export type dxPolarChartArgumentAxisMinorTick = DevExpress.viz.dxPolarChart.ArgumentAxisMinorTick; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisMinorTick instead */ + export type dxPolarChartArgumentAxisMinorTick = dxPolarChart.ArgumentAxisMinorTick; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisStrips instead */ - export type dxPolarChartArgumentAxisStrips = DevExpress.viz.dxPolarChart.ArgumentAxisStrips; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisStrips instead */ + export type dxPolarChartArgumentAxisStrips = dxPolarChart.ArgumentAxisStrips; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisStripsLabel instead */ - export type dxPolarChartArgumentAxisStripsLabel = DevExpress.viz.dxPolarChart.ArgumentAxisStripsLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisStripsLabel instead */ + export type dxPolarChartArgumentAxisStripsLabel = dxPolarChart.ArgumentAxisStripsLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisTick instead */ - export type dxPolarChartArgumentAxisTick = DevExpress.viz.dxPolarChart.ArgumentAxisTick; + /** @deprecated Use DevExpress.viz.dxPolarChart.ArgumentAxisTick instead */ + export type dxPolarChartArgumentAxisTick = dxPolarChart.ArgumentAxisTick; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettings instead */ - export type dxPolarChartCommonAxisSettings = DevExpress.viz.dxPolarChart.CommonAxisSettings; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettings instead */ + export type dxPolarChartCommonAxisSettings = dxPolarChart.CommonAxisSettings; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsConstantLineStyle instead */ - export type dxPolarChartCommonAxisSettingsConstantLineStyle = DevExpress.viz.dxPolarChart.CommonAxisSettingsConstantLineStyle; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsConstantLineStyle instead */ + export type dxPolarChartCommonAxisSettingsConstantLineStyle = dxPolarChart.CommonAxisSettingsConstantLineStyle; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsConstantLineStyleLabel instead */ - export type dxPolarChartCommonAxisSettingsConstantLineStyleLabel = DevExpress.viz.dxPolarChart.CommonAxisSettingsConstantLineStyleLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsConstantLineStyleLabel instead */ + export type dxPolarChartCommonAxisSettingsConstantLineStyleLabel = dxPolarChart.CommonAxisSettingsConstantLineStyleLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsLabel instead */ - export type dxPolarChartCommonAxisSettingsLabel = DevExpress.viz.dxPolarChart.CommonAxisSettingsLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsLabel instead */ + export type dxPolarChartCommonAxisSettingsLabel = dxPolarChart.CommonAxisSettingsLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsMinorTick instead */ - export type dxPolarChartCommonAxisSettingsMinorTick = DevExpress.viz.dxPolarChart.CommonAxisSettingsMinorTick; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsMinorTick instead */ + export type dxPolarChartCommonAxisSettingsMinorTick = dxPolarChart.CommonAxisSettingsMinorTick; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsStripStyle instead */ - export type dxPolarChartCommonAxisSettingsStripStyle = DevExpress.viz.dxPolarChart.CommonAxisSettingsStripStyle; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsStripStyle instead */ + export type dxPolarChartCommonAxisSettingsStripStyle = dxPolarChart.CommonAxisSettingsStripStyle; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsStripStyleLabel instead */ - export type dxPolarChartCommonAxisSettingsStripStyleLabel = DevExpress.viz.dxPolarChart.CommonAxisSettingsStripStyleLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsStripStyleLabel instead */ + export type dxPolarChartCommonAxisSettingsStripStyleLabel = dxPolarChart.CommonAxisSettingsStripStyleLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsTick instead */ - export type dxPolarChartCommonAxisSettingsTick = DevExpress.viz.dxPolarChart.CommonAxisSettingsTick; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonAxisSettingsTick instead */ + export type dxPolarChartCommonAxisSettingsTick = dxPolarChart.CommonAxisSettingsTick; - /** @deprecated Use DevExpress.viz.dxPolarChart.CommonSeriesSettings instead */ - export type dxPolarChartCommonSeriesSettings = DevExpress.viz.dxPolarChart.CommonSeriesSettings; + /** @deprecated Use DevExpress.viz.dxPolarChart.CommonSeriesSettings instead */ + export type dxPolarChartCommonSeriesSettings = dxPolarChart.CommonSeriesSettings; - /** @deprecated Use DevExpress.viz.dxPolarChart.Legend instead */ - export type dxPolarChartLegend = DevExpress.viz.dxPolarChart.Legend; + /** @deprecated Use DevExpress.viz.dxPolarChart.Legend instead */ + export type dxPolarChartLegend = dxPolarChart.Legend; - /** @deprecated Use DevExpress.viz.dxPolarChart.Tooltip instead */ - export type dxPolarChartTooltip = DevExpress.viz.dxPolarChart.Tooltip; + /** @deprecated Use DevExpress.viz.dxPolarChart.Tooltip instead */ + export type dxPolarChartTooltip = dxPolarChart.Tooltip; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxis instead */ - export type dxPolarChartValueAxis = DevExpress.viz.dxPolarChart.ValueAxis; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxis instead */ + export type dxPolarChartValueAxis = dxPolarChart.ValueAxis; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisConstantLines instead */ - export type dxPolarChartValueAxisConstantLines = DevExpress.viz.dxPolarChart.ValueAxisConstantLines; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisConstantLines instead */ + export type dxPolarChartValueAxisConstantLines = dxPolarChart.ValueAxisConstantLines; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisConstantLinesLabel instead */ - export type dxPolarChartValueAxisConstantLinesLabel = DevExpress.viz.dxPolarChart.ValueAxisConstantLinesLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisConstantLinesLabel instead */ + export type dxPolarChartValueAxisConstantLinesLabel = dxPolarChart.ValueAxisConstantLinesLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisLabel instead */ - export type dxPolarChartValueAxisLabel = DevExpress.viz.dxPolarChart.ValueAxisLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisLabel instead */ + export type dxPolarChartValueAxisLabel = dxPolarChart.ValueAxisLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisStrips instead */ - export type dxPolarChartValueAxisStrips = DevExpress.viz.dxPolarChart.ValueAxisStrips; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisStrips instead */ + export type dxPolarChartValueAxisStrips = dxPolarChart.ValueAxisStrips; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisStripsLabel instead */ - export type dxPolarChartValueAxisStripsLabel = DevExpress.viz.dxPolarChart.ValueAxisStripsLabel; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisStripsLabel instead */ + export type dxPolarChartValueAxisStripsLabel = dxPolarChart.ValueAxisStripsLabel; - /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisTick instead */ - export type dxPolarChartValueAxisTick = DevExpress.viz.dxPolarChart.ValueAxisTick; + /** @deprecated Use DevExpress.viz.dxPolarChart.ValueAxisTick instead */ + export type dxPolarChartValueAxisTick = dxPolarChart.ValueAxisTick; - /** @deprecated Use DevExpress.viz.dxCircularGauge.RangeContainer instead */ - export type dxCircularGaugeRangeContainer = DevExpress.viz.dxCircularGauge.RangeContainer; + /** @deprecated Use DevExpress.viz.dxCircularGauge.RangeContainer instead */ + export type dxCircularGaugeRangeContainer = dxCircularGauge.RangeContainer; - /** @deprecated Use DevExpress.viz.dxCircularGauge.Scale instead */ - export type dxCircularGaugeScale = DevExpress.viz.dxCircularGauge.Scale; + /** @deprecated Use DevExpress.viz.dxCircularGauge.Scale instead */ + export type dxCircularGaugeScale = dxCircularGauge.Scale; - /** @deprecated Use DevExpress.viz.dxCircularGauge.ScaleLabel instead */ - export type dxCircularGaugeScaleLabel = DevExpress.viz.dxCircularGauge.ScaleLabel; + /** @deprecated Use DevExpress.viz.dxCircularGauge.ScaleLabel instead */ + export type dxCircularGaugeScaleLabel = dxCircularGauge.ScaleLabel; - /** @deprecated Use DevExpress.viz.dxFunnel.Legend instead */ - export type dxFunnelLegend = DevExpress.viz.dxFunnel.Legend; + /** @deprecated Use DevExpress.viz.dxFunnel.Legend instead */ + export type dxFunnelLegend = dxFunnel.Legend; - /** @deprecated Use DevExpress.viz.dxFunnel.Tooltip instead */ - export type dxFunnelTooltip = DevExpress.viz.dxFunnel.Tooltip; + /** @deprecated Use DevExpress.viz.dxFunnel.Tooltip instead */ + export type dxFunnelTooltip = dxFunnel.Tooltip; - /** @deprecated Use DevExpress.viz.dxLinearGauge.RangeContainer instead */ - export type dxLinearGaugeRangeContainer = DevExpress.viz.dxLinearGauge.RangeContainer; + /** @deprecated Use DevExpress.viz.dxLinearGauge.RangeContainer instead */ + export type dxLinearGaugeRangeContainer = dxLinearGauge.RangeContainer; - /** @deprecated Use DevExpress.viz.dxLinearGauge.Scale instead */ - export type dxLinearGaugeScale = DevExpress.viz.dxLinearGauge.Scale; + /** @deprecated Use DevExpress.viz.dxLinearGauge.Scale instead */ + export type dxLinearGaugeScale = dxLinearGauge.Scale; - /** @deprecated Use DevExpress.viz.dxLinearGauge.ScaleLabel instead */ - export type dxLinearGaugeScaleLabel = DevExpress.viz.dxLinearGauge.ScaleLabel; + /** @deprecated Use DevExpress.viz.dxLinearGauge.ScaleLabel instead */ + export type dxLinearGaugeScaleLabel = dxLinearGauge.ScaleLabel; - /** @deprecated Use DevExpress.viz.dxPieChart.AdaptiveLayout instead */ - export type dxPieChartAdaptiveLayout = DevExpress.viz.dxPieChart.AdaptiveLayout; + /** @deprecated Use DevExpress.viz.dxPieChart.AdaptiveLayout instead */ + export type dxPieChartAdaptiveLayout = dxPieChart.AdaptiveLayout; - /** @deprecated Use DevExpress.viz.dxPieChart.Legend instead */ - export type dxPieChartLegend = DevExpress.viz.dxPieChart.Legend; + /** @deprecated Use DevExpress.viz.dxPieChart.Legend instead */ + export type dxPieChartLegend = dxPieChart.Legend; - /** @deprecated Use DevExpress.viz.dxSankey.Tooltip instead */ - export type dxSankeyTooltip = DevExpress.viz.dxSankey.Tooltip; + /** @deprecated Use DevExpress.viz.dxSankey.Tooltip instead */ + export type dxSankeyTooltip = dxSankey.Tooltip; - /** @deprecated Use DevExpress.viz.dxTreeMap.Tooltip instead */ - export type dxTreeMapTooltip = DevExpress.viz.dxTreeMap.Tooltip; + /** @deprecated Use DevExpress.viz.dxTreeMap.Tooltip instead */ + export type dxTreeMapTooltip = dxTreeMap.Tooltip; - /** @deprecated Use DevExpress.viz.dxVectorMap.Legend instead */ - export type dxVectorMapLegends = DevExpress.viz.dxVectorMap.Legend; + /** @deprecated Use DevExpress.viz.dxVectorMap.Legend instead */ + export type dxVectorMapLegends = dxVectorMap.Legend; - /** @deprecated Use DevExpress.viz.dxVectorMap.Tooltip instead */ - export type dxVectorMapTooltip = DevExpress.viz.dxVectorMap.Tooltip; + /** @deprecated Use DevExpress.viz.dxVectorMap.Tooltip instead */ + export type dxVectorMapTooltip = dxVectorMap.Tooltip; } -declare module DevExpress.ui { +declare namespace DevExpress.ui { - /** @deprecated Use DevExpress.ui.dxDataGrid.Editing instead */ - export type dxDataGridEditing = DevExpress.ui.dxDataGrid.Editing; + /** @deprecated Use DevExpress.ui.dxDataGrid.Editing instead */ + export type dxDataGridEditing = dxDataGrid.Editing; - /** @deprecated Use DevExpress.ui.dxDataGrid.Scrolling instead */ - export type dxDataGridScrolling = DevExpress.ui.dxDataGrid.Scrolling; + /** @deprecated Use DevExpress.ui.dxDataGrid.Scrolling instead */ + export type dxDataGridScrolling = dxDataGrid.Scrolling; - /** @deprecated Use DevExpress.ui.dxDataGrid.Selection instead */ - export type dxDataGridSelection = DevExpress.ui.dxDataGrid.Selection; + /** @deprecated Use DevExpress.ui.dxDataGrid.Selection instead */ + export type dxDataGridSelection = dxDataGrid.Selection; - /** @deprecated Use DevExpress.ui.dxTreeList.Editing instead */ - export type dxTreeListEditing = DevExpress.ui.dxTreeList.Editing; + /** @deprecated Use DevExpress.ui.dxTreeList.Editing instead */ + export type dxTreeListEditing = dxTreeList.Editing; - /** @deprecated Use DevExpress.ui.dxTreeList.Scrolling instead */ - export type dxTreeListScrolling = DevExpress.ui.dxTreeList.Scrolling; + /** @deprecated Use DevExpress.ui.dxTreeList.Scrolling instead */ + export type dxTreeListScrolling = dxTreeList.Scrolling; - /** @deprecated Use DevExpress.ui.dxTreeList.Selection instead */ - export type dxTreeListSelection = DevExpress.ui.dxTreeList.Selection; + /** @deprecated Use DevExpress.ui.dxTreeList.Selection instead */ + export type dxTreeListSelection = dxTreeList.Selection; - /** @deprecated Use DevExpress.ui.dxTreeList.EditingTexts instead */ - export type dxTreeListEditingTexts = DevExpress.ui.dxTreeList.EditingTexts; + /** @deprecated Use DevExpress.ui.dxTreeList.EditingTexts instead */ + export type dxTreeListEditingTexts = dxTreeList.EditingTexts; - /** @deprecated Use DevExpress.ui.dxTreeList.Paging instead */ - export type dxTreeListPaging = DevExpress.ui.dxTreeList.Paging; + /** @deprecated Use DevExpress.ui.dxTreeList.Paging instead */ + export type dxTreeListPaging = dxTreeList.Paging; - /** @deprecated Use DevExpress.ui.dxDataGrid.Column instead */ - export type GridBaseColumn = DevExpress.ui.dxDataGrid.ColumnBase; + /** @deprecated Use DevExpress.ui.dxDataGrid.Column instead */ + export type GridBaseColumn = dxDataGrid.ColumnBase; - /** @deprecated Use DevExpress.ui.dxDataGrid.ColumnButton instead */ - export type GridBaseColumnButton = DevExpress.ui.dxDataGrid.ColumnButtonBase; + /** @deprecated Use DevExpress.ui.dxDataGrid.ColumnButton instead */ + export type GridBaseColumnButton = dxDataGrid.ColumnButtonBase; - /** @deprecated Use DevExpress.ui.dxDataGrid.Editing instead */ - export type GridBaseEditing = DevExpress.ui.dxDataGrid.EditingBase; + /** @deprecated Use DevExpress.ui.dxDataGrid.Editing instead */ + export type GridBaseEditing = dxDataGrid.EditingBase; - /** @deprecated Use DevExpress.ui.dxDataGrid.EditingTexts instead */ - export type GridBaseEditingTexts = DevExpress.ui.dxDataGrid.EditingTextsBase; + /** @deprecated Use DevExpress.ui.dxDataGrid.EditingTexts instead */ + export type GridBaseEditingTexts = dxDataGrid.EditingTextsBase; - /** @deprecated Use DevExpress.ui.dxDataGrid.Paging instead */ - export type GridBasePaging = DevExpress.ui.dxDataGrid.Paging; + /** @deprecated Use DevExpress.ui.dxDataGrid.Paging instead */ + export type GridBasePaging = dxDataGrid.Paging; - /** @deprecated Use DevExpress.ui.dxDataGrid.Scrolling instead */ - export type GridBaseScrolling = DevExpress.ui.dxDataGrid.Scrolling; + /** @deprecated Use DevExpress.ui.dxDataGrid.Scrolling instead */ + export type GridBaseScrolling = dxDataGrid.Scrolling; - /** @deprecated Use DevExpress.ui.dxDataGrid.Selection instead */ - export type GridBaseSelection = DevExpress.ui.dxDataGrid.Selection; + /** @deprecated Use DevExpress.ui.dxDataGrid.Selection instead */ + export type GridBaseSelection = dxDataGrid.Selection; } -declare module DevExpress.ui.dxDataGrid { +declare namespace DevExpress.ui.dxDataGrid { - /** @deprecated Use DevExpress.ui.dxDataGrid.SortByGroupSummaryInfoItem instead */ - export type dxDataGridSortByGroupSummaryInfoItem = DevExpress.ui.dxDataGrid.SortByGroupSummaryInfoItem; + /** @deprecated Use DevExpress.ui.dxDataGrid.SortByGroupSummaryInfoItem instead */ + export type dxDataGridSortByGroupSummaryInfoItem = SortByGroupSummaryInfoItem; - /** @deprecated Use DevExpress.ui.dxDataGrid.EditingTexts instead */ - export type EditingTextsBase = DevExpress.ui.dxDataGrid.EditingTexts; + /** @deprecated Use DevExpress.ui.dxDataGrid.EditingTexts instead */ + export type EditingTextsBase = EditingTexts; } // v24.1 -declare module DevExpress.ui { - /** @deprecated DevExpress.ui.dxDiagram.CustomCommand instead */ - export type dxDiagramCustomCommand = DevExpress.ui.dxDiagram.CustomCommand; +declare namespace DevExpress.ui { + /** @deprecated DevExpress.ui.dxDiagram.CustomCommand instead */ + export type dxDiagramCustomCommand = dxDiagram.CustomCommand; } -declare module DevExpress.ui.dxDiagram { - /** @deprecated Use DevExpress.ui.dxDiagram.AutoZoomMode instead */ - export type DiagramAutoZoomMode = DevExpress.ui.dxDiagram.AutoZoomMode; +declare namespace DevExpress.ui.dxDiagram { + /** @deprecated Use DevExpress.ui.dxDiagram.AutoZoomMode instead */ + export type DiagramAutoZoomMode = AutoZoomMode; - /** @deprecated Use DevExpress.ui.dxDiagram.Command instead */ - export type DiagramCommand = DevExpress.ui.dxDiagram.Command; + /** @deprecated Use DevExpress.ui.dxDiagram.Command instead */ + export type DiagramCommand = Command; - /** @deprecated Use DevExpress.ui.dxDiagram.ConnectorLineEnd instead */ - export type DiagramConnectorLineEnd = DevExpress.ui.dxDiagram.ConnectorLineEnd; + /** @deprecated Use DevExpress.ui.dxDiagram.ConnectorLineEnd instead */ + export type DiagramConnectorLineEnd = ConnectorLineEnd; - /** @deprecated Use DevExpress.ui.dxDiagram.ConnectorLineType instead */ - export type DiagramConnectorLineType = DevExpress.ui.dxDiagram.ConnectorLineType; + /** @deprecated Use DevExpress.ui.dxDiagram.ConnectorLineType instead */ + export type DiagramConnectorLineType = ConnectorLineType; - /** @deprecated Use DevExpress.ui.dxDiagram.ConnectorPosition instead */ - export type DiagramConnectorPosition = DevExpress.ui.dxDiagram.ConnectorPosition; + /** @deprecated Use DevExpress.ui.dxDiagram.ConnectorPosition instead */ + export type DiagramConnectorPosition = ConnectorPosition; - /** @deprecated Use DevExpress.ui.dxDiagram.DataLayoutType instead */ - export type DiagramDataLayoutType = DevExpress.ui.dxDiagram.DataLayoutType; + /** @deprecated Use DevExpress.ui.dxDiagram.DataLayoutType instead */ + export type DiagramDataLayoutType = DataLayoutType; - /** @deprecated Use DevExpress.ui.dxDiagram.ItemType instead */ - export type DiagramItemType = DevExpress.ui.dxDiagram.ItemType; + /** @deprecated Use DevExpress.ui.dxDiagram.ItemType instead */ + export type DiagramItemType = ItemType; - /** @deprecated Use DevExpress.ui.dxDiagram.ModelOperation instead */ - export type DiagramModelOperation = DevExpress.ui.dxDiagram.ModelOperation; + /** @deprecated Use DevExpress.ui.dxDiagram.ModelOperation instead */ + export type DiagramModelOperation = ModelOperation; - /** @deprecated Use DevExpress.ui.dxDiagram.PanelVisibility instead */ - export type DiagramPanelVisibility = DevExpress.ui.dxDiagram.PanelVisibility; + /** @deprecated Use DevExpress.ui.dxDiagram.PanelVisibility instead */ + export type DiagramPanelVisibility = PanelVisibility; - /** @deprecated Use DevExpress.ui.dxDiagram.RequestEditOperationReason instead */ - export type DiagramRequestEditOperationReason = DevExpress.ui.dxDiagram.RequestEditOperationReason; + /** @deprecated Use DevExpress.ui.dxDiagram.RequestEditOperationReason instead */ + export type DiagramRequestEditOperationReason = RequestEditOperationReason; - /** @deprecated Use DevExpress.ui.dxDiagram.ShapeCategory instead */ - export type DiagramShapeCategory = DevExpress.ui.dxDiagram.ShapeCategory; + /** @deprecated Use DevExpress.ui.dxDiagram.ShapeCategory instead */ + export type DiagramShapeCategory = ShapeCategory; - /** @deprecated Use DevExpress.ui.dxDiagram.ShapeType instead */ - export type DiagramShapeType = DevExpress.ui.dxDiagram.ShapeType; + /** @deprecated Use DevExpress.ui.dxDiagram.ShapeType instead */ + export type DiagramShapeType = ShapeType; - /** @deprecated Use DevExpress.ui.dxDiagram.ToolboxDisplayMode instead */ - export type DiagramToolboxDisplayMode = DevExpress.ui.dxDiagram.ToolboxDisplayMode; + /** @deprecated Use DevExpress.ui.dxDiagram.ToolboxDisplayMode instead */ + export type DiagramToolboxDisplayMode = ToolboxDisplayMode; - /** @deprecated Use DevExpress.ui.dxDiagram.Units instead */ - export type DiagramUnits = DevExpress.ui.dxDiagram.Units; + /** @deprecated Use DevExpress.ui.dxDiagram.Units instead */ + export type DiagramUnits = Units; } // 24.2 -declare module DevExpress.common.grids { +declare namespace DevExpress.common.grids { /** @deprecated Use DevExpress.common.DisplayMode instead */ - export type PagerDisplayMode = DevExpress.common.DisplayMode; + export type PagerDisplayMode = DisplayMode; +} + +declare namespace DevExpress { + export type AnimationConfig = DevExpress.common.core.animation.AnimationConfig; + export const animationPresets: typeof DevExpress.common.core.animation.animationPresets + export type Device = DevExpress.common.core.environment.Device; + export const devices: typeof DevExpress.common.core.environment.devices; + export type dxSchedulerTimeZone = DevExpress.common.core.environment.SchedulerTimeZone; + export type EndpointSelector = DevExpress.common.data.EndpointSelector; + export const fx: typeof DevExpress.common.core.animation.fx; + export const hideTopOverlay: typeof DevExpress.common.core.environment.hideTopOverlay; + export const localizationformatDate: typeof DevExpress.common.core.localization.formatDate; + export const localizationformatMessage: typeof DevExpress.common.core.localization.formatMessage; + export const localizationformatNumber: typeof DevExpress.common.core.localization.formatNumber; + export const localizationloadMessages: typeof DevExpress.common.core.localization.loadMessages; + export const localizationlocale: typeof DevExpress.common.core.localization.locale; + export const localizationparseDate: typeof DevExpress.common.core.localization.parseDate; + export const localizationparseNumber: typeof DevExpress.common.core.localization.parseNumber; + export type PositionConfig = DevExpress.common.core.animation.PositionConfig; + export type TransitionExecutor = DevExpress.common.core.animation.TransitionExecutor; + export const utilscancelAnimationFrame: typeof DevExpress.common.core.animation.cancelAnimationFrame; + export const utilsrequestAnimationFrame: typeof DevExpress.common.core.animation.requestAnimationFrame; +} + +declare namespace DevExpress.common { + export type GroupItem = DevExpress.common.data.GroupItem; + export const isGroupItemsArray: typeof DevExpress.common.data.isGroupItemsArray; + export const isItemsArray: typeof DevExpress.common.data.isItemsArray; + export const isLoadResultObject: typeof DevExpress.common.data.isLoadResultObject; + export type LoadResult = DevExpress.common.data.LoadResult; + export type LoadResultObject = DevExpress.common.data.LoadResultObject; +} + +declare namespace DevExpress.animation { + export type AnimationState = DevExpress.common.core.animation.AnimationState; + export type CollisionResolution = DevExpress.common.core.animation.CollisionResolution; + export type CollisionResolutionCombination = DevExpress.common.core.animation.CollisionResolutionCombination; +} + +declare namespace DevExpress.data { + export const applyChanges: typeof DevExpress.common.data.applyChanges; + export type ArrayStore = DevExpress.common.data.ArrayStore; + export const base64_encode: typeof DevExpress.common.data.base64_encode; + export type CustomStore = DevExpress.common.data.CustomStore; + export type DataSource = DevExpress.common.data.DataSource; + export type EdmLiteral = DevExpress.common.data.EdmLiteral; + export const errorHandler: typeof DevExpress.common.data.errorHandler; + export type LangParams = DevExpress.common.data.LangParams; + export type LocalStore = DevExpress.common.data.LocalStore; + export type ODataContext = DevExpress.common.data.ODataContext; + export type ODataStore = DevExpress.common.data.ODataStore; + export const query: typeof DevExpress.common.data.query; + export type Query = DevExpress.common.data.Query; + export const setErrorHandler: typeof DevExpress.common.data.setErrorHandler; + export type Store = DevExpress.common.data.Store; +} + +declare namespace DevExpress.data.CustomStore { + export type GroupItem = DevExpress.common.data.GroupItem; + export type ResolvedData = DevExpress.common.data.ResolvedData; +} + +declare namespace DevExpress.data.DataSource { + export type Options = DevExpress.common.data.DataSourceOptions; +} + +declare namespace DevExpress.data.Store { + export type Options = DevExpress.common.data.StoreOptions; +} + +declare namespace DevExpress.data.utils { + export const compileGetter: typeof DevExpress.common.data.compileGetter; + export const compileSetter: typeof DevExpress.common.data.compileSetter; +} + +declare namespace DevExpress.data.utils.odata { + export const keyConverters: typeof DevExpress.common.data.keyConverters; +} + +declare namespace DevExpress.events { + export type AsyncCancelable = DevExpress.common.core.events.AsyncCancelable; + export type Cancelable = DevExpress.common.core.events.Cancelable; + export type ChangedOptionInfo = DevExpress.common.core.events.ChangedOptionInfo; + export type EventInfo = DevExpress.common.core.events.EventInfo; + export type InitializedEventInfo = DevExpress.common.core.events.InitializedEventInfo; + export type ItemInfo = DevExpress.common.core.events.ItemInfo; + export type NativeEventInfo = DevExpress.common.core.events.NativeEventInfo; + export const off: typeof DevExpress.common.core.events.off; + export const on: typeof DevExpress.common.core.events.on; + export const one: typeof DevExpress.common.core.events.one; + export const trigger: typeof DevExpress.common.core.events.trigger; +} + +declare namespace DevExpress.excelExporter { + export type DataGridCell = DevExpress.common.Export.excel.DataGridCell; + export type ExcelExportDataGridProps = DevExpress.common.Export.excel.DataGridExportOptions; + export type ExcelExportPivotGridProps = DevExpress.common.Export.excel.PivotGridExportOptions; + export const exportDataGrid: typeof DevExpress.common.Export.excel.exportDataGrid; + export const exportPivotGrid: typeof DevExpress.common.Export.excel.exportPivotGrid; + export type PivotGridCell = DevExpress.common.Export.excel.PivotGridCell; +} + +declare namespace DevExpress.pdfExporter { + export type Cell = DevExpress.common.Export.pdf.Cell; + export type DataGridCell = DevExpress.common.Export.pdf.DataGridCell; + export const exportDataGrid: typeof DevExpress.common.Export.pdf.exportDataGrid; + export const exportGantt: typeof DevExpress.common.Export.pdf.exportGantt; + export type PdfExportDataGridProps = DevExpress.common.Export.pdf.DataGridExportOptions; + export type PdfExportGanttFont = DevExpress.common.Export.pdf.GanttExportFont; + export type PdfExportGanttProps = DevExpress.common.Export.pdf.GanttExportOptions; +} + +declare namespace DevExpress.utils { + export const getTimeZones: typeof DevExpress.common.core.environment.getTimeZones; + export const initMobileViewport: typeof DevExpress.common.core.environment.initMobileViewport; } diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 66d2703518f9..816903aedf63 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -515,93 +515,6 @@ declare global { interface JQueryPromise {} } declare module DevExpress { - /** - * [descr:AnimationConfig] - */ - export type AnimationConfig = { - /** - * [descr:AnimationConfig.complete] - */ - complete?: ( - $element: DevExpress.core.DxElement, - config: AnimationConfig - ) => void; - /** - * [descr:AnimationConfig.delay] - */ - delay?: number; - /** - * [descr:AnimationConfig.direction] - */ - direction?: DevExpress.common.Direction | undefined; - /** - * [descr:AnimationConfig.duration] - */ - duration?: number; - /** - * [descr:AnimationConfig.easing] - */ - easing?: string; - /** - * [descr:AnimationConfig.from] - */ - from?: DevExpress.animation.AnimationState; - /** - * [descr:AnimationConfig.staggerDelay] - */ - staggerDelay?: number | undefined; - /** - * [descr:AnimationConfig.start] - */ - start?: ( - $element: DevExpress.core.DxElement, - config: AnimationConfig - ) => void; - /** - * [descr:AnimationConfig.to] - */ - to?: DevExpress.animation.AnimationState; - /** - * [descr:AnimationConfig.type] - */ - type?: DevExpress.animation.AnimationType; - }; - /** - * [descr:animationPresets] - */ - export const animationPresets: { - /** - * [descr:animationPresets.applyChanges()] - */ - applyChanges(): void; - /** - * [descr:animationPresets.clear()] - */ - clear(): void; - /** - * [descr:animationPresets.clear(name)] - */ - clear(name: string): void; - /** - * [descr:animationPresets.getPreset(name)] - */ - getPreset(name: string): AnimationConfig; - /** - * [descr:animationPresets.registerDefaultPresets()] - */ - registerDefaultPresets(): void; - /** - * [descr:animationPresets.registerPreset(name, config)] - */ - registerPreset( - name: string, - config: { animation: AnimationConfig; device?: Device } - ): void; - /** - * [descr:animationPresets.resetToDefaults()] - */ - resetToDefaults(): void; - }; /** * [descr:Component] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -704,92 +617,18 @@ declare module DevExpress { /** * [descr:DataHelperMixin.getDataSource()] */ - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } /** - * [descr:Device] + * [descr:DefaultOptionsRule] */ - export type Device = { - /** - * [descr:Device.android] - */ - android?: boolean; - /** - * [descr:Device.deviceType] - */ - deviceType?: 'phone' | 'tablet' | 'desktop'; - /** - * [descr:Device.generic] - */ - generic?: boolean; - /** - * [descr:Device.grade] - */ - grade?: 'A' | 'B' | 'C'; - /** - * [descr:Device.ios] - */ - ios?: boolean; - /** - * [descr:Device.phone] - */ - phone?: boolean; - /** - * [descr:Device.platform] - */ - platform?: 'android' | 'ios' | 'generic'; - /** - * [descr:Device.tablet] - */ - tablet?: boolean; - /** - * [descr:Device.version] - */ - version?: Array; + export type DefaultOptionsRule = { + device?: + | DevExpress.common.core.environment.Device + | DevExpress.common.core.environment.Device[] + | ((device: DevExpress.common.core.environment.Device) => boolean); + options: DevExpress.core.DeepPartial; }; - /** - * [descr:devices] - */ - export const devices: DevicesObject; - /** - * [descr:DevicesObject] - */ - export class DevicesObject { - constructor(options?: { window?: Window }); - /** - * [descr:DevicesObject.current()] - */ - current(): Device; - /** - * [descr:DevicesObject.current(deviceName)] - */ - current(deviceName: string | Device): void; - /** - * [descr:DevicesObject.off(eventName)] - */ - off(eventName: DevExpress.core.EventName): this; - /** - * [descr:DevicesObject.off(eventName, eventHandler)] - */ - off(eventName: DevExpress.core.EventName, eventHandler: Function): this; - /** - * [descr:DevicesObject.on(eventName, eventHandler)] - */ - on(eventName: DevExpress.core.EventName, eventHandler: Function): this; - /** - * [descr:DevicesObject.on(events)] - */ - on(events: { [key in DevExpress.core.EventName]?: Function }): this; - /** - * [descr:DevicesObject.orientation()] - */ - orientation(): 'portrait' | 'landscape' | undefined; - /** - * [descr:DevicesObject.real()] - */ - real(): Device; - isSimulator(): boolean; - } /** * [descr:DOMComponent] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -817,7 +656,7 @@ declare module DevExpress { * [descr:DOMComponent.defaultOptions(rule)] */ static defaultOptions( - rule: DevExpress.core.DefaultOptionsRule + rule: DefaultOptionsRule ): void; /** @@ -850,8 +689,8 @@ declare module DevExpress { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type OptionChangedEventInfo = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -864,8 +703,8 @@ declare module DevExpress { */ export interface DOMComponentOptions extends ComponentOptions< - DevExpress.events.EventInfo, - DevExpress.events.InitializedEventInfo, + DevExpress.common.core.events.EventInfo, + DevExpress.common.core.events.InitializedEventInfo, DevExpress.DOMComponent.OptionChangedEventInfo > { /** @@ -883,7 +722,9 @@ declare module DevExpress { /** * [descr:DOMComponentOptions.onDisposing] */ - onDisposing?: (e: DevExpress.events.EventInfo) => void; + onDisposing?: ( + e: DevExpress.common.core.events.EventInfo + ) => void; /** * [descr:DOMComponentOptions.onOptionChanged] */ @@ -899,33 +740,6 @@ declare module DevExpress { */ width?: number | string | (() => number | string) | undefined; } - /** - * [descr:dxSchedulerTimeZone] - */ - export interface dxSchedulerTimeZone { - /** - * [descr:dxSchedulerTimeZone.id] - */ - id: string; - /** - * [descr:dxSchedulerTimeZone.offset] - */ - offset: number; - /** - * [descr:dxSchedulerTimeZone.title] - */ - title: string; - } - /** - * [descr:EndpointSelector] - */ - export class EndpointSelector { - constructor(options: any); - /** - * [descr:EndpointSelector.urlFor(key)] - */ - urlFor(key: string): string; - } /** * [descr:ExportLoadPanel] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -968,175 +782,7 @@ declare module DevExpress { */ shadingColor?: string; } - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - type ExternalFormat = Intl.DateTimeFormatOptions | Intl.NumberFormatOptions; - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface FormatObject { - /** - * [descr:Format.currency] - */ - currency?: string; - /** - * [descr:Format.useCurrencyAccountingStyle] - */ - useCurrencyAccountingStyle?: boolean; - /** - * [descr:Format.formatter] - */ - formatter?: (value: number | Date) => string; - /** - * [descr:Format.parser] - */ - parser?: (value: string) => number | Date; - /** - * [descr:Format.precision] - */ - precision?: number; - /** - * [descr:Format.type] - */ - type?: DevExpress.common.Format | string; - } - /** - * [descr:fx] - */ - export const fx: { - /** - * [descr:fx.animate(element, config)] - */ - animate( - element: Element, - config: AnimationConfig - ): DevExpress.core.utils.DxPromise; - - /** - * [descr:fx.isAnimating(element)] - */ - isAnimating(element: Element): boolean; - - /** - * [descr:fx.stop(element, jumpToEnd)] - */ - stop(element: Element, jumpToEnd: boolean): void; - }; - /** - * [descr:hideTopOverlay()] - */ - export function hideTopOverlay(): boolean; - /** - * [descr:PdfExportGanttFont] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface PdfExportGanttFont { - /** - * [descr:PdfExportGanttFont.fontObject] - */ - fontObject: object | undefined; - /** - * [descr:PdfExportGanttFont.name] - */ - name: string | undefined; - /** - * [descr:PdfExportGanttFont.style] - */ - style?: string; - /** - * [descr:PdfExportGanttFont.weight] - */ - weight?: string | number | undefined; - } - /** - * [descr:PositionConfig] - */ - export interface PositionConfig { - /** - * [descr:PositionConfig.at] - */ - at?: - | DevExpress.common.PositionAlignment - | { - /** - * [descr:PositionConfig.at.x] - */ - x?: DevExpress.common.HorizontalAlignment; - /** - * [descr:PositionConfig.at.y] - */ - y?: DevExpress.common.VerticalAlignment; - }; - /** - * [descr:PositionConfig.boundary] - */ - boundary?: string | DevExpress.core.UserDefinedElement | Window; - /** - * [descr:PositionConfig.boundaryOffset] - */ - boundaryOffset?: - | string - | { - /** - * [descr:PositionConfig.boundaryOffset.x] - */ - x?: number; - /** - * [descr:PositionConfig.boundaryOffset.y] - */ - y?: number; - }; - /** - * [descr:PositionConfig.collision] - */ - collision?: - | DevExpress.animation.CollisionResolutionCombination - | { - /** - * [descr:PositionConfig.collision.x] - */ - x?: DevExpress.animation.CollisionResolution; - /** - * [descr:PositionConfig.collision.y] - */ - y?: DevExpress.animation.CollisionResolution; - }; - /** - * [descr:PositionConfig.my] - */ - my?: - | DevExpress.common.PositionAlignment - | { - /** - * [descr:PositionConfig.my.x] - */ - x?: DevExpress.common.HorizontalAlignment; - /** - * [descr:PositionConfig.my.y] - */ - y?: DevExpress.common.VerticalAlignment; - }; - /** - * [descr:PositionConfig.of] - */ - of?: string | DevExpress.core.UserDefinedElement | Window; - /** - * [descr:PositionConfig.offset] - */ - offset?: - | string - | { - /** - * [descr:PositionConfig.offset.x] - */ - x?: number; - /** - * [descr:PositionConfig.offset.y] - */ - y?: number; - }; - } + export type FloatingActionButtonDirection = 'auto' | 'up' | 'down'; /** * [descr:registerComponent(name, componentClass)] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -1164,36 +810,9 @@ declare module DevExpress { render?: Function; }): void; /** - * [descr:TransitionExecutor] + * [descr:template] */ - export class TransitionExecutor { - /** - * [descr:TransitionExecutor.enter(elements, animation)] - */ - enter( - elements: DevExpress.core.UserDefinedElementsArray, - animation: AnimationConfig | string - ): void; - /** - * [descr:TransitionExecutor.leave(elements, animation)] - */ - leave( - elements: DevExpress.core.UserDefinedElementsArray, - animation: AnimationConfig | string - ): void; - /** - * [descr:TransitionExecutor.reset()] - */ - reset(): void; - /** - * [descr:TransitionExecutor.start()] - */ - start(): DevExpress.core.utils.DxPromise; - /** - * [descr:TransitionExecutor.stop()] - */ - stop(): void; - } + export type template = string | Function | DevExpress.core.UserDefinedElement; /** * [descr:validationEngine] */ @@ -1240,45 +859,17 @@ declare module DevExpress { } declare module DevExpress.animation { /** - * @deprecated Use the AnimationConfig type instead + * @deprecated Use the DevExpress.common.core.animation.AnimationConfig type from common/core/animation instead */ - export type animationConfig = AnimationConfig; + export type animationConfig = + DevExpress.common.core.animation.AnimationConfig; /** - * [descr:AnimationState] + * @deprecated Use the DevExpress.common.core.animation.PositionConfig type from common/core/animation instead */ - export type AnimationState = - | string - | number - | { - /** - * [descr:AnimationState.opacity] - */ - opacity: number; - } - | { - /** - * [descr:AnimationState.scale] - */ - scale: number; - } - | { - /** - * [descr:AnimationState.position] - */ - position: PositionConfig; - } - | { - /** - * [descr:AnimationState.left] - */ - left: number; - } - | { - /** - * [descr:AnimationState.top] - */ - top: number; - }; + export interface positionConfig + extends DevExpress.common.core.animation.PositionConfig {} +} +declare module DevExpress.common { /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -1291,28 +882,6 @@ declare module DevExpress.animation { | 'slide' | 'slideIn' | 'slideOut'; - export type CollisionResolution = 'fit' | 'flip' | 'flipfit' | 'none'; - export type CollisionResolutionCombination = - | 'fit' - | 'fit flip' - | 'fit flipfit' - | 'fit none' - | 'flip' - | 'flip fit' - | 'flip none' - | 'flipfit' - | 'flipfit fit' - | 'flipfit none' - | 'none' - | 'none fit' - | 'none flip' - | 'none flipfit'; - /** - * @deprecated Use the PositionConfig type instead - */ - export interface positionConfig extends PositionConfig {} -} -declare module DevExpress.common { export type ApplyValueMode = 'instantly' | 'useButtons'; /** * [descr:AsyncRule] @@ -1400,6 +969,10 @@ declare module DevExpress.common { */ validationCallback?: (options: ValidationCallbackData) => boolean; }; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + type DataSourceEventName = 'changed' | 'loadError' | 'loadingChanged'; export type DataStructure = 'plain' | 'tree'; export type DataType = | 'string' @@ -1432,7 +1005,15 @@ declare module DevExpress.common { */ type: 'email'; }; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + type EventName = 'orientationChanged'; export type ExportFormat = 'GIF' | 'JPEG' | 'PDF' | 'PNG' | 'SVG'; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + type ExternalFormat = Intl.DateTimeFormatOptions | Intl.NumberFormatOptions; export type FieldChooserLayout = 0 | 1 | 2; export type FirstDayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6; export type Format = @@ -1464,6 +1045,35 @@ declare module DevExpress.common { | 'minute' | 'second' | 'shortDateShortTime'; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export interface FormatObject { + /** + * [descr:Format.currency] + */ + currency?: string; + /** + * [descr:Format.useCurrencyAccountingStyle] + */ + useCurrencyAccountingStyle?: boolean; + /** + * [descr:Format.formatter] + */ + formatter?: (value: number | Date) => string; + /** + * [descr:Format.parser] + */ + parser?: (value: string) => number | Date; + /** + * [descr:Format.precision] + */ + precision?: number; + /** + * [descr:Format.type] + */ + type?: PredefinedFormat | string; + } /** * [descr:GlobalConfig] */ @@ -1496,7 +1106,7 @@ declare module DevExpress.common { /** * [descr:GlobalConfig.floatingActionButtonConfig.direction] */ - direction?: DevExpress.core.FloatingActionButtonDirection; + direction?: FloatingActionButtonDirection; /** * [descr:GlobalConfig.floatingActionButtonConfig.icon] */ @@ -1512,7 +1122,10 @@ declare module DevExpress.common { /** * [descr:GlobalConfig.floatingActionButtonConfig.position] */ - position?: PositionAlignment | PositionConfig | Function; + position?: + | PositionAlignment + | DevExpress.common.core.animation.PositionConfig + | Function; /** * [descr:GlobalConfig.floatingActionButtonConfig.shading] */ @@ -1562,89 +1175,35 @@ declare module DevExpress.common { buyNowLink?: string; licensingDocLink?: string; }; - /** - * [descr:GroupItem] - */ - export type GroupItem = { - /** - * [descr:GroupItem.key] - */ - key: any | string | number; - /** - * [descr:GroupItem.items] - */ - items: Array | Array> | null; - /** - * [descr:GroupItem.count] - */ - count?: number; - /** - * [descr:GroupItem.summary] - */ - summary?: Array; - }; export type HorizontalAlignment = 'center' | 'left' | 'right'; export type HorizontalEdge = 'left' | 'right'; /** - * [descr:isGroupItemsArray] - */ - export function isGroupItemsArray( - res: LoadResult - ): res is Array>; - /** - * [descr:isItemsArray] - */ - export function isItemsArray( - res: LoadResult - ): res is Array; - /** - * [descr:isLoadResultObject] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export function isLoadResultObject( - res: LoadResult - ): res is LoadResultObject; + export type HttpMethod = 'GET' | 'POST' | 'PATCH' | 'MERGE'; export type LabelMode = 'static' | 'floating' | 'hidden' | 'outside'; /** - * [descr:LoadResult] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type LoadResult = - | Object - | LoadResultArray - | LoadResultObject; + type LoadFunctionResult = + | T + | DevExpress.core.utils.DxPromise + | PromiseLike; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - type LoadResultArray = Array | Array>; + type LoadResultArray = + | Array + | Array>; + export type MaskMode = 'always' | 'onFocus'; + export type Mode = 'auto'; + /** - * [descr:LoadResultObject] + * [descr:NumericRule] */ - export type LoadResultObject = { + export type NumericRule = { /** - * [descr:LoadResultObject.data] - */ - data: Array | Array>; - /** - * [descr:LoadResultObject.totalCount] - */ - totalCount?: number; - /** - * [descr:LoadResultObject.summary] - */ - summary?: Array; - /** - * [descr:LoadResultObject.groupCount] - */ - groupCount?: number; - }; - export type MaskMode = 'always' | 'onFocus'; - export type Mode = 'auto'; - - /** - * [descr:NumericRule] - */ - export type NumericRule = { - /** - * [descr:NumericRule.ignoreEmptyValue] + * [descr:NumericRule.ignoreEmptyValue] */ ignoreEmptyValue?: boolean; /** @@ -1656,6 +1215,22 @@ declare module DevExpress.common { */ type: 'numeric'; }; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export interface ODataRequestOptions { + accepts: any; + async: boolean; + contentType: string | boolean; + data: any; + dataType: string; + headers: any; + jsonp?: boolean; + method: string; + timeout: number; + url: string; + xhrFields: any; + } export type Orientation = 'horizontal' | 'vertical'; export type PageLoadMode = 'nextButton' | 'scrollBottom'; export type PageOrientation = 'portrait' | 'landscape'; @@ -1721,6 +1296,10 @@ declare module DevExpress.common { | 'right bottom' | 'right top' | 'top'; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + type PredefinedFormat = Format; /** * [descr:RangeRule] */ @@ -1757,7 +1336,7 @@ declare module DevExpress.common { TComponent extends DevExpress.common.grids.GridBase > = Required< Pick< - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< TComponent, PointerEvent | MouseEvent | TouchEvent >, @@ -2271,7 +1850,7 @@ declare module DevExpress.common.charts { /** * [descr:dxChartSeriesTypes.CommonSeries.label.argumentFormat] */ - argumentFormat?: DevExpress.ui.Format | undefined; + argumentFormat?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxChartSeriesTypes.CommonSeries.label.backgroundColor] */ @@ -2325,7 +1904,7 @@ declare module DevExpress.common.charts { /** * [descr:dxChartSeriesTypes.CommonSeries.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxChartSeriesTypes.CommonSeries.label.horizontalOffset] */ @@ -2642,302 +2221,2320 @@ declare module DevExpress.common.charts { export type WordWrap = 'normal' | 'breakWord' | 'none'; export type ZoomPanAction = 'zoom' | 'pan'; } -declare module DevExpress.common.grids { - /** - * [descr:AdaptiveDetailRowPreparingInfo] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export type AdaptiveDetailRowPreparingInfo = { - /** - * [descr:AdaptiveDetailRowPreparingInfo.formOptions] - */ - readonly formOptions: any; - }; - export type ApplyChangesMode = 'instantly' | 'onDemand'; - export type ApplyFilterMode = 'auto' | 'onClick'; +declare module DevExpress.common.core.animation { /** - * [descr:GridBaseColumn] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + * [descr:AnimationConfig] */ - export interface ColumnBase { + export type AnimationConfig = { /** - * [descr:GridBaseColumn.alignment] + * [descr:AnimationConfig.complete] */ - alignment?: HorizontalAlignment | undefined; + complete?: ( + $element: DevExpress.core.DxElement, + config: AnimationConfig + ) => void; /** - * [descr:GridBaseColumn.allowEditing] + * [descr:AnimationConfig.delay] */ - allowEditing?: boolean; + delay?: number; /** - * [descr:GridBaseColumn.allowFiltering] + * [descr:AnimationConfig.direction] */ - allowFiltering?: boolean; + direction?: Direction | undefined; /** - * [descr:GridBaseColumn.allowFixing] + * [descr:AnimationConfig.duration] */ - allowFixing?: boolean; + duration?: number; /** - * [descr:GridBaseColumn.allowHeaderFiltering] + * [descr:AnimationConfig.easing] */ - allowHeaderFiltering?: boolean; + easing?: string; /** - * [descr:GridBaseColumn.allowHiding] + * [descr:AnimationConfig.from] */ - allowHiding?: boolean; + from?: AnimationState; /** - * [descr:GridBaseColumn.allowReordering] + * [descr:AnimationConfig.staggerDelay] */ - allowReordering?: boolean; + staggerDelay?: number | undefined; /** - * [descr:GridBaseColumn.allowResizing] + * [descr:AnimationConfig.start] */ - allowResizing?: boolean; + start?: ( + $element: DevExpress.core.DxElement, + config: AnimationConfig + ) => void; /** - * [descr:GridBaseColumn.allowSearch] + * [descr:AnimationConfig.to] */ - allowSearch?: boolean; + to?: AnimationState; /** - * [descr:GridBaseColumn.allowSorting] + * [descr:AnimationConfig.type] */ - allowSorting?: boolean; + type?: AnimationType; + }; + /** + * [descr:animationPresets] + */ + export const animationPresets: { /** - * [descr:GridBaseColumn.calculateCellValue] + * [descr:animationPresets.applyChanges()] */ - calculateCellValue?: (this: ColumnBase, rowData: TRowData) => any; - defaultCalculateCellValue?: this['calculateCellValue']; + applyChanges(): void; /** - * [descr:GridBaseColumn.calculateDisplayValue] + * [descr:animationPresets.clear()] */ - calculateDisplayValue?: - | string - | ((this: ColumnBase, rowData: TRowData) => any); + clear(): void; /** - * [descr:GridBaseColumn.calculateFilterExpression] + * [descr:animationPresets.clear(name)] */ - calculateFilterExpression?: ( - this: ColumnBase, - filterValue: any, - selectedFilterOperation: string | null, - target: string - ) => string | Array | Function; - defaultCalculateFilterExpression?: this['calculateFilterExpression']; + clear(name: string): void; /** - * [descr:GridBaseColumn.calculateSortValue] + * [descr:animationPresets.getPreset(name)] */ - calculateSortValue?: - | string - | ((this: ColumnBase, rowData: TRowData) => any); + getPreset(name: string): AnimationConfig; /** - * [descr:GridBaseColumn.caption] + * [descr:animationPresets.registerDefaultPresets()] */ - caption?: string | undefined; + registerDefaultPresets(): void; /** - * [descr:GridBaseColumn.cssClass] + * [descr:animationPresets.registerPreset(name, config)] */ - cssClass?: string | undefined; + registerPreset( + name: string, + config: { + animation: AnimationConfig; + device?: DevExpress.common.core.environment.Device; + } + ): void; /** - * [descr:GridBaseColumn.customizeText] + * [descr:animationPresets.resetToDefaults()] */ - customizeText?: ( - this: ColumnBase, - cellInfo: ColumnCustomizeTextArg - ) => string; + resetToDefaults(): void; + }; + /** + * [descr:AnimationState] + */ + export type AnimationState = + | string + | number + | { + /** + * [descr:AnimationState.opacity] + */ + opacity: number; + } + | { + /** + * [descr:AnimationState.scale] + */ + scale: number; + } + | { + /** + * [descr:AnimationState.position] + */ + position: PositionConfig; + } + | { + /** + * [descr:AnimationState.left] + */ + left: number; + } + | { + /** + * [descr:AnimationState.top] + */ + top: number; + }; + /** + * [descr:utils.cancelAnimationFrame(requestID)] + */ + export function cancelAnimationFrame(requestID: number): void; + export type CollisionResolution = 'fit' | 'flip' | 'flipfit' | 'none'; + export type CollisionResolutionCombination = + | 'fit' + | 'fit flip' + | 'fit flipfit' + | 'fit none' + | 'flip' + | 'flip fit' + | 'flip none' + | 'flipfit' + | 'flipfit fit' + | 'flipfit none' + | 'none' + | 'none fit' + | 'none flip' + | 'none flipfit'; + /** + * [descr:fx] + */ + export const fx: { /** - * [descr:GridBaseColumn.dataField] + * [descr:fx.animate(element, config)] */ - dataField?: string | undefined; + animate( + element: Element, + config: AnimationConfig + ): DevExpress.core.utils.DxPromise; + /** - * [descr:GridBaseColumn.dataType] + * [descr:fx.isAnimating(element)] */ - dataType?: DataType | undefined; + isAnimating(element: Element): boolean; + /** - * [descr:GridBaseColumn.editorOptions] + * [descr:fx.stop(element, jumpToEnd)] */ - editorOptions?: any; + stop(element: Element, jumpToEnd: boolean): void; + }; + /** + * [descr:PositionConfig] + */ + export type PositionConfig = { /** - * [descr:GridBaseColumn.encodeHtml] + * [descr:PositionConfig.at] */ - encodeHtml?: boolean; + at?: + | PositionAlignment + | { + /** + * [descr:PositionConfig.at.x] + */ + x?: HorizontalAlignment; + /** + * [descr:PositionConfig.at.y] + */ + y?: VerticalAlignment; + }; /** - * [descr:GridBaseColumn.falseText] + * [descr:PositionConfig.boundary] */ - falseText?: string; + boundary?: string | DevExpress.core.UserDefinedElement | Window; /** - * [descr:GridBaseColumn.filterOperations] + * [descr:PositionConfig.boundaryOffset] */ - filterOperations?: Array; + boundaryOffset?: + | string + | { + /** + * [descr:PositionConfig.boundaryOffset.x] + */ + x?: number; + /** + * [descr:PositionConfig.boundaryOffset.y] + */ + y?: number; + }; /** - * [descr:GridBaseColumn.filterType] + * [descr:PositionConfig.collision] */ - filterType?: FilterType; + collision?: + | CollisionResolutionCombination + | { + /** + * [descr:PositionConfig.collision.x] + */ + x?: CollisionResolution; + /** + * [descr:PositionConfig.collision.y] + */ + y?: CollisionResolution; + }; /** - * [descr:GridBaseColumn.filterValue] + * [descr:PositionConfig.my] */ - filterValue?: any | undefined; + my?: + | PositionAlignment + | { + /** + * [descr:PositionConfig.my.x] + */ + x?: HorizontalAlignment; + /** + * [descr:PositionConfig.my.y] + */ + y?: VerticalAlignment; + }; /** - * [descr:GridBaseColumn.filterValues] + * [descr:PositionConfig.of] */ - filterValues?: Array; + of?: string | DevExpress.core.UserDefinedElement | Window; /** - * [descr:GridBaseColumn.fixed] + * [descr:PositionConfig.offset] */ - fixed?: boolean; + offset?: + | string + | { + /** + * [descr:PositionConfig.offset.x] + */ + x?: number; + /** + * [descr:PositionConfig.offset.y] + */ + y?: number; + }; + }; + /** + * [descr:utils.requestAnimationFrame(callback)] + */ + export function requestAnimationFrame(callback: Function): number; + /** + * [descr:TransitionExecutor] + */ + export class TransitionExecutor { /** - * [descr:GridBaseColumn.fixedPosition] + * [descr:TransitionExecutor.enter(elements, animation)] */ - fixedPosition?: FixedPosition | undefined; + enter( + elements: DevExpress.core.UserDefinedElementsArray, + animation: AnimationConfig | string + ): void; /** - * [descr:GridBaseColumn.formItem] + * [descr:TransitionExecutor.leave(elements, animation)] */ - formItem?: DevExpress.ui.dxForm.SimpleItem; + leave( + elements: DevExpress.core.UserDefinedElementsArray, + animation: AnimationConfig | string + ): void; /** - * [descr:GridBaseColumn.format] + * [descr:TransitionExecutor.reset()] */ - format?: DevExpress.ui.Format; + reset(): void; /** - * [descr:GridBaseColumn.headerFilter] + * [descr:TransitionExecutor.start()] */ - headerFilter?: ColumnHeaderFilter | undefined; + start(): DevExpress.core.utils.DxPromise; /** - * [descr:GridBaseColumn.hidingPriority] + * [descr:TransitionExecutor.stop()] */ - hidingPriority?: number | undefined; + stop(): void; + } +} +declare module DevExpress.common.core.environment { + /** + * [descr:Device] + */ + export type Device = { /** - * [descr:GridBaseColumn.isBand] + * [descr:Device.android] */ - isBand?: boolean | undefined; + android?: boolean; /** - * [descr:GridBaseColumn.lookup] + * [descr:Device.deviceType] */ - lookup?: ColumnLookup | undefined; + deviceType?: 'phone' | 'tablet' | 'desktop'; /** - * [descr:GridBaseColumn.minWidth] + * [descr:Device.generic] */ - minWidth?: number | undefined; + generic?: boolean; /** - * [descr:GridBaseColumn.name] + * [descr:Device.grade] */ - name?: string | undefined; + grade?: 'A' | 'B' | 'C'; /** - * [descr:GridBaseColumn.ownerBand] + * [descr:Device.ios] */ - ownerBand?: number | undefined; + ios?: boolean; /** - * [descr:GridBaseColumn.renderAsync] + * [descr:Device.phone] */ - renderAsync?: boolean; + phone?: boolean; /** - * [descr:GridBaseColumn.selectedFilterOperation] + * [descr:Device.platform] */ - selectedFilterOperation?: SelectedFilterOperation | undefined; + platform?: 'android' | 'ios' | 'generic'; /** - * [descr:GridBaseColumn.setCellValue] + * [descr:Device.tablet] */ - setCellValue?: ( - this: ColumnBase, - newData: DevExpress.core.DeepPartial, - value: any, - currentRowData: TRowData - ) => void | PromiseLike; - defaultSetCellValue?: this['setCellValue']; + tablet?: boolean; /** - * [descr:GridBaseColumn.showEditorAlways] + * [descr:Device.version] */ - showEditorAlways?: boolean; + version?: Array; + }; + /** + * [descr:devices] + */ + export const devices: DevExpress.core.DevicesObject; + /** + * [descr:utils.getTimeZones(date)] + */ + export function getTimeZones(date?: Date): Array; + /** + * [descr:hideTopOverlay()] + */ + export function hideTopOverlay(): boolean; + /** + * [descr:utils.initMobileViewport(options)] + */ + export function initMobileViewport(options: { + allowZoom?: boolean; + allowPan?: boolean; + allowSelection?: boolean; + }): void; + /** + * [descr:SchedulerTimeZone] + */ + export type SchedulerTimeZone = { /** - * [descr:GridBaseColumn.showInColumnChooser] + * [descr:SchedulerTimeZone.id] */ - showInColumnChooser?: boolean; + id: string; /** - * [descr:GridBaseColumn.sortIndex] + * [descr:SchedulerTimeZone.offset] */ - sortIndex?: number | undefined; + offset: number; /** - * [descr:GridBaseColumn.sortOrder] + * [descr:SchedulerTimeZone.title] */ - sortOrder?: SortOrder | undefined; + title: string; + }; +} +declare module DevExpress.common.core.events { + /** + * [descr:AsyncCancelable] + */ + export type AsyncCancelable = { /** - * [descr:GridBaseColumn.sortingMethod] + * [descr:AsyncCancelable.cancel] */ - sortingMethod?: - | ((this: ColumnBase, value1: any, value2: any) => number) - | undefined; + cancel: boolean | PromiseLike; + }; + /** + * [descr:Cancelable] + */ + export type Cancelable = { /** - * [descr:GridBaseColumn.trueText] + * [descr:Cancelable.cancel] */ - trueText?: string; + cancel?: boolean; + }; + /** + * [descr:ChangedOptionInfo] + */ + export type ChangedOptionInfo = { /** - * [descr:GridBaseColumn.validationRules] + * [descr:ChangedOptionInfo.name] */ - validationRules?: Array; + readonly name: string; /** - * [descr:GridBaseColumn.visible] + * [descr:ChangedOptionInfo.fullName] */ - visible?: boolean; + readonly fullName: string; /** - * [descr:GridBaseColumn.visibleIndex] + * [descr:ChangedOptionInfo.value] */ - visibleIndex?: number | undefined; + readonly value?: any; /** - * [descr:GridBaseColumn.width] + * [descr:ChangedOptionInfo.previousValue] */ - width?: number | string | undefined; - } + readonly previousValue?: any; + }; /** - * [descr:GridBaseColumnButton] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + * [descr:EventInfo] */ - export interface ColumnButtonBase { + export type EventInfo = { /** - * [descr:GridBaseColumnButton.cssClass] - */ - cssClass?: string; - /** - * [descr:GridBaseColumnButton.hint] + * [descr:EventInfo.component] */ - hint?: string; + readonly component: TComponent; /** - * [descr:GridBaseColumnButton.icon] + * [descr:EventInfo.element] */ - icon?: string; + readonly element: DevExpress.core.DxElement; /** - * [descr:GridBaseColumnButton.text] + * [descr:EventInfo.model] */ - text?: string; - } + readonly model?: any; + }; + export type EventObject = DevExpress.events.EventObject; /** - * [descr:ColumnChooser] + * [descr:InitializedEventInfo] */ - export type ColumnChooser = { + export type InitializedEventInfo = { /** - * [descr:GridBaseOptions.columnChooser.allowSearch] - * @deprecated [depNote:GridBaseOptions.columnChooser.allowSearch] + * [descr:InitializedEventInfo.component] */ - allowSearch?: boolean; + readonly component?: TComponent; /** - * [descr:GridBaseOptions.columnChooser.container] + * [descr:InitializedEventInfo.element] */ - container?: string | DevExpress.core.UserDefinedElement | undefined; + readonly element?: DevExpress.core.DxElement; + }; + /** + * [descr:ItemInfo] + */ + export type ItemInfo = { /** - * [descr:GridBaseOptions.columnChooser.emptyPanelText] + * [descr:ItemInfo.itemData] */ - emptyPanelText?: string; + readonly itemData?: TItemData; /** - * [descr:GridBaseOptions.columnChooser.enabled] + * [descr:ItemInfo.itemElement] */ - enabled?: boolean; + readonly itemElement: DevExpress.core.DxElement; /** - * [descr:GridBaseOptions.columnChooser.height] + * [descr:ItemInfo.itemIndex] */ - height?: number | string; + readonly itemIndex: number; + }; + /** + * [descr:NativeEventInfo] + */ + export type NativeEventInfo = { /** - * [descr:GridBaseOptions.columnChooser.mode] + * [descr:NativeEventInfo.component] */ - mode?: ColumnChooserMode; + readonly component: TComponent; /** - * [descr:GridBaseOptions.columnChooser.position] + * [descr:NativeEventInfo.element] */ - position?: PositionConfig | undefined; + readonly element: DevExpress.core.DxElement; + /** + * [descr:NativeEventInfo.model] + */ + readonly model?: any; + /** + * [descr:NativeEventInfo.event] + */ + readonly event?: DevExpress.events.DxEvent; + }; + /** + * [descr:events.off(element)] + */ + export function off(element: Element | Array): void; + /** + * [descr:events.off(element, eventName)] + */ + export function off( + element: Element | Array, + eventName: string + ): void; + /** + * [descr:events.off(element, eventName, handler)] + */ + export function off( + element: Element | Array, + eventName: string, + handler: Function + ): void; + /** + * [descr:events.off(element, eventName, selector)] + */ + export function off( + element: Element | Array, + eventName: string, + selector: string + ): void; + /** + * [descr:events.off(element, eventName, selector, handler)] + */ + export function off( + element: Element | Array, + eventName: string, + selector: string, + handler: Function + ): void; + /** + * [descr:events.on(element, eventName, data, handler)] + */ + export function on( + element: Element | Array, + eventName: string, + data: any, + handler: Function + ): void; + /** + * [descr:events.on(element, eventName, handler)] + */ + export function on( + element: Element | Array, + eventName: string, + handler: Function + ): void; + /** + * [descr:events.on(element, eventName, selector, data, handler)] + */ + export function on( + element: Element | Array, + eventName: string, + selector: string, + data: any, + handler: Function + ): void; + /** + * [descr:events.on(element, eventName, selector, handler)] + */ + export function on( + element: Element | Array, + eventName: string, + selector: string, + handler: Function + ): void; + /** + * [descr:events.one(element, eventName, data, handler)] + */ + export function one( + element: Element | Array, + eventName: string, + data: any, + handler: Function + ): void; + /** + * [descr:events.one(element, eventName, handler)] + */ + export function one( + element: Element | Array, + eventName: string, + handler: Function + ): void; + /** + * [descr:events.one(element, eventName, selector, data, handler)] + */ + export function one( + element: Element | Array, + eventName: string, + selector: string, + data: any, + handler: Function + ): void; + /** + * [descr:events.one(element, eventName, selector, handler)] + */ + export function one( + element: Element | Array, + eventName: string, + selector: string, + handler: Function + ): void; + /** + * [descr:events.trigger(element, event)] + */ + export function trigger( + element: Element | Array, + event: string | DevExpress.events.DxEvent + ): void; + /** + * [descr:events.trigger(element, event, extraParameters)] + */ + export function trigger( + element: Element | Array, + event: string | DevExpress.events.DxEvent, + extraParameters: any + ): void; +} +declare module DevExpress.common.core.localization { + /** + * [descr:Format] + */ + export type Format = + | FormatObject + | PredefinedFormat + | string + | ((value: number | Date) => string) + | ((value: Date) => string) + | ((value: number) => string) + | ExternalFormat + | undefined; + /** + * [descr:localization.formatDate(value, format)] + */ + export function formatDate(value: Date, format: Format): string; + /** + * [descr:localization.formatMessage(key, value)] + */ + export function formatMessage(key: string, ...values: Array): string; + /** + * [descr:localization.formatNumber(value, format)] + */ + export function formatNumber(value: number, format: Format): string; + /** + * [descr:localization.loadMessages(messages)] + */ + export function loadMessages(messages: any): void; + /** + * [descr:localization.locale()] + */ + export function locale(): string; + /** + * [descr:localization.locale(locale)] + */ + export function locale(locale: string): void; + /** + * [descr:localization.parseDate(text, format)] + */ + export function parseDate(text: string, format: Format): Date; + /** + * [descr:localization.parseNumber(text, format)] + */ + export function parseNumber(text: string, format: Format): number; +} +declare module DevExpress.common.data { + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export class AbstractStore extends Store< + TItem, + TKey + > { + constructor( + options?: DevExpress.common.data.AbstractStore.Options + ); + /** + * [descr:Store.load()] + */ + load(): DevExpress.core.utils.DxExtendedPromise>; + /** + * [descr:Store.load(options)] + */ + load( + options: LoadOptions + ): DevExpress.core.utils.DxExtendedPromise>; + } + module AbstractStore { + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type Options = AbstractStoreOptions< + TItem, + TKey + >; + } + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export interface AbstractStoreOptions + extends StoreOptions { + /** + * [descr:StoreOptions.onLoaded] + */ + onLoaded?: (result: Array, loadOptions: LoadOptions) => void; + } + /** + * [descr:Utils.applyChanges(data, changes, options)] + */ + export function applyChanges( + data: Array, + changes: Array, + options?: { keyExpr?: string | Array; immutable?: boolean } + ): Array; + /** + * [descr:ArrayStore] + */ + export class ArrayStore extends AbstractStore< + TItem, + TKey + > { + constructor(options?: ArrayStoreOptions); + /** + * [descr:ArrayStore.byKey(key)] + */ + byKey(key: TKey): DevExpress.core.utils.DxPromise; + /** + * [descr:ArrayStore.clear()] + */ + clear(): void; + /** + * [descr:ArrayStore.createQuery()] + */ + createQuery(): Query; + } + /** + * [descr:ArrayStoreOptions] + */ + export type ArrayStoreOptions = AbstractStoreOptions< + TItem, + TKey + > & { + /** + * [descr:ArrayStoreOptions.data] + */ + data?: Array; + }; + /** + * [descr:Utils.base64_encode(input)] + */ + export function base64_encode(input: string | Array): string; + /** + * [descr:Utils.compileGetter(expr)] + */ + export function compileGetter(expr: string | Array): Function; + /** + * [descr:Utils.compileSetter(expr)] + */ + export function compileSetter(expr: string | Array): Function; + /** + * [descr:CustomStore] + */ + export class CustomStore extends Store { + constructor(options?: CustomStoreOptions); + /** + * [descr:CustomStore.byKey(key, extraOptions)] + */ + byKey( + key: TKey, + extraOptions?: LoadOptions + ): DevExpress.core.utils.DxPromise; + /** + * [descr:CustomStore.clearRawDataCache()] + */ + clearRawDataCache(): void; + /** + * [descr:CustomStore.load()] + */ + load(): DevExpress.core.utils.DxExtendedPromise>; + /** + * [descr:CustomStore.load(options)] + */ + load( + options: LoadOptions + ): DevExpress.core.utils.DxExtendedPromise>; + } + /** + * [descr:CustomStoreOptions] + */ + export type CustomStoreOptions = StoreOptions< + TItem, + TKey + > & { + /** + * [descr:CustomStoreOptions.byKey] + */ + byKey?: ( + key: TKey, + extraOptions?: LoadOptions + ) => PromiseLike; + /** + * [descr:CustomStoreOptions.cacheRawData] + */ + cacheRawData?: boolean; + /** + * [descr:CustomStoreOptions.insert] + */ + insert?: (values: TItem) => PromiseLike; + /** + * [descr:CustomStoreOptions.load] + */ + load: ( + options: LoadOptions + ) => LoadFunctionResult>; + /** + * [descr:CustomStoreOptions.loadMode] + */ + loadMode?: 'processed' | 'raw'; + /** + * [descr:CustomStoreOptions.onLoaded] + */ + onLoaded?: ( + result: LoadResult, + loadOptions: LoadOptions + ) => void; + /** + * [descr:CustomStoreOptions.remove] + */ + remove?: (key: TKey) => PromiseLike; + /** + * [descr:CustomStoreOptions.totalCount] + */ + totalCount?: (loadOptions: { + filter?: FilterDescriptor | Array; + group?: GroupDescriptor | Array>; + }) => PromiseLike; + /** + * [descr:CustomStoreOptions.update] + */ + update?: (key: TKey, values: TItem) => PromiseLike; + /** + * [descr:CustomStoreOptions.useDefaultSearch] + */ + useDefaultSearch?: boolean | undefined; + }; + /** + * [descr:DataSource] + */ + export class DataSource { + constructor(data: Array); + constructor( + options: + | CustomStoreOptions + | DataSourceOptions + ); + constructor(store: DevExpress.data.utils.Store); + constructor(url: string); + /** + * [descr:DataSource.cancel(operationId)] + */ + cancel(operationId: number): boolean; + /** + * [descr:DataSource.dispose()] + */ + dispose(): void; + /** + * [descr:DataSource.filter()] + */ + filter(): FilterDescriptor | Array; + /** + * [descr:DataSource.filter(filterExpr)] + */ + filter(filterExpr: FilterDescriptor | Array): void; + /** + * [descr:DataSource.group()] + */ + group(): GroupDescriptor | Array>; + /** + * [descr:DataSource.group(groupExpr)] + */ + group( + groupExpr: GroupDescriptor | Array> + ): void; + /** + * [descr:DataSource.isLastPage()] + */ + isLastPage(): boolean; + /** + * [descr:DataSource.isLoaded()] + */ + isLoaded(): boolean; + /** + * [descr:DataSource.isLoading()] + */ + isLoading(): boolean; + /** + * [descr:DataSource.items()] + */ + items(): Array; + /** + * [descr:DataSource.key()] + */ + key(): string | Array; + /** + * [descr:DataSource.load()] + */ + load(): DevExpress.core.utils.DxExtendedPromise; + /** + * [descr:DataSource.loadOptions()] + */ + loadOptions(): LoadOptions; + /** + * [descr:DataSource.off(eventName)] + */ + off(eventName: DataSourceEventName): this; + /** + * [descr:DataSource.off(eventName, eventHandler)] + */ + off(eventName: DataSourceEventName, eventHandler: Function): this; + /** + * [descr:DataSource.on(eventName, eventHandler)] + */ + on(eventName: DataSourceEventName, eventHandler: Function): this; + /** + * [descr:DataSource.on(events)] + */ + on(events: { [key in DataSourceEventName]?: Function }): this; + /** + * [descr:DataSource.pageIndex()] + */ + pageIndex(): number; + /** + * [descr:DataSource.pageIndex(newIndex)] + */ + pageIndex(newIndex: number): void; + /** + * [descr:DataSource.pageSize()] + */ + pageSize(): number; + /** + * [descr:DataSource.pageSize(value)] + */ + pageSize(value: number): void; + /** + * [descr:DataSource.paginate()] + */ + paginate(): boolean; + /** + * [descr:DataSource.paginate(value)] + */ + paginate(value: boolean): void; + /** + * [descr:DataSource.reload()] + */ + reload(): DevExpress.core.utils.DxExtendedPromise; + /** + * [descr:DataSource.requireTotalCount()] + */ + requireTotalCount(): boolean; + /** + * [descr:DataSource.requireTotalCount(value)] + */ + requireTotalCount(value: boolean): void; + /** + * [descr:DataSource.searchExpr()] + */ + searchExpr(): string & Function & Array; + /** + * [descr:DataSource.searchExpr(expr)] + */ + searchExpr(expr: string | Function | Array): void; + /** + * [descr:DataSource.searchOperation()] + */ + searchOperation(): string; + /** + * [descr:DataSource.searchOperation(op)] + */ + searchOperation(op: string): void; + /** + * [descr:DataSource.searchValue()] + */ + searchValue(): any; + /** + * [descr:DataSource.searchValue(value)] + */ + searchValue(value: any): void; + /** + * [descr:DataSource.select()] + */ + select(): SelectDescriptor; + /** + * [descr:DataSource.select(expr)] + */ + select(expr: SelectDescriptor): void; + /** + * [descr:DataSource.sort()] + */ + sort(): SortDescriptor | Array>; + /** + * [descr:DataSource.sort(sortExpr)] + */ + sort(sortExpr: SortDescriptor | Array>): void; + /** + * [descr:DataSource.store()] + */ + store(): DevExpress.data.utils.Store; + /** + * [descr:DataSource.totalCount()] + */ + totalCount(): number; + } + /** + * [descr:DataSourceOptions] + */ + export type DataSourceOptions< + TStoreItem = any, + TMappedItem = TStoreItem, + TItem = TMappedItem, + TKey = any + > = { + /** + * [descr:DataSourceOptions.customQueryParams] + */ + customQueryParams?: any; + /** + * [descr:DataSourceOptions.expand] + */ + expand?: Array | string; + /** + * [descr:DataSourceOptions.filter] + */ + filter?: FilterDescriptor | Array; + /** + * [descr:DataSourceOptions.group] + */ + group?: GroupDescriptor | Array>; + /** + * [descr:DataSourceOptions.langParams] + */ + langParams?: LangParams; + /** + * [descr:DataSourceOptions.map] + */ + map?: (dataItem: TStoreItem) => TMappedItem; + /** + * [descr:DataSourceOptions.onChanged] + */ + onChanged?: (e: { readonly changes?: Array }) => void; + /** + * [descr:DataSourceOptions.onLoadError] + */ + onLoadError?: (error: { readonly message?: string }) => void; + /** + * [descr:DataSourceOptions.onLoadingChanged] + */ + onLoadingChanged?: (isLoading: boolean) => void; + /** + * [descr:DataSourceOptions.pageSize] + */ + pageSize?: number; + /** + * [descr:DataSourceOptions.paginate] + */ + paginate?: boolean | undefined; + /** + * [descr:DataSourceOptions.postProcess] + */ + postProcess?: (data: Array) => Array; + /** + * [descr:DataSourceOptions.pushAggregationTimeout] + */ + pushAggregationTimeout?: number | undefined; + /** + * [descr:DataSourceOptions.requireTotalCount] + */ + requireTotalCount?: boolean; + /** + * [descr:DataSourceOptions.reshapeOnPush] + */ + reshapeOnPush?: boolean; + /** + * [descr:DataSourceOptions.searchExpr] + */ + searchExpr?: string | Function | Array; + /** + * [descr:DataSourceOptions.searchOperation] + */ + searchOperation?: SearchOperation; + /** + * [descr:DataSourceOptions.searchValue] + */ + searchValue?: any; + /** + * [descr:DataSourceOptions.select] + */ + select?: SelectDescriptor; + /** + * [descr:DataSourceOptions.sort] + */ + sort?: SortDescriptor | Array>; + /** + * [descr:DataSourceOptions.store] + */ + store?: + | Array + | DevExpress.data.utils.Store + | DevExpress.data.utils.StoreOptions; + }; + /** + * [descr:EdmLiteral] + */ + export class EdmLiteral { + constructor(value: string); + /** + * [descr:EdmLiteral.valueOf()] + */ + valueOf(): string; + } + /** + * [descr:EndpointSelector] + */ + export class EndpointSelector { + constructor(options: any); + /** + * [descr:EndpointSelector.urlFor(key)] + */ + urlFor(key: string): string; + } + /** + * [descr:Utils.errorHandler] + * @deprecated [depNote:Utils.errorHandler] + */ + export function errorHandler(e: Error): void; + /** + * [descr:FilterDescriptor] + */ + export type FilterDescriptor = DevExpress.data.FilterDescriptor; + /** + * [descr:GroupDescriptor] + */ + export type GroupDescriptor = DevExpress.data.GroupDescriptor; + export type GroupingInterval = DevExpress.data.GroupingInterval; + /** + * [descr:GroupItem] + */ + export type GroupItem = { + /** + * [descr:GroupItem.key] + */ + key: any | string | number; + /** + * [descr:GroupItem.items] + */ + items: Array | Array> | null; + /** + * [descr:GroupItem.count] + */ + count?: number; + /** + * [descr:GroupItem.summary] + */ + summary?: Array; + }; + /** + * [descr:isGroupItemsArray] + */ + export function isGroupItemsArray( + res: LoadResult + ): res is Array>; + /** + * [descr:isItemsArray] + */ + export function isItemsArray( + res: LoadResult + ): res is Array; + /** + * [descr:isLoadResultObject] + */ + export function isLoadResultObject( + res: LoadResult + ): res is LoadResultObject; + /** + * [descr:Utils.keyConverters] + */ + export var keyConverters: any; + /** + * [descr:LangParams] + */ + export type LangParams = { + /** + * [descr:LangParams.locale] + */ + locale: string; + /** + * [descr:LangParams.collatorOptions] + */ + collatorOptions?: Intl.CollatorOptions; + }; + /** + * [descr:LoadOptions] + */ + export type LoadOptions = DevExpress.data.LoadOptions; + /** + * [descr:LoadResult] + */ + export type LoadResult = + | Object + | LoadResultArray + | LoadResultObject; + /** + * [descr:LoadResultObject] + */ + export type LoadResultObject = { + /** + * [descr:LoadResultObject.data] + */ + data: Array | Array>; + /** + * [descr:LoadResultObject.totalCount] + */ + totalCount?: number; + /** + * [descr:LoadResultObject.summary] + */ + summary?: Array; + /** + * [descr:LoadResultObject.groupCount] + */ + groupCount?: number; + }; + /** + * [descr:LocalStore] + */ + export class LocalStore extends ArrayStore< + TItem, + TKey + > { + constructor(options?: LocalStoreOptions); + /** + * [descr:LocalStore.clear()] + */ + clear(): void; + } + /** + * [descr:LocalStoreOptions] + */ + export type LocalStoreOptions = ArrayStoreOptions< + TItem, + TKey + > & { + /** + * [descr:LocalStoreOptions.flushInterval] + */ + flushInterval?: number; + /** + * [descr:LocalStoreOptions.immediate] + */ + immediate?: boolean; + /** + * [descr:LocalStoreOptions.name] + */ + name?: string; + }; + /** + * [descr:ODataContext] + */ + export class ODataContext { + constructor(options?: ODataContextOptions); + /** + * [descr:ODataContext.get(operationName, params)] + */ + get( + operationName: string, + params: any + ): DevExpress.core.utils.DxPromise; + /** + * [descr:ODataContext.invoke(operationName, params, httpMethod)] + */ + invoke( + operationName: string, + params: any, + httpMethod: HttpMethod + ): DevExpress.core.utils.DxPromise; + /** + * [descr:ODataContext.objectLink(entityAlias, key)] + */ + objectLink(entityAlias: string, key: any | string | number): any; + } + /** + * [descr:ODataContextOptions] + */ + export type ODataContextOptions = { + /** + * [descr:ODataContextOptions.beforeSend] + */ + beforeSend?: (options: { + url: string; + async: boolean; + method: string; + timeout: number; + params: any; + payload: any; + headers: any; + }) => void; + /** + * [descr:ODataContextOptions.deserializeDates] + */ + deserializeDates?: boolean; + /** + * [descr:ODataContextOptions.entities] + */ + entities?: any; + /** + * [descr:ODataContextOptions.errorHandler] + */ + errorHandler?: (e: { + httpStatus: number; + errorDetails: any; + requestOptions: ODataRequestOptions; + }) => void; + /** + * [descr:ODataContextOptions.filterToLower] + */ + filterToLower?: boolean; + /** + * [descr:ODataContextOptions.jsonp] + */ + jsonp?: boolean; + /** + * [descr:ODataContextOptions.url] + */ + url?: string; + /** + * [descr:ODataContextOptions.version] + */ + version?: number; + /** + * [descr:ODataContextOptions.withCredentials] + */ + withCredentials?: boolean; + }; + /** + * [descr:ODataStore] + */ + export class ODataStore extends AbstractStore< + TItem, + TKey + > { + constructor(options?: ODataStoreOptions); + /** + * [descr:ODataStore.byKey(key, extraOptions)] + */ + byKey( + key: TKey, + extraOptions?: { + expand?: string | Array; + select?: string | Array; + } + ): DevExpress.core.utils.DxPromise; + /** + * [descr:ODataStore.createQuery(loadOptions)] + */ + createQuery(loadOptions?: { + expand?: string | Array; + requireTotalCount?: boolean; + customQueryParams?: any; + }): Query; + } + /** + * [descr:ODataStoreOptions] + */ + export type ODataStoreOptions = AbstractStoreOptions< + TItem, + TKey + > & { + /** + * [descr:ODataStoreOptions.beforeSend] + */ + beforeSend?: (options: { + url: string; + async: boolean; + method: string; + timeout: number; + params: any; + payload: any; + headers: any; + }) => void; + /** + * [descr:ODataStoreOptions.deserializeDates] + */ + deserializeDates?: boolean; + /** + * [descr:ODataStoreOptions.errorHandler] + */ + errorHandler?: (e: { + httpStatus: number; + errorDetails: any; + requestOptions: ODataRequestOptions; + }) => void; + /** + * [descr:ODataStoreOptions.fieldTypes] + */ + fieldTypes?: any; + /** + * [descr:ODataStoreOptions.filterToLower] + */ + filterToLower?: boolean; + /** + * [descr:ODataStoreOptions.jsonp] + */ + jsonp?: boolean; + /** + * [descr:ODataStoreOptions.keyType] + */ + keyType?: + | 'String' + | 'Int32' + | 'Int64' + | 'Guid' + | 'Boolean' + | 'Single' + | 'Decimal' + | any; + /** + * [descr:ODataStoreOptions.url] + */ + url?: string; + /** + * [descr:ODataStoreOptions.version] + */ + version?: number; + /** + * [descr:ODataStoreOptions.withCredentials] + */ + withCredentials?: boolean; + }; + /** + * [descr:Utils.query(array, queryOptions)] + */ + export function query(array: Array, queryOptions?: any): Query; + /** + * [descr:Utils.query(url, queryOptions)] + */ + export function query(url: string, queryOptions: any): Query; + /** + * [descr:Query] + */ + export type Query = { + /** + * [descr:Query.aggregate(seed, step, finalize)] + */ + aggregate( + seed: any, + step: Function, + finalize: Function + ): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.aggregate(step)] + */ + aggregate(step: Function): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.avg()] + */ + avg(): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.avg(getter)] + */ + avg(getter: any): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.count()] + */ + count(): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.enumerate()] + */ + enumerate(): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.filter(criteria)] + */ + filter(criteria: Array): Query; + /** + * [descr:Query.filter(predicate)] + */ + filter(predicate: Function): Query; + /** + * [descr:Query.groupBy(getter)] + */ + groupBy(getter: any): Query; + /** + * [descr:Query.max()] + */ + max(): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.max(getter)] + */ + max(getter: any): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.min()] + */ + min(): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.min(getter)] + */ + min(getter: any): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.select(getter)] + */ + select(...getters: any[]): Query; + /** + * [descr:Query.slice(skip, take)] + */ + slice(skip: number, take?: number): Query; + /** + * [descr:Query.sortBy(getter)] + */ + sortBy(getter: any): Query; + /** + * [descr:Query.sortBy(getter, desc)] + */ + sortBy(getter: any, desc: boolean): Query; + /** + * [descr:Query.sum()] + */ + sum(): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.sum(getter)] + */ + sum(getter: any): DevExpress.core.utils.DxPromise; + /** + * [descr:Query.thenBy(getter)] + */ + thenBy(getter: any): Query; + /** + * [descr:Query.thenBy(getter, desc)] + */ + thenBy(getter: any, desc: boolean): Query; + /** + * [descr:Query.toArray()] + */ + toArray(): Array; + }; + /** + * [descr:ResolvedData] + * @deprecated [depNote:ResolvedData] + */ + export type ResolvedData = LoadResult; + export type SearchOperation = DevExpress.data.SearchOperation; + /** + * [descr:SelectDescriptor] + */ + export type SelectDescriptor = DevExpress.data.SelectDescriptor; + /** + * [descr:Utils.setErrorHandler] + */ + export function setErrorHandler(handler: (e: Error) => void): void; + /** + * [descr:SortDescriptor] + */ + export type SortDescriptor = DevExpress.data.SortDescriptor; + /** + * [descr:Store] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export class Store { + constructor(options?: StoreOptions); + /** + * [descr:Store.insert(values)] + */ + insert(values: TItem): DevExpress.core.utils.DxExtendedPromise; + /** + * [descr:Store.key()] + */ + key(): string | Array; + /** + * [descr:Store.keyOf(obj)] + */ + keyOf(obj: TItem): TKey; + /** + * [descr:Store.off(eventName)] + */ + off(eventName: DevExpress.data.StoreEventName): this; + /** + * [descr:Store.off(eventName, eventHandler)] + */ + off( + eventName: DevExpress.data.StoreEventName, + eventHandler: Function + ): this; + /** + * [descr:Store.on(eventName, eventHandler)] + */ + on(eventName: DevExpress.data.StoreEventName, eventHandler: Function): this; + /** + * [descr:Store.on(events)] + */ + on(events: { [key in DevExpress.data.StoreEventName]?: Function }): this; + /** + * [descr:Store.push(changes)] + */ + push( + changes: Array<{ + type: 'insert' | 'update' | 'remove'; + data?: DevExpress.core.DeepPartial; + key?: TKey; + index?: number; + }> + ): void; + /** + * [descr:Store.remove(key)] + */ + remove(key: TKey): DevExpress.core.utils.DxPromise; + /** + * [descr:Store.totalCount(options)] + */ + totalCount(obj: { + filter?: FilterDescriptor | Array; + group?: GroupDescriptor | Array>; + }): DevExpress.core.utils.DxPromise; + /** + * [descr:Store.update(key, values)] + */ + update( + key: TKey, + values: DevExpress.core.DeepPartial + ): DevExpress.core.utils.DxExtendedPromise; + } + /** + * [descr:StoreOptions] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type StoreOptions = { + /** + * [descr:StoreOptions.errorHandler] + */ + errorHandler?: Function; + /** + * [descr:StoreOptions.key] + */ + key?: string | Array; + /** + * [descr:StoreOptions.onInserted] + */ + onInserted?: (values: TItem, key: TKey) => void; + /** + * [descr:StoreOptions.onInserting] + */ + onInserting?: (values: TItem) => void; + /** + * [descr:StoreOptions.onLoading] + */ + onLoading?: (loadOptions: LoadOptions) => void; + /** + * [descr:StoreOptions.onModified] + */ + onModified?: Function; + /** + * [descr:StoreOptions.onModifying] + */ + onModifying?: Function; + /** + * [descr:StoreOptions.onPush] + */ + onPush?: (changes: Array) => void; + /** + * [descr:StoreOptions.onRemoved] + */ + onRemoved?: (key: TKey) => void; + /** + * [descr:StoreOptions.onRemoving] + */ + onRemoving?: (key: TKey) => void; + /** + * [descr:StoreOptions.onUpdated] + */ + onUpdated?: (key: TKey, values: TItem) => void; + /** + * [descr:StoreOptions.onUpdating] + */ + onUpdating?: (key: TKey, values: TItem) => void; + }; + /** + * [descr:SummaryDescriptor] + */ + export type SummaryDescriptor = DevExpress.data.SummaryDescriptor; +} +declare module DevExpress.common.Export.excel { + export type DataGridCell = DevExpress.excelExporter.ExcelDataGridCell; + /** + * [descr:ExcelExportDataGridProps] + */ + export type DataGridExportOptions = + DevExpress.excelExporter.ExcelExportBaseOptions & { + /** + * [descr:ExcelExportDataGridProps.component] + */ + component?: DevExpress.ui.dxDataGrid | undefined; + /** + * [descr:ExcelExportDataGridProps.selectedRowsOnly] + */ + selectedRowsOnly?: boolean; + /** + * [descr:ExcelExportDataGridProps.autoFilterEnabled] + */ + autoFilterEnabled?: boolean; + /** + * [descr:ExcelExportDataGridProps.customizeCell] + */ + customizeCell?: (options: { + gridCell?: DataGridCell; + excelCell?: any; + }) => void; + }; + /** + * [descr:excelExporter.exportDataGrid(options)] + */ + export function exportDataGrid( + options: DataGridExportOptions + ): DevExpress.core.utils.DxPromise; + /** + * [descr:excelExporter.exportPivotGrid(options)] + */ + export function exportPivotGrid( + options: PivotGridExportOptions + ): DevExpress.core.utils.DxPromise; + export type PivotGridCell = DevExpress.excelExporter.ExcelPivotGridCell; + /** + * [descr:PivotGridExportOptions] + */ + export type PivotGridExportOptions = + DevExpress.excelExporter.ExcelExportBaseOptions & { + /** + * [descr:PivotGridExportOptions.component] + */ + component?: DevExpress.ui.dxPivotGrid | undefined; + /** + * [descr:PivotGridExportOptions.mergeRowFieldValues] + */ + mergeRowFieldValues?: boolean; + /** + * [descr:PivotGridExportOptions.mergeColumnFieldValues] + */ + mergeColumnFieldValues?: boolean; + /** + * [descr:PivotGridExportOptions.exportFilterFieldHeaders] + */ + exportFilterFieldHeaders?: boolean; + /** + * [descr:PivotGridExportOptions.exportDataFieldHeaders] + */ + exportDataFieldHeaders?: boolean; + /** + * [descr:PivotGridExportOptions.exportColumnFieldHeaders] + */ + exportColumnFieldHeaders?: boolean; + /** + * [descr:PivotGridExportOptions.exportRowFieldHeaders] + */ + exportRowFieldHeaders?: boolean; + /** + * [descr:PivotGridExportOptions.customizeCell] + */ + customizeCell?: (options: { + pivotCell?: PivotGridCell; + excelCell?: any; + }) => void; + }; +} +declare module DevExpress.common.Export.pdf { + /** + * [descr:PdfCell] + */ + export type Cell = { + /** + * [descr:PdfCell.backgroundColor] + */ + backgroundColor?: string; + /** + * [descr:PdfCell.borderColor] + */ + borderColor?: string; + /** + * [descr:PdfCell.borderWidth] + */ + borderWidth?: number; + /** + * [descr:PdfCell.drawLeftBorder] + */ + drawLeftBorder?: boolean; + /** + * [descr:PdfCell.drawTopBorder] + */ + drawTopBorder?: boolean; + /** + * [descr:PdfCell.drawRightBorder] + */ + drawRightBorder?: boolean; + /** + * [descr:PdfCell.drawBottomBorder] + */ + drawBottomBorder?: boolean; + /** + * [descr:PdfCell.font] + */ + font?: { + /** + * [descr:PdfCell.font.size] + */ + size?: number; + /** + * [descr:PdfCell.font.name] + */ + name?: string; + /** + * [descr:PdfCell.font.style] + */ + style?: 'normal' | 'bold' | 'italic'; + }; + /** + * [descr:PdfCell.horizontalAlign] + */ + horizontalAlign?: 'left' | 'center' | 'right'; + /** + * [descr:PdfCell.padding] + */ + padding?: { + /** + * [descr:PdfCell.padding.top] + */ + top?: number; + /** + * [descr:PdfCell.padding.left] + */ + left?: number; + /** + * [descr:PdfCell.padding.right] + */ + right?: number; + /** + * [descr:PdfCell.padding.bottom] + */ + bottom?: number; + }; + /** + * [descr:PdfCell.text] + */ + text?: string; + /** + * [descr:PdfCell.textColor] + */ + textColor?: string; + /** + * [descr:PdfCell.verticalAlign] + */ + verticalAlign?: 'top' | 'middle' | 'bottom'; + /** + * [descr:PdfCell.wordWrapEnabled] + */ + wordWrapEnabled?: boolean; + }; + export type DataGridCell = DevExpress.pdfExporter.PdfDataGridCell; + /** + * [descr:PdfExportDataGridProps] + */ + export type DataGridExportOptions = { + /** + * [descr:PdfExportDataGridProps.jsPDFDocument] + */ + jsPDFDocument?: object | undefined; + /** + * [descr:PdfExportDataGridProps.component] + */ + component?: DevExpress.ui.dxDataGrid | undefined; + /** + * [descr:PdfExportDataGridProps.topLeft] + */ + topLeft?: { + /** + * [descr:PdfExportDataGridProps.topLeft.x] + */ + x?: number; + /** + * [descr:PdfExportDataGridProps.topLeft.y] + */ + y?: number; + }; + /** + * [descr:PdfExportDataGridProps.columnWidths] + */ + columnWidths?: Array | undefined; + /** + * [descr:PdfExportDataGridProps.indent] + */ + indent?: number; + /** + * [descr:PdfExportDataGridProps.margin] + */ + margin?: { + /** + * [descr:PdfExportDataGridProps.margin.top] + */ + top?: number; + /** + * [descr:PdfExportDataGridProps.margin.left] + */ + left?: number; + /** + * [descr:PdfExportDataGridProps.margin.right] + */ + right?: number; + /** + * [descr:PdfExportDataGridProps.margin.bottom] + */ + bottom?: number; + }; + /** + * [descr:PdfExportDataGridProps.repeatHeaders] + */ + repeatHeaders?: boolean; + /** + * [descr:PdfExportDataGridProps.selectedRowsOnly] + */ + selectedRowsOnly?: boolean; + /** + * [descr:PdfExportDataGridProps.customDrawCell] + */ + customDrawCell?: (options: { + gridCell?: DataGridCell; + pdfCell?: Cell; + doc?: any; + rect?: { x: number; y: number; h: number; w: number }; + cancel?: boolean; + }) => void; + /** + * [descr:PdfExportDataGridProps.customizeCell] + */ + customizeCell?: (options: { + gridCell?: DataGridCell; + pdfCell?: Cell; + }) => void; + /** + * [descr:PdfExportDataGridProps.onRowExporting] + */ + onRowExporting?: (options: { + rowCells?: Array; + rowHeight?: number; + }) => void; + /** + * [descr:PdfExportDataGridProps.loadPanel] + */ + loadPanel?: ExportLoadPanel; + }; + /** + * [descr:pdfExporter.exportDataGrid(options)] + */ + export function exportDataGrid( + options: DataGridExportOptions + ): DevExpress.core.utils.DxPromise; + /** + * [descr:pdfExporter.exportGantt(options)] + */ + export function exportGantt( + options: GanttExportOptions + ): DevExpress.core.utils.DxPromise; + /** + * [descr:GanttExportFont] + */ + export type GanttExportFont = { + /** + * [descr:GanttExportFont.fontObject] + */ + fontObject: object | undefined; + /** + * [descr:GanttExportFont.name] + */ + name: string | undefined; + /** + * [descr:GanttExportFont.style] + */ + style?: string; + /** + * [descr:GanttExportFont.weight] + */ + weight?: string | number | undefined; + }; + /** + * [descr:GanttExportOptions] + */ + export type GanttExportOptions = { + /** + * [descr:GanttExportOptions.createDocumentMethod] + */ + createDocumentMethod?: (options: any) => object; + /** + * [descr:GanttExportOptions.jsPDFDocument] + */ + jsPDFDocument?: object | undefined; + /** + * [descr:GanttExportOptions.component] + */ + component?: DevExpress.ui.dxGantt | undefined; + /** + * [descr:GanttExportOptions.format] + */ + format?: string | object | undefined; + /** + * [descr:GanttExportOptions.landscape] + */ + landscape?: boolean; + /** + * [descr:GanttExportOptions.fileName] + */ + fileName?: string | undefined; + /** + * [descr:GanttExportOptions.margins] + */ + margins?: object | undefined; + /** + * [descr:GanttExportOptions.exportMode] + */ + exportMode?: DevExpress.ui.dxGantt.GanttPdfExportMode; + /** + * [descr:GanttExportOptions.dateRange] + */ + dateRange?: DevExpress.ui.dxGantt.GanttPdfExportDateRange | object; + /** + * [descr:GanttExportOptions.font] + */ + font?: GanttExportFont; + }; +} +declare module DevExpress.common.grids { + /** + * [descr:AdaptiveDetailRowPreparingInfo] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type AdaptiveDetailRowPreparingInfo = { + /** + * [descr:AdaptiveDetailRowPreparingInfo.formOptions] + */ + readonly formOptions: any; + }; + export type ApplyChangesMode = 'instantly' | 'onDemand'; + export type ApplyFilterMode = 'auto' | 'onClick'; + /** + * [descr:GridBaseColumn] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export interface ColumnBase { + /** + * [descr:GridBaseColumn.alignment] + */ + alignment?: HorizontalAlignment | undefined; + /** + * [descr:GridBaseColumn.allowEditing] + */ + allowEditing?: boolean; + /** + * [descr:GridBaseColumn.allowFiltering] + */ + allowFiltering?: boolean; + /** + * [descr:GridBaseColumn.allowFixing] + */ + allowFixing?: boolean; + /** + * [descr:GridBaseColumn.allowHeaderFiltering] + */ + allowHeaderFiltering?: boolean; + /** + * [descr:GridBaseColumn.allowHiding] + */ + allowHiding?: boolean; + /** + * [descr:GridBaseColumn.allowReordering] + */ + allowReordering?: boolean; + /** + * [descr:GridBaseColumn.allowResizing] + */ + allowResizing?: boolean; + /** + * [descr:GridBaseColumn.allowSearch] + */ + allowSearch?: boolean; + /** + * [descr:GridBaseColumn.allowSorting] + */ + allowSorting?: boolean; + /** + * [descr:GridBaseColumn.calculateCellValue] + */ + calculateCellValue?: (this: ColumnBase, rowData: TRowData) => any; + defaultCalculateCellValue?: this['calculateCellValue']; + /** + * [descr:GridBaseColumn.calculateDisplayValue] + */ + calculateDisplayValue?: + | string + | ((this: ColumnBase, rowData: TRowData) => any); + /** + * [descr:GridBaseColumn.calculateFilterExpression] + */ + calculateFilterExpression?: ( + this: ColumnBase, + filterValue: any, + selectedFilterOperation: string | null, + target: string + ) => string | Array | Function; + defaultCalculateFilterExpression?: this['calculateFilterExpression']; + /** + * [descr:GridBaseColumn.calculateSortValue] + */ + calculateSortValue?: + | string + | ((this: ColumnBase, rowData: TRowData) => any); + /** + * [descr:GridBaseColumn.caption] + */ + caption?: string | undefined; + /** + * [descr:GridBaseColumn.cssClass] + */ + cssClass?: string | undefined; + /** + * [descr:GridBaseColumn.customizeText] + */ + customizeText?: ( + this: ColumnBase, + cellInfo: ColumnCustomizeTextArg + ) => string; + /** + * [descr:GridBaseColumn.dataField] + */ + dataField?: string | undefined; + /** + * [descr:GridBaseColumn.dataType] + */ + dataType?: DataType | undefined; + /** + * [descr:GridBaseColumn.editorOptions] + */ + editorOptions?: any; + /** + * [descr:GridBaseColumn.encodeHtml] + */ + encodeHtml?: boolean; + /** + * [descr:GridBaseColumn.falseText] + */ + falseText?: string; + /** + * [descr:GridBaseColumn.filterOperations] + */ + filterOperations?: Array; + /** + * [descr:GridBaseColumn.filterType] + */ + filterType?: FilterType; + /** + * [descr:GridBaseColumn.filterValue] + */ + filterValue?: any | undefined; + /** + * [descr:GridBaseColumn.filterValues] + */ + filterValues?: Array; + /** + * [descr:GridBaseColumn.fixed] + */ + fixed?: boolean; + /** + * [descr:GridBaseColumn.fixedPosition] + */ + fixedPosition?: FixedPosition | undefined; + /** + * [descr:GridBaseColumn.formItem] + */ + formItem?: DevExpress.ui.dxForm.SimpleItem; + /** + * [descr:GridBaseColumn.format] + */ + format?: DevExpress.common.core.localization.Format; + /** + * [descr:GridBaseColumn.headerFilter] + */ + headerFilter?: ColumnHeaderFilter | undefined; + /** + * [descr:GridBaseColumn.hidingPriority] + */ + hidingPriority?: number | undefined; + /** + * [descr:GridBaseColumn.isBand] + */ + isBand?: boolean | undefined; + /** + * [descr:GridBaseColumn.lookup] + */ + lookup?: ColumnLookup | undefined; + /** + * [descr:GridBaseColumn.minWidth] + */ + minWidth?: number | undefined; + /** + * [descr:GridBaseColumn.name] + */ + name?: string | undefined; + /** + * [descr:GridBaseColumn.ownerBand] + */ + ownerBand?: number | undefined; + /** + * [descr:GridBaseColumn.renderAsync] + */ + renderAsync?: boolean; + /** + * [descr:GridBaseColumn.selectedFilterOperation] + */ + selectedFilterOperation?: SelectedFilterOperation | undefined; + /** + * [descr:GridBaseColumn.setCellValue] + */ + setCellValue?: ( + this: ColumnBase, + newData: DevExpress.core.DeepPartial, + value: any, + currentRowData: TRowData + ) => void | PromiseLike; + defaultSetCellValue?: this['setCellValue']; + /** + * [descr:GridBaseColumn.showEditorAlways] + */ + showEditorAlways?: boolean; + /** + * [descr:GridBaseColumn.showInColumnChooser] + */ + showInColumnChooser?: boolean; + /** + * [descr:GridBaseColumn.sortIndex] + */ + sortIndex?: number | undefined; + /** + * [descr:GridBaseColumn.sortOrder] + */ + sortOrder?: SortOrder | undefined; + /** + * [descr:GridBaseColumn.sortingMethod] + */ + sortingMethod?: + | ((this: ColumnBase, value1: any, value2: any) => number) + | undefined; + /** + * [descr:GridBaseColumn.trueText] + */ + trueText?: string; + /** + * [descr:GridBaseColumn.validationRules] + */ + validationRules?: Array; + /** + * [descr:GridBaseColumn.visible] + */ + visible?: boolean; + /** + * [descr:GridBaseColumn.visibleIndex] + */ + visibleIndex?: number | undefined; + /** + * [descr:GridBaseColumn.width] + */ + width?: number | string | undefined; + } + /** + * [descr:GridBaseColumnButton] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export interface ColumnButtonBase { + /** + * [descr:GridBaseColumnButton.cssClass] + */ + cssClass?: string; + /** + * [descr:GridBaseColumnButton.hint] + */ + hint?: string; + /** + * [descr:GridBaseColumnButton.icon] + */ + icon?: string; + /** + * [descr:GridBaseColumnButton.text] + */ + text?: string; + } + /** + * [descr:ColumnChooser] + */ + export type ColumnChooser = { + /** + * [descr:GridBaseOptions.columnChooser.allowSearch] + * @deprecated [depNote:GridBaseOptions.columnChooser.allowSearch] + */ + allowSearch?: boolean; + /** + * [descr:GridBaseOptions.columnChooser.container] + */ + container?: string | DevExpress.core.UserDefinedElement | undefined; + /** + * [descr:GridBaseOptions.columnChooser.emptyPanelText] + */ + emptyPanelText?: string; + /** + * [descr:GridBaseOptions.columnChooser.enabled] + */ + enabled?: boolean; + /** + * [descr:GridBaseOptions.columnChooser.height] + */ + height?: number | string; + /** + * [descr:GridBaseOptions.columnChooser.mode] + */ + mode?: ColumnChooserMode; + /** + * [descr:GridBaseOptions.columnChooser.position] + */ + position?: DevExpress.common.core.animation.PositionConfig | undefined; /** * [descr:GridBaseOptions.columnChooser.search] */ @@ -3089,7 +4686,7 @@ declare module DevExpress.common.grids { | DevExpress.ui.dxFilterBuilder.FilterLookupDataSource | ((options: { component?: any; - dataSource?: DevExpress.data.DataSource.Options | null; + dataSource?: DevExpress.common.data.DataSourceOptions | null; }) => void) | undefined; /** @@ -3639,7 +5236,7 @@ declare module DevExpress.common.grids { * [descr:GridBase.getCombinedFilter(returnDataField)] */ getCombinedFilter(returnDataField: boolean): any; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:GridBase.getKeyByRowIndex(rowIndex)] */ @@ -3835,10 +5432,7 @@ declare module DevExpress.common.grids { /** * [descr:GridBaseOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike< - TRowData, - TKey - > | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:GridBaseOptions.dateSerializationFormat] */ @@ -3915,144 +5509,152 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.onAdaptiveDetailRowPreparing] */ onAdaptiveDetailRowPreparing?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & AdaptiveDetailRowPreparingInfo ) => void; /** * [descr:GridBaseOptions.onDataErrorOccurred] */ onDataErrorOccurred?: ( - e: DevExpress.events.EventInfo & DataErrorOccurredInfo + e: DevExpress.common.core.events.EventInfo & + DataErrorOccurredInfo ) => void; /** * [descr:GridBaseOptions.onEditCanceled] */ onEditCanceled?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DataChangeInfo ) => void; /** * [descr:GridBaseOptions.onEditCanceling] */ onEditCanceling?: ( - e: DevExpress.events.Cancelable & - DevExpress.events.EventInfo & + e: DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & DataChangeInfo ) => void; /** * [descr:GridBaseOptions.onInitNewRow] */ onInitNewRow?: ( - e: DevExpress.events.EventInfo & NewRowInfo + e: DevExpress.common.core.events.EventInfo & + NewRowInfo ) => void; /** * [descr:GridBaseOptions.onKeyDown] */ onKeyDown?: ( - e: DevExpress.events.NativeEventInfo & + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + KeyboardEvent + > & KeyDownInfo ) => void; /** * [descr:GridBaseOptions.onRowCollapsed] */ onRowCollapsed?: ( - e: DevExpress.events.EventInfo & RowKeyInfo + e: DevExpress.common.core.events.EventInfo & RowKeyInfo ) => void; /** * [descr:GridBaseOptions.onRowCollapsing] */ onRowCollapsing?: ( - e: DevExpress.events.Cancelable & - DevExpress.events.EventInfo & + e: DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & RowKeyInfo ) => void; /** * [descr:GridBaseOptions.onRowExpanded] */ onRowExpanded?: ( - e: DevExpress.events.EventInfo & RowKeyInfo + e: DevExpress.common.core.events.EventInfo & RowKeyInfo ) => void; /** * [descr:GridBaseOptions.onRowExpanding] */ onRowExpanding?: ( - e: DevExpress.events.Cancelable & - DevExpress.events.EventInfo & + e: DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & RowKeyInfo ) => void; /** * [descr:GridBaseOptions.onRowInserted] */ onRowInserted?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & RowInsertedInfo ) => void; /** * [descr:GridBaseOptions.onRowInserting] */ onRowInserting?: ( - e: DevExpress.events.EventInfo & RowInsertingInfo + e: DevExpress.common.core.events.EventInfo & + RowInsertingInfo ) => void; /** * [descr:GridBaseOptions.onRowRemoved] */ onRowRemoved?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & RowRemovedInfo ) => void; /** * [descr:GridBaseOptions.onRowRemoving] */ onRowRemoving?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & RowRemovingInfo ) => void; /** * [descr:GridBaseOptions.onRowUpdated] */ onRowUpdated?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & RowUpdatedInfo ) => void; /** * [descr:GridBaseOptions.onRowUpdating] */ onRowUpdating?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & RowUpdatingInfo ) => void; /** * [descr:GridBaseOptions.onRowValidating] */ onRowValidating?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & RowValidatingInfo ) => void; /** * [descr:GridBaseOptions.onSaved] */ onSaved?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DataChangeInfo ) => void; /** * [descr:GridBaseOptions.onSaving] */ onSaving?: ( - e: DevExpress.events.EventInfo & SavingInfo + e: DevExpress.common.core.events.EventInfo & + SavingInfo ) => void; /** * [descr:GridBaseOptions.onSelectionChanged] */ onSelectionChanged?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & SelectionChangedInfo ) => void; /** * [descr:GridBaseOptions.onToolbarPreparing] */ onToolbarPreparing?: ( - e: DevExpress.events.EventInfo & ToolbarPreparingInfo + e: DevExpress.common.core.events.EventInfo & + ToolbarPreparingInfo ) => void; /** * [descr:GridBaseOptions.pager] @@ -4414,7 +6016,7 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.rowDragging.dragTemplate] */ dragTemplate?: - | DevExpress.core.template + | template | (( dragInfo: RowDraggingTemplateData, containerElement: DevExpress.core.DxElement @@ -4449,7 +6051,7 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.rowDragging.onDragChange] */ onDragChange?: ( - e: DevExpress.events.Cancelable & + e: DevExpress.common.core.events.Cancelable & ReducedNativeEventInfo & RowDraggingEventInfo & DragDropInfo @@ -4458,7 +6060,7 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.rowDragging.onDragEnd] */ onDragEnd?: ( - e: DevExpress.events.Cancelable & + e: DevExpress.common.core.events.Cancelable & ReducedNativeEventInfo & RowDraggingEventInfo & DragDropInfo @@ -4467,7 +6069,7 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.rowDragging.onDragMove] */ onDragMove?: ( - e: DevExpress.events.Cancelable & + e: DevExpress.common.core.events.Cancelable & ReducedNativeEventInfo & RowDraggingEventInfo & DragDropInfo @@ -4476,7 +6078,7 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.rowDragging.onDragStart] */ onDragStart?: ( - e: DevExpress.events.Cancelable & + e: DevExpress.common.core.events.Cancelable & ReducedNativeEventInfo & DragStartEventInfo ) => void; @@ -4918,12 +6520,46 @@ declare module DevExpress.core { [P in keyof T]?: DeepPartial; }; /** - * [descr:DefaultOptionsRule] + * [descr:DevicesObject] */ - export type DefaultOptionsRule = { - device?: Device | Device[] | ((device: Device) => boolean); - options: DeepPartial; - }; + export class DevicesObject { + constructor(options?: { window?: Window }); + /** + * [descr:DevicesObject.current()] + */ + current(): DevExpress.common.core.environment.Device; + /** + * [descr:DevicesObject.current(deviceName)] + */ + current( + deviceName: string | DevExpress.common.core.environment.Device + ): void; + /** + * [descr:DevicesObject.off(eventName)] + */ + off(eventName: DevExpress.common.EventName): this; + /** + * [descr:DevicesObject.off(eventName, eventHandler)] + */ + off(eventName: DevExpress.common.EventName, eventHandler: Function): this; + /** + * [descr:DevicesObject.on(eventName, eventHandler)] + */ + on(eventName: DevExpress.common.EventName, eventHandler: Function): this; + /** + * [descr:DevicesObject.on(events)] + */ + on(events: { [key in DevExpress.common.EventName]?: Function }): this; + /** + * [descr:DevicesObject.orientation()] + */ + orientation(): 'portrait' | 'landscape' | undefined; + /** + * [descr:DevicesObject.real()] + */ + real(): DevExpress.common.core.environment.Device; + isSimulator(): boolean; + } /** * [descr:dxElement] * @deprecated [depNote:dxElement] @@ -4973,11 +6609,6 @@ declare module DevExpress.core { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ interface ElementWrapper extends JQuery {} - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - type EventName = 'orientationChanged'; - export type FloatingActionButtonDirection = 'auto' | 'up' | 'down'; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -5019,10 +6650,6 @@ declare module DevExpress.core { | Function | Symbol | Array; - /** - * [descr:template] - */ - export type template = string | Function | UserDefinedElement; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -5041,610 +6668,97 @@ declare module DevExpress.core { * [descr:UserDefinedElement] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type UserDefinedElement = - {} extends Condition ? T : ElementWrapper | T; - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export type UserDefinedElementsArray = {} extends Condition - ? Array - : ElementsArrayWrapper; -} -declare module DevExpress.core.utils { - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export type DxExtendedPromise = DxPromise & { - then( - onFulfilled?: - | (( - value: T, - extraParameters?: any - ) => TResult1 | PromiseLike) - | undefined - | null, - onRejected?: - | ((reason: any) => TResult2 | PromiseLike) - | undefined - | null - ): PromiseLike; - }; - /** - * [descr:DxPromise] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export type DxPromise = {} extends PromiseType - ? Promise - : PromiseType; -} -declare module DevExpress.data { - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export class AbstractStore extends Store< - TItem, - TKey - > { - constructor(options?: DevExpress.data.AbstractStore.Options); - /** - * [descr:Store.load()] - */ - load(): DevExpress.core.utils.DxExtendedPromise>; - /** - * [descr:Store.load(options)] - */ - load( - options: LoadOptions - ): DevExpress.core.utils.DxExtendedPromise>; - } - module AbstractStore { - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export type Options = AbstractStoreOptions< - TItem, - TKey - >; - } - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - interface AbstractStoreOptions - extends DevExpress.data.Store.Options { - /** - * [descr:StoreOptions.onLoaded] - */ - onLoaded?: (result: Array, loadOptions: LoadOptions) => void; - } - /** - * [descr:Utils.applyChanges(data, changes, options)] - */ - export function applyChanges( - data: Array, - changes: Array, - options?: { keyExpr?: string | Array; immutable?: boolean } - ): Array; - /** - * [descr:ArrayStore] - */ - export class ArrayStore extends AbstractStore< - TItem, - TKey - > { - constructor(options?: DevExpress.data.ArrayStore.Options); - /** - * [descr:ArrayStore.byKey(key)] - */ - byKey(key: TKey): DevExpress.core.utils.DxPromise; - /** - * [descr:ArrayStore.clear()] - */ - clear(): void; - /** - * [descr:ArrayStore.createQuery()] - */ - createQuery(): Query; - } - module ArrayStore { - export type Options = ArrayStoreOptions< - TItem, - TKey - >; - } - /** - * [descr:ArrayStoreOptions] - * @deprecated [depNote:ArrayStoreOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface ArrayStoreOptions - extends DevExpress.data.AbstractStore.Options { - /** - * [descr:ArrayStoreOptions.data] - */ - data?: Array; - } - /** - * [descr:Utils.base64_encode(input)] - */ - export function base64_encode(input: string | Array): string; - /** - * [descr:CustomStore] - */ - export class CustomStore extends Store { - constructor(options?: DevExpress.data.CustomStore.Options); - /** - * [descr:CustomStore.byKey(key, extraOptions)] - */ - byKey( - key: TKey, - extraOptions?: LoadOptions - ): DevExpress.core.utils.DxPromise; - /** - * [descr:CustomStore.clearRawDataCache()] - */ - clearRawDataCache(): void; - /** - * [descr:CustomStore.load()] - */ - load(): DevExpress.core.utils.DxExtendedPromise< - DevExpress.common.LoadResult - >; - /** - * [descr:CustomStore.load(options)] - */ - load( - options: LoadOptions - ): DevExpress.core.utils.DxExtendedPromise< - DevExpress.common.LoadResult - >; - } - module CustomStore { - /** - * @deprecated Use GroupItem from common/data/custom-store instead - */ - export type GroupItem = DevExpress.common.GroupItem; - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - type LoadFunctionResult = - | T - | DevExpress.core.utils.DxPromise - | PromiseLike; - export type Options = CustomStoreOptions< - TItem, - TKey - >; - /** - * [descr:ResolvedData] - * @deprecated [depNote:ResolvedData] - */ - export type ResolvedData = DevExpress.common.LoadResult; - } - /** - * [descr:CustomStoreOptions] - * @deprecated [depNote:CustomStoreOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface CustomStoreOptions - extends DevExpress.data.Store.Options { - /** - * [descr:CustomStoreOptions.byKey] - */ - byKey?: ( - key: TKey, - extraOptions?: LoadOptions - ) => PromiseLike; - /** - * [descr:CustomStoreOptions.cacheRawData] - */ - cacheRawData?: boolean; - /** - * [descr:CustomStoreOptions.insert] - */ - insert?: (values: TItem) => PromiseLike; - /** - * [descr:CustomStoreOptions.load] - */ - load: ( - options: LoadOptions - ) => DevExpress.data.CustomStore.LoadFunctionResult< - DevExpress.common.LoadResult - >; - /** - * [descr:CustomStoreOptions.loadMode] - */ - loadMode?: 'processed' | 'raw'; - /** - * [descr:CustomStoreOptions.onLoaded] - */ - onLoaded?: ( - result: DevExpress.common.LoadResult, - loadOptions: LoadOptions - ) => void; - /** - * [descr:CustomStoreOptions.remove] - */ - remove?: (key: TKey) => PromiseLike; - /** - * [descr:CustomStoreOptions.totalCount] - */ - totalCount?: (loadOptions: { - filter?: FilterDescriptor | Array; - group?: GroupDescriptor | Array>; - }) => PromiseLike; - /** - * [descr:CustomStoreOptions.update] - */ - update?: (key: TKey, values: TItem) => PromiseLike; - /** - * [descr:CustomStoreOptions.useDefaultSearch] - */ - useDefaultSearch?: boolean | undefined; - } - /** - * [descr:DataSource] - */ - export class DataSource { - constructor(data: Array); - constructor( - options: - | DevExpress.data.CustomStore.Options - | DevExpress.data.DataSource.Options - ); - constructor(store: DevExpress.data.utils.Store); - constructor(url: string); - /** - * [descr:DataSource.cancel(operationId)] - */ - cancel(operationId: number): boolean; - /** - * [descr:DataSource.dispose()] - */ - dispose(): void; - /** - * [descr:DataSource.filter()] - */ - filter(): FilterDescriptor | Array; - /** - * [descr:DataSource.filter(filterExpr)] - */ - filter(filterExpr: FilterDescriptor | Array): void; - /** - * [descr:DataSource.group()] - */ - group(): GroupDescriptor | Array>; - /** - * [descr:DataSource.group(groupExpr)] - */ - group( - groupExpr: GroupDescriptor | Array> - ): void; - /** - * [descr:DataSource.isLastPage()] - */ - isLastPage(): boolean; - /** - * [descr:DataSource.isLoaded()] - */ - isLoaded(): boolean; - /** - * [descr:DataSource.isLoading()] - */ - isLoading(): boolean; - /** - * [descr:DataSource.items()] - */ - items(): Array; - /** - * [descr:DataSource.key()] - */ - key(): string | Array; - /** - * [descr:DataSource.load()] - */ - load(): DevExpress.core.utils.DxExtendedPromise; - /** - * [descr:DataSource.loadOptions()] - */ - loadOptions(): LoadOptions; - /** - * [descr:DataSource.off(eventName)] - */ - off(eventName: DevExpress.data.DataSource.EventName): this; - /** - * [descr:DataSource.off(eventName, eventHandler)] - */ - off( - eventName: DevExpress.data.DataSource.EventName, - eventHandler: Function - ): this; - /** - * [descr:DataSource.on(eventName, eventHandler)] - */ - on( - eventName: DevExpress.data.DataSource.EventName, - eventHandler: Function - ): this; - /** - * [descr:DataSource.on(events)] - */ - on( - events: { [key in DevExpress.data.DataSource.EventName]?: Function } - ): this; - /** - * [descr:DataSource.pageIndex()] - */ - pageIndex(): number; - /** - * [descr:DataSource.pageIndex(newIndex)] - */ - pageIndex(newIndex: number): void; - /** - * [descr:DataSource.pageSize()] - */ - pageSize(): number; - /** - * [descr:DataSource.pageSize(value)] - */ - pageSize(value: number): void; - /** - * [descr:DataSource.paginate()] - */ - paginate(): boolean; - /** - * [descr:DataSource.paginate(value)] - */ - paginate(value: boolean): void; - /** - * [descr:DataSource.reload()] - */ - reload(): DevExpress.core.utils.DxExtendedPromise; - /** - * [descr:DataSource.requireTotalCount()] - */ - requireTotalCount(): boolean; - /** - * [descr:DataSource.requireTotalCount(value)] - */ - requireTotalCount(value: boolean): void; - /** - * [descr:DataSource.searchExpr()] - */ - searchExpr(): string & Function & Array; - /** - * [descr:DataSource.searchExpr(expr)] - */ - searchExpr(expr: string | Function | Array): void; - /** - * [descr:DataSource.searchOperation()] - */ - searchOperation(): string; - /** - * [descr:DataSource.searchOperation(op)] - */ - searchOperation(op: string): void; - /** - * [descr:DataSource.searchValue()] - */ - searchValue(): any; - /** - * [descr:DataSource.searchValue(value)] - */ - searchValue(value: any): void; - /** - * [descr:DataSource.select()] - */ - select(): SelectDescriptor; - /** - * [descr:DataSource.select(expr)] - */ - select(expr: SelectDescriptor): void; - /** - * [descr:DataSource.sort()] - */ - sort(): SortDescriptor | Array>; - /** - * [descr:DataSource.sort(sortExpr)] - */ - sort(sortExpr: SortDescriptor | Array>): void; - /** - * [descr:DataSource.store()] - */ - store(): DevExpress.data.utils.Store; - /** - * [descr:DataSource.totalCount()] - */ - totalCount(): number; - } - module DataSource { - /** - * [descr:DataSourceLike] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export type DataSourceLike = - | string - | Array - | DevExpress.data.utils.Store - | DataSourceOptionsStub - | DataSource; - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - interface DataSourceOptionsStub< - TStoreItem = any, - TMappedItem = TStoreItem, - TItem = TMappedItem - > { - customQueryParams?: any; - expand?: Array | string; - filter?: FilterDescriptor | Array; - group?: GroupDescriptor | Array>; - map?: (dataItem: TStoreItem) => TMappedItem; - onChanged?: (e: { readonly changes?: Array }) => void; - onLoadError?: (error: { readonly message?: string }) => void; - onLoadingChanged?: (isLoading: boolean) => void; - pageSize?: number; - paginate?: boolean; - postProcess?: (data: Array) => Array; - pushAggregationTimeout?: number; - requireTotalCount?: boolean; - reshapeOnPush?: boolean; - searchExpr?: string | Function | Array; - searchOperation?: SearchOperation; - searchValue?: any; - select?: SelectDescriptor; - sort?: SortDescriptor | Array>; - store?: - | Array - | DevExpress.data.utils.Store - | DevExpress.data.utils.StoreOptions; - } - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - type EventName = 'changed' | 'loadError' | 'loadingChanged'; - export type Options< - TStoreItem = any, - TMappedItem = TStoreItem, - TItem = TMappedItem, - TKey = any - > = DataSourceOptions; - } + export type UserDefinedElement = + {} extends Condition ? T : ElementWrapper | T; + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type UserDefinedElementsArray = {} extends Condition + ? Array + : ElementsArrayWrapper; +} +declare module DevExpress.core.utils { + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type DxExtendedPromise = DxPromise & { + then( + onFulfilled?: + | (( + value: T, + extraParameters?: any + ) => TResult1 | PromiseLike) + | undefined + | null, + onRejected?: + | ((reason: any) => TResult2 | PromiseLike) + | undefined + | null + ): PromiseLike; + }; + /** + * [descr:DxPromise] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type DxPromise = {} extends PromiseType + ? Promise + : PromiseType; +} +declare module DevExpress.data { + /** + * [descr:DataSourceLike] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type DataSourceLike = + | string + | Array + | DevExpress.data.utils.Store + | DataSourceOptionsStub + | DevExpress.common.data.DataSource; /** - * [descr:DataSourceOptions] - * @deprecated [depNote:DataSourceOptions] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export interface DataSourceOptions< + export interface DataSourceOptionsStub< TStoreItem = any, TMappedItem = TStoreItem, - TItem = TMappedItem, - TKey = any + TItem = TMappedItem > { - /** - * [descr:DataSourceOptions.customQueryParams] - */ customQueryParams?: any; - /** - * [descr:DataSourceOptions.expand] - */ expand?: Array | string; - /** - * [descr:DataSourceOptions.filter] - */ - filter?: FilterDescriptor | Array; - /** - * [descr:DataSourceOptions.group] - */ - group?: GroupDescriptor | Array>; - /** - * [descr:DataSourceOptions.langParams] - */ - langParams?: LangParams; - /** - * [descr:DataSourceOptions.map] - */ + filter?: + | DevExpress.common.data.FilterDescriptor + | Array; + group?: + | DevExpress.common.data.GroupDescriptor + | Array>; map?: (dataItem: TStoreItem) => TMappedItem; - /** - * [descr:DataSourceOptions.onChanged] - */ onChanged?: (e: { readonly changes?: Array }) => void; - /** - * [descr:DataSourceOptions.onLoadError] - */ onLoadError?: (error: { readonly message?: string }) => void; - /** - * [descr:DataSourceOptions.onLoadingChanged] - */ onLoadingChanged?: (isLoading: boolean) => void; - /** - * [descr:DataSourceOptions.pageSize] - */ pageSize?: number; - /** - * [descr:DataSourceOptions.paginate] - */ - paginate?: boolean | undefined; - /** - * [descr:DataSourceOptions.postProcess] - */ + paginate?: boolean; postProcess?: (data: Array) => Array; - /** - * [descr:DataSourceOptions.pushAggregationTimeout] - */ - pushAggregationTimeout?: number | undefined; - /** - * [descr:DataSourceOptions.requireTotalCount] - */ + pushAggregationTimeout?: number; requireTotalCount?: boolean; - /** - * [descr:DataSourceOptions.reshapeOnPush] - */ reshapeOnPush?: boolean; - /** - * [descr:DataSourceOptions.searchExpr] - */ searchExpr?: string | Function | Array; - /** - * [descr:DataSourceOptions.searchOperation] - */ - searchOperation?: SearchOperation; - /** - * [descr:DataSourceOptions.searchValue] - */ + searchOperation?: DevExpress.common.data.SearchOperation; searchValue?: any; - /** - * [descr:DataSourceOptions.select] - */ - select?: SelectDescriptor; - /** - * [descr:DataSourceOptions.sort] - */ - sort?: SortDescriptor | Array>; - /** - * [descr:DataSourceOptions.store] - */ + select?: DevExpress.common.data.SelectDescriptor; + sort?: + | DevExpress.common.data.SortDescriptor + | Array>; store?: | Array - | DevExpress.data.utils.Store - | DevExpress.data.utils.StoreOptions; - } - /** - * [descr:EdmLiteral] - */ - export class EdmLiteral { - constructor(value: string); - /** - * [descr:EdmLiteral.valueOf()] - */ - valueOf(): string; + | DevExpress.data.utils.Store + | DevExpress.data.utils.StoreOptions; } - /** - * [descr:Utils.errorHandler] - * @deprecated [depNote:Utils.errorHandler] - */ - export function errorHandler(e: Error): void; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - type EventName = - | 'loaded' - | 'loading' - | 'inserted' - | 'inserting' - | 'updated' - | 'updating' - | 'push' - | 'removed' - | 'removing' - | 'modified' - | 'modifying'; - /** - * [descr:FilterDescriptor] - */ export type FilterDescriptor = any; /** - * [descr:GroupDescriptor] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type GroupDescriptor = | KeySelector @@ -5652,6 +6766,9 @@ declare module DevExpress.data { groupInterval?: number | GroupingInterval; isExpanded?: boolean; }); + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ export type GroupingInterval = | 'year' | 'quarter' @@ -5679,24 +6796,11 @@ declare module DevExpress.data { /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - type KeySelector = + export type KeySelector = | string | ((source: T) => string | number | Date | Object); /** - * [descr:LangParams] - */ - export type LangParams = { - /** - * [descr:LangParams.locale] - */ - locale: string; - /** - * [descr:LangParams.collatorOptions] - */ - collatorOptions?: Intl.CollatorOptions; - }; - /** - * [descr:LoadOptions] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export interface LoadOptions { /** @@ -5776,251 +6880,10 @@ declare module DevExpress.data { */ userData?: any; } - /** - * [descr:LocalStore] - */ - export class LocalStore extends ArrayStore< - TItem, - TKey - > { - constructor(options?: DevExpress.data.LocalStore.Options); - /** - * [descr:LocalStore.clear()] - */ - clear(): void; - } - module LocalStore { - export type Options = LocalStoreOptions< - TItem, - TKey - >; - } - /** - * [descr:LocalStoreOptions] - * @deprecated [depNote:LocalStoreOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface LocalStoreOptions - extends ArrayStoreOptions { - /** - * [descr:LocalStoreOptions.flushInterval] - */ - flushInterval?: number; - /** - * [descr:LocalStoreOptions.immediate] - */ - immediate?: boolean; - /** - * [descr:LocalStoreOptions.name] - */ - name?: string; - } - /** - * [descr:ODataContext] - */ - export class ODataContext { - constructor(options?: ODataContextOptions); - /** - * [descr:ODataContext.get(operationName, params)] - */ - get( - operationName: string, - params: any - ): DevExpress.core.utils.DxPromise; - /** - * [descr:ODataContext.invoke(operationName, params, httpMethod)] - */ - invoke( - operationName: string, - params: any, - httpMethod: DevExpress.data.ODataContext.HttpMethod - ): DevExpress.core.utils.DxPromise; - /** - * [descr:ODataContext.objectLink(entityAlias, key)] - */ - objectLink(entityAlias: string, key: any | string | number): any; - } - module ODataContext { - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - type HttpMethod = 'GET' | 'POST' | 'PATCH' | 'MERGE'; - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface ODataRequestOptions { - accepts: any; - async: boolean; - contentType: string | boolean; - data: any; - dataType: string; - headers: any; - jsonp?: boolean; - method: string; - timeout: number; - url: string; - xhrFields: any; - } - } - /** - * [descr:ODataContextOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface ODataContextOptions { - /** - * [descr:ODataContextOptions.beforeSend] - */ - beforeSend?: (options: { - url: string; - async: boolean; - method: string; - timeout: number; - params: any; - payload: any; - headers: any; - }) => void; - /** - * [descr:ODataContextOptions.deserializeDates] - */ - deserializeDates?: boolean; - /** - * [descr:ODataContextOptions.entities] - */ - entities?: any; - /** - * [descr:ODataContextOptions.errorHandler] - */ - errorHandler?: (e: { - httpStatus: number; - errorDetails: any; - requestOptions: DevExpress.data.ODataContext.ODataRequestOptions; - }) => void; - /** - * [descr:ODataContextOptions.filterToLower] - */ - filterToLower?: boolean; - /** - * [descr:ODataContextOptions.jsonp] - */ - jsonp?: boolean; - /** - * [descr:ODataContextOptions.url] - */ - url?: string; - /** - * [descr:ODataContextOptions.version] - */ - version?: number; - /** - * [descr:ODataContextOptions.withCredentials] - */ - withCredentials?: boolean; - } - /** - * [descr:ODataStore] - */ - export class ODataStore extends AbstractStore< - TItem, - TKey - > { - constructor(options?: DevExpress.data.ODataStore.Options); - /** - * [descr:ODataStore.byKey(key, extraOptions)] - */ - byKey( - key: TKey, - extraOptions?: { - expand?: string | Array; - select?: string | Array; - } - ): DevExpress.core.utils.DxPromise; - /** - * [descr:ODataStore.createQuery(loadOptions)] - */ - createQuery(loadOptions?: { - expand?: string | Array; - requireTotalCount?: boolean; - customQueryParams?: any; - }): Query; - } - module ODataStore { - export type Options = ODataStoreOptions< - TItem, - TKey - >; - } - /** - * [descr:ODataStoreOptions] - * @deprecated [depNote:ODataStoreOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface ODataStoreOptions - extends DevExpress.data.AbstractStore.Options { - /** - * [descr:ODataStoreOptions.beforeSend] - */ - beforeSend?: (options: { - url: string; - async: boolean; - method: string; - timeout: number; - params: any; - payload: any; - headers: any; - }) => void; - /** - * [descr:ODataStoreOptions.deserializeDates] - */ - deserializeDates?: boolean; - /** - * [descr:ODataStoreOptions.errorHandler] - */ - errorHandler?: (e: { - httpStatus: number; - errorDetails: any; - requestOptions: DevExpress.data.ODataContext.ODataRequestOptions; - }) => void; - /** - * [descr:ODataStoreOptions.fieldTypes] - */ - fieldTypes?: any; - /** - * [descr:ODataStoreOptions.filterToLower] - */ - filterToLower?: boolean; - /** - * [descr:ODataStoreOptions.jsonp] - */ - jsonp?: boolean; - /** - * [descr:ODataStoreOptions.keyType] - */ - keyType?: - | 'String' - | 'Int32' - | 'Int64' - | 'Guid' - | 'Boolean' - | 'Single' - | 'Decimal' - | any; - /** - * [descr:ODataStoreOptions.url] - */ - url?: string; - /** - * [descr:ODataStoreOptions.version] - */ - version?: number; - /** - * [descr:ODataStoreOptions.withCredentials] - */ - withCredentials?: boolean; - } /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - type OrderingDescriptor = SelectionDescriptor & { + export type OrderingDescriptor = SelectionDescriptor & { desc?: boolean; }; /** @@ -6045,7 +6908,7 @@ declare module DevExpress.data { dataIndex?: number; maxRowCount?: number; customColumns?: Array; - }): DataSource; + }): DevExpress.common.data.DataSource; /** * [descr:PivotGridDataSource.dispose()] */ @@ -6255,7 +7118,7 @@ declare module DevExpress.data { /** * [descr:PivotGridDataSourceOptions.fields.format] */ - format?: DevExpress.ui.Format; + format?: DevExpress.common.core.localization.Format; /** * [descr:PivotGridDataSourceOptions.fields.groupIndex] */ @@ -6344,190 +7207,88 @@ declare module DevExpress.data { /** * [descr:PivotGridDataSourceOptions.fields.summaryType] */ - summaryType?: DevExpress.common.grids.SummaryType | string; - /** - * [descr:PivotGridDataSourceOptions.fields.visible] - */ - visible?: boolean; - /** - * [descr:PivotGridDataSourceOptions.fields.width] - */ - width?: number; - /** - * [descr:PivotGridDataSourceOptions.fields.wordWrapEnabled] - */ - wordWrapEnabled?: boolean; - } - /** - * [descr:PivotGridDataSourceOptions] - * @deprecated [depNote:PivotGridDataSourceOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface PivotGridDataSourceOptions { - /** - * [descr:PivotGridDataSourceOptions.fields] - */ - fields?: Array; - /** - * [descr:PivotGridDataSourceOptions.filter] - */ - filter?: string | Array | Function; - /** - * [descr:PivotGridDataSourceOptions.onChanged] - */ - onChanged?: Function; - /** - * [descr:PivotGridDataSourceOptions.onFieldsPrepared] - */ - onFieldsPrepared?: ( - fields: Array - ) => void; - /** - * [descr:PivotGridDataSourceOptions.onLoadError] - */ - onLoadError?: (error: any) => void; - /** - * [descr:PivotGridDataSourceOptions.onLoadingChanged] - */ - onLoadingChanged?: (isLoading: boolean) => void; - /** - * [descr:PivotGridDataSourceOptions.paginate] - */ - paginate?: boolean; - /** - * [descr:PivotGridDataSourceOptions.remoteOperations] - */ - remoteOperations?: boolean; - /** - * [descr:PivotGridDataSourceOptions.retrieveFields] - */ - retrieveFields?: boolean; - /** - * [descr:PivotGridDataSourceOptions.store] - */ - store?: - | DevExpress.data.utils.Store - | DevExpress.data.utils.StoreOptions - | XmlaStore - | (XmlaStoreOptions & { type: 'xmla' }) - | Array<{ - /** - * [descr:PivotGridDataSourceOptions.store.type] - */ - type?: DevExpress.data.PivotGridDataSource.PivotGridStoreType; - }> - | { - /** - * [descr:PivotGridDataSourceOptions.store.type] - */ - type?: DevExpress.data.PivotGridDataSource.PivotGridStoreType; - }; - } - /** - * [descr:Utils.query(array, queryOptions)] - */ - export function query(array: Array, queryOptions?: any): Query; - /** - * [descr:Utils.query(url, queryOptions)] - */ - export function query(url: string, queryOptions: any): Query; - /** - * [descr:Query] - */ - export interface Query { - /** - * [descr:Query.aggregate(seed, step, finalize)] - */ - aggregate( - seed: any, - step: Function, - finalize: Function - ): DevExpress.core.utils.DxPromise; - /** - * [descr:Query.aggregate(step)] - */ - aggregate(step: Function): DevExpress.core.utils.DxPromise; - /** - * [descr:Query.avg()] - */ - avg(): DevExpress.core.utils.DxPromise; - /** - * [descr:Query.avg(getter)] - */ - avg(getter: any): DevExpress.core.utils.DxPromise; - /** - * [descr:Query.count()] - */ - count(): DevExpress.core.utils.DxPromise; - /** - * [descr:Query.enumerate()] - */ - enumerate(): DevExpress.core.utils.DxPromise; - /** - * [descr:Query.filter(criteria)] - */ - filter(criteria: Array): Query; - /** - * [descr:Query.filter(predicate)] - */ - filter(predicate: Function): Query; - /** - * [descr:Query.groupBy(getter)] - */ - groupBy(getter: any): Query; + summaryType?: DevExpress.common.grids.SummaryType | string; /** - * [descr:Query.max()] + * [descr:PivotGridDataSourceOptions.fields.visible] */ - max(): DevExpress.core.utils.DxPromise; + visible?: boolean; /** - * [descr:Query.max(getter)] + * [descr:PivotGridDataSourceOptions.fields.width] */ - max(getter: any): DevExpress.core.utils.DxPromise; + width?: number; /** - * [descr:Query.min()] + * [descr:PivotGridDataSourceOptions.fields.wordWrapEnabled] */ - min(): DevExpress.core.utils.DxPromise; + wordWrapEnabled?: boolean; + } + /** + * [descr:PivotGridDataSourceOptions] + * @deprecated [depNote:PivotGridDataSourceOptions] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export interface PivotGridDataSourceOptions { /** - * [descr:Query.min(getter)] + * [descr:PivotGridDataSourceOptions.fields] */ - min(getter: any): DevExpress.core.utils.DxPromise; + fields?: Array; /** - * [descr:Query.select(getter)] + * [descr:PivotGridDataSourceOptions.filter] */ - select(...getters: any[]): Query; + filter?: string | Array | Function; /** - * [descr:Query.slice(skip, take)] + * [descr:PivotGridDataSourceOptions.onChanged] */ - slice(skip: number, take?: number): Query; + onChanged?: Function; /** - * [descr:Query.sortBy(getter)] + * [descr:PivotGridDataSourceOptions.onFieldsPrepared] */ - sortBy(getter: any): Query; + onFieldsPrepared?: ( + fields: Array + ) => void; /** - * [descr:Query.sortBy(getter, desc)] + * [descr:PivotGridDataSourceOptions.onLoadError] */ - sortBy(getter: any, desc: boolean): Query; + onLoadError?: (error: any) => void; /** - * [descr:Query.sum()] + * [descr:PivotGridDataSourceOptions.onLoadingChanged] */ - sum(): DevExpress.core.utils.DxPromise; + onLoadingChanged?: (isLoading: boolean) => void; /** - * [descr:Query.sum(getter)] + * [descr:PivotGridDataSourceOptions.paginate] */ - sum(getter: any): DevExpress.core.utils.DxPromise; + paginate?: boolean; /** - * [descr:Query.thenBy(getter)] + * [descr:PivotGridDataSourceOptions.remoteOperations] */ - thenBy(getter: any): Query; + remoteOperations?: boolean; /** - * [descr:Query.thenBy(getter, desc)] + * [descr:PivotGridDataSourceOptions.retrieveFields] */ - thenBy(getter: any, desc: boolean): Query; + retrieveFields?: boolean; /** - * [descr:Query.toArray()] + * [descr:PivotGridDataSourceOptions.store] */ - toArray(): Array; + store?: + | DevExpress.data.utils.Store + | DevExpress.data.utils.StoreOptions + | XmlaStore + | (XmlaStoreOptions & { type: 'xmla' }) + | Array<{ + /** + * [descr:PivotGridDataSourceOptions.store.type] + */ + type?: DevExpress.data.PivotGridDataSource.PivotGridStoreType; + }> + | { + /** + * [descr:PivotGridDataSourceOptions.store.type] + */ + type?: DevExpress.data.PivotGridDataSource.PivotGridStoreType; + }; } + /** + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ export type SearchOperation = | '=' | '<>' @@ -6540,7 +7301,7 @@ declare module DevExpress.data { | 'contains' | 'notcontains'; /** - * [descr:SelectDescriptor] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type SelectDescriptor = | string @@ -6549,83 +7310,30 @@ declare module DevExpress.data { /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - type SelectionDescriptor = { + export type SelectionDescriptor = { selector: KeySelector; }; /** - * [descr:Utils.setErrorHandler] - */ - export function setErrorHandler(handler: (e: Error) => void): void; - /** - * [descr:SortDescriptor] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type SortDescriptor = KeySelector | OrderingDescriptor; /** - * [descr:Store] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export class Store { - constructor(options?: DevExpress.data.Store.Options); - /** - * [descr:Store.insert(values)] - */ - insert(values: TItem): DevExpress.core.utils.DxExtendedPromise; - /** - * [descr:Store.key()] - */ - key(): string | Array; - /** - * [descr:Store.keyOf(obj)] - */ - keyOf(obj: TItem): TKey; - /** - * [descr:Store.off(eventName)] - */ - off(eventName: EventName): this; - /** - * [descr:Store.off(eventName, eventHandler)] - */ - off(eventName: EventName, eventHandler: Function): this; - /** - * [descr:Store.on(eventName, eventHandler)] - */ - on(eventName: EventName, eventHandler: Function): this; - /** - * [descr:Store.on(events)] - */ - on(events: { [key in EventName]?: Function }): this; - /** - * [descr:Store.push(changes)] - */ - push( - changes: Array<{ - type: 'insert' | 'update' | 'remove'; - data?: DevExpress.core.DeepPartial; - key?: TKey; - index?: number; - }> - ): void; - /** - * [descr:Store.remove(key)] - */ - remove(key: TKey): DevExpress.core.utils.DxPromise; - /** - * [descr:Store.totalCount(options)] - */ - totalCount(obj: { - filter?: FilterDescriptor | Array; - group?: GroupDescriptor | Array>; - }): DevExpress.core.utils.DxPromise; - /** - * [descr:Store.update(key, values)] - */ - update( - key: TKey, - values: DevExpress.core.DeepPartial - ): DevExpress.core.utils.DxExtendedPromise; - } + type StoreEventName = + | 'loaded' + | 'loading' + | 'inserted' + | 'inserting' + | 'updated' + | 'updating' + | 'push' + | 'removed' + | 'removing' + | 'modified' + | 'modifying'; /** - * [descr:SummaryDescriptor] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type SummaryDescriptor = | KeySelector @@ -6668,135 +7376,64 @@ declare module DevExpress.data { url?: string; } } -declare module DevExpress.data.PivotGridDataSource { +declare module DevExpress.data.ArrayStore { /** - * [descr:PivotGridDataSourceOptions.fields] + * @deprecated Use DevExpress.common.data.ArrayStoreOptions from /common/data instead */ - export type Field = PivotGridDataSourceField; + export type Options< + TItem = any, + TKey = any + > = DevExpress.common.data.ArrayStoreOptions; } -declare module DevExpress.data.Store { +declare module DevExpress.data.CustomStore { /** - * [descr:StoreOptions] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + * @deprecated Use DevExpress.common.data.CustomStoreOptions from /common/data instead */ - export type Options = { - /** - * [descr:StoreOptions.errorHandler] - */ - errorHandler?: Function; - /** - * [descr:StoreOptions.key] - */ - key?: string | Array; - /** - * [descr:StoreOptions.onInserted] - */ - onInserted?: (values: TItem, key: TKey) => void; - /** - * [descr:StoreOptions.onInserting] - */ - onInserting?: (values: TItem) => void; - /** - * [descr:StoreOptions.onLoading] - */ - onLoading?: (loadOptions: LoadOptions) => void; - /** - * [descr:StoreOptions.onModified] - */ - onModified?: Function; - /** - * [descr:StoreOptions.onModifying] - */ - onModifying?: Function; - /** - * [descr:StoreOptions.onPush] - */ - onPush?: (changes: Array) => void; - /** - * [descr:StoreOptions.onRemoved] - */ - onRemoved?: (key: TKey) => void; - /** - * [descr:StoreOptions.onRemoving] - */ - onRemoving?: (key: TKey) => void; - /** - * [descr:StoreOptions.onUpdated] - */ - onUpdated?: (key: TKey, values: TItem) => void; - /** - * [descr:StoreOptions.onUpdating] - */ - onUpdating?: (key: TKey, values: TItem) => void; - }; + export type Options< + TItem = any, + TKey = any + > = DevExpress.common.data.CustomStoreOptions; } -declare module DevExpress.data.utils { +declare module DevExpress.data.LocalStore { /** - * [descr:Utils.compileGetter(expr)] + * @deprecated Use DevExpress.common.data.LocalStoreOptions from /common/data instead */ - export function compileGetter(expr: string | Array): Function; + export type Options< + TItem = any, + TKey = any + > = DevExpress.common.data.LocalStoreOptions; +} +declare module DevExpress.data.ODataStore { + export type Options< + TItem = any, + TKey = any + > = DevExpress.common.data.ODataStoreOptions; +} +declare module DevExpress.data.PivotGridDataSource { /** - * [descr:Utils.compileSetter(expr)] + * [descr:PivotGridDataSourceOptions.fields] */ - export function compileSetter(expr: string | Array): Function; + export type Field = PivotGridDataSourceField; +} +declare module DevExpress.data.utils { export type Store = - | CustomStore - | ArrayStore - | LocalStore - | ODataStore; + | DevExpress.common.data.CustomStore + | DevExpress.common.data.ArrayStore + | DevExpress.common.data.LocalStore + | DevExpress.common.data.ODataStore; export type StoreOptions = - | DevExpress.data.CustomStore.Options - | (DevExpress.data.ArrayStore.Options & { type: 'array' }) - | (DevExpress.data.LocalStore.Options & { type: 'local' }) - | (DevExpress.data.ODataStore.Options & { type: 'odata' }); -} -declare module DevExpress.data.utils.odata { - /** - * [descr:Utils.keyConverters] - */ - export var keyConverters: any; + | DevExpress.common.data.CustomStoreOptions + | (DevExpress.common.data.ArrayStoreOptions & { + type: 'array'; + }) + | (DevExpress.common.data.LocalStoreOptions & { + type: 'local'; + }) + | (DevExpress.common.data.ODataStoreOptions & { + type: 'odata'; + }); } declare module DevExpress.events { - /** - * [descr:AsyncCancelable] - */ - export type AsyncCancelable = { - /** - * [descr:AsyncCancelable.cancel] - */ - cancel: boolean | PromiseLike; - }; - /** - * [descr:Cancelable] - */ - export interface Cancelable { - /** - * [descr:Cancelable.cancel] - */ - cancel?: boolean; - } - /** - * [descr:ChangedOptionInfo] - */ - export interface ChangedOptionInfo { - /** - * [descr:ChangedOptionInfo.name] - */ - readonly name: string; - /** - * [descr:ChangedOptionInfo.fullName] - */ - readonly fullName: string; - /** - * [descr:ChangedOptionInfo.value] - */ - readonly value?: any; - /** - * [descr:ChangedOptionInfo.previousValue] - */ - readonly previousValue?: any; - } - /** * [descr:DxEvent] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -6811,24 +7448,7 @@ declare module DevExpress.events { */ export type event = DxEvent; /** - * [descr:EventInfo] - */ - export interface EventInfo { - /** - * [descr:EventInfo.component] - */ - readonly component: TComponent; - /** - * [descr:EventInfo.element] - */ - readonly element: DevExpress.core.DxElement; - /** - * [descr:EventInfo.model] - */ - readonly model?: any; - } - /** - * [descr:EventObject] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type EventObject = { /** @@ -6884,186 +7504,6 @@ declare module DevExpress.events { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export interface EventType {} - /** - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - interface EventType extends JQueryEventObject { - cancel?: boolean; - } - /** - * [descr:InitializedEventInfo] - */ - export interface InitializedEventInfo { - /** - * [descr:InitializedEventInfo.component] - */ - readonly component?: TComponent; - /** - * [descr:InitializedEventInfo.element] - */ - readonly element?: DevExpress.core.DxElement; - } - /** - * [descr:ItemInfo] - */ - export interface ItemInfo { - /** - * [descr:ItemInfo.itemData] - */ - readonly itemData?: TItemData; - /** - * [descr:ItemInfo.itemElement] - */ - readonly itemElement: DevExpress.core.DxElement; - /** - * [descr:ItemInfo.itemIndex] - */ - readonly itemIndex: number; - } - /** - * [descr:NativeEventInfo] - */ - export interface NativeEventInfo { - /** - * [descr:NativeEventInfo.component] - */ - readonly component: TComponent; - /** - * [descr:NativeEventInfo.element] - */ - readonly element: DevExpress.core.DxElement; - /** - * [descr:NativeEventInfo.model] - */ - readonly model?: any; - /** - * [descr:NativeEventInfo.event] - */ - readonly event?: DxEvent; - } - /** - * [descr:events.off(element)] - */ - export function off(element: Element | Array): void; - /** - * [descr:events.off(element, eventName)] - */ - export function off( - element: Element | Array, - eventName: string - ): void; - /** - * [descr:events.off(element, eventName, handler)] - */ - export function off( - element: Element | Array, - eventName: string, - handler: Function - ): void; - /** - * [descr:events.off(element, eventName, selector)] - */ - export function off( - element: Element | Array, - eventName: string, - selector: string - ): void; - /** - * [descr:events.off(element, eventName, selector, handler)] - */ - export function off( - element: Element | Array, - eventName: string, - selector: string, - handler: Function - ): void; - /** - * [descr:events.on(element, eventName, data, handler)] - */ - export function on( - element: Element | Array, - eventName: string, - data: any, - handler: Function - ): void; - /** - * [descr:events.on(element, eventName, handler)] - */ - export function on( - element: Element | Array, - eventName: string, - handler: Function - ): void; - /** - * [descr:events.on(element, eventName, selector, data, handler)] - */ - export function on( - element: Element | Array, - eventName: string, - selector: string, - data: any, - handler: Function - ): void; - /** - * [descr:events.on(element, eventName, selector, handler)] - */ - export function on( - element: Element | Array, - eventName: string, - selector: string, - handler: Function - ): void; - /** - * [descr:events.one(element, eventName, data, handler)] - */ - export function one( - element: Element | Array, - eventName: string, - data: any, - handler: Function - ): void; - /** - * [descr:events.one(element, eventName, handler)] - */ - export function one( - element: Element | Array, - eventName: string, - handler: Function - ): void; - /** - * [descr:events.one(element, eventName, selector, data, handler)] - */ - export function one( - element: Element | Array, - eventName: string, - selector: string, - data: any, - handler: Function - ): void; - /** - * [descr:events.one(element, eventName, selector, handler)] - */ - export function one( - element: Element | Array, - eventName: string, - selector: string, - handler: Function - ): void; - /** - * [descr:events.trigger(element, event)] - */ - export function trigger( - element: Element | Array, - event: string | DxEvent - ): void; - /** - * [descr:events.trigger(element, event, extraParameters)] - */ - export function trigger( - element: Element | Array, - event: string | DxEvent, - extraParameters: any - ): void; /** * [descr:events.triggerHandler(element, event)] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -7111,7 +7551,6 @@ declare module DevExpress.excelExporter { */ to?: CellAddress; } - export type DataGridCell = ExcelDataGridCell; /** * @deprecated Use DataGridCell instead * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -7156,96 +7595,31 @@ declare module DevExpress.excelExporter { value?: any; } /** - * [descr:ExcelExportBaseProps] + * [descr:ExcelExportBaseOptions] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export interface ExcelExportBaseProps { + export interface ExcelExportBaseOptions { /** - * [descr:ExcelExportBaseProps.worksheet] + * [descr:ExcelExportBaseOptions.worksheet] */ worksheet?: object | undefined; /** - * [descr:ExcelExportBaseProps.topLeftCell] + * [descr:ExcelExportBaseOptions.topLeftCell] */ topLeftCell?: CellAddress | string; /** - * [descr:ExcelExportBaseProps.keepColumnWidths] + * [descr:ExcelExportBaseOptions.keepColumnWidths] */ keepColumnWidths?: boolean; /** - * [descr:ExcelExportBaseProps.loadPanel] + * [descr:ExcelExportBaseOptions.loadPanel] */ loadPanel?: ExportLoadPanel; /** - * [descr:ExcelExportBaseProps.encodeExecutableContent] + * [descr:ExcelExportBaseOptions.encodeExecutableContent] */ encodeExecutableContent?: boolean; } - /** - * [descr:ExcelExportDataGridProps] - */ - export interface ExcelExportDataGridProps extends ExcelExportBaseProps { - /** - * [descr:ExcelExportDataGridProps.component] - */ - component?: DevExpress.ui.dxDataGrid | undefined; - /** - * [descr:ExcelExportDataGridProps.selectedRowsOnly] - */ - selectedRowsOnly?: boolean; - /** - * [descr:ExcelExportDataGridProps.autoFilterEnabled] - */ - autoFilterEnabled?: boolean; - /** - * [descr:ExcelExportDataGridProps.customizeCell] - */ - customizeCell?: (options: { - gridCell?: DataGridCell; - excelCell?: any; - }) => void; - } - /** - * [descr:ExcelExportPivotGridProps] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface ExcelExportPivotGridProps extends ExcelExportBaseProps { - /** - * [descr:ExcelExportPivotGridProps.component] - */ - component?: DevExpress.ui.dxPivotGrid | undefined; - /** - * [descr:ExcelExportPivotGridProps.mergeRowFieldValues] - */ - mergeRowFieldValues?: boolean; - /** - * [descr:ExcelExportPivotGridProps.mergeColumnFieldValues] - */ - mergeColumnFieldValues?: boolean; - /** - * [descr:ExcelExportPivotGridProps.exportFilterFieldHeaders] - */ - exportFilterFieldHeaders?: boolean; - /** - * [descr:ExcelExportPivotGridProps.exportDataFieldHeaders] - */ - exportDataFieldHeaders?: boolean; - /** - * [descr:ExcelExportPivotGridProps.exportColumnFieldHeaders] - */ - exportColumnFieldHeaders?: boolean; - /** - * [descr:ExcelExportPivotGridProps.exportRowFieldHeaders] - */ - exportRowFieldHeaders?: boolean; - /** - * [descr:ExcelExportPivotGridProps.customizeCell] - */ - customizeCell?: (options: { - pivotCell?: PivotGridCell; - excelCell?: any; - }) => void; - } /** * @deprecated Use PivotGridCell instead * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -7268,19 +7642,6 @@ declare module DevExpress.excelExporter { */ headerType?: 'column' | 'row' | 'data' | 'filter'; } - /** - * [descr:excelExporter.exportDataGrid(options)] - */ - export function exportDataGrid( - options: ExcelExportDataGridProps - ): DevExpress.core.utils.DxPromise; - /** - * [descr:excelExporter.exportPivotGrid(options)] - */ - export function exportPivotGrid( - options: ExcelExportPivotGridProps - ): DevExpress.core.utils.DxPromise; - export type PivotGridCell = ExcelPivotGridCell; } declare module DevExpress.fileManagement { /** @@ -7679,295 +8040,13 @@ declare module DevExpress.fileManagement { chunkIndex: number; } } -declare module DevExpress.localization { - /** - * [descr:localization.formatDate(value, format)] - */ - export function formatDate(value: Date, format: DevExpress.ui.Format): string; - /** - * [descr:localization.formatMessage(key, value)] - */ - export function formatMessage(key: string, ...values: Array): string; - /** - * [descr:localization.formatNumber(value, format)] - */ - export function formatNumber( - value: number, - format: DevExpress.ui.Format - ): string; - /** - * [descr:localization.loadMessages(messages)] - */ - export function loadMessages(messages: any): void; - /** - * [descr:localization.locale()] - */ - export function locale(): string; - /** - * [descr:localization.locale(locale)] - */ - export function locale(locale: string): void; - /** - * [descr:localization.parseDate(text, format)] - */ - export function parseDate(text: string, format: DevExpress.ui.Format): Date; - /** - * [descr:localization.parseNumber(text, format)] - */ - export function parseNumber( - text: string, - format: DevExpress.ui.Format - ): number; -} declare module DevExpress.pdfExporter { - /** - * [descr:PdfCell] - */ - export interface Cell { - /** - * [descr:PdfCell.backgroundColor] - */ - backgroundColor?: string; - /** - * [descr:PdfCell.borderColor] - */ - borderColor?: string; - /** - * [descr:PdfCell.borderWidth] - */ - borderWidth?: number; - /** - * [descr:PdfCell.drawLeftBorder] - */ - drawLeftBorder?: boolean; - /** - * [descr:PdfCell.drawTopBorder] - */ - drawTopBorder?: boolean; - /** - * [descr:PdfCell.drawRightBorder] - */ - drawRightBorder?: boolean; - /** - * [descr:PdfCell.drawBottomBorder] - */ - drawBottomBorder?: boolean; - /** - * [descr:PdfCell.font] - */ - font?: { - /** - * [descr:PdfCell.font.size] - */ - size?: number; - /** - * [descr:PdfCell.font.name] - */ - name?: string; - /** - * [descr:PdfCell.font.style] - */ - style?: 'normal' | 'bold' | 'italic'; - }; - /** - * [descr:PdfCell.horizontalAlign] - */ - horizontalAlign?: 'left' | 'center' | 'right'; - /** - * [descr:PdfCell.padding] - */ - padding?: { - /** - * [descr:PdfCell.padding.top] - */ - top?: number; - /** - * [descr:PdfCell.padding.left] - */ - left?: number; - /** - * [descr:PdfCell.padding.right] - */ - right?: number; - /** - * [descr:PdfCell.padding.bottom] - */ - bottom?: number; - }; - /** - * [descr:PdfCell.text] - */ - text?: string; - /** - * [descr:PdfCell.textColor] - */ - textColor?: string; - /** - * [descr:PdfCell.verticalAlign] - */ - verticalAlign?: 'top' | 'middle' | 'bottom'; - /** - * [descr:PdfCell.wordWrapEnabled] - */ - wordWrapEnabled?: boolean; - } - export type DataGridCell = PdfDataGridCell; - /** - * [descr:pdfExporter.exportDataGrid(options)] - */ - export function exportDataGrid( - options: PdfExportDataGridProps - ): DevExpress.core.utils.DxPromise; - /** - * [descr:pdfExporter.exportGantt(options)] - */ - export function exportGantt( - options: PdfExportGanttProps - ): DevExpress.core.utils.DxPromise; /** * @deprecated Use DataGridCell instead * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export interface PdfDataGridCell - extends DevExpress.excelExporter.DataGridCell {} - /** - * [descr:PdfExportDataGridProps] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface PdfExportDataGridProps { - /** - * [descr:PdfExportDataGridProps.jsPDFDocument] - */ - jsPDFDocument?: object | undefined; - /** - * [descr:PdfExportDataGridProps.component] - */ - component?: DevExpress.ui.dxDataGrid | undefined; - /** - * [descr:PdfExportDataGridProps.topLeft] - */ - topLeft?: { - /** - * [descr:PdfExportDataGridProps.topLeft.x] - */ - x?: number; - /** - * [descr:PdfExportDataGridProps.topLeft.y] - */ - y?: number; - }; - /** - * [descr:PdfExportDataGridProps.columnWidths] - */ - columnWidths?: Array | undefined; - /** - * [descr:PdfExportDataGridProps.indent] - */ - indent?: number; - /** - * [descr:PdfExportDataGridProps.margin] - */ - margin?: { - /** - * [descr:PdfExportDataGridProps.margin.top] - */ - top?: number; - /** - * [descr:PdfExportDataGridProps.margin.left] - */ - left?: number; - /** - * [descr:PdfExportDataGridProps.margin.right] - */ - right?: number; - /** - * [descr:PdfExportDataGridProps.margin.bottom] - */ - bottom?: number; - }; - /** - * [descr:PdfExportDataGridProps.repeatHeaders] - */ - repeatHeaders?: boolean; - /** - * [descr:PdfExportDataGridProps.selectedRowsOnly] - */ - selectedRowsOnly?: boolean; - /** - * [descr:PdfExportDataGridProps.customDrawCell] - */ - customDrawCell?: (options: { - gridCell?: DataGridCell; - pdfCell?: Cell; - doc?: any; - rect?: { x: number; y: number; h: number; w: number }; - cancel?: boolean; - }) => void; - /** - * [descr:PdfExportDataGridProps.customizeCell] - */ - customizeCell?: (options: { - gridCell?: DataGridCell; - pdfCell?: Cell; - }) => void; - /** - * [descr:PdfExportDataGridProps.onRowExporting] - */ - onRowExporting?: (options: { - rowCells?: Array; - rowHeight?: number; - }) => void; - /** - * [descr:PdfExportDataGridProps.loadPanel] - */ - loadPanel?: ExportLoadPanel; - } - /** - * [descr:PdfExportGanttProps] - * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. - */ - export interface PdfExportGanttProps { - /** - * [descr:PdfExportGanttProps.createDocumentMethod] - */ - createDocumentMethod?: (options: any) => object; - /** - * [descr:PdfExportGanttProps.jsPDFDocument] - */ - jsPDFDocument?: object | undefined; - /** - * [descr:PdfExportGanttProps.component] - */ - component?: DevExpress.ui.dxGantt | undefined; - /** - * [descr:PdfExportGanttProps.format] - */ - format?: string | object | undefined; - /** - * [descr:PdfExportGanttProps.landscape] - */ - landscape?: boolean; - /** - * [descr:PdfExportGanttProps.fileName] - */ - fileName?: string | undefined; - /** - * [descr:PdfExportGanttProps.margins] - */ - margins?: object | undefined; - /** - * [descr:PdfExportGanttProps.exportMode] - */ - exportMode?: DevExpress.ui.dxGantt.GanttPdfExportMode; - /** - * [descr:PdfExportGanttProps.dateRange] - */ - dateRange?: DevExpress.ui.dxGantt.GanttPdfExportDateRange | object; - /** - * [descr:PdfExportGanttProps.font] - */ - font?: PdfExportGanttFont; - } + extends DevExpress.common.Export.excel.DataGridCell {} } declare module DevExpress.ui { /** @@ -8005,7 +8084,7 @@ declare module DevExpress.ui { TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any > extends Widget { - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } module CollectionWidget { /** @@ -8030,8 +8109,8 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type SelectionChangingEventBase = - DevExpress.events.AsyncCancelable & - DevExpress.events.EventInfo & + DevExpress.common.core.events.AsyncCancelable & + DevExpress.common.core.events.EventInfo & SelectionChangeInfo; } /** @@ -8051,7 +8130,7 @@ declare module DevExpress.ui { * [descr:CollectionWidgetItem.template] */ template?: - | DevExpress.core.template + | template | (( itemData: this, itemIndex: number, @@ -8078,7 +8157,7 @@ declare module DevExpress.ui { /** * [descr:CollectionWidgetOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:CollectionWidgetOptions.itemHoldTimeout] */ @@ -8087,7 +8166,7 @@ declare module DevExpress.ui { * [descr:CollectionWidgetOptions.itemTemplate] */ itemTemplate?: - | DevExpress.core.template + | template | (( itemData: TItem, itemIndex: number, @@ -8110,39 +8189,39 @@ declare module DevExpress.ui { */ onItemClick?: | (( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< TComponent, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo + DevExpress.common.core.events.ItemInfo ) => void) | string; /** * [descr:CollectionWidgetOptions.onItemContextMenu] */ onItemContextMenu?: ( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< TComponent, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo + DevExpress.common.core.events.ItemInfo ) => void; /** * [descr:CollectionWidgetOptions.onItemHold] */ onItemHold?: ( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< TComponent, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo + DevExpress.common.core.events.ItemInfo ) => void; /** * [descr:CollectionWidgetOptions.onItemRendered] */ onItemRendered?: ( - e: DevExpress.events.EventInfo & - DevExpress.events.ItemInfo + e: DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ItemInfo ) => void; /** * [descr:CollectionWidgetOptions.onSelectionChanging] @@ -8154,7 +8233,7 @@ declare module DevExpress.ui { * [descr:CollectionWidgetOptions.onSelectionChanged] */ onSelectionChanged?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.ui.CollectionWidget.SelectionChangeInfo ) => void; /** @@ -8188,7 +8267,7 @@ declare module DevExpress.ui { */ export class DataExpressionMixin { constructor(options?: DataExpressionMixinOptions); - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } /** * [descr:DataExpressionMixinOptions] @@ -8198,7 +8277,7 @@ declare module DevExpress.ui { /** * [descr:DataExpressionMixinOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike< + dataSource?: DevExpress.data.DataSourceLike< CollectionWidgetItem | any > | null; /** @@ -8209,7 +8288,7 @@ declare module DevExpress.ui { * [descr:DataExpressionMixinOptions.itemTemplate] */ itemTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -8269,7 +8348,7 @@ declare module DevExpress.ui { /** * [descr:DateBoxBaseOptions.displayFormat] */ - displayFormat?: Format; + displayFormat?: DevExpress.common.core.localization.Format; /** * [descr:DateBoxBaseOptions.max] */ @@ -8392,14 +8471,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_accordion_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -8419,40 +8498,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxAccordion + >; /** * [descr:_ui_accordion_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxAccordion, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_accordion_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxAccordion, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_accordion_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxAccordion, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -8463,27 +8544,27 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_accordion_ItemTitleClickEvent] */ export type ItemTitleClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxAccordion, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_accordion_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -8494,7 +8575,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.ui.CollectionWidget.SelectionChangeInfo; } /** @@ -8514,7 +8595,7 @@ declare module DevExpress.ui { * [descr:dxAccordionItem.titleTemplate] */ titleTemplate?: - | DevExpress.core.template + | template | (() => string | DevExpress.core.UserDefinedElement); } /** @@ -8536,7 +8617,7 @@ declare module DevExpress.ui { /** * [descr:dxAccordionOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxAccordionOptions.deferRendering] */ @@ -8557,7 +8638,7 @@ declare module DevExpress.ui { * [descr:dxAccordionOptions.itemTemplate] */ itemTemplate?: - | DevExpress.core.template + | template | (( itemData: TItem, itemIndex: number, @@ -8567,7 +8648,7 @@ declare module DevExpress.ui { * [descr:dxAccordionOptions.itemTitleTemplate] */ itemTitleTemplate?: - | DevExpress.core.template + | template | (( itemData: TItem, itemIndex: number, @@ -8625,22 +8706,22 @@ declare module DevExpress.ui { export type CancelClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_action_sheet_ContentReadyEvent] */ export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_action_sheet_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes, TKey> = { Properties: Properties; CancelClickEvent: CancelClickEvent; @@ -8659,40 +8740,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxActionSheet + >; /** * [descr:_ui_action_sheet_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxActionSheet, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_action_sheet_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxActionSheet, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_action_sheet_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxActionSheet, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -8703,16 +8786,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_action_sheet_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -8732,7 +8815,7 @@ declare module DevExpress.ui { */ onClick?: | (( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< dxActionSheet, MouseEvent | PointerEvent > @@ -8762,7 +8845,7 @@ declare module DevExpress.ui { /** * [descr:dxActionSheetOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxActionSheetOptions.items] */ @@ -8811,56 +8894,59 @@ declare module DevExpress.ui { /** * [descr:_ui_autocomplete_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, Event >; /** * [descr:_ui_autocomplete_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_autocomplete_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_autocomplete_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, ClipboardEvent >; /** * [descr:_ui_autocomplete_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, ClipboardEvent >; /** * [descr:_ui_autocomplete_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_autocomplete_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, KeyboardEvent >; /** * [descr:_ui_autocomplete_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, FocusEvent >; /** * [descr:_ui_autocomplete_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, FocusEvent >; @@ -8868,54 +8954,55 @@ declare module DevExpress.ui { * [descr:_ui_autocomplete_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_autocomplete_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_autocomplete_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< + export type ItemClickEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_autocomplete_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, KeyboardEvent >; /** * [descr:_ui_autocomplete_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, KeyboardEvent >; /** * [descr:_ui_autocomplete_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_autocomplete_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_autocomplete_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxAutocomplete, ClipboardEvent >; @@ -8924,16 +9011,17 @@ declare module DevExpress.ui { * [descr:_ui_autocomplete_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.ui.dxDropDownList.SelectionChangedInfo; /** * [descr:_ui_autocomplete_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxAutocomplete, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxAutocomplete, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxAutocompleteOptions] @@ -8979,7 +9067,7 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type CrosswiseDistribution = 'center' | 'end' | 'start' | 'stretch'; /** * [descr:_ui_box_DisposingEvent] @@ -8987,7 +9075,7 @@ declare module DevExpress.ui { export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type Distribution = | 'center' | 'end' @@ -9011,40 +9099,40 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo>; /** * [descr:_ui_box_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxBox, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_box_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxBox, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_box_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxBox, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -9055,16 +9143,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_box_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -9111,7 +9199,7 @@ declare module DevExpress.ui { /** * [descr:dxBoxOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxBoxOptions.direction] */ @@ -9129,7 +9217,7 @@ declare module DevExpress.ui { /** * [descr:_ui_button_ClickEvent] */ - export type ClickEvent = DevExpress.events.NativeEventInfo< + export type ClickEvent = DevExpress.common.core.events.NativeEventInfo< dxButton, KeyboardEvent | MouseEvent | PointerEvent > & { @@ -9141,21 +9229,24 @@ declare module DevExpress.ui { /** * [descr:_ui_button_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_button_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_button_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_button_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxButtonOptions; export type TemplateData = { readonly text?: string; @@ -9170,36 +9261,38 @@ declare module DevExpress.ui { /** * [descr:_ui_button_group_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_button_group_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_button_group_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_button_group_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< + export type ItemClickEvent = DevExpress.common.core.events.NativeEventInfo< dxButtonGroup, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_button_group_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxButtonGroupOptions; /** * [descr:_ui_button_group_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.ui.CollectionWidget.SelectionChangeInfo; } /** @@ -9235,7 +9328,7 @@ declare module DevExpress.ui { * [descr:dxButtonGroupOptions.buttonTemplate] */ buttonTemplate?: - | DevExpress.core.template + | template | (( buttonData: any, buttonContent: DevExpress.core.DxElement @@ -9317,7 +9410,7 @@ declare module DevExpress.ui { * [descr:dxButtonOptions.template] */ template?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxButton.TemplateData, contentElement: DevExpress.core.DxElement @@ -9366,7 +9459,8 @@ declare module DevExpress.ui { readonly date: Date; readonly view: string; } - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:DisabledDate] */ @@ -9374,26 +9468,29 @@ declare module DevExpress.ui { /** * [descr:_ui_calendar_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_calendar_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_calendar_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxCalendarOptions; /** * [descr:_ui_calendar_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxCalendar, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxCalendar, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; export type WeekNumberRule = | 'auto' | 'firstDay' @@ -9414,7 +9511,7 @@ declare module DevExpress.ui { * [descr:dxCalendarOptions.cellTemplate] */ cellTemplate?: - | DevExpress.core.template + | template | (( itemData: DevExpress.ui.dxCalendar.CellTemplateData, itemIndex: number, @@ -9500,13 +9597,14 @@ declare module DevExpress.ui { */ renderMessage(message: DevExpress.ui.dxChat.Message): void; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } module dxChat { /** * [descr:_ui_chat_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type ExplicitTypes = { Properties: Properties; DisposingEvent: DisposingEvent; @@ -9517,19 +9615,20 @@ declare module DevExpress.ui { * [descr:_ui_chat_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_chat_MessageEnteredEvent] */ - export type MessageEnteredEvent = DevExpress.events.NativeEventInfo< - dxChat, - KeyboardEvent | PointerEvent | MouseEvent | TouchEvent - > & { - /** - * [descr:_ui_chat_MessageEnteredEvent.message] - */ - readonly message?: Message; - }; + export type MessageEnteredEvent = + DevExpress.common.core.events.NativeEventInfo< + dxChat, + KeyboardEvent | PointerEvent | MouseEvent | TouchEvent + > & { + /** + * [descr:_ui_chat_MessageEnteredEvent.message] + */ + readonly message?: Message; + }; export type MessageTemplateData = { readonly component: dxChat; readonly message?: Message; @@ -9537,30 +9636,33 @@ declare module DevExpress.ui { /** * [descr:_ui_chat_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxChatOptions; /** * [descr:_ui_chat_TypingEndEvent] */ - export type TypingEndEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_chat_TypingEndEvent.user] - */ - readonly user?: User; - }; + export type TypingEndEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_chat_TypingEndEvent.user] + */ + readonly user?: User; + }; /** * [descr:_ui_chat_TypingStartEvent] */ - export type TypingStartEvent = DevExpress.events.NativeEventInfo< - dxChat, - UIEvent & { target: HTMLInputElement } - > & { - /** - * [descr:_ui_chat_TypingStartEvent.user] - */ - readonly user?: User; - }; + export type TypingStartEvent = + DevExpress.common.core.events.NativeEventInfo< + dxChat, + UIEvent & { target: HTMLInputElement } + > & { + /** + * [descr:_ui_chat_TypingStartEvent.user] + */ + readonly user?: User; + }; } /** * [descr:dxChatOptions] @@ -9590,11 +9692,11 @@ declare module DevExpress.ui { /** * [descr:dxChatOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxChatOptions.dayHeaderFormat] */ - dayHeaderFormat?: Format; + dayHeaderFormat?: DevExpress.common.core.localization.Format; /** * [descr:dxChatOptions.reloadOnChange] */ @@ -9607,7 +9709,7 @@ declare module DevExpress.ui { * [descr:dxChatOptions.messageTemplate] */ messageTemplate?: - | DevExpress.core.template + | template | null | (( data: DevExpress.ui.dxChat.MessageTemplateData, @@ -9616,7 +9718,7 @@ declare module DevExpress.ui { /** * [descr:dxChatOptions.messageTimestampFormat] */ - messageTimestampFormat?: Format; + messageTimestampFormat?: DevExpress.common.core.localization.Format; /** * [descr:dxChatOptions.typingUsers] */ @@ -9673,30 +9775,34 @@ declare module DevExpress.ui { /** * [descr:_ui_check_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_check_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_check_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_check_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxCheckBoxOptions; /** * [descr:_ui_check_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxCheckBox, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxCheckBox, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxCheckBoxOptions] @@ -9750,52 +9856,54 @@ declare module DevExpress.ui { /** * [descr:_ui_color_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, Event >; /** * [descr:_ui_color_box_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_color_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, ClipboardEvent >; /** * [descr:_ui_color_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, ClipboardEvent >; /** * [descr:_ui_color_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_color_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, KeyboardEvent >; /** * [descr:_ui_color_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, FocusEvent >; /** * [descr:_ui_color_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, FocusEvent >; @@ -9803,45 +9911,47 @@ declare module DevExpress.ui { * [descr:_ui_color_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_color_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_color_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, KeyboardEvent >; /** * [descr:_ui_color_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, KeyboardEvent >; /** * [descr:_ui_color_box_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_color_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_color_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxColorBox, ClipboardEvent >; @@ -9849,11 +9959,12 @@ declare module DevExpress.ui { /** * [descr:_ui_color_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxColorBox, - KeyboardEvent | MouseEvent | PointerEvent | UIEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxColorBox, + KeyboardEvent | MouseEvent | PointerEvent | UIEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxColorBoxOptions] @@ -9882,7 +9993,7 @@ declare module DevExpress.ui { * [descr:dxColorBoxOptions.fieldTemplate] */ fieldTemplate?: - | DevExpress.core.template + | template | (( value: string, fieldElement: DevExpress.core.DxElement @@ -9925,16 +10036,14 @@ declare module DevExpress.ui { /** * [descr:_ui_context_menu_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo< - dxContextMenu - >; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo>; export type ContextSubmenuDirection = 'auto' | 'left' | 'right'; /** * [descr:_ui_context_menu_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo< - dxContextMenu - >; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -9954,82 +10063,80 @@ declare module DevExpress.ui { /** * [descr:_ui_context_menu_HiddenEvent] */ - export type HiddenEvent = DevExpress.events.EventInfo< - dxContextMenu - >; + export type HiddenEvent = + DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_context_menu_HidingEvent] */ - export type HidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo>; + export type HidingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_context_menu_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo>; + DevExpress.common.core.events.InitializedEventInfo>; /** * [descr:_ui_context_menu_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< - dxContextMenu, - KeyboardEvent | MouseEvent | PointerEvent - > & - DevExpress.events.ItemInfo; + export type ItemClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxContextMenu, + KeyboardEvent | MouseEvent | PointerEvent + > & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_context_menu_ItemContextMenuEvent] */ export type ItemContextMenuEvent = - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< dxContextMenu, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_context_menu_ItemRenderedEvent] */ - export type ItemRenderedEvent = DevExpress.events.EventInfo< - dxContextMenu - > & - DevExpress.events.ItemInfo; + export type ItemRenderedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_context_menu_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo< - dxContextMenu - > & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_context_menu_PositioningEvent] */ export type PositioningEvent = - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< dxContextMenu, MouseEvent | PointerEvent | TouchEvent > & { /** * [descr:_ui_context_menu_PositioningEvent.position] */ - readonly position: PositionConfig; + readonly position: DevExpress.common.core.animation.PositionConfig; }; export type Properties = dxContextMenuOptions; /** * [descr:_ui_context_menu_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo< - dxContextMenu - > & - DevExpress.ui.CollectionWidget.SelectionChangeInfo; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.ui.CollectionWidget.SelectionChangeInfo; /** * [descr:_ui_context_menu_ShowingEvent] */ - export type ShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo>; + export type ShowingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_context_menu_ShownEvent] */ - export type ShownEvent = DevExpress.events.EventInfo< - dxContextMenu - >; + export type ShownEvent = + DevExpress.common.core.events.EventInfo>; } /** * @deprecated Use DevExpress.ui.dxContextMenu.Item instead @@ -10061,7 +10168,7 @@ declare module DevExpress.ui { /** * [descr:dxContextMenuOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike< + dataSource?: DevExpress.data.DataSourceLike< DevExpress.ui.dxContextMenu.Item, TKey > | null; @@ -10104,7 +10211,7 @@ declare module DevExpress.ui { /** * [descr:dxContextMenuOptions.position] */ - position?: PositionConfig; + position?: DevExpress.common.core.animation.PositionConfig; /** * [descr:dxContextMenuOptions.showEvent] */ @@ -10259,7 +10366,7 @@ declare module DevExpress.ui { ): DevExpress.core.DxElement | undefined; getCombinedFilter(): any; getCombinedFilter(returnDataField: boolean): any; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; getKeyByRowIndex(rowIndex: number): TKey | undefined; getRowElement( rowIndex: number @@ -10304,7 +10411,7 @@ declare module DevExpress.ui { export type AdaptiveDetailRowPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.AdaptiveDetailRowPreparingInfo; /** * [descr:_ui_data_grid_CellClickEvent] @@ -10312,7 +10419,7 @@ declare module DevExpress.ui { export type CellClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxDataGrid, PointerEvent | MouseEvent > & { @@ -10367,7 +10474,7 @@ declare module DevExpress.ui { export type CellDblClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxDataGrid, PointerEvent | MouseEvent > & { @@ -10422,7 +10529,7 @@ declare module DevExpress.ui { export type CellHoverChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_CellHoverChangedEvent.eventType] */ @@ -10478,7 +10585,7 @@ declare module DevExpress.ui { export type CellPreparedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_CellPreparedEvent.data] */ @@ -10569,7 +10676,7 @@ declare module DevExpress.ui { export type ColumnButtonClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxDataGrid, PointerEvent | MouseEvent > & { @@ -10645,14 +10752,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_data_grid_ContextMenuPreparingEvent] */ export type ContextMenuPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_ContextMenuPreparingEvent.items] */ @@ -10696,7 +10803,7 @@ declare module DevExpress.ui { export type DataErrorOccurredEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataErrorOccurredInfo; export type DataGridCommandColumnType = | 'adaptive' @@ -10738,7 +10845,7 @@ declare module DevExpress.ui { export type DisposingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -10753,7 +10860,7 @@ declare module DevExpress.ui { export type EditCanceledEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataChangeInfo; /** * [descr:_ui_data_grid_EditCancelingEvent] @@ -10761,8 +10868,8 @@ declare module DevExpress.ui { export type EditCancelingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataChangeInfo; /** * [descr:dxDataGridEditing] @@ -10816,8 +10923,8 @@ declare module DevExpress.ui { export type EditingStartEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_EditingStartEvent.data] */ @@ -10838,7 +10945,7 @@ declare module DevExpress.ui { export type EditorPreparedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_EditorPreparedEvent.parentType] */ @@ -10890,7 +10997,7 @@ declare module DevExpress.ui { export type EditorPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_EditorPreparingEvent.parentType] */ @@ -11063,8 +11170,8 @@ declare module DevExpress.ui { export type ExportingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_ExportingEvent.fileName] */ @@ -11107,7 +11214,7 @@ declare module DevExpress.ui { export type FocusedCellChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_FocusedCellChangedEvent.cellElement] */ @@ -11135,8 +11242,8 @@ declare module DevExpress.ui { export type FocusedCellChangingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxDataGrid, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & { @@ -11179,7 +11286,7 @@ declare module DevExpress.ui { export type FocusedRowChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_FocusedRowChangedEvent.rowElement] */ @@ -11199,8 +11306,8 @@ declare module DevExpress.ui { export type FocusedRowChangingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxDataGrid, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & { @@ -11325,14 +11432,16 @@ declare module DevExpress.ui { export type InitializedEvent< TRowData = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxDataGrid + >; /** * [descr:_ui_data_grid_InitNewRowEvent] */ export type InitNewRowEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.NewRowInfo; /** * [descr:_ui_data_grid_KeyDownEvent] @@ -11340,7 +11449,7 @@ declare module DevExpress.ui { export type KeyDownEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxDataGrid, KeyboardEvent > & @@ -11361,7 +11470,7 @@ declare module DevExpress.ui { * [descr:dxDataGridOptions.masterDetail.template] */ template?: - | DevExpress.core.template + | template | (( detailElement: DevExpress.core.DxElement, detailInfo: MasterDetailTemplateData @@ -11378,8 +11487,8 @@ declare module DevExpress.ui { export type OptionChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -11473,7 +11582,7 @@ declare module DevExpress.ui { export type RowClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxDataGrid, PointerEvent | MouseEvent > & { @@ -11532,7 +11641,7 @@ declare module DevExpress.ui { export type RowCollapsedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_data_grid_RowCollapsingEvent] @@ -11540,8 +11649,8 @@ declare module DevExpress.ui { export type RowCollapsingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_data_grid_RowDblClickEvent] @@ -11549,7 +11658,7 @@ declare module DevExpress.ui { export type RowDblClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxDataGrid, PointerEvent | MouseEvent > & { @@ -11611,21 +11720,21 @@ declare module DevExpress.ui { export type RowDraggingChangeEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.RowDraggingEventInfo & DevExpress.common.grids.DragDropInfo; export type RowDraggingEndEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.RowDraggingEventInfo & DevExpress.common.grids.DragDropInfo; export type RowDraggingMoveEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.RowDraggingEventInfo & DevExpress.common.grids.DragDropInfo; @@ -11643,7 +11752,7 @@ declare module DevExpress.ui { export type RowDraggingStartEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.DragStartEventInfo; /** @@ -11652,7 +11761,7 @@ declare module DevExpress.ui { export type RowExpandedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_data_grid_RowExpandingEvent] @@ -11660,8 +11769,8 @@ declare module DevExpress.ui { export type RowExpandingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_data_grid_RowInsertedEvent] @@ -11669,7 +11778,7 @@ declare module DevExpress.ui { export type RowInsertedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowInsertedInfo; /** * [descr:_ui_data_grid_RowInsertingEvent] @@ -11677,7 +11786,7 @@ declare module DevExpress.ui { export type RowInsertingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowInsertingInfo; /** * [descr:_ui_data_grid_RowPreparedEvent] @@ -11685,7 +11794,7 @@ declare module DevExpress.ui { export type RowPreparedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_data_grid_RowPreparedEvent.data] */ @@ -11737,7 +11846,7 @@ declare module DevExpress.ui { export type RowRemovedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowRemovedInfo; /** * [descr:_ui_data_grid_RowRemovingEvent] @@ -11745,7 +11854,7 @@ declare module DevExpress.ui { export type RowRemovingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowRemovingInfo; export type RowTemplateData = { readonly key: TKey; @@ -11765,7 +11874,7 @@ declare module DevExpress.ui { export type RowUpdatedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowUpdatedInfo; /** * [descr:_ui_data_grid_RowUpdatingEvent] @@ -11773,7 +11882,7 @@ declare module DevExpress.ui { export type RowUpdatingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowUpdatingInfo; /** * [descr:_ui_data_grid_RowValidatingEvent] @@ -11781,7 +11890,7 @@ declare module DevExpress.ui { export type RowValidatingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowValidatingInfo; /** * [descr:_ui_data_grid_SavedEvent] @@ -11789,7 +11898,7 @@ declare module DevExpress.ui { export type SavedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataChangeInfo; /** * [descr:_ui_data_grid_SavingEvent] @@ -11797,7 +11906,7 @@ declare module DevExpress.ui { export type SavingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.SavingInfo; /** * [descr:dxDataGridScrolling] @@ -11842,7 +11951,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.SelectionChangedInfo; export type SelectionSensitivity = 'base' | 'accent' | 'case' | 'variant'; /** @@ -11936,7 +12045,7 @@ declare module DevExpress.ui { /** * [descr:dxDataGridOptions.summary.groupItems.valueFormat] */ - valueFormat?: Format | undefined; + valueFormat?: DevExpress.common.core.localization.Format | undefined; }; export type SummaryItemTextInfo = { readonly value?: string | number | Date; @@ -12026,7 +12135,7 @@ declare module DevExpress.ui { /** * [descr:dxDataGridOptions.summary.totalItems.valueFormat] */ - valueFormat?: Format | undefined; + valueFormat?: DevExpress.common.core.localization.Format | undefined; }; /** * [descr:_ui_data_grid_ToolbarPreparingEvent] @@ -12034,7 +12143,7 @@ declare module DevExpress.ui { export type ToolbarPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.ToolbarPreparingInfo; } /** @@ -12072,7 +12181,7 @@ declare module DevExpress.ui { * [descr:dxDataGridColumn.cellTemplate] */ cellTemplate?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxDataGrid.ColumnCellTemplateData< @@ -12090,7 +12199,7 @@ declare module DevExpress.ui { * [descr:dxDataGridColumn.editCellTemplate] */ editCellTemplate?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxDataGrid.ColumnEditCellTemplateData< @@ -12102,7 +12211,7 @@ declare module DevExpress.ui { * [descr:dxDataGridColumn.groupCellTemplate] */ groupCellTemplate?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxDataGrid.ColumnGroupCellTemplateData< @@ -12118,7 +12227,7 @@ declare module DevExpress.ui { * [descr:dxDataGridColumn.headerCellTemplate] */ headerCellTemplate?: - | DevExpress.core.template + | template | (( columnHeader: DevExpress.core.DxElement, headerInfo: DevExpress.ui.dxDataGrid.ColumnHeaderCellTemplateData< @@ -12155,7 +12264,7 @@ declare module DevExpress.ui { * [descr:dxDataGridColumnButton.template] */ template?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxDataGrid.ColumnButtonTemplateData< @@ -12365,7 +12474,7 @@ declare module DevExpress.ui { * @deprecated [depNote:dxDataGridOptions.rowTemplate] */ rowTemplate?: - | DevExpress.core.template + | template | (( rowElement: DevExpress.core.DxElement, rowInfo: DevExpress.ui.dxDataGrid.RowTemplateData @@ -12374,7 +12483,7 @@ declare module DevExpress.ui { * [descr:dxDataGridOptions.dataRowTemplate] */ dataRowTemplate?: - | DevExpress.core.template + | template | (( rowElement: DevExpress.core.DxElement, rowInfo: DevExpress.ui.dxDataGrid.DataRowTemplateData @@ -12427,29 +12536,31 @@ declare module DevExpress.ui { /** * [descr:_ui_date_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, Event >; /** * [descr:_ui_date_box_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_date_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_date_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, ClipboardEvent >; /** * [descr:_ui_date_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, ClipboardEvent >; @@ -12460,27 +12571,28 @@ declare module DevExpress.ui { /** * [descr:_ui_date_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_date_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, KeyboardEvent >; /** * [descr:_ui_date_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, FocusEvent >; /** * [descr:_ui_date_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, FocusEvent >; @@ -12488,45 +12600,47 @@ declare module DevExpress.ui { * [descr:_ui_date_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_date_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_date_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, KeyboardEvent >; /** * [descr:_ui_date_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, KeyboardEvent >; /** * [descr:_ui_date_box_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_date_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_date_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxDateBox, ClipboardEvent >; @@ -12534,11 +12648,12 @@ declare module DevExpress.ui { /** * [descr:_ui_date_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxDateBox, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxDateBox, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxDateBoxOptions] @@ -12630,53 +12745,57 @@ declare module DevExpress.ui { /** * [descr:_ui_date_range_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo; + export type ChangeEvent = + DevExpress.common.core.events.NativeEventInfo; /** * [descr:_ui_date_range_box_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_date_range_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_date_range_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, ClipboardEvent >; /** * [descr:_ui_date_range_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, ClipboardEvent >; /** * [descr:_ui_date_range_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_date_range_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, KeyboardEvent >; /** * [descr:_ui_date_range_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, FocusEvent >; /** * [descr:_ui_date_range_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, FocusEvent >; @@ -12684,46 +12803,47 @@ declare module DevExpress.ui { * [descr:_ui_date_range_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_date_range_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_date_range_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, KeyboardEvent >; /** * [descr:_ui_date_range_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, KeyboardEvent >; /** * [descr:_ui_date_range_box_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_date_range_box_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_date_range_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxDateRangeBox, ClipboardEvent >; @@ -12818,11 +12938,12 @@ declare module DevExpress.ui { /** * [descr:_ui_date_range_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxDateRangeBox, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxDateRangeBox, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxDeferRendering] @@ -12833,31 +12954,34 @@ declare module DevExpress.ui { * [descr:_ui_defer_rendering_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_defer_rendering_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_defer_rendering_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_defer_rendering_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxDeferRenderingOptions; /** * [descr:_ui_defer_rendering_RenderedEvent] */ - export type RenderedEvent = DevExpress.events.EventInfo; + export type RenderedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_defer_rendering_ShownEvent] */ - export type ShownEvent = DevExpress.events.EventInfo; + export type ShownEvent = + DevExpress.common.core.events.EventInfo; } /** * [descr:dxDeferRenderingOptions] @@ -12869,7 +12993,7 @@ declare module DevExpress.ui { /** * [descr:dxDeferRenderingOptions.animation] */ - animation?: AnimationConfig | undefined; + animation?: DevExpress.common.core.animation.AnimationConfig | undefined; /** * [descr:dxDeferRenderingOptions.onRendered] */ @@ -12898,11 +13022,11 @@ declare module DevExpress.ui { /** * [descr:dxDiagram.getNodeDataSource()] */ - getNodeDataSource(): DevExpress.data.DataSource; + getNodeDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxDiagram.getEdgeDataSource()] */ - getEdgeDataSource(): DevExpress.data.DataSource; + getEdgeDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxDiagram.getItemByKey(key)] */ @@ -12959,7 +13083,8 @@ declare module DevExpress.ui { /** * [descr:_ui_diagram_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_diagram_CustomCommandEvent] */ @@ -12986,41 +13111,45 @@ declare module DevExpress.ui { /** * [descr:_ui_diagram_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_diagram_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_diagram_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_diagram_ItemClickEvent.item] - */ - readonly item: Item; - }; + export type ItemClickEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_diagram_ItemClickEvent.item] + */ + readonly item: Item; + }; /** * [descr:_ui_diagram_ItemDblClickEvent] */ - export type ItemDblClickEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_diagram_ItemDblClickEvent.item] - */ - readonly item: Item; - }; + export type ItemDblClickEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_diagram_ItemDblClickEvent.item] + */ + readonly item: Item; + }; /** * [descr:_ui_diagram_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxDiagramOptions; /** * [descr:_ui_diagram_RequestEditOperationEvent] */ export type RequestEditOperationEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_diagram_RequestEditOperationEvent.operation] */ @@ -13060,7 +13189,7 @@ declare module DevExpress.ui { * [descr:_ui_diagram_RequestLayoutUpdateEvent] */ export type RequestLayoutUpdateEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_diagram_RequestLayoutUpdateEvent.changes] */ @@ -13074,7 +13203,7 @@ declare module DevExpress.ui { * [descr:_ui_diagram_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_diagram_SelectionChangedEvent.items] */ @@ -13420,7 +13549,7 @@ declare module DevExpress.ui { * [descr:dxDiagramOptions.customShapeTemplate] */ customShapeTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, data: DevExpress.ui.dxDiagram.CustomShapeTemplateData @@ -13429,7 +13558,7 @@ declare module DevExpress.ui { * [descr:dxDiagramOptions.customShapeToolboxTemplate] */ customShapeToolboxTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, data: DevExpress.ui.dxDiagram.CustomShapeToolboxTemplateData @@ -13551,7 +13680,7 @@ declare module DevExpress.ui { * [descr:dxDiagramOptions.customShapes.template] */ template?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, data: DevExpress.ui.dxDiagram.CustomShapeTemplateData @@ -13596,7 +13725,7 @@ declare module DevExpress.ui { * [descr:dxDiagramOptions.customShapes.toolboxTemplate] */ toolboxTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, data: DevExpress.ui.dxDiagram.CustomShapeToolboxTemplateData @@ -13703,7 +13832,7 @@ declare module DevExpress.ui { /** * [descr:dxDiagramOptions.edges.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxDiagramOptions.edges.fromExpr] */ @@ -13833,7 +13962,7 @@ declare module DevExpress.ui { /** * [descr:dxDiagramOptions.nodes.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxDiagramOptions.nodes.heightExpr] */ @@ -14240,12 +14369,13 @@ declare module DevExpress.ui { /** * [descr:_ui_draggable_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_draggable_DragEndEvent] */ - export type DragEndEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragEndEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxDraggable, PointerEvent | MouseEvent | TouchEvent > & { @@ -14277,8 +14407,8 @@ declare module DevExpress.ui { /** * [descr:_ui_draggable_DragMoveEvent] */ - export type DragMoveEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragMoveEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxDraggable, PointerEvent | MouseEvent | TouchEvent > & { @@ -14310,8 +14440,8 @@ declare module DevExpress.ui { /** * [descr:_ui_draggable_DragStartEvent] */ - export type DragStartEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragStartEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxDraggable, PointerEvent | MouseEvent | TouchEvent > & { @@ -14336,12 +14466,13 @@ declare module DevExpress.ui { * [descr:_ui_draggable_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_draggable_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxDraggableOptions; } /** @@ -14359,7 +14490,7 @@ declare module DevExpress.ui { * [descr:dxDraggableOptions.dragTemplate] */ dragTemplate?: - | DevExpress.core.template + | template | (( dragInfo: DevExpress.ui.dxDraggable.DragTemplateData, containerElement: DevExpress.core.DxElement @@ -14403,18 +14534,20 @@ declare module DevExpress.ui { /** * [descr:_ui_drawer_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_drawer_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; export type OpenedStateMode = 'overlap' | 'shrink' | 'push'; /** * [descr:_ui_drawer_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type PanelLocation = | 'left' | 'right' @@ -14480,28 +14613,27 @@ declare module DevExpress.ui { /** * [descr:dxDrawerOptions.template] */ - template?: - | DevExpress.core.template - | ((Element: DevExpress.core.DxElement) => any); + template?: template | ((Element: DevExpress.core.DxElement) => any); } /** * [descr:dxDropDownBox] */ export class dxDropDownBox extends dxDropDownEditor { - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } module dxDropDownBox { /** * [descr:_ui_drop_down_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, Event >; /** * [descr:_ui_drop_down_box_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = + DevExpress.common.core.events.EventInfo; export type ContentTemplateData = { component: dxDropDownBox; readonly value?: any; @@ -14509,41 +14641,42 @@ declare module DevExpress.ui { /** * [descr:_ui_drop_down_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, ClipboardEvent >; /** * [descr:_ui_drop_down_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, ClipboardEvent >; /** * [descr:_ui_drop_down_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_drop_down_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, KeyboardEvent >; /** * [descr:_ui_drop_down_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, FocusEvent >; /** * [descr:_ui_drop_down_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, FocusEvent >; @@ -14551,46 +14684,47 @@ declare module DevExpress.ui { * [descr:_ui_drop_down_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_drop_down_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_drop_down_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, KeyboardEvent >; /** * [descr:_ui_drop_down_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, KeyboardEvent >; /** * [descr:_ui_drop_down_box_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_drop_down_box_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_drop_down_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownBox, ClipboardEvent >; @@ -14598,11 +14732,12 @@ declare module DevExpress.ui { /** * [descr:_ui_drop_down_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxDropDownBox, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxDropDownBox, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxDropDownBoxOptions] @@ -14620,7 +14755,7 @@ declare module DevExpress.ui { * [descr:dxDropDownBoxOptions.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( templateData: DevExpress.ui.dxDropDownBox.ContentTemplateData, contentElement: DevExpress.core.DxElement @@ -14628,7 +14763,7 @@ declare module DevExpress.ui { /** * [descr:dxDropDownBoxOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxDropDownBoxOptions.displayValueFormatter] */ @@ -14637,7 +14772,7 @@ declare module DevExpress.ui { * [descr:dxDropDownBoxOptions.fieldTemplate] */ fieldTemplate?: - | DevExpress.core.template + | template | (( value: any, fieldElement: DevExpress.core.DxElement @@ -14668,7 +14803,7 @@ declare module DevExpress.ui { * [descr:dxDropDownButton.close()] */ close(): DevExpress.core.utils.DxPromise; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxDropDownButton.open()] */ @@ -14686,33 +14821,35 @@ declare module DevExpress.ui { /** * [descr:_ui_drop_down_button_ButtonClickEvent] */ - export type ButtonClickEvent = DevExpress.events.NativeEventInfo< - dxDropDownButton, - KeyboardEvent | MouseEvent | PointerEvent - > & { - /** - * [descr:_ui_drop_down_button_ButtonClickEvent.selectedItem] - */ - readonly selectedItem?: any; - }; + export type ButtonClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxDropDownButton, + KeyboardEvent | MouseEvent | PointerEvent + > & { + /** + * [descr:_ui_drop_down_button_ButtonClickEvent.selectedItem] + */ + readonly selectedItem?: any; + }; /** * [descr:_ui_drop_down_button_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_drop_down_button_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_drop_down_button_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_drop_down_button_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< + export type ItemClickEvent = DevExpress.common.core.events.NativeEventInfo< dxDropDownButton, KeyboardEvent | MouseEvent | PointerEvent > & { @@ -14729,14 +14866,14 @@ declare module DevExpress.ui { * [descr:_ui_drop_down_button_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxDropDownButtonOptions; /** * [descr:_ui_drop_down_button_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_drop_down_button_SelectionChangedEvent.item] */ @@ -14769,7 +14906,7 @@ declare module DevExpress.ui { /** * [descr:dxDropDownButtonOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike< + dataSource?: DevExpress.data.DataSourceLike< DevExpress.ui.dxDropDownButton.Item | any > | null; /** @@ -14784,9 +14921,11 @@ declare module DevExpress.ui { * [descr:dxDropDownButtonOptions.dropDownContentTemplate] */ dropDownContentTemplate?: - | DevExpress.core.template + | template | (( - data: Array | DevExpress.data.DataSource, + data: + | Array + | DevExpress.common.data.DataSource, contentElement: DevExpress.core.DxElement ) => string | DevExpress.core.UserDefinedElement); /** @@ -14809,7 +14948,7 @@ declare module DevExpress.ui { * [descr:dxDropDownButtonOptions.itemTemplate] */ itemTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -14873,7 +15012,7 @@ declare module DevExpress.ui { * [descr:dxDropDownButtonOptions.template] */ template?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxButton.TemplateData, contentElement: DevExpress.core.DxElement @@ -14970,7 +15109,7 @@ declare module DevExpress.ui { * [descr:dxDropDownEditorOptions.dropDownButtonTemplate] */ dropDownButtonTemplate?: - | DevExpress.core.template + | template | (( buttonData: DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel, contentElement: DevExpress.core.DxElement @@ -14978,11 +15117,11 @@ declare module DevExpress.ui { /** * [descr:dxDropDownEditorOptions.onClosed] */ - onClosed?: (e: DevExpress.events.EventInfo) => void; + onClosed?: (e: DevExpress.common.core.events.EventInfo) => void; /** * [descr:dxDropDownEditorOptions.onOpened] */ - onOpened?: (e: DevExpress.events.EventInfo) => void; + onOpened?: (e: DevExpress.common.core.events.EventInfo) => void; /** * [descr:dxDropDownEditorOptions.openOnFieldClick] */ @@ -15013,7 +15152,7 @@ declare module DevExpress.ui { export class dxDropDownList< TProperties > extends dxDropDownEditor { - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } module dxDropDownList { /** @@ -15042,7 +15181,7 @@ declare module DevExpress.ui { * [descr:dxDropDownListOptions.groupTemplate] */ groupTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -15064,24 +15203,24 @@ declare module DevExpress.ui { * [descr:dxDropDownListOptions.onItemClick] */ onItemClick?: ( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< TComponent, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo + DevExpress.common.core.events.ItemInfo ) => void; /** * [descr:dxDropDownListOptions.onSelectionChanged] */ onSelectionChanged?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.ui.dxDropDownList.SelectionChangedInfo ) => void; /** * [descr:dxDropDownListOptions.onValueChanged] */ onValueChanged?: ( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< TComponent, KeyboardEvent | MouseEvent | PointerEvent | Event > & @@ -15167,61 +15306,64 @@ declare module DevExpress.ui { /** * [descr:_ui_file_manager_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_file_manager_ContextMenuItemClickEvent] */ - export type ContextMenuItemClickEvent = DevExpress.events.NativeEventInfo< - dxFileManager, - KeyboardEvent | PointerEvent | MouseEvent - > & { - /** - * [descr:_ui_file_manager_ContextMenuItemClickEvent.itemData] - */ - readonly itemData: any; - /** - * [descr:_ui_file_manager_ContextMenuItemClickEvent.itemElement] - */ - readonly itemElement: DevExpress.core.DxElement; - /** - * [descr:_ui_file_manager_ContextMenuItemClickEvent.itemIndex] - */ - readonly itemIndex: number; - /** - * [descr:_ui_file_manager_ContextMenuItemClickEvent.fileSystemItem] - */ - readonly fileSystemItem?: DevExpress.fileManagement.FileSystemItem; - /** - * [descr:_ui_file_manager_ContextMenuItemClickEvent.viewArea] - */ - readonly viewArea: FileManagerViewArea; - }; - /** - * [descr:_ui_file_manager_ContextMenuShowingEvent] - */ - export type ContextMenuShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type ContextMenuItemClickEvent = + DevExpress.common.core.events.NativeEventInfo< dxFileManager, KeyboardEvent | PointerEvent | MouseEvent > & { /** - * [descr:_ui_file_manager_ContextMenuShowingEvent.fileSystemItem] + * [descr:_ui_file_manager_ContextMenuItemClickEvent.itemData] */ - readonly fileSystemItem?: DevExpress.fileManagement.FileSystemItem; + readonly itemData: any; + /** + * [descr:_ui_file_manager_ContextMenuItemClickEvent.itemElement] + */ + readonly itemElement: DevExpress.core.DxElement; + /** + * [descr:_ui_file_manager_ContextMenuItemClickEvent.itemIndex] + */ + readonly itemIndex: number; /** - * [descr:_ui_file_manager_ContextMenuShowingEvent.targetElement] + * [descr:_ui_file_manager_ContextMenuItemClickEvent.fileSystemItem] */ - readonly targetElement?: DevExpress.core.DxElement; + readonly fileSystemItem?: DevExpress.fileManagement.FileSystemItem; /** - * [descr:_ui_file_manager_ContextMenuShowingEvent.viewArea] + * [descr:_ui_file_manager_ContextMenuItemClickEvent.viewArea] */ readonly viewArea: FileManagerViewArea; }; + /** + * [descr:_ui_file_manager_ContextMenuShowingEvent] + */ + export type ContextMenuShowingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxFileManager, + KeyboardEvent | PointerEvent | MouseEvent + > & { + /** + * [descr:_ui_file_manager_ContextMenuShowingEvent.fileSystemItem] + */ + readonly fileSystemItem?: DevExpress.fileManagement.FileSystemItem; + /** + * [descr:_ui_file_manager_ContextMenuShowingEvent.targetElement] + */ + readonly targetElement?: DevExpress.core.DxElement; + /** + * [descr:_ui_file_manager_ContextMenuShowingEvent.viewArea] + */ + readonly viewArea: FileManagerViewArea; + }; /** * [descr:_ui_file_manager_CurrentDirectoryChangedEvent] */ export type CurrentDirectoryChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_CurrentDirectoryChangedEvent.directory] */ @@ -15231,7 +15373,7 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_DirectoryCreatedEvent] */ export type DirectoryCreatedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_DirectoryCreatedEvent.parentDirectory] */ @@ -15245,7 +15387,7 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_DirectoryCreatingEvent] */ export type DirectoryCreatingEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & ActionEventInfo & { /** * [descr:_ui_file_manager_DirectoryCreatingEvent.parentDirectory] @@ -15259,12 +15401,13 @@ declare module DevExpress.ui { /** * [descr:_ui_file_manager_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_file_manager_ErrorOccurredEvent] */ export type ErrorOccurredEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_ErrorOccurredEvent.errorCode] */ @@ -15312,7 +15455,7 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_FileUploadedEvent] */ export type FileUploadedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_FileUploadedEvent.fileData] */ @@ -15326,7 +15469,7 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_FileUploadingEvent] */ export type FileUploadingEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & ActionEventInfo & { /** * [descr:_ui_file_manager_FileUploadingEvent.fileData] @@ -15341,7 +15484,7 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_FocusedItemChangedEvent] */ export type FocusedItemChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_FocusedItemChangedEvent.item] */ @@ -15355,47 +15498,49 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_file_manager_ItemCopiedEvent] */ - export type ItemCopiedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_file_manager_ItemCopiedEvent.sourceItem] - */ - readonly sourceItem: DevExpress.fileManagement.FileSystemItem; - /** - * [descr:_ui_file_manager_ItemCopiedEvent.parentDirectory] - */ - readonly parentDirectory: DevExpress.fileManagement.FileSystemItem; - /** - * [descr:_ui_file_manager_ItemCopiedEvent.itemName] - */ - readonly itemName: string; - /** - * [descr:_ui_file_manager_ItemCopiedEvent.itemPath] - */ - readonly itemPath: string; - }; - /** - * [descr:_ui_file_manager_ItemCopyingEvent] - */ - export type ItemCopyingEvent = DevExpress.events.EventInfo & - ActionEventInfo & { + export type ItemCopiedEvent = + DevExpress.common.core.events.EventInfo & { /** - * [descr:_ui_file_manager_ItemCopyingEvent.item] + * [descr:_ui_file_manager_ItemCopiedEvent.sourceItem] */ - readonly item: DevExpress.fileManagement.FileSystemItem; + readonly sourceItem: DevExpress.fileManagement.FileSystemItem; /** - * [descr:_ui_file_manager_ItemCopyingEvent.destinationDirectory] + * [descr:_ui_file_manager_ItemCopiedEvent.parentDirectory] */ - readonly destinationDirectory: DevExpress.fileManagement.FileSystemItem; + readonly parentDirectory: DevExpress.fileManagement.FileSystemItem; + /** + * [descr:_ui_file_manager_ItemCopiedEvent.itemName] + */ + readonly itemName: string; + /** + * [descr:_ui_file_manager_ItemCopiedEvent.itemPath] + */ + readonly itemPath: string; }; + /** + * [descr:_ui_file_manager_ItemCopyingEvent] + */ + export type ItemCopyingEvent = + DevExpress.common.core.events.EventInfo & + ActionEventInfo & { + /** + * [descr:_ui_file_manager_ItemCopyingEvent.item] + */ + readonly item: DevExpress.fileManagement.FileSystemItem; + /** + * [descr:_ui_file_manager_ItemCopyingEvent.destinationDirectory] + */ + readonly destinationDirectory: DevExpress.fileManagement.FileSystemItem; + }; /** * [descr:_ui_file_manager_ItemDeletedEvent] */ export type ItemDeletedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_ItemDeletedEvent.item] */ @@ -15404,18 +15549,19 @@ declare module DevExpress.ui { /** * [descr:_ui_file_manager_ItemDeletingEvent] */ - export type ItemDeletingEvent = DevExpress.events.EventInfo & - ActionEventInfo & { - /** - * [descr:_ui_file_manager_ItemDeletingEvent.item] - */ - readonly item: DevExpress.fileManagement.FileSystemItem; - }; + export type ItemDeletingEvent = + DevExpress.common.core.events.EventInfo & + ActionEventInfo & { + /** + * [descr:_ui_file_manager_ItemDeletingEvent.item] + */ + readonly item: DevExpress.fileManagement.FileSystemItem; + }; /** * [descr:_ui_file_manager_ItemDownloadingEvent] */ export type ItemDownloadingEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & ActionEventInfo & { /** * [descr:_ui_file_manager_ItemDownloadingEvent.item] @@ -15425,43 +15571,45 @@ declare module DevExpress.ui { /** * [descr:_ui_file_manager_ItemMovedEvent] */ - export type ItemMovedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_file_manager_ItemMovedEvent.sourceItem] - */ - readonly sourceItem: DevExpress.fileManagement.FileSystemItem; - /** - * [descr:_ui_file_manager_ItemMovedEvent.parentDirectory] - */ - readonly parentDirectory: DevExpress.fileManagement.FileSystemItem; - /** - * [descr:_ui_file_manager_ItemMovedEvent.itemName] - */ - readonly itemName: string; - /** - * [descr:_ui_file_manager_ItemMovedEvent.itemPath] - */ - readonly itemPath: string; - }; - /** - * [descr:_ui_file_manager_ItemMovingEvent] - */ - export type ItemMovingEvent = DevExpress.events.EventInfo & - ActionEventInfo & { + export type ItemMovedEvent = + DevExpress.common.core.events.EventInfo & { /** - * [descr:_ui_file_manager_ItemMovingEvent.item] + * [descr:_ui_file_manager_ItemMovedEvent.sourceItem] */ - readonly item: DevExpress.fileManagement.FileSystemItem; + readonly sourceItem: DevExpress.fileManagement.FileSystemItem; + /** + * [descr:_ui_file_manager_ItemMovedEvent.parentDirectory] + */ + readonly parentDirectory: DevExpress.fileManagement.FileSystemItem; /** - * [descr:_ui_file_manager_ItemMovingEvent.destinationDirectory] + * [descr:_ui_file_manager_ItemMovedEvent.itemName] */ - readonly destinationDirectory: DevExpress.fileManagement.FileSystemItem; + readonly itemName: string; + /** + * [descr:_ui_file_manager_ItemMovedEvent.itemPath] + */ + readonly itemPath: string; }; + /** + * [descr:_ui_file_manager_ItemMovingEvent] + */ + export type ItemMovingEvent = + DevExpress.common.core.events.EventInfo & + ActionEventInfo & { + /** + * [descr:_ui_file_manager_ItemMovingEvent.item] + */ + readonly item: DevExpress.fileManagement.FileSystemItem; + /** + * [descr:_ui_file_manager_ItemMovingEvent.destinationDirectory] + */ + readonly destinationDirectory: DevExpress.fileManagement.FileSystemItem; + }; /** * [descr:_ui_file_manager_ItemRenamedEvent] */ export type ItemRenamedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_ItemRenamedEvent.sourceItem] */ @@ -15474,29 +15622,30 @@ declare module DevExpress.ui { /** * [descr:_ui_file_manager_ItemRenamingEvent] */ - export type ItemRenamingEvent = DevExpress.events.EventInfo & - ActionEventInfo & { - /** - * [descr:_ui_file_manager_ItemRenamingEvent.item] - */ - readonly item: DevExpress.fileManagement.FileSystemItem; - /** - * [descr:_ui_file_manager_ItemRenamingEvent.newName] - */ - readonly newName: string; - }; + export type ItemRenamingEvent = + DevExpress.common.core.events.EventInfo & + ActionEventInfo & { + /** + * [descr:_ui_file_manager_ItemRenamingEvent.item] + */ + readonly item: DevExpress.fileManagement.FileSystemItem; + /** + * [descr:_ui_file_manager_ItemRenamingEvent.newName] + */ + readonly newName: string; + }; /** * [descr:_ui_file_manager_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxFileManagerOptions; /** * [descr:_ui_file_manager_SelectedFileOpenedEvent] */ export type SelectedFileOpenedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_SelectedFileOpenedEvent.file] */ @@ -15506,7 +15655,7 @@ declare module DevExpress.ui { * [descr:_ui_file_manager_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_manager_SelectionChangedEvent.currentSelectedItemKeys] */ @@ -15527,23 +15676,24 @@ declare module DevExpress.ui { /** * [descr:_ui_file_manager_ToolbarItemClickEvent] */ - export type ToolbarItemClickEvent = DevExpress.events.NativeEventInfo< - dxFileManager, - PointerEvent | MouseEvent - > & { - /** - * [descr:_ui_file_manager_ToolbarItemClickEvent.itemData] - */ - readonly itemData: any; - /** - * [descr:_ui_file_manager_ToolbarItemClickEvent.itemElement] - */ - readonly itemElement: DevExpress.core.DxElement; - /** - * [descr:_ui_file_manager_ToolbarItemClickEvent.itemIndex] - */ - readonly itemIndex: number; - }; + export type ToolbarItemClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxFileManager, + PointerEvent | MouseEvent + > & { + /** + * [descr:_ui_file_manager_ToolbarItemClickEvent.itemData] + */ + readonly itemData: any; + /** + * [descr:_ui_file_manager_ToolbarItemClickEvent.itemElement] + */ + readonly itemElement: DevExpress.core.DxElement; + /** + * [descr:_ui_file_manager_ToolbarItemClickEvent.itemIndex] + */ + readonly itemIndex: number; + }; } /** * [descr:dxFileManagerContextMenu] @@ -15581,9 +15731,7 @@ declare module DevExpress.ui { /** * [descr:dxFileManagerContextMenuItem.template] */ - template?: - | DevExpress.core.template - | (() => string | DevExpress.core.UserDefinedElement); + template?: template | (() => string | DevExpress.core.UserDefinedElement); } /** * [descr:dxFileManagerDetailsColumn] @@ -15938,14 +16086,12 @@ declare module DevExpress.ui { /** * [descr:dxFileManagerToolbarItem.template] */ - template?: - | DevExpress.core.template - | (() => string | DevExpress.core.UserDefinedElement); + template?: template | (() => string | DevExpress.core.UserDefinedElement); /** * [descr:dxFileManagerToolbarItem.menuItemTemplate] */ menuItemTemplate?: - | DevExpress.core.template + | template | (() => string | DevExpress.core.UserDefinedElement); } /** @@ -15994,7 +16140,7 @@ declare module DevExpress.ui { * [descr:_ui_file_uploader_BeforeSendEvent] */ export type BeforeSendEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_file_uploader_BeforeSendEvent.request] */ @@ -16011,57 +16157,61 @@ declare module DevExpress.ui { /** * [descr:_ui_file_uploader_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_file_uploader_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_file_uploader_DropZoneEnterEvent] */ - export type DropZoneEnterEvent = DevExpress.events.NativeEventInfo< - dxFileUploader, - PointerEvent | MouseEvent - > & { - /** - * [descr:_ui_file_uploader_DropZoneEnterEvent.dropZoneElement] - */ - readonly dropZoneElement: DevExpress.core.DxElement; - }; + export type DropZoneEnterEvent = + DevExpress.common.core.events.NativeEventInfo< + dxFileUploader, + PointerEvent | MouseEvent + > & { + /** + * [descr:_ui_file_uploader_DropZoneEnterEvent.dropZoneElement] + */ + readonly dropZoneElement: DevExpress.core.DxElement; + }; /** * [descr:_ui_file_uploader_DropZoneLeaveEvent] */ - export type DropZoneLeaveEvent = DevExpress.events.NativeEventInfo< - dxFileUploader, - PointerEvent | MouseEvent - > & { - /** - * [descr:_ui_file_uploader_DropZoneLeaveEvent.dropZoneElement] - */ - readonly dropZoneElement: DevExpress.core.DxElement; - }; + export type DropZoneLeaveEvent = + DevExpress.common.core.events.NativeEventInfo< + dxFileUploader, + PointerEvent | MouseEvent + > & { + /** + * [descr:_ui_file_uploader_DropZoneLeaveEvent.dropZoneElement] + */ + readonly dropZoneElement: DevExpress.core.DxElement; + }; /** * [descr:_ui_file_uploader_FilesUploadedEvent] */ export type FilesUploadedEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; export type FileUploadMode = 'instantly' | 'useButtons' | 'useForm'; /** * [descr:_ui_file_uploader_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_file_uploader_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_file_uploader_ProgressEvent] */ export type ProgressEvent = - DevExpress.events.NativeEventInfo & { + DevExpress.common.core.events.NativeEventInfo & { /** * [descr:_ui_file_uploader_ProgressEvent.file] */ @@ -16088,7 +16238,7 @@ declare module DevExpress.ui { * [descr:_ui_file_uploader_UploadAbortedEvent] */ export type UploadAbortedEvent = - DevExpress.events.NativeEventInfo & { + DevExpress.common.core.events.NativeEventInfo & { /** * [descr:_ui_file_uploader_UploadAbortedEvent.file] */ @@ -16106,7 +16256,7 @@ declare module DevExpress.ui { * [descr:_ui_file_uploader_UploadedEvent] */ export type UploadedEvent = - DevExpress.events.NativeEventInfo & { + DevExpress.common.core.events.NativeEventInfo & { /** * [descr:_ui_file_uploader_UploadedEvent.file] */ @@ -16124,7 +16274,7 @@ declare module DevExpress.ui { * [descr:_ui_file_uploader_UploadErrorEvent] */ export type UploadErrorEvent = - DevExpress.events.NativeEventInfo & { + DevExpress.common.core.events.NativeEventInfo & { /** * [descr:_ui_file_uploader_UploadErrorEvent.file] */ @@ -16147,7 +16297,7 @@ declare module DevExpress.ui { * [descr:_ui_file_uploader_UploadStartedEvent] */ export type UploadStartedEvent = - DevExpress.events.NativeEventInfo & { + DevExpress.common.core.events.NativeEventInfo & { /** * [descr:_ui_file_uploader_UploadStartedEvent.file] */ @@ -16161,7 +16311,7 @@ declare module DevExpress.ui { * [descr:_ui_file_uploader_ValueChangedEvent] */ export type ValueChangedEvent = - DevExpress.events.NativeEventInfo & { + DevExpress.common.core.events.NativeEventInfo & { /** * [descr:_ui_file_uploader_ValueChangedEvent.value] */ @@ -16390,7 +16540,7 @@ declare module DevExpress.ui { * [descr:_ui_filter_builder_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; export type CustomOperation = dxFilterBuilderCustomOperation; export type CustomOperationEditorTemplate = { readonly value?: string | number | Date; @@ -16400,12 +16550,13 @@ declare module DevExpress.ui { /** * [descr:_ui_filter_builder_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_filter_builder_EditorPreparedEvent] */ export type EditorPreparedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_filter_builder_EditorPreparedEvent.value] */ @@ -16454,57 +16605,58 @@ declare module DevExpress.ui { /** * [descr:_ui_filter_builder_EditorPreparingEvent] */ - export type EditorPreparingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.value] - */ - readonly value?: any; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.setValue] - */ - readonly setValue: any; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.editorElement] - */ - readonly editorElement?: DevExpress.core.DxElement; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.editorName] - */ - editorName: string; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.editorOptions] - */ - editorOptions?: any; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.dataField] - */ - readonly dataField?: string; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.filterOperation] - */ - readonly filterOperation?: string; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.updateValueTimeout] - */ - updateValueTimeout?: number; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.width] - */ - readonly width?: number; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.readOnly] - */ - readonly readOnly: boolean; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.disabled] - */ - readonly disabled: boolean; - /** - * [descr:_ui_filter_builder_EditorPreparingEvent.rtlEnabled] - */ - readonly rtlEnabled: boolean; - }; + export type EditorPreparingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.value] + */ + readonly value?: any; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.setValue] + */ + readonly setValue: any; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.editorElement] + */ + readonly editorElement?: DevExpress.core.DxElement; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.editorName] + */ + editorName: string; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.editorOptions] + */ + editorOptions?: any; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.dataField] + */ + readonly dataField?: string; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.filterOperation] + */ + readonly filterOperation?: string; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.updateValueTimeout] + */ + updateValueTimeout?: number; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.width] + */ + readonly width?: number; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.readOnly] + */ + readonly readOnly: boolean; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.disabled] + */ + readonly disabled: boolean; + /** + * [descr:_ui_filter_builder_EditorPreparingEvent.rtlEnabled] + */ + readonly rtlEnabled: boolean; + }; export type FieldEditorTemplate = { readonly value?: string | number | Date; readonly filterOperation?: string; @@ -16532,27 +16684,27 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export type FilterLookupDataSource = Exclude< - DevExpress.data.DataSource.DataSourceLike, - string | DevExpress.data.DataSource + DevExpress.data.DataSourceLike, + string | DevExpress.common.data.DataSource >; export type GroupOperation = 'and' | 'or' | 'notAnd' | 'notOr'; /** * [descr:_ui_filter_builder_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_filter_builder_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxFilterBuilderOptions; /** * [descr:_ui_filter_builder_ValueChangedEvent] */ export type ValueChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_filter_builder_ValueChangedEvent.value] */ @@ -16595,7 +16747,7 @@ declare module DevExpress.ui { * [descr:dxFilterBuilderCustomOperation.editorTemplate] */ editorTemplate?: - | DevExpress.core.template + | template | (( conditionInfo: DevExpress.ui.dxFilterBuilder.CustomOperationEditorTemplate, container: DevExpress.core.DxElement @@ -16652,7 +16804,7 @@ declare module DevExpress.ui { * [descr:dxFilterBuilderField.editorTemplate] */ editorTemplate?: - | DevExpress.core.template + | template | (( conditionInfo: DevExpress.ui.dxFilterBuilder.FieldEditorTemplate, container: DevExpress.core.DxElement @@ -16670,7 +16822,7 @@ declare module DevExpress.ui { /** * [descr:dxFilterBuilderField.format] */ - format?: Format; + format?: DevExpress.common.core.localization.Format; /** * [descr:dxFilterBuilderField.lookup] */ @@ -16893,33 +17045,37 @@ declare module DevExpress.ui { /** * [descr:_ui_form_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_form_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_form_EditorEnterKeyEvent] */ - export type EditorEnterKeyEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_form_EditorEnterKeyEvent.dataField] - */ - readonly dataField?: string; - }; + export type EditorEnterKeyEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_form_EditorEnterKeyEvent.dataField] + */ + readonly dataField?: string; + }; /** * [descr:_ui_form_FieldDataChangedEvent] */ - export type FieldDataChangedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_form_FieldDataChangedEvent.dataField] - */ - readonly dataField?: string; - /** - * [descr:_ui_form_FieldDataChangedEvent.value] - */ - readonly value?: any; - }; + export type FieldDataChangedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_form_FieldDataChangedEvent.dataField] + */ + readonly dataField?: string; + /** + * [descr:_ui_form_FieldDataChangedEvent.value] + */ + readonly value?: any; + }; export type FormItemComponent = | 'dxAutocomplete' | 'dxCalendar' @@ -16959,13 +17115,14 @@ declare module DevExpress.ui { * [descr:_ui_form_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; export type LabelLocation = 'left' | 'right' | 'top'; /** * [descr:_ui_form_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxFormOptions; export type SimpleItemLabelTemplateData = SimpleItemTemplateData & { text: string; @@ -17067,7 +17224,7 @@ declare module DevExpress.ui { * [descr:dxFormGroupItem.captionTemplate] */ captionTemplate?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxForm.GroupCaptionTemplateData, itemElement: DevExpress.core.DxElement @@ -17104,7 +17261,7 @@ declare module DevExpress.ui { * [descr:dxFormGroupItem.template] */ template?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxForm.GroupItemTemplateData, itemElement: DevExpress.core.DxElement @@ -17280,7 +17437,7 @@ declare module DevExpress.ui { * [descr:dxFormSimpleItem.label.template] */ template?: - | DevExpress.core.template + | template | (( itemData: DevExpress.ui.dxForm.SimpleItemLabelTemplateData, itemElement: DevExpress.core.DxElement @@ -17302,7 +17459,7 @@ declare module DevExpress.ui { * [descr:dxFormSimpleItem.template] */ template?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxForm.SimpleItemTemplateData, itemElement: DevExpress.core.DxElement @@ -17391,7 +17548,7 @@ declare module DevExpress.ui { * [descr:dxFormTabbedItem.tabs.tabTemplate] */ tabTemplate?: - | DevExpress.core.template + | template | (( tabData: any, tabIndex: number, @@ -17402,7 +17559,7 @@ declare module DevExpress.ui { * [descr:dxFormTabbedItem.tabs.template] */ template?: - | DevExpress.core.template + | template | (( tabData: any, tabIndex: number, @@ -17453,14 +17610,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_gallery_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -17479,40 +17636,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxGallery + >; /** * [descr:_ui_gallery_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxGallery, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_gallery_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxGallery, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_gallery_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxGallery, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -17523,16 +17682,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_gallery_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -17543,7 +17702,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.ui.CollectionWidget.SelectionChangeInfo; } /** @@ -17579,7 +17738,7 @@ declare module DevExpress.ui { /** * [descr:dxGalleryOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxGalleryOptions.focusStateEnabled] */ @@ -17782,42 +17941,44 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_gantt_ContextMenuPreparingEvent] */ - export type ContextMenuPreparingEvent = DevExpress.events.Cancelable & { - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.component] - */ - readonly component?: dxGantt; - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.element] - */ - readonly element?: DevExpress.core.DxElement; - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.event] - */ - readonly event?: DevExpress.events.DxEvent< - PointerEvent | MouseEvent | TouchEvent - >; - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.targetKey] - */ - readonly targetKey?: any; - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.targetType] - */ - readonly targetType?: string; - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.data] - */ - readonly data?: any; - /** - * [descr:_ui_gantt_ContextMenuPreparingEvent.items] - */ - readonly items?: Array; - }; + export type ContextMenuPreparingEvent = + DevExpress.common.core.events.Cancelable & { + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.component] + */ + readonly component?: dxGantt; + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.element] + */ + readonly element?: DevExpress.core.DxElement; + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.event] + */ + readonly event?: DevExpress.events.DxEvent< + PointerEvent | MouseEvent | TouchEvent + >; + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.targetKey] + */ + readonly targetKey?: any; + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.targetType] + */ + readonly targetType?: string; + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.data] + */ + readonly data?: any; + /** + * [descr:_ui_gantt_ContextMenuPreparingEvent.items] + */ + readonly items?: Array; + }; /** * [descr:_ui_gantt_CustomCommandEvent] */ @@ -17839,7 +18000,7 @@ declare module DevExpress.ui { * [descr:_ui_gantt_DependencyDeletedEvent] */ export type DependencyDeletedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_DependencyDeletedEvent.values] */ @@ -17852,22 +18013,23 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_DependencyDeletingEvent] */ - export type DependencyDeletingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_DependencyDeletingEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_DependencyDeletingEvent.key] - */ - readonly key: any; - }; + export type DependencyDeletingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_DependencyDeletingEvent.values] + */ + readonly values: any; + /** + * [descr:_ui_gantt_DependencyDeletingEvent.key] + */ + readonly key: any; + }; /** * [descr:_ui_gantt_DependencyInsertedEvent] */ export type DependencyInsertedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_DependencyInsertedEvent.values] */ @@ -17880,17 +18042,19 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_DependencyInsertingEvent] */ - export type DependencyInsertingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_DependencyInsertingEvent.values] - */ - readonly values: any; - }; + export type DependencyInsertingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_DependencyInsertingEvent.values] + */ + readonly values: any; + }; /** * [descr:_ui_gantt_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -17960,12 +18124,13 @@ declare module DevExpress.ui { * [descr:_ui_gantt_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_gantt_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type ProgressTooltipTemplateData = { readonly progress: number; }; @@ -17973,82 +18138,88 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_ResourceAssignedEvent] */ - export type ResourceAssignedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_ResourceAssignedEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_ResourceAssignedEvent.key] - */ - readonly key: any; - }; - /** - * [descr:_ui_gantt_ResourceAssigningEvent] - */ - export type ResourceAssigningEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type ResourceAssignedEvent = + DevExpress.common.core.events.EventInfo & { /** - * [descr:_ui_gantt_ResourceAssigningEvent.values] + * [descr:_ui_gantt_ResourceAssignedEvent.values] */ readonly values: any; + /** + * [descr:_ui_gantt_ResourceAssignedEvent.key] + */ + readonly key: any; }; /** - * [descr:_ui_gantt_ResourceDeletedEvent] + * [descr:_ui_gantt_ResourceAssigningEvent] */ - export type ResourceDeletedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_ResourceDeletedEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_ResourceDeletedEvent.key] - */ - readonly key: any; - }; + export type ResourceAssigningEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_ResourceAssigningEvent.values] + */ + readonly values: any; + }; /** - * [descr:_ui_gantt_ResourceDeletingEvent] + * [descr:_ui_gantt_ResourceDeletedEvent] */ - export type ResourceDeletingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type ResourceDeletedEvent = + DevExpress.common.core.events.EventInfo & { /** - * [descr:_ui_gantt_ResourceDeletingEvent.values] + * [descr:_ui_gantt_ResourceDeletedEvent.values] */ readonly values: any; /** - * [descr:_ui_gantt_ResourceDeletingEvent.key] + * [descr:_ui_gantt_ResourceDeletedEvent.key] */ readonly key: any; }; /** - * [descr:_ui_gantt_ResourceInsertedEvent] + * [descr:_ui_gantt_ResourceDeletingEvent] */ - export type ResourceInsertedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_ResourceInsertedEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_ResourceInsertedEvent.key] - */ - readonly key: any; - }; + export type ResourceDeletingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_ResourceDeletingEvent.values] + */ + readonly values: any; + /** + * [descr:_ui_gantt_ResourceDeletingEvent.key] + */ + readonly key: any; + }; /** - * [descr:_ui_gantt_ResourceInsertingEvent] + * [descr:_ui_gantt_ResourceInsertedEvent] */ - export type ResourceInsertingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type ResourceInsertedEvent = + DevExpress.common.core.events.EventInfo & { /** - * [descr:_ui_gantt_ResourceInsertingEvent.values] + * [descr:_ui_gantt_ResourceInsertedEvent.values] */ readonly values: any; + /** + * [descr:_ui_gantt_ResourceInsertedEvent.key] + */ + readonly key: any; }; + /** + * [descr:_ui_gantt_ResourceInsertingEvent] + */ + export type ResourceInsertingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_ResourceInsertingEvent.values] + */ + readonly values: any; + }; /** * [descr:_ui_gantt_ResourceManagerDialogShowingEvent] */ export type ResourceManagerDialogShowingEvent = - DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_ResourceManagerDialogShowingEvent.values] */ @@ -18058,7 +18229,7 @@ declare module DevExpress.ui { * [descr:_ui_gantt_ResourceUnassignedEvent] */ export type ResourceUnassignedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_ResourceUnassignedEvent.values] */ @@ -18071,22 +18242,23 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_ResourceUnassigningEvent] */ - export type ResourceUnassigningEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_ResourceUnassigningEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_ResourceUnassigningEvent.key] - */ - readonly key: any; - }; + export type ResourceUnassigningEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_ResourceUnassigningEvent.values] + */ + readonly values: any; + /** + * [descr:_ui_gantt_ResourceUnassigningEvent.key] + */ + readonly key: any; + }; /** * [descr:_ui_gantt_ScaleCellPreparedEvent] */ export type ScaleCellPreparedEvent = - DevExpress.events.InitializedEventInfo & { + DevExpress.common.core.events.InitializedEventInfo & { /** * [descr:_ui_gantt_ScaleCellPreparedEvent.scaleIndex] */ @@ -18115,16 +18287,17 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_SelectionChangedEvent.selectedRowKey] - */ - readonly selectedRowKey?: any; - }; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_SelectionChangedEvent.selectedRowKey] + */ + readonly selectedRowKey?: any; + }; /** * [descr:_ui_gantt_TaskClickEvent] */ - export type TaskClickEvent = DevExpress.events.NativeEventInfo< + export type TaskClickEvent = DevExpress.common.core.events.NativeEventInfo< dxGantt, PointerEvent | MouseEvent > & { @@ -18149,8 +18322,11 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_TaskDblClickEvent] */ - export type TaskDblClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo & { + export type TaskDblClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxGantt, + PointerEvent | MouseEvent + > & { /** * [descr:_ui_gantt_TaskDblClickEvent.key] */ @@ -18163,21 +18339,22 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_TaskDeletedEvent] */ - export type TaskDeletedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_TaskDeletedEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_TaskDeletedEvent.key] - */ - readonly key: any; - }; + export type TaskDeletedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_TaskDeletedEvent.values] + */ + readonly values: any; + /** + * [descr:_ui_gantt_TaskDeletedEvent.key] + */ + readonly key: any; + }; /** * [descr:_ui_gantt_TaskDeletingEvent] */ - export type TaskDeletingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type TaskDeletingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_TaskDeletingEvent.values] */ @@ -18190,43 +18367,45 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_TaskEditDialogShowingEvent] */ - export type TaskEditDialogShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type TaskEditDialogShowingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_TaskEditDialogShowingEvent.values] + */ + readonly values: any; + /** + * [descr:_ui_gantt_TaskEditDialogShowingEvent.key] + */ + readonly key: any; + /** + * [descr:_ui_gantt_TaskEditDialogShowingEvent.readOnlyFields] + */ + readonly readOnlyFields?: Array; + /** + * [descr:_ui_gantt_TaskEditDialogShowingEvent.hiddenFields] + */ + readonly hiddenFields?: Array; + }; + /** + * [descr:_ui_gantt_TaskInsertedEvent] + */ + export type TaskInsertedEvent = + DevExpress.common.core.events.EventInfo & { /** - * [descr:_ui_gantt_TaskEditDialogShowingEvent.values] + * [descr:_ui_gantt_TaskInsertedEvent.values] */ - readonly values: any; + readonly values?: any; /** - * [descr:_ui_gantt_TaskEditDialogShowingEvent.key] + * [descr:_ui_gantt_TaskInsertedEvent.key] */ readonly key: any; - /** - * [descr:_ui_gantt_TaskEditDialogShowingEvent.readOnlyFields] - */ - readonly readOnlyFields?: Array; - /** - * [descr:_ui_gantt_TaskEditDialogShowingEvent.hiddenFields] - */ - readonly hiddenFields?: Array; }; - /** - * [descr:_ui_gantt_TaskInsertedEvent] - */ - export type TaskInsertedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_TaskInsertedEvent.values] - */ - readonly values?: any; - /** - * [descr:_ui_gantt_TaskInsertedEvent.key] - */ - readonly key: any; - }; /** * [descr:_ui_gantt_TaskInsertingEvent] */ - export type TaskInsertingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type TaskInsertingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_TaskInsertingEvent.values] */ @@ -18235,8 +18414,8 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_TaskMovingEvent] */ - export type TaskMovingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type TaskMovingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_TaskMovingEvent.newValues] */ @@ -18253,21 +18432,22 @@ declare module DevExpress.ui { /** * [descr:_ui_gantt_TaskUpdatedEvent] */ - export type TaskUpdatedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_gantt_TaskUpdatedEvent.values] - */ - readonly values: any; - /** - * [descr:_ui_gantt_TaskUpdatedEvent.key] - */ - readonly key: any; - }; + export type TaskUpdatedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_gantt_TaskUpdatedEvent.values] + */ + readonly values: any; + /** + * [descr:_ui_gantt_TaskUpdatedEvent.key] + */ + readonly key: any; + }; /** * [descr:_ui_gantt_TaskUpdatingEvent] */ - export type TaskUpdatingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type TaskUpdatingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_gantt_TaskUpdatingEvent.newValues] */ @@ -18611,7 +18791,7 @@ declare module DevExpress.ui { /** * [descr:dxGanttOptions.dependencies.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxGanttOptions.dependencies.keyExpr] */ @@ -18851,7 +19031,7 @@ declare module DevExpress.ui { /** * [descr:dxGanttOptions.resourceAssignments.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxGanttOptions.resourceAssignments.keyExpr] */ @@ -18876,7 +19056,7 @@ declare module DevExpress.ui { /** * [descr:dxGanttOptions.resources.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxGanttOptions.resources.keyExpr] */ @@ -18942,7 +19122,7 @@ declare module DevExpress.ui { /** * [descr:dxGanttOptions.tasks.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxGanttOptions.tasks.endExpr] */ @@ -18984,7 +19164,7 @@ declare module DevExpress.ui { * [descr:dxGanttOptions.taskTooltipContentTemplate] */ taskTooltipContentTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, task: any @@ -18993,7 +19173,7 @@ declare module DevExpress.ui { * [descr:dxGanttOptions.taskTimeTooltipContentTemplate] */ taskTimeTooltipContentTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, item: DevExpress.ui.dxGantt.TimeTooltipTemplateData @@ -19002,7 +19182,7 @@ declare module DevExpress.ui { * [descr:dxGanttOptions.taskProgressTooltipContentTemplate] */ taskProgressTooltipContentTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, item: DevExpress.ui.dxGantt.ProgressTooltipTemplateData @@ -19011,7 +19191,7 @@ declare module DevExpress.ui { * [descr:dxGanttOptions.taskContentTemplate] */ taskContentTemplate?: - | DevExpress.core.template + | template | (( container: DevExpress.core.DxElement, item: DevExpress.ui.dxGantt.TaskContentTemplateData @@ -19231,22 +19411,24 @@ declare module DevExpress.ui { /** * [descr:_ui_html_editor_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_html_editor_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_html_editor_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxHtmlEditor, FocusEvent >; /** * [descr:_ui_html_editor_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxHtmlEditor, FocusEvent >; @@ -19350,7 +19532,7 @@ declare module DevExpress.ui { * [descr:_ui_html_editor_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; export interface MentionTemplateData { readonly marker: string; readonly id?: string | number; @@ -19359,17 +19541,19 @@ declare module DevExpress.ui { /** * [descr:_ui_html_editor_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxHtmlEditorOptions; /** * [descr:_ui_html_editor_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxHtmlEditor, - KeyboardEvent | ClipboardEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxHtmlEditor, + KeyboardEvent | ClipboardEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxHtmlEditorImageUpload] @@ -19432,7 +19616,7 @@ declare module DevExpress.ui { /** * [descr:dxHtmlEditorMention.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxHtmlEditorMention.displayExpr] */ @@ -19441,7 +19625,7 @@ declare module DevExpress.ui { * [descr:dxHtmlEditorMention.itemTemplate] */ itemTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -19467,7 +19651,7 @@ declare module DevExpress.ui { * [descr:dxHtmlEditorMention.template] */ template?: - | DevExpress.core.template + | template | (( mentionData: DevExpress.ui.dxHtmlEditor.MentionTemplateData, contentElement: DevExpress.core.DxElement @@ -19663,7 +19847,7 @@ declare module DevExpress.ui { /** * [descr:dxHtmlEditorVariables.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxHtmlEditorVariables.escapeChar] */ @@ -19786,14 +19970,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_list_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -19822,7 +20006,7 @@ declare module DevExpress.ui { export type GroupRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_list_GroupRenderedEvent.groupData] */ @@ -19842,14 +20026,14 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo>; /** * [descr:_ui_list_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxList, KeyboardEvent | MouseEvent | PointerEvent > & @@ -19860,7 +20044,7 @@ declare module DevExpress.ui { export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxList, MouseEvent | PointerEvent | TouchEvent > & @@ -19871,7 +20055,8 @@ declare module DevExpress.ui { export type ItemDeletedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & ListItemInfo; + > = DevExpress.common.core.events.EventInfo> & + ListItemInfo; export type ItemDeleteMode = | 'context' | 'slideButton' @@ -19885,7 +20070,7 @@ declare module DevExpress.ui { export type ItemDeletingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & ListItemInfo & { /** * [descr:_ui_list_ItemDeletingEvent.cancel] @@ -19898,7 +20083,7 @@ declare module DevExpress.ui { export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxList, MouseEvent | PointerEvent | TouchEvent > & @@ -19913,15 +20098,15 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends Item | any = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_list_ItemReorderedEvent] */ export type ItemReorderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & ListItemInfo & { /** * [descr:_ui_list_ItemReorderedEvent.fromIndex] @@ -19938,7 +20123,7 @@ declare module DevExpress.ui { export type ItemSwipeEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxList, MouseEvent | PointerEvent | TouchEvent > & @@ -19973,15 +20158,15 @@ declare module DevExpress.ui { export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_list_PageLoadingEvent] */ export type PageLoadingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type Properties< TItem extends ItemLike = any, TKey = any @@ -19992,14 +20177,17 @@ declare module DevExpress.ui { export type PullRefreshEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_list_ScrollEvent] */ export type ScrollEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo, Event> & + > = DevExpress.common.core.events.NativeEventInfo< + dxList, + Event + > & ScrollInfo; /** * [descr:ScrollInfo] @@ -20033,7 +20221,7 @@ declare module DevExpress.ui { export type SelectAllValueChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_list_SelectAllValueChangedEvent.value] */ @@ -20045,7 +20233,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.ui.CollectionWidget.SelectionChangeInfo; /** * [descr:_ui_list_SelectionChangingEvent] @@ -20107,7 +20295,7 @@ declare module DevExpress.ui { /** * [descr:dxListOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxListOptions.displayExpr] */ @@ -20120,7 +20308,7 @@ declare module DevExpress.ui { * [descr:dxListOptions.groupTemplate] */ groupTemplate?: - | DevExpress.core.template + | template | (( groupData: any, groupIndex: number, @@ -20315,22 +20503,23 @@ declare module DevExpress.ui { * [descr:_ui_load_indicator_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_indicator_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_indicator_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_load_indicator_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxLoadIndicatorOptions; } /** @@ -20353,40 +20542,45 @@ declare module DevExpress.ui { /** * [descr:_ui_load_panel_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_panel_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_panel_HiddenEvent] */ - export type HiddenEvent = DevExpress.events.EventInfo; + export type HiddenEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_panel_HidingEvent] */ - export type HidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type HidingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_panel_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_load_panel_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxLoadPanelOptions; /** * [descr:_ui_load_panel_ShowingEvent] */ - export type ShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type ShowingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_load_panel_ShownEvent] */ - export type ShownEvent = DevExpress.events.EventInfo; + export type ShownEvent = + DevExpress.common.core.events.EventInfo; } /** * [descr:dxLoadPanelAnimation] @@ -20396,11 +20590,11 @@ declare module DevExpress.ui { /** * [descr:dxLoadPanelOptions.animation.hide] */ - hide?: AnimationConfig; + hide?: DevExpress.common.core.animation.AnimationConfig; /** * [descr:dxLoadPanelOptions.animation.show] */ - show?: AnimationConfig; + show?: DevExpress.common.core.animation.AnimationConfig; } /** * [descr:dxLoadPanelOptions] @@ -20447,7 +20641,10 @@ declare module DevExpress.ui { /** * [descr:dxLoadPanelOptions.position] */ - position?: DevExpress.common.PositionAlignment | PositionConfig | Function; + position?: + | DevExpress.common.PositionAlignment + | DevExpress.common.core.animation.PositionConfig + | Function; /** * [descr:dxLoadPanelOptions.shadingColor] */ @@ -20473,50 +20670,55 @@ declare module DevExpress.ui { /** * [descr:_ui_lookup_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_lookup_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_lookup_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_lookup_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_lookup_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< + export type ItemClickEvent = DevExpress.common.core.events.NativeEventInfo< dxLookup, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_lookup_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_lookup_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_lookup_PageLoadingEvent] */ - export type PageLoadingEvent = DevExpress.events.EventInfo; + export type PageLoadingEvent = + DevExpress.common.core.events.EventInfo; export type Properties = dxLookupOptions; /** * [descr:_ui_lookup_PullRefreshEvent] */ - export type PullRefreshEvent = DevExpress.events.EventInfo; + export type PullRefreshEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_lookup_ScrollEvent] */ - export type ScrollEvent = DevExpress.events.NativeEventInfo< + export type ScrollEvent = DevExpress.common.core.events.NativeEventInfo< dxLookup, MouseEvent | Event > & @@ -20524,18 +20726,21 @@ declare module DevExpress.ui { /** * [descr:_ui_lookup_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo & - DevExpress.ui.dxDropDownList.SelectionChangedInfo; - export type TitleRenderedEvent = DevExpress.events.EventInfo & - DevExpress.ui.dxPopup.TitleRenderedInfo; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.ui.dxDropDownList.SelectionChangedInfo; + export type TitleRenderedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.ui.dxPopup.TitleRenderedInfo; /** * [descr:_ui_lookup_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxLookup, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxLookup, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxLookupOptions] @@ -20567,7 +20772,7 @@ declare module DevExpress.ui { * [descr:dxLookupOptions.fieldTemplate] */ fieldTemplate?: - | DevExpress.core.template + | template | (( selectedItem: any, fieldElement: DevExpress.core.DxElement @@ -20585,7 +20790,7 @@ declare module DevExpress.ui { * [descr:dxLookupOptions.groupTemplate] */ groupTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -20716,53 +20921,56 @@ declare module DevExpress.ui { /** * [descr:_ui_map_ClickEvent] */ - export type ClickEvent = DevExpress.events.NativeEventInfo< + export type ClickEvent = DevExpress.common.core.events.NativeEventInfo< dxMap, MouseEvent | PointerEvent >; /** * [descr:_ui_map_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_map_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; export type MapProvider = 'azure' | 'bing' | 'google' | 'googleStatic'; export type MapType = 'hybrid' | 'roadmap' | 'satellite'; /** * [descr:_ui_map_MarkerAddedEvent] */ - export type MarkerAddedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_map_MarkerAddedEvent.options] - */ - readonly options: any; - /** - * [descr:_ui_map_MarkerAddedEvent.originalMarker] - */ - originalMarker: any; - }; + export type MarkerAddedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_map_MarkerAddedEvent.options] + */ + readonly options: any; + /** + * [descr:_ui_map_MarkerAddedEvent.originalMarker] + */ + originalMarker: any; + }; /** * [descr:_ui_map_MarkerRemovedEvent] */ - export type MarkerRemovedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_map_MarkerRemovedEvent.options] - */ - readonly options?: any; - }; + export type MarkerRemovedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_map_MarkerRemovedEvent.options] + */ + readonly options?: any; + }; /** * [descr:_ui_map_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxMapOptions; /** * [descr:_ui_map_ReadyEvent] */ - export type ReadyEvent = DevExpress.events.EventInfo & { + export type ReadyEvent = DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_map_ReadyEvent.originalMap] */ @@ -20771,26 +20979,28 @@ declare module DevExpress.ui { /** * [descr:_ui_map_RouteAddedEvent] */ - export type RouteAddedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_map_RouteAddedEvent.options] - */ - readonly options: any; - /** - * [descr:_ui_map_RouteAddedEvent.originalRoute] - */ - originalRoute: any; - }; + export type RouteAddedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_map_RouteAddedEvent.options] + */ + readonly options: any; + /** + * [descr:_ui_map_RouteAddedEvent.originalRoute] + */ + originalRoute: any; + }; export type RouteMode = 'driving' | 'walking'; /** * [descr:_ui_map_RouteRemovedEvent] */ - export type RouteRemovedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_map_RouteRemovedEvent.options] - */ - readonly options?: any; - }; + export type RouteRemovedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_map_RouteRemovedEvent.options] + */ + readonly options?: any; + }; } /** * [descr:dxMapOptions] @@ -20970,15 +21180,13 @@ declare module DevExpress.ui { /** * [descr:_ui_menu_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo< - dxMenu - >; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_menu_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo< - dxMenu - >; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -20998,31 +21206,31 @@ declare module DevExpress.ui { * [descr:_ui_menu_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo>; + DevExpress.common.core.events.InitializedEventInfo>; /** * [descr:_ui_menu_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< - dxMenu, - KeyboardEvent | MouseEvent | PointerEvent - > & - DevExpress.events.ItemInfo; + export type ItemClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxMenu, + KeyboardEvent | MouseEvent | PointerEvent + > & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_menu_ItemContextMenuEvent] */ export type ItemContextMenuEvent = - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< dxMenu, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_menu_ItemRenderedEvent] */ - export type ItemRenderedEvent = DevExpress.events.EventInfo< - dxMenu - > & - DevExpress.events.ItemInfo; + export type ItemRenderedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -21063,94 +21271,90 @@ declare module DevExpress.ui { /** * [descr:_ui_menu_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo< - dxMenu - > & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxMenuOptions; /** * [descr:_ui_menu_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo< - dxMenu - > & - DevExpress.ui.CollectionWidget.SelectionChangeInfo; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.ui.CollectionWidget.SelectionChangeInfo; export type SubmenuDirection = 'auto' | 'leftOrTop' | 'rightOrBottom'; /** * [descr:_ui_menu_SubmenuHiddenEvent] */ - export type SubmenuHiddenEvent = DevExpress.events.EventInfo< - dxMenu - > & { - /** - * [descr:_ui_menu_SubmenuHiddenEvent.itemData] - */ - readonly itemData?: Item; - /** - * [descr:_ui_menu_SubmenuHiddenEvent.rootItem] - */ - readonly rootItem?: DevExpress.core.DxElement; - /** - * [descr:_ui_menu_SubmenuHiddenEvent.submenuContainer] - */ - readonly submenuContainer?: DevExpress.core.DxElement; - }; - /** - * [descr:_ui_menu_SubmenuHidingEvent] - */ - export type SubmenuHidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & { + export type SubmenuHiddenEvent = + DevExpress.common.core.events.EventInfo> & { /** - * [descr:_ui_menu_SubmenuHidingEvent.itemData] + * [descr:_ui_menu_SubmenuHiddenEvent.itemData] */ readonly itemData?: Item; /** - * [descr:_ui_menu_SubmenuHidingEvent.rootItem] + * [descr:_ui_menu_SubmenuHiddenEvent.rootItem] */ readonly rootItem?: DevExpress.core.DxElement; /** - * [descr:_ui_menu_SubmenuHidingEvent.submenuContainer] + * [descr:_ui_menu_SubmenuHiddenEvent.submenuContainer] */ readonly submenuContainer?: DevExpress.core.DxElement; }; + /** + * [descr:_ui_menu_SubmenuHidingEvent] + */ + export type SubmenuHidingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & { + /** + * [descr:_ui_menu_SubmenuHidingEvent.itemData] + */ + readonly itemData?: Item; + /** + * [descr:_ui_menu_SubmenuHidingEvent.rootItem] + */ + readonly rootItem?: DevExpress.core.DxElement; + /** + * [descr:_ui_menu_SubmenuHidingEvent.submenuContainer] + */ + readonly submenuContainer?: DevExpress.core.DxElement; + }; /** * [descr:_ui_menu_SubmenuShowingEvent] */ - export type SubmenuShowingEvent = DevExpress.events.EventInfo< - dxMenu - > & { - /** - * [descr:_ui_menu_SubmenuShowingEvent.itemData] - */ - readonly itemData?: Item; - /** - * [descr:_ui_menu_SubmenuShowingEvent.rootItem] - */ - readonly rootItem?: DevExpress.core.DxElement; - /** - * [descr:_ui_menu_SubmenuShowingEvent.submenuContainer] - */ - readonly submenuContainer?: DevExpress.core.DxElement; - }; + export type SubmenuShowingEvent = + DevExpress.common.core.events.EventInfo> & { + /** + * [descr:_ui_menu_SubmenuShowingEvent.itemData] + */ + readonly itemData?: Item; + /** + * [descr:_ui_menu_SubmenuShowingEvent.rootItem] + */ + readonly rootItem?: DevExpress.core.DxElement; + /** + * [descr:_ui_menu_SubmenuShowingEvent.submenuContainer] + */ + readonly submenuContainer?: DevExpress.core.DxElement; + }; /** * [descr:_ui_menu_SubmenuShownEvent] */ - export type SubmenuShownEvent = DevExpress.events.EventInfo< - dxMenu - > & { - /** - * [descr:_ui_menu_SubmenuShownEvent.itemData] - */ - readonly itemData?: Item; - /** - * [descr:_ui_menu_SubmenuShownEvent.rootItem] - */ - readonly rootItem?: DevExpress.core.DxElement; - /** - * [descr:_ui_menu_SubmenuShownEvent.submenuContainer] - */ - readonly submenuContainer?: DevExpress.core.DxElement; - }; + export type SubmenuShownEvent = + DevExpress.common.core.events.EventInfo> & { + /** + * [descr:_ui_menu_SubmenuShownEvent.itemData] + */ + readonly itemData?: Item; + /** + * [descr:_ui_menu_SubmenuShownEvent.rootItem] + */ + readonly rootItem?: DevExpress.core.DxElement; + /** + * [descr:_ui_menu_SubmenuShownEvent.submenuContainer] + */ + readonly submenuContainer?: DevExpress.core.DxElement; + }; } /** * [descr:dxMenuBase] @@ -21204,11 +21408,11 @@ declare module DevExpress.ui { /** * [descr:dxMenuBaseOptions.animation.hide] */ - hide?: AnimationConfig; + hide?: DevExpress.common.core.animation.AnimationConfig; /** * [descr:dxMenuBaseOptions.animation.show] */ - show?: AnimationConfig; + show?: DevExpress.common.core.animation.AnimationConfig; }; /** * [descr:dxMenuBaseOptions.cssClass] @@ -21217,7 +21421,7 @@ declare module DevExpress.ui { /** * [descr:dxMenuBaseOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxMenuBaseOptions.items] */ @@ -21288,7 +21492,7 @@ declare module DevExpress.ui { /** * [descr:dxMenuOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike< + dataSource?: DevExpress.data.DataSourceLike< DevExpress.ui.dxMenu.Item, TKey > | null; @@ -21375,14 +21579,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_multi_view_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -21401,40 +21605,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxMultiView + >; /** * [descr:_ui_multi_view_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxMultiView, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_multi_view_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxMultiView, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_multi_view_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxMultiView, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -21445,16 +21651,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_multi_view_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -21465,7 +21671,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.ui.CollectionWidget.SelectionChangeInfo; } /** @@ -21485,7 +21691,7 @@ declare module DevExpress.ui { /** * [descr:dxMultiViewOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxMultiViewOptions.deferRendering] */ @@ -21537,50 +21743,52 @@ declare module DevExpress.ui { /** * [descr:_ui_number_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, Event >; /** * [descr:_ui_number_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_number_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, ClipboardEvent >; /** * [descr:_ui_number_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, ClipboardEvent >; /** * [descr:_ui_number_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_number_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, KeyboardEvent >; /** * [descr:_ui_number_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, FocusEvent >; /** * [descr:_ui_number_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, FocusEvent >; @@ -21588,29 +21796,29 @@ declare module DevExpress.ui { * [descr:_ui_number_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_number_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_number_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, KeyboardEvent >; /** * [descr:_ui_number_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, KeyboardEvent >; @@ -21619,12 +21827,13 @@ declare module DevExpress.ui { /** * [descr:_ui_number_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_number_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxNumberBox, ClipboardEvent >; @@ -21632,11 +21841,12 @@ declare module DevExpress.ui { /** * [descr:_ui_number_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxNumberBox, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxNumberBox, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxNumberBoxOptions] @@ -21654,7 +21864,7 @@ declare module DevExpress.ui { /** * [descr:dxNumberBoxOptions.format] */ - format?: Format; + format?: DevExpress.common.core.localization.Format; /** * [descr:dxNumberBoxOptions.invalidValueMessage] */ @@ -21722,11 +21932,11 @@ declare module DevExpress.ui { /** * [descr:dxOverlayOptions.animation.hide] */ - hide?: AnimationConfig; + hide?: DevExpress.common.core.animation.AnimationConfig; /** * [descr:dxOverlayOptions.animation.show] */ - show?: AnimationConfig; + show?: DevExpress.common.core.animation.AnimationConfig; } /** * [descr:dxOverlayOptions] @@ -21753,7 +21963,7 @@ declare module DevExpress.ui { * [descr:dxOverlayOptions.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( contentElement: DevExpress.core.DxElement ) => string | DevExpress.core.UserDefinedElement); @@ -21803,23 +22013,25 @@ declare module DevExpress.ui { /** * [descr:dxOverlayOptions.onHidden] */ - onHidden?: (e: DevExpress.events.EventInfo) => void; + onHidden?: (e: DevExpress.common.core.events.EventInfo) => void; /** * [descr:dxOverlayOptions.onHiding] */ onHiding?: ( - e: DevExpress.events.Cancelable & DevExpress.events.EventInfo + e: DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo ) => void; /** * [descr:dxOverlayOptions.onShowing] */ onShowing?: ( - e: DevExpress.events.Cancelable & DevExpress.events.EventInfo + e: DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo ) => void; /** * [descr:dxOverlayOptions.onShown] */ - onShown?: (e: DevExpress.events.EventInfo) => void; + onShown?: (e: DevExpress.common.core.events.EventInfo) => void; /** * [descr:dxOverlayOptions.position] */ @@ -21921,8 +22133,8 @@ declare module DevExpress.ui { /** * [descr:_ui_pivot_grid_CellClickEvent] */ - export type CellClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type CellClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxPivotGrid, MouseEvent | PointerEvent > & { @@ -21962,37 +22174,39 @@ declare module DevExpress.ui { /** * [descr:_ui_pivot_grid_CellPreparedEvent] */ - export type CellPreparedEvent = DevExpress.events.EventInfo & { - /** - * [descr:_ui_pivot_grid_CellPreparedEvent.area] - */ - readonly area?: string; - /** - * [descr:_ui_pivot_grid_CellPreparedEvent.cellElement] - */ - readonly cellElement?: DevExpress.core.DxElement; - /** - * [descr:_ui_pivot_grid_CellPreparedEvent.cell] - */ - readonly cell?: Cell; - /** - * [descr:_ui_pivot_grid_CellPreparedEvent.rowIndex] - */ - readonly rowIndex?: number; - /** - * [descr:_ui_pivot_grid_CellPreparedEvent.columnIndex] - */ - readonly columnIndex?: number; - }; + export type CellPreparedEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_pivot_grid_CellPreparedEvent.area] + */ + readonly area?: string; + /** + * [descr:_ui_pivot_grid_CellPreparedEvent.cellElement] + */ + readonly cellElement?: DevExpress.core.DxElement; + /** + * [descr:_ui_pivot_grid_CellPreparedEvent.cell] + */ + readonly cell?: Cell; + /** + * [descr:_ui_pivot_grid_CellPreparedEvent.rowIndex] + */ + readonly rowIndex?: number; + /** + * [descr:_ui_pivot_grid_CellPreparedEvent.columnIndex] + */ + readonly columnIndex?: number; + }; /** * [descr:_ui_pivot_grid_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_pivot_grid_ContextMenuPreparingEvent] */ export type ContextMenuPreparingEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_pivot_grid_ContextMenuPreparingEvent.area] */ @@ -22037,12 +22251,13 @@ declare module DevExpress.ui { /** * [descr:_ui_pivot_grid_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_pivot_grid_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { + export type ExportingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_pivot_grid_ExportingEvent.fileName] */ @@ -22052,12 +22267,13 @@ declare module DevExpress.ui { * [descr:_ui_pivot_grid_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_pivot_grid_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type PivotGridDataFieldArea = 'column' | 'row'; export type PivotGridRowHeaderLayout = 'standard' | 'tree'; export type PivotGridTotalDisplayMode = @@ -22093,12 +22309,12 @@ declare module DevExpress.ui { * [descr:_ui_pivot_grid_field_chooser_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_pivot_grid_field_chooser_ContextMenuPreparingEvent] */ export type ContextMenuPreparingEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_pivot_grid_field_chooser_ContextMenuPreparingEvent.area] */ @@ -22120,18 +22336,18 @@ declare module DevExpress.ui { * [descr:_ui_pivot_grid_field_chooser_DisposingEvent] */ export type DisposingEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_pivot_grid_field_chooser_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_pivot_grid_field_chooser_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxPivotGridFieldChooserOptions; } /** @@ -22800,30 +23016,34 @@ declare module DevExpress.ui { /** * [descr:_ui_popover_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_popover_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_popover_HiddenEvent] */ - export type HiddenEvent = DevExpress.events.EventInfo; + export type HiddenEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_popover_HidingEvent] */ - export type HidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type HidingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_popover_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_popover_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -22832,17 +23052,18 @@ declare module DevExpress.ui { /** * [descr:_ui_popover_ShowingEvent] */ - export type ShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type ShowingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_popover_ShownEvent] */ - export type ShownEvent = DevExpress.events.EventInfo; + export type ShownEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_popover_TitleRenderedEvent] */ - export type TitleRenderedEvent = DevExpress.events.EventInfo & - DevExpress.ui.dxPopup.TitleRenderedInfo; + export type TitleRenderedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.ui.dxPopup.TitleRenderedInfo; } /** * [descr:dxPopoverAnimation] @@ -22852,11 +23073,11 @@ declare module DevExpress.ui { /** * [descr:dxPopoverOptions.animation.hide] */ - hide?: AnimationConfig; + hide?: DevExpress.common.core.animation.AnimationConfig; /** * [descr:dxPopoverOptions.animation.show] */ - show?: AnimationConfig; + show?: DevExpress.common.core.animation.AnimationConfig; } /** * [descr:dxPopoverOptions] @@ -22917,7 +23138,9 @@ declare module DevExpress.ui { /** * [descr:dxPopoverOptions.position] */ - position?: DevExpress.common.Position | PositionConfig; + position?: + | DevExpress.common.Position + | DevExpress.common.core.animation.PositionConfig; /** * [descr:dxPopoverOptions.shading] */ @@ -22958,40 +23181,44 @@ declare module DevExpress.ui { TProperties = DevExpress.ui.dxPopup.Properties > extends dxOverlay {} module dxPopup { - export type ContentReadyEvent = DevExpress.events.EventInfo; - export type DisposingEvent = DevExpress.events.EventInfo; - export type HiddenEvent = DevExpress.events.EventInfo; - export type HidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; + export type HiddenEvent = DevExpress.common.core.events.EventInfo; + export type HidingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; export type InitializedEvent = - DevExpress.events.InitializedEventInfo; - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.InitializedEventInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ interface PopupInstance extends dxPopup {} export type Properties = dxPopupOptions; - export type ResizeEndEvent = DevExpress.events.NativeEventInfo< - dxPopup, - MouseEvent | TouchEvent - > & - DevExpress.ui.dxResizable.ResizeInfo; - export type ResizeEvent = DevExpress.events.NativeEventInfo< + export type ResizeEndEvent = DevExpress.common.core.events.NativeEventInfo< dxPopup, MouseEvent | TouchEvent > & DevExpress.ui.dxResizable.ResizeInfo; - export type ResizeStartEvent = DevExpress.events.NativeEventInfo< + export type ResizeEvent = DevExpress.common.core.events.NativeEventInfo< dxPopup, MouseEvent | TouchEvent > & DevExpress.ui.dxResizable.ResizeInfo; - export type ShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; - export type ShownEvent = DevExpress.events.EventInfo; - export type TitleRenderedEvent = DevExpress.events.EventInfo & - TitleRenderedInfo; + export type ResizeStartEvent = + DevExpress.common.core.events.NativeEventInfo< + dxPopup, + MouseEvent | TouchEvent + > & + DevExpress.ui.dxResizable.ResizeInfo; + export type ShowingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; + export type ShownEvent = DevExpress.common.core.events.EventInfo; + export type TitleRenderedEvent = + DevExpress.common.core.events.EventInfo & TitleRenderedInfo; /** * [descr:TitleRenderedInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -23009,11 +23236,11 @@ declare module DevExpress.ui { /** * [descr:dxPopupOptions.animation.hide] */ - hide?: AnimationConfig; + hide?: DevExpress.common.core.animation.AnimationConfig; /** * [descr:dxPopupOptions.animation.show] */ - show?: AnimationConfig; + show?: DevExpress.common.core.animation.AnimationConfig; } /** * [descr:dxPopupOptions] @@ -23070,13 +23297,16 @@ declare module DevExpress.ui { * [descr:dxPopupOptions.onTitleRendered] */ onTitleRendered?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.ui.dxPopup.TitleRenderedInfo ) => void; /** * [descr:dxPopupOptions.position] */ - position?: DevExpress.common.PositionAlignment | PositionConfig | Function; + position?: + | DevExpress.common.PositionAlignment + | DevExpress.common.core.animation.PositionConfig + | Function; /** * [descr:dxPopupOptions.enableBodyScroll] */ @@ -23105,7 +23335,7 @@ declare module DevExpress.ui { * [descr:dxPopupOptions.titleTemplate] */ titleTemplate?: - | DevExpress.core.template + | template | (( titleElement: DevExpress.core.DxElement ) => string | DevExpress.core.UserDefinedElement); @@ -23132,32 +23362,34 @@ declare module DevExpress.ui { * [descr:_ui_progress_bar_CompleteEvent] */ export type CompleteEvent = - DevExpress.events.NativeEventInfo; + DevExpress.common.core.events.NativeEventInfo; /** * [descr:_ui_progress_bar_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_progress_bar_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_progress_bar_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_progress_bar_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxProgressBarOptions; /** * [descr:_ui_progress_bar_ValueChangedEvent] */ export type ValueChangedEvent = - DevExpress.events.NativeEventInfo & + DevExpress.common.core.events.NativeEventInfo & DevExpress.ui.Editor.ValueChangedInfo; } /** @@ -23188,36 +23420,40 @@ declare module DevExpress.ui { * [descr:dxRadioGroup] */ export class dxRadioGroup extends Editor { - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } module dxRadioGroup { /** * [descr:_ui_radio_group_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_radio_group_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_radio_group_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_radio_group_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxRadioGroupOptions; /** * [descr:_ui_radio_group_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxRadioGroup, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxRadioGroup, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxRadioGroupOptions] @@ -23265,44 +23501,47 @@ declare module DevExpress.ui { /** * [descr:_ui_range_slider_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_range_slider_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_range_slider_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_range_slider_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxRangeSliderOptions; /** * [descr:_ui_range_slider_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxRangeSlider, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | UIEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo & { - /** - * [descr:_ui_range_slider_ValueChangedEvent.start] - */ - readonly start?: number; - /** - * [descr:_ui_range_slider_ValueChangedEvent.end] - */ - readonly end?: number; - /** - * [descr:_ui_range_slider_ValueChangedEvent.value] - */ - readonly value?: Array; - }; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxRangeSlider, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | UIEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo & { + /** + * [descr:_ui_range_slider_ValueChangedEvent.start] + */ + readonly start?: number; + /** + * [descr:_ui_range_slider_ValueChangedEvent.end] + */ + readonly end?: number; + /** + * [descr:_ui_range_slider_ValueChangedEvent.value] + */ + readonly value?: Array; + }; } /** * [descr:dxRangeSliderOptions] @@ -23345,23 +23584,23 @@ declare module DevExpress.ui { * [descr:_ui_recurrence_editor_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_recurrence_editor_DisposingEvent] */ export type DisposingEvent = - DevExpress.events.EventInfo; + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_recurrence_editor_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_recurrence_editor_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -23369,11 +23608,9 @@ declare module DevExpress.ui { /** * [descr:_ui_recurrence_editor_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxRecurrenceEditor, - Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxRecurrenceEditorOptions] @@ -23394,22 +23631,24 @@ declare module DevExpress.ui { /** * [descr:_ui_resizable_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_resizable_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_resizable_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxResizableOptions; /** * [descr:_ui_resizable_ResizeEndEvent] */ - export type ResizeEndEvent = DevExpress.events.NativeEventInfo< + export type ResizeEndEvent = DevExpress.common.core.events.NativeEventInfo< dxResizable, MouseEvent | TouchEvent > & @@ -23417,7 +23656,7 @@ declare module DevExpress.ui { /** * [descr:_ui_resizable_ResizeEvent] */ - export type ResizeEvent = DevExpress.events.NativeEventInfo< + export type ResizeEvent = DevExpress.common.core.events.NativeEventInfo< dxResizable, MouseEvent | TouchEvent > & @@ -23440,11 +23679,12 @@ declare module DevExpress.ui { /** * [descr:_ui_resizable_ResizeStartEvent] */ - export type ResizeStartEvent = DevExpress.events.NativeEventInfo< - dxResizable, - MouseEvent | TouchEvent - > & - ResizeInfo; + export type ResizeStartEvent = + DevExpress.common.core.events.NativeEventInfo< + dxResizable, + MouseEvent | TouchEvent + > & + ResizeInfo; } /** * [descr:dxResizableOptions] @@ -23519,14 +23759,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_responsive_box_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -23544,40 +23784,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxResponsiveBox + >; /** * [descr:_ui_responsive_box_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxResponsiveBox, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_responsive_box_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxResponsiveBox, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_responsive_box_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxResponsiveBox, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -23588,16 +23830,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_responsive_box_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -23674,7 +23916,7 @@ declare module DevExpress.ui { /** * [descr:dxResponsiveBoxOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxResponsiveBoxOptions.height] */ @@ -23737,7 +23979,7 @@ declare module DevExpress.ui { date: Date | string, recurrenceEditMode: DevExpress.ui.dxScheduler.RecurrenceEditMode ): void; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxScheduler.getEndViewDate()] */ @@ -23790,7 +24032,7 @@ declare module DevExpress.ui { * [descr:_ui_scheduler_AppointmentAddedEvent] */ export type AppointmentAddedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_scheduler_AppointmentAddedEvent.appointmentData] */ @@ -23804,7 +24046,7 @@ declare module DevExpress.ui { * [descr:_ui_scheduler_AppointmentAddingEvent] */ export type AppointmentAddingEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_scheduler_AppointmentAddingEvent.appointmentData] */ @@ -23817,17 +24059,18 @@ declare module DevExpress.ui { /** * [descr:_ui_scheduler_AppointmentClickEvent] */ - export type AppointmentClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< - dxScheduler, - KeyboardEvent | MouseEvent | PointerEvent - > & - TargetedAppointmentInfo & { - /** - * [descr:_ui_scheduler_AppointmentClickEvent.appointmentElement] - */ - readonly appointmentElement: DevExpress.core.DxElement; - }; + export type AppointmentClickEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxScheduler, + KeyboardEvent | MouseEvent | PointerEvent + > & + TargetedAppointmentInfo & { + /** + * [descr:_ui_scheduler_AppointmentClickEvent.appointmentElement] + */ + readonly appointmentElement: DevExpress.core.DxElement; + }; export type AppointmentCollectorTemplateData = { readonly appointmentCount: number; readonly isCompact: boolean; @@ -23835,35 +24078,37 @@ declare module DevExpress.ui { /** * [descr:_ui_scheduler_AppointmentContextMenuEvent] */ - export type AppointmentContextMenuEvent = DevExpress.events.NativeEventInfo< - dxScheduler, - MouseEvent | PointerEvent | TouchEvent - > & - TargetedAppointmentInfo & { - /** - * [descr:_ui_scheduler_AppointmentContextMenuEvent.appointmentElement] - */ - readonly appointmentElement: DevExpress.core.DxElement; - }; + export type AppointmentContextMenuEvent = + DevExpress.common.core.events.NativeEventInfo< + dxScheduler, + MouseEvent | PointerEvent | TouchEvent + > & + TargetedAppointmentInfo & { + /** + * [descr:_ui_scheduler_AppointmentContextMenuEvent.appointmentElement] + */ + readonly appointmentElement: DevExpress.core.DxElement; + }; /** * [descr:_ui_scheduler_AppointmentDblClickEvent] */ - export type AppointmentDblClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< - dxScheduler, - MouseEvent | PointerEvent - > & - TargetedAppointmentInfo & { - /** - * [descr:_ui_scheduler_AppointmentDblClickEvent.appointmentElement] - */ - readonly appointmentElement: DevExpress.core.DxElement; - }; + export type AppointmentDblClickEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxScheduler, + MouseEvent | PointerEvent + > & + TargetedAppointmentInfo & { + /** + * [descr:_ui_scheduler_AppointmentDblClickEvent.appointmentElement] + */ + readonly appointmentElement: DevExpress.core.DxElement; + }; /** * [descr:_ui_scheduler_AppointmentDeletedEvent] */ export type AppointmentDeletedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_scheduler_AppointmentDeletedEvent.appointmentData] */ @@ -23877,7 +24122,7 @@ declare module DevExpress.ui { * [descr:_ui_scheduler_AppointmentDeletingEvent] */ export type AppointmentDeletingEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_scheduler_AppointmentDeletingEvent.appointmentData] */ @@ -23892,13 +24137,14 @@ declare module DevExpress.ui { readonly toComponent?: dxSortable | dxDraggable; readonly toData?: any; }; - export type AppointmentDraggingEndEvent = DevExpress.events.Cancelable & - AppointmentDraggingEvent & { - readonly fromComponent?: dxSortable | dxDraggable; - readonly toComponent?: dxSortable | dxDraggable; - readonly toData?: any; - readonly toItemData?: any; - }; + export type AppointmentDraggingEndEvent = + DevExpress.common.core.events.Cancelable & + AppointmentDraggingEvent & { + readonly fromComponent?: dxSortable | dxDraggable; + readonly toComponent?: dxSortable | dxDraggable; + readonly toData?: any; + readonly toItemData?: any; + }; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -23909,43 +24155,46 @@ declare module DevExpress.ui { readonly itemElement?: DevExpress.core.DxElement; readonly fromData?: any; } - export type AppointmentDraggingMoveEvent = DevExpress.events.Cancelable & - AppointmentDraggingEvent & { - readonly fromComponent?: dxSortable | dxDraggable; - readonly toComponent?: dxSortable | dxDraggable; - readonly toData?: any; - }; + export type AppointmentDraggingMoveEvent = + DevExpress.common.core.events.Cancelable & + AppointmentDraggingEvent & { + readonly fromComponent?: dxSortable | dxDraggable; + readonly toComponent?: dxSortable | dxDraggable; + readonly toData?: any; + }; export type AppointmentDraggingRemoveEvent = AppointmentDraggingEvent & { readonly fromComponent?: dxSortable | dxDraggable; readonly toComponent?: dxSortable | dxDraggable; }; - export type AppointmentDraggingStartEvent = DevExpress.events.Cancelable & - Omit & { - itemData?: any; - }; + export type AppointmentDraggingStartEvent = + DevExpress.common.core.events.Cancelable & + Omit & { + itemData?: any; + }; /** * [descr:_ui_scheduler_AppointmentFormOpeningEvent] */ - export type AppointmentFormOpeningEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_scheduler_AppointmentFormOpeningEvent.appointmentData] - */ - readonly appointmentData?: Appointment; - /** - * [descr:_ui_scheduler_AppointmentFormOpeningEvent.form] - */ - readonly form: dxForm; - /** - * [descr:_ui_scheduler_AppointmentFormOpeningEvent.popup] - */ - readonly popup: dxPopup; - }; + export type AppointmentFormOpeningEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_scheduler_AppointmentFormOpeningEvent.appointmentData] + */ + readonly appointmentData?: Appointment; + /** + * [descr:_ui_scheduler_AppointmentFormOpeningEvent.form] + */ + readonly form: dxForm; + /** + * [descr:_ui_scheduler_AppointmentFormOpeningEvent.popup] + */ + readonly popup: dxPopup; + }; /** * [descr:_ui_scheduler_AppointmentRenderedEvent] */ export type AppointmentRenderedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & TargetedAppointmentInfo & { /** * [descr:_ui_scheduler_AppointmentRenderedEvent.appointmentElement] @@ -23967,17 +24216,18 @@ declare module DevExpress.ui { /** * [descr:_ui_scheduler_AppointmentTooltipShowingEvent] */ - export type AppointmentTooltipShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_scheduler_AppointmentTooltipShowingEvent.targetElement] - */ - readonly targetElement: DevExpress.core.DxElement; - /** - * [descr:_ui_scheduler_AppointmentTooltipShowingEvent.appointments] - */ - readonly appointments: AppointmentTooltipShowingAppointmentInfo[]; - }; + export type AppointmentTooltipShowingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_scheduler_AppointmentTooltipShowingEvent.targetElement] + */ + readonly targetElement: DevExpress.core.DxElement; + /** + * [descr:_ui_scheduler_AppointmentTooltipShowingEvent.appointments] + */ + readonly appointments: AppointmentTooltipShowingAppointmentInfo[]; + }; /** * [descr:AppointmentTooltipTemplateData] */ @@ -23991,7 +24241,7 @@ declare module DevExpress.ui { * [descr:_ui_scheduler_AppointmentUpdatedEvent] */ export type AppointmentUpdatedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_scheduler_AppointmentUpdatedEvent.appointmentData] */ @@ -24005,7 +24255,7 @@ declare module DevExpress.ui { * [descr:_ui_scheduler_AppointmentUpdatingEvent] */ export type AppointmentUpdatingEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_scheduler_AppointmentUpdatingEvent.oldData] */ @@ -24023,8 +24273,8 @@ declare module DevExpress.ui { /** * [descr:_ui_scheduler_CellClickEvent] */ - export type CellClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type CellClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxScheduler, KeyboardEvent | MouseEvent | PointerEvent > & { @@ -24040,23 +24290,25 @@ declare module DevExpress.ui { /** * [descr:_ui_scheduler_CellContextMenuEvent] */ - export type CellContextMenuEvent = DevExpress.events.NativeEventInfo< - dxScheduler, - MouseEvent | PointerEvent | TouchEvent - > & { - /** - * [descr:_ui_scheduler_CellContextMenuEvent.cellData] - */ - readonly cellData: any; - /** - * [descr:_ui_scheduler_CellContextMenuEvent.cellElement] - */ - readonly cellElement: DevExpress.core.DxElement; - }; + export type CellContextMenuEvent = + DevExpress.common.core.events.NativeEventInfo< + dxScheduler, + MouseEvent | PointerEvent | TouchEvent + > & { + /** + * [descr:_ui_scheduler_CellContextMenuEvent.cellData] + */ + readonly cellData: any; + /** + * [descr:_ui_scheduler_CellContextMenuEvent.cellElement] + */ + readonly cellElement: DevExpress.core.DxElement; + }; /** * [descr:_ui_scheduler_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; export type DateNavigatorTextInfo = { readonly startDate: Date; readonly endDate: Date; @@ -24065,17 +24317,19 @@ declare module DevExpress.ui { /** * [descr:_ui_scheduler_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_scheduler_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_scheduler_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSchedulerOptions; export type RecurrenceEditMode = 'dialog' | 'occurrence' | 'series'; /** @@ -24151,7 +24405,7 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerAppointment.template] */ - template?: DevExpress.core.template; + template?: template; /** * [descr:dxSchedulerAppointment.text] */ @@ -24179,7 +24433,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.appointmentCollectorTemplate] */ appointmentCollectorTemplate?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxScheduler.AppointmentCollectorTemplateData, collectorElement: DevExpress.core.DxElement @@ -24243,7 +24497,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.appointmentTemplate] */ appointmentTemplate?: - | DevExpress.core.template + | template | (( model: DevExpress.ui.dxScheduler.AppointmentTemplateData, itemIndex: number, @@ -24253,7 +24507,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.appointmentTooltipTemplate] */ appointmentTooltipTemplate?: - | DevExpress.core.template + | template | (( model: DevExpress.ui.dxScheduler.AppointmentTooltipTemplateData, itemIndex: number, @@ -24285,7 +24539,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.dataCellTemplate] */ dataCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24294,12 +24548,12 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxSchedulerOptions.dateCellTemplate] */ dateCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24318,7 +24572,7 @@ declare module DevExpress.ui { * @deprecated [depNote:dxSchedulerOptions.dropDownAppointmentTemplate] */ dropDownAppointmentTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24510,7 +24764,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.resourceCellTemplate] */ resourceCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24531,7 +24785,7 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerOptions.resources.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxSchedulerOptions.resources.displayExpr] */ @@ -24593,7 +24847,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.timeCellTemplate] */ timeCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24637,7 +24891,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.appointmentCollectorTemplate] */ appointmentCollectorTemplate?: - | DevExpress.core.template + | template | (( data: DevExpress.ui.dxScheduler.AppointmentCollectorTemplateData, collectorElement: DevExpress.core.DxElement @@ -24646,7 +24900,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.appointmentTemplate] */ appointmentTemplate?: - | DevExpress.core.template + | template | (( model: DevExpress.ui.dxScheduler.AppointmentTemplateData, itemIndex: number, @@ -24656,7 +24910,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.appointmentTooltipTemplate] */ appointmentTooltipTemplate?: - | DevExpress.core.template + | template | (( model: DevExpress.ui.dxScheduler.AppointmentTooltipTemplateData, itemIndex: number, @@ -24667,7 +24921,7 @@ declare module DevExpress.ui { * @deprecated [depNote:dxSchedulerOptions.views.dropDownAppointmentTemplate] */ dropDownAppointmentTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24681,7 +24935,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.dataCellTemplate] */ dataCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24691,7 +24945,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.dateCellTemplate] */ dateCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24735,7 +24989,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.resourceCellTemplate] */ resourceCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24753,7 +25007,7 @@ declare module DevExpress.ui { * [descr:dxSchedulerOptions.views.timeCellTemplate] */ timeCellTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemIndex: number, @@ -24857,7 +25111,7 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export interface ScrollEventInfo - extends DevExpress.events.NativeEventInfo< + extends DevExpress.common.core.events.NativeEventInfo< T, WheelEvent | MouseEvent | Event > { @@ -24949,26 +25203,30 @@ declare module DevExpress.ui { /** * [descr:_ui_scroll_view_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_scroll_view_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_scroll_view_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxScrollViewOptions; /** * [descr:_ui_scroll_view_PullDownEvent] */ - export type PullDownEvent = DevExpress.events.EventInfo; + export type PullDownEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_scroll_view_ReachBottomEvent] */ - export type ReachBottomEvent = DevExpress.events.EventInfo; + export type ReachBottomEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_scroll_view_ScrollEvent] */ @@ -25022,22 +25280,24 @@ declare module DevExpress.ui { /** * [descr:_ui_select_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, Event >; /** * [descr:_ui_select_box_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_select_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_select_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, ClipboardEvent >; @@ -25045,7 +25305,8 @@ declare module DevExpress.ui { * [descr:_ui_select_box_CustomItemCreatingEvent] */ export type CustomItemCreatingEvent = - DevExpress.events.EventInfo & CustomItemCreatingInfo; + DevExpress.common.core.events.EventInfo & + CustomItemCreatingInfo; /** * [descr:CustomItemCreatingInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -25063,34 +25324,35 @@ declare module DevExpress.ui { /** * [descr:_ui_select_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, ClipboardEvent >; /** * [descr:_ui_select_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_select_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, KeyboardEvent >; /** * [descr:_ui_select_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, FocusEvent >; /** * [descr:_ui_select_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, FocusEvent >; @@ -25098,53 +25360,55 @@ declare module DevExpress.ui { * [descr:_ui_select_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_select_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_select_box_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< + export type ItemClickEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_select_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, KeyboardEvent >; /** * [descr:_ui_select_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, KeyboardEvent >; /** * [descr:_ui_select_box_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_select_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_select_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxSelectBox, ClipboardEvent >; @@ -25157,16 +25421,17 @@ declare module DevExpress.ui { * [descr:_ui_select_box_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.ui.dxDropDownList.SelectionChangedInfo; /** * [descr:_ui_select_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxSelectBox, - KeyboardEvent | MouseEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxSelectBox, + KeyboardEvent | MouseEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxSelectBoxOptions] @@ -25183,7 +25448,7 @@ declare module DevExpress.ui { * [descr:dxSelectBoxOptions.fieldTemplate] */ fieldTemplate?: - | DevExpress.core.template + | template | (( selectedItem: any, fieldElement: DevExpress.core.DxElement @@ -25192,7 +25457,7 @@ declare module DevExpress.ui { * [descr:dxSelectBoxOptions.onCustomItemCreating] */ onCustomItemCreating?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.ui.dxSelectBox.CustomItemCreatingInfo ) => void; /** @@ -25240,30 +25505,34 @@ declare module DevExpress.ui { /** * [descr:_ui_slider_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_slider_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_slider_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_slider_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSliderOptions; /** * [descr:_ui_slider_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxSlider, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | UIEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxSlider, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | UIEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxSliderBase] @@ -25299,7 +25568,7 @@ declare module DevExpress.ui { /** * [descr:dxSliderBaseOptions.label.format] */ - format?: Format; + format?: DevExpress.common.core.localization.Format; /** * [descr:dxSliderBaseOptions.label.position] */ @@ -25332,7 +25601,7 @@ declare module DevExpress.ui { /** * [descr:dxSliderBaseOptions.tooltip.format] */ - format?: Format; + format?: DevExpress.common.core.localization.Format; /** * [descr:dxSliderBaseOptions.tooltip.position] */ @@ -25433,12 +25702,13 @@ declare module DevExpress.ui { /** * [descr:_ui_sortable_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_sortable_DragChangeEvent] */ - export type DragChangeEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragChangeEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxSortable, PointerEvent | MouseEvent | TouchEvent > & { @@ -25482,8 +25752,8 @@ declare module DevExpress.ui { /** * [descr:_ui_sortable_DragEndEvent] */ - export type DragEndEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragEndEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxSortable, PointerEvent | MouseEvent | TouchEvent > & { @@ -25527,8 +25797,8 @@ declare module DevExpress.ui { /** * [descr:_ui_sortable_DragMoveEvent] */ - export type DragMoveEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragMoveEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxSortable, PointerEvent | MouseEvent | TouchEvent > & { @@ -25572,8 +25842,8 @@ declare module DevExpress.ui { /** * [descr:_ui_sortable_DragStartEvent] */ - export type DragStartEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type DragStartEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxSortable, PointerEvent | MouseEvent | TouchEvent > & { @@ -25603,17 +25873,18 @@ declare module DevExpress.ui { * [descr:_ui_sortable_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_sortable_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSortableOptions; /** * [descr:_ui_sortable_RemoveEvent] */ - export type RemoveEvent = DevExpress.events.NativeEventInfo< + export type RemoveEvent = DevExpress.common.core.events.NativeEventInfo< dxSortable, PointerEvent | MouseEvent | TouchEvent > & { @@ -25653,7 +25924,7 @@ declare module DevExpress.ui { /** * [descr:_ui_sortable_ReorderEvent] */ - export type ReorderEvent = DevExpress.events.NativeEventInfo< + export type ReorderEvent = DevExpress.common.core.events.NativeEventInfo< dxSortable, PointerEvent | MouseEvent | TouchEvent > & { @@ -25717,7 +25988,7 @@ declare module DevExpress.ui { * [descr:dxSortableOptions.dragTemplate] */ dragTemplate?: - | DevExpress.core.template + | template | (( dragInfo: DevExpress.ui.dxSortable.DragTemplateData, containerElement: DevExpress.core.DxElement @@ -25776,7 +26047,7 @@ declare module DevExpress.ui { /** * [descr:_ui_speed_dial_action_ClickEvent] */ - export type ClickEvent = DevExpress.events.NativeEventInfo< + export type ClickEvent = DevExpress.common.core.events.NativeEventInfo< dxSpeedDialAction, MouseEvent | PointerEvent > & { @@ -25789,7 +26060,7 @@ declare module DevExpress.ui { * [descr:_ui_speed_dial_action_ContentReadyEvent] */ export type ContentReadyEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_speed_dial_action_ContentReadyEvent.actionElement] */ @@ -25798,18 +26069,19 @@ declare module DevExpress.ui { /** * [descr:_ui_speed_dial_action_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_speed_dial_action_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_speed_dial_action_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSpeedDialActionOptions; } /** @@ -25864,14 +26136,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_splitter_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes, TKey> = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -25888,51 +26160,53 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxSplitter + >; /** * [descr:_ui_splitter_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxSplitter, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_splitter_ItemCollapsedEvent] */ export type ItemCollapsedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxSplitter, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_splitter_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxSplitter, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_splitter_ItemExpandedEvent] */ export type ItemExpandedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxSplitter, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -25943,16 +26217,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_splitter_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -25960,20 +26234,22 @@ declare module DevExpress.ui { /** * [descr:_ui_splitter_ResizeEndEvent] */ - export type ResizeEndEvent = DevExpress.events.NativeEventInfo< - dxSplitter, - KeyboardEvent | PointerEvent | MouseEvent | TouchEvent - > & - ResizeInfo; - /** - * [descr:_ui_splitter_ResizeEvent] - */ - export type ResizeEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type ResizeEndEvent = + DevExpress.common.core.events.NativeEventInfo< dxSplitter, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & - ResizeInfo; + ResizeInfo; + /** + * [descr:_ui_splitter_ResizeEvent] + */ + export type ResizeEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxSplitter, + KeyboardEvent | PointerEvent | MouseEvent | TouchEvent + > & + ResizeInfo; /** * [descr:_ui_splitter_ResizeInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -25987,12 +26263,13 @@ declare module DevExpress.ui { /** * [descr:_ui_splitter_ResizeStartEvent] */ - export type ResizeStartEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< - dxSplitter, - KeyboardEvent | PointerEvent | MouseEvent | TouchEvent - > & - ResizeInfo; + export type ResizeStartEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxSplitter, + KeyboardEvent | PointerEvent | MouseEvent | TouchEvent + > & + ResizeInfo; } /** * @deprecated Use Item instead @@ -26043,7 +26320,7 @@ declare module DevExpress.ui { /** * [descr:dxSplitterOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxSplitterOptions.orientation] */ @@ -26094,30 +26371,34 @@ declare module DevExpress.ui { /** * [descr:_ui_switch_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_switch_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_switch_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_switch_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSwitchOptions; /** * [descr:_ui_switch_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxSwitch, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | UIEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxSwitch, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | UIEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxSwitchOptions] @@ -26172,14 +26453,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_tab_panel_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -26202,40 +26483,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxTabPanel + >; /** * [descr:_ui_tab_panel_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabPanel, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tab_panel_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabPanel, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tab_panel_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabPanel, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -26246,16 +26529,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tab_panel_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -26266,7 +26549,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.ui.CollectionWidget.SelectionChangeInfo; /** * [descr:_ui_tab_panel_SelectionChangingEvent] @@ -26297,7 +26580,7 @@ declare module DevExpress.ui { export type TitleClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabPanel, KeyboardEvent | MouseEvent | PointerEvent > & @@ -26308,7 +26591,7 @@ declare module DevExpress.ui { export type TitleHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabPanel, MouseEvent | PointerEvent | TouchEvent > & @@ -26319,7 +26602,7 @@ declare module DevExpress.ui { export type TitleRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & TabPanelItemInfo; } /** @@ -26339,7 +26622,7 @@ declare module DevExpress.ui { * [descr:dxTabPanelItem.tabTemplate] */ tabTemplate?: - | DevExpress.core.template + | template | (() => string | DevExpress.core.UserDefinedElement); /** * [descr:dxTabPanelItem.title] @@ -26361,7 +26644,7 @@ declare module DevExpress.ui { /** * [descr:dxTabPanelOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxTabPanelOptions.hoverStateEnabled] */ @@ -26370,7 +26653,7 @@ declare module DevExpress.ui { * [descr:dxTabPanelOptions.itemTitleTemplate] */ itemTitleTemplate?: - | DevExpress.core.template + | template | (( itemData: TItem, itemIndex: number, @@ -26449,14 +26732,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_tabs_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -26476,40 +26759,40 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo>; /** * [descr:_ui_tabs_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabs, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tabs_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabs, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tabs_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTabs, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -26520,16 +26803,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tabs_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -26540,7 +26823,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.ui.CollectionWidget.SelectionChangeInfo; /** * [descr:_ui_tabs_SelectionChangingEvent] @@ -26565,7 +26848,7 @@ declare module DevExpress.ui { /** * [descr:dxTabsOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxTabsOptions.focusStateEnabled] */ @@ -26641,48 +26924,50 @@ declare module DevExpress.ui { /** * [descr:_ui_tag_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, Event >; /** * [descr:_ui_tag_box_ClosedEvent] */ - export type ClosedEvent = DevExpress.events.EventInfo; + export type ClosedEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tag_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tag_box_CustomItemCreatingEvent] */ export type CustomItemCreatingEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.ui.dxSelectBox.CustomItemCreatingInfo; /** * [descr:_ui_tag_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type DropDownButtonTemplateData = DevExpress.ui.dxDropDownEditor.DropDownButtonTemplateDataModel; /** * [descr:_ui_tag_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, KeyboardEvent >; /** * [descr:_ui_tag_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, FocusEvent >; /** * [descr:_ui_tag_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, FocusEvent >; @@ -26690,70 +26975,73 @@ declare module DevExpress.ui { * [descr:_ui_tag_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_tag_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_tag_box_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo & - DevExpress.events.ItemInfo; + export type ItemClickEvent = + DevExpress.common.core.events.NativeEventInfo & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tag_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, KeyboardEvent >; /** * [descr:_ui_tag_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxTagBox, KeyboardEvent >; /** * [descr:_ui_tag_box_MultiTagPreparingEvent] */ - export type MultiTagPreparingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo & { - /** - * [descr:_ui_tag_box_MultiTagPreparingEvent.multiTagElement] - */ - readonly multiTagElement: DevExpress.core.DxElement; - /** - * [descr:_ui_tag_box_MultiTagPreparingEvent.selectedItems] - */ - readonly selectedItems?: Array; - /** - * [descr:_ui_tag_box_MultiTagPreparingEvent.text] - */ - text?: string; - }; + export type MultiTagPreparingEvent = + DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_ui_tag_box_MultiTagPreparingEvent.multiTagElement] + */ + readonly multiTagElement: DevExpress.core.DxElement; + /** + * [descr:_ui_tag_box_MultiTagPreparingEvent.selectedItems] + */ + readonly selectedItems?: Array; + /** + * [descr:_ui_tag_box_MultiTagPreparingEvent.text] + */ + text?: string; + }; /** * [descr:_ui_tag_box_OpenedEvent] */ - export type OpenedEvent = DevExpress.events.EventInfo; + export type OpenedEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tag_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxTagBoxOptions; /** * [descr:_ui_tag_box_SelectAllValueChangedEvent] */ export type SelectAllValueChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_ui_tag_box_SelectAllValueChangedEvent.value] */ @@ -26762,16 +27050,20 @@ declare module DevExpress.ui { /** * [descr:_ui_tag_box_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo & - DevExpress.ui.CollectionWidget.SelectionChangeInfo; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.ui.CollectionWidget.SelectionChangeInfo< + string | number | any + >; /** * [descr:_ui_tag_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxTagBox, - KeyboardEvent | MouseEvent | PointerEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxTagBox, + KeyboardEvent | MouseEvent | PointerEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxTagBoxOptions] @@ -26845,7 +27137,7 @@ declare module DevExpress.ui { * [descr:dxTagBoxOptions.tagTemplate] */ tagTemplate?: - | DevExpress.core.template + | template | (( itemData: any, itemElement: DevExpress.core.DxElement @@ -26863,50 +27155,52 @@ declare module DevExpress.ui { /** * [descr:_ui_text_area_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, Event >; /** * [descr:_ui_text_area_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_text_area_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, ClipboardEvent >; /** * [descr:_ui_text_area_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, ClipboardEvent >; /** * [descr:_ui_text_area_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_text_area_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, KeyboardEvent >; /** * [descr:_ui_text_area_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, FocusEvent >; /** * [descr:_ui_text_area_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, FocusEvent >; @@ -26914,41 +27208,42 @@ declare module DevExpress.ui { * [descr:_ui_text_area_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_text_area_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_text_area_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, KeyboardEvent >; /** * [descr:_ui_text_area_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, KeyboardEvent >; /** * [descr:_ui_text_area_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_text_area_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxTextArea, ClipboardEvent >; @@ -26956,11 +27251,12 @@ declare module DevExpress.ui { /** * [descr:_ui_text_area_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxTextArea, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxTextArea, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxTextAreaOptions] @@ -27000,50 +27296,52 @@ declare module DevExpress.ui { /** * [descr:_ui_text_box_ChangeEvent] */ - export type ChangeEvent = DevExpress.events.NativeEventInfo< + export type ChangeEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, Event >; /** * [descr:_ui_text_box_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_text_box_CopyEvent] */ - export type CopyEvent = DevExpress.events.NativeEventInfo< + export type CopyEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, ClipboardEvent >; /** * [descr:_ui_text_box_CutEvent] */ - export type CutEvent = DevExpress.events.NativeEventInfo< + export type CutEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, ClipboardEvent >; /** * [descr:_ui_text_box_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_text_box_EnterKeyEvent] */ - export type EnterKeyEvent = DevExpress.events.NativeEventInfo< + export type EnterKeyEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, KeyboardEvent >; /** * [descr:_ui_text_box_FocusInEvent] */ - export type FocusInEvent = DevExpress.events.NativeEventInfo< + export type FocusInEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, FocusEvent >; /** * [descr:_ui_text_box_FocusOutEvent] */ - export type FocusOutEvent = DevExpress.events.NativeEventInfo< + export type FocusOutEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, FocusEvent >; @@ -27051,41 +27349,42 @@ declare module DevExpress.ui { * [descr:_ui_text_box_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_text_box_InputEvent] */ - export type InputEvent = DevExpress.events.NativeEventInfo< + export type InputEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, UIEvent & { target: HTMLInputElement } >; /** * [descr:_ui_text_box_KeyDownEvent] */ - export type KeyDownEvent = DevExpress.events.NativeEventInfo< + export type KeyDownEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, KeyboardEvent >; - export type KeyPressEvent = DevExpress.events.NativeEventInfo< + export type KeyPressEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, KeyboardEvent >; /** * [descr:_ui_text_box_KeyUpEvent] */ - export type KeyUpEvent = DevExpress.events.NativeEventInfo< + export type KeyUpEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, KeyboardEvent >; /** * [descr:_ui_text_box_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_ui_text_box_PasteEvent] */ - export type PasteEvent = DevExpress.events.NativeEventInfo< + export type PasteEvent = DevExpress.common.core.events.NativeEventInfo< dxTextBox, ClipboardEvent >; @@ -27104,11 +27403,12 @@ declare module DevExpress.ui { /** * [descr:_ui_text_box_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxTextBox, - KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event - > & - DevExpress.ui.Editor.ValueChangedInfo; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxTextBox, + KeyboardEvent | MouseEvent | PointerEvent | TouchEvent | Event + > & + DevExpress.ui.Editor.ValueChangedInfo; } /** * [descr:dxTextBoxOptions] @@ -27218,61 +27518,79 @@ declare module DevExpress.ui { * [descr:dxTextEditorOptions.onChange] */ onChange?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo ) => void; /** * [descr:dxTextEditorOptions.onCopy] */ onCopy?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + ClipboardEvent + > ) => void; /** * [descr:dxTextEditorOptions.onCut] */ onCut?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + ClipboardEvent + > ) => void; /** * [descr:dxTextEditorOptions.onEnterKey] */ onEnterKey?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + KeyboardEvent + > ) => void; /** * [descr:dxTextEditorOptions.onFocusIn] */ onFocusIn?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo ) => void; /** * [descr:dxTextEditorOptions.onFocusOut] */ onFocusOut?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo ) => void; /** * [descr:dxTextEditorOptions.onInput] */ onInput?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo ) => void; /** * [descr:dxTextEditorOptions.onKeyDown] */ onKeyDown?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + KeyboardEvent + > ) => void; /** * [descr:dxTextEditorOptions.onKeyUp] */ onKeyUp?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + KeyboardEvent + > ) => void; /** * [descr:dxTextEditorOptions.onPaste] */ onPaste?: ( - e: DevExpress.events.NativeEventInfo + e: DevExpress.common.core.events.NativeEventInfo< + TComponent, + ClipboardEvent + > ) => void; /** * [descr:dxTextEditorOptions.placeholder] @@ -27330,14 +27648,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_tile_view_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -27355,40 +27673,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxTileView + >; /** * [descr:_ui_tile_view_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTileView, KeyboardEvent | MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tile_view_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTileView, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tile_view_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTileView, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -27399,16 +27719,16 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_tile_view_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -27451,7 +27771,7 @@ declare module DevExpress.ui { /** * [descr:dxTileViewOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxTileViewOptions.direction] */ @@ -27489,40 +27809,43 @@ declare module DevExpress.ui { /** * [descr:_ui_toast_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_toast_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_toast_HiddenEvent] */ - export type HiddenEvent = DevExpress.events.EventInfo; + export type HiddenEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_ui_toast_HidingEvent] */ - export type HidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type HidingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_toast_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_toast_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxToastOptions; /** * [descr:_ui_toast_ShowingEvent] */ - export type ShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type ShowingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_toast_ShownEvent] */ - export type ShownEvent = DevExpress.events.EventInfo; + export type ShownEvent = DevExpress.common.core.events.EventInfo; export type ToastType = 'custom' | 'error' | 'info' | 'success' | 'warning'; } /** @@ -27533,11 +27856,11 @@ declare module DevExpress.ui { /** * [descr:dxToastOptions.animation.hide] */ - hide?: AnimationConfig; + hide?: DevExpress.common.core.animation.AnimationConfig; /** * [descr:dxToastOptions.animation.show] */ - show?: AnimationConfig; + show?: DevExpress.common.core.animation.AnimationConfig; } /** * [descr:dxToastOptions] @@ -27601,7 +27924,7 @@ declare module DevExpress.ui { /** * [descr:dxToastOptions.position] */ - position?: PositionConfig | string; + position?: DevExpress.common.core.animation.PositionConfig | string; /** * [descr:dxToastOptions.shading] */ @@ -27629,14 +27952,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_toolbar_DisposingEvent] */ export type DisposingEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; ContentReadyEvent: ContentReadyEvent; @@ -27654,40 +27977,42 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxToolbar + >; /** * [descr:_ui_toolbar_ItemClickEvent] */ export type ItemClickEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxToolbar, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_toolbar_ItemContextMenuEvent] */ export type ItemContextMenuEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxToolbar, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_toolbar_ItemHoldEvent] */ export type ItemHoldEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxToolbar, MouseEvent | PointerEvent | TouchEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -27698,8 +28023,8 @@ declare module DevExpress.ui { export type ItemRenderedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ItemInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ItemInfo; export type LocateInMenuMode = 'always' | 'auto' | 'never'; /** * [descr:_ui_toolbar_OptionChangedEvent] @@ -27707,8 +28032,8 @@ declare module DevExpress.ui { export type OptionChangedEvent< TItem extends ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends ItemLike = any, TKey = any @@ -27736,7 +28061,7 @@ declare module DevExpress.ui { * [descr:dxToolbarItem.menuItemTemplate] */ menuItemTemplate?: - | DevExpress.core.template + | template | (() => string | DevExpress.core.UserDefinedElement); /** * [descr:dxToolbarItem.options] @@ -27762,7 +28087,7 @@ declare module DevExpress.ui { /** * [descr:dxToolbarOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxToolbarOptions.items] */ @@ -27775,7 +28100,7 @@ declare module DevExpress.ui { * [descr:dxToolbarOptions.menuItemTemplate] */ menuItemTemplate?: - | DevExpress.core.template + | template | (( itemData: TItem, itemIndex: number, @@ -27790,40 +28115,44 @@ declare module DevExpress.ui { /** * [descr:_ui_tooltip_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tooltip_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tooltip_HiddenEvent] */ - export type HiddenEvent = DevExpress.events.EventInfo; + export type HiddenEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tooltip_HidingEvent] */ - export type HidingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type HidingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tooltip_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_tooltip_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxTooltipOptions; /** * [descr:_ui_tooltip_ShowingEvent] */ - export type ShowingEvent = DevExpress.events.Cancelable & - DevExpress.events.EventInfo; + export type ShowingEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_tooltip_ShownEvent] */ - export type ShownEvent = DevExpress.events.EventInfo; + export type ShownEvent = DevExpress.common.core.events.EventInfo; } /** * [descr:dxTooltipOptions] @@ -27996,7 +28325,7 @@ declare module DevExpress.ui { ): DevExpress.core.DxElement | undefined; getCombinedFilter(): any; getCombinedFilter(returnDataField: boolean): any; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; getKeyByRowIndex(rowIndex: number): TKey | undefined; getRowElement( rowIndex: number @@ -28042,7 +28371,7 @@ declare module DevExpress.ui { export type AdaptiveDetailRowPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.AdaptiveDetailRowPreparingInfo; /** * [descr:_ui_tree_list_CellClickEvent] @@ -28050,7 +28379,7 @@ declare module DevExpress.ui { export type CellClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTreeList, PointerEvent | MouseEvent > & @@ -28061,7 +28390,7 @@ declare module DevExpress.ui { export type CellDblClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTreeList, PointerEvent | MouseEvent > & @@ -28072,7 +28401,7 @@ declare module DevExpress.ui { export type CellHoverChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & CellInfo & { /** * [descr:_ui_tree_list_CellHoverChangedEvent.eventType] @@ -28135,7 +28464,7 @@ declare module DevExpress.ui { export type CellPreparedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & CellInfo & { /** * [descr:_ui_tree_list_CellPreparedEvent.isSelected] @@ -28169,7 +28498,7 @@ declare module DevExpress.ui { export type ColumnButtonClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTreeList, PointerEvent | MouseEvent > & { @@ -28228,14 +28557,14 @@ declare module DevExpress.ui { export type ContentReadyEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_tree_list_ContextMenuPreparingEvent] */ export type ContextMenuPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_ContextMenuPreparingEvent.items] */ @@ -28271,7 +28600,7 @@ declare module DevExpress.ui { export type DataErrorOccurredEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataErrorOccurredInfo; /** * [descr:_ui_tree_list_DisposingEvent] @@ -28279,7 +28608,7 @@ declare module DevExpress.ui { export type DisposingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo>; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -28294,7 +28623,7 @@ declare module DevExpress.ui { export type EditCanceledEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataChangeInfo; /** * [descr:_ui_tree_list_EditCancelingEvent] @@ -28302,8 +28631,8 @@ declare module DevExpress.ui { export type EditCancelingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataChangeInfo; /** * [descr:dxTreeListEditing] @@ -28348,8 +28677,8 @@ declare module DevExpress.ui { export type EditingStartEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_EditingStartEvent.data] */ @@ -28378,7 +28707,7 @@ declare module DevExpress.ui { export type EditorPreparedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_EditorPreparedEvent.parentType] */ @@ -28430,8 +28759,8 @@ declare module DevExpress.ui { export type EditorPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_EditorPreparingEvent.parentType] */ @@ -28555,7 +28884,7 @@ declare module DevExpress.ui { export type FocusedCellChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_FocusedCellChangedEvent.cellElement] */ @@ -28583,8 +28912,8 @@ declare module DevExpress.ui { export type FocusedCellChangingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxTreeList, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & { @@ -28627,7 +28956,7 @@ declare module DevExpress.ui { export type FocusedRowChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_FocusedRowChangedEvent.rowElement] */ @@ -28647,8 +28976,8 @@ declare module DevExpress.ui { export type FocusedRowChangingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxTreeList, KeyboardEvent | PointerEvent | MouseEvent | TouchEvent > & { @@ -28675,14 +29004,16 @@ declare module DevExpress.ui { export type InitializedEvent< TRowData = any, TKey = any - > = DevExpress.events.InitializedEventInfo>; + > = DevExpress.common.core.events.InitializedEventInfo< + dxTreeList + >; /** * [descr:_ui_tree_list_InitNewRowEvent] */ export type InitNewRowEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.NewRowInfo; /** * [descr:_ui_tree_list_KeyDownEvent] @@ -28690,7 +29021,7 @@ declare module DevExpress.ui { export type KeyDownEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTreeList, KeyboardEvent > & @@ -28734,7 +29065,7 @@ declare module DevExpress.ui { export type NodesInitializedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_NodesInitializedEvent.root] */ @@ -28746,8 +29077,8 @@ declare module DevExpress.ui { export type OptionChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; /** * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ @@ -28854,7 +29185,7 @@ declare module DevExpress.ui { export type RowClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTreeList, PointerEvent | MouseEvent > & { @@ -28917,7 +29248,7 @@ declare module DevExpress.ui { export type RowCollapsedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_tree_list_RowCollapsingEvent] @@ -28925,8 +29256,8 @@ declare module DevExpress.ui { export type RowCollapsingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_tree_list_RowDblClickEvent] @@ -28934,7 +29265,7 @@ declare module DevExpress.ui { export type RowDblClickEvent< TRowData = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxTreeList, PointerEvent | MouseEvent > & { @@ -28988,21 +29319,21 @@ declare module DevExpress.ui { export type RowDraggingChangeEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.RowDraggingEventInfo & DevExpress.common.grids.DragDropInfo; export type RowDraggingEndEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.RowDraggingEventInfo & DevExpress.common.grids.DragDropInfo; export type RowDraggingMoveEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.RowDraggingEventInfo & DevExpress.common.grids.DragDropInfo; @@ -29020,7 +29351,7 @@ declare module DevExpress.ui { export type RowDraggingStartEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & + > = DevExpress.common.core.events.Cancelable & DevExpress.common.ReducedNativeEventInfo> & DevExpress.common.grids.DragStartEventInfo; /** @@ -29029,7 +29360,7 @@ declare module DevExpress.ui { export type RowExpandedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_tree_list_RowExpandingEvent] @@ -29037,8 +29368,8 @@ declare module DevExpress.ui { export type RowExpandingEvent< TRowData = any, TKey = any - > = DevExpress.events.Cancelable & - DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowKeyInfo; /** * [descr:_ui_tree_list_RowInsertedEvent] @@ -29046,7 +29377,7 @@ declare module DevExpress.ui { export type RowInsertedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowInsertedInfo; /** * [descr:_ui_tree_list_RowInsertingEvent] @@ -29054,7 +29385,7 @@ declare module DevExpress.ui { export type RowInsertingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowInsertingInfo; /** * [descr:_ui_tree_list_RowPreparedEvent] @@ -29062,7 +29393,7 @@ declare module DevExpress.ui { export type RowPreparedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & { + > = DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_list_RowPreparedEvent.data] */ @@ -29118,7 +29449,7 @@ declare module DevExpress.ui { export type RowRemovedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowRemovedInfo; /** * [descr:_ui_tree_list_RowRemovingEvent] @@ -29126,7 +29457,7 @@ declare module DevExpress.ui { export type RowRemovingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowRemovingInfo; /** * [descr:_ui_tree_list_RowUpdatedEvent] @@ -29134,7 +29465,7 @@ declare module DevExpress.ui { export type RowUpdatedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowUpdatedInfo; /** * [descr:_ui_tree_list_RowUpdatingEvent] @@ -29142,7 +29473,7 @@ declare module DevExpress.ui { export type RowUpdatingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowUpdatingInfo; /** * [descr:_ui_tree_list_RowValidatingEvent] @@ -29150,7 +29481,7 @@ declare module DevExpress.ui { export type RowValidatingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.RowValidatingInfo; /** * [descr:_ui_tree_list_SavedEvent] @@ -29158,7 +29489,7 @@ declare module DevExpress.ui { export type SavedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.DataChangeInfo; /** * [descr:_ui_tree_list_SavingEvent] @@ -29166,7 +29497,7 @@ declare module DevExpress.ui { export type SavingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.SavingInfo; export type Scrollable = Omit< dxScrollable, @@ -29202,7 +29533,7 @@ declare module DevExpress.ui { export type SelectionChangedEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.SelectionChangedInfo; /** * [descr:_ui_tree_list_ToolbarPreparingEvent] @@ -29210,7 +29541,7 @@ declare module DevExpress.ui { export type ToolbarPreparingEvent< TRowData = any, TKey = any - > = DevExpress.events.EventInfo> & + > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.ToolbarPreparingInfo; export type TreeListCommandColumnType = 'adaptive' | 'buttons' | 'drag'; export type TreeListFilterMode = @@ -29249,7 +29580,7 @@ declare module DevExpress.ui { * [descr:dxTreeListColumn.cellTemplate] */ cellTemplate?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxTreeList.ColumnCellTemplateData< @@ -29267,7 +29598,7 @@ declare module DevExpress.ui { * [descr:dxTreeListColumn.editCellTemplate] */ editCellTemplate?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxTreeList.ColumnEditCellTemplateData< @@ -29279,7 +29610,7 @@ declare module DevExpress.ui { * [descr:dxTreeListColumn.headerCellTemplate] */ headerCellTemplate?: - | DevExpress.core.template + | template | (( columnHeader: DevExpress.core.DxElement, headerInfo: DevExpress.ui.dxTreeList.ColumnHeaderCellTemplateData< @@ -29312,7 +29643,7 @@ declare module DevExpress.ui { * [descr:dxTreeListColumnButton.template] */ template?: - | DevExpress.core.template + | template | (( cellElement: DevExpress.core.DxElement, cellInfo: DevExpress.ui.dxTreeList.ColumnButtonTemplateData< @@ -29672,15 +30003,13 @@ declare module DevExpress.ui { /** * [descr:_ui_tree_view_ContentReadyEvent] */ - export type ContentReadyEvent = DevExpress.events.EventInfo< - dxTreeView - >; + export type ContentReadyEvent = + DevExpress.common.core.events.EventInfo>; /** * [descr:_ui_tree_view_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo< - dxTreeView - >; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo>; export type ExplicitTypes = { Properties: Properties; Node: Node; @@ -29702,20 +30031,21 @@ declare module DevExpress.ui { * [descr:_ui_tree_view_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo>; + DevExpress.common.core.events.InitializedEventInfo>; /** * [descr:_ui_tree_view_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< - dxTreeView, - KeyboardEvent | MouseEvent | PointerEvent - > & - ItemInfo; + export type ItemClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxTreeView, + KeyboardEvent | MouseEvent | PointerEvent + > & + ItemInfo; /** * [descr:_ui_tree_view_ItemCollapsedEvent] */ export type ItemCollapsedEvent = - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< dxTreeView, MouseEvent | PointerEvent > & @@ -29724,7 +30054,7 @@ declare module DevExpress.ui { * [descr:_ui_tree_view_ItemContextMenuEvent] */ export type ItemContextMenuEvent = - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< dxTreeView, MouseEvent | PointerEvent | TouchEvent > & @@ -29733,7 +30063,7 @@ declare module DevExpress.ui { * [descr:_ui_tree_view_ItemExpandedEvent] */ export type ItemExpandedEvent = - DevExpress.events.NativeEventInfo< + DevExpress.common.core.events.NativeEventInfo< dxTreeView, MouseEvent | PointerEvent > & @@ -29741,11 +30071,12 @@ declare module DevExpress.ui { /** * [descr:_ui_tree_view_ItemHoldEvent] */ - export type ItemHoldEvent = DevExpress.events.NativeEventInfo< - dxTreeView, - MouseEvent | PointerEvent | TouchEvent - > & - ItemInfo; + export type ItemHoldEvent = + DevExpress.common.core.events.NativeEventInfo< + dxTreeView, + MouseEvent | PointerEvent | TouchEvent + > & + ItemInfo; /** * [descr:_ui_tree_view_ItemInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -29771,15 +30102,15 @@ declare module DevExpress.ui { /** * [descr:_ui_tree_view_ItemRenderedEvent] */ - export type ItemRenderedEvent = DevExpress.events.EventInfo< - dxTreeView - > & - ItemInfo; + export type ItemRenderedEvent = + DevExpress.common.core.events.EventInfo> & + ItemInfo; /** * [descr:_ui_tree_view_ItemSelectionChangedEvent] */ export type ItemSelectionChangedEvent = - DevExpress.events.EventInfo> & ItemInfo; + DevExpress.common.core.events.EventInfo> & + ItemInfo; /** * [descr:dxTreeViewNode] */ @@ -29787,10 +30118,9 @@ declare module DevExpress.ui { /** * [descr:_ui_tree_view_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo< - dxTreeView - > & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxTreeViewOptions; export type Scrollable = Omit< dxScrollable, @@ -29806,7 +30136,7 @@ declare module DevExpress.ui { * [descr:_ui_tree_view_SelectAllValueChangedEvent] */ export type SelectAllValueChangedEvent = - DevExpress.events.EventInfo> & { + DevExpress.common.core.events.EventInfo> & { /** * [descr:_ui_tree_view_SelectAllValueChangedEvent.value] */ @@ -29815,9 +30145,8 @@ declare module DevExpress.ui { /** * [descr:_ui_tree_view_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo< - dxTreeView - >; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo>; export type TreeViewCheckBoxMode = 'none' | 'normal' | 'selectAll'; export type TreeViewExpandEvent = 'dblclick' | 'click'; } @@ -29923,7 +30252,7 @@ declare module DevExpress.ui { /** * [descr:dxTreeViewOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike< + dataSource?: DevExpress.data.DataSourceLike< DevExpress.ui.dxTreeView.Item, TKey > | null; @@ -30071,18 +30400,19 @@ declare module DevExpress.ui { /** * [descr:_ui_validation_group_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_ui_validation_group_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_ui_validation_group_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxValidationGroupOptions; export type ValidationResult = dxValidationGroupResult; } @@ -30175,14 +30505,18 @@ declare module DevExpress.ui { export type ContentReadyEvent< TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo< + dxValidationSummary + >; /** * [descr:_ui_validation_summary_DisposingEvent] */ export type DisposingEvent< TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any - > = DevExpress.events.EventInfo>; + > = DevExpress.common.core.events.EventInfo< + dxValidationSummary + >; export type ExplicitTypes< TItem extends DevExpress.ui.CollectionWidget.ItemLike, TKey @@ -30200,7 +30534,7 @@ declare module DevExpress.ui { export type InitializedEvent< TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any - > = DevExpress.events.InitializedEventInfo< + > = DevExpress.common.core.events.InitializedEventInfo< dxValidationSummary >; /** @@ -30209,19 +30543,21 @@ declare module DevExpress.ui { export type ItemClickEvent< TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any - > = DevExpress.events.NativeEventInfo< + > = DevExpress.common.core.events.NativeEventInfo< dxValidationSummary, MouseEvent | PointerEvent > & - DevExpress.events.ItemInfo; + DevExpress.common.core.events.ItemInfo; /** * [descr:_ui_validation_summary_OptionChangedEvent] */ export type OptionChangedEvent< TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any - > = DevExpress.events.EventInfo> & - DevExpress.events.ChangedOptionInfo; + > = DevExpress.common.core.events.EventInfo< + dxValidationSummary + > & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties< TItem extends DevExpress.ui.CollectionWidget.ItemLike = any, TKey = any @@ -30262,11 +30598,13 @@ declare module DevExpress.ui { validate(): DevExpress.ui.dxValidator.ValidationResult; } module dxValidator { - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; export type InitializedEvent = - DevExpress.events.InitializedEventInfo; - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.InitializedEventInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxValidatorOptions; export type ValidatedEvent = { name?: string; @@ -30426,7 +30764,7 @@ declare module DevExpress.ui { * [descr:EditorOptions.onValueChanged] */ onValueChanged?: ( - e: DevExpress.events.NativeEventInfo & + e: DevExpress.common.core.events.NativeEventInfo & DevExpress.ui.Editor.ValueChangedInfo ) => void; /** @@ -30471,18 +30809,6 @@ declare module DevExpress.ui { * [descr:dxFilterBuilderField] */ export type Field = dxFilterBuilderField; - /** - * [descr:Format] - */ - export type Format = - | FormatObject - | DevExpress.common.Format - | string - | ((value: number | Date) => string) - | ((value: Date) => string) - | ((value: number) => string) - | ExternalFormat - | undefined; /** * [descr:ui.hideToasts()] */ @@ -30658,7 +30984,7 @@ declare module DevExpress.ui { * [descr:ui.template] * @deprecated [depNote:ui.template] */ - export type Template = DevExpress.core.template; + export type Template = template; /** * [descr:ui.themes] */ @@ -30704,7 +31030,7 @@ declare module DevExpress.ui { * @deprecated [depNote:format] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type format = Format; + export type format = DevExpress.common.core.localization.Format; } /** * [descr:WidgetOptions] @@ -30739,7 +31065,9 @@ declare module DevExpress.ui { /** * [descr:WidgetOptions.onContentReady] */ - onContentReady?: (e: DevExpress.events.EventInfo) => void; + onContentReady?: ( + e: DevExpress.common.core.events.EventInfo + ) => void; /** * [descr:WidgetOptions.tabIndex] */ @@ -31172,28 +31500,6 @@ declare module DevExpress.ui.dxTreeList { declare module DevExpress.ui.dxTreeView { export type Item = dxTreeViewItem; } -declare module DevExpress.utils { - /** - * [descr:utils.cancelAnimationFrame(requestID)] - */ - export function cancelAnimationFrame(requestID: number): void; - /** - * [descr:utils.getTimeZones(date)] - */ - export function getTimeZones(date?: Date): Array; - /** - * [descr:utils.initMobileViewport(options)] - */ - export function initMobileViewport(options: { - allowZoom?: boolean; - allowPan?: boolean; - allowSelection?: boolean; - }): void; - /** - * [descr:utils.requestAnimationFrame(callback)] - */ - export function requestAnimationFrame(callback: Function): number; -} declare module DevExpress.viz { /** * [descr:BarGaugeBarInfo] @@ -31237,7 +31543,7 @@ declare module DevExpress.viz { * [descr:BaseChart.getAllSeries()] */ getAllSeries(): Array; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:BaseChart.getSeriesByName(seriesName)] */ @@ -31334,7 +31640,7 @@ declare module DevExpress.viz { * [descr:BaseChartOptions.legend.markerTemplate] */ markerTemplate?: - | DevExpress.core.template + | template | (( legendItem: DevExpress.common.charts.LegendItem, element: SVGGElement @@ -31385,7 +31691,7 @@ declare module DevExpress.viz { /** * [descr:BaseChartOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:BaseChartOptions.legend] */ @@ -31393,13 +31699,13 @@ declare module DevExpress.viz { /** * [descr:BaseChartOptions.onDone] */ - onDone?: (e: DevExpress.events.EventInfo) => void; + onDone?: (e: DevExpress.common.core.events.EventInfo) => void; /** * [descr:BaseChartOptions.onPointClick] */ onPointClick?: | (( - e: DevExpress.events.NativeEventInfo< + e: DevExpress.common.core.events.NativeEventInfo< TComponent, MouseEvent | PointerEvent > & @@ -31410,28 +31716,28 @@ declare module DevExpress.viz { * [descr:BaseChartOptions.onPointHoverChanged] */ onPointHoverChanged?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo ) => void; /** * [descr:BaseChartOptions.onPointSelectionChanged] */ onPointSelectionChanged?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo ) => void; /** * [descr:BaseChartOptions.onTooltipHidden] */ onTooltipHidden?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.TooltipInfo ) => void; /** * [descr:BaseChartOptions.onTooltipShown] */ onTooltipShown?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.TooltipInfo ) => void; /** @@ -31463,12 +31769,12 @@ declare module DevExpress.viz { /** * [descr:BaseChartOptions.tooltip.argumentFormat] */ - argumentFormat?: DevExpress.ui.Format | undefined; + argumentFormat?: DevExpress.common.core.localization.Format | undefined; /** * [descr:BaseChartOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( pointInfo: any, element: DevExpress.core.DxElement @@ -31582,14 +31888,14 @@ declare module DevExpress.viz { * [descr:BaseGaugeOptions.onTooltipHidden] */ onTooltipHidden?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseGauge.TooltipInfo ) => void; /** * [descr:BaseGaugeOptions.onTooltipShown] */ onTooltipShown?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseGauge.TooltipInfo ) => void; /** @@ -31763,7 +32069,7 @@ declare module DevExpress.viz { /** * [descr:BaseGaugeOptions.scale.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:BaseGaugeOptions.scale.label.overlappingBehavior] */ @@ -31786,7 +32092,7 @@ declare module DevExpress.viz { * [descr:BaseGaugeOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( scaleValue: { value?: number; valueText?: string }, element: DevExpress.core.DxElement @@ -32024,11 +32330,15 @@ declare module DevExpress.viz { /** * [descr:BaseSparklineOptions.onTooltipHidden] */ - onTooltipHidden?: (e: DevExpress.events.EventInfo) => void; + onTooltipHidden?: ( + e: DevExpress.common.core.events.EventInfo + ) => void; /** * [descr:BaseSparklineOptions.onTooltipShown] */ - onTooltipShown?: (e: DevExpress.events.EventInfo) => void; + onTooltipShown?: ( + e: DevExpress.common.core.events.EventInfo + ) => void; /** * [descr:BaseSparklineOptions.redrawOnResize] */ @@ -32051,7 +32361,7 @@ declare module DevExpress.viz { * [descr:BaseSparklineOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( pointsInfo: any, element: DevExpress.core.DxElement @@ -32080,7 +32390,7 @@ declare module DevExpress.viz { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ static defaultOptions( - rule: DevExpress.core.DefaultOptionsRule + rule: DefaultOptionsRule ): void; /** * [descr:BaseWidget.exportTo(fileName, format)] @@ -32130,28 +32440,29 @@ declare module DevExpress.viz { * [descr:FileSavingEventInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type FileSavingEventInfo = DevExpress.events.Cancelable & { - /** - * [descr:FileSavingEventInfo.component] - */ - readonly component: T; - /** - * [descr:FileSavingEventInfo.element] - */ - readonly element: DevExpress.core.DxElement; - /** - * [descr:FileSavingEventInfo.fileName] - */ - readonly fileName: string; - /** - * [descr:FileSavingEventInfo.format] - */ - readonly format: string; - /** - * [descr:FileSavingEventInfo.data] - */ - readonly data: Blob; - }; + export type FileSavingEventInfo = + DevExpress.common.core.events.Cancelable & { + /** + * [descr:FileSavingEventInfo.component] + */ + readonly component: T; + /** + * [descr:FileSavingEventInfo.element] + */ + readonly element: DevExpress.core.DxElement; + /** + * [descr:FileSavingEventInfo.fileName] + */ + readonly fileName: string; + /** + * [descr:FileSavingEventInfo.format] + */ + readonly format: string; + /** + * [descr:FileSavingEventInfo.data] + */ + readonly data: Blob; + }; /** * [descr:IncidentInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -32439,16 +32750,18 @@ declare module DevExpress.viz { /** * [descr:BaseWidgetOptions.onDrawn] */ - onDrawn?: (e: DevExpress.events.EventInfo) => void; + onDrawn?: (e: DevExpress.common.core.events.EventInfo) => void; /** * [descr:BaseWidgetOptions.onExported] */ - onExported?: (e: DevExpress.events.EventInfo) => void; + onExported?: ( + e: DevExpress.common.core.events.EventInfo + ) => void; /** * [descr:BaseWidgetOptions.onExporting] */ onExporting?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.ExportInfo ) => void; /** @@ -32461,7 +32774,7 @@ declare module DevExpress.viz { * [descr:BaseWidgetOptions.onIncidentOccurred] */ onIncidentOccurred?: ( - e: DevExpress.events.EventInfo & + e: DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo ) => void; /** @@ -32652,7 +32965,7 @@ declare module DevExpress.viz { /** * [descr:BaseWidgetOptions.tooltip.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:BaseWidgetOptions.tooltip.opacity] */ @@ -32903,7 +33216,7 @@ declare module DevExpress.viz { /** * [descr:CommonIndicator.text.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:CommonIndicator.text.indent] */ @@ -32955,20 +33268,24 @@ declare module DevExpress.viz { /** * [descr:_viz_bar_gauge_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bar_gauge_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bar_gauge_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bar_gauge_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_bar_gauge_FileSavingEvent] */ @@ -32978,13 +33295,13 @@ declare module DevExpress.viz { * [descr:_viz_bar_gauge_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_bar_gauge_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:dxBarGaugeLegend] */ @@ -33010,12 +33327,12 @@ declare module DevExpress.viz { /** * [descr:dxBarGaugeOptions.legend.itemTextFormat] */ - itemTextFormat?: DevExpress.ui.Format | undefined; + itemTextFormat?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxBarGaugeOptions.legend.markerTemplate] */ markerTemplate?: - | DevExpress.core.template + | template | (( legendItem: LegendItem, element: SVGGElement @@ -33038,8 +33355,9 @@ declare module DevExpress.viz { /** * [descr:_viz_bar_gauge_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxBarGaugeOptions; /** * [descr:dxBarGaugeTooltip] @@ -33049,7 +33367,7 @@ declare module DevExpress.viz { * [descr:dxBarGaugeOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( scaleValue: { value?: number; valueText?: string; index?: number }, element: DevExpress.core.DxElement @@ -33073,8 +33391,8 @@ declare module DevExpress.viz { /** * [descr:_viz_bar_gauge_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo & - TooltipInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo & TooltipInfo; /** * [descr:_viz_bar_gauge_TooltipInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -33088,8 +33406,8 @@ declare module DevExpress.viz { /** * [descr:_viz_bar_gauge_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo & - TooltipInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo & TooltipInfo; } /** * [descr:dxBarGaugeOptions] @@ -33134,7 +33452,7 @@ declare module DevExpress.viz { * [descr:dxBarGaugeOptions.centerTemplate] */ centerTemplate?: - | DevExpress.core.template + | template | (( component: dxBarGauge, element: SVGGElement @@ -33166,7 +33484,7 @@ declare module DevExpress.viz { /** * [descr:dxBarGaugeOptions.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxBarGaugeOptions.label.indent] */ @@ -33229,20 +33547,23 @@ declare module DevExpress.viz { /** * [descr:_viz_bullet_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bullet_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bullet_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bullet_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_bullet_FileSavingEvent] */ @@ -33251,27 +33572,31 @@ declare module DevExpress.viz { /** * [descr:_viz_bullet_IncidentOccurredEvent] */ - export type IncidentOccurredEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.IncidentInfo; + export type IncidentOccurredEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_bullet_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_bullet_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxBulletOptions; /** * [descr:_viz_bullet_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_bullet_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo; } /** * [descr:dxBulletOptions] @@ -33488,15 +33813,16 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_ArgumentAxisClickEvent] */ - export type ArgumentAxisClickEvent = DevExpress.events.NativeEventInfo< - dxChart, - MouseEvent | PointerEvent - > & { - /** - * [descr:_viz_chart_ArgumentAxisClickEvent.argument] - */ - readonly argument: Date | number | string; - }; + export type ArgumentAxisClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxChart, + MouseEvent | PointerEvent + > & { + /** + * [descr:_viz_chart_ArgumentAxisClickEvent.argument] + */ + readonly argument: Date | number | string; + }; /** * [descr:dxChartArgumentAxisConstantLines] */ @@ -33582,7 +33908,7 @@ declare module DevExpress.viz { /** * [descr:dxChartOptions.argumentAxis.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; }; /** * [descr:dxChartArgumentAxisStrips] @@ -33889,7 +34215,7 @@ declare module DevExpress.viz { * [descr:dxChartOptions.commonAxisSettings.label.template] */ template?: - | DevExpress.core.template + | template | (( data: object, element: SVGGElement @@ -34155,15 +34481,16 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_chart_DoneEvent] */ - export type DoneEvent = DevExpress.events.EventInfo; + export type DoneEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_viz_chart_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = DevExpress.common.core.events.EventInfo; /** * @deprecated Use CommonSeriesSettings instead * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -34173,12 +34500,14 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_chart_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_chart_FileSavingEvent] */ @@ -34192,13 +34521,14 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_IncidentOccurredEvent] */ - export type IncidentOccurredEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.IncidentInfo; + export type IncidentOccurredEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_chart_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:dxChartLegend] */ @@ -34231,8 +34561,11 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_LegendClickEvent] */ - export type LegendClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo & { + export type LegendClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxChart, + MouseEvent | PointerEvent + > & { /** * [descr:_viz_chart_LegendClickEvent.target] */ @@ -34241,8 +34574,9 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:dxChartPanes] */ @@ -34259,38 +34593,43 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_PointClickEvent] */ - export type PointClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo & + export type PointClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxChart, + MouseEvent | PointerEvent + > & DevExpress.viz.BaseChart.PointInteractionInfo; /** * [descr:_viz_chart_PointHoverChangedEvent] */ - export type PointHoverChangedEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.PointInteractionInfo; + export type PointHoverChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.PointInteractionInfo; /** * [descr:_viz_chart_PointSelectionChangedEvent] */ export type PointSelectionChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo; export type Properties = dxChartOptions; /** * [descr:_viz_chart_SeriesClickEvent] */ - export type SeriesClickEvent = DevExpress.events.NativeEventInfo< - dxChart, - MouseEvent | PointerEvent - > & { - /** - * [descr:_viz_chart_SeriesClickEvent.target] - */ - readonly target: chartSeriesObject; - }; + export type SeriesClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxChart, + MouseEvent | PointerEvent + > & { + /** + * [descr:_viz_chart_SeriesClickEvent.target] + */ + readonly target: chartSeriesObject; + }; /** * [descr:_viz_chart_SeriesHoverChangedEvent] */ - export type SeriesHoverChangedEvent = DevExpress.events.EventInfo & - SeriesInteractionInfo; + export type SeriesHoverChangedEvent = + DevExpress.common.core.events.EventInfo & SeriesInteractionInfo; /** * [descr:_viz_chart_SeriesInteractionInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -34305,7 +34644,7 @@ declare module DevExpress.viz { * [descr:_viz_chart_SeriesSelectionChangedEvent] */ export type SeriesSelectionChangedEvent = - DevExpress.events.EventInfo & SeriesInteractionInfo; + DevExpress.common.core.events.EventInfo & SeriesInteractionInfo; /** * [descr:dxChartTooltip] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -34319,13 +34658,15 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.TooltipInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.TooltipInfo; /** * [descr:_viz_chart_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.TooltipInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.TooltipInfo; /** * [descr:dxChartValueAxis] */ @@ -34540,7 +34881,7 @@ declare module DevExpress.viz { /** * [descr:dxChartOptions.valueAxis.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; }; /** * [descr:dxChartValueAxisStrips] @@ -34584,8 +34925,11 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_ZoomEndEvent] */ - export type ZoomEndEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo & { + export type ZoomEndEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxChart, + MouseEvent | TouchEvent + > & { /** * [descr:_viz_chart_ZoomEndEvent.rangeStart] */ @@ -34622,8 +34966,11 @@ declare module DevExpress.viz { /** * [descr:_viz_chart_ZoomStartEvent] */ - export type ZoomStartEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo & { + export type ZoomStartEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< + dxChart, + MouseEvent | TouchEvent + > & { /** * [descr:_viz_chart_ZoomStartEvent.axis] */ @@ -34669,7 +35016,7 @@ declare module DevExpress.viz { * [descr:dxChartCommonAnnotationConfig.template] */ template?: - | DevExpress.core.template + | template | (( annotation: dxChartAnnotationConfig | any, element: SVGGElement @@ -34679,7 +35026,7 @@ declare module DevExpress.viz { * [descr:dxChartCommonAnnotationConfig.tooltipTemplate] */ tooltipTemplate?: - | DevExpress.core.template + | template | (( annotation: dxChartAnnotationConfig | any, element: DevExpress.core.DxElement @@ -34788,7 +35135,7 @@ declare module DevExpress.viz { /** * [descr:dxChartOptions.crosshair.horizontalLine.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxChartOptions.crosshair.horizontalLine.label.visible] */ @@ -34831,7 +35178,7 @@ declare module DevExpress.viz { /** * [descr:dxChartOptions.crosshair.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxChartOptions.crosshair.label.visible] */ @@ -34877,7 +35224,7 @@ declare module DevExpress.viz { /** * [descr:dxChartOptions.crosshair.verticalLine.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxChartOptions.crosshair.verticalLine.label.visible] */ @@ -36833,20 +37180,24 @@ declare module DevExpress.viz { /** * [descr:_viz_circular_gauge_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_circular_gauge_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_circular_gauge_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_circular_gauge_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_circular_gauge_FileSavingEvent] */ @@ -36856,19 +37207,19 @@ declare module DevExpress.viz { * [descr:_viz_circular_gauge_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_circular_gauge_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_circular_gauge_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxCircularGaugeOptions; /** * [descr:dxCircularGaugeRangeContainer] @@ -36913,13 +37264,13 @@ declare module DevExpress.viz { * [descr:_viz_circular_gauge_TooltipHiddenEvent] */ export type TooltipHiddenEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseGauge.TooltipInfo; /** * [descr:_viz_circular_gauge_TooltipShownEvent] */ export type TooltipShownEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseGauge.TooltipInfo; } /** @@ -36946,7 +37297,7 @@ declare module DevExpress.viz { * [descr:dxCircularGaugeOptions.centerTemplate] */ centerTemplate?: - | DevExpress.core.template + | template | (( component: dxCircularGauge, element: SVGGElement @@ -36981,7 +37332,7 @@ declare module DevExpress.viz { * [descr:dxFunnel.getAllItems()] */ getAllItems(): Array; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxFunnel.hideTooltip()] */ @@ -36991,20 +37342,23 @@ declare module DevExpress.viz { /** * [descr:_viz_funnel_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_funnel_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_viz_funnel_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_funnel_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_funnel_FileSavingEvent] */ @@ -37024,22 +37378,23 @@ declare module DevExpress.viz { /** * [descr:_viz_funnel_HoverChangedEvent] */ - export type HoverChangedEvent = DevExpress.events.EventInfo & - FunnelItemInfo; + export type HoverChangedEvent = + DevExpress.common.core.events.EventInfo & FunnelItemInfo; /** * [descr:_viz_funnel_IncidentOccurredEvent] */ - export type IncidentOccurredEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.IncidentInfo; + export type IncidentOccurredEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_funnel_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_funnel_ItemClickEvent] */ - export type ItemClickEvent = DevExpress.events.NativeEventInfo< + export type ItemClickEvent = DevExpress.common.core.events.NativeEventInfo< dxFunnel, MouseEvent | PointerEvent > & @@ -37064,7 +37419,7 @@ declare module DevExpress.viz { * [descr:dxFunnelOptions.legend.markerTemplate] */ markerTemplate?: - | DevExpress.core.template + | template | (( legendItem: LegendItem, element: SVGGElement @@ -37078,22 +37433,24 @@ declare module DevExpress.viz { /** * [descr:_viz_funnel_LegendClickEvent] */ - export type LegendClickEvent = DevExpress.events.NativeEventInfo< - dxFunnel, - MouseEvent | PointerEvent - > & - FunnelItemInfo; + export type LegendClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxFunnel, + MouseEvent | PointerEvent + > & + FunnelItemInfo; /** * [descr:_viz_funnel_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxFunnelOptions; /** * [descr:_viz_funnel_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo & - FunnelItemInfo; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo & FunnelItemInfo; /** * [descr:dxFunnelTooltip] */ @@ -37102,7 +37459,7 @@ declare module DevExpress.viz { * [descr:dxFunnelOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( info: { item?: Item; @@ -37212,7 +37569,7 @@ declare module DevExpress.viz { /** * [descr:dxFunnelOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxFunnelOptions.hoverEnabled] */ @@ -37396,7 +37753,7 @@ declare module DevExpress.viz { /** * [descr:dxFunnelOptions.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxFunnelOptions.label.horizontalAlignment] */ @@ -37497,20 +37854,24 @@ declare module DevExpress.viz { /** * [descr:_viz_linear_gauge_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_linear_gauge_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_linear_gauge_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_linear_gauge_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_linear_gauge_FileSavingEvent] */ @@ -37520,19 +37881,19 @@ declare module DevExpress.viz { * [descr:_viz_linear_gauge_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_linear_gauge_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_linear_gauge_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxLinearGaugeOptions; /** * [descr:dxLinearGaugeRangeContainer] @@ -37596,13 +37957,14 @@ declare module DevExpress.viz { * [descr:_viz_linear_gauge_TooltipHiddenEvent] */ export type TooltipHiddenEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseGauge.TooltipInfo; /** * [descr:_viz_linear_gauge_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseGauge.TooltipInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseGauge.TooltipInfo; } /** * [descr:dxLinearGaugeOptions] @@ -37659,24 +38021,28 @@ declare module DevExpress.viz { /** * [descr:_viz_pie_chart_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_pie_chart_DoneEvent] */ - export type DoneEvent = DevExpress.events.EventInfo; + export type DoneEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_viz_pie_chart_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_pie_chart_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_pie_chart_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_pie_chart_FileSavingEvent] */ @@ -37686,13 +38052,13 @@ declare module DevExpress.viz { * [descr:_viz_pie_chart_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_pie_chart_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:dxPieChartLegend] */ @@ -37725,7 +38091,7 @@ declare module DevExpress.viz { * [descr:dxPieChartOptions.legend.markerTemplate] */ markerTemplate?: - | DevExpress.core.template + | template | (( legendItem: LegendItem, element: SVGGElement @@ -37735,24 +38101,26 @@ declare module DevExpress.viz { /** * [descr:_viz_pie_chart_LegendClickEvent] */ - export type LegendClickEvent = DevExpress.events.NativeEventInfo< - dxPieChart, - MouseEvent | PointerEvent - > & { - /** - * [descr:_viz_pie_chart_LegendClickEvent.target] - */ - readonly target: string | number; - /** - * [descr:_viz_pie_chart_LegendClickEvent.points] - */ - readonly points: Array; - }; + export type LegendClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxPieChart, + MouseEvent | PointerEvent + > & { + /** + * [descr:_viz_pie_chart_LegendClickEvent.target] + */ + readonly target: string | number; + /** + * [descr:_viz_pie_chart_LegendClickEvent.points] + */ + readonly points: Array; + }; /** * [descr:_viz_pie_chart_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type PieChartAnnotationLocation = 'center' | 'edge'; export type PieChartLegendHoverMode = 'none' | 'allArgumentPoints'; export type PieChartSegmentDirection = 'anticlockwise' | 'clockwise'; @@ -37761,7 +38129,7 @@ declare module DevExpress.viz { /** * [descr:_viz_pie_chart_PointClickEvent] */ - export type PointClickEvent = DevExpress.events.NativeEventInfo< + export type PointClickEvent = DevExpress.common.core.events.NativeEventInfo< dxPieChart, MouseEvent | PointerEvent > & @@ -37770,13 +38138,13 @@ declare module DevExpress.viz { * [descr:_viz_pie_chart_PointHoverChangedEvent] */ export type PointHoverChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo; /** * [descr:_viz_pie_chart_PointSelectionChangedEvent] */ export type PointSelectionChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo; export type Properties = dxPieChartOptions; export type SmallValuesGroupingMode = @@ -37786,13 +38154,15 @@ declare module DevExpress.viz { /** * [descr:_viz_pie_chart_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.TooltipInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.TooltipInfo; /** * [descr:_viz_pie_chart_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.TooltipInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.TooltipInfo; } /** * [descr:dxPieChartAnnotationConfig] @@ -37833,7 +38203,7 @@ declare module DevExpress.viz { * [descr:dxPieChartCommonAnnotationConfig.template] */ template?: - | DevExpress.core.template + | template | (( annotation: dxPieChartAnnotationConfig | any, element: SVGGElement @@ -37843,7 +38213,7 @@ declare module DevExpress.viz { * [descr:dxPieChartCommonAnnotationConfig.tooltipTemplate] */ tooltipTemplate?: - | DevExpress.core.template + | template | (( annotation: dxPieChartAnnotationConfig | any, element: DevExpress.core.DxElement @@ -37864,7 +38234,7 @@ declare module DevExpress.viz { * [descr:dxPieChartOptions.centerTemplate] */ centerTemplate?: - | DevExpress.core.template + | template | (( component: dxPieChart, element: SVGGElement @@ -38075,7 +38445,7 @@ declare module DevExpress.viz { /** * [descr:dxPieChartSeriesTypes.CommonPieChartSeries.label.argumentFormat] */ - argumentFormat?: DevExpress.ui.Format | undefined; + argumentFormat?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxPieChartSeriesTypes.CommonPieChartSeries.label.backgroundColor] */ @@ -38129,7 +38499,7 @@ declare module DevExpress.viz { /** * [descr:dxPieChartSeriesTypes.CommonPieChartSeries.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxPieChartSeriesTypes.CommonPieChartSeries.label.position] */ @@ -38367,15 +38737,16 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_ArgumentAxisClickEvent] */ - export type ArgumentAxisClickEvent = DevExpress.events.NativeEventInfo< - dxPolarChart, - MouseEvent | PointerEvent - > & { - /** - * [descr:_viz_polar_chart_ArgumentAxisClickEvent.argument] - */ - readonly argument: Date | number | string; - }; + export type ArgumentAxisClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxPolarChart, + MouseEvent | PointerEvent + > & { + /** + * [descr:_viz_polar_chart_ArgumentAxisClickEvent.argument] + */ + readonly argument: Date | number | string; + }; /** * [descr:dxPolarChartArgumentAxisConstantLines] */ @@ -38429,7 +38800,7 @@ declare module DevExpress.viz { /** * [descr:dxPolarChartOptions.argumentAxis.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; }; /** * [descr:dxPolarChartArgumentAxisMinorTick] @@ -38734,24 +39105,29 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_polar_chart_DoneEvent] */ - export type DoneEvent = DevExpress.events.EventInfo; + export type DoneEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_polar_chart_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_polar_chart_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_polar_chart_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_polar_chart_FileSavingEvent] */ @@ -38761,13 +39137,13 @@ declare module DevExpress.viz { * [descr:_viz_polar_chart_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_polar_chart_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:dxPolarChartLegend] */ @@ -38796,8 +39172,8 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_LegendClickEvent] */ - export type LegendClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type LegendClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxPolarChart, MouseEvent | PointerEvent > & { @@ -38809,13 +39185,14 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; /** * [descr:_viz_polar_chart_PointClickEvent] */ - export type PointClickEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type PointClickEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxPolarChart, MouseEvent | PointerEvent > & @@ -38824,13 +39201,13 @@ declare module DevExpress.viz { * [descr:_viz_polar_chart_PointHoverChangedEvent] */ export type PointHoverChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo; /** * [descr:_viz_polar_chart_PointSelectionChangedEvent] */ export type PointSelectionChangedEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseChart.PointInteractionInfo; export type PolarChartSeriesType = | 'area' @@ -38842,20 +39219,22 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_SeriesClickEvent] */ - export type SeriesClickEvent = DevExpress.events.NativeEventInfo< - dxPolarChart, - MouseEvent | PointerEvent - > & { - /** - * [descr:_viz_polar_chart_SeriesClickEvent.target] - */ - readonly target: polarChartSeriesObject; - }; + export type SeriesClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxPolarChart, + MouseEvent | PointerEvent + > & { + /** + * [descr:_viz_polar_chart_SeriesClickEvent.target] + */ + readonly target: polarChartSeriesObject; + }; /** * [descr:_viz_polar_chart_SeriesHoverChangedEvent] */ export type SeriesHoverChangedEvent = - DevExpress.events.EventInfo & SeriesInteractionInfo; + DevExpress.common.core.events.EventInfo & + SeriesInteractionInfo; /** * [descr:_viz_polar_chart_SeriesInteractionInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -38870,7 +39249,8 @@ declare module DevExpress.viz { * [descr:_viz_polar_chart_SeriesSelectionChangedEvent] */ export type SeriesSelectionChangedEvent = - DevExpress.events.EventInfo & SeriesInteractionInfo; + DevExpress.common.core.events.EventInfo & + SeriesInteractionInfo; /** * [descr:dxPolarChartTooltip] */ @@ -38883,13 +39263,15 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.TooltipInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.TooltipInfo; /** * [descr:_viz_polar_chart_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseChart.TooltipInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseChart.TooltipInfo; /** * [descr:dxPolarChartValueAxis] */ @@ -39040,7 +39422,7 @@ declare module DevExpress.viz { /** * [descr:dxPolarChartOptions.valueAxis.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; }; /** * [descr:dxPolarChartValueAxisStrips] @@ -39085,8 +39467,8 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_ZoomEndEvent] */ - export type ZoomEndEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type ZoomEndEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxPolarChart, MouseEvent | TouchEvent > & { @@ -39118,8 +39500,8 @@ declare module DevExpress.viz { /** * [descr:_viz_polar_chart_ZoomStartEvent] */ - export type ZoomStartEvent = DevExpress.events.Cancelable & - DevExpress.events.NativeEventInfo< + export type ZoomStartEvent = DevExpress.common.core.events.Cancelable & + DevExpress.common.core.events.NativeEventInfo< dxPolarChart, MouseEvent | TouchEvent > & { @@ -39172,7 +39554,7 @@ declare module DevExpress.viz { * [descr:dxPolarChartCommonAnnotationConfig.template] */ template?: - | DevExpress.core.template + | template | (( annotation: dxPolarChartAnnotationConfig | any, element: SVGGElement @@ -39182,7 +39564,7 @@ declare module DevExpress.viz { * [descr:dxPolarChartCommonAnnotationConfig.tooltipTemplate] */ tooltipTemplate?: - | DevExpress.core.template + | template | (( annotation: dxPolarChartAnnotationConfig | any, element: DevExpress.core.DxElement @@ -39701,7 +40083,7 @@ declare module DevExpress.viz { /** * [descr:dxPolarChartSeriesTypes.CommonPolarChartSeries.label.argumentFormat] */ - argumentFormat?: DevExpress.ui.Format | undefined; + argumentFormat?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxPolarChartSeriesTypes.CommonPolarChartSeries.label.backgroundColor] */ @@ -39755,7 +40137,7 @@ declare module DevExpress.viz { /** * [descr:dxPolarChartSeriesTypes.CommonPolarChartSeries.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxPolarChartSeriesTypes.CommonPolarChartSeries.label.position] */ @@ -39953,7 +40335,7 @@ declare module DevExpress.viz { * [descr:dxRangeSelector] */ export class dxRangeSelector extends BaseWidget { - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxRangeSelector.getValue()] */ @@ -39993,20 +40375,24 @@ declare module DevExpress.viz { /** * [descr:_viz_range_selector_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_range_selector_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_range_selector_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_range_selector_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_range_selector_FileSavingEvent] */ @@ -40016,37 +40402,38 @@ declare module DevExpress.viz { * [descr:_viz_range_selector_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_range_selector_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_range_selector_OptionChangedEvent] */ export type OptionChangedEvent = - DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxRangeSelectorOptions; export type ValueChangedCallMode = 'onMoving' | 'onMovingComplete'; /** * [descr:_viz_range_selector_ValueChangedEvent] */ - export type ValueChangedEvent = DevExpress.events.NativeEventInfo< - dxRangeSelector, - MouseEvent | TouchEvent - > & { - /** - * [descr:_viz_range_selector_ValueChangedEvent.value] - */ - readonly value: Array; - /** - * [descr:_viz_range_selector_ValueChangedEvent.previousValue] - */ - readonly previousValue: Array; - }; + export type ValueChangedEvent = + DevExpress.common.core.events.NativeEventInfo< + dxRangeSelector, + MouseEvent | TouchEvent + > & { + /** + * [descr:_viz_range_selector_ValueChangedEvent.value] + */ + readonly value: Array; + /** + * [descr:_viz_range_selector_ValueChangedEvent.previousValue] + */ + readonly previousValue: Array; + }; } /** * [descr:dxRangeSelectorOptions] @@ -40235,7 +40622,7 @@ declare module DevExpress.viz { /** * [descr:dxRangeSelectorOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxRangeSelectorOptions.dataSourceField] */ @@ -40339,7 +40726,7 @@ declare module DevExpress.viz { /** * [descr:dxRangeSelectorOptions.scale.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxRangeSelectorOptions.scale.label.overlappingBehavior] */ @@ -40379,7 +40766,7 @@ declare module DevExpress.viz { /** * [descr:dxRangeSelectorOptions.scale.marker.label.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; }; /** * [descr:dxRangeSelectorOptions.scale.marker.separatorHeight] @@ -40553,7 +40940,7 @@ declare module DevExpress.viz { /** * [descr:dxRangeSelectorOptions.sliderMarker.format] */ - format?: DevExpress.ui.Format | undefined; + format?: DevExpress.common.core.localization.Format | undefined; /** * [descr:dxRangeSelectorOptions.sliderMarker.invalidRangeColor] */ @@ -40598,7 +40985,7 @@ declare module DevExpress.viz { * [descr:dxSankey.getAllNodes()] */ getAllNodes(): Array; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxSankey.hideTooltip()] */ @@ -40608,20 +40995,23 @@ declare module DevExpress.viz { /** * [descr:_viz_sankey_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sankey_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sankey_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sankey_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_sankey_FileSavingEvent] */ @@ -40630,17 +41020,18 @@ declare module DevExpress.viz { /** * [descr:_viz_sankey_IncidentOccurredEvent] */ - export type IncidentOccurredEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.IncidentInfo; + export type IncidentOccurredEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_sankey_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_sankey_LinkClickEvent] */ - export type LinkClickEvent = DevExpress.events.NativeEventInfo< + export type LinkClickEvent = DevExpress.common.core.events.NativeEventInfo< dxSankey, MouseEvent | PointerEvent > & { @@ -40652,16 +41043,17 @@ declare module DevExpress.viz { /** * [descr:_viz_sankey_LinkHoverEvent] */ - export type LinkHoverEvent = DevExpress.events.EventInfo & { - /** - * [descr:_viz_sankey_LinkHoverEvent.target] - */ - readonly target: dxSankeyLink; - }; + export type LinkHoverEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_viz_sankey_LinkHoverEvent.target] + */ + readonly target: dxSankeyLink; + }; /** * [descr:_viz_sankey_NodeClickEvent] */ - export type NodeClickEvent = DevExpress.events.NativeEventInfo< + export type NodeClickEvent = DevExpress.common.core.events.NativeEventInfo< dxSankey, MouseEvent | PointerEvent > & { @@ -40673,17 +41065,19 @@ declare module DevExpress.viz { /** * [descr:_viz_sankey_NodeHoverEvent] */ - export type NodeHoverEvent = DevExpress.events.EventInfo & { - /** - * [descr:_viz_sankey_NodeHoverEvent.target] - */ - readonly target: dxSankeyNode; - }; + export type NodeHoverEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_viz_sankey_NodeHoverEvent.target] + */ + readonly target: dxSankeyNode; + }; /** * [descr:_viz_sankey_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSankeyOptions; export type SankeyColorMode = 'none' | 'source' | 'target' | 'gradient'; /** @@ -40715,7 +41109,7 @@ declare module DevExpress.viz { * [descr:dxSankeyOptions.tooltip.linkTooltipTemplate] */ linkTooltipTemplate?: - | DevExpress.core.template + | template | (( info: { source?: string; target?: string; weight?: number }, element: DevExpress.core.DxElement @@ -40725,7 +41119,7 @@ declare module DevExpress.viz { * [descr:dxSankeyOptions.tooltip.nodeTooltipTemplate] */ nodeTooltipTemplate?: - | DevExpress.core.template + | template | (( info: { label?: string; weightIn?: number; weightOut?: number }, element: DevExpress.core.DxElement @@ -40848,7 +41242,7 @@ declare module DevExpress.viz { /** * [descr:dxSankeyOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxSankeyOptions.hoverEnabled] */ @@ -41155,26 +41549,30 @@ declare module DevExpress.viz { * [descr:dxSparkline] */ export class dxSparkline extends BaseSparkline { - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; } module dxSparkline { /** * [descr:_viz_sparkline_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sparkline_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sparkline_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sparkline_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_sparkline_FileSavingEvent] */ @@ -41184,18 +41582,19 @@ declare module DevExpress.viz { * [descr:_viz_sparkline_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_sparkline_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:_viz_sparkline_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxSparklineOptions; export type SparklineType = | 'area' @@ -41209,11 +41608,13 @@ declare module DevExpress.viz { /** * [descr:_viz_sparkline_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_sparkline_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo; } /** * [descr:dxSparklineOptions] @@ -41237,7 +41638,7 @@ declare module DevExpress.viz { /** * [descr:dxSparklineOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxSparklineOptions.firstLastColor] */ @@ -41327,7 +41728,7 @@ declare module DevExpress.viz { * [descr:dxTreeMap.getCurrentNode()] */ getCurrentNode(): dxTreeMapNode; - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:dxTreeMap.getRootNode()] */ @@ -41345,7 +41746,7 @@ declare module DevExpress.viz { /** * [descr:_viz_tree_map_ClickEvent] */ - export type ClickEvent = DevExpress.events.NativeEventInfo< + export type ClickEvent = DevExpress.common.core.events.NativeEventInfo< dxTreeMap, MouseEvent | PointerEvent > & { @@ -41357,29 +41758,33 @@ declare module DevExpress.viz { /** * [descr:_viz_tree_map_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_tree_map_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = DevExpress.common.core.events.EventInfo; /** * [descr:_viz_tree_map_DrillEvent] */ - export type DrillEvent = DevExpress.events.EventInfo & { - /** - * [descr:_viz_tree_map_DrillEvent.node] - */ - readonly node: dxTreeMapNode; - }; + export type DrillEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_viz_tree_map_DrillEvent.node] + */ + readonly node: dxTreeMapNode; + }; /** * [descr:_viz_tree_map_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_tree_map_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_tree_map_FileSavingEvent] */ @@ -41388,18 +41793,19 @@ declare module DevExpress.viz { /** * [descr:_viz_tree_map_HoverChangedEvent] */ - export type HoverChangedEvent = DevExpress.events.EventInfo & - InteractionInfo; + export type HoverChangedEvent = + DevExpress.common.core.events.EventInfo & InteractionInfo; /** * [descr:_viz_tree_map_IncidentOccurredEvent] */ - export type IncidentOccurredEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.IncidentInfo; + export type IncidentOccurredEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_tree_map_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:InteractionInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -41414,7 +41820,7 @@ declare module DevExpress.viz { * [descr:_viz_tree_map_NodesInitializedEvent] */ export type NodesInitializedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_viz_tree_map_NodesInitializedEvent.root] */ @@ -41423,23 +41829,25 @@ declare module DevExpress.viz { /** * [descr:_viz_tree_map_NodesRenderingEvent] */ - export type NodesRenderingEvent = DevExpress.events.EventInfo & { - /** - * [descr:_viz_tree_map_NodesRenderingEvent.node] - */ - readonly node: dxTreeMapNode; - }; + export type NodesRenderingEvent = + DevExpress.common.core.events.EventInfo & { + /** + * [descr:_viz_tree_map_NodesRenderingEvent.node] + */ + readonly node: dxTreeMapNode; + }; /** * [descr:_viz_tree_map_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxTreeMapOptions; /** * [descr:_viz_tree_map_SelectionChangedEvent] */ - export type SelectionChangedEvent = DevExpress.events.EventInfo & - InteractionInfo; + export type SelectionChangedEvent = + DevExpress.common.core.events.EventInfo & InteractionInfo; /** * [descr:dxTreeMapTooltip] */ @@ -41448,7 +41856,7 @@ declare module DevExpress.viz { * [descr:dxTreeMapOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( info: { value?: number; valueText?: string; node?: dxTreeMapNode }, element: DevExpress.core.DxElement @@ -41612,7 +42020,7 @@ declare module DevExpress.viz { /** * [descr:dxTreeMapOptions.dataSource] */ - dataSource?: DevExpress.data.DataSource.DataSourceLike | null; + dataSource?: DevExpress.data.DataSourceLike | null; /** * [descr:dxTreeMapOptions.group] */ @@ -41943,7 +42351,7 @@ declare module DevExpress.viz { * [descr:_viz_vector_map_CenterChangedEvent] */ export type CenterChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_viz_vector_map_CenterChangedEvent.center] */ @@ -41952,7 +42360,7 @@ declare module DevExpress.viz { /** * [descr:_viz_vector_map_ClickEvent] */ - export type ClickEvent = DevExpress.events.NativeEventInfo< + export type ClickEvent = DevExpress.common.core.events.NativeEventInfo< dxVectorMap, MouseEvent | PointerEvent > & { @@ -41964,20 +42372,24 @@ declare module DevExpress.viz { /** * [descr:_viz_vector_map_DisposingEvent] */ - export type DisposingEvent = DevExpress.events.EventInfo; + export type DisposingEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_vector_map_DrawnEvent] */ - export type DrawnEvent = DevExpress.events.EventInfo; + export type DrawnEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_vector_map_ExportedEvent] */ - export type ExportedEvent = DevExpress.events.EventInfo; + export type ExportedEvent = + DevExpress.common.core.events.EventInfo; /** * [descr:_viz_vector_map_ExportingEvent] */ - export type ExportingEvent = DevExpress.events.EventInfo & - DevExpress.viz.BaseWidget.ExportInfo; + export type ExportingEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.viz.BaseWidget.ExportInfo; /** * [descr:_viz_vector_map_FileSavingEvent] */ @@ -41987,13 +42399,13 @@ declare module DevExpress.viz { * [descr:_viz_vector_map_IncidentOccurredEvent] */ export type IncidentOccurredEvent = - DevExpress.events.EventInfo & + DevExpress.common.core.events.EventInfo & DevExpress.viz.BaseWidget.IncidentInfo; /** * [descr:_viz_vector_map_InitializedEvent] */ export type InitializedEvent = - DevExpress.events.InitializedEventInfo; + DevExpress.common.core.events.InitializedEventInfo; /** * [descr:dxVectorMapLegends] */ @@ -42042,7 +42454,7 @@ declare module DevExpress.viz { * [descr:dxVectorMapOptions.legends.markerTemplate] */ markerTemplate?: - | DevExpress.core.template + | template | (( legendItem: LegendItem, element: SVGGElement @@ -42065,14 +42477,15 @@ declare module DevExpress.viz { /** * [descr:_viz_vector_map_OptionChangedEvent] */ - export type OptionChangedEvent = DevExpress.events.EventInfo & - DevExpress.events.ChangedOptionInfo; + export type OptionChangedEvent = + DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxVectorMapOptions; /** * [descr:_viz_vector_map_SelectionChangedEvent] */ export type SelectionChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_viz_vector_map_SelectionChangedEvent.target] */ @@ -42086,7 +42499,7 @@ declare module DevExpress.viz { * [descr:dxVectorMapOptions.tooltip.contentTemplate] */ contentTemplate?: - | DevExpress.core.template + | template | (( info: MapLayerElement, element: DevExpress.core.DxElement @@ -42099,13 +42512,13 @@ declare module DevExpress.viz { /** * [descr:dxVectorMapOptions.tooltip.format] */ - format?: DevExpress.ui.Format; + format?: DevExpress.common.core.localization.Format; }; /** * [descr:_viz_vector_map_TooltipHiddenEvent] */ - export type TooltipHiddenEvent = DevExpress.events.EventInfo & - TooltipInfo; + export type TooltipHiddenEvent = + DevExpress.common.core.events.EventInfo & TooltipInfo; /** * [descr:_viz_vector_map_TooltipInfo] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -42119,8 +42532,8 @@ declare module DevExpress.viz { /** * [descr:_viz_vector_map_TooltipShownEvent] */ - export type TooltipShownEvent = DevExpress.events.EventInfo & - TooltipInfo; + export type TooltipShownEvent = + DevExpress.common.core.events.EventInfo & TooltipInfo; export type VectorMapLayerType = 'area' | 'line' | 'marker'; export type VectorMapMarkerShape = 'circle' | 'square'; export type VectorMapMarkerType = 'bubble' | 'dot' | 'image' | 'pie'; @@ -42128,7 +42541,7 @@ declare module DevExpress.viz { * [descr:_viz_vector_map_ZoomFactorChangedEvent] */ export type ZoomFactorChangedEvent = - DevExpress.events.EventInfo & { + DevExpress.common.core.events.EventInfo & { /** * [descr:_viz_vector_map_ZoomFactorChangedEvent.zoomFactor] */ @@ -42166,7 +42579,7 @@ declare module DevExpress.viz { * [descr:dxVectorMapCommonAnnotationConfig.template] */ template?: - | DevExpress.core.template + | template | (( annotation: dxVectorMapAnnotationConfig | any, element: SVGGElement @@ -42176,7 +42589,7 @@ declare module DevExpress.viz { * [descr:dxVectorMapCommonAnnotationConfig.tooltipTemplate] */ tooltipTemplate?: - | DevExpress.core.template + | template | (( annotation: dxVectorMapAnnotationConfig | any, element: DevExpress.core.DxElement @@ -42287,10 +42700,7 @@ declare module DevExpress.viz { /** * [descr:dxVectorMapOptions.layers.dataSource] */ - dataSource?: - | object - | DevExpress.data.DataSource.DataSourceLike - | null; + dataSource?: object | DevExpress.data.DataSourceLike | null; /** * [descr:dxVectorMapOptions.layers.elementType] */ @@ -42397,10 +42807,7 @@ declare module DevExpress.viz { colorGroups?: Array; customize?: (elements: Array) => any; dataField?: string; - dataSource?: - | object - | DevExpress.data.DataSource.DataSourceLike - | null; + dataSource?: object | DevExpress.data.DataSourceLike | null; elementType?: 'bubble' | 'dot' | 'image' | 'pie'; hoverEnabled?: boolean; hoveredBorderColor?: string; @@ -42626,7 +43033,7 @@ declare module DevExpress.viz { /** * [descr:MapLayer.getDataSource()] */ - getDataSource(): DevExpress.data.DataSource; + getDataSource(): DevExpress.common.data.DataSource; /** * [descr:MapLayer.getElements()] */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0af0f306016..f8af0724d3bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: devDependencies: '@nx/devkit': specifier: 18.3.4 - version: 18.3.4(nx@19.4.2(@swc/core@1.9.2)) + version: 18.3.4(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) '@nx/jest': specifier: 19.4.2 - version: 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5) + version: 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5) '@nx/js': specifier: 19.4.2 - version: 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2))(typescript@5.4.5) + version: 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(typescript@5.4.5) '@types/jest': specifier: 29.5.12 version: 29.5.12 @@ -45,8 +45,8 @@ importers: specifier: 6.0.2 version: 6.0.2(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(tslint@6.1.3(typescript@5.4.5)) devextreme-internal-tools: - specifier: 16.0.0-beta.18 - version: 16.0.0-beta.18 + specifier: 16.0.0 + version: 16.0.0 http-server: specifier: 14.1.1 version: 14.1.1 @@ -55,7 +55,7 @@ importers: version: 8.0.3 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jspdf-autotable: specifier: 3.8.3 version: 3.8.3(jspdf@2.5.2) @@ -64,7 +64,7 @@ importers: version: 14.0.1(enquirer@2.4.1) nx: specifier: 19.4.2 - version: 19.4.2(@swc/core@1.9.2) + version: 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) nx-cloud: specifier: 19.0.0 version: 19.0.0 @@ -85,7 +85,7 @@ importers: version: 3.0.6 ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5) vue: specifier: 3.4.27 version: 3.4.27(typescript@5.4.5) @@ -143,7 +143,7 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: 17.3.8 - version: 17.3.8(oj6kjp7stymmgwnpvro3bc4ivi) + version: 17.3.8(ta2xvmedzeu3mme5vju3d2neh4) '@angular/cli': specifier: 17.3.11 version: 17.3.11(chokidar@3.6.0) @@ -164,7 +164,7 @@ importers: version: 7.0.3 ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5) typescript: specifier: 5.4.5 version: 5.4.5 @@ -489,7 +489,7 @@ importers: version: 1.1.4 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + version: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-environment-node: specifier: 29.7.0 version: 29.7.0 @@ -537,7 +537,7 @@ importers: version: 2.6.2 ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5) apps/react: dependencies: @@ -562,22 +562,22 @@ importers: version: 18.0.11 css-loader: specifier: 6.10.0 - version: 6.10.0(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 6.10.0(webpack@5.94.0) source-map-loader: specifier: 4.0.2 - version: 4.0.2(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 4.0.2(webpack@5.94.0) style-loader: specifier: 3.3.4 - version: 3.3.4(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 3.3.4(webpack@5.94.0) ts-loader: specifier: 9.5.1 - version: 9.5.1(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 9.5.1(typescript@5.4.5)(webpack@5.94.0) tsconfig-paths-webpack-plugin: specifier: 4.1.0 version: 4.1.0 webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-cli: specifier: 5.1.4 version: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0) @@ -657,19 +657,19 @@ importers: version: 2.0.0-beta.7(vue@3.2.47) css-loader: specifier: 6.10.0 - version: 6.10.0(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 6.10.0(webpack@5.94.0) minimatch: specifier: 4.2.3 version: 4.2.3 source-map-loader: specifier: 4.0.2 - version: 4.0.2(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 4.0.2(webpack@5.94.0) style-loader: specifier: 3.3.4 - version: 3.3.4(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 3.3.4(webpack@5.94.0) ts-loader: specifier: 9.5.1 - version: 9.5.1(typescript@4.9.5)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 9.5.1(typescript@4.9.5)(webpack@5.94.0) tsconfig-paths-webpack-plugin: specifier: 4.1.0 version: 4.1.0 @@ -678,16 +678,16 @@ importers: version: 4.9.5 url-loader: specifier: 1.1.2 - version: 1.1.2(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 1.1.2(webpack@5.94.0) vue-loader: specifier: 17.4.2 - version: 17.4.2(@vue/compiler-sfc@3.3.4)(vue@3.2.47)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + version: 17.4.2(@vue/compiler-sfc@3.3.4)(vue@3.2.47)(webpack@5.94.0) vue-router: specifier: 4.2.5 version: 4.2.5(vue@3.2.47) webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-cli: specifier: 5.1.4 version: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0) @@ -744,7 +744,7 @@ importers: version: 5.4.11(@types/node@20.12.8)(less@4.2.0)(lightningcss@1.28.1)(sass-embedded@1.66.0)(sass@1.81.0)(terser@5.36.0) webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@4.10.0) webpack-cli: specifier: 4.10.0 version: 4.10.0(webpack@5.94.0) @@ -853,25 +853,25 @@ importers: version: 7.23.9(@babel/core@7.23.9) '@devextreme-generator/angular': specifier: 3.0.12 - version: 3.0.12(atnximysgm2qhxoullfrc4ld7m) + version: 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) '@devextreme-generator/build-helpers': specifier: 3.0.12 - version: 3.0.12(jx45iv34cplwvde5i3ekp234ua) + version: 3.0.12(ectyjufymdsezb24bv2esmeafq) '@devextreme-generator/core': specifier: 3.0.12 - version: 3.0.12(atnximysgm2qhxoullfrc4ld7m) + version: 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) '@devextreme-generator/declarations': specifier: 3.0.12 version: 3.0.12 '@devextreme-generator/inferno': specifier: 3.0.12 - version: 3.0.12(atnximysgm2qhxoullfrc4ld7m) + version: 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) '@devextreme-generator/react': specifier: 3.0.12 - version: 3.0.12(atnximysgm2qhxoullfrc4ld7m) + version: 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) '@devextreme-generator/vue': specifier: 3.0.12 - version: 3.0.12(atnximysgm2qhxoullfrc4ld7m) + version: 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) '@jest/globals': specifier: 29.7.0 version: 29.7.0 @@ -958,7 +958,7 @@ importers: version: 17.1.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-config-devextreme: specifier: 1.1.5 - version: 1.1.5(dviz67724z5lsegdjr2jecno6q) + version: 1.1.5(2wu47vven6w2q4wadgy2aiclqi) eslint-plugin-i18n: specifier: 2.3.0 version: 2.3.0 @@ -967,7 +967,7 @@ importers: version: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) eslint-plugin-jest: specifier: 27.6.0 - version: 27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + version: 27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.56.0) @@ -1195,7 +1195,7 @@ importers: version: 1.3.0 string-replace-loader: specifier: 3.1.0 - version: 3.1.0(webpack@5.94.0(@swc/core@1.9.2)) + version: 3.1.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) stylelint: specifier: 15.11.0 version: 15.11.0(typescript@4.9.5) @@ -1219,13 +1219,13 @@ importers: version: 0.0.11 terser-webpack-plugin: specifier: 5.3.9 - version: 5.3.9(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)) + version: 5.3.9(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) through2: specifier: 2.0.5 version: 2.0.5 ts-jest: specifier: 29.1.2 - version: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + version: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) tsc-alias: specifier: 1.8.10 version: 1.8.10 @@ -1246,10 +1246,10 @@ importers: version: 1.1.0 webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) webpack-stream: specifier: 7.0.0 - version: 7.0.0(webpack@5.94.0(@swc/core@1.9.2)) + version: 7.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) yaml: specifier: 2.5.0 version: 2.5.0 @@ -1362,7 +1362,7 @@ importers: version: 2.0.1(karma@6.4.4) karma-webpack: specifier: 5.0.1 - version: 5.0.1(webpack@5.94.0(@swc/core@1.9.2)) + version: 5.0.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) ng-packagr: specifier: 17.3.0 version: 17.3.0(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5) @@ -1386,7 +1386,7 @@ importers: version: 5.4.5 webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) yargs: specifier: 17.7.2 version: 17.7.2 @@ -1402,7 +1402,7 @@ importers: version: 29.5.12 ts-jest: specifier: 29.1.3 - version: 29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5) packages/devextreme-react: dependencies: @@ -1439,7 +1439,7 @@ importers: version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-config-devextreme: specifier: 1.1.5 - version: 1.1.5(6j36mkhhhj37fby37wfpgi52ue) + version: 1.1.5(7y2kapk54x3chxrybrye64ikau) gulp: specifier: 4.0.2 version: 4.0.2 @@ -1463,7 +1463,7 @@ importers: version: 18.0.0(react@18.0.0) ts-jest: specifier: 29.1.3 - version: 29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + version: 29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -1518,7 +1518,7 @@ importers: version: 2.0.5 ts-jest: specifier: 29.1.2 - version: 29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5) + version: 29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5) packages/devextreme-themebuilder: dependencies: @@ -1564,7 +1564,7 @@ importers: version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-config-devextreme: specifier: 1.1.5 - version: 1.1.5(zsmfaq7l2ubx6arjipvaytbeca) + version: 1.1.5(s7hytideue6mgyvvaok756vzia) express: specifier: 4.20.0 version: 4.20.0 @@ -1585,10 +1585,10 @@ importers: version: 18.0.1 ts-jest: specifier: 29.1.2 - version: 29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5) + version: 29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5) + version: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -1622,7 +1622,7 @@ importers: version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-config-devextreme: specifier: 1.1.5 - version: 1.1.5(6j36mkhhhj37fby37wfpgi52ue) + version: 1.1.5(7y2kapk54x3chxrybrye64ikau) eslint-plugin-spellcheck: specifier: 0.0.20 version: 0.0.20(eslint@8.56.0) @@ -1643,7 +1643,7 @@ importers: version: 29.7.0 ts-jest: specifier: 29.1.3 - version: 29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + version: 29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -8106,8 +8106,8 @@ packages: devextreme-cldr-data@1.0.3: resolution: {integrity: sha512-xd+uWv1KzEhr+ZH/MOWfDei3GFz+NAYyKUR9HgjM9BBwPel7PpMElYp4whM+PtAjziBaTssQnA//ob5c3BovTA==} - devextreme-internal-tools@16.0.0-beta.18: - resolution: {integrity: sha512-5JYaE3LGZnO/vFyDWiQzHRAH5gWUO9EplS2ScKn5UwrytJiFcP9+F9LyMuapsw7METKjyJPcYI4gTZDOSdCmhg==} + devextreme-internal-tools@16.0.0: + resolution: {integrity: sha512-XB0uld/b6R+71YK1mrkS0vWXj/qLyz7EC8r0j3eNSvZ+A0uxw3qAX1ohZtRtUSoeYSa70w2EAXo6nlCnrPOY5g==} engines: {node: '>=12.0.0'} hasBin: true @@ -9441,7 +9441,7 @@ packages: resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} engines: {node: '>= 4.0'} os: [darwin] - deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 + deprecated: Upgrade to fsevents v2 to mitigate potential security issues fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -16408,11 +16408,11 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@17.3.8(oj6kjp7stymmgwnpvro3bc4ivi)': + '@angular-devkit/build-angular@17.3.8(ta2xvmedzeu3mme5vju3d2neh4)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1703.8(chokidar@3.6.0) - '@angular-devkit/build-webpack': 0.1703.8(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + '@angular-devkit/build-webpack': 0.1703.8(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) '@angular-devkit/core': 17.3.8(chokidar@3.6.0) '@angular/compiler-cli': 17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5) '@babel/core': 7.24.0 @@ -16425,16 +16425,16 @@ snapshots: '@babel/preset-env': 7.24.0(@babel/core@7.24.0) '@babel/runtime': 7.24.0 '@discoveryjs/json-ext': 0.5.7 - '@ngtools/webpack': 17.3.8(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + '@ngtools/webpack': 17.3.8(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.18(postcss@8.4.35) - babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) babel-plugin-istanbul: 6.1.1 browserslist: 4.24.2 - copy-webpack-plugin: 11.0.0(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + copy-webpack-plugin: 11.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) critters: 0.0.22 - css-loader: 6.10.0(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + css-loader: 6.10.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) esbuild-wasm: 0.20.1 fast-glob: 3.3.2 http-proxy-middleware: 2.0.6(@types/express@4.17.21) @@ -16443,11 +16443,11 @@ snapshots: jsonc-parser: 3.2.1 karma-source-map-support: 1.4.0 less: 4.2.0 - less-loader: 11.1.0(less@4.2.0)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) - license-webpack-plugin: 4.0.2(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + less-loader: 11.1.0(less@4.2.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + license-webpack-plugin: 4.0.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) loader-utils: 3.2.1 magic-string: 0.30.8 - mini-css-extract-plugin: 2.8.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + mini-css-extract-plugin: 2.8.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) mrmime: 2.0.0 open: 8.4.2 ora: 5.4.1 @@ -16455,13 +16455,13 @@ snapshots: picomatch: 4.0.1 piscina: 4.4.0 postcss: 8.4.35 - postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.71.1 - sass-loader: 14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + sass-loader: 14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) semver: 7.6.0 - source-map-loader: 5.0.0(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + source-map-loader: 5.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) source-map-support: 0.5.21 terser: 5.29.1 tree-kill: 1.2.2 @@ -16470,15 +16470,15 @@ snapshots: undici: 6.11.1 vite: 5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1) watchpack: 2.4.0 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) - webpack-dev-middleware: 6.1.2(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) - webpack-dev-server: 4.15.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack-dev-middleware: 6.1.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + webpack-dev-server: 4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) webpack-merge: 5.10.0 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) optionalDependencies: '@angular/platform-server': 17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))) esbuild: 0.20.1 - jest: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) jest-environment-jsdom: 29.7.0 karma: 6.4.4 ng-packagr: 17.3.0(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5) @@ -16501,12 +16501,12 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1703.8(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1))': + '@angular-devkit/build-webpack@0.1703.8(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1))': dependencies: '@angular-devkit/architect': 0.1703.8(chokidar@3.6.0) rxjs: 7.8.1 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) - webpack-dev-server: 4.15.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack-dev-server: 4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) transitivePeerDependencies: - chokidar @@ -18360,9 +18360,9 @@ snapshots: dependencies: tslib: 2.3.1 - '@devextreme-generator/angular@3.0.12(atnximysgm2qhxoullfrc4ld7m)': + '@devextreme-generator/angular@3.0.12(mktse5lvs4n2jhnoaohf3tcuti)': dependencies: - '@devextreme-generator/core': 3.0.12(atnximysgm2qhxoullfrc4ld7m) + '@devextreme-generator/core': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' - eslint @@ -18377,17 +18377,17 @@ snapshots: - eslint-plugin-spellcheck - supports-color - '@devextreme-generator/build-helpers@3.0.12(jx45iv34cplwvde5i3ekp234ua)': + '@devextreme-generator/build-helpers@3.0.12(ectyjufymdsezb24bv2esmeafq)': dependencies: - '@devextreme-generator/angular': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/core': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/inferno': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/preact': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/react': 3.0.12(atnximysgm2qhxoullfrc4ld7m) + '@devextreme-generator/angular': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/core': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/inferno': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/preact': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/react': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) loader-utils: 2.0.4 typescript: 4.3.5 vinyl: 2.2.1 - webpack: 5.94.0(@swc/core@1.9.2) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@swc/core' - '@typescript-eslint/eslint-plugin' @@ -18406,10 +18406,10 @@ snapshots: - uglify-js - webpack-cli - '@devextreme-generator/core@3.0.12(atnximysgm2qhxoullfrc4ld7m)': + '@devextreme-generator/core@3.0.12(mktse5lvs4n2jhnoaohf3tcuti)': dependencies: code-block-writer: 10.1.1 - eslint-config-devextreme: 0.2.0(atnximysgm2qhxoullfrc4ld7m) + eslint-config-devextreme: 0.2.0(mktse5lvs4n2jhnoaohf3tcuti) prettier: 2.8.8 prettier-eslint: 13.0.0 typescript: 4.3.5 @@ -18432,11 +18432,11 @@ snapshots: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - '@devextreme-generator/inferno@3.0.12(atnximysgm2qhxoullfrc4ld7m)': + '@devextreme-generator/inferno@3.0.12(mktse5lvs4n2jhnoaohf3tcuti)': dependencies: - '@devextreme-generator/core': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/preact': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/react': 3.0.12(atnximysgm2qhxoullfrc4ld7m) + '@devextreme-generator/core': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/preact': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/react': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' - eslint @@ -18451,10 +18451,10 @@ snapshots: - eslint-plugin-spellcheck - supports-color - '@devextreme-generator/preact@3.0.12(atnximysgm2qhxoullfrc4ld7m)': + '@devextreme-generator/preact@3.0.12(mktse5lvs4n2jhnoaohf3tcuti)': dependencies: - '@devextreme-generator/core': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/react': 3.0.12(atnximysgm2qhxoullfrc4ld7m) + '@devextreme-generator/core': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/react': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' - eslint @@ -18469,9 +18469,9 @@ snapshots: - eslint-plugin-spellcheck - supports-color - '@devextreme-generator/react@3.0.12(atnximysgm2qhxoullfrc4ld7m)': + '@devextreme-generator/react@3.0.12(mktse5lvs4n2jhnoaohf3tcuti)': dependencies: - '@devextreme-generator/core': 3.0.12(atnximysgm2qhxoullfrc4ld7m) + '@devextreme-generator/core': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' - eslint @@ -18486,10 +18486,10 @@ snapshots: - eslint-plugin-spellcheck - supports-color - '@devextreme-generator/vue@3.0.12(atnximysgm2qhxoullfrc4ld7m)': + '@devextreme-generator/vue@3.0.12(mktse5lvs4n2jhnoaohf3tcuti)': dependencies: - '@devextreme-generator/angular': 3.0.12(atnximysgm2qhxoullfrc4ld7m) - '@devextreme-generator/core': 3.0.12(atnximysgm2qhxoullfrc4ld7m) + '@devextreme-generator/angular': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) + '@devextreme-generator/core': 3.0.12(mktse5lvs4n2jhnoaohf3tcuti) prettier: 2.8.8 transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' @@ -19015,7 +19015,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5))': + '@jest/core@29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@9.0.1) @@ -19029,7 +19029,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -19052,7 +19052,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5))': + '@jest/core@29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@9.0.1) @@ -19066,7 +19066,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -19090,7 +19090,7 @@ snapshots: - ts-node optional: true - '@jest/core@29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5))': + '@jest/core@29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@9.0.1) @@ -19104,7 +19104,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -19420,11 +19420,11 @@ snapshots: pump: 3.0.2 tar-fs: 2.1.1 - '@ngtools/webpack@17.3.8(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1))': + '@ngtools/webpack@17.3.8(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1))': dependencies: '@angular/compiler-cli': 17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5) typescript: 5.4.5 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: @@ -19506,21 +19506,21 @@ snapshots: - bluebird - supports-color - '@nrwl/devkit@18.3.4(nx@19.4.2(@swc/core@1.9.2))': + '@nrwl/devkit@18.3.4(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))': dependencies: - '@nx/devkit': 18.3.4(nx@19.4.2(@swc/core@1.9.2)) + '@nx/devkit': 18.3.4(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) transitivePeerDependencies: - nx - '@nrwl/devkit@19.4.2(nx@19.4.2(@swc/core@1.9.2))': + '@nrwl/devkit@19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))': dependencies: - '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2)) + '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) transitivePeerDependencies: - nx - '@nrwl/jest@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5)': + '@nrwl/jest@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5)': dependencies: - '@nx/jest': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5) + '@nx/jest': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -19536,9 +19536,9 @@ snapshots: - typescript - verdaccio - '@nrwl/js@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2))(typescript@5.4.5)': + '@nrwl/js@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(typescript@5.4.5)': dependencies: - '@nx/js': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2))(typescript@5.4.5) + '@nx/js': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(typescript@5.4.5) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -19557,59 +19557,59 @@ snapshots: transitivePeerDependencies: - debug - '@nrwl/tao@19.4.2(@swc/core@1.9.2)': + '@nrwl/tao@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))': dependencies: - nx: 19.4.2(@swc/core@1.9.2) + nx: 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) tslib: 2.6.3 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug - '@nrwl/workspace@19.4.2(@swc/core@1.9.2)': + '@nrwl/workspace@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))': dependencies: - '@nx/workspace': 19.4.2(@swc/core@1.9.2) + '@nx/workspace': 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug - '@nx/devkit@18.3.4(nx@19.4.2(@swc/core@1.9.2))': + '@nx/devkit@18.3.4(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))': dependencies: - '@nrwl/devkit': 18.3.4(nx@19.4.2(@swc/core@1.9.2)) + '@nrwl/devkit': 18.3.4(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.1 - nx: 19.4.2(@swc/core@1.9.2) + nx: 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) semver: 7.6.3 tmp: 0.2.3 tslib: 2.6.3 yargs-parser: 21.1.1 - '@nx/devkit@19.4.2(nx@19.4.2(@swc/core@1.9.2))': + '@nx/devkit@19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))': dependencies: - '@nrwl/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2)) + '@nrwl/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.1 minimatch: 9.0.3 - nx: 19.4.2(@swc/core@1.9.2) + nx: 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) semver: 7.6.3 tmp: 0.2.3 tslib: 2.6.3 yargs-parser: 21.1.1 - '@nx/jest@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5)': + '@nx/jest@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5)': dependencies: '@jest/reporters': 29.7.0(node-notifier@9.0.1) '@jest/test-result': 29.7.0 - '@nrwl/jest': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2))(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5) - '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2)) - '@nx/js': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2))(typescript@5.4.5) + '@nrwl/jest': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(node-notifier@9.0.1)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5))(typescript@5.4.5) + '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) + '@nx/js': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(typescript@5.4.5) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.4.5) chalk: 4.1.2 identity-obj-proxy: 3.0.0 - jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-resolve: 29.7.0 jest-util: 29.7.0 minimatch: 9.0.3 @@ -19631,7 +19631,7 @@ snapshots: - typescript - verdaccio - '@nx/js@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2))(typescript@5.4.5)': + '@nx/js@19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(typescript@5.4.5)': dependencies: '@babel/core': 7.23.9 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.23.9) @@ -19640,9 +19640,9 @@ snapshots: '@babel/preset-env': 7.23.9(@babel/core@7.23.9) '@babel/preset-typescript': 7.26.0(@babel/core@7.23.9) '@babel/runtime': 7.26.0 - '@nrwl/js': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2)(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2))(typescript@5.4.5) - '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2)) - '@nx/workspace': 19.4.2(@swc/core@1.9.2) + '@nrwl/js': 19.4.2(@babel/traverse@7.25.9)(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)))(typescript@5.4.5) + '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) + '@nx/workspace': 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) babel-plugin-const-enum: 1.2.0(@babel/core@7.23.9) babel-plugin-macros: 2.8.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.9)(@babel/traverse@7.25.9) @@ -19659,7 +19659,7 @@ snapshots: ora: 5.3.0 semver: 7.6.3 source-map-support: 0.5.19 - ts-node: 10.9.1(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5) + ts-node: 10.9.1(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5) tsconfig-paths: 4.2.0 tslib: 2.6.3 transitivePeerDependencies: @@ -19703,13 +19703,13 @@ snapshots: '@nx/nx-win32-x64-msvc@19.4.2': optional: true - '@nx/workspace@19.4.2(@swc/core@1.9.2)': + '@nx/workspace@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))': dependencies: - '@nrwl/workspace': 19.4.2(@swc/core@1.9.2) - '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2)) + '@nrwl/workspace': 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) + '@nx/devkit': 19.4.2(nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15))) chalk: 4.1.2 enquirer: 2.3.6 - nx: 19.4.2(@swc/core@1.9.2) + nx: 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) tslib: 2.6.3 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -22719,33 +22719,33 @@ snapshots: '@webcomponents/custom-elements@1.6.0': {} - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack@5.94.0) - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0) - '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack@5.94.0))': + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': dependencies: envinfo: 7.14.0 webpack-cli: 4.10.0(webpack@5.94.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0) - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack@5.94.0))': + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': dependencies: webpack-cli: 4.10.0(webpack@5.94.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0) optionalDependencies: webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.94.0) @@ -23437,12 +23437,12 @@ snapshots: - supports-color optional: true - babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@babel/core': 7.24.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) babel-loader@9.2.1(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: @@ -24678,7 +24678,7 @@ snapshots: each-props: 1.3.2 is-plain-object: 5.0.0 - copy-webpack-plugin@11.0.0(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + copy-webpack-plugin@11.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -24686,7 +24686,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) core-js-compat@3.39.0: dependencies: @@ -24790,13 +24790,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)): + create-jest@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -24805,13 +24805,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -24821,13 +24821,13 @@ snapshots: - ts-node optional: true - create-jest@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -24892,7 +24892,7 @@ snapshots: utrie: 1.0.2 optional: true - css-loader@6.10.0(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + css-loader@6.10.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 @@ -24903,7 +24903,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) css-loader@6.10.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: @@ -24918,7 +24918,7 @@ snapshots: optionalDependencies: webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) - css-loader@6.10.0(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + css-loader@6.10.0(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 @@ -24929,7 +24929,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) css-select@4.3.0: dependencies: @@ -25370,7 +25370,7 @@ snapshots: devextreme-cldr-data@1.0.3: {} - devextreme-internal-tools@16.0.0-beta.18: + devextreme-internal-tools@16.0.0: dependencies: dasherize: 2.0.0 deepmerge: 4.3.1 @@ -26194,60 +26194,60 @@ snapshots: eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) - eslint-config-devextreme@0.2.0(atnximysgm2qhxoullfrc4ld7m): + eslint-config-devextreme@0.2.0(mktse5lvs4n2jhnoaohf3tcuti): dependencies: '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) - eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) eslint-plugin-jest-formatting: 3.1.0(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-qunit: 7.3.4(eslint@8.56.0) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@8.56.0) - eslint-config-devextreme@1.1.5(6j36mkhhhj37fby37wfpgi52ue): + eslint-config-devextreme@1.1.5(2wu47vven6w2q4wadgy2aiclqi): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) - eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) - eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) + eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) eslint-plugin-jest-formatting: 3.1.0(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-qunit: 7.3.4(eslint@8.56.0) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@8.56.0) - stylelint: 16.5.0(typescript@4.9.5) - stylelint-config-standard: 35.0.0(stylelint@16.5.0(typescript@4.9.5)) + stylelint: 15.11.0(typescript@4.9.5) + stylelint-config-standard: 35.0.0(stylelint@15.11.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.5(dviz67724z5lsegdjr2jecno6q): + eslint-config-devextreme@1.1.5(7y2kapk54x3chxrybrye64ikau): dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) - eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) - eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) + eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5) eslint-plugin-jest-formatting: 3.1.0(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-qunit: 7.3.4(eslint@8.56.0) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@8.56.0) - stylelint: 15.11.0(typescript@4.9.5) - stylelint-config-standard: 35.0.0(stylelint@15.11.0(typescript@4.9.5)) + stylelint: 16.5.0(typescript@4.9.5) + stylelint-config-standard: 35.0.0(stylelint@16.5.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.5(zsmfaq7l2ubx6arjipvaytbeca): + eslint-config-devextreme@1.1.5(s7hytideue6mgyvvaok756vzia): dependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-config-airbnb-typescript: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0))(eslint@8.56.0) eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0) - eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5) + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5) eslint-plugin-jest-formatting: 3.1.0(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-qunit: 7.3.4(eslint@8.56.0) @@ -26360,35 +26360,35 @@ snapshots: dependencies: eslint: 8.56.0 - eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): + eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 optionalDependencies: '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) - jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5): + eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) - jest: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + jest: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): + eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@4.9.5) eslint: 8.56.0 optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@4.9.5))(eslint@8.56.0)(typescript@4.9.5) - jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) transitivePeerDependencies: - supports-color - typescript @@ -28224,7 +28224,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -28232,7 +28232,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) optional: true html-webpack-plugin@5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): @@ -29065,16 +29065,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)): + jest-cli@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + create-jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29086,16 +29086,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29108,16 +29108,16 @@ snapshots: - ts-node optional: true - jest-cli@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29129,7 +29129,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -29155,12 +29155,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.11.17 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)): + jest-config@29.7.0(@types/node@20.11.17)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -29186,13 +29186,13 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.11.17 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color optional: true - jest-config@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -29218,12 +29218,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.12.8 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)): + jest-config@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -29249,13 +29249,13 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.12.8 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color optional: true - jest-config@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)): + jest-config@29.7.0(@types/node@20.12.8)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -29281,7 +29281,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.12.8 - ts-node: 10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -29527,12 +29527,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)): + jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)): dependencies: - '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + jest-cli: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -29541,12 +29541,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)): + jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5)) + jest-cli: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -29556,12 +29556,12 @@ snapshots: - ts-node optional: true - jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)): + jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + '@jest/core': 29.7.0(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest-cli: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -29809,11 +29809,11 @@ snapshots: dependencies: source-map-support: 0.5.21 - karma-webpack@5.0.1(webpack@5.94.0(@swc/core@1.9.2)): + karma-webpack@5.0.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))): dependencies: glob: 7.2.3 minimatch: 9.0.5 - webpack: 5.94.0(@swc/core@1.9.2) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) webpack-merge: 4.2.2 karma@6.4.4: @@ -29923,11 +29923,11 @@ snapshots: lead@4.0.0: {} - less-loader@11.1.0(less@4.2.0)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + less-loader@11.1.0(less@4.2.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: klona: 2.0.6 less: 4.2.0 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) less@4.2.0: dependencies: @@ -29950,11 +29950,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + license-webpack-plugin@4.0.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) lie@3.3.0: dependencies: @@ -30709,11 +30709,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.8.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + mini-css-extract-plugin@2.8.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) minimalistic-assert@1.0.1: {} @@ -31251,9 +31251,9 @@ snapshots: transitivePeerDependencies: - debug - nx@19.4.2(@swc/core@1.9.2): + nx@19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)): dependencies: - '@nrwl/tao': 19.4.2(@swc/core@1.9.2) + '@nrwl/tao': 19.4.2(@swc/core@1.9.2(@swc/helpers@0.5.15)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 @@ -31934,14 +31934,14 @@ snapshots: postcss: 8.4.38 postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.6 postcss: 8.4.35 semver: 7.6.0 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) transitivePeerDependencies: - typescript @@ -33100,13 +33100,13 @@ snapshots: sass-embedded-win32-ia32: 1.66.0 sass-embedded-win32-x64: 1.66.0 - sass-loader@14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + sass-loader@14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.71.1 sass-embedded: 1.66.0 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) sass-lookup@5.0.1: dependencies: @@ -33473,17 +33473,17 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@4.0.2(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + source-map-loader@4.0.2(webpack@5.94.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - source-map-loader@5.0.0(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + source-map-loader@5.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) source-map-resolve@0.5.3: dependencies: @@ -33716,11 +33716,11 @@ snapshots: char-regex: 1.0.2 strip-ansi: 6.0.1 - string-replace-loader@3.1.0(webpack@5.94.0(@swc/core@1.9.2)): + string-replace-loader@3.1.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.94.0(@swc/core@1.9.2) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) string-width@1.0.2: dependencies: @@ -33857,9 +33857,9 @@ snapshots: dependencies: webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) - style-loader@3.3.4(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + style-loader@3.3.4(webpack@5.94.0): dependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) style-search@0.1.0: {} @@ -34332,48 +34332,37 @@ snapshots: '@swc/core': 1.9.2(@swc/helpers@0.5.15) esbuild: 0.18.20 - terser-webpack-plugin@5.3.10(@swc/core@1.9.2)(esbuild@0.20.1)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) esbuild: 0.20.1 - terser-webpack-plugin@5.3.10(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0) - optionalDependencies: - '@swc/core': 1.9.2(@swc/helpers@0.5.15) - - terser-webpack-plugin@5.3.10(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) - terser-webpack-plugin@5.3.10(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)): + terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.94.0(@swc/core@1.9.2) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) @@ -34389,14 +34378,14 @@ snapshots: '@swc/core': 1.9.2(@swc/helpers@0.5.15) esbuild: 0.18.20 - terser-webpack-plugin@5.3.9(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)): + terser-webpack-plugin@5.3.9(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.94.0(@swc/core@1.9.2) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) @@ -34985,11 +34974,11 @@ snapshots: ts-dedent@2.2.0: {} - ts-jest@29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): + ts-jest@29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35002,11 +34991,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.23.9) - ts-jest@29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5): + ts-jest@29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5)) + jest: 29.7.0(@types/node@20.11.17)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35019,11 +35008,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.0) - ts-jest@29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.2(@babel/core@7.24.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35036,11 +35025,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.0) - ts-jest@29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): + ts-jest@29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@4.9.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35054,11 +35043,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.0) - ts-jest@29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5): + ts-jest@29.1.3(@babel/core@7.24.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.0))(jest@29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)))(typescript@5.4.5): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.12.8)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35072,7 +35061,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.24.0) - ts-loader@9.5.1(typescript@4.9.5)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + ts-loader@9.5.1(typescript@4.9.5)(webpack@5.94.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -35080,9 +35069,9 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 4.9.5 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - ts-loader@9.5.1(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + ts-loader@9.5.1(typescript@5.4.5)(webpack@5.94.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -35090,9 +35079,9 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.4.5 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - ts-node@10.9.1(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5): + ts-node@10.9.1(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -35112,7 +35101,7 @@ snapshots: optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@4.9.5): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -35132,7 +35121,7 @@ snapshots: optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.11.17)(typescript@5.4.5): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.11.17)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -35152,7 +35141,7 @@ snapshots: optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) - ts-node@10.9.2(@swc/core@1.9.2)(@types/node@20.12.8)(typescript@5.4.5): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.15))(@types/node@20.12.8)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -35537,12 +35526,12 @@ snapshots: url-join@4.0.1: {} - url-loader@1.1.2(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + url-loader@1.1.2(webpack@5.94.0): dependencies: loader-utils: 1.4.2 mime: 2.6.0 schema-utils: 1.0.0 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) url-parse@1.5.10: dependencies: @@ -35831,12 +35820,12 @@ snapshots: transitivePeerDependencies: - supports-color - vue-loader@17.4.2(@vue/compiler-sfc@3.3.4)(vue@3.2.47)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + vue-loader@17.4.2(@vue/compiler-sfc@3.3.4)(vue@3.2.47)(webpack@5.94.0): dependencies: chalk: 4.1.2 hash-sum: 2.0.0 watchpack: 2.4.2 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) optionalDependencies: '@vue/compiler-sfc': 3.3.4 vue: 3.2.47 @@ -35907,9 +35896,9 @@ snapshots: webpack-cli@4.10.0(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0)) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack@5.94.0)) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack@5.94.0)) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.94.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) colorette: 2.0.20 commander: 7.2.0 cross-spawn: 7.0.6 @@ -35917,15 +35906,15 @@ snapshots: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@4.10.0) webpack-merge: 5.10.0 webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.94.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.94.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.94.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -35934,19 +35923,19 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.94.0) - webpack-dev-middleware@5.3.4(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + webpack-dev-middleware@5.3.4(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) webpack-dev-middleware@5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: @@ -35958,16 +35947,16 @@ snapshots: webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) optional: true - webpack-dev-middleware@5.3.4(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)): + webpack-dev-middleware@5.3.4(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-dev-middleware@6.1.2(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + webpack-dev-middleware@6.1.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -35975,7 +35964,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) webpack-dev-middleware@6.1.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: @@ -36017,10 +36006,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + webpack-dev-middleware: 5.3.4(webpack@5.94.0) ws: 8.18.0 optionalDependencies: - webpack: 5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.94.0) transitivePeerDependencies: - bufferutil @@ -36028,7 +36017,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -36058,10 +36047,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + webpack-dev-middleware: 5.3.4(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) ws: 8.18.0 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) transitivePeerDependencies: - bufferutil - debug @@ -36127,7 +36116,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack-stream@7.0.0(webpack@5.94.0(@swc/core@1.9.2)): + webpack-stream@7.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))): dependencies: fancy-log: 1.3.3 lodash.clone: 4.5.0 @@ -36137,20 +36126,20 @@ snapshots: supports-color: 8.1.1 through: 2.3.8 vinyl: 2.2.1 - webpack: 5.94.0(@swc/core@1.9.2) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: typed-assert: 1.0.9 - webpack: 5.90.3(@swc/core@1.9.2)(esbuild@0.20.1) + webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) optionalDependencies: - html-webpack-plugin: 5.6.3(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + html-webpack-plugin: 5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) webpack-virtual-modules@0.5.0: {} webpack-virtual-modules@0.6.2: {} - webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1): + webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -36173,7 +36162,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2)(esbuild@0.20.1)(webpack@5.90.3(@swc/core@1.9.2)(esbuild@0.20.1)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36181,7 +36170,7 @@ snapshots: - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20): + webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -36203,7 +36192,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36211,7 +36200,7 @@ snapshots: - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.9.2): + webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -36233,7 +36222,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36241,7 +36230,7 @@ snapshots: - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0): + webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@4.10.0): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -36263,7 +36252,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@4.10.0)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -36273,7 +36262,7 @@ snapshots: - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4): + webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -36295,7 +36284,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2)(webpack@5.94.0(@swc/core@1.9.2)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: From 2b27e50fc4c3b6f49e88954b5c9cfe2c40a9d6be Mon Sep 17 00:00:00 2001 From: Roman Semenov Date: Fri, 6 Dec 2024 10:10:59 +0400 Subject: [PATCH 03/21] Scheduler - Overview - fix text color of focused appt in fluent (#28506) --- .../Overview/Angular/app/app.component.css | 7 ++++++- .../Demos/Scheduler/Overview/React/styles.css | 7 ++++++- .../Scheduler/Overview/ReactJs/styles.css | 7 ++++++- .../Demos/Scheduler/Overview/Vue/App.vue | 7 ++++++- .../Scheduler/Overview/jQuery/styles.css | 7 ++++++- .../testing/etalons/Scheduler-Overview.png | Bin 165449 -> 165442 bytes .../etalons/scheduler_overview_selection.png | Bin 141098 -> 141099 bytes 7 files changed, 30 insertions(+), 5 deletions(-) diff --git a/apps/demos/Demos/Scheduler/Overview/Angular/app/app.component.css b/apps/demos/Demos/Scheduler/Overview/Angular/app/app.component.css index a4c619487f71..3c13932a2a05 100644 --- a/apps/demos/Demos/Scheduler/Overview/Angular/app/app.component.css +++ b/apps/demos/Demos/Scheduler/Overview/Angular/app/app.component.css @@ -3,6 +3,10 @@ position: relative; } +::ng-deep .dx-scheduler-group-header-content { + padding-left: 8px; +} + ::ng-deep .dx-color-scheme-light, ::ng-deep .dx-color-scheme-carmine, ::ng-deep .dx-color-scheme-softblue, @@ -50,7 +54,8 @@ color: var(--text-color-1); } -::ng-deep .dx-scheduler-work-space-month .dx-scheduler-appointment { +::ng-deep .dx-scheduler-work-space-month .dx-scheduler-appointment, +::ng-deep .dx-scheduler-work-space-month .dx-scheduler-appointment.dx-state-focused { color: var(--text-color-2); line-height: 22px; } diff --git a/apps/demos/Demos/Scheduler/Overview/React/styles.css b/apps/demos/Demos/Scheduler/Overview/React/styles.css index 1f104cd1c477..97f1dab526a7 100644 --- a/apps/demos/Demos/Scheduler/Overview/React/styles.css +++ b/apps/demos/Demos/Scheduler/Overview/React/styles.css @@ -3,6 +3,10 @@ position: relative; } +.dx-scheduler-group-header-content { + padding-left: 8px; +} + .dx-color-scheme-light, .dx-color-scheme-carmine, .dx-color-scheme-softblue, @@ -50,7 +54,8 @@ color: var(--text-color-1); } -.dx-scheduler-work-space-month .dx-scheduler-appointment { +.dx-scheduler-work-space-month .dx-scheduler-appointment, +.dx-scheduler-work-space-month .dx-scheduler-appointment.dx-state-focused { color: var(--text-color-2); line-height: 22px; } diff --git a/apps/demos/Demos/Scheduler/Overview/ReactJs/styles.css b/apps/demos/Demos/Scheduler/Overview/ReactJs/styles.css index 1f104cd1c477..97f1dab526a7 100644 --- a/apps/demos/Demos/Scheduler/Overview/ReactJs/styles.css +++ b/apps/demos/Demos/Scheduler/Overview/ReactJs/styles.css @@ -3,6 +3,10 @@ position: relative; } +.dx-scheduler-group-header-content { + padding-left: 8px; +} + .dx-color-scheme-light, .dx-color-scheme-carmine, .dx-color-scheme-softblue, @@ -50,7 +54,8 @@ color: var(--text-color-1); } -.dx-scheduler-work-space-month .dx-scheduler-appointment { +.dx-scheduler-work-space-month .dx-scheduler-appointment, +.dx-scheduler-work-space-month .dx-scheduler-appointment.dx-state-focused { color: var(--text-color-2); line-height: 22px; } diff --git a/apps/demos/Demos/Scheduler/Overview/Vue/App.vue b/apps/demos/Demos/Scheduler/Overview/Vue/App.vue index 2bcfe477aed7..226fce3440e2 100644 --- a/apps/demos/Demos/Scheduler/Overview/Vue/App.vue +++ b/apps/demos/Demos/Scheduler/Overview/Vue/App.vue @@ -51,6 +51,10 @@ const dataSource = data; position: relative; } +.dx-scheduler-group-header-content { + padding-left: 8px; +} + .dx-color-scheme-light, .dx-color-scheme-carmine, .dx-color-scheme-softblue, @@ -98,7 +102,8 @@ const dataSource = data; color: var(--text-color-1); } -.dx-scheduler-work-space-month .dx-scheduler-appointment { +.dx-scheduler-work-space-month .dx-scheduler-appointment, +.dx-scheduler-work-space-month .dx-scheduler-appointment.dx-state-focused { color: var(--text-color-2); line-height: 22px; } diff --git a/apps/demos/Demos/Scheduler/Overview/jQuery/styles.css b/apps/demos/Demos/Scheduler/Overview/jQuery/styles.css index 1f104cd1c477..97f1dab526a7 100644 --- a/apps/demos/Demos/Scheduler/Overview/jQuery/styles.css +++ b/apps/demos/Demos/Scheduler/Overview/jQuery/styles.css @@ -3,6 +3,10 @@ position: relative; } +.dx-scheduler-group-header-content { + padding-left: 8px; +} + .dx-color-scheme-light, .dx-color-scheme-carmine, .dx-color-scheme-softblue, @@ -50,7 +54,8 @@ color: var(--text-color-1); } -.dx-scheduler-work-space-month .dx-scheduler-appointment { +.dx-scheduler-work-space-month .dx-scheduler-appointment, +.dx-scheduler-work-space-month .dx-scheduler-appointment.dx-state-focused { color: var(--text-color-2); line-height: 22px; } diff --git a/apps/demos/testing/etalons/Scheduler-Overview.png b/apps/demos/testing/etalons/Scheduler-Overview.png index e0d9643cd09869c576cccc32790a4d33b98762ed..bfcf62ce8298e490f2ed2c10c043c9153b54b819 100644 GIT binary patch literal 165442 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

pKLRo>_A5?A&*=LCfMz}sre3+mY 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π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%0Ddq1OdS|}K)LL|L|RQa#p`_<-% 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 dwO)k&*u>%U$4Ww!5y#+ Date: Fri, 6 Dec 2024 13:18:33 +0400 Subject: [PATCH 04/21] Chat: describe AI Integration demo (#28480) --- .../AIAndChatbotIntegration/description.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md b/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md index 67c1bba41e26..18824c42ff84 100644 --- a/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md @@ -1 +1,18 @@ -Chat is an interactive interface that allows users to send and receive messages in real time. +This demo uses an AI service and the DevExtreme Chat component to create a chatbot UI. + +## Handling dataSource (reloadOnChange: false) + +The Chat component's [dataSource](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#dataSource) is a [CustomStore](/Documentation/ApiReference/Data_Layer/CustomStore/) that implements its own load and insert functions. The Chat deactivates [reloadOnChange](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#reloadOnChange) to push updates directly into the store and update the conversation manually. See the [onMessageEntered](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#onMessageEntered) event handler and the `processMessageSending` function to review the code that manages data transfer between the Chat and its data store. + + +## Custom Message Template + +The Chat specifies a [messageTemplate](/Documentation/ApiReference/UI_Components/dxChat/Configuration/#messageTemplate) that displays "Copy" and "Regenerate" buttons in bot messages. + +## Response Format Conversion: Markdown to HTML + +The AI model outputs responses in Markdown, while the Chat requires HTML output. This examples uses the [unified](https://github.com/unifiedjs) plugin library to convert response content. Review `convertToHtml` function code for implementation details. + +## Default Caption Customization + +The Chat component in this demo displays modified captions when the conversation is empty. The demo uses [localization](/Documentation/Guide/Common/Localization/) techniques to alter built-in text. \ No newline at end of file From e2a46b21ba9534572529399f7174a699df5cce0c Mon Sep 17 00:00:00 2001 From: Anton Kuznetsov Date: Fri, 6 Dec 2024 13:33:24 +0400 Subject: [PATCH 05/21] SelectBox Grouping demo: fix custom icon alignment (#28509) --- .../Angular/app/app.component.css | 8 ++- .../SelectBox/GroupedItems/React/styles.css | 8 ++- .../SelectBox/GroupedItems/ReactJs/styles.css | 8 ++- .../SelectBox/GroupedItems/Vue/Group.vue | 8 ++- .../SelectBox/GroupedItems/jQuery/styles.css | 8 ++- .../Angular/app/app.component.css | 8 ++- .../TagBox/GroupedItems/React/styles.css | 8 ++- .../TagBox/GroupedItems/ReactJs/styles.css | 8 ++- .../Demos/TagBox/GroupedItems/Vue/Group.vue | 8 ++- .../TagBox/GroupedItems/jQuery/styles.css | 8 ++- .../widgets/selectbox/GroupedItems.test.js | 47 ++++++++++++++++++ ...items_first_opened (fluent.blue.light).png | Bin 0 -> 36138 bytes ...ems_first_opened (material.blue.light).png | Bin 0 -> 30372 bytes .../selectbox_groupeditems_first_opened.png | Bin 0 -> 33887 bytes ...tems_second_opened (fluent.blue.light).png | Bin 0 -> 37980 bytes ...ms_second_opened (material.blue.light).png | Bin 0 -> 33367 bytes .../selectbox_groupeditems_second_opened.png | Bin 0 -> 35848 bytes ...items_third_opened (fluent.blue.light).png | Bin 0 -> 40900 bytes ...ems_third_opened (material.blue.light).png | Bin 0 -> 36447 bytes .../selectbox_groupeditems_third_opened.png | Bin 0 -> 38799 bytes .../widgets/tagbox/GroupedItems.test.js | 43 ++++++++++++++++ ...items_first_opened (fluent.blue.light).png | Bin 0 -> 40188 bytes ...ems_first_opened (material.blue.light).png | Bin 0 -> 35132 bytes .../tagbox_groupeditems_first_opened.png | Bin 0 -> 37887 bytes ...tems_second_opened (fluent.blue.light).png | Bin 0 -> 44547 bytes ...ms_second_opened (material.blue.light).png | Bin 0 -> 41246 bytes .../tagbox_groupeditems_second_opened.png | Bin 0 -> 42095 bytes ...items_third_opened (fluent.blue.light).png | Bin 0 -> 47818 bytes ...ems_third_opened (material.blue.light).png | Bin 0 -> 44710 bytes .../tagbox_groupeditems_third_opened.png | Bin 0 -> 45005 bytes 30 files changed, 150 insertions(+), 20 deletions(-) create mode 100644 apps/demos/testing/widgets/selectbox/GroupedItems.test.js create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened (fluent.blue.light).png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened (material.blue.light).png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened.png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened (fluent.blue.light).png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened (material.blue.light).png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened.png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_third_opened (fluent.blue.light).png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_third_opened (material.blue.light).png create mode 100644 apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_third_opened.png create mode 100644 apps/demos/testing/widgets/tagbox/GroupedItems.test.js create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened (fluent.blue.light).png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened (material.blue.light).png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened.png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened (fluent.blue.light).png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened (material.blue.light).png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened.png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened (fluent.blue.light).png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened (material.blue.light).png create mode 100644 apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened.png diff --git a/apps/demos/Demos/SelectBox/GroupedItems/Angular/app/app.component.css b/apps/demos/Demos/SelectBox/GroupedItems/Angular/app/app.component.css index 61138f2a6bf1..7038173143d2 100644 --- a/apps/demos/Demos/SelectBox/GroupedItems/Angular/app/app.component.css +++ b/apps/demos/Demos/SelectBox/GroupedItems/Angular/app/app.component.css @@ -1,5 +1,9 @@ ::ng-deep .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +::ng-deep .custom-icon { + display: flex; + align-items: center; + gap: 4px; } diff --git a/apps/demos/Demos/SelectBox/GroupedItems/React/styles.css b/apps/demos/Demos/SelectBox/GroupedItems/React/styles.css index 437d26328ad2..63ce2320c355 100644 --- a/apps/demos/Demos/SelectBox/GroupedItems/React/styles.css +++ b/apps/demos/Demos/SelectBox/GroupedItems/React/styles.css @@ -1,5 +1,9 @@ .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +.custom-icon { + display: flex; + align-items: center; + gap: 4px; } diff --git a/apps/demos/Demos/SelectBox/GroupedItems/ReactJs/styles.css b/apps/demos/Demos/SelectBox/GroupedItems/ReactJs/styles.css index 437d26328ad2..63ce2320c355 100644 --- a/apps/demos/Demos/SelectBox/GroupedItems/ReactJs/styles.css +++ b/apps/demos/Demos/SelectBox/GroupedItems/ReactJs/styles.css @@ -1,5 +1,9 @@ .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +.custom-icon { + display: flex; + align-items: center; + gap: 4px; } diff --git a/apps/demos/Demos/SelectBox/GroupedItems/Vue/Group.vue b/apps/demos/Demos/SelectBox/GroupedItems/Vue/Group.vue index 66496ebe1912..bd738f14b7e1 100644 --- a/apps/demos/Demos/SelectBox/GroupedItems/Vue/Group.vue +++ b/apps/demos/Demos/SelectBox/GroupedItems/Vue/Group.vue @@ -13,8 +13,12 @@ withDefaults(defineProps<{ diff --git a/apps/demos/Demos/SelectBox/GroupedItems/jQuery/styles.css b/apps/demos/Demos/SelectBox/GroupedItems/jQuery/styles.css index 437d26328ad2..63ce2320c355 100644 --- a/apps/demos/Demos/SelectBox/GroupedItems/jQuery/styles.css +++ b/apps/demos/Demos/SelectBox/GroupedItems/jQuery/styles.css @@ -1,5 +1,9 @@ .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +.custom-icon { + display: flex; + align-items: center; + gap: 4px; } diff --git a/apps/demos/Demos/TagBox/GroupedItems/Angular/app/app.component.css b/apps/demos/Demos/TagBox/GroupedItems/Angular/app/app.component.css index 035fc75aaef9..01e5b0b3bd12 100644 --- a/apps/demos/Demos/TagBox/GroupedItems/Angular/app/app.component.css +++ b/apps/demos/Demos/TagBox/GroupedItems/Angular/app/app.component.css @@ -1,7 +1,11 @@ ::ng-deep .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +::ng-deep .custom-icon { + display: flex; + align-items: center; + gap: 4px; } ::ng-deep .dx-field { diff --git a/apps/demos/Demos/TagBox/GroupedItems/React/styles.css b/apps/demos/Demos/TagBox/GroupedItems/React/styles.css index 37568462f9fb..f997c92f251f 100644 --- a/apps/demos/Demos/TagBox/GroupedItems/React/styles.css +++ b/apps/demos/Demos/TagBox/GroupedItems/React/styles.css @@ -1,7 +1,11 @@ .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +.custom-icon { + display: flex; + align-items: center; + gap: 4px; } .dx-field { diff --git a/apps/demos/Demos/TagBox/GroupedItems/ReactJs/styles.css b/apps/demos/Demos/TagBox/GroupedItems/ReactJs/styles.css index 37568462f9fb..f997c92f251f 100644 --- a/apps/demos/Demos/TagBox/GroupedItems/ReactJs/styles.css +++ b/apps/demos/Demos/TagBox/GroupedItems/ReactJs/styles.css @@ -1,7 +1,11 @@ .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +.custom-icon { + display: flex; + align-items: center; + gap: 4px; } .dx-field { diff --git a/apps/demos/Demos/TagBox/GroupedItems/Vue/Group.vue b/apps/demos/Demos/TagBox/GroupedItems/Vue/Group.vue index 66496ebe1912..bd738f14b7e1 100644 --- a/apps/demos/Demos/TagBox/GroupedItems/Vue/Group.vue +++ b/apps/demos/Demos/TagBox/GroupedItems/Vue/Group.vue @@ -13,8 +13,12 @@ withDefaults(defineProps<{ diff --git a/apps/demos/Demos/TagBox/GroupedItems/jQuery/styles.css b/apps/demos/Demos/TagBox/GroupedItems/jQuery/styles.css index 37568462f9fb..f997c92f251f 100644 --- a/apps/demos/Demos/TagBox/GroupedItems/jQuery/styles.css +++ b/apps/demos/Demos/TagBox/GroupedItems/jQuery/styles.css @@ -1,7 +1,11 @@ .custom-icon .icon { - font-size: 17px; color: #f05b41; - margin-right: 2px; +} + +.custom-icon { + display: flex; + align-items: center; + gap: 4px; } .dx-field { diff --git a/apps/demos/testing/widgets/selectbox/GroupedItems.test.js b/apps/demos/testing/widgets/selectbox/GroupedItems.test.js new file mode 100644 index 000000000000..a8f2fc26beda --- /dev/null +++ b/apps/demos/testing/widgets/selectbox/GroupedItems.test.js @@ -0,0 +1,47 @@ +import { createScreenshotsComparer } from 'devextreme-screenshot-comparer'; +import { Selector as $ } from 'testcafe'; +import { runManualTest } from '../../../utils/visual-tests/matrix-test-helper'; +import { testScreenshot } from '../../../utils/visual-tests/helpers/theme-utils'; + +fixture('SelectBox.GroupedItems') + .page('http://localhost:8080/') + .before(async (ctx) => { + ctx.initialWindowSize = [900, 600]; + }); + +runManualTest('SelectBox', 'GroupedItems', ['jQuery', 'React', 'Vue', 'Angular'], (test) => { + test('GroupedItems', async (t) => { + const SELECT_BOX_CLASS = 'dx-selectbox'; + const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + + await t + .click($(`.${SELECT_BOX_CLASS}`).nth(0)) + .wait(200); + + await testScreenshot(t, takeScreenshot, 'selectbox_groupeditems_first_opened.png'); + + await t + .click($(`.${SELECT_BOX_CLASS}`).nth(0)) + .wait(200); + + await t + .click($(`.${SELECT_BOX_CLASS}`).nth(1)) + .wait(200); + + await testScreenshot(t, takeScreenshot, 'selectbox_groupeditems_second_opened.png'); + + await t + .click($(`.${SELECT_BOX_CLASS}`).nth(1)) + .wait(200); + + await t + .click($(`.${SELECT_BOX_CLASS}`).nth(2)) + .wait(200); + + await testScreenshot(t, takeScreenshot, 'selectbox_groupeditems_third_opened.png'); + + await t + .expect(compareResults.isValid()) + .ok(compareResults.errorMessages()); + }); +}); diff --git a/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened (fluent.blue.light).png b/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..2744d9ef4c4b95f65c9feb26f53da5a192eaf30a GIT binary patch literal 36138 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 jhYxw^p&=$h$4p@D~|EZp#S!P*7i literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened (material.blue.light).png b/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened (material.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..3dc3ec5ef727ecd155a9adee4071e11cda862d8d GIT binary patch literal 30372 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 literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened.png b/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_first_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..2795e515cfd6cdb795b4adf4aa865a544a6caecd GIT binary patch literal 33887 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 literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened (material.blue.light).png b/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened (material.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..2af7b026eb5ee457ef0136ffc6a6a510cb37eb2f GIT binary patch literal 33367 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 literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened.png b/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_second_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..485dffc0fda7cee5ee6e2500fe79edc78882918f GIT binary patch literal 35848 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 HvOM}f4Rk&vO?WYux>-ux*yBE%?;{) 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 literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_third_opened.png b/apps/demos/testing/widgets/selectbox/etalons/selectbox_groupeditems_third_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..207ebdac453133795252f45adb219c44f7d56ac7 GIT binary patch literal 38799 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 u|GzRh{`tWFi%{D?Kl { + ctx.initialWindowSize = [900, 600]; + }); + +runManualTest('TagBox', 'GroupedItems', ['jQuery', 'React', 'Vue', 'Angular'], (test) => { + test('GroupedItems', async (t) => { + const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + + await t + .pressKey('tab') + .pressKey('alt+down'); + + await testScreenshot(t, takeScreenshot, 'tagbox_groupeditems_first_opened.png'); + + await t + .pressKey('esc') + + await t + .pressKey('tab') + .pressKey('alt+down'); + + await testScreenshot(t, takeScreenshot, 'tagbox_groupeditems_second_opened.png'); + + await t + .pressKey('esc') + + await t + .pressKey('tab') + .pressKey('alt+down'); + + await testScreenshot(t, takeScreenshot, 'tagbox_groupeditems_third_opened.png'); + + await t + .expect(compareResults.isValid()) + .ok(compareResults.errorMessages()); + }); +}); diff --git a/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened (fluent.blue.light).png b/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..e2f8c00ebfb67de670f74c80aae79c55bfea7a33 GIT binary patch literal 40188 zcmd?Sd05W-yZ&tr=Ex92GE@o zl4QtGsU$;#D5B?e-K@R8`}gd9?EU-w^E}7%?8EkLT3i)7l0New@{$5#Je^rt!EzgWnrW96#35>xb8u8e8X7f4x|r z`*Br!i&j_G{Q1-Ao5w;EV+#YLW)~m4*WY5&Z%0~87_qeRK%MhX$})C3f4#WQ&c!+E z&CP8#nRoiPE^(iKv9(@Vm7h=jmU?e}ubPCr{=X!LP0cLw&|KSUT$AqnWvMsv+ZRo` zYxU|P-;r;(+rIhxzprmLaf0H7O}dX?cev;Ge-9sbxApfQGwWXZ{omKdY+d$mZ~N>2 zAKq4n^$5=!;rCVF;A>6Kh7B8f>8r~Mn2ia|bR0Ks-1;qB`f6zf?#?OMC`=c6-@XJjrgX0?+l3%3}Ur}(Zu zIx|-BG%|+o%`{%Txc}J`OJ6@2tazb3kZ^1Fk^3!=TeXviSGQWeiq5{C8KwBA3NQWL znT~Qz6(4Pf?d3o77XQnW8Nx%<>K~oG;YLw-VxnroU_A#z!POG#%x2@8*AcUut>8yrH43ZTHa7Q2mb=3vJEFsYLBmN)uzqmb!<~a;d-dw2y|j3;#Kyz8g|koDHB>gJ({^@tzIS5o-pUhW*EFhm z^EhG4`}fP#eagoYJG%Qud2T**Ng^HXM$O zY|Yi**g4>o)$y8!jT>kG{o5Qq+Q`jK+b{m+&B@k&-X*7?BE9RvOMf;@ z{_^25&tK{635z(#DgG_HnCu<)TTSoJAKvur-u;h7?s{s8Ph9Qn?8=+BYUI}_w2bQHs$Lc+f;u7 zuVUk-O^0X3+US3J8Bv#`udd9Zcb|K9S-$bI(!1+kyjaktO&e8xFYSPqUB=}uS28m* zdtaIzaAEc5%1IyIJf1La+>f~hZhFMTl`B`CcTiK?l$zgdeYQNazag!%2`S07OW^Qi&AjQu>eM`Wt{iBBX)_MK-(@%r{vQF9_ zIceASu&}AQC+1ev`qXXz{4OQT=KRXm9Xh0M?QU4^rLXIJckP)ox-9VSAq!iMTJidM zWzh}Y#SgZYW=C5@7`IRwz3Ri^NxKI6RAmmYt0~;_VDT_>3k$h&o>0WelUvykccP|r zX18lqbjqOQWmr9p~myK+{aowWQtcb>K`60 z4qbHp#*Lml-ouA`nRw`_9gdF9PVw_IIX$aC>45Ze>C&a(7t2Ow>9*LIc6m_f$mLq{ zq#Xl;f_nGt`BRGQw~_;^HrLd6J^K5%8}mvZoU&j1G&z)ATs~p)9^DOmaWJ??zkVAR zhOOS2n5g%)_O_qL0B>*a1q&8z4GtbZv1Py-cEzWU@1{;<&&TF&%r5Pvr>9CZ3~+Qk z%^hwH2}$E!vvh;D>rS!17h_gKT2Lac3&`ocM~>VxV9wv#OP=btA8388i)Y@Y30+rT zi7|_y1Vpp#>N>?e++Wqw5qWBx`1K7J=z)?dVN#JAuk`r_e+VIer(1jwGrFdf-_=m zf^0K_HPuF~*c8%lW*c?&Tj53q ze_Yg*y;sRHp`$zp{`TmMZS|`hsX_#LYjt%~W8+4HF4XjRoUkN)@i2`zu=<#^6HxhM(?fv z^3IP3*{DUQ@#f}jQhMv?Y&YFMvf@(XuJbiCH0FPJ{jlzxUwvv>wT{!BZritS*Y4G) zPvwgpQ!9&h&GV?MaW~$idZ{GL&veC#VSAzm`+fBxRp_mJuQ9~&ro=V@e8BgU^P~7h z>CFcvUu1uHm0xOH`!S_{3K@3D!dqAJ-R7T~wVSwX(Mk8Y@$Sie9wjWfy>G-)J>NP# zmaN!HewJ-EJH>bO=#}p;K6lfb74OpS%jb`M`}g0p$UVvW=f;gKw%;fkm#yo&Wldvc z9mkuhceAspe#JqufO`snz9Fum_;<&(RXT}VZ(NY`F`3EI%FZq=H#sY z5{xWE`J7kxju`IfGv!)FM)+@!|E_zVJ(V|T8<6@(nw{<4!xMF#?))zAX1d>GWBUO$ zZ_mBEmYG?U)?r?+(WCeC#@n}Uy~u|SUi|p)px%>qKCh}>ziHEg*AGsOH!>RR@#5FY zs;Z7U3z{_VFpy;&V@pz2Y2V)b{L1BIl^E+Jo!m*;x~?f-R*dv~dvn)3-|GhTwNp<- z&ONu{bzahr>ayJIhzZI{Yzm?*i=9a2No>FChGc!$AJez;@L&_x~* z0E3PlJ1TY5`T5+F&6$pcp$iY>3wC;XzH`czE8~0g?3uNEzkiF)ZQ8aqWU~#X9&X*g zKdAelLCPD`#yL4@kg}ehUsXk&vLCh=2)l+Sn!DW9lA1awx%|ha#WydNRd3(3Cxbl* z$|!hN|8;oI(dmV$$_5K6UtHhRdH7~vQ2RkPo6G}qj?Ii){7~nqS7D3Or%%@mV718S zSutikm85KFrm;b0|Gl{5lH`g;vuDp%o!qA_s3zBDRS*fG;_jqD6%XvUoLW|D&Od~$ z{?Ktu*p`aI^z68WQ(4Cw6d=i?y9UiGj@)H)*(HAafdiYLxGucBwrSq#k5B%Zld$>v zj=r*Zr0L<83oA}K+-QHoI%(Ygk;`j_zIhbiQ(u2yi_XJ{g{yLR0=_W^x& zG~IP0Er*3Xd!lNUL>a}f>i(Q1`9yr2V~Ysmpv&4TUe6*%uk0K!$0<9iMVw>iIL)-R zP1`1ZetT{Z48U?0T>+#eY9`wZFA*M6bSmt3Etl66aoMJkUDvA{)f3wrCgs)AHEN*y0oC z-rBK4)~;QvZFi-~+vF-!$*bhY-8v4u~Y+A8OLl(zb<$ZkQL;X=wQ<@5)|XMy)t}m^wm!N~=CPJFbr}$U#-D zW#bVeMgZ?S4R^hnL!w9rUmdYIKeBfY$f|P@KqARn|7%U5^_v&hcjzv8s%A*oRKz`8 zJl@#2VBx7*8UqJjy~Cp&Q}g^MqSHC&Xgkj*%RB5J1H zrDC30^6UVcsq%93LDK+IRtc^_`5OmanEy1{o1L_#Q42QAPs8>G9iNk+v*><*;wV2q zKW};NT=KvgfSE`9nAM-=11oEM#sE1}FaGh^MhTolt?Tvd-z7yWBfIr-LE2 zOdBlJioL^P$d_*Umm8XfjmZRZm)?zR?*G{JT+kfXq;;glY<6~?={~)&q~wVcC#t^6 zjh)IJKLoI_35s$TKRUBv%a~711maRx?7!C4uJ!k?oFjP_d^!8%{2zK6Z|X*JooA;L zDu~^M&9QZBE8omB&e;+Qnwn&~2M=cXD|H-~;`>FnLnn83eZzkF`mqDACki)hnryLYd@RODfnc4(j8xUY|#Jsmeo6_LHg9*O*@m7P!k00*__P$X6brlbP z@^Pzp?e{OU){IzMJZ;*vUnYk6eI3CK782H}ZuMV2O08}TkxH}6U#SsEdbcaPe_U$d zv%4qejvD5gckR!H%~c26{S1MqYqR6}covA1y60xz0(WjdoICYSvL5Ja`O7a2 z{3+vR39fTb?22->o)n@rU3T}X53g-YZtYL5%;?vD-i3WdH+I?Ugu+dq-90{McpuY! z*9Mh7IXC>aew7l1JQi9c zcydwh3Fx9yZEY<{vgMBJYgzHEBNlz@DAn3z0LY*($tN~N`t?H&H+D*u0$W$jl$tJ3&g)OL{73b;g}1M6-L-21`F>B7Ekzfi=KHC%?|=M^afXJPntl5CZ`!1!M2Xfsa^y(f z(%Yj|shsZTo)8-OGr?jkQB!5*z8V@$47jIE$JE;kbn>fLUeC- z1_rKQzy6|YLfoRz0! zi#p6w5=Yl=-h8n|s1%{1HgehePt|2ri>MyItXw&gf)HUIX(E9^)w{!*o=7XJwu`q) z+JjV4Rt;ZCL7SKl3SRa$FEn?a-~Rm6fVKc#8yj^*jk&piynQ2=2mbpmJ;%2uzwwC)XEOV<)1_W-z?dxmbLBv(#a`Qi0- zK#rc<^9HU7dnphe<ph3PKXt-**dHwlz$@JU>-} zWAx}QhL8XLjfiMr6T9nOO8o(@=}>UNy!uZaxc0G{>mI*xe4Cdf&-vNi*m(vm)%CCO z)PnN=vsaW&2ik^5L_AFP9^w!0TncG`|7-8fq-KMP$fu|LBWE=-Tl!}UqTTc>@ zs`mT_u@^pRr4+-2NNE+E}Q>^e?K_w(A=Mu>oa-xFJs64kWwUo6~54I`0x(ro|r=P z=ls3+5|7~q@CqjMd}X{-)}N%)tvhzCvCZ5wRM+L+dWzyr$001TMx;|#c*Djm)w+!u z)j9Q$VZiRutA_cJ6bEkIx$|nzE&AgkO+vKKEXv(X)*iO_!Nqvi{jVAQW?Gn_4G!NJ zYVP*=O~Q@?2W|=J)3*JQyk&XRa>J;%iEBCzalCV3^(x=%u-Pe8N4S15nwIEB&`GvB{Oq5J;B2 ze$bjc35^js!rw7-&tS+CJVeAmU|8O&cjo~pzLN+CZzPG*JBNM}`9R7LaY!LATygHm zoP>dscJ}YytJm7j)nMnr4jC$MlSwqfU2Q+p5vAoWL7J1-t&5mvR6! zWumh;lloZ>(iF65@0GufvJj+7~-+h7Jiphft!@ zhr2#GTep)3AaFR@yJ{91$<#5mz2FJmH8q!qt*kn6>k;g8WPA<6K=IW-7h9)M> z5FbeDO~5D5F05|av}yjzhi_I0qz8YlfBfdEYr+uk$^}Y7ry*ccIDMep!fprKU!7)Y zIi5rVmneumxx8!!d3pk3YVUaPEcn{3rregoFkzyJrbK79Zj0_~6KCu0x)B-Ejf&;; z@O1C8+}ILGi4kgSgz}i0-%rdv=Me#GSVJyH`OQ!UVWk&#M|N2R5K}_3*_igHh5^xl zT=w#%)7n;-mjI$A)9;lA#`tx}zUbuZE7MAs*(E%#?TuDNebbnSxWt#}Jim!9uJ!ZW z+#^=;TI{ynG%Z^un>(x*&V7)7;$F!^3WuAd?hSuQW5Uje(u)iE=;xLSx_-RWzpb)Ud z>;FZ0r}zb576PF=#gGMU_D!mvo4aB2X0A;T1oHpMldaI{6KlUoL$&ajSC)NqWN__ zx&Z&(%3-5qUeT9(u9z4H57UxAn2~0qUQk@5W<-02(#qnEJ%wzQ5BPd z%}L|j)bPC>`DW3d=FJRIA|Tv^QDJm&0Z3ck?8-bg;)$r>0+&5e`6X_8EV8lYI@Zs% zk=%2Jex!${{$)mP^~-|LoO*F+Gf~rsV6Qvy^3kTTABSBnteCG8N?Am|m+l7OZ!wJz)-`bB#)_5a zxqa@nQKU+vDcRqzrJ>?l)FM@QU%mwb<#j|81VtKg<7?@jAoLB}3y6_E1iRt-0wA`M ziKgz9)Tx^5qMYj<$^+7{2sRHs9DMm;@a5+cM6Ek@3Y1Xh8tP749S141Arx?Eu+tuY z^Jf2c1%0GB=-_W2$g-*O$7f7e^(~DFfPa3PZOnfW?y&J`Cj2qmZXRf`gARq<|2hgf ze~8`%I*9jj(N~@Y7Q>YQG54h`pe_}>dXG(zUAW; ze`+)%YvNwYT`gyI|M{+58g~F(|Mo*fbV*fyRjsy0q=Z*QI!HULIWvEBuYg8N5joY^367igfs7xu@`6 zBpi}BAj`lI5Kg`>1Tx#w*FeyHn^@Sg?(K!ou7EBOYr5NuYpt#RUVPnt%jm1mFRgia ze${Yk_{hh5K3hFJdTLnlx(+t;ADwYduDUhq^|O?)_5-Y1sj6NRA)X(geU<$F?j&j9 zK-oL)xGw7aZUetDAdpBP4OtUe2okud%cz|s=+oX+js*n;l30bMWQ7~4>AC$5h8+wO z60n_HR&;CBJDACOdQHNe{pvr@8}sG81-jLmC$7;H59;1h5Z4fJvB+0E3+X9s+qO;i zTjT%(gRXQ1PL#3HqMU1-$x|>5XeQG&RtYn zS%gSY{%BF`wmo|S%>(-$@cOg7+-=O)8he3%$Tl5^yQ(!J8KmYPQd(wLH+Pu?pkU>cx{M6oV(@i0)kq1!Xo9-;&xW+} z{E;S=;~q|i@=LVCn$pWJ{-k{J+e0MPzJHaok>?&tUrj_y_^7b)X|M*Wr`Olo5*kqU zAKyNy8U6l_A*|a@Pzc+Ff=NqPo&s6JeW)S<*PK^m(&>tvBSEgnblFfRQS;I5gwHxX zIXe{kHF=-jw$33tb{Hag#Gt$TCggcEH_;R*BUl#Ntu$C9a7=Gjhf2^o>jMLObnEszouyVCIs^zdTUv6kv^83(soe~s_vipNhGJd#{C3pSRqsZ_(!gMbh;MzT9_XdeFnsq!Wu5a} z@?E?}=IjM`L{GbO+F_F7x_{A3%M2H*#$>8GNM?%(V*P|I>S$>v?(>sl>g$%89?-uI zz)pu^|2lc{VZZvXM04{sFt74EhRSUH3^+B7N%lL$q$4TNFxKY0$TXn%I(0Z(J_%5~ z0n1-m3cjaD!(FJM2Et-CP#XSh*<~ai3QcD~CtC2X#_C?bqkDL~x~I8w(7er*Y1sy4 z!R8bL$wtSV2JV_f4l9VVkV^k86r`4s(ZBzN(1)@))a4$IinXo$rlNPrw$ceDK&!mMTXRU`5nN0B@EKQL>#wxNqp_e~FquDGVv3aX(eU3w_5^&~`g zQ7?z5mc^#r;^}K>qRvz4?j|gmC)R|_8J3n;C<(@-#oEz2Lx$9n<982VqV5kvmB6dR zv|$pWCH4dQ4y{yFK%#b+6|?NUFMo|E2Q9L=mx&XT2f*vIZs_g$=Ybr!q*7&WensO1(qQ zg6+0Uy)h_dGN0y!>xMgdvETElKnv<&@AQFsxI)q%aZJn~67mt7N< z4j>s{yY_1x9mS3#muXBLU9BP(FOfEkjEqD(N2GbaY$U9^rTn8fA7~j$TZgtp0UdHS z@PSotNBq6`;br7J+CRlK9iz=6j8!FF%=l~8CE9mQn>UYuitE>vr>g0DZKeEz?7iP- zO_*qEDy?H$DHZtvT|H31DJfpBPo;~*o7+!AW4&A*-y@|gK#(H~K^Y{PoCVl+KVgo~ zLyRVSmt5Fj9w@FEx+Zt%H^6E#t~XXMk9E;(9CP}qU&QQC5Gv?LWUW5*8s zCDwz$DCnnlUL;J^obDq=gwkO5c>G(!wtf3H0qEf}4=$`8W$3SDOP5FJu=q!4cG!3q zwHvwYYP>~#3Zk!nAwe-jAKPC7%}jp_SFIL3*dcI?}CGlxc|+?mVgkMBydCUi}UWd{H&v|aP` z0NRu<>a~Z5&djBHYWHI2bu}!?2&ssh)t}yR{zABUlC`u#kvoG`DAbsT!ic zp>YHO-a5Aab4tBEEwOJDF#x@<;!4}8z<#l+@!YfyqkKt1iNy%UHn|mMutlLF(zYNw z&y2G=uIhOEz!d6q;-2i%7cSCX+tByGMfRKcVlXN6mYd3PNz-2SVKF5=ZO}JcPNA`= zy=iu*%IU1T(+a9wwfxPa5S#%@NcqXN#e4NDul1x4sbEeDMqAKH5=zN_Pf-TJuZtg? z{J{_d3qS>ht>7b#|C6gfufYE&fdwwu&i$ucq49FuYA82hOuOByCO^QtFle}REBwLV zAj)gEZbkJ9NWJuq4jG%~khCGCS+)~xibkboDWVxL?8MA(xhujd-UZ8xm^zSV*>zHz zBEJb&meZ#F&hyK6qm%EZr^a#*oOfZ9?ZeX!(!Hk-po0>tqobp@`jaj_{aC**8+pP~ zx^EpAeS>W$`^F!{b;>cb6aRznET1@^e{=U>l!A3-SxHM5Vlln7z4xT@vU^9`O5*@@ z$x2GE8n}>3p-MDkGZj%L7C*btB{ug45d0eUyvf8M^y0F_o3HN}pzFDJ7xwaB`&NJc zKq`}sBuX+CwUUpW&|S$ebcUO9cj3BX)G=~EQA%@;b?_HZM@^#RPRH)v(dirUPqd}%5HtyhFKnYsJTebY z**C_?`2Ovay#Q)7%uSEqM9nyE#hZy~#nqDCOfPyqHAIYyU{RqCcTU+)P@)gsW5|#l zNbNfK?`SB9Vk&+PY#GvtPFG*G$*-=kYn=^^_xJCfg^?NW(!jH`x0ftzvZmN0NdSQB z$nW_3n{XnOou{w(3(|?EcJHs*JGRpyLIQ*O;m>(;D@2}6+1PZWLq{BB`dV7uT6Qfx^S);FTVd`(b+HI@j8-J|O~ zZuZIF9uFfj(*}j2Yzt2K=<@8sXnX?SK6Cv%`>0?_mvVobBBKo%S7;ufzIId5MGTap09dCif0qbiWtd`P)rgdA7z>vj(N!8#P&M zw!$?L(I@X676c7Z_pPzr+|}ULGkQfW)+1k@T=HxTyj62hj~+ebU47{hdejeTVdx}Tlo z(HmFrbIK3UcnuU!y0uEe9e!%uQtYRyVr|)?KDy@Bu~@v9a2|h5ET`?#nz8*RVT$!C z3Yocn!-h+=bVOJu@unA6++ow<|C>tl*q`lnnvzQ%D#h4`3uvAPK7#CHGY6qRsAA%x zav{#s<1waT1ke&wfb^GT@2~!}%;jFpABU(EVtb|i;NR7+PWmk_E?Qjqd~O2gmk!Sy zUa;ozn?9)j_(gCrV?|zwlYxTq=XP>Z(#NN(Y6~_F!WJSI2tg72fMPSa|D3-!vHb_n zzt}*!lO5*yToM%qE3Nn#=wL@t$iP*!gKqsbJ5G;$!zVc6>O-AyizfnxKs@jn1snqZ zOx`~-gq&?V3u_e4s3I;Y6kl$|t)q%$-ec-IH6y-3Vh|MyQ6a~Xo#DKH?RWeRB# zC)mflrON(1VyQ4<{UE1f()?-A`S)#R9BT(-p{t~g5m6jhBteU)$=$WJw;o$vk=CJ( zc5rb(SKn@YCgM{tL1TxgO}<@2eA&l6R0UD)iR!K;E(zp)*}p{_uP+EcQ<}G+uj#&S z*i>;r6Slpb_gqDQ5?CN2jxENgWP}d938yf70aVfnx0=cugS=lIi5BSFSXuo=f;g`` z4|jcWJmIN$dt_-yUP=TOd8|$6&NoC61J>wyz7?#jP}ZWRhTWnCS@SyXwisf>Gn{b7 zB_|N*YL33cqco(@Nsk_G>HsM4!Jz}AET^*LJ=8`w7V{s-fre&x?49&S#aHX-*ax7z zfQG0lF4asDwiw7r>;;Dc)C;gPUMZ}YMk$StnQ^?+GvChx{K27{36E2&KDyR@c>81$ zZ9|RHHwn+=35qTPMz&?2iH%7%&Wbly-_b|nPC7xYTDQKmxyvZQqc|YswE{6o3brUN zw8r-W|Fmh4;avK|mf9xUhz9y;0tRgv)O{77sJ57w5EXaP1r$y(#zzn5QL%tHwwY4r zVVh{_{Z|)3iV=OS_-1G-29=I%5VX-kwvpg8*^tD+0!K%2x9Z@R6=g}}CufqESc&@0 zJh1?l0>e-0-z zoU{7~(ePNhv~{}))22x(T&v+nCk7HZ{2|<9aGuAF0oJixWLs)2uV54R207!-qH~pq zom#jC)uC`@HCu#A3B8*dHbz|IAm>w_?`+5#9f!K8{PD*h6ir!H>44KDLINw=JnHR1 zU@iC#yTU|Lc#;|F5*LY|OB_y)aTN$~ZeQ!XSG;=~G><)mx<|8#)uLD*!fT{Ty#+^! zl_wz04w+bm(vOx@i)DTA-c0M`c!OR)PEbz8agsXM^NA70A{^bS608V2H3ML3;*egy zzKLs6QG1s0>M8s5L~%oWYf$wdq@XI|+E(HR!Ub{{cCEj-Kqu>vVPkTMDdFo6#j8a3 zksdLYA<2>>Fyr)I{_g31Y=XSg13U*JIs(+iFhE)q`HZ^m58N=`tTqvRA*vs1PzXn~ zz5#4}iOs6MCfxwxVA;z%f3THzhzSwyxIQQ-?M}E+b3oore8gF2>H|jCv^;k9dDr@S zpRTvYH4W+B&FvRs*QINBub#4W!A{kI)}bp#xhrDUbd)h6QMmj|~TebglTyci( zfFYOuuzI35J1}v3cej=$`<_*QEwt{?!63u^qkCSmy7D@1fW*7;()^3ho`q5W_Xy^l zKWwj{S+}K2>Fn)3FnZN#9<`QpUtd6&zIdkUwm7|sS?EF00OvRE^8UO(;&*&HX zd>UpoL;|<+j~~;!1GFj7W;TQ+kTFk_Ot~gHy6@5CWPQB08vXhSZMIy7Rg3@^5?<60 zr&Iz03ziSrp@GDvu<@ga?uGNURoy&2)5k_{@J_!YNV%w)LsP5R$|_(`(kgw1N*ksP;gZvz~eQ)f`}XhG955hKhZeV8UZT59 zQPic>f2j6yribK z*31UzYxV_&KsCr%fAnZ~w-qa*&YTI(Sm5B`{_;+DUCGG_nde)(E`!peVsuD9?%~ZRI-P=I*ubJfdYYK2Xcgw? zj|C9YU}4X0Y1q8|NvOGy;~hKN7Oe{i7-D}_$z;-`5vah@*O7h>B7ya}6+z5Hov|8_ z5TVh`^Qc(=9>s5@FbndNIV60WVr4Oo*hU!0_<)vHzkZ@xFFfGwza-^L`wksCNC6io zy|>lzot5Rbqq2V<0B4^m`x8C8=I+Q^cyfhlu-n`$60P+-m6w+|22CE59<#U)1ud}r5$nT z&>=4`uX4}2FJDH$(29UdQuj?_b1jHPLsQe1?Hn8(3&dioVsz=ojpkS`pi)HS<$TN_ z)+xSSLU!%y&|#3x;bfdXZVCGO`Y{-f(eZ=>( z*VEj`#7DKO0Av&v6#S_*U_ej`o>9SgMXTxf30^zrpc5({^JMJZc5x3A_ajA26aDGK z>kTuG8HI2;-f$f2^DEm0@REX}A|oRtdBpaNb1SR0A|oSXz~7l&1_sD1%Kg7)3(K5N;bW>rT0$!A z+MU9sPHstTOPEn6DNZdA`{B3_TnJKNdpIz4Q%EUSpLbklcCfFwfBCc=hYK<96mONB zoE$S5WdUnTG+`WrVg3rQlkNf=*Yc{9?)K2oiNH_KRG0X>(Nnt$4Ws*`IdEW~0RvhX z7#LXcfxV$80Q_yIPwQarf!#Ld-3hRRxn(05h(Wd_z(}Lxkbk%oOJuD-DY|U5+bB!5 zkQBk)TSk9S^*pxZ*#&Xo%b4km8OB5flP}%qPdu)ut}Y^0n2+(le0dytoyo+BO=;|0 z8XKD%=T%|HRb9`>=rMTkHk|MlW~@;X&kg%>aBwj57E>^cP*2C@Fe)g69Nc9sTHb8B z#kX$V`sdkNsY`!UaLSn47i~q_b#Moj0apx)!$_AolWn?N&@k z0npcLA#e)-Sa?f~uz30O{3x`gG{-piQP3R+WGAW3piCVGB4}@_>N>Szff4eUwF}s| zvAJg%z|@h1p-0@FrRe3#Q8;KmIrq@zFm81{(S1K*u~=>DsX74f_EB@aSu(~ZDWj)vdeupCr@Gt zS+gMFu^CP?k~ETf2!3nV1j-F&Bn*`ZlrxTn&_Dbpb+4^?77S>LiyLBUYU-rhNyTVv zMAku#W`W@cvz(?;n8GzQ0{^7;yj|Dmo4T;J)%5NE^5sq~DO|7){Ab^;>!5;+iE0pX z_`m)#aVlbln9XU+Dk`V)f%d$^^jmbEWMyUHkaRad%ig|k-(+tjj>F^(rLJSt zSn{_C0180wlmyo&i5<{V*@T7vbfTeExMQUuBZl#rfY4h=g(4=sZ9IU#j~>PknH|4q zrq)rM2_G%0iZeqQiD?O@aR6Y7NcNY_`A+9;Zhu*Z1V}n8rKj`pC|DV@W5em>7xc)< zVPp2AySHLmnz6dgsVFAiAeWcOe_Egm7Q;QoNxEIVlg^$kC@Y)ffHrlJdOSPXYcNkL z1|486RY^2wY7dcj+OOVs-@bib#i0vThd3&Y+`pNdq<44=CabBTaS*|VR(R{KUAt;U zaC`wq|rmQ+(pFWpL8EDh2Lk?yOm(?w_#rEBa^oVGH#0kbm(k~doO z2aTA$Ov@97Mx-WDCbH?1*%6W$dvWyJ36H!0H<= zUi>9vNa$pFkQs7506t+!>Ql%s62^5mF`yI>SO`-8sfUVm8^tE=1K3A#Id{wrcr@4_AdYQMNDCRZfya3nYTt zcM_az@}i_f8jOy&_HD3fhI;k20!ERHg816 zIeIhnbk5O)(bUr7de(aFcH+9sdbd+ikvRy~1fuq$xOh8me6Zj&Om3U7kckk=<4xyN zarcai$STL|e2N{&?v~jnFgfAhcseAXO4bv|0W_1YFS`wBUSKM&GsMyM{b&7d_+P!q zmG*RL0ovix&gdIP^%g^IeW+Yw*~_~jZj3nGe1+Y)J|Fb0vvKq#hv!b&Xnerbz` ziHiU=@-oTzLEJ)R=C-5JUj%I_xBXT*$oR73wOly30QO!;>L=QV#;E(%xu0EDdYM8a z7>$OFBX&1V#^|))bOKtPDyJyOhMi_@eKXO$kS-a{V2nD3ASCImuTU|vWvrj_whwpr zoybWYWM&TlN={F;JB3?jGQu^Ms}fgls1VLYk?qKEfns%G2Gw*hz8Mg9JQkVRQ-yd{fYp+@5^$PLuMRHOHU8ry6ym$CAI=Kuw~wG$BFO2 z4_cVC(V1KmB2FvN1K+}FrI;HAV2kS+hpa45{azlW`-&A;uU~H(WV|L^;~SPRQ_=0z zLd(c(no2|d(hR(O{*Lr8 zYJDf!Yx;NLD9qyphlCLI0wJ!X-avN%>q9Ud<3bxxS;MMLc!XFl?{Ouf1j6~x&%#^e zUcKI<;Hm4j;A?efAekbotYj^f_xuZz`rrMsU<{iu9R7h4s_?rso=R0+uT{c7U630x=!M91$We}# z>8h-(EK(qwg7R4;8yGx6uNZT}Ce!GM!-v;$1wziv%vw_s0e^+iWQS!VyS#n-Rxk0~ zxgjgxJ2Bui0$GYzM*rtOuVB(&Qbj)xt zXUepN8DDY*mdlvXli)W5zZ39u1>1p4{^RRFzvF044^U$puml&u;7#$tXko2{M`ct2 zX?T8zb%5~_@DPHGrOTHWnXZOKNt+^u1jx!StSQgGcWkEeza#+}H=ODm167}Z<@4VV zks0|__AP#>L+tguV=QtOwkJyh1Gu6{ph~(@MnXhy!VV`Hd~ks_Eohb^ZU0M- z5&-XXr|BPnek9!|R8V0Ji1NrWZe{leyq&?Ol>R>+Rnn0_I2pI))RryaZ}+O=DL_+z zh(3KAQ;!XL%SIL+MrGQO6LG@*dC+`bv!AM~KaE=FdmBRqPsc^&CX z$!QJ$)vMp`+`G54&{TFE@cyq$Xhi5$cV#~U!Ftkn6K4huL1FxeFg4#FD@=I-Ry9s< zY9--o7LCNtP;K|Oqp18D-^7u}Z(?|&6z6Z?hHu6_gzl zW4%$M3SYcfYaB6FfpO4FG@5k^Y80Z-OTsl`RE+X%6bW45j#+O7)BQjDvf@_@70yJX zLayXZ$7X|?3bqyV*@~w#8cO>Q+#qTcGd}90$^4AGDP9?sTjsuexe?S@qZ#+S*2@c3 z2iQkr34vox6x#cho>OCUQ4|E;tWE4JxJPals`{UQDFLB>7rT_a?n;Cv5A<6`n_$Hz zR{ZQo*$0X@S+6zmU%#x0oqRw)R7N{P)km)^hl7=CJi@PpvV2GfUx&!LP23YOayZjD zrGvppn|z#?mHJkEEGO}VNUxgQ=x^C+?ZY+dh>1SX-5xL^W@BgcOjtP{1TuN(e zQu1}7)*bT}(go{5=M$w==J%E^WyY%lCkcm?Z9ybruOA|(KsAJ&!K3_<>_p^cJBk^E zV?x${@A}Kxh?X*{gv7%O!$;CF5h<3V?NH&fpklO9#H}~$^n#{hQV_c?(J&pLF3f zkPv;|Ei!0=PJ5Tn6_brL4)M~o;h;5oKw>PQ+%14ANj5=s+e42WX_7)mNevT;3Nb~F zTA&jFq=-m{5u;uxj$!E(M8U~|^U&v=3{07}8nL4PtdqZsrA&OeBE2Gfa4?%#;!qk( zcOd>sObm%zIr1= z2XXL@qwsg&D*S#jwlqDggd$y2mE~kNk~U{IY&MRN9~NDVN>V6?)?w6X(ySSZHQ8O_ zb{2}IR4z`CgN18#!cQeVNGJt3Kbs=u`?YqV*qZ3}T_omCK7J#FVLH&1+EoV!7jc^t z`cQXL5i?~I!7m`(Rfu`v9H=3aRqP86?YJptlwmcdxpnuhITl0dPO{hg(lw(uCw&H) z=MXIwe_Rj`0g%w0jtj(oDNYDEj0>skCO%${gjAN(eQ>d`x>YF*To*FJ{9PNTSOOn^ zlI&8q|gXs&a^ObI*EC*7y-z5Q_(FdRv_mIm5`bDo3Hi=Lt{|4ZVdoA=*Ir9*pI0|J_a7u zIHs=LP)72;&(}c`=?lmSWk^nJqG+;;Kp5G#U@A~x0MCPjGyzeRcjm>XG3a0T`e~7z z3&y{XSoX4&Oe2JN<3lw2!bSMtK<4LLg;3M~YavGp&~^b^`3L-@aV}g%ML9djjpzed$trG)*7IH$hzR7$b6!H~>ku95}_{ z35j!%P0R4m*@oUho9zO0+H^f#LU2ai0(Qjg?0f5dH2^Qc`IyGFH7;~^ih{M!@ z5fy1=z>L%8Ys(R1u1}LEQV-j4J|%lq9B87Qe*Qef^R2a<lV8lZ{JB)8dQ`nYZ=( zQZ`TeF1Y*U98DvV8s{dh#}y>u0e+$LIS$(c60V$JLo6g&z|658brtpWs5nR-bA;D_ zYBLI;wlcT#$14T_4pOt(~Lcx0{Qrkc~&yH1rl4e;f)$zCePA2uJ0G z1+F_P)RjVS}0*1w6ZZd0N%_Z4t$^h{AOech=XSBCAl& zdDN=>Zroy~HKTd6W_Gyr^ECbZ{M2youov(Qx{t!{Bqvx=XUz|6*`nOi#>Pfg0lF-f z1T7v3qAP|FJ$cuIIWAH>S=+$xojrb>$^{`;K<@wL%@mlu;OYPCO-wEz7S6qlLjyzC zra9V8Uw>Z;UGAi|aJa^-fnX}y2U06}WDL7(MkQ|}tz*WYir;AjUVej~Mr~}_*vKsA z*JC*zqsT=moNJ0w;iZ?3W~1*u8nwo5!*s%SsX4!}Q0 zwJ4qSe7BkH%tVMxw`AZy`|ff2#)0aUT6_#eI*@i5$Qm)&5`auMs0{~4Am96?;~d0A zZ1EH)J#NMr^a*)>hyl~gQ2Sb9TpDktf&#%mqIWF?gsX`Rz$P?9w-Jv(#yL2K=Z(}< zInG0R!QKR5-bUP$7)|6q+UK%EGXI6Dm9 z2=n3C#W!z)UXd^BLXh~A#DTLoFEQ=%16!)!qumm%M7+W*}uwIuB6(1(5X+1}k0nCFiT#^Q13ghM}Hl0~5q-@il{) z^9ksV$XmtiAbK4zUpZ9qD0xHFJm|_MOu2L!<-E7=0%|p9V`8%BsOpJ)#0Kn8a$uYs zfJv*yR$En09c8F)JSRO~4c4@fBf-!la9r*uh!pNYnxLmwR=ddLD7vil{V;N4(`2{pI~NVxz7!+~>BGx0Tfy@}7AR$9H1B99O%0!0SMhGCK$ zu$qnxqj}oXwG?6uQ!@jV$j~8@v#NowK3Udv?c`k^-=v;B8RFS3nh5i|q0*?z7W4RCe~Ct?2q<2^8xE#fHYy z(pVgBX)-tn<)(0pxdmLo8n*|hAdTLIxalMwy%PUZFIa^iMm&<2HlTy}mJea{#EAa;)H3XS=U06c zlbXI0p2dT5NosnnDn9-X+r9-U)im+9?bx9hl;x3YEJ1FT!<~_WB-4GJL!Gz?pjxtI z2_2(U_L$S-zom=5wx<5Z&6`&qKJ54nt9&z?NsIW7lP=0Bbeq5Mx{Hcf&~-R$LV|^) zmxR?7i{zQ#9=C_8w^D8{#$+Zmv>t)pPn!U$P1myJ}TNO@Q1%#;=rJM9JiKRNOb$+Vn# z*XA@&P(Y>qi?UD%`xcv`^k~?&g)-XgTmQuqVMs;*k1BJV92SR49A4<1SHGXe3u`oj zIh#-_@uXaN{CF>G&e0ksj5M)W3%JwdimRRBIbE4)P_WL;()FHh&c=~Ez}`u-rQ}jE z%%Ac|5TU|3ber@qldW0%(yz2Fel0OpK8j za$BNwd?&N0%H)6j4-f2F4`HpeEAP0(3vVfSD-yk#gORcEc8)rJ#nu(;E=yuz0}(_Q z3Fh}(Oop%s-VR==O9?ovU?8N%YxT}KpC ze9%+bvStpWzr4>D7bx~W8S+Au%)+K3tvTEibvvLNEgAJ_OwU`4FyuSTM-B*gD9>FP ze^9L60mbU=G>(w-etdY;;1c;wBmX$VM}gK@t-9d^3Y8MvS2*qadAv{`9ZCZIjkXjK zkd3rB<)Bo9`dVe#qlv3T{I_%_RC*z&;~14;9wQmvlLKe)%|+3ZqOMiqH;@C@-|ozE z>IMA8W@E|C%e;O*m(3>(Va88iUtdwMWzUJqoEtkY9sAAp?b3^Q{J68oaCxH@9-A|e zUtTUkK?vZ+j$uRG#{}~MrwGc`)-B2SA15*S80icChgOI@!v9Zvw?esJ|Ne*33HBNIsmm?tCo6jT z9&%~~ZCEXGHES)-BXPlT+LqrNk}S5ef|8PSzkWEm!3v`6YT+}N0mu;iyFjxM?Ck&$ zY2kd`P8=N|vv8yaFmG)?{cw4YS1bWEI`^ zQtU8MWEgZ9j1CVd7-Xa*x}cet_9XICJ>}yD`s>MIvb>t`9Aqo0{BFaqLYb$DP#u?mn|kUqJeOs4D>EJ zSWM2NKygi`%85CFin=Gs@;p=-HtxCz*kS5x_dW8hm)(F!9x=U+U|t zd`z1pwsCG^*3CMt^NL36mrtKzRMu`lyM66m%-B7B&bezRRc5x1`Mq#zh0d^{f#wcs zM?%h~uITVcWx(uF$24Xge{5o#d~F zO5KeVrz`7Qn*cCO>#OJ0%e==C%ug=A{g%V2G)JgNzodMA^6uvb7q>-?Z_vQUiF|;S zWF4KDgW0B|rtrKhmM@Q|&;6$Y!Ieprk$U7zH+{|5`GyRnl z0M=y*wT?TR4kZZDqfms@+?e;ZM}r2N$M^oR!E-}&Knrj0q&<7~oWU|Ybl9+09B?xO zkue9cYs&tS)9IAn+v5AaXMBA8^}jcdC{|t9N*C|RaqA@W?mx%>{kK+Y`+H1#Mv^RF z;n>PObT2noMp>Y(!EI2s?jqd9W7!GnGHS+#qer#&FTX$Agvv9IUP~6H4O;2it2@y~ z2)t0W|6NQ3qi8QT4Y_qEoiO}eZe{g$)d=5D*; zbarvMOKbn04JR#~flan!(@lDV=O-p9X?ECset8o|y7gafX=Zk4>h{|u3}U@^$B7fm zE}WBOZAxdhO@jvWIw+QL%9JTC&dz3RS$T%+D`eK`pEMBka_AnNL0ihnRU8m#mF#s2 z$@b{@VS97<@b{dI;>`HRr#ZOielg-k-n47h@ZtSv@oP+9u>Iq|f8+P!&lZYCa#3vC!gx12O- zBRX&_Q;KB_dz(XYtNBG1F)x{8z7PMdCOy0)uiZby$sBXuC0A{Jw8+V68qqWT3}*(% zCvf-#d+U|k<7DqRA*6E|t{fRmKh^~f^y*nk3YOY~@cHHqevjSJt-&u^M2zOH8_q!a zm0-o8jP;(!a(%WmYH#rM1|095?mkLa%+8(dd2uNsPcDY(6IW1&kJHz8BG+lD zG;?usy2JaD=?1l1*XkYxd+yTAp^7!QdpCT%v-1(AnvSwMbC+cqxh!6M57{c@b_oan zEOF+Mb{gSvIFKBE?;Qwmx+{2^}!YKywHMv|mbX`zT|tHElN5Gax;$YFruAnSpY zlc_OQ2x6|riio8cc|e2_7#Ic=VN?vT@|3!tTQ$ZE1>es-gKpdV*Iw7V zhpsEHxj=^D_j`WNb3ga}y}$S2S^ebO-vht;D{j^uv)=mWiT1}e)@sXjZmtt&9J3Cv z8!}{pGTX<;IjfOnrSp$V;#`RCfCUTGDX<|9acw?c+a|fQz5IOr{kKF#N0*aHOl4nT zMMW_5Ul6OyMY`w+R#;UvmoRZ4Ju&EBZs+yE?_G5|-LR?gWg;}7)YP^O@?)4715dV}fDm zNgs`Q44ja04$7{-;z;Y^ciy?*MrH6NjxccKNxhpz>G+m`Bkkse=p#Y~v~)kchC@LW zih?2i*Qw8TsUPoo z>BNZFQyHFRI>YnC3230jMj7Qxv0qdKRQDQ79Ld7^Vns{rFz1AW59X6q>G$yH**-8k zT@kdv|A0J}+%(eVb8^rT(YPL-_`7m=P8}YDk+c^X0+}wEhFWS$@ExDdTz+coz>ykt z*6qKHL4+%4;UT&m$JsR6JGYYV%uy&t4Djs78q*FenCfv)CAwJ55^b5{NC}MuXi+t3iGYOix2{)ZU) zxgCx}t4326(p?7gSH!|4j%XQ#zX zg7{x#vxN1jz_JL5)b2y0iz$h>T3Q>j+4q;edrOoexw&rZNjM1UTh=4V0FS)u*O#NM zBH`A>Xh4D%AwgOsce|6SkZg;B$9vj5P_0{HZC?MMi33M2zIyQ^%5rkuECf%XT@HU+ zF$aMuGK*J-?#J5}WMQS+qZ$Q$(uC+{qz0OiJ3k zZU>gzG+k*8}OU9>ZM)3XE>r;vcC_Bk>;2lLcNz%McjnCXtFCPb zw*&O#=DPPi%ZtyW&rqiz5G1hT_Vv^CzOTQ&AAhL`!Z?U>uUZ@=6@`Eun`cb`8E;EL zm*-{7jh{*TlXqinJdxr1e`~$_2JB2e`$I#IfVoj6Oxc+;XS&N|yaXHy)F~+g6E`O~ zm&_imKKoVPjwN-X0RFb>`@>Eh8gstO ztU*NY>$qP)cz6ljQN);ZG?!~Fn_>dVUat|MA>PsP+A?@ID;BXl$Zp8OkSxKa%w_J` zuQ;^BhuJp1LcHDsziDrCbF(ryxX>+oH(i(AkO;u-ON0ND*r@yIxrxRAM+b*CtZ*O- zsOyAFuP=^D!+IfSIl~-1#l}QOYbi$2!8S+1ZG%KBpd87aFQ&6^C+UBUr0(T*bVQL%@)B(X z8gVbmXaq&bWtzYrnx~I#5xkEbCElP64}YcwPI)t-x%}y7lWM5N-*zNwQg1M5ii^FI zE!_l8t>OryP86As@8~VQSh~1RZ8H{Q*1#oZq#56qoouL$$Oy|zqT6OrNXQO3e5L2w zrX(eBc*3E-SoU1}jf>CdEg1gfIz&UA=H!Wz04@buxPoRz_Op#St&bTuFC=T-KZQec zKc%VX*3*~D(9c+g?~AjuT|I16>65ml0+)1y*Kk=k3(xcK$2J9itaskkS_C_GZYpnj1Yg(>c~IH%D29gWq!K&Xpu3Xwz;(ff^}vMFkBM_VZ^T+t%(^l2`=Z-Vs-Xjmq^6kQ@R&%(gm&~Sg1E*_CCjg;d9(nK@bWDA7b0I)&F=;>m zv5exX?x>BAyUfix{>-Xtg9NR@UmwERN~gwcwRcj@nm;QP!w=1z?y7wLiUY?oB{t&- zi=`J26nbIn6wXKx&kS;EwoC7|O)4NuC;41T51bC1vc}2PKX};|SKbH~h$Y&RG(cS8 zE;0r?`Q1i=#<&zujb+z9zWw*}))4v0=4x$a=e*BR?xYM0)1i8zF?{4+y(fB-s+vy5 zQZK7Pm(0avX2vOK(GoD6Rv^4`-|AFQr&{I=TKq~JoduN(7Xn8a7m7}`rC@m3G_ts zM{X(~%*EdYan$2QuyM!GH0dQ0K?Q3EfZ=oZf95o6Jz?2sV!{NbGo5E<`_y249e`bl zk6~(pkoGZ=SYwf)Eq6y&^nyV5Ir_d`<3-27h9v4Fp2s7JA@{f@Y`30!2cpOt@9FiIhc@z&g z?V_Vmrw_U2IvN#tTtNyogpnl}t8Heh>|lc#BU7y>x>f&h=Cv}&t@5D@45a;+(cCX_ zr+74S+s|C?B-nVeg5pY$ZxDrIV33_piEoJj3FP2n0?cqq=8$urv!tSZG-QIPVJCWE z8*u|=yn>X75~)yn<0SGH&CY2qjo5(uGi=zfG8#_{Tj)NrpAjmvG4%C~-&TG<7p-AO zOEZZWqo2KohQ+-%Z1`~Tg}|_t5K_UF@#WN=7UT$2!`_Py=7{+ml65*r;tnL$;8yyX zSIOWuzv>~6j?#5QMRIBs*eH1as~ayQejnD;J}0S;P-z!B>J`$s{b~_uta3Vr8IQ8( zuZvv#V`Fv2hrSsm-h8qj&STQ;6G?{1{LDP;k@>|oxywnxo(VT*#%`!9Snv7|0g-l! zBN-C_T!OaXsqBUfGyyOq!&=Q$T>s%ibcLGi&-U+Ruky43N;Co05+(xHVez{uP|M=G zqQ^94Wy<>cdeJnbxfOE}T3;&Rg#-pt{~_&2BQaA##Dj~Qkpr zI}-hyN*QWA!Y0a)l#oc=S90dJ5!uWkbiSCp=?c*iBZ9^yd_rL(9n>VCVeQ-hmd?Xkd-)tuLoG(ZtW9rNhiTvYj>}Wg|)Jc>D+&n zWmB`UE8zZQf?=t0eC%KvO|v^c70iiK*SvqxCUMRjX!jyul3qi03PtY)@hvp!G(SKh zpw7zeT`-r0>wp$mE6?){i(rQN_fl>j1cUxr{p9%vCV$S)OW*AGUqVy$L9mO18ZgJ4 z7Vjg>vx3NrcDiDFW~uM?q z7M%2icP&K#r>@kq!%CZqC^5(vk1r@pwYBO_&)+(Iq~Kxv%X?pJ?QS?=s6`M(Gq<6o z8maOiH1~%uNY>~+KDjDeTU_BOd--R>WjP4LA@l~x17`(P93@H;*BqJOE`$+Ah|=FD zY)PsPAjWr;V*9e({^HW58EFAwo$4OMkk7Id;3!J=AfY$A3?Y+_}z(4?l_=e9U z{V+?SWta(V;3&nBhd$EJPc7A1tE&d$1J@M{u!am*E5Am zj)9(330)x(-t!moZ6D?#2}@0>H@#uw%M9k8RJtQB2@Fm<5%*%Fp*{p!fuzqZFfM3wm1ozy$8k2MmyBcV$#!4g#*btFQ_ ze+>~T;G^QNrKh`Ip^Zx@PGJyt7Di6U7h(dLlvPZ|pAQ)HD@DSk812-SsIz)YJz+G} z!KcG2ltOco+W^9|7Zpa>%wFV1axrZMFG2|k5F*i`QPd?ywG)HtQ!7DnGSNGzNv|c5 zt7sZU+y^9Iy1Wrq0?nmeOoS&&^8KK$4fzx2AGPTDW^#2cLAd(4slIHoI`M6mt%A~( z+d9$O&v?LT>BZIJ7nlMG-+ZuOh+B;lDHyNc!Ay8-I(&u?a{@xq=9Ie4$)EN5;!HWnX_SnAE7&1ZtEaW z1yge@aRY(z00ELH`*xz%@noJz3_g=So~A?rR{P#7I5;?+)=xQUQ*XR1;R9;cYl%Z^ zT|k1td;j=$FO`JR)F9e7S0_~i5qOC+oCOk;+yuwQP&KviZ9Z}xFd{{;wrm68aVS@z zB6y~#TO(&Jw+R(M;HK9@94tJ*{)!hpm^L2}hB4yWKj4+Sbeu%lKq@H{2_|E#d3o!Whca5QV-+-w-e8T>G$hjfBul z^v&n-ojUO4cx<8tuvcU(JW&==G)`LdH z34>eVJ|=c<9557oXo84+1l^H``tFI-N6;Fj3OQF&%?&_Anmv1_%Xrqt+IYiPm!!v* zFOqGAZUx9nz+~S(UwB;<+RbhOs^S9R0-15)z(RQ|c^Wet{v0!FKQ9DAyeW_Y=mjqm)mNVnlq)s`a=Ep!!nl5d^^wK? z@wK*^V&^wvv?ujd7CdA^gv{b7F4@5aR_axD*iw0BvJ_6~Q_REqZJ&J*!7x9a`70qv z42Sb3vB6XH#>lmUiA|)-0?G8B>VsA?i&$r1{!p=pOpDoRSxZF!AI8@AfFAu!qJx$x z)ops%&CLBb@o=V*p@vGw8DiUbb)No>-X;6an z%!?}XbJjc>1m3hoWTWVAFk=s9@IY05W>8^$RnDs12Hj#%`pEw zf+LG0*D~?p;_|Vi%XqIVHJk`SPjtD^{n;3oHg=CM&T}&dq&d_W5;^NgqL@~8Ti$~>{`^Ny3Ox~GWZfR?Cdj^nvrJx2D`K6VIy zbngOqtY4ZI=o3E9FBo#?*Ya03vd}h7j}TV8Ex?3J^)0izX=A>JZ!;xFKI#7V_1QH4 z-fl2&$Gi74-Sh^+V8Z$*?%s=?DALWuHwma?!bCVf5ln^tGTn&prrl|xBK9c_vdf>k$Z{;U3nSWEZ%rAF^D!P~0)W;b8 zA`<`pw5?wR@n0v1clMq1KFsB>OAs%7<OAim6G9rk$JC zt5>hZ_;H3)>(#5jv0lC3XEtugcXSi`|gpo@hS?&>>mBt{Z_bc~M z;zK&$5(-^RhyQO5B9AjpEz{vIXYEOP%E^iwf}g3U-nrzM=QLb7uuDFqLVftjbL3g8Y^E>$(u1*dP z4)bekeqOwIkq@j_RaM<^|Nf-!pUcLYnkvkRxqP|sqlaGg5N5H#@4pr0J$U^1?z;Mo z92PG=a_rb2CdS4M_wU~yyz2StN-zDZ-0ktD$xLn!S0|SWon{R;@Nhi$vZ-_Cq`iN3 zt?Ew4o43kY4b}rY_UK_BHdEc0DV=m-QCjDQ%@s#|d;e_b?vC3N`}FT09u~IVL(kOy z%a<>I=j25D)Ov5*w(Zr6I0FXS{Sjm5n9INis3|FAJ$-s_f6l-(NH7fz{Zt^;@)P@%BYr=$$)b2Hvc+S(bY|`q85q%W`}7?c1ca&Z;X_ z!KdfNg&1w`kon-jpQ*)RKD9NI4i58QzyA01hC_!AJv}pO{UERWX6`XO=JPclMk;&0 z>aJuGpwxZj$U~n$yR-NjE`0kW+V|+f_2X)PesIzI z`8iA7>cU2aPMtcn>(Ie9x$CMaGiTmSS>oihsG=n8;-yQUG8Ao3oH+6FRc3f|75(7T zr`2_vZ5q?FSFi3pN)?8OZfL1r`KRT)wR;w49oKX%8pjrC)cgxooo91b7q?Fe=$d-PrBHi1zdo+#7+ZXxJhw+CgiZ zX2aAAuha=uO*d(`wrzfU{tjk3GtS3HH#IG-*nNv}IPsz6{{9W&v9bH(s*49zS0)>j znE8Bf%jL2h`H5F?|9ScS=T$Y0=+|cJgXhmpeF-^i!r0oHA1*|PDChh!yl1*w#z>Pu z<&oN*8nskD8WYpr#M@inx1~yn$ES)49j{6a@3_znjau&7v&YE($doMvkY%~XhUqPw z^c!vOIA~FIWx1b-Bw*o-n`;|v7`)yonMYpV$fQ28K&V?>HP5FLua;-O5BT#9o@$|EL(Q;!i8O7 zVLdK6<{GPauw{u96&GhdIXmat<7=x1vF6)#>{wXt@#?&7vclI7FU)xCBt_GN58tx> z{@ZZ&>@Kq}JM~g*K6UzZBZ5r)<`(g-{f*`3Z1>M)S-!V7G%A#vT)!T?ebCK)j=7gI z+2y_VT8|k$`nTN6%S&&qtMC5ik-vGk@q*l8UBAA|HL{ft8ya(3RP0+N_!EkVAX+?wvMg zj(8mJ&W+eL$e|~q6cX_kO$Vf$9_dWsaIyUP^&l}B^w096P zm53F@dDh+&#*_t`(rfRIzy3<_Rq@{P;zNX4sD8Wl?K7=buhz-V&OUndsK&y(t@v=0 z2EV_}i``8)S5VR(HDgAH`i&G4-$p&#Rc|NctV^XuD`gspAIPnb~Pp`IFMpAn)h-}?FOMTX_gPwiP7Nk_-; zb|ws6Sd!h3&7PQ;$m`@2-c=QwvuG2KPd?}zYi+$Ed-~Di$1k`RPYCEbB8j=>U5-ab zM)n)#l()t9{yt4>=i7gf#w6@5U22cDHwO|+F3y?Yv?q~p4==I4(gi|#9$ z2Iagt#-q4j`SyH`EGeG9IH}9>qC)oe6m#=+szhzl#8fM*6h^pg*{cUfSnn5>JsJG; z=~IH&Vas!K7uwlnT4^iw*3s$IT4(s<;6-c-xkvZ0n;-1YeOEF(uBrvQC?SfGnCn$; zG}j~lkAD67X(UY{&z-i4mR+`P)Sn&adaPSrQIg--H~#*i5qmdpZm7E~_maO|YEb@( zvu8_=?VVe2G9skl!I80EA8$9(`*c@TN!NXg0KqZX#L z30eEqDnNPUJ%-KW&6&&EI|<-h$Xl(q8gjkfL=twFqvL=8XYKpve10ySac=J9Zms4& zzrOl@sDX;fiWNf##Z?bBGx(`RI9XVleyIAjWn6*8rT&&@*__j+PQAl^8|VA*;nYPL zA^tBu*b^u29~ip*-n|Kih5>4w{XdO=a%nQR;2Bkw1GAn#PtS{WEC2CRo3TtL7d?sd zF(4?(n}2zeleHlK&L;Jl=l^7N4_o&5mP*aXM&KE>_)CuJsXaPu&wqT$u}g;j5B0RP zG>hre%YVG64Y_(%S4p<`mz;U_nPEn}=SqUwDD#wy`WE_AYZMMFYs0oHrt0hrryB0Mjso7^oPS<7z z(|l^b`BWsdHFK`~xS+#8>$^amROW2jrDadXOrG3=ML)m1Akls1RrkK%^4wZVrZ|3l z^P2auzI*yxwrRSFHQh}~VVb3-37-yNCcHm~t4M+YNmf4l;GNvoOz*auomGdECr=W; zOpWG@a`%R-SWtk#sZ#n(zuNCLVNoP7qW>5 z>$u$WhIUCtXvX;k@mGF+&2^a+ti6*MxQ|WuFxuWs-&Ct}F$2?m#E34o%>ze%Rh$^4 zo}WJA!%-j~Yo_93e9OX$sx8Td_k(qI`*#^WnEdm6?YB8j*WL{?4pjEHaXB>l>+f?dX5*dK(k<4u$Wpeds-8 zNL$+f|A(;r+aQyUXzi%&mLX(n=iLQzU-g*I-Uw9wP3^#F08=CX7 zPrrTzgM6x**(UkrbEjobE^I2xir7uQ)>AHxN>;Ybz2xYpq_eAV@#4j|f$lRwWu&p~ z1FvoY!G#%Zul(jyyQ*P}&Ktvz9^D9fb1U>8UI1P!X223IsK0*mrs~~tpHz8&ZI>Pa zlnIxXzer~boIG)2{+mZd$GP2zw+e;Hfu)hB&dP=Yk%UBq zcy2p&?&g6*BUXJ%HmGTxy!6}+V|GuVL5=pnz1x9@xd4?)67OD?y;PkGV)vAhQhGz z0}EnHLu?-&9j`rj$PgK;?T)!hdLBD+ov!((>{hGbK3z@7x~DA9l{{T~?ilMrEyQCz zYh!QUX~$nGYB{u$fGL5~pz?Oh#~19HwN*1M66_X`GtcLchh94SXC1-f_1`C}lYOci z4bO9~e`C$Jx?(M8;GBDm&p!RNx@zGkPi{>I?e`flp!iejpop;x7IZ&$?AYJg*_l=o zCpMcyJw_duU!oPQ-pp6Cp~WC@hTZRP`gr)o#v9i`veV|7XWtc3IqbDyxI{GV#>~bc6Ehno2?q8dflRu zl27B`<;AuI+$8yTDSP?FQ^(_Dw}E?`QK2&%QW~VC9h(>D?au%A>g-P)K7QiFLZYWV zNteht#Nk0Vrz`ml4Gr~Mq+VdLhed-yl~}>&yuX~f{`uiVs`2+Xe>hQd-MDcm-nZqD z6|XIHt=%(?@_@G5U*A3%%h>PPv&VfL7yg(ZuVhAa$cd{N8bEDGJy?~#>gL!bOZowF zh)uwe*_W0bi6(}*k!JrJF5{3FD z$1JO!ZH`1nZlkCpZmth!noCL+aXo^bS8&YI9Aeux&CN5_ld>)6rEP4|R@(|r!hJgH z+%Z>n=%{YD4h&uDuzY#MDS~*-o`F|i_3-@sYP2s`)b*?O{pRTJ_hT!QD{jr1}aC{rFPI=xM-1}5P_;rvBez(ZhQayUViPx&j6qo z`9a0IvOAfy`^3Ei6Ems1i7Jw6dF3d_E+*&Z-f)(YbZ56WVpwhyU=`SPmUCD4>e|~Z z&)!oH@}=&&QP>u)iuezB*mQC!&8=n zD6EMAAj1|WB>tU*q(-@yQc_dnTQ_eAqxAOqje`nLo;+dnUG$tTA0#Cy%Cfh*>7_$K ztNk=LH%fgwJ4^RX&N-EcJBk}rl@xX#I55FJB_)MYleGfb;@+X@CXFQLqPwjR960bw zAiTsm+fPL)lI9$=?%4*8+${B>wiTO^lGC35b9#0ay2lh=ghk3GsIa<5BvsUQ?v}iJ z|NfN2qc_Zq^Bx&)>>oC^PrDv40qLx)b>UDrBmuzQs|Vyw&o8eN%R%Yoq_F~zAMY;j zA7U@>qYZ2&SpuJ2KEE>8opeBJDsYRZ9ycQY~~&Yo3hJzmerG@8`% z{mYwV9!GKT!p4+~6;;kqFs3~rjEagD1}N!Bai(C~TnZ2uCC4k z*}37(pYN7uO$UmSEP(V9lrNH6jOWf(&N@Ch{M5VL%WnNB>+S69BnL6iZMPbFKwzvU z^Iah`wQgN@?}ECYrdMYYgBm==e2u$YK+>O(VS37)J9mEd{Kg0Y!NkWal?B_G!0x?z zZ92I8=Kg6ziHy&EYS#+1W~)=_#Vf}DeRA4(a%$GSv@|;)qWemondL;V3qJ+J1F-@q zT=d}ZXs^z!9MVR#LuL=-0HyJsp1NwP{rhhRRp~MqEGH9Y`P7Uv1=lOmB|%pI{NPhc zTyqa1=UWno_Sjh|+E!`_8h&(UcBi3B+C|%El%N9zJ~d zPd~rr${sI&GtDLej2%C|$+;U}JHM#;dbzyH3y}Azc#zNj^1|eb#qHa*djLmaYpbds z+A^6zqpJM;_Q~$LnKUp61uOsXYC~M60InF%*w(F;E|jsL8$eINmFiEaF3VorJd`d) z;=N0b?D7Q_I#+7Gzo~k;q2)|A33&%bj`9^cjo9zjqiyd=f;<7#K;zhdGz+@K}&48V%CQ~gflee|+52d=*aNqFd%4@#9 zJ+kV<^LFjpou7aEcLI{5qoWXWyZ2D9Qs;IZc;oX_nYw$asV>58`5ILJ1|f0sg5$xx z^St->niw?S@Ad_C;w?mL>z#!zvDU$Upl~(_^?_`sQQiJ51cu2~Pfm*%OfH&n)_Oc) zj*JP)lzK@+F+njta{8&6mzH&6>k9fM$^mYY6nUg(9S0sIiv-%{4inCZQa6IEP70s^ zx4PooJ>OZ;wt1If%jT0Gz1mP#OVS6_+WH-V3Ie}Pv$pmlYw0Psq*8EK)U;{9D&`tZ zk_pLGsq<>qYi^#lLYRX?htlrt>91qOA9spmzb?ZA*k)1!lY<~e=3HB;>G|1#8<(lG z0?(3S`v)e+r^u^v)8of`6QLZIEa}nNANJ->VW2@e829$tZ_kp!3keU8O>~(QqPIV; z=F7Ra&#rY$-rSt|-u;sq-dKLGFSbOAel5C|d^duEd*PE4z zgD$w2O$Dz86q3TE%%nm#^(FV|{>RE>m6-g>LsaR5-Cs@7CG#BZe>vBGOYn$1F9oo1 z!sWQ1jvdrz-dg`hGiQhu=dxpaU5ocvy7tJKv#RUl$&;(!+8e|dmVnB-VpB#(`@{8$#+$~-I7@*}%`S}M%i9}bUq_yD20-2XcH=|&z5eIUv+w;h zh46t*YMFXL3Y@BVm6}^p(eY-A!M^dzKxe=nj=xax0m%xuuFJOW17Wmv)yN z+ip*kVnulKeuxUxrKx~}nUKY(8FO!VmLK}y)#%sy1@PAFC#$Fi>W#5ykuH6t&a^0w zSgHQUAAe{!Y^gknpzz}7`&F?e2bRt}KmWJ5@7d>g3!t4V41tYR2bNEs=bJOvt4a<+ zWdCm4{O6Bv5k!{VnjRnL6M>R1*ri@6JASb8drn+>m*v-Q3&q9qWD85`HS0lmKezVX z((7Ly%~qd%$&ZI2ob4ZM*R<=l?b}zAhx!g0RLWNDKJECV1%!j@ub1Nz-+Zyj9R@re z8D!@Ysh(yZ@tl=rd?gvL@6c*<`(DLy{NK zxa?lBYv!KZcfBdPUA#Z-4tF~+&Lv-Rl&r!c%a~$qeP6&o1Y%Xq zx41xlt8d?}Km^I4N-alzZY3oK?7?lt_`5q*`%<1Q1mCO^`uY0DJI$&;M;H_fkTcV- z>PaCt0(kiNQd&#zkM-443oNXH5;MHN4pClR)EfK^Ui__oLk;FcchdgBo76(Rc1=Dw zOvr^HQ1xt))i2jIBAo&%NiZa#eD_yb5iO@rpAIU9`76u4Jm{YSKnO`l7wGDVc6Pl8 zeC#!mU@QsQXQ{=ZhqSeE9C5 zpv}pJ`B^agN$i^g2exeqzD8cH)Zz|6wT!8tY3@vV3W$J~W}--Yp))`)V5XfrZ%5eq zLA@}sejtxigx%EQJ8!-`>`o2QxWPCxGp5WmV&s~y=iN$8l?by8Q91dOs|OHqscFVp zQW2vi*#n9RW%?7@8sEQr3Xq7kcF%tN7|0{~i&=jZATl2`GM6zs6&2MQ(0A`%SpT>e zfk-ESDTO3O%H)*$_j|GwvQ82@q0JhLuF_$M?eD$Dv)22;Z z?KB&trskWKl2)qDKA5(LmCB1I7rMp@=#`q2imVO-6+$>rd+Bcl<6OO4P?CI;=?#v`FQVp51!% z*uey9Hq^Psx~C+%!Uo|j+wxDdLDzS<6eh6(4|TE~XKGqvNEF=>9cpJ~?Ojz2$t!D< z=woDLB;S}BWMs+fZMhqpIC;HXW;Hw!YAu`NufN)Xymv+)q=E)u5f0p5-ukWD+ko;* zn>8!q)bbZMi;9Yz^|-{$pv0~04R#M$)+pVH=|hd&6&h*=q=a~6fh&RLk&holn5i%b z$-6^B0#b{SRR`3mo~!kgDG15aIzNhwigxVY9e;A%gb8=vt%SeYy&FMIRL-}h6;+5p z!P@}6d>83C5Jh?XOlFLwj)vOC*Ukz6MvznMKXhn&W_Rh*{z-~GHF;AcQIss+H3d1j zrxrhBw$X@Ys&5X?W%m&Xc#D%V>d&0m+tem^W7F!=)2|1u(|_}=f{dtpS@sTE6VyAX zcG$kaZ*;m-kR5^tVl?^B&dRGZug@$}fZ#PbBJw;HkZp59iMyTOXp!kB z1=(fR0bk$|aVjg3#|dr^<@#^`b4SwV686K87v@`aNK!;k*ictSbwyCW+bKhGyNyljmh^-<(U;NnI+J|lnWTyJ(dBPh~7 zPyEbJlZ4FH!E2Cvsq8+#)W7bR779CjTXC$OvXo5-h#q=kXNcvpY*MI<%`m;tGJJ^N zX~v+tCJjz{3B1DWkZ8k9$wTE8uDm7^XQ4~ouy_Ui^Xk7Y3$Gca-mK2zz#_w*a6uh& zg8Zu>TEu^Qs^ug_KTSnjLSxsCB&(Pu?GY=;*EQ9p25#BY zEs5SH-CDf_xE52YOOgU?{6S4``}6x3u(vB{_Y;g+drBe7NITNj%!>}K(IsqAR+A+A<`#LBm~qENn+gcm6)YSp}9Su5W1+p|?V?yp*P zw08atPe-adwrdB&KU)Yp6M0Ee0WFZ*>JuXaLN#g#Y;g>a(%WU zCu%`_LsTX0PWVE^5CNAUj4*_cM|FAflgrChq@YK9D}vx&2v@832E1TwR{nQQRt0j&y}*gn?KDFRWMnF&-Dtd8cQ(EZ;Vp z*p)qlVFg7hV?uS6q?}4p6v<8hB$TOm1gHUAB*TCH@FH}@n@5>X7%^w2tzL5R-g)Tn zB;p+;XKJ5-+UktjA|X1K$Nd}@_v6`z$7qGZP`eC<6-Z^ek$sa~s*3k!fqp1WOyKW? zAPGQ|R7_^|wIT<%lPsS9*I$3VoEhud>)`O^N%^j^9&kgD^WJ~jSp`SV*BB>NgA~Qg zr0FKjhRHH8BAZdUbb|9Bv`>Q+6#RV%F2o$s*1%RmPfzp5IKalB394IP*#TFQ18gs-A+|})dz%K| zJ^2bs5&E9&T(|`)^4Yb$`fI;S#;Z-1QT}WCsTnTll#A}~yM6iQmjSwBR~o;&w>g5W z*jHE$Pp+=$4-X7|SAlqtWyR_SA*s*18Qfac*g18;WsSAp-Nl)7_Quy)GDRW{J<0G+ z;?43sC{0g51rr2d(Z!hpp2!EnCPX2nOr18Z>~+v=rv+3TdY>PRwO;cs=6ZQj7mQaG z(V;(^6N0M@$XUClP~MdAA=7>L28H~y<@A8sDR3!@1ys(WylV`t!o z*SBjg?9iGg9n#$+qNIo>5<1yp&M($}bBS*;{3Es@?GTab^75>u)RvODPU>TLwU1BQ zKL-DZ6mI9@YINsJ{_ijJYeehJm^$HgiIB-5UsFUt#Zt2{2f+iGe)04GlR+7$ST1Oq zt5>gfhXLS~@kg0JVTEqi+{~wT?%s`=BJ334iZ#rqK*|AX?V6g;n`Z`PDR7F^l7cFa z%S0mO%4^V0k1zQ<<^uBK4v=$pwq?v%OKv@=yPzi??58H80{8g?sPgDc7qx}6@nrwsdQK&6Pe%+6lrcCc#E$qi<C@-sG6@!>{Yo5JJpnRdCFI^^F0kwA0fXjL73*jSt?zC@|Rb>K3$45bSEE+7G6XlYQ%j2x1E)SV*>I|?BL3N%?H0z z+Y0R_PP>K*N=*LU{ddwzp^5chLaEz5y|`EuGgJr&xk?D|j0~R|H(4GB+js1UwLwL< zjuCW8Y%gj>bfO5)$%RMahh*r*x3{#ujccgY&ggkqLoekz6+W81{8%)%G~El+?|AuH z(wWQ8C-iKy;K$c@g5nV7u#D+E6GH#~{vi@4Lk+vN>PCS3WyBK;loAu9hdUzAHMK5g zA`h}k(;NK%+$d*asp9qVx6)7_eIlDS#x`fcm)hbng2a{F3wsK~!Q4G&T-isMvLGUa z=Ijb;6>G_$L4jZnO3UOdB+8%xvq^A*2C$Oq=3=Ljv^RYC-hu)fN};-6I(?c9x=H+Z zkS*fx!K{nBS0n-)Vqzrx_X}Bjl_!dvn+}IByOJ_jEPkP(8CwOflXG_=B_b$L5+|eR zjYCyjyktoj?nI_oQV8UT*opZDOanA*Kt^eJG@i)|Fi$)X#*FUdt+r488betSRJQan0ha^2j;=@!l_0rIg$yCw>)0ex`VI(8SNuRJ2lTCA5{ zL7)-}ME!*aMHJf5Rv0R@4sGFI1ZU1(ej|}p>_T=9QnwOY&)Ch)^SAXsdkdsN+E{?V zD4}ZYkFO$B2&N!T&5W}70~VRg+CDVH#20x*ei;!+)!1*o6c&UBE0je>O~A;4I}Iof zoCQ~kqY^{lO}wdvsQ#U(&-qU!u`P%z1-p-EB>0dOB+#u(Tl@$^BASgze}|x+yekgA z(7?f~M3OH6yB1;eI2;xRy^Oa}n0%ZaFnw_T9Yxv^Esm&(XZbLNaIR=80bnyRbcJ}n z?yJyMH-YSb3zqv1(e0JS^5=Rb>4zq2C@xGpFjVjRD=~B_iB0H`-J zFGVzq8c1KkL6A=1bSXyM@o3mFZB!Kkn{o7=IDPu)DX}jL$jv974H2uiaQ1b|J7o=C z#c?1Eatu%d-j2BKKJ&6uR~{QGw1NV%0s+BU50|J65H3#?yZhq3f`R{UURj)g>A^Zw zgSZPto#CR|k*7|r1|;uCmJ!JeS&Ia=DD8j|%rV{^v6=xVGrM=#UjEoN&;=%wo$67v z(?r|zbD!iP|K-@Ce<)<=RW$!_^T$9~G{I=t2sYJO5&zc*aQ`>&B1QA*Suxvi7VYH; z1MJ0Th|Q5GP2TjtO%0CLmiih8)I`{Rsdq9)epBiZihW2KYsNzSecB;DHLJaUzL_Ub z+fP%>bAmw`c~Nxs-u&F_z`=tq0>{NtqNMM&4@%9&1SX`5ouUHb z>JY`$8%IzffUdeo%^?5HyjoqKAGt437fJ(0ynlJ~$NR##nm2JLPMxx?sjjm2`T2#7 zr*v)QI~&<&b8j4ga(;i~+g$MYx^QL`r#KuNKM#ZKPWJ0Gq_WJ+XB+lNY?{@%aX-7T z!^~(D!OW+mKpp6M+}Z6w%*Bf@@201h6pCn1axD1b=^~O40n7#2q)-&=mIl=tpiD8W zdO`Hv!?ZLOc`8X!dCgl*HuD`yz418Du_Tn{`>G_BR3I2Xb;sd>cT`(yHQ703r$smO1}^gzH+L%eQR@?0J0v4MKK$A&$Jo@;FP-&+ z+2aG}-Sh)#J6&$8sCX97?|1YMse0+1iUd{CK?lqB-5R_7K?nlxGV`20F# z@~k{^&ep&{dqU%hrR>XE1#HJr9PDWahlgjCiD42!QfB1w zvSAiNNRaqO52bFFz`CZ-|%`nQ~WEg6Whwv96oIyp6&$MT{BKxO>8x zF&Tp&~4! ztNZI73V8W)zC~yM&6s_}h-E=@&&)G3Sd!(M2h-RiHqlRDlBxe*w(Z>cUf_y?geJ_9 z*oV1vC{{;z-L72a)~!);l?M-|JiX+&-ORzE56~teYir8F9!wF0R;yO6M!^(y()ZHN zd3bV~8cvcwkqHK>Ls>>unsn;Nr!VE zCnhIHvxCJ!ym#On^c!mT_R}e{XPnvtZu7doXb8fjkQhQj(2+w-Qt+)Gku@Icw?0qF zm|B=d?B2DjjbJRZ2-8CzHC3hMnPu(?iHS!ZI%sX&yct?ytlR%O3I%OdR055|N4M|X zd0SRlLSgxQ4Mh>d0e;wd3!Sx{bq`4bZ`+~6=DFugia&fX<7IVLy;n*rE-kfb)imyQM*dEA}OBPAcQPz}x7p?Z3h?6=>iyP{v@xtrg& z@#e#pKlckvSr~Tye5-?Ln^{avL$6%XZqud>YxTtX_3O{iRL6~#@2o982e`E)H8wR$ z5>P_$VA@);x1q7|1=we=F=NI^xoAxF`2OmfffkftY}k)D8vI#L8(WRpGJ8|VyqWXo zcLSaGv$3&h+`M@a)S5AJ{Bp{-D?xZBEEYxYKkjF&y7Jl~m3Rj&EEB$w2+I5fcSw1Y z7A<<|=_#>>;^GWEZ-j)7#ZSR~up4>lu6(;C)8Q!Iur7qPNOngX6_pIuZzUKh>d7*p zkGE`Te4uHQCfx@Q-i7Byb|Ik#Ymb_mTBGfWVUP`09$2G|)^!&sC<)a{ z;lS#c44Fb4qx%9PFi;kBet!N5vD#p&LFC<+wumK}gZ5$G$=}%P;;aGuJnuAMmZ8Ui zmaL|w_1DLb&NZEk%%_|oz@n2QHnP`Weeta6S(+UTAeLc zUhB#g*$4Vy@I;#^=OOKkZkM@-F)~N`G7Kc?9GlCz>@iu#ZM$@th-W6Ybxlo8u-@u6 z*>(17`0<%D73*S+VaA}-ptOsQxj{6NJcxC(=f!87YQM)cqR>;lL$lw0`;DfZwq3jW zPcUyc(E7?P3SZd}DBpMeuez7DAyJ$l5cl4_6+2p%H8v1>ryjps`Fs8PRVVquf&~l2 z2Vf1-8ZI3}Y-@gP4D}JxAoThOFBoV#?GBabu6Ug={DoIMT}$I9O=3$*SZ5i(`uk+t zS_S*`;M+@L20P_xTZjorkgp)xMbQfe@874ldT`pD>mEDB(%c^t+Zh>w zppLff+i!|wd9m2I{hhS)PnPYQ)LY!CX;(eUdq^)El8GuS=mep%%6{OStA+~~_Dp-S zY}lmUZN+0Xi-o;+(7fIQ2P$;;HpSjc;@UzYkEVkG5^^G2BPuFN;{I_W--9<_h(K%% zF~bne4(5OOkO5%ZXW*kxsYGOG-Lazy#`x99CJyQO&dx*b+_}SI!hwSaUYF><3EBn! z;}do0@f$jKPdn zD`FijK^A%mJnysZ&g<+`v}SZuRjt1#(;)$XM7QBnnl|inU9+^=_uE&?oT9@ZH{>}8j=81 zCJ!9zRW(?@yu92CXR`X7tL==;rQdMzi<=|Utj^3}QluYQIJ0eGJ6Jpf9CKj3pTW;E zGvPiffBeY8vJPeev)Q2uYYoLlh8~2aZ2|p_WE^QysZ?ebp>ID_3X}i>=wOOE zq^QlW2}p}5&_$907ZM+YB{6o0nFW86DxOdA?eJuM`}db77=8d24%GY9c-X-fzVWxy z4$#6TEfcS^n~_ODBQp`8L9{2Nw}C*+W*1tVZ6PgK($9vURC6%lVFBEeH!~4kDZ43l@&*> zTHKG)VAYGYd!cj0Bt^G=hwYn|;`AAPE{ADcd=D$(<=lU+GDJzC5$N;JKkIoBXV^;Q zlI9KT8)P#%nu^UYF3H~J)5te|ooR$B3q&Ox^EyI#qRr^=%m>zxYE(?%{b_(7uo2r} zIH9-DUAGCCDkAdVZW-I@-+!J%*PQQ+Q@yyD56Gb5jk$rKrC8RL&EWl{nk}^o+rkKR zU<9pU!!UP&@QGx>rfQeh6WV^|aV^W)v$unF7e$v(>$~j^D7~?QLJ~1JG?G3&aL%3h zco4c)ak&Q?T@Q8j=4WPXH-pS+xM3aDfM7r$weZX>x98uQuW>l%4IrCo1TL^6Ll1_` z+n;EYzvzz!4JZt5#k_LY6$D^k{qtw}w{N8aC33>Dmo!mOC`ksMYDHu^aQBkZHtpIa z#O+R5SPcc{Bt&YLDJTSmkRB!=mxV)C8GF|sq zx6pOB{PWE%wPxG@?aL11|L^@WP+qAIg@(LJL0lHIS=noG>wn%Xv&a9OFTH=Gu##|B z_a={ym^AKgxP1r)Yb5=}0};<9V|<`fCly}(E?l2^3!)%2z6Fcq)hh?k(mgVL=9@3o z4?#8^2U@?RKc{rj^cgcA;_mgD6|=<1%S(^!8G%bgC>UWB-&ny}-|+k*16FygjDgE6 zpaV`5d@179G$|#f0u>a8J1N1W3GiqXoMOnK?Z5%@^q+p!S{2 z%YePTzL!Oa(CkxPs3IOfNNo#1#C*`a{HVbne;fg3j+L7aeI+;VfseX1VBIY_P^A?4 zNDp4)1k4MpZg=dWAVRjcbb<0YLn9*>VbHWXmkZ8-4!mO%rGW{8wOzL{Y;0}KV@Ng? zr5P0|YM~mi7#0Xm(pEvyBKeidX$lTR{hCT!4m`O9zoEV6t2&NAP@8m;q3;<1XaQx3 zOJWKnV@W$F)QME|2nHumTQguJ z$DkXZ+w_C2qU%piAF1N{I%~gcN&Bz3Pe@_l-H%Y5pWu}^f@2CDEz$|bY@a-Pb`h2Z z;pIkri!HcJ*S72!A8IKfS(26l~kVDObkNSE!$NFOJWKm*My?Z0yOdjXZ1BRtA~SJRgP-siB8rIY zLdBI_xPaQg3-7nc$V;U|VHC@XGF;9zk>>oPM|(5yvVs~W+9})BisD^64V9`4A{7_0pE-yt&lv#MW>{I z`Tq`*%g6EK#&ts|gdc=x8sjEF9%LfNkf=~V$^Ar22Dy`UL9Cla+sC?=b;)sd-Mj7l z^=`l^=@HC9Sx=|Q2H`z9;^s|dYW8VIjvP5b?1B{GCRr8~6*)t&o=9&kKt$TfZp@|P z>38iJ&RiQ>Y%AHPkREr^C}pstTTo#h=efc8))T=OP+~B2FaNFj523iA57F;6bj|>= z!AYO8Xg88CoQyo>DHqYrWOdy`v!&k0dgrcxYP$CO=k6LBJ03rt33s#jb!B-W3y1Kv z0Y5&xPtuYY*CEx_)pGQJ>?x^fH*bD;d~%mrmz~ns!Her^TG&4JIt{Q{N5(d?*cRqY zWmZ?y$~aM_iwiBVy`thc${?O4;mib5?v@TIW$xk{_>V$q-n_si$U4$WCg&q@o0?Le znnu%cA2E+bS!M=CE8genP|r^?H*XE1@7cSzxC}r*)Vxm5bn6=T6Y96r8wF3a{AN|} zNF<3mdW%IIe$_eucS#U*{;SyjeZpM2RIIOiv^FvqWsOnI^QrxLf=#q3KL7C5tDUns zd`8=+Mh`#5X!CYJN^!CYFP}q)`dA*jyK%T2Q9-KEAaII*LzGxyz~Qw2%z0y1kg!z<#%w{~Q0_$P1|Y4rZR4rt zVq4ET6GRh{210|F8fmvsMrspQWY!t_E8>|vI5bwY(<4SIEpdBCX}X0H+PHD!N3eaH zPMx+!@~G^Nhd0)&lJ!a~ZM3RCdr3nJ6vWy>IO#E67A=IiU$AF=wDO_cD)Zs>+4+~l&i`p&e&(qw z16^7D@&@HEQXI5CO{`0%@=jq!|8u^q{vAFciDWHdDdEgm!MGhtIrJpr%9VX39OYpK z`&FwTaFOF8Xhc-VW|^Ady6Cszw(M)*iXFuze606kIB1$Aoe?-IYzYPz*mjVpRT!Q2 zqhIU8YbGQo4}rW8eN_VB>`irHIv}fTp`2IMbwtqd^&2)+9fN5RZHbh}I>r>TlLlIH zI@`BsZ_uGblQ}nlCn`)v#D(8%y{FE8cOF&4f~E*mst~VF<3-um1Vz-{XWg%KFl9i)$E6p59q$f8z#n z$#v`2(JBDuk0f zsj2x-eYDPCZI|_^$~$;Y*;;u`FIL|p8lwf)YGGNBqo&>vA&LxeAwuq)wZ~#fzfSjr zz<+d}f=4u38Z)}W{={%_lQ^$IxMVy=;S>G|+h15v94eIHC-kd|+Ipj|yXN2dgPx_k z@KyxH=EEnP%gN$Ey?bTugE?(Nzw%}MvvY6U6RnUmWgcriP>wS~AV@>KOoQIrud(2F zVczjw2=~bgQ(|nRb!R%~Uoi?*uTP!Bda#HpK~CWtvRrZlOR1oX0loppJL7Hs|_{+Cy^{OxRL^ju7f{>On<+Y3Y;$bHFtmNRYqsnp7Rak>S%&^f#{A4Gkk`$4gG`gYY%s z(7Y-$VBtDaQYmcMagHky`&q4pm^Rsg;n)E#x{Hev4+%CXG?lb7r!QR!VtfUvgoTH< zHV^?%^fxcWfRC#y^L?LS{SuD^@OL3?X(yx^4;Q`+5P(qd#|oaF9?w|U;->#V;P|a= z)vkmfD$Bu3VSSp4=Mb(>>{-|%*BV(^v=hI2^1{L9GiPo|TQnAcv&jtT&9;TevOr}g zNs0?kTS-nELy#%ly<^8HU@3t>6)0SCv-;CSR+LCp`Y1rq?9Qt6yGy5PKc*OoLUE+0 z780f*N$AS-S5@tWpcJwWReUpxkak5YNZnWdVi298)lFd`&bA)?a%7 z8_EXE;S9KhX+#h?#-pZsHA)v0#@JKY1#a-h)b?yPAwvmaZaO+T~4xnjI0LZUze%QzcvquGK5-Kmh#iZVfEj7Sbrc03Z?d)A@NRwj_7wpb8%9{BgTremArWS>sgyZB_Asi>3Gd4MMhI{ko&9C}m6ZHm zlj|5F$|D$LjPE$Z1=i5^Ok!k!XG^x!4u->d;S1tKFVwPA2E- z&XYYbffGMGkrNWBiRk&odyOa|RtYM?Ul76zeQ~?6t9`bu&nh!)-=@u&X+Qv&-Lr{K zmm!XES|zCs8y1A8(N&dqlN2?j>c@|^zsMDrQ<)XbPMtY(jGkkv>H`nod=cA9rEG4> zA6pH@Eq;CyUT9}I&-s32E#I_7wpeJ$CmI~?0GA>sg27`*e2`-`IYAPw7#hR_CTgpn zU(a9oqXJ{3CTATH%*@Z=+(adlqic|>S@i{?Sn|>U6AF7%!U@TTD;>#R5*q|_Bd*eN zG#$E4*5|$xmpr9M*b>moA#Nrg)3Er(fAE=3^T5EXz4 zINmrtFO*OihQ&%nLL+#EUfIn!exx6Ut2y+esTxL1?6|L?u?$HVp+VfnJyOJ5@a25Psoj4{T zE&K1kKQb#e%zw_=t|~s&n$j7E?j)dU<-1wDgV;9EVL1#SjCGGy=Mx8kWyUPEr0`6{ zoGGSP+Mpti9&JGPFO&yWrr~s2b9VKbC>I@e&|fGvj#VOdnX@iYRz{=vfC9udB|94L z2JelDlp~V#F~!d9rmK6PL{7*A6UZ?$c=b3tKn_$wa>ekQkEN+w&z>7GU%bCksDL3y zdS4<52Zx~3*2}RHj2Mi)Xt+qVvX%CP^$~9`Vqt68eJ+0D%$Z)phIN2bdQn@m3I<15 z)ydh99!;GwV>7TOc;7xn3z6U@NNQkQ##ZYIKZ3)T{bEnq`}tk&UPKY7O+guxk*<#9yxF>a zJI8zc<9Zt|@-~Ez2DzQng_<;LrV7nOY^ZoRaZqM3S!WTEU0@2q1-w6skVmu^TlP}9 z(2^LbS-ekU^r{@Zc$zc+-hkZQP z;FqltK?g!`fxr+k8o)~Mn_`lc_6LBf6y%X8tzc+zLCVRUi8e<-I5G-E5rCXzFAjk+ zidp_bUs^Yy3#D%ah6{Jft~v_{BAjm|dmrG)iHe(vlPkakLRt$cFULhO?lc0(iFo>C zL5^kJfbo9_F7TUGC0))IgX+bqGrmrCshu&2-bcx;A2trCln0b2d)i0?kQSK1AN zN3IF-DW)S&>OqWw%vC3r=L?_Ok^gePNI)k3{R9@zcxq8$jKR@z#&8x6IOw{2!i;j5 z4lKU?+s9D=^vx{!Z*b#s{O18TZ6!H~$({mJPW#{y*#=dCEWMu4rm%$^nL~8yRN{dKr!reNV`7b7;;N`TeV*HwJY00UXn=&XaB`HKAZ;)@Lij*Rrb`*WEPtTq`KO&X4?$jwIE-b4I zq0<bjWd)aPY))9C`ZiQPnd+DYsx(;kv!JG=llqh^!-A zrFnBhuF|+gi(`cLO4wG>d36twkr5IEV!&y*zkR$DPm4@b}lp1kBjQgfCC(Gen}kSVstn2OIC=^SK^HRk|ZupKfy ziP!@0AzIAf{SH*{p<-nwTZpZd5Wra-lZ3!7aEUECvY)bWOx`~5sGJ;i zK*})N~F!8oR)QL$kKSguxSaN#o_^x-;?@{qbH@Ql}N-Y0~iPi*SDR~5$d*d zvHZ&!uW)_9@i!21)Z$_a9nHQ>HsG9}`$BNjGayab5FZ4w-JIIy_MhKl_*nCH2Tq+k zCthldP5!R2);N?7P?mxnz11Pw7~Xj-d)7LZs1XO2P`b!3ouy0@p*Kbh_5jC!_kW%h zCFfkuL{5KaBrAn7DEDYJd=Z*Y^$=b>p;S5ual2QFh9*7S_|X$>x_9eVFBJEb2#&~D zzuX!56|~Dp%S?VWtLeZ*GqZ>jCmIWq{Um)fWe~bHBJ`7 zUsDG*4&n8sh)5HQC>kQblzT&)&V{BXCN|E&6 zWd)CjgJ;UWdnb>_V$enDx)tTcmacFdl5lE4_Ou% z$pHv>Mw(9N7CEknPrL(YX)NmaFge&FnresrI@#*KekK3Veqdh&HWohwY2FsXJveaj zYj8f`?a0G2cj1r1S@2A|s43_8Hha7i><5-uA783*6z(x@A_x&wt4Z!XkvgVR+UM9t z&1B;rMmvX!RrMYTet!d2XDNCs;Hd#}dk^fe{SRcm7$|MrIg1Apt4T-&aXW+N-9|@8 z23i35Omz#B$I1T35lis6oRvfVg>a$KEWA%sF$g$amJ>@6?9R_R!=Y?pku*QD*^cw% zAY!BG_!sfHaiFu&o}eIO7~m1B-s3vw$I|k{!bQ_>17ih`hRR7=5&F`favy(Yn^3XH z;UYH;)%O>IK@NC>{7ieeBt{OD7vy1Njs!#4C8Na#;goa((__8)6SmAj>*3isBe>ou zScF*RUpCSzO;UiMaimOW2vWsnSz9I2@b{4;*(;dr!@59kamb@=i!c;3i-SyzrdwH! z$JDBSZPf=k7m=Dfft`Y*+5%7mSd)`U zd36#AdTd38@K$6L5iczm+7c#G{QV~=Gb@oNFa{(+*0aG5jNpk-xA9l<#2+gv3Tg8? ztivl=U>!EjzPe(m$fF=F7~xUo?Qj)T!KGG4{mV2Q!@A)68mz{p*!g(#(F4L5@3AW| zV|aM#M>;aC%k1pqA;RyEKORmA#8DqSh4Um z-0&NC5G5H`mhn*Vvveqn4VIn)9EYqbFD8L%pB_wQN=XtSN2ZzB#mtgUZVF3V{^_%A z47mg!r*U}Z$GfV5V!{*Z7AG&of;Bu>mrO9ObS0vc<6LE}PorfHAv1GH47=xHoR1Hc zMXVJ|K3T;lnCvdiJuGPELQ0UOLL3RU0ojIvU(!QHPK2S($@)*1&GY;5AubdXgw*!b zqfDHM3>6!GGB4xLMl6?uItfy@=g&ta0zidz)^Y9m;l?**7JI_N!I?}CBxWQOi8OH| z{o_AFX4Rl7s2g#76Mg&i>4qoizaGSr2r-xP*C&W6R}MX4FUle}4$t=#q7u-!8t#qv zJ^@@er6C~_5?ju=6hk9pO#v%Nt7+rL^Qke}Wfy0?tM&P3M5p!&rzM*vGg+TKBl^5 zN2@P2B)C(O4iBxmZ+`(YNAGJ?U|Lql*Nbl#!xCj^CM)fxS3g__)uiI1uYq2mSCMKo zpy+dpmM!gRk>xIKt_iJ87DAV=e(x4~kn`vJFpf($`}$5>D%)n-geLXseX}m}?i**q zeobScBqb+Ln~*XR1~7n%OSQ1DuW$q0ZMNB_&q=v z;1Ej8u3abh?R71eXJpg{>*)orrZ%`MhH5a<)CungxVgENUE_-K-(WJm7aT$Eij$_) z5=}xj{}2!(N$Krk`XM^e$^|j7@>|Ha>uT6S(}yqz0P3 zc!d$_5D;!RIh?cvF*N;L7IE97ydduoB1}mRlb;Zy3}%$=@^hXYXvjd~mcg|2|+*zh1pj zyO;2#!_*f1dvfG&_39lS|1Te&ThC*ZPSO9<-nB)`n0URKd7J|hj zh@@Z>t_i|^&!;=v&dz#T_uo$c3m@P6eed^Pp3Cojp5K%1wUlvpjU71eI8*imn@=rm zUe*epkY6%4K92@BnVidBS$kv^dj-aoocjR%`GIf$$CJ;e#i|q>th6P}^o9oJS|Lp> zwiO3?vWAZ=8=k8-fp)dT5*%ZrCMDl9%gfwja}!D~e5SGU7xA!5Ml=l*lDPHYkA_6% zfARhkJL>jFGbuwQPcivGsHef?sV!L;EvYU;bg*kyR#qOI3y7QKV1yMY?aB%>E&N>9 zN&qcMuorVsl4vv2JQ3``Y>vipryL+~JQ#)4X$!Z~x?HfA=msE*9iX*6svGBXO*=r( zR{bil|FaiYwn3h%m8P6Sb2+p)psU(Jzf^&WHETL0oOKfqPNffHP8@zSvRsjeCw0o>gZ>WHV@o`L>hmg_evZ8EE znFrej7@QVRX9p~Z8gPF?O|S11b;JvX|6&XB;mQ`o0vG_Yajj>Y&GemM`{LaCFm)+2 z;DmKj8o)b_1WQ!W3%^=0G_Qp`+$CtS5vkW%=W!Qqay!QTI2!2($BtwV~ zd^IdZI?0cRYAUT7t4sPeCcF(}rmyR3*q9TR82xtB-D$LmRK=H=20*;A33g0U*j#I{ z*2Y2PP5&)C@KrSD_Q$96n3HEA*+nfrVVQ`=`<5d+;g9O;~kk{yWr`iYGd3Elka;sH)PwN;vQi z1aPYYKG_DB!To{7Q=jlDw`0`pyGs_`LOdoyg#ZG;%hi(}w_i`=4I%2pFh=FCNVP!C zl2{x{HfdgQNPHbz#L%>8YRapH(s0*0rnO)~SGwLvp;5Z9!a=#sQ=joFScE`U*!HMx z;m?^H#pO#r^hP9{XxO487a^#cOrMP{s4|sbIi`ox#U)LrpkU(-VG36R^OI$nvuNo)Vv-Cj(JxboqY_28P2O`N}Z zyba`oQ%Sc2OIkCwS>?g>=VGAqgm6I0dh_uCi){*!GdN1jR_}i;IT%FQ7rTYszAlj} z`Z>88o=Sg#HAq$Dpd2%x+=mm+$`kNyX=(%scOtFuJ2E{UXMDwoo-Dzqpj?kD6=bYI z`InP4>X`AyOn=Gkz&UVF7oh-*vzM2bi0&ThL8Q8I0iAFIk6`SAu5;lx@UL6VP|GE0 zsyw_MA(h35Np?v)cxj#9_K@DTzW@<{&W8*xhq3@^c+?IEd`=_epcdMSx&b*8i_O7- zv1uTaYuoCC-%o2R;v_NSNUBso0r~eOh;DgV=L1G|qc1cR7*n~ksqPSfE%Y|pMl>%t zu`8mHW7k?Eedb)VnP)n{lLnmN_^R~Twd@91Zn-NxfLDB1#~&%p^7|PU;fe8_rOlqQ zu{tGkx8QQY=A!ija>3JOWi?52`uRqrFgZhZB6o4e-io={gwPxyX_1gK7?`|T(62rA z*kh0$Hga2Pg1?dE^DGqVk`%K#bdW5E)YMd1Fi#>zw8HsZuQWgqH@2J^KZ&FF4`4wE zgLvdh)Re(Q(YQFey5=Ir^S4ZMT-k$a#viGPeuU0_peN6K1m;8zzgQGyrHhJ++T`r~ z1aolB*zy$ZD(r>1zojKh19)UQfepyBD)D-`{`?h>jZNh{-lK931d{S2>Bag2J!PKGGcsDJ78Vw)6A*`xG(NDMj0O__ICt*=y#gzI z#G)gIVH1&Hv{ z&_x)~tY||a!!_3PH_S+^M+g_E;})}NrlFKv;^A+p5#WX`Jm*WFg0KrEa24eJwUTo^bv|y&9N|i^+v63U;zzKfB zSXGl}=fTTPddMn!I39e}ox?6_ocgyb%q6$H*hS)h$k;8{Wbf2pc4>4hD-`g?eQXQ& zy+mt92jJv6DuAWGWb5f@Aj5(b228F|H_(R0gX#WZ#_Ewod{GFD^23J@Q~d$$J89xw zDmYMDPN&FEHT_wwY=UN;>HQ7TYjxlZpw+gwIg;-Rt3+9i55W$;6C=Pdn;H zYM<1J1cmqB3Y#Cc9FaLlqRAf-4};yH6S_`Y5nBH{`uBJT@jQdy+PnbC_=ruP4FfC zh7jJDEAkh$238{nd!%lxvJK{gz<*WZt&=+d7)XFox(rIWce}amDuls0A!ts#68T;O!Jf#<9l^IH^6dHx zKtkxW_?`7)26+H*$scFjU%P(K?8Es7Ym=B%GmS~QJ=Sd~)in-HTFRP1-1&>#2w>!+ z_26+f9ClHx4eisQjt^__0*m#KAeu8ABN52+4!5(xnNaJ~L$jCNb-T^m3RIJ)Au$_q zx~C=|1;gJ}ixZioJE_)65@q;jnnbsUL^w^EC>$UV!2>V>G&n6*!rv~&4DkskSdX)1 z~~#(Xmw^fet@>`Bi71~R;7>rQpbcCQ3*tQ2<_sH8&0&DC>9 zn`QyneGmaWhxTj$ujOlq00na7J8|w(4C9SlbK2nK*$WUTK`g{`sG)a7p^J2AgSVqg znyx8nKLwSsOQbm=8XODDDOsE!Ap;2_rW#9%Kori6lx3UZ06hQ~ZKF*Hc&0GfI128* z76oY`5-kUW1qZ&~#4wMH5ugV(NiSnf^O`c6YVyjvgm7j~OEUpy@)3na<;v5^t`Qrc zrW`PIsG1#nKzQL%TQ!V7A$C~l{-$3s({@l%FvQ62g@1>!g;nJQ=M&EvSwN&)B@I3{ z2CS*8;{*xOmIE{g$ZMttd=IeoYk*WJzlLz2-_SAAfK3xPc51JI7opIfs8Rw1MV{G5 zIxJgQX{Wx=N=yC|xSJfzR_%LXItn&l(=jY7)`=a2H4FsKP)^E?X>NeAHoe>=jho#$nxRrfB)9j-HXQeNYEvn_({Y-G}b@V(5JBPRj^=wfK!a@-GrER#xcrRDC) zhf^fm={EY)yTTcs&=STf3Fdo13_!p8w@J=eGSeKHbP`4}y_dzt;L~A;VVFvLpTexh zVlvU11YBZ6*xm{|S*bL$k?xi|Ov3iQ-(_6x%@2ve3#y@;$j$@ccyB34sCQqwoCttH zhj#;mqqzs#2I2M}y@{4ddqTPsLLs7XhmmK;KDcrW5EX=bUjo1u-}_%>XLGKXBu;NW z)_6}yV2p2tGsdMa5r|e0&$};yZ7PyUAsA%6`9N3kUF?&X6v@u}gFubW_4b4~A<--( zh8=o!BgC)?ZaQ9QXCpb+tF)(&`6>iy|uJ4!=}A2i|PJ`K#-PJ3BI81?dAuK@x7TRV0Na6kKqadR~A zzt;fok!IpOXrN69wPfBL+RkfHuzkY1qWeu=4vhO6X#mEQ{b1lR(tzsv%CV)4t^n&Y z@ZO4C=vu*;{~E(LM(avRHQ{`BMr24H_0 mx}S#bzk&1rZ);=Gdd;O{?mInR41y|WykGHqx$>nq|M+)Rsg8~S literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened.png b/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_first_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..470a876c8d819e15d0a33f05ad4f2c63ac8871b5 GIT binary patch literal 37887 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
rY9`0X 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 literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened (fluent.blue.light).png b/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..5de81bbb86cc90c8b85aba813890f35b323a53a7 GIT binary patch literal 44547 zcmeFac~s8(+xEZrW|LXQWX=?lCR8XxnJPm>+8IhJgi0uqnG`ZciHJ%eDpRH?Ns=Oj zOi3kEB~c{L>%8pmaNp~>*Zn+e{nqoxZ{61V`nGj-U7yeU^M0S_aUREUo^2XGc4VXa zs`Y>S?YBmwN10gu_FJuWzy0=ywNf4a#V|!Z_qX3x{WjWU=p@hI-(T~xzW-;<)v~YN zPFHlVx^`)JYrDN^jPtAgBRw5jwH^SjB;T$+P||TwlYl1EKlIJmpZP9)k$$@l>zWQz>darB z?f;bjldq?b9;)~!{+eR>_qUbucDMNFOS}EgOaHY3X{(wJ^KCnJ)~qfS6%~5@`sFRT zsLV26-!ghai-vV-{r>y!d(FGY^sB|cEl@AY3@tMLS=FR-=gyVizJ;mRmjyqso$zeI z`y~UdtgO~;*zhVpKlzNq5Z<9t_@P6qw{2^B+fi5Xve=$}YaY9dm^fw1#(;n(IXl+K z2m56gU(d{JBG0b6q_n&|x!A+~L{E9wL!N^=co?>qAFX_GD7(1SbCB&k#RtkWy|m+Z zdDQ8S@p-QL&Mq$3i#=X()H3;SGDkwOaFF_>u%YyMSuU;rwazW zdNQ%apH^1dLFOu3Mkp?PYctbw#yfsYr7|XeRAH_JlF9v zW{fj2sqGimXw>aF&>Uu?_dVRmJgVDWIBeO@(p53jL|DPQ@ zc8po~Y(dfOAl=HUszcGeUVYpws1(T62t#*FbSy;fIwnD4u5AC@fo@_y=?HEWs}j`t|DvW#70BZgalzm6~t!baZt`o0~h_ z4Kp<{F>!r+zh{4!M^{T${#;(aetqW`R|XHbux?%L;17@EHzp+w>)>5FbY0U|%k)=# z)ARB1v2{-IYkBG0+hgi}!_1ytTc|?~Co^-9c zjl1^l-5~z)?Y<|D99g$(SBsb%$EU`hFOJyf`T6e1sj>EdzI%8gd8XFE2`$z?dSrdT z`_t$;4OOnDyyugzUpKLtb;iccaKDME>D}8d{rQhgn>QcnH~CmgV`F2R@|#@(PAz<4 z#D48F_}iPqgK8@Ct5^2y+t=ys{iqhLTg!s#`c!+$wIn4asq~xMVr6xH$Exst{rZ)C zyjZd$B;@vkQDetCUR(2L*Y4dv@ph#d175ID!KJ0HBLX^P?A4xie(&JrU$*VtJ8B-A zZ*1hwqes<)gEAcXkL}yH^YkkmUK;Mzb!yD394g*Ec;jKHH{gZ0?vL+Zor>>;Pnt3% z`^t*ts;a7Qo?RT!pq0kVv>n|xcQihrJ?q9PxBL;Z>QNITeK&2gd;ci*NJK*~_v zCY-!Ljj2f+8nt~C@6=?;#r+{6?RaLZvWvS87_jHwJxiDVZQb1529@8|{al<~xAVFz z!U1R1%F0HUn{mttPB}Aq(xi1M_CqI5n`W_ON&miy)jG|4jD5Z5b(yCppE7#%=)A=3 zJ9Z?oRkF_8Y8q9(tmSxn@3p`_e<{_gcc|au#fy2oI|Bnpm`y&mn+>X?qvJf<%F0%= zb^m>h;vbuv@qhcrZj6q$y&Yn(h(}y#RMUdb$M}R zzwADf5hLPer8eePZrs}4n=R6yRY7o|3YC+qSFWDh=!C<({3NeJ51ov)>itfxVxV2kj+J#-e*Q#@BPImVtCC@D; zOi;dd?V234&)MV335c__RLBy-+%bfUMI-&)utY!#*DGQwX3H@<+>fcx3!+``8!!6%+&vs z&55JYW7v=N>eaJtba{H_%WG@XGBbAt={m}4@)~B773knKu z?;p75?c2Hb_V$F9{&(-*t**=u(6BkJbnJm&bhLw$(@wTQ!Bg+@jL&cGu4NfjNpD8 zd?Mi9{_|Dy^770N3<~=8ZP|@2ZByBTRWH{zu_g|4kU9F>_w6$qHA-p9n8<9m-1+CU zy(?Xfete$z@qB(`o1MFMnM|G9=C89ZcGrECojC^!FO}74)22=BKmWX|%3}v-D0Pl$ zy?);N%CdZC!zJ%;?jB=d(M?mcG2!~Tce%yAd-vWvzdSHH+C6jd*Q_)1rY!mRG;Oyk z@rAU)Ba@ihdWQGVY17(YTv`$l7PjX2aSiVkE9y0BG`qU8>{7+UzgXunW@d73hHq$i z%~?;!{q-pOS+f#s8gE?t>Xkh=wK2v1nuCtET~h5kAqL5NX84SbAG)@Va;sJw!qh!J zJlRbIzp%7qYj_?AozI|}4%yW>-lhd0j z-sQwE`CxM^Jw2h_u?M%le8??+c%p4EnLfYF^U>)!&EMsmbo%h*4A1fK-FFq-*mUnQ zQ#o~C9y?WKht^#0ee%+p=_iX02N)%NSfWc57_qfo+P;NX(g<}j_1V&ilO|m!f2Q5Kl?1NqN9G`()GfNRKfiF_!a~a(J9fyyBkuye z>NjXGdfd1kvV-4LEaQ$_yX&`8_e;u@Sj7JK`fw(PbK&y*QV@?qFFV4b3x~7)z$IEU zum1Mw((58e+RvpJme&P~7FuNUJ(Wh6H-Hji)I-f+C7 z<*@j@dsTwlbD}POyx<@B>eVZKw^y~N^y=R~(2=7ghhX>a-5~h8mzOWq^!WC9&e;8i zrWcodaE@B>{fliM&UA9#%ex~x77R-b=oq=Q z*x1<5B`-Q=^a%A%;^wo8J-T-7dTQ~z$>!aghlhv1E+{yZ^R6Dx`%TuN_fO9FS5|sz z>JgXq0M6%fGl*?%1}@PECT;UHv))zIu3J~v6`RTP_4biUO_~(3zwh6_ujO#Fsoty` zo9#e1?FKH{%;_fJWO;mi8bk>p;D}S+XTQGN8sfnr9z9XL^!~(gcjKML_3G8@=+UE{ z`t)gJ!9m&N>pQdL`DNCkxr)lo59eNN?cS?beLyx)GB_)1eDtwnRph&3V%dOa9?gT5 zyNuWt8aj?TpwEixvQ&?^_cyUFEi-<6eUWL__wqV+x|LPTy43tbU;~!ARp05i3%Yje z7CS$;|K#J=*VxKR_3OW~|GaGQl8fzu5(j`1?F~JKEGm6DRHIdcVAg8_kjXJ8W*Yf6 zd&jkzFWp1N_Bg>Qv%OjDaqo74`=PtV9+j1qO}Su#!iafn9mD-w1Npxx>8Yu8C0m!3 zmD%>(KX&B2C#UBm101T}9y_VtyLWy<(SiJmoEb&@Z{*1w_T8SHzrfe|y>&ZyuBz9( z`ziN=F~L+V%1xUNiNAVvh#r8_Jk+TD<>>)8@?5oC9%fcf~gk?u-0z?UY@zb74`@#t|oTX6XbuM{xcUY`ToInQ*?B%UcGw@8k#+OHqiN# z88NXtuY5?#{dnP>W=&P*$~ZuUg!tOEYah%m&Z0_~r%tN^ z!@|Nqcq7X5Hg=42NNe^np{Rr0<$rvkzP<{nEV#I08OJMw+tS?Q9~`Vo5hh2P`YSvl zVng8DckdpbTiCH@&z^eaWo3s5)6^51vp+sfxE*TT(Za!@YxC~royb4wQPI(1V0W;P z<>bjD=FaUUb*AG>Re#Eyzs@ZhGG}x_93|X>j*m z6XWV3C#PS|qO4YJ+jh>9SJ&%ldc1$6%}Mkte4VzFl*;abKZuNp*&6EeZ4(DA%wXxq zcKlNhJ-rtGDM^Vxe=M{yT=rRg{*%*rb4hJ=DAum6t-C28Ao6ipe(I*JTMOqtcIgkQ zp~N{tox8dHz(C-QJ6qFm@ms2F7B#(K*n}1_fw>olTw}(SklE>hhw3$H(xY$R0D_dyR?Zoy zn*<{@)tNJA1cO<6dg=oecJ10#`a*@c1qcKu4Ui*lCTn@>)V9x`J^rXwt7q@tv&e94 zi+if@19zQY4~vd|<(@FU#rn|Xxn~4|Z)no-PI}+O+t)WWCq72R#56vayCqDWJUli; zf9O9y$n_8qOw;k@)zyNF*R1)2VuP5Inwc2@%GUI#EVYXDufPO7VvCS zzey8`_Jh7YU1WRW{d<=kJ9j3iLe{is)oRCq17l~-?8L5hd3Is<{ri(_^4$}(RJTYb zI^xg_!`JO%buN+cWkJSagWmNb=E&6@yP+{-V0#+vjU9UW5{tftW+68aQooLKi+C z)P3B6&2o>tXTbh}OYP$yKcaM`y6T;mpFbQfgFmc{05k%%zWZw>lKhso0|b6i-JZ9J zcg(Oayd4CpZnY;pg-5^s+RUr=u~0FpJJZ&s7rZL+1TFh+-t6$|`X&PFL~Cnb`9P3G z8-C#HitbdstVi2Od{#>_OFT7Bg&sGec|@`&4gynn`^5yBs;r(d}_c+ATv>B*RlXB z14oX)lpRxU(c(J!{&sn$ab`HVZNm8RS3A~})@2XfB|;PMu0A~R*PJcs1&~|ro&UZU zn>dGh96qg`J;p_xKD~<_5_b4-thI(9ROkNlpIpBeZpMGYTg0-{xPX3wk~VCpqv@2i zuHNx!7XyhJ|Jw`d{UCB&$1C67_9nL771*`l*@e84l7MS74<0)7dqC>&P@@%(2rkq( z&T`+9O8Op(j`m|`)|75EmRQ=oXU|QmR{eH%!Lu>*z%(NcZ*Sl=2-5bIjkat1r%Q6@ zvkBvf=#Fh^=aMfE5^G}dynFT z2T#AeY&#^Af8Q&kIBf|D3CC^D)Tgk7R}x}w?qEV+ixw?TEh-u-3Cm`pjm?;4%M8Il zr}cOg#LN^}n~~Jd&S@~Dda4QA?mA!3b9L<*@02NsH*ne4kAmS00Hshv1mPP29R>VO zJ-47epGPc-2WLTJ3>iDNaWEW_`=Uit&&+MP?6Oc$vX%vsO{LOgZM7D^ox}^$xEbO& z1pzeDS|HezTlTS9%fGlB@cA|e*g>fQgg-ob)Tozmi*QhbFO}aJ$Y<&D^LIjx1Nadb zjp}ApYJXQ3fdW}$rd_OLbG^AA)w~ZI5-`>JUa<#Z?@XAe3YSc%`#{Ykf<8~()BEs^ zEpNzTPd&0NY)_EB>Tx`+TDs*E7&ubOZQ6{U=ku+&2gEAm?iNVwdyrXV*I`O`kF$YU zKDR!?YM0iB>D`yH;e0Gi6sNBBtXS()k6nD*`e!&MD`Hg6K6r7ZlTd%k%F1vNofb4~ z)Tj~ED4^lIis^(?)*Ao(S8I({3WnV6a+^{$&W<Y-Dq;igFcvrr?5!mPyA1#5Hfe_QBlnsHl3d zSkq4e$_}g7fAwV1#b=bDoahb#buC<6G{ASg3kc8V<_(F|5fRQKk|=GJPV#=7DwYG>01}2;{x_apbqjkKHp6&hm^yqF$w0XN zJlC1$ayg{F^TthRG07?gu3sleYhMPB>ExDQx&Rby|9#3o|KevAlvvYO?*B;u8qk6} zO3hbjML!2p7IF{sEcnmsjd+M;rj1-(=bEKLk6T$KJZ#9yoes}YioTGmtDY?w$vZS1(0#^?8Bfm4OTGN{xxeTj z!E(U^LNupc$O<=W&AaiTZU0T@knJEJqIB{I4@L2HQg7Kyimyw@{Lf4O|Gxsiwg^B0 z(%U#ID{Bbcy6lAW+HD%vffd^1?=MhxUWP)<^LsG2Aa`M6IC*W|#*NfBvQw^ai2{o8 z7N?efT>u)PuzYEw!;X5j;gh^+!XhVjrDD%7aOu8t)0;QWNL@F#cM(-a5xdSG;*dfa zDBkVoRtj18=A2-Kj5mf0s`l2JM%XS_ zNMPM});oOH_pwW1qFwxBSN(SI5U)H8|Lu4?=up6E|NHSy{jdbmb3%(h15(!l?i_Ru z{VOO@W?E{h}(W~*sS{svxf=P+Byn>6j z5#Bh@3OUp1PRKQsNy1}JXqdW!l6EHJz_I)tMw@}JSb-l1M>g?k z1Q$6v(dWncy#j>XUYYpBPzJ?ATC6)i{{Okcm!RxX@_hfE>B}}bQYT!$apT^h;dLdB z!P$^|>(#G6?5PTSkfJ9kC#SXP1m`WeA0jBeA-1k>5tPp&Ng4@LXEj8m5(Yl)_U*2e zou>Y+So&)qxksn$YEc1}^i)?rNalU|rdhLQ&S#x6JHQKiAv7i^BQ7^nRUH!#Iw++a z`TH^=$a48bMXBqBy*PIAieH%e>H9EXlTX;B{EUQN0Y(q8wpQUi$rJa`?sQ#W4vCA4 zBVSbCL&Y40#54DHa6kWj3odLL*>T0Lmc1vR0-qs%tC~*m-Lj=1tw*TC)m6XS!mTbJ zWp1ue{g7=ZO==;+BKhv-%~2u`mX((u?iVoVlM)if@W|}D_n=E}i74=M53oF9?EW!s zZrY(MYYg&J15&vb4RZ8^!z0R4jcc~gu;B!iT=}jEmbBgS`n3a4b%?#an!Mc$@A5{R z6e?0D(9z~Lx*Pmi_$He+Z908p?itPsv{+csV;BCTS(`SSnhvuaS0`pI++-GX(&UrV zw~UP(zKGg1J8|X8K+S1msG&aOo{OaBfDntHdF>COlHtkQ=sGrRJ79ss->M!g+l{U5 z&7cB;U(|d#C&e~bd&t1!O;c2dm+_fKhoho4i3;Oqyj?M^njG408M7Q zWO=-MxJ91C+4+Cz!LmmlJh+NVty%l_84w(AUL+a^Lmo+4BJ2mDi-!t&ZQj1U1qc1| z@~@%@YfOz>M}?s4cv}V4$CJV{3W88mb1TQ@-o>R0^?=Y+t)Va(QeywC`7!m9r#5Wu zX-6UqsNR(eqACnRbU_UssY|77X=zyr=O#5hVXWuG2v;84LE(!0TlX#GzEV?DH+CMr zq4a%xrakl-kj>BEf9e%)14zkPSqFy_&0fBHm%iSp>UHz!o_T*Z?r5|bur0!((75;- z(vsFU@B)!ywis0PS{R^p&S{SEgzD(%dqPxd&3mX3a|W`WSQ$)x7Z)GzRaLMjNZ(B@ zv1>qTvJ@+0#?=401)dqLcKwY4_p)nsJ8B_6oOO9T3~}g0)UjiSDXA!dY~pNA2&1um z`%p6lzXGg=eY1&s?7}BcvMLZxKzQODOAimdl#~>`f!>u`E349H`1rcJv<2X`TqMH*eii(Mg)i>F3RuTGHiA{&wR^WVMhhVvC`%f& z);t2|iGE|JrQ%7YKK0bh-?@A^a6Rs`sN>Jdx)dLiCQp_$D_Zcup=;H9_Oug;k3!O! zz@Xlz&+PmgTOfy7hS6}>$c(nmJVPu28^}dXJ9Zq07D-HZf(au(hDG<1>KxU)i=kmK zyqCOhXWY&qyLIcf{>;1_KE| zjo#V)t|jK6af2&b;PmO*qenT}JHD<-6HsUYR8r4rlxzyA^eGA1ch6`fqspCd3C|Lc+v|PKVQ<j#<>#|8hle{5=|8~n87Tm(tS z_#oEY9euA=9~%=dF9Tcz;UE+;oalta1LK;?F0d9!bIQ?DD#>5bTq*8$v=DGD$ZmkGlqbJiqoKJm7@MlW*YJ zP|>!pt%{i2cHyO=BSzE_q6YnACPgofEYm#Ifj-sx!N_6m;anE=K{6~cHzaNb(VU~B zg)9*f8jjUH965Ir4h0?==7sW<)-%RWnUebP*+oe-xTYvshYcUz#@J`j!pjw{fY&HT z7d(oSwsjs3TfDiQ!44c#F@b=4LI5{q7i*1!&U~-dYN=TY_RP5FLdw99MeyeiyP@In z=7;fp9SIBj!veAer&`mdtD>U^m0qn?{cgrjXgt?L0#87IdNaJs{zPREMdQK+L%kU* zDq0el^4%eLGGS%VRLJh^MmUSC3YtFr{EPL^z*e;3RpOrj1Gp}{)UOju}oy}d) zrCYZ@!5@U^+ryg-HX$kn^Bg%=!?68;LuWy4Lp}Zq1?u&uq_Ywvd89#1ErOIJEukMt z=9ZX@YMzczA7r$`5U(U+k1F|>y=tB4Gk9K3OgKj%ohnMKL$JVyre0pw4}x5xzt4|l zm`cnzRI0E&D9mi0t_bree}Tq7ipO07>OtQbeS6b|unmTp`TFK|@%G5FlVs=4nxQ#GRu^awNYZ2*d z3wkZ2r0BI_>ecPA&j`JmGktj@jtbBbC&DoCD#4;Y#)(j?PD7-OCfqAmlK`me*{hfR zm-mkyX3x&^FidCx$<2+0uK3dC*@eZ)`DI#*3e7)W`7ZfR95XPB08F$uarUsmMI;jy z8t`~JXmiNkYoSu-c#IB?A_hn_mW`o zwHyLZ%1?wQQ|fA|oZp2uO{{)=VR7$YMl*D0O0Tefux#AyFU+qEqXkI1>+<#Evq2c- z^xkD1szt`p^WU`TkVt3=?_w@G_XJ+xadQpFtTLxnhYnk*8!V?z9Zdm3RxTQbg`x0% z)Wp;Ca<&Ev<^BL<#a`;L;`0PekLpS{_VSkQYHDj7VF`$6K$I+9pObfiWb%>|;~<>QR1+@**o8$l16n_Cr|O*p)whsOO_nTcqR@?hc1d!g$_+iXcw{N}n_Hb6aHq$5puH44xAq$<$XA@Bi^k z{Euhi|EXsp+mibBW?I@I*uImAHNk`&{6p6zm&e3JkfLyPYL3KH7ryNCo1p;hjw?PZ zL+osBJ7DXJpEX}4^kL!0FPkQyn@YSI^Fkpf`}K))&y&a_B**}kSV~cSC9;Px~f}jZ#w9>bw-5{sYz0hO}?u>excL% zA3gGII)&u69>nCP-DFVdZ}<~tV))cMcI;Re%n^>r9L~5JBvTRkwj}4x1fHIbIC$_k z|CC|mQxL%GE8jmRJL`o-ojmD;Cz0%<2V}v%dG|Jio}>r|oxA2IbAY)=qoO)P;!~i- zLs!k6JJ&ht%9Rd~J3!kENI)Q~?O5tTH05FO6dTxW5^#DYG$W`}HQd8rPDwt>!lGc$ zwqK6j6A+b87w1f?#z60YP1G4_KuJkyNM!aQlo%_kDpWgs)cB z7Cf^i$pf=M;rSH$ea<~yQ-~&NI|lZJd>0lDak&~i}^+ydRw~hwt88ub?^r^2Qq<%$*I~lmdmCK4??(9@1^X!^Y5O zIsqm>1cTeZK4=)#lI?A_&{RMr?rVJOWMnZ$15s?>5HM^vv3MA-$Hm{cF@n=4C0`5f z1Paj$7u0zhsmyxxSkx~%I$HggdlCm22k;TFC@L!IG~frRKq{cod4_nfYK*_U{PRlD zuqM?%-<3c98mFBz^~IKHo9k`2z4sc9a+5)Nzat*ItS+>-H=R4pyla=7z$2Dh=X~7# zm+9L#_BYdtP3&6Rje0*Y_sY4iKfhM}?C>IWR=|&4>D$eoXZ8?3Gnh}%$opp(_ptl4 zL5Fg-z%!M7E-$OFuliH~Vs3vjCtcjlP%!xaZ&)V!tPszLU}}n!Ug+6d zHuG39N+0$rFJy^adDbv*UU}N=#Q~#5yT8(Ckky zd~rakt8T`|9odpWrQd&$7d8%f?kNQzlKSH-D+U6#tOfANEpoC-tGvZ4BGoEyPy5SS zLNvsP=jG{8tK#(&HkOVd9Vl8T9PO1g-ab_Yt))o-5FR!8gsM|CJk@dAgdLei-y4Qz zrt&ih`CA8KY$%w7IX4v}OQl57i_dQF)m{r9z?ztB<70>-y8;6(@y%d*5oEc$0v4Id zQCc71XmD-9Dd}KU*TB*^lgA@IR6I?)sg0Uq%eHK3uzzf|kFnD%X-6_O6=q{%yrTuo zWUO?l@VxjgD#gmG?=O(RT$39O*tT=$THluy%Y;UO^Lsf-k{TIkpjc-#20V4G1$X1C zH2vfrVj`y0#$%^YOhDPc5;yfH_?vhft2SrmuEzpURPKgzj<`+(&n%1&)>}IazJ*7_ z_2RRTO{)Fox?-x{2^&{p0C@?!E!hGW}HJ=y7WDLiyXK_^4%@!CZ2J8KdMNn zS;S;U(5Ql9qsiymFD`Ya7tmO)oK3K-;%)5Q2fZ{#26ULs!m?k+7Vu(4<&3cdy92_0v=xmX0i{knif;dIuccNy*0CB!Bc-~$p@<7NP9aNPAD{H(U-_1$O zherlP5QnU#-y*_1D2a?*jKc-9dOmjNf`@-C6f@1FRxMkm%sYAc2K@R>{JzeQPIVUO zMoFjpAa>SB*(l;c!}yIFVTTZNdVX%;#02)Ww2n#5jBo`b2G@QK21up9iwb8Md&a#m z(*_F?e=HH#A~FGH-sML%cw5k-F1t`nUMFnMyuqtXu(lRT+NY+<3C}&Yjy=f~q;VPBh#|ql8%7C2OHAXowmHYZaoIti{uw3HeKB zOluSj@M_fb%Z7ol*zPD93g$pZM_vO-05LAD2iVUHCN6#M)kBUWCtDn#JEvY;(r4+j z#jX3zy?-!FE|V6Fa*lfT={Xa7HB;u1@1{Qo(@A0xeF@!Y1MrKv_|Z_}D8R$BIDC(m z#ZGBBdgb3&2VNhF)3Y$hNg8=b-|VSbpz}_EZG^z)kcF#$uO&NfQcOajDp7Da=Kz6% z^s$X+1hK;pi5!LrHt^eCw8q;%e=QbSzMxHm9z8^eKLeCSl)>)33=7$bx0WD!LQRw3Z=VqPDov^3z z$sGU8qAsw3J0B;mG{$g#@!8f39;6CyqmD?3>fw{JNGsBfVGwG*i??aT#e)`(nwfFn zh*>YVen8C7X*S?A3`XkV_t!gy?Xr9uH#4~V6kE4Hfg+3N5It?(Qd+8PxVBK+qB$4~ z^T9M#=qM0Pvex)9Q4KO~%sxW=tA<-2+A~~p3W!mB513!0C!g@cx--q2Ov)z{1)&`b zb^}!K7wDt4SRI>81KeRvBO*M)3Kt0A;yO~UZm=8^l|BZfi{+_B%a(cNRay<#!ZHpU zHcZQ+`Qn;C|M;Cy?UUG1`I<0|b}At;ye&Wx7AmQz+)kwq0Ek`2t-P&nQ2UR{A3nTZ zZH=@sDK6W8eWUPQmV4S~>xlwPS1U3zdx~ZYPSO1;r{L}^DeMsK!*d@*hcx;>d!1bS z4Y_vXmdbe^R#BGgds#&v)YMc<`WZH6cdtoNmVYjGQ&!$(c}uIIX7~Q`SmI1-b0K4< z8JeuS)iC+xu-HR9f*r8fYjWP9yp}Eh`}^(q<~d&_qtF1B;m&}zV_55YYHPx|Iu>Zc zxdqeKn5@h0tftPpy$zVHQfK!jrQK~d3>^=_$vT^woZ=Z)%^cn{{J!Zp6D33E3vUea zmS0+3V$hT8VgGH{X*l-A0@X_o`v!JWzNXc%##wQFr@5|Wr%z;FTf5P7#qbW_SLE$# zUZ?huO5=4uLu-%cD(;)!(5gyos8wlf9n3aAV&u%pTk>7P)17Y3c>t}uDPL1lvo={bq|>T7!T9oIg)55e z&gE)b?Bw5my;V}j6cbs$p>k8aGtY>9N;#rf*3fZSFWBLVch*oFw$0ZyW-m|o!b_8N zJRo^{KDDV*Z4QL&pdVGNLZ_xfIuF2+tpu|G0X^(?r1wKejM zno-?lGpQ?g9wk3Jlz;7{=Bp$t`)yHkWftQf-$?p-OL4)YO`6KR{<^7_O0{_`O_giZ z6>n2t?nChpvWmQi<;v-Qzaz`pN;%I~djh-dny*riE_}-0-%?xiZ6zQG-LT{!Z#(U+ z;t@2J4#T!P(&s8(n$Miv|puAQZi0pD}TK|C?RG#YY2 zQO32n5Uz)%XEpR&55wQFZ>ww#KURy6sPs0Hbk=%nN8>va#|=)Q?Jp^3#!BW7yv8ih z{SAN%lk>gfQ*|{ce~uvK2)&M$a>}dRQQ$q62eD^Y((mp?gR6KIyxyHSSNSD(q4d6i z8)zSuA9(4i@A<7bQlKZ$wM*Bo>% z!M}DC3n4L(*;L(kD50czOf89QKaMg^ihi+8K$*OXiad~He=b+T`-de$Cy5$Jss=f{ z##CBBLGX$`5Ha9bQ*r>R@{kp~<4wm9)WPeuGQnLWdO^RUksvc4j1y;8pTEwE$bY5s zRfFLE^KZeu({++emYs_1O4mYn=|#qNhA<0g7C?MsW~03$ihWn&?jv zl@#MeAei?Q1&dJjcW%(xn~rVTlfG~1jRDqe?6AyNlu5FV2304B(0M6^ty;jkQc zCZT;VetZ8Ar=@m3mq$&N?J&z&v*n{~&h%=9E3q55)#>81v8X<+PUe`=2O{DR^l0tf zw2&^BLX&R+i)*jnxDozP`X4~tDZmgVcfP2srh;5NONgoxWWM?4t{h894n_6JPZE0 zJ~hAdO|6DrvSjw)xC${;9vRU-HdvlmR**@9TEH< zEwB`ZP%*WIta>303jlp=H#3e-yVyTayzSX~QBzKKsN1;ROLLdUaqA%labcZu$vwLz zTb%BsJPv=?&YgevC*nZFK|o3Jnbu40x~U@9*$V~>>nbrNq(MjT(%(Tcas{}fX=I?I zOVn}pNi2f82H3cWI_iey^yy<+n3n4|Y}m1955BMn?16d>76uWqFiA%T zS+c-9<@$ALFO`ZMidxJwcz(bUcI+e31R)T+sMQ8Oz=-dq<6qc5T4dziBFDBDx2r&g zo=uhSv{vN1ei9WcXAn`PX{-^>(Ah#EQYIbb-NYIQnNFkGbxa~s3ALi2EFjoBUmR3dngT2iN|?7Yy>7a_6Q> z<7wfbDEyTIdqJ0JXf({$({5PnUwK;H-n-jO89eeUUvDDUCUs1c@Yrp*$*-ip$Jf;;NDijDWN}6QjMkB@AJSXW ztGrXVrrH0^mkRv#iSXBBY{=D;uU&p2#8(aqh%AVdp3Yyue@9^%jd|7jMxjl9eRAu* z%GaP(5H9)g)(RwK_5>f_*5%s6@3o%+j(M z&4@Cvg={VT)U+f~TQT`&M{qD5oUa_fzR=^f5oJrWhBw(B9DEA_OXwO_L1b}`jaYZh z&AayNC#1P}bdMlp2+f47+lD(4^DSi6BYf6GJDE9i+U0Sx^p!Q`9iOlGI*t2@nsB%d z&qW*;IB&PoT>SFucOfmrf(otajsH_jUR26W5eSHMbMA)y8F`GQr8sQbf>?-thQsB0 z$yaV`jU159g7PePV*~pnjiLb;)?)x?SPO_R;sN(jY7izMM*HZI&%5Qzke?~jy}GeGx-?aqNo}7e z7F8m?156Qg;C?z!W#)yzHzBETx^5)E`*bE22^oPQRSV`whWQv(mkzf%?R*UeI%-Cu zk=T3W&KZ3p4UefEmTx}ye3?I~T?}%K+v#8ZnZ(GguivHqqi#-7)VTKuz~i2;{JEmn za)vZ0K^PO=Xqww0t!}^^alJr1l|cNen{Qa1xlwC3JdpPLi2B^>_C zn}JNC+221oBXlCJ8$m%4*n`<1uSl0T#Sf3z5(dFw{q4(#bi(L$Y1)LhK4r@V+&@0G zxfw5j7dS+$w~o2=X^dEa3dFHY&fx^LG2@7cuSWV=F+D`a2`m-ABECxv`i~ER73Es- z>A3cn+eT7yes+O5T5_D;{wi?e#AmKJRrn748Qq1yXeK)l2)F^eh6cb^Ch+u*Iltzh zye}djWftgkUdIrsR12KgEsn%YdMHsz|&c%Ur_KyQb| zNr@gO>I#0O#K@yZnU-@6qaLrr@Br#nQ=3%is(;EnL|=NEdi7>C7q&yc4byBmHN{WP^maPNYfIv3R|=b`oix1{qA^o991uGo-GUnUE1B$OX>C0!OXkinT4ETOS|ka0UtBnT zm3^SP=~cnrEN(JfGvdCgro+H`?!)7PRZz$#@#p$u=pjPX_`48nd>LX6sFLr&>vyJ% zjO-23_3MpNep8a}5+XaeQK|n23OD&WKHq)wbh9=>kK7~vR(S-#?ra6fv$8f>ripg&uo-m^* z7&`5OM`tK?q8e){Vk{U@6gAxk@XwMoSdBF=N}RraeCAClC5tPYkje)wDZgS_f)rx# zha!$q9F-*gJRsc$i2Qrv7Xy|=C)wE1$5#=y9+M6iPqo2J%(aEbA-QDJih@pc8-rb} zo^#eJp_`@gk~UhA6NCUq6^PCKAVwh|{VZ7CCWPlf-`~fx&4GDs1~1dIik@@`Vrrsx z!?iNNfeR4Fm>e2FnM{0u{)F#9@Xh4iqAbJfJ4JJ_#UDMBvg-D}0RaHDY#JF1mwwzF zj@9S5b*!TDz^IrVZPi<5v=P&;@f^m`aEW+a7=0|}mCJ+UQ+MJ`)n>_U&bqKS1PI+< zKNDUVKyu%!hoS<4A^Am>fS3M3r$C<(zAf(piv{=G504^?O`7zpjRZy}xcde>C^`O8 zsl$H)sQv+?LK-PZ3_&=16cmb}h5!1?3S$|qhRzyto5^0+#Df=3kXfvd-DF-GfoN!y z?qZ-z%!RkTSeEs_@JFeOZ6~1$#27ASNU5MHT;TKrWsxD&OPxwd!{dRu8r+U78N1%S zr-U$}`kkpT|1srj?!Ue+Sn#i}Q(XS}^(w`u8h$m`Tt%%TGxbEUo4%~L8-6t@@c{)9 zoIH_1jn}eunllJ)Hku!0*P~lf|KJXG_p)++dR|+qQ}On_jXrit)IUl(v8;*A4|0NCkX9`QitHzX zF2bHY@$$088mQIM!T_IM`efe8?V+KWAen$?3sU3w5W#RV6RzgRcd5GbT*YkN>mrIJ zdMPTJ%q$ecAjUp%6hkeGm;=m^{teN2gs>;BpTfY};9RbZEfU2ac}Nlo^9yz(9O^Q8 zhPj4A7{f@u6uYW8?Q#9bGT2F!FE)5fa1POJIl9p(0w44ucE7Ehh|IH?xhNG1Dheb1dJ6PAh9Hf=uK!8D^0sWp4-T)gjL{9XMi8+g`A#F(IuV! z5p#A>W>IBI&xEWrHRq%yM0e%`j-V2jI7`0FU2t)WgsVA^bf-J*-e9$6`{`{7csKT(PzL!5YBNuc~ z8%Awf8LupboiNKVfl`2&!s|fwDo$k|hKQn1^fCmqp(`kY-oO6^H?QE%Rx3)$G_OF8 zi6nb5i8oy9*D!e|v)aUAK$c4Vgxn{Pb{pe;K$E{GCzUj6QyaL z<`~7OF~l*EP!TzAfM>+*f{vYsD_6il>8&XNwM zZw*cWUVYX*AskQs*Y%>I$~hAY*d%s5FmjBCo8NCjN}DZOtzO*aHzxp=t> zh9iXB5`aWC8-zxPcjHp^r*t7ov4x9(2**XEi34RvJAKzxpukY>1e8BRi^DA1DqP!I zbS&`Ay4(-a8ARueG_f)2&l3h$j75@agbwRbE=^%VY%1Edcyz6hI&wc)OEK}>tEfGU zhIGRN%8jwX070(IM0J&d0-bbYHsqkRgAi9{^LS+F&LC!{(x^24F$ym_W)J-1RAW-^ zbO{)gL~SDTp``4ge3D_N*3^e$OJ|GALy`WA+q#+K8C=9{2{d*&kn9tCwvUGG`E8(L zvGaCV_NKGAn2A?#`=0dQNIsP20xU8wiCKbRf<1F<{^Rs63T*$ zANotV#q-pk#@dLW2HQ-tuf#gxEqI*bX@CU6kTL@1vkmgPFld}aX<{L>Ey}hSzyN|b zj4okzXh=^ynD||!oMMO-hV%|Tm3E}H>)c5_3PLfOp;S@lABEN<72mi=@DWo6GHp9* ziZgQ`oXY(m^c-w%i+vd*X6H;>+Mc0LDWCAwxl;9u;S5b+s~jDs2QKOb&J)|0K(kYJ z!=;0OAHAM-u{g8b+Ak9W!pHh|M?auybM(dDUDM&i7Ko0FEM5NV0sU^o8o zh(@TQVr`Idgi_q@KEZ>fYNEpPr>}%UPTo)Ytr*QJjgx`YboNqO5SGvnw=)F0^-h84(QNEs(J@`q}C$113yInmkS~=31K%>X0d@KteLgM zbh&~(lVGZ_0f{M}2P9s=^cgit#Ff-E*}!y7Nj5?LBcVzxk(ST&{oFTNo}wHZB1p1z zUs&bGE@Jpm@Llp{ID({`$=%QFE{U2f)=jejhLHm1qIN7U{&|H-aw>VXC%(_u6N&!Nv) ztW_(&=e{@!jkCLDt5)~eiM{5MA^5Z|>Qr;&6?+`C)(G`Vak(ED0y$CM6I2GiZ|3p9 zYRZJEY{jA2!t`7oZSw8_Nklr{1gAt4RnIQbSFdwzy?W(~%>azy3w` zbDa5v4J>)>Y&~W@_fTgPV<(OeYeaoG=?hh%_)O6p*x?LtBn24+5m4w_xn(tF8k3~& z-c`pY$u^WY5`JghmU0bfb;)6zWNVRf;2loMv@c3V%k3GC`IE3ApgB$|tXNj>)At|9 zQ=Rnmc5$erze45(Bj+Av^;{#cDa6V)67$Oi^k?CQh7%si4bmnp&B;-KfVZRMnP7n(i&iIy}9>&p^`)a@EOO`=QhK_pn#g=z(`?oI~qh5wbD@yCMz8j zDiL`+!IsKH7-aFLW^s#^EcPj^AX4S`dP42u6fHI42^&ebmJ>KMPKT*_F-gW;{$c|r zyCy0Zr{png|WsuVWJDzew zRXtzPsioxx$b?5MZC$Xnz>oSXHzQ) ztYPY|%=VSBva}M3+>5Je^X7(P9wg87y;S-K6UkG>zb9S8Bw@C_jN5|CaWfQO57XqZ zKc?iDWifI~u7$KFR2;AQRh?x7(b%oQXwN+OR21r+`}WD`rUG|29kRSo(=>R^ob&K_ z8#b2O-|13^hX(=7)NF%^M9f({V0Pn`pEb)7_k1%P4`boIWuA>)Ql?pz(?d#$IgXMA ze(FEp>v)bZPD6WGAF!%)Qn9i;`D=1&cp$WyA{LX~=>b9a5JC{3C_^q*w&WFjbPxcP zSFzwU+Gdn6Zd|&rv9`iRVPNe9_7hVaFxDHlDU8z}>F{-Me3L%Q?*$;Ly(;sR5qf|I z;eP(*5Vl}^yFTL~D2Y%)C&1bmyP_@ z9C(mM1Z-%^E&h2kByLw~I5+|b1gR~NBf+I>C1CC{9N1rTl_XDY1g2g|gO5s~CEy z(|0bm0r2pe>0Sjbg}-Irl2~|NWnl4Hl8ks0*n#o3w&twC8&C=I?!;o+?+8f+;EGoe z21V375rhS3DY1h>MzBy~$%~L_W)ztTAI|2MF1svj8=nRno{=UCOqZl!Pz{()>K6I6 z2=|XF_sE8akv2x~k~Bn^4=TIfT)Mrb=4VN?C|{`Hu3@Y9qClAg(rpP9B!)tF#D-U{ z`eM`&?`EJ_D4AeS!7W1(;RU?W_(2Es&I~7%38e<9NVpT;Puedv2s+)s=oC}hP=Z{A zwBrEjiu`)VbfSL4fbOP=OHr5czQXmv#!J0MpG=CL#aLYW+wm|1IK|29%FO7<0)N9y2G*6>JEn0z8A*_X*hzzCUewo|$bLFzK(nv){~Ub*$_;v>fl zN>uN`#l*wp^c8{zPGC5>S;!R<0UYHT@m$K>IWfAjV& zC7|_OyhP+!+wOqmu^fDBCiKDR42v=z)2ZoIT$YSq6GwxP!!i&#`?am`Lkc@B&u-Yi z{fEg9qhBTge15`7{!`AyB*iF#Zs1e-#2*GNTeJ|%`kdgs5u5B(6n{~G&j}XCidMtF zZ7azeEZ>H-rBxjJfH3((It_td!u)3HN6UyZ&E%X*iC+AY=}$mI@)c^#O&Txqtb`1o?#^ zW4rT&h1)a|(=@&Gy`rbacc-Jehzhy~bWiySLJCM-refb2fuV!(4_%K^8c5p=(02Q- zUDv6cB~m4ZLjs5n%Ei3(KBW*y?lUt-rb*An$@|iqA8W};uPqr6zP}72O4=K-^A=@G z=}wB07Fri7DnA>Flm)kq5S zklQd+Ui7QWoP0J?k_C`mdO_!M$(T7xsIb* zfR571&@gx>p<4m90R=KN1kP1p2x}C{(uk1?!im~o&XdzU9ibZ;Bq4qvw5m#G77Znr#7a=7WpMkRJtL7!nCxAPoY9fmaW=kjlAI7197l0{ zkXM)oAp#1@3&fC?%=tYB_@##{mJ4);hmskpz@(7~*;1?yg}Y*e_F7KA_-ghq6rp}n zHv)Jhl$Ss~UnQAXLqVuqY#G!=x ztB~)T|JoPw>kUMk-CgkdbyIqM2w1c|){;pqKoc1lLLSNI#~G(0zZeK(vl%Uni8bGP zQ+l(jgw3J=SUX!tR-`AWLN3anB~XvVDb{&*3_?sC=5NVxJb+We8UhP|N@FPmVnvpq zO~p?32^$;yHA`>~+{x8ANN7qGE+`^XM?2z-$M1?i6& zLuU_rwl=e1&M1a}d9_V<` z*H>u`=NN*a>rE8yGS5@|f{##2)rmA_w&QW;If&-Qf$(I9M;+yAs{=90mHv#a+he>{ zE2W>Q_}B{8H0af--XE*&Bl`6n<6o$!Icq_`qxXA%>|*g)=f;Hi9rw-KPt3k?S1bKi znMtesOZU6JJvzs5*7;opxenjX4T?(Bu|0o&T0-3OqN>p4V?&bj9@$$&mHb#?B0(LVz3o^EJApP#dKYdx)3-4l*`%=y(is(Q*`(#1MrJbyGz6Ep3Z8t;Z z%hIC&=6y$l?o4c{!)HkoBLUX!AJ?M=-;|(4wI>~6$sKF>bv)7+Q3;dUl!%3xF{czD z8INTYR#LW*2<6(0ULL@^b*6}>%Th>l$V_og${@bJR7tG3fJN0s3AWWusR_ioqX*?S zin=;sFFzy6cNX=Cbzn;PDaIz{`1|_a+OAu(y_jzz*n`D?gpUkz81$w1 zWgzIJWfpXA()EU>B)xaUaN=w@fe=JwJGz~(@2DZSGBSjti-3U@IYuM^`RzR?L7{S* zp^yWlqJmB17Yt>{uz$ujNym|c!^@?j3G-_%cJ-WilxAz{dRXvmI2XnsRB2L&%a|Ye zy(Bd5$avP|Q85d692wR}1|9NiO?m?e z?NM}u(i6p!^ z=AJE!pWin3Z0!8D#_4f9a=z4Pp!h32?r3zhnvqclHe*#HV{ClcK0H{3qh9fsLd5k^ zsJI*KUOK7NFADd2lc56-Bt8{zh3g6^D8}9_2=!gVcId1N{-0(3QUc}a5 ztc^=9*75pM_JK z(lPgJ!qfljTe_J^!;lU>9lTTA{Py(B)ht#BDyAjw%oHiNFpzv&@H>D=hMGI0f` zKBq;xv6(g?c^RWD5dR*cuLumJw$v1+%0t17UMtP^)FZ>248G3v710k_0Wqk+R{Vy) zn8ATk7YW}Q}I+PPg70-k+4eL{@&Y#y80|zNffAQNE^iw^>2qsg+R`i1x;o7P}UeZt>>iwyn zIK-h5*xI(5vg<9t$GVurFu|;ypDR{435K~ZYFZ^q|F3lJ%d{{V&CZ(dz_0s)TbKDc z01_F`0*NUSyhi$~@3iw(R(Ts$%b*~*XAr|oA&zk}qP)zU+RBINRpNw$wEsHjXLb2$ z;4{uSnXVx7Dls=QNHV2_f>G3*8EBXC0f^saB9oCvpxN8t+2i`bHchcKBWKI#B1WuB z5CTlaBBl}gjYlvh@4oM#qrt61D3q+t*Wh?oG|ZZzqLi`0g@m}5;+OMKxdqIK4?%vXnE*abfC$YK`;phP*&NJ)khbby zotA$jLPX1N2$GqDjHdE^!F+{b=#ZuSa-Vl_05B4NCbEPinSd8u#5mC}VbguM$Il;f z_aJKQ3=SSM5yIvm82}U0?}==QAmKZpn1xK3#IYB{1-vEggH1`wA&MNqFT#>RfO;*l zEY4s#1d20etB}%Kwo)Z!$yUb5iL#-pcwe|aE?%@o3taFFSQs@Cn|M!lncmU=)!w;> zRas|y9F#B<5_L)gOH9;CMnw^?DUOz)q9@6aR1^gj4N+{oByMRqim7 z5c1NAR^Xv}`Z5iPgm96{vI8c-_ zNQ`A}qK}iH#d#GjF)AYP;i7;Vv@;Y>gqY+Q2>IkQ@4vWg9Pp$hv;ki4t2RMx_DD_3$&Lrb!3`ux$7?&^v@4 zsZmcZ&@cN3xg6f3C(;?KX+TB{8v<)O?ge;O;_YL10_NZ9#&GW!VOTqpvw1R89CcaxTj~&q=w?4XQYPm>1>Lt@uh3l(bP~r zrMTi>VGwuhrhyb|zxd`~@ueI)yzs&nLR281kPQapV-PR+HleO)$;>)#tfioT59yZR z-(-%=?rdjVj%-X^JT_s>Ikqk*$m$P=(;2DmNAgj0jxOMfGbNL_lwUV8gz!knX>m*X zT^cwPgedaOtope4`b_7|o|}g8jczUOC|A+HpYxbFos0i68|7MlUwrdjbs{Wg=ypwI z@_6edH4eX`bN2IIUPUuU@L-4sgfatn_2K$WXQ*Qw2VExiYRXi29%Cr`uDLOMVNt)p zt49~n*wZ0h2LWfYp5xSb%}5d{DOJ`aqMGa}-p%l;}0HQYQq!$94u zh)Z|D5{d741t4Cg_{+Dx-RYi+=9xGnK>WgO3G9Ufpa!&?QZV-W5RMZiqowDD%YKbI zfs5^+9YSvN~&x(YV>h^l5CNh@8_g% z#nn>o3dd;=04WVK&#>dFxJ60Ufg6i5>#k5^(2ABiu2C_$au*s3NOeLP)iduAzl+9# z>CO}zoddkQK%EWG@01E_ZB;_;Rg&BSios-zvrgNXX(8y>jfdb4yEw}+0yjtrJZ9^t zEGZzKW7gTTJK!;Zt*coxBl8q^sv@uclp|t?PbOml$IQy^rcQ5R6AL^9)PNcbF9FO@ zjRrI>j6|Y((c$uL13DxT!Y!h%+J=6Bz!g%_t-F&Ox|8w1d}7Mh5b0?cWPoDmw3CC) za2zstu&TXnl|$K$-BlAf41tH&g1tUZW?0QQImK^}}8 zQ)_MIGrVEFwILfMw1g8RQDFoGrrdbW|HWo4ta3fjy;9M0KK%Jp>f6{G}YlNM%WuoOGF# zv&Q^|VF%DeyxF{+4q&-MIw6|+GD1))Jy5nrtF?JoByv<-IxL}Y4AzMWLO|8w>8E3K zaP^Xx@r6bcl=B98h~{~WC?c&#B#nWL__1ym#vCJnR?aEz1^C-qPJ{>&b9rX|cW&x{ zBu(xA^7S3S-6~K3bz+7#Y=FlkNndI1)&kFC_Cx48z@ydEPhx9RV3hYGLF-V$`5o zHNhgslG3huS4nCdzX7_XXbPL8E3)A+iWVgR08PlujV~orO>#L)kqkSH_QvjaRxYfG z0?Vai=?T(_X9+#b;A@|uel28~g$Y#FQ|)?nBkveDGL?!YMJy-i+W?^-rojogVhX1y zs~~ExYoSJ{fD0&rYo6XjJ-T||ajdD{6EvHghx^D^UQu^Q^}2&Rq)zc1V~J&J?XZf@wt9!>JxkzFyK@zxC`GLZFE4aBU-2v_CLy$g`K6j*2l0Nz<2n#!A|BSaW9L?D~9b)h=Rwu_0 z3v(vuf+~Ij-d6S-yj{)zD7F&vCHE3a;V3lE)y@vAtJ7h#TKvj2hJ`kTZF>ye6zzN- z9&FzYNgc^q8g~scGr4SZyka~h$n$+467mq!!a~(TS`jPeg&yg*H!Dp&C$;kO%Rq(l@3eOOpTTs znNHHllDzB0T)>RBPv;pPR&w>mp>M17H zZ9J*lIQ$wnK&>=fZ7wgAhc#6gL;xVAC*lPuQz4fxS_$^*_*s(DNC&c)B(f8?g*KJ8 zTp1Uqh!5^{CF;+=R`>*36mst731fF( zF>(~toYpbYsMEnndgFY1r-Fb>d@%WIM+riuQ;^~c*e7h7kky^l#Wkecq$(hu!h}g9 zWQ3oEDwI^RNGg(rk_;W1zmuR6xJ!tUV|EK_=b$G`q%nlQk@rDjqAhis^fDyS3{RuC zraM}kq%HUczLf>22g`Q{)ukCGh2}($BEo?-iq6s5=nqK#Edy0%1plF5p?|?5@b&k9 zCxOR7VGgOu8f+s6KHjY*YzIKc^C_M@xxmAe8j7z*d;7`$Pa0pY4F-edlmC;5dxCyd zP7Jm%I-*#n%45Pyq94T;iKdEh)Mu^({vfs;UylU`jwNP++6vJ1PPKM0RdmWDvB_CJ zS%?=XO;(DC#}aE&22jG1><95?S-i@8Lhs=$)XU-Z%p%pq0ZE$g_^sI@b@3Na=)kj- z!K}g0%b+B0%2aci(Mp}LVmGwso#NM7xlP+kPIb5T9qeii2Bt`-n|;Z}Av;m42DsQ0h zp-u)U&nMSqbU9($G<2~%imF){vir&Zaww~lzQaY>;eW!`)wur>p2aWbqWm*&RMF}+ zfB(-__640#!`&f{M{3vuP)*f)NH^izsCf)Hp`c~cROD7$L+68uSU!;h%Z|(~UQ61# z2a_)BPL2(bld1_EWg&pS08fE5sY)vI5r{__p~4eDudBlQRA2&^aT0$eLrN;vXstxN zu7lLZ2tZ@N^;ybn9Y~3Ah3tiJ$o504F%2fW+Kw=wH9WtB0g%$9(BOlDL#{KabF#-Z z?93A^WwinV;t?ZN4R?Bxc0`wMD`6enbYB5Ea?C)KIhiC0te!-;*-=X2eWpCaHegr> z3d_bp+9ZuM9=J!@eCn4#6Y7fGNMc^8tonvRMD`>DQ1l6w5H6hXZ-f9@{%c4j_+m@+ z3X{9OP3ZgbQ_)S0A29L#o z#{I!=pmcLH4MtT^qQY<4`cG$Etw$7DLaf?N!Q*c10K54lLA45zO$^3F%J4Vh`GL$c z`W?F)#zfu>CFYVMbInpoDh9DEF160G@UvCRZ^hD{{j9iE{~ens%k@o2Bo(-p358216i9PxRQCm9@sL_W=xZv7WLbPN45{)62=mDM^PG7q=UC} zhX9kpWEf1b5`Jb0ngXy7z+hpKP;n)^mfSnTPAfI=v1?MvBaWBk%rX&6VJ8CO7RABd zp}vUZj$+(&ymM7p)DUPQwK@rhL%qvNzm~9$blQEgDX!Nd4+Wsl2aS(Ab>q!&sEieY z5QHfpOT@R2KK2+4cqO3PD!ZP$1eLnyo?C(!#xqLS&u8STuZotS<$+mHIU=lA>A_Nc zm?H{hhdpSX(dPjI@=vA9m<1H|Q1 z28VQ-#Fp+?r`N_afEIwjubu#laUGCR{kmM;XXv%Ufgp@1tP2hV^bLs!USyQWXG=#F zJ5h8!JPkHP5Cu1?3L5eXU5x5etuzsX*TS~Y52t~{rN%)uQ;cnm19V``5(p35Yi+Q~ z44HRMsaI2qdAr?~75m(d6`Z^hYNnh6qmt>EXAq`BHR{m~5*e;2TmS$?KrRpT;=l8MaCzWw<$RVJ$^(Gpz@^;7(M4YL6p5juoH%LgFrmgToze*} z=xV4=1*Tdg3#E+=HBclZ2^|rrkViFU>Y;kp3fvMnI=Dzi;~S_;`$K0$Rv zOh~!zigTbyn$IPhPIM=$bL~C9fIvJI()u}cJr%WDtf(lQhmUcbcnFlk0pN=VUnK;u zm&+j}`E#fi>YMh)#m_)NBtxsx#vQluqSV%e+6Z&fNU(As6#9vBq-`VA5kmpZC^N z2|Z8c6dnJMc8XR)5~vRcjFjUrNk9_Qt9iCOHqN#+@4oxr2^=Obyzp2$SV9h>WHhCc zb2m0?SRD^Y%cT&0-e9PAv-4g@eNqsGihYK!UeYibxoCy-bWU{U0x zb^gjzVE=R!`q z;p301cneNCg|?ni|L8kKG{+!PjE7WPt2Wf7v1I4y;2fR095zccN5`dFhi6!aUTrL3 z44w`yjI^u-7xpJtA{8{s+&{qO71@i@hbC0~MG+XN=^3s$rQyqXvbJ0#L&Z{fpf5*} z)OK99d^yd*{#1%jXyV;l9ZPYQ-S@!F(0s6wSOL-8!8wHonHO~JxqXP+eYrB0LOFzZ z!6IURptK_B3!Nzf&~1cF=Cm;#@c~&R_HsW*Fn~F*uyWP~`(tqCFp`2_$XQ5C!54r9 zp7P@a4$}ikd zN0xJ+UTcC)C?@2&<1D6nu_*F_l2D2XZY@)oEBC6aMi?UiJ~sql+pR|96);9o&e#+gv*JM|mTbk%E-7BxFm0Ebu1bAS$sW-HfuqWZIhGNWI)bp{ zDnN=9AT2#_JQV>{oX7ju@wJ%R(?7k@&f+-%g>e>`i2vYFf?6@Je8KP529v}JPkZWN zz>NQQ{?hV7Sg`)^S4l7%9lnqkVH@G~!LU3MmY)(V-&La1s_6xIsQ7T)y`{@!G8H^E zmj|b+Bhnd*5h_fA-G`gLi0wZS$jW`%dC3dLHV?qne{%aQ*Uk3a0eX#$iwJ(vVBLuODwYY)n(M@4@)m~8clVE6Q z-f?$$$++iy>TJiiXN__fh|UCC(Vf9f`1iN8OdStTdY*u&yLh0JM2Le3pf79*2H5}8!B1m2)*as&(_fnt9C z5QJ-S7GVdNrV{Q^yfXss5YMNYIT#D=h-Qg1P{EZ13(D(@ILyG}OTu@PU_~?VEDb>C z;y3MIr|MCT1nCsyy$UB&L`t=5luaeOED|#mEQ)Zo4oa@cryGGguw?1dqsn>!2Yie> zAZP^h0DwW1uRJg7A1yQzMN-0mz*RmPx)lCJ9YRBB0j{=HxeZY~;W5y;{0cFQI7o!w zUFcHW_ug$^l?)DhzmGROILLUD=*tM+1!%)V15kwn>u~C-GO-1G?ZT7r_k_uT%eP0a zGo4(EPA@SVFu59vvp3#sDijR#MW}<4G>FD+fm0>siTg-UMZtogP3k5dvjB!WqqA5I zPN1x!^@cURB3T&RPKKg5d=_)&XM?ansFOa$XUW~6G0RMDP1lAut#mtuu(a{+CjKnP zYU1#OGt$F=k*fv`l)g$bP=!F06_6PpppaM9I2QP^4f%19LzI{8DCOa>kjo_n6i|Hf z3zUgJOOlJ4ZX)%$2+V2EGihIwgb)E&<(Z^OE60+oQbnf9xbIw?xUzh#-c2H@Ksk~r z@cD||fO!EKFZYpte$gQtu-cB47L9<9$I5`f$M%UBXW@I-KF>)IehvpDVFaF(@|Hxp zcFjK$PAwrD)H#(hq&$?B951G3le8Pc*h*Bhxpb+) zx``Ru!tJ1vPV$FrIeU^pMuq1PFE3{lC0Gs>V_mbhutu3?lV}it1aUVhZ9(l-E$HFS zf>5Y(*pI9R$AK@1`>b$Hn5!{ioT|Egh~B>vJaqsbR|09glbC&A+m0hS96%$3uoYt3 zKKWz@E7wrGFtXq7NcJxd{DNcIH29ZK!XZ>ExCpPn4QAqoza(p%${@-Wk;;&2Mva3c zRY$G2EUtX-{p?)}3Mzz5B-)S-EL-<$>K{>`DW7t>vz;T4 zQELN2oHmv71WIFV!=Fv{-S6{A*XOOQ?7EAFv2cFb<3&~e9|xM#3ad&xKKX|UTO1q) z{_gj|(|-TN@9HgEWZk%hS5oZDHcpMl2exiu=Y4f^*%zZ;cWttK`;@@VOFaJIdD^zY zpk{k!2JV?zd-mk$n(>EQzvGslKeXcVg*)3jm0Y>vTspt7x`O0Vzm5Q zn@^f`pZ?_(7w=ET77PvTy3eOzFCW>a^x*~H-L1BK4Amo5zOIBq8bz)iVGF(;UHNw7 z2Vd1-Y=Q@om=tFy`{9Cj0t=30wOl;zv`|V?yGd)+-?_zCTuNWI{EPSGP zuh?zfcR|UyPCcD2!8>=c?)f->8}Q*+7w^fot5U7I?8~;<7RqnJ$pN)|`sot+092TV z&zP|)Dk|z=e#HICgq1GdVePt85ki)}QdL-ZP7!z?&7D0XhkAPG)Aa4UV{#+s&^^|< z9w)6s;v0GuaJdXocPa=Ai`hhahq}e7v5HTf=N8(=JNABe&j7ns_72W@#_0C!(IfN7 z5ji(;8jSUkZ$xgiDemE%e7fA#RZWSePI%%L%HdCQh9w}oDsG&MdoB;Kch z2hMvWsJ_jks~SES$)I|SO8BMOt6etr^z;brYP~*kXlVVQt{Gn1EN?{a&9(`e>f{~! z<}{6rjV9L9m;rsklUen&Kj0M`Fvs)Kqy$TNgj-SnQp%jb){) zSA<8lY*4)K;!Ck_UbC9lHlsy;>D~3Z++KU8EZ4&`F?D?;4?DV1CL^I2X1ZtmpF1CR zOoL_39E8N%uZlAsS9f3);^gdGV71!Cdq;x@ul?T_uKHRt`JUEB(^W~K9-aY@uS(?= z-0D;(XYTbjPqbchqBUwfp>_D{dca*8NY;^tGta|w7-Pj)TQ1gfS18MNr**N5vy-!D zJLALh9x1HHe5-joH9OuslywTP;Bve&J}K1rKEB}+7w=E^F&>&p%e8fR&8l(b?=4q0 z7DblEMuTgWzt`S@Nqy_5*A3MoV3p`TS>jg^q`id}eTxF$G*AoC|t; zUb^OD8A&ZS%T@BN_dvivvGbNW6_ z5p$EzdpFdMV5}+%dFmJjt6OAEcgu6OWI{JCwoE5~tF_u?pZ%)ZCp0$IRy`YX6b!3p zjN>MM-ox@I;bRJ{=KWsRy|>Uapo1>$?K!MKkKfpbQX_gdK%E&X)w Ui_y!i_~-r7uz|b&F#b>f1Gl@~C;$Ke literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened (material.blue.light).png b/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_second_opened (material.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..686a775fdcdd74e336f717839bd9b2404fa0b4ed GIT binary patch literal 41246 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 c{$pYYMxyN>-Yr)iFGb+AxGi#L}>{oRUwHJ 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 literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened (fluent.blue.light).png b/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..3865ae3e51ecefd25d466b65647e7337017db6c5 GIT binary patch literal 47818 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 Y)iG^ap3iIe0$=8?eO%%?kC^kn0H02$EC2ui literal 0 HcmV?d00001 diff --git a/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened (material.blue.light).png b/apps/demos/testing/widgets/tagbox/etalons/tagbox_groupeditems_third_opened (material.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..130534e91cdaee97fec7e029b499efe1dec8728b GIT binary patch literal 44710 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 literal 0 HcmV?d00001 From 6cfd5eb341e41a85af6c7aece59209d280d14bca Mon Sep 17 00:00:00 2001 From: Vasily Strelyaev Date: Fri, 6 Dec 2024 18:10:43 +0200 Subject: [PATCH 06/21] add JS re-exports to old locations --- packages/devextreme/js/animation/easing.js | 1 + packages/devextreme/js/animation/position.js | 1 + packages/devextreme/js/animation/presets/presets.js | 1 + .../js/animation/transition_executor/transition_executor.js | 1 + packages/devextreme/js/animation/translator.js | 1 + packages/devextreme/js/data/array_query.js | 1 + packages/devextreme/js/data/array_utils.js | 1 + packages/devextreme/js/data/data_source/data_source.js | 1 + packages/devextreme/js/data/data_source/operation_manager.js | 1 + packages/devextreme/js/data/data_source/utils.js | 1 + packages/devextreme/js/data/odata/query_adapter.js | 1 + packages/devextreme/js/data/odata/request_dispatcher.js | 1 + packages/devextreme/js/data/odata/utils.js | 2 +- packages/devextreme/js/data/query_adapters.js | 1 + packages/devextreme/js/data/query_implementation.js | 1 + packages/devextreme/js/data/remote_query.js | 1 + packages/devextreme/js/data/store_helper.js | 1 + packages/devextreme/js/events/click.d.ts | 1 + packages/devextreme/js/events/click.js | 1 + packages/devextreme/js/events/contextmenu.js | 1 + packages/devextreme/js/events/core/emitter.feedback.js | 1 + packages/devextreme/js/events/core/emitter.js | 1 + packages/devextreme/js/events/core/emitter_registrator.js | 1 + packages/devextreme/js/events/core/event_registrator.js | 1 + .../devextreme/js/events/core/event_registrator_callbacks.js | 1 + packages/devextreme/js/events/core/events_engine.d.ts | 1 + packages/devextreme/js/events/core/events_engine.js | 1 + packages/devextreme/js/events/core/hook_touch_props.js | 1 + packages/devextreme/js/events/core/keyboard_processor.js | 1 + packages/devextreme/js/events/core/wheel.js | 1 + packages/devextreme/js/events/dblclick.js | 1 + packages/devextreme/js/events/drag.js | 1 + packages/devextreme/js/events/gesture/emitter.gesture.js | 1 + packages/devextreme/js/events/gesture/emitter.gesture.scroll.js | 1 + packages/devextreme/js/events/gesture/swipeable.js | 1 + packages/devextreme/js/events/hold.js | 1 + packages/devextreme/js/events/hover.js | 1 + packages/devextreme/js/events/pointer.d.ts | 1 + packages/devextreme/js/events/pointer.js | 1 + packages/devextreme/js/events/pointer/base.js | 1 + packages/devextreme/js/events/pointer/mouse.js | 1 + packages/devextreme/js/events/pointer/mouse_and_touch.js | 1 + packages/devextreme/js/events/pointer/observer.js | 1 + packages/devextreme/js/events/pointer/touch.js | 1 + packages/devextreme/js/events/remove.js | 1 + packages/devextreme/js/events/short.js | 1 + packages/devextreme/js/events/swipe.js | 1 + packages/devextreme/js/events/transform.js | 1 + packages/devextreme/js/events/utils/add_namespace.js | 1 + packages/devextreme/js/events/utils/event_nodes_disposing.js | 1 + packages/devextreme/js/events/utils/event_target.js | 1 + packages/devextreme/js/events/utils/index.d.ts | 1 + packages/devextreme/js/events/utils/index.js | 1 + packages/devextreme/js/events/visibility_change.js | 1 + .../devextreme/js/localization/cldr-data/accounting_formats.js | 1 + packages/devextreme/js/localization/cldr-data/en.js | 1 + .../js/localization/cldr-data/first_day_of_week_data.js | 1 + packages/devextreme/js/localization/cldr-data/parent_locales.js | 1 + packages/devextreme/js/localization/cldr-data/supplemental.js | 1 + packages/devextreme/js/localization/core.js | 1 + packages/devextreme/js/localization/currency.js | 1 + packages/devextreme/js/localization/date.d.ts | 1 + packages/devextreme/js/localization/date.js | 1 + packages/devextreme/js/localization/default_date_names.js | 1 + packages/devextreme/js/localization/default_messages.js | 1 + packages/devextreme/js/localization/intl/date.js | 1 + packages/devextreme/js/localization/intl/number.js | 1 + packages/devextreme/js/localization/language_codes.js | 1 + packages/devextreme/js/localization/ldml/date.format.js | 1 + packages/devextreme/js/localization/ldml/date.formatter.js | 1 + packages/devextreme/js/localization/ldml/date.parser.js | 1 + packages/devextreme/js/localization/ldml/number.js | 1 + packages/devextreme/js/localization/message.d.ts | 1 + packages/devextreme/js/localization/message.js | 1 + packages/devextreme/js/localization/number.js | 1 + packages/devextreme/js/localization/open_xml_currency_format.js | 1 + packages/devextreme/js/localization/parentLocale.js | 1 + packages/devextreme/js/localization/utils.js | 1 + packages/devextreme/js/mobile/hide_callback.js | 1 + .../js/mobile/init_mobile_viewport/init_mobile_viewport.js | 1 + 80 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 packages/devextreme/js/animation/easing.js create mode 100644 packages/devextreme/js/animation/position.js create mode 100644 packages/devextreme/js/animation/presets/presets.js create mode 100644 packages/devextreme/js/animation/transition_executor/transition_executor.js create mode 100644 packages/devextreme/js/animation/translator.js create mode 100644 packages/devextreme/js/data/array_query.js create mode 100644 packages/devextreme/js/data/array_utils.js create mode 100644 packages/devextreme/js/data/data_source/data_source.js create mode 100644 packages/devextreme/js/data/data_source/operation_manager.js create mode 100644 packages/devextreme/js/data/data_source/utils.js create mode 100644 packages/devextreme/js/data/odata/query_adapter.js create mode 100644 packages/devextreme/js/data/odata/request_dispatcher.js create mode 100644 packages/devextreme/js/data/query_adapters.js create mode 100644 packages/devextreme/js/data/query_implementation.js create mode 100644 packages/devextreme/js/data/remote_query.js create mode 100644 packages/devextreme/js/data/store_helper.js create mode 100644 packages/devextreme/js/events/click.d.ts create mode 100644 packages/devextreme/js/events/click.js create mode 100644 packages/devextreme/js/events/contextmenu.js create mode 100644 packages/devextreme/js/events/core/emitter.feedback.js create mode 100644 packages/devextreme/js/events/core/emitter.js create mode 100644 packages/devextreme/js/events/core/emitter_registrator.js create mode 100644 packages/devextreme/js/events/core/event_registrator.js create mode 100644 packages/devextreme/js/events/core/event_registrator_callbacks.js create mode 100644 packages/devextreme/js/events/core/events_engine.d.ts create mode 100644 packages/devextreme/js/events/core/events_engine.js create mode 100644 packages/devextreme/js/events/core/hook_touch_props.js create mode 100644 packages/devextreme/js/events/core/keyboard_processor.js create mode 100644 packages/devextreme/js/events/core/wheel.js create mode 100644 packages/devextreme/js/events/dblclick.js create mode 100644 packages/devextreme/js/events/drag.js create mode 100644 packages/devextreme/js/events/gesture/emitter.gesture.js create mode 100644 packages/devextreme/js/events/gesture/emitter.gesture.scroll.js create mode 100644 packages/devextreme/js/events/gesture/swipeable.js create mode 100644 packages/devextreme/js/events/hold.js create mode 100644 packages/devextreme/js/events/hover.js create mode 100644 packages/devextreme/js/events/pointer.d.ts create mode 100644 packages/devextreme/js/events/pointer.js create mode 100644 packages/devextreme/js/events/pointer/base.js create mode 100644 packages/devextreme/js/events/pointer/mouse.js create mode 100644 packages/devextreme/js/events/pointer/mouse_and_touch.js create mode 100644 packages/devextreme/js/events/pointer/observer.js create mode 100644 packages/devextreme/js/events/pointer/touch.js create mode 100644 packages/devextreme/js/events/remove.js create mode 100644 packages/devextreme/js/events/short.js create mode 100644 packages/devextreme/js/events/swipe.js create mode 100644 packages/devextreme/js/events/transform.js create mode 100644 packages/devextreme/js/events/utils/add_namespace.js create mode 100644 packages/devextreme/js/events/utils/event_nodes_disposing.js create mode 100644 packages/devextreme/js/events/utils/event_target.js create mode 100644 packages/devextreme/js/events/utils/index.d.ts create mode 100644 packages/devextreme/js/events/utils/index.js create mode 100644 packages/devextreme/js/events/visibility_change.js create mode 100644 packages/devextreme/js/localization/cldr-data/accounting_formats.js create mode 100644 packages/devextreme/js/localization/cldr-data/en.js create mode 100644 packages/devextreme/js/localization/cldr-data/first_day_of_week_data.js create mode 100644 packages/devextreme/js/localization/cldr-data/parent_locales.js create mode 100644 packages/devextreme/js/localization/cldr-data/supplemental.js create mode 100644 packages/devextreme/js/localization/core.js create mode 100644 packages/devextreme/js/localization/currency.js create mode 100644 packages/devextreme/js/localization/date.d.ts create mode 100644 packages/devextreme/js/localization/date.js create mode 100644 packages/devextreme/js/localization/default_date_names.js create mode 100644 packages/devextreme/js/localization/default_messages.js create mode 100644 packages/devextreme/js/localization/intl/date.js create mode 100644 packages/devextreme/js/localization/intl/number.js create mode 100644 packages/devextreme/js/localization/language_codes.js create mode 100644 packages/devextreme/js/localization/ldml/date.format.js create mode 100644 packages/devextreme/js/localization/ldml/date.formatter.js create mode 100644 packages/devextreme/js/localization/ldml/date.parser.js create mode 100644 packages/devextreme/js/localization/ldml/number.js create mode 100644 packages/devextreme/js/localization/message.d.ts create mode 100644 packages/devextreme/js/localization/message.js create mode 100644 packages/devextreme/js/localization/number.js create mode 100644 packages/devextreme/js/localization/open_xml_currency_format.js create mode 100644 packages/devextreme/js/localization/parentLocale.js create mode 100644 packages/devextreme/js/localization/utils.js create mode 100644 packages/devextreme/js/mobile/hide_callback.js create mode 100644 packages/devextreme/js/mobile/init_mobile_viewport/init_mobile_viewport.js diff --git a/packages/devextreme/js/animation/easing.js b/packages/devextreme/js/animation/easing.js new file mode 100644 index 000000000000..54e45db8835f --- /dev/null +++ b/packages/devextreme/js/animation/easing.js @@ -0,0 +1 @@ +export * from '../common/core/animation/easing'; diff --git a/packages/devextreme/js/animation/position.js b/packages/devextreme/js/animation/position.js new file mode 100644 index 000000000000..758cb60114b5 --- /dev/null +++ b/packages/devextreme/js/animation/position.js @@ -0,0 +1 @@ +export { default } from '../common/core/animation/position'; diff --git a/packages/devextreme/js/animation/presets/presets.js b/packages/devextreme/js/animation/presets/presets.js new file mode 100644 index 000000000000..e10fcb85aa86 --- /dev/null +++ b/packages/devextreme/js/animation/presets/presets.js @@ -0,0 +1 @@ +export * from '../../common/core/animation/presets/presets'; diff --git a/packages/devextreme/js/animation/transition_executor/transition_executor.js b/packages/devextreme/js/animation/transition_executor/transition_executor.js new file mode 100644 index 000000000000..78b6f32c532a --- /dev/null +++ b/packages/devextreme/js/animation/transition_executor/transition_executor.js @@ -0,0 +1 @@ +export * from '../../common/core/animation/transition_executor/transition_executor'; diff --git a/packages/devextreme/js/animation/translator.js b/packages/devextreme/js/animation/translator.js new file mode 100644 index 000000000000..e13fcd349c62 --- /dev/null +++ b/packages/devextreme/js/animation/translator.js @@ -0,0 +1 @@ +export * from '../common/core/animation/translator'; diff --git a/packages/devextreme/js/data/array_query.js b/packages/devextreme/js/data/array_query.js new file mode 100644 index 000000000000..3a3bd486101a --- /dev/null +++ b/packages/devextreme/js/data/array_query.js @@ -0,0 +1 @@ +export { default } from '../common/data/array_query'; diff --git a/packages/devextreme/js/data/array_utils.js b/packages/devextreme/js/data/array_utils.js new file mode 100644 index 000000000000..d70279728d06 --- /dev/null +++ b/packages/devextreme/js/data/array_utils.js @@ -0,0 +1 @@ +export * from '../common/data/array_utils'; diff --git a/packages/devextreme/js/data/data_source/data_source.js b/packages/devextreme/js/data/data_source/data_source.js new file mode 100644 index 000000000000..356bbfdf5e35 --- /dev/null +++ b/packages/devextreme/js/data/data_source/data_source.js @@ -0,0 +1 @@ +export * from '../../common/data/data_source/data_source'; diff --git a/packages/devextreme/js/data/data_source/operation_manager.js b/packages/devextreme/js/data/data_source/operation_manager.js new file mode 100644 index 000000000000..f51c8b2e9cfc --- /dev/null +++ b/packages/devextreme/js/data/data_source/operation_manager.js @@ -0,0 +1 @@ +export { default } from '../../common/data/data_source/operation_manager'; diff --git a/packages/devextreme/js/data/data_source/utils.js b/packages/devextreme/js/data/data_source/utils.js new file mode 100644 index 000000000000..2849c2da1286 --- /dev/null +++ b/packages/devextreme/js/data/data_source/utils.js @@ -0,0 +1 @@ +export * from '../../common/data/data_source/utils'; diff --git a/packages/devextreme/js/data/odata/query_adapter.js b/packages/devextreme/js/data/odata/query_adapter.js new file mode 100644 index 000000000000..7378f229d11f --- /dev/null +++ b/packages/devextreme/js/data/odata/query_adapter.js @@ -0,0 +1 @@ +export * from '../../common/data/odata/query_adapter'; diff --git a/packages/devextreme/js/data/odata/request_dispatcher.js b/packages/devextreme/js/data/odata/request_dispatcher.js new file mode 100644 index 000000000000..59e1d8001370 --- /dev/null +++ b/packages/devextreme/js/data/odata/request_dispatcher.js @@ -0,0 +1 @@ +export { default } from '../../common/data/odata/request_dispatcher'; diff --git a/packages/devextreme/js/data/odata/utils.js b/packages/devextreme/js/data/odata/utils.js index a1010e078a09..7885d6922b8a 100644 --- a/packages/devextreme/js/data/odata/utils.js +++ b/packages/devextreme/js/data/odata/utils.js @@ -1 +1 @@ -export { EdmLiteral, keyConverters } from '../../common/data/odata/utils'; +export * from '../../common/data/odata/utils'; diff --git a/packages/devextreme/js/data/query_adapters.js b/packages/devextreme/js/data/query_adapters.js new file mode 100644 index 000000000000..5d3c271d855e --- /dev/null +++ b/packages/devextreme/js/data/query_adapters.js @@ -0,0 +1 @@ +export { default } from '../common/data/query_adapters'; diff --git a/packages/devextreme/js/data/query_implementation.js b/packages/devextreme/js/data/query_implementation.js new file mode 100644 index 000000000000..463414a1f8ed --- /dev/null +++ b/packages/devextreme/js/data/query_implementation.js @@ -0,0 +1 @@ +export * from '../common/data/query_implementation'; diff --git a/packages/devextreme/js/data/remote_query.js b/packages/devextreme/js/data/remote_query.js new file mode 100644 index 000000000000..ee9082488b2e --- /dev/null +++ b/packages/devextreme/js/data/remote_query.js @@ -0,0 +1 @@ +export { default } from '../common/data/remote_query'; diff --git a/packages/devextreme/js/data/store_helper.js b/packages/devextreme/js/data/store_helper.js new file mode 100644 index 000000000000..5c3ed3a97758 --- /dev/null +++ b/packages/devextreme/js/data/store_helper.js @@ -0,0 +1 @@ +export { default } from '../common/data/store_helper'; diff --git a/packages/devextreme/js/events/click.d.ts b/packages/devextreme/js/events/click.d.ts new file mode 100644 index 000000000000..7eb8c2a8f967 --- /dev/null +++ b/packages/devextreme/js/events/click.d.ts @@ -0,0 +1 @@ +export * from '../common/core/events/click'; diff --git a/packages/devextreme/js/events/click.js b/packages/devextreme/js/events/click.js new file mode 100644 index 000000000000..7eb8c2a8f967 --- /dev/null +++ b/packages/devextreme/js/events/click.js @@ -0,0 +1 @@ +export * from '../common/core/events/click'; diff --git a/packages/devextreme/js/events/contextmenu.js b/packages/devextreme/js/events/contextmenu.js new file mode 100644 index 000000000000..9b091924be67 --- /dev/null +++ b/packages/devextreme/js/events/contextmenu.js @@ -0,0 +1 @@ +export * from '../common/core/events/contextmenu'; diff --git a/packages/devextreme/js/events/core/emitter.feedback.js b/packages/devextreme/js/events/core/emitter.feedback.js new file mode 100644 index 000000000000..619c8b41e413 --- /dev/null +++ b/packages/devextreme/js/events/core/emitter.feedback.js @@ -0,0 +1 @@ +export * from '../../common/core/events/core/emitter.feedback'; diff --git a/packages/devextreme/js/events/core/emitter.js b/packages/devextreme/js/events/core/emitter.js new file mode 100644 index 000000000000..8a9e22b716db --- /dev/null +++ b/packages/devextreme/js/events/core/emitter.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/emitter'; diff --git a/packages/devextreme/js/events/core/emitter_registrator.js b/packages/devextreme/js/events/core/emitter_registrator.js new file mode 100644 index 000000000000..60fb7641a5e2 --- /dev/null +++ b/packages/devextreme/js/events/core/emitter_registrator.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/emitter_registrator'; diff --git a/packages/devextreme/js/events/core/event_registrator.js b/packages/devextreme/js/events/core/event_registrator.js new file mode 100644 index 000000000000..9f55b0025bc6 --- /dev/null +++ b/packages/devextreme/js/events/core/event_registrator.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/event_registrator'; diff --git a/packages/devextreme/js/events/core/event_registrator_callbacks.js b/packages/devextreme/js/events/core/event_registrator_callbacks.js new file mode 100644 index 000000000000..8a94216970c4 --- /dev/null +++ b/packages/devextreme/js/events/core/event_registrator_callbacks.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/event_registrator_callbacks'; diff --git a/packages/devextreme/js/events/core/events_engine.d.ts b/packages/devextreme/js/events/core/events_engine.d.ts new file mode 100644 index 000000000000..5f7a0678dd19 --- /dev/null +++ b/packages/devextreme/js/events/core/events_engine.d.ts @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/events_engine'; diff --git a/packages/devextreme/js/events/core/events_engine.js b/packages/devextreme/js/events/core/events_engine.js new file mode 100644 index 000000000000..5f7a0678dd19 --- /dev/null +++ b/packages/devextreme/js/events/core/events_engine.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/events_engine'; diff --git a/packages/devextreme/js/events/core/hook_touch_props.js b/packages/devextreme/js/events/core/hook_touch_props.js new file mode 100644 index 000000000000..db29c499a42a --- /dev/null +++ b/packages/devextreme/js/events/core/hook_touch_props.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/hook_touch_props'; diff --git a/packages/devextreme/js/events/core/keyboard_processor.js b/packages/devextreme/js/events/core/keyboard_processor.js new file mode 100644 index 000000000000..16083e23bf77 --- /dev/null +++ b/packages/devextreme/js/events/core/keyboard_processor.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/core/keyboard_processor'; diff --git a/packages/devextreme/js/events/core/wheel.js b/packages/devextreme/js/events/core/wheel.js new file mode 100644 index 000000000000..fbdb76bd70a8 --- /dev/null +++ b/packages/devextreme/js/events/core/wheel.js @@ -0,0 +1 @@ +export * from '../../common/core/events/core/wheel'; diff --git a/packages/devextreme/js/events/dblclick.js b/packages/devextreme/js/events/dblclick.js new file mode 100644 index 000000000000..9fe4d45f9fe4 --- /dev/null +++ b/packages/devextreme/js/events/dblclick.js @@ -0,0 +1 @@ +export { default } from '../common/core/events/dblclick'; diff --git a/packages/devextreme/js/events/drag.js b/packages/devextreme/js/events/drag.js new file mode 100644 index 000000000000..05303be7f95c --- /dev/null +++ b/packages/devextreme/js/events/drag.js @@ -0,0 +1 @@ +export * from '../common/core/events/drag'; diff --git a/packages/devextreme/js/events/gesture/emitter.gesture.js b/packages/devextreme/js/events/gesture/emitter.gesture.js new file mode 100644 index 000000000000..0b6ac6a22d78 --- /dev/null +++ b/packages/devextreme/js/events/gesture/emitter.gesture.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/gesture/emitter.gesture'; diff --git a/packages/devextreme/js/events/gesture/emitter.gesture.scroll.js b/packages/devextreme/js/events/gesture/emitter.gesture.scroll.js new file mode 100644 index 000000000000..662d02c88ec8 --- /dev/null +++ b/packages/devextreme/js/events/gesture/emitter.gesture.scroll.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/gesture/emitter.gesture.scroll'; diff --git a/packages/devextreme/js/events/gesture/swipeable.js b/packages/devextreme/js/events/gesture/swipeable.js new file mode 100644 index 000000000000..9ee98c5d3795 --- /dev/null +++ b/packages/devextreme/js/events/gesture/swipeable.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/gesture/swipeable'; diff --git a/packages/devextreme/js/events/hold.js b/packages/devextreme/js/events/hold.js new file mode 100644 index 000000000000..2a8370a0e564 --- /dev/null +++ b/packages/devextreme/js/events/hold.js @@ -0,0 +1 @@ +export { default } from '../common/core/events/hold'; diff --git a/packages/devextreme/js/events/hover.js b/packages/devextreme/js/events/hover.js new file mode 100644 index 000000000000..981ccfec29b0 --- /dev/null +++ b/packages/devextreme/js/events/hover.js @@ -0,0 +1 @@ +export * from '../common/core/events/hover'; diff --git a/packages/devextreme/js/events/pointer.d.ts b/packages/devextreme/js/events/pointer.d.ts new file mode 100644 index 000000000000..73285dd2411c --- /dev/null +++ b/packages/devextreme/js/events/pointer.d.ts @@ -0,0 +1 @@ +export { default } from '../common/core/events/pointer'; diff --git a/packages/devextreme/js/events/pointer.js b/packages/devextreme/js/events/pointer.js new file mode 100644 index 000000000000..73285dd2411c --- /dev/null +++ b/packages/devextreme/js/events/pointer.js @@ -0,0 +1 @@ +export { default } from '../common/core/events/pointer'; diff --git a/packages/devextreme/js/events/pointer/base.js b/packages/devextreme/js/events/pointer/base.js new file mode 100644 index 000000000000..b2420f981c1a --- /dev/null +++ b/packages/devextreme/js/events/pointer/base.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/pointer/base'; diff --git a/packages/devextreme/js/events/pointer/mouse.js b/packages/devextreme/js/events/pointer/mouse.js new file mode 100644 index 000000000000..331959ee952c --- /dev/null +++ b/packages/devextreme/js/events/pointer/mouse.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/pointer/mouse'; diff --git a/packages/devextreme/js/events/pointer/mouse_and_touch.js b/packages/devextreme/js/events/pointer/mouse_and_touch.js new file mode 100644 index 000000000000..5a40a106d5ed --- /dev/null +++ b/packages/devextreme/js/events/pointer/mouse_and_touch.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/pointer/mouse_and_touch'; diff --git a/packages/devextreme/js/events/pointer/observer.js b/packages/devextreme/js/events/pointer/observer.js new file mode 100644 index 000000000000..772d450e3b31 --- /dev/null +++ b/packages/devextreme/js/events/pointer/observer.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/pointer/observer'; diff --git a/packages/devextreme/js/events/pointer/touch.js b/packages/devextreme/js/events/pointer/touch.js new file mode 100644 index 000000000000..69ec4b54593f --- /dev/null +++ b/packages/devextreme/js/events/pointer/touch.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/pointer/touch'; diff --git a/packages/devextreme/js/events/remove.js b/packages/devextreme/js/events/remove.js new file mode 100644 index 000000000000..65eddd77a612 --- /dev/null +++ b/packages/devextreme/js/events/remove.js @@ -0,0 +1 @@ +export * from '../common/core/events/remove'; diff --git a/packages/devextreme/js/events/short.js b/packages/devextreme/js/events/short.js new file mode 100644 index 000000000000..52aedd72aa12 --- /dev/null +++ b/packages/devextreme/js/events/short.js @@ -0,0 +1 @@ +export * from '../common/core/events/short'; diff --git a/packages/devextreme/js/events/swipe.js b/packages/devextreme/js/events/swipe.js new file mode 100644 index 000000000000..c6288acbb6ae --- /dev/null +++ b/packages/devextreme/js/events/swipe.js @@ -0,0 +1 @@ +export * from '../common/core/events/swipe'; diff --git a/packages/devextreme/js/events/transform.js b/packages/devextreme/js/events/transform.js new file mode 100644 index 000000000000..4151a15a32a7 --- /dev/null +++ b/packages/devextreme/js/events/transform.js @@ -0,0 +1 @@ +export * from '../common/core/events/transform'; diff --git a/packages/devextreme/js/events/utils/add_namespace.js b/packages/devextreme/js/events/utils/add_namespace.js new file mode 100644 index 000000000000..07bd7287f751 --- /dev/null +++ b/packages/devextreme/js/events/utils/add_namespace.js @@ -0,0 +1 @@ +export { default } from '../../common/core/events/utils/add_namespace'; diff --git a/packages/devextreme/js/events/utils/event_nodes_disposing.js b/packages/devextreme/js/events/utils/event_nodes_disposing.js new file mode 100644 index 000000000000..2bb3a91ee064 --- /dev/null +++ b/packages/devextreme/js/events/utils/event_nodes_disposing.js @@ -0,0 +1 @@ +export * from '../../common/core/events/utils/event_nodes_disposing'; diff --git a/packages/devextreme/js/events/utils/event_target.js b/packages/devextreme/js/events/utils/event_target.js new file mode 100644 index 000000000000..d56c7a7dcb6d --- /dev/null +++ b/packages/devextreme/js/events/utils/event_target.js @@ -0,0 +1 @@ +export * from '../../common/core/events/utils/event_target'; diff --git a/packages/devextreme/js/events/utils/index.d.ts b/packages/devextreme/js/events/utils/index.d.ts new file mode 100644 index 000000000000..a2e98a0280bc --- /dev/null +++ b/packages/devextreme/js/events/utils/index.d.ts @@ -0,0 +1 @@ +export * from '../../common/core/events/utils/index'; diff --git a/packages/devextreme/js/events/utils/index.js b/packages/devextreme/js/events/utils/index.js new file mode 100644 index 000000000000..a2e98a0280bc --- /dev/null +++ b/packages/devextreme/js/events/utils/index.js @@ -0,0 +1 @@ +export * from '../../common/core/events/utils/index'; diff --git a/packages/devextreme/js/events/visibility_change.js b/packages/devextreme/js/events/visibility_change.js new file mode 100644 index 000000000000..e7981021de1d --- /dev/null +++ b/packages/devextreme/js/events/visibility_change.js @@ -0,0 +1 @@ +export { default } from '../common/core/events/visibility_change'; diff --git a/packages/devextreme/js/localization/cldr-data/accounting_formats.js b/packages/devextreme/js/localization/cldr-data/accounting_formats.js new file mode 100644 index 000000000000..502fbf909982 --- /dev/null +++ b/packages/devextreme/js/localization/cldr-data/accounting_formats.js @@ -0,0 +1 @@ +export { default } from '../../common/core/localization/cldr-data/accounting_formats'; diff --git a/packages/devextreme/js/localization/cldr-data/en.js b/packages/devextreme/js/localization/cldr-data/en.js new file mode 100644 index 000000000000..25761bdcf17e --- /dev/null +++ b/packages/devextreme/js/localization/cldr-data/en.js @@ -0,0 +1 @@ +export * from '../../common/core/localization/cldr-data/en'; diff --git a/packages/devextreme/js/localization/cldr-data/first_day_of_week_data.js b/packages/devextreme/js/localization/cldr-data/first_day_of_week_data.js new file mode 100644 index 000000000000..fb228eef00ce --- /dev/null +++ b/packages/devextreme/js/localization/cldr-data/first_day_of_week_data.js @@ -0,0 +1 @@ +export { default } from '../../common/core/localization/cldr-data/first_day_of_week_data'; diff --git a/packages/devextreme/js/localization/cldr-data/parent_locales.js b/packages/devextreme/js/localization/cldr-data/parent_locales.js new file mode 100644 index 000000000000..982805ef3b35 --- /dev/null +++ b/packages/devextreme/js/localization/cldr-data/parent_locales.js @@ -0,0 +1 @@ +export { default } from '../../common/core/localization/cldr-data/parent_locales'; diff --git a/packages/devextreme/js/localization/cldr-data/supplemental.js b/packages/devextreme/js/localization/cldr-data/supplemental.js new file mode 100644 index 000000000000..1616663d6ec0 --- /dev/null +++ b/packages/devextreme/js/localization/cldr-data/supplemental.js @@ -0,0 +1 @@ +export * from '../../common/core/localization/cldr-data/supplemental'; diff --git a/packages/devextreme/js/localization/core.js b/packages/devextreme/js/localization/core.js new file mode 100644 index 000000000000..f4ca0e360c16 --- /dev/null +++ b/packages/devextreme/js/localization/core.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/core'; diff --git a/packages/devextreme/js/localization/currency.js b/packages/devextreme/js/localization/currency.js new file mode 100644 index 000000000000..90cea440ba04 --- /dev/null +++ b/packages/devextreme/js/localization/currency.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/currency'; diff --git a/packages/devextreme/js/localization/date.d.ts b/packages/devextreme/js/localization/date.d.ts new file mode 100644 index 000000000000..5cc12eb0c415 --- /dev/null +++ b/packages/devextreme/js/localization/date.d.ts @@ -0,0 +1 @@ +export { default } from '../common/core/localization/date'; diff --git a/packages/devextreme/js/localization/date.js b/packages/devextreme/js/localization/date.js new file mode 100644 index 000000000000..5cc12eb0c415 --- /dev/null +++ b/packages/devextreme/js/localization/date.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/date'; diff --git a/packages/devextreme/js/localization/default_date_names.js b/packages/devextreme/js/localization/default_date_names.js new file mode 100644 index 000000000000..05d9032599fb --- /dev/null +++ b/packages/devextreme/js/localization/default_date_names.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/default_date_names'; diff --git a/packages/devextreme/js/localization/default_messages.js b/packages/devextreme/js/localization/default_messages.js new file mode 100644 index 000000000000..c329409454d1 --- /dev/null +++ b/packages/devextreme/js/localization/default_messages.js @@ -0,0 +1 @@ +export * from '../common/core/localization/default_messages'; diff --git a/packages/devextreme/js/localization/intl/date.js b/packages/devextreme/js/localization/intl/date.js new file mode 100644 index 000000000000..df469a3a6666 --- /dev/null +++ b/packages/devextreme/js/localization/intl/date.js @@ -0,0 +1 @@ +export { default } from '../../common/core/localization/intl/date'; diff --git a/packages/devextreme/js/localization/intl/number.js b/packages/devextreme/js/localization/intl/number.js new file mode 100644 index 000000000000..3dcc11b5cc0b --- /dev/null +++ b/packages/devextreme/js/localization/intl/number.js @@ -0,0 +1 @@ +export { default } from '../../common/core/localization/intl/number'; diff --git a/packages/devextreme/js/localization/language_codes.js b/packages/devextreme/js/localization/language_codes.js new file mode 100644 index 000000000000..799164fd8b8f --- /dev/null +++ b/packages/devextreme/js/localization/language_codes.js @@ -0,0 +1 @@ +export * from '../common/core/localization/language_codes'; diff --git a/packages/devextreme/js/localization/ldml/date.format.js b/packages/devextreme/js/localization/ldml/date.format.js new file mode 100644 index 000000000000..4739335d94c7 --- /dev/null +++ b/packages/devextreme/js/localization/ldml/date.format.js @@ -0,0 +1 @@ +export * from '../../common/core/localization/ldml/date.format'; diff --git a/packages/devextreme/js/localization/ldml/date.formatter.js b/packages/devextreme/js/localization/ldml/date.formatter.js new file mode 100644 index 000000000000..e34f5e0ad185 --- /dev/null +++ b/packages/devextreme/js/localization/ldml/date.formatter.js @@ -0,0 +1 @@ +export * from '../../common/core/localization/ldml/date.formatter'; diff --git a/packages/devextreme/js/localization/ldml/date.parser.js b/packages/devextreme/js/localization/ldml/date.parser.js new file mode 100644 index 000000000000..4177f5289380 --- /dev/null +++ b/packages/devextreme/js/localization/ldml/date.parser.js @@ -0,0 +1 @@ +export * from '../../common/core/localization/ldml/date.parser'; diff --git a/packages/devextreme/js/localization/ldml/number.js b/packages/devextreme/js/localization/ldml/number.js new file mode 100644 index 000000000000..b4f67195e660 --- /dev/null +++ b/packages/devextreme/js/localization/ldml/number.js @@ -0,0 +1 @@ +export * from '../../common/core/localization/ldml/number'; diff --git a/packages/devextreme/js/localization/message.d.ts b/packages/devextreme/js/localization/message.d.ts new file mode 100644 index 000000000000..fc202dac8e18 --- /dev/null +++ b/packages/devextreme/js/localization/message.d.ts @@ -0,0 +1 @@ +export { default } from '../common/core/localization/message'; diff --git a/packages/devextreme/js/localization/message.js b/packages/devextreme/js/localization/message.js new file mode 100644 index 000000000000..fc202dac8e18 --- /dev/null +++ b/packages/devextreme/js/localization/message.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/message'; diff --git a/packages/devextreme/js/localization/number.js b/packages/devextreme/js/localization/number.js new file mode 100644 index 000000000000..59f4094dbdc2 --- /dev/null +++ b/packages/devextreme/js/localization/number.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/number'; diff --git a/packages/devextreme/js/localization/open_xml_currency_format.js b/packages/devextreme/js/localization/open_xml_currency_format.js new file mode 100644 index 000000000000..b4a352ccba9b --- /dev/null +++ b/packages/devextreme/js/localization/open_xml_currency_format.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/open_xml_currency_format'; diff --git a/packages/devextreme/js/localization/parentLocale.js b/packages/devextreme/js/localization/parentLocale.js new file mode 100644 index 000000000000..f6cc4d8b7434 --- /dev/null +++ b/packages/devextreme/js/localization/parentLocale.js @@ -0,0 +1 @@ +export { default } from '../common/core/localization/parentLocale'; diff --git a/packages/devextreme/js/localization/utils.js b/packages/devextreme/js/localization/utils.js new file mode 100644 index 000000000000..7d27fdde8140 --- /dev/null +++ b/packages/devextreme/js/localization/utils.js @@ -0,0 +1 @@ +export * from '../common/core/localization/utils'; diff --git a/packages/devextreme/js/mobile/hide_callback.js b/packages/devextreme/js/mobile/hide_callback.js new file mode 100644 index 000000000000..70a283bca760 --- /dev/null +++ b/packages/devextreme/js/mobile/hide_callback.js @@ -0,0 +1 @@ +export * from '../common/core/environment/hide_callback'; diff --git a/packages/devextreme/js/mobile/init_mobile_viewport/init_mobile_viewport.js b/packages/devextreme/js/mobile/init_mobile_viewport/init_mobile_viewport.js new file mode 100644 index 000000000000..d6cba8bb14aa --- /dev/null +++ b/packages/devextreme/js/mobile/init_mobile_viewport/init_mobile_viewport.js @@ -0,0 +1 @@ +export * from '../../common/core/environment/init_mobile_viewport/init_mobile_viewport'; From 8172ce00be9236e6be31c7ca80fc4cb48a096714 Mon Sep 17 00:00:00 2001 From: Vasily Strelyaev Date: Fri, 6 Dec 2024 18:39:07 +0200 Subject: [PATCH 07/21] linter --- packages/devextreme/js/data/array_utils.js | 1 + packages/devextreme/js/data/data_source/data_source.js | 1 + packages/devextreme/js/data/data_source/utils.js | 1 + packages/devextreme/js/data/odata/query_adapter.js | 1 + packages/devextreme/js/data/odata/utils.js | 1 + packages/devextreme/js/events/click.js | 1 + packages/devextreme/js/events/contextmenu.js | 1 + packages/devextreme/js/events/core/emitter.feedback.js | 1 + packages/devextreme/js/events/core/events_engine.d.ts | 4 +++- packages/devextreme/js/events/core/wheel.js | 1 + packages/devextreme/js/events/drag.js | 1 + packages/devextreme/js/events/hover.js | 1 + packages/devextreme/js/events/pointer.d.ts | 4 +++- packages/devextreme/js/events/remove.js | 1 + packages/devextreme/js/events/short.js | 1 + packages/devextreme/js/events/swipe.js | 1 + packages/devextreme/js/events/utils/event_nodes_disposing.js | 1 + packages/devextreme/js/events/utils/event_target.js | 1 + packages/devextreme/js/events/utils/index.js | 1 + packages/devextreme/js/localization/date.d.ts | 4 +++- packages/devextreme/js/localization/message.d.ts | 4 +++- packages/devextreme/js/ui/set_template_engine.d.ts | 5 +++-- 22 files changed, 32 insertions(+), 6 deletions(-) diff --git a/packages/devextreme/js/data/array_utils.js b/packages/devextreme/js/data/array_utils.js index d70279728d06..6f49d08f0ee5 100644 --- a/packages/devextreme/js/data/array_utils.js +++ b/packages/devextreme/js/data/array_utils.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/data/array_utils'; diff --git a/packages/devextreme/js/data/data_source/data_source.js b/packages/devextreme/js/data/data_source/data_source.js index 356bbfdf5e35..b39c14b54ead 100644 --- a/packages/devextreme/js/data/data_source/data_source.js +++ b/packages/devextreme/js/data/data_source/data_source.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/data/data_source/data_source'; diff --git a/packages/devextreme/js/data/data_source/utils.js b/packages/devextreme/js/data/data_source/utils.js index 2849c2da1286..4c9af8892acd 100644 --- a/packages/devextreme/js/data/data_source/utils.js +++ b/packages/devextreme/js/data/data_source/utils.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/data/data_source/utils'; diff --git a/packages/devextreme/js/data/odata/query_adapter.js b/packages/devextreme/js/data/odata/query_adapter.js index 7378f229d11f..be00098f4228 100644 --- a/packages/devextreme/js/data/odata/query_adapter.js +++ b/packages/devextreme/js/data/odata/query_adapter.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/data/odata/query_adapter'; diff --git a/packages/devextreme/js/data/odata/utils.js b/packages/devextreme/js/data/odata/utils.js index 7885d6922b8a..d8c0d3296dd3 100644 --- a/packages/devextreme/js/data/odata/utils.js +++ b/packages/devextreme/js/data/odata/utils.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/data/odata/utils'; diff --git a/packages/devextreme/js/events/click.js b/packages/devextreme/js/events/click.js index 7eb8c2a8f967..232b5a3f9e64 100644 --- a/packages/devextreme/js/events/click.js +++ b/packages/devextreme/js/events/click.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/click'; diff --git a/packages/devextreme/js/events/contextmenu.js b/packages/devextreme/js/events/contextmenu.js index 9b091924be67..fb3c6c1cc4d7 100644 --- a/packages/devextreme/js/events/contextmenu.js +++ b/packages/devextreme/js/events/contextmenu.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/contextmenu'; diff --git a/packages/devextreme/js/events/core/emitter.feedback.js b/packages/devextreme/js/events/core/emitter.feedback.js index 619c8b41e413..7222cecfb63e 100644 --- a/packages/devextreme/js/events/core/emitter.feedback.js +++ b/packages/devextreme/js/events/core/emitter.feedback.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/core/events/core/emitter.feedback'; diff --git a/packages/devextreme/js/events/core/events_engine.d.ts b/packages/devextreme/js/events/core/events_engine.d.ts index 5f7a0678dd19..6f5bb96560b9 100644 --- a/packages/devextreme/js/events/core/events_engine.d.ts +++ b/packages/devextreme/js/events/core/events_engine.d.ts @@ -1 +1,3 @@ -export { default } from '../../common/core/events/core/events_engine'; +import eventsEngine from '../../common/core/events/core/events_engine'; + +export default eventsEngine; diff --git a/packages/devextreme/js/events/core/wheel.js b/packages/devextreme/js/events/core/wheel.js index fbdb76bd70a8..64e570572c81 100644 --- a/packages/devextreme/js/events/core/wheel.js +++ b/packages/devextreme/js/events/core/wheel.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/core/events/core/wheel'; diff --git a/packages/devextreme/js/events/drag.js b/packages/devextreme/js/events/drag.js index 05303be7f95c..ede612a06212 100644 --- a/packages/devextreme/js/events/drag.js +++ b/packages/devextreme/js/events/drag.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/drag'; diff --git a/packages/devextreme/js/events/hover.js b/packages/devextreme/js/events/hover.js index 981ccfec29b0..c84517b6ef3a 100644 --- a/packages/devextreme/js/events/hover.js +++ b/packages/devextreme/js/events/hover.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/hover'; diff --git a/packages/devextreme/js/events/pointer.d.ts b/packages/devextreme/js/events/pointer.d.ts index 73285dd2411c..4057ef57d0d2 100644 --- a/packages/devextreme/js/events/pointer.d.ts +++ b/packages/devextreme/js/events/pointer.d.ts @@ -1 +1,3 @@ -export { default } from '../common/core/events/pointer'; +import pointer from '../common/core/events/pointer'; + +export default pointer; diff --git a/packages/devextreme/js/events/remove.js b/packages/devextreme/js/events/remove.js index 65eddd77a612..73805f00f550 100644 --- a/packages/devextreme/js/events/remove.js +++ b/packages/devextreme/js/events/remove.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/remove'; diff --git a/packages/devextreme/js/events/short.js b/packages/devextreme/js/events/short.js index 52aedd72aa12..c6f4098122a5 100644 --- a/packages/devextreme/js/events/short.js +++ b/packages/devextreme/js/events/short.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/short'; diff --git a/packages/devextreme/js/events/swipe.js b/packages/devextreme/js/events/swipe.js index c6288acbb6ae..5f9190213213 100644 --- a/packages/devextreme/js/events/swipe.js +++ b/packages/devextreme/js/events/swipe.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../common/core/events/swipe'; diff --git a/packages/devextreme/js/events/utils/event_nodes_disposing.js b/packages/devextreme/js/events/utils/event_nodes_disposing.js index 2bb3a91ee064..701ca9fe50c6 100644 --- a/packages/devextreme/js/events/utils/event_nodes_disposing.js +++ b/packages/devextreme/js/events/utils/event_nodes_disposing.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/core/events/utils/event_nodes_disposing'; diff --git a/packages/devextreme/js/events/utils/event_target.js b/packages/devextreme/js/events/utils/event_target.js index d56c7a7dcb6d..a0db0d988c6d 100644 --- a/packages/devextreme/js/events/utils/event_target.js +++ b/packages/devextreme/js/events/utils/event_target.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/core/events/utils/event_target'; diff --git a/packages/devextreme/js/events/utils/index.js b/packages/devextreme/js/events/utils/index.js index a2e98a0280bc..baa00e2a92c2 100644 --- a/packages/devextreme/js/events/utils/index.js +++ b/packages/devextreme/js/events/utils/index.js @@ -1 +1,2 @@ +// eslint-disable-next-line import/export export * from '../../common/core/events/utils/index'; diff --git a/packages/devextreme/js/localization/date.d.ts b/packages/devextreme/js/localization/date.d.ts index 5cc12eb0c415..b92a9f7ecf06 100644 --- a/packages/devextreme/js/localization/date.d.ts +++ b/packages/devextreme/js/localization/date.d.ts @@ -1 +1,3 @@ -export { default } from '../common/core/localization/date'; +import dateLocalization from '../common/core/localization/date'; + +export default dateLocalization; diff --git a/packages/devextreme/js/localization/message.d.ts b/packages/devextreme/js/localization/message.d.ts index fc202dac8e18..c01e3600a9bf 100644 --- a/packages/devextreme/js/localization/message.d.ts +++ b/packages/devextreme/js/localization/message.d.ts @@ -1 +1,3 @@ -export { default } from '../common/core/localization/message'; +import messageLocalization from '../common/core/localization/message'; + +export default messageLocalization; diff --git a/packages/devextreme/js/ui/set_template_engine.d.ts b/packages/devextreme/js/ui/set_template_engine.d.ts index 39fd8a49764f..4458a1ae5b41 100644 --- a/packages/devextreme/js/ui/set_template_engine.d.ts +++ b/packages/devextreme/js/ui/set_template_engine.d.ts @@ -1,2 +1,3 @@ -//eslint-disable-next-line no-restricted-exports -export { default } from '../core/set_template_engine'; +import setTemplateEngine from '../core/set_template_engine'; + +export default setTemplateEngine; From c2dcd51b3ce9f011274bcc1470ad666a5ad4bc6e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 16:51:21 +0000 Subject: [PATCH 08/21] chore(deps): update angular-cli monorepo (#28508) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/angular/package.json | 2 +- packages/devextreme-angular/package.json | 4 +- pnpm-lock.yaml | 651 +++++++++++------------ 3 files changed, 308 insertions(+), 349 deletions(-) diff --git a/apps/angular/package.json b/apps/angular/package.json index 7475db83a5a3..1245317d1eb8 100644 --- a/apps/angular/package.json +++ b/apps/angular/package.json @@ -23,7 +23,7 @@ "zone.js": "0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "17.3.8", + "@angular-devkit/build-angular": "17.3.11", "@angular/cli": "17.3.11", "@angular/language-service": "17.3.12", "@angular/platform-server": "17.3.12", diff --git a/packages/devextreme-angular/package.json b/packages/devextreme-angular/package.json index b8cfc6ea1b43..1697cc345318 100644 --- a/packages/devextreme-angular/package.json +++ b/packages/devextreme-angular/package.json @@ -24,7 +24,7 @@ "devextreme": "workspace:~" }, "devDependencies": { - "@angular-devkit/architect": "0.1703.11", + "@angular-devkit/architect": "0.1900.2", "@angular-devkit/schematics": "17.3.11", "@angular/animations": "17.3.12", "@angular/cli": "17.3.11", @@ -73,7 +73,7 @@ "devexpress" ], "dependencies": { - "@angular-devkit/schematics": "17.3.8", + "@angular-devkit/schematics": "17.3.11", "devextreme-schematics": "*", "inferno-server": "7.4.11" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8af0724d3bd..6bd64ce4bdc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -142,8 +142,8 @@ importers: version: 0.14.10 devDependencies: '@angular-devkit/build-angular': - specifier: 17.3.8 - version: 17.3.8(ta2xvmedzeu3mme5vju3d2neh4) + specifier: 17.3.11 + version: 17.3.11(qwvpz4std2ihowmewzmfizrlqa) '@angular/cli': specifier: 17.3.11 version: 17.3.11(chokidar@3.6.0) @@ -1246,7 +1246,7 @@ importers: version: 1.1.0 webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) webpack-stream: specifier: 7.0.0 version: 7.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) @@ -1261,21 +1261,21 @@ importers: packages/devextreme-angular: dependencies: '@angular-devkit/schematics': - specifier: 17.3.8 - version: 17.3.8(chokidar@3.6.0) + specifier: 17.3.11 + version: 17.3.11(chokidar@3.6.0) devextreme: specifier: workspace:~ version: link:../devextreme/artifacts/npm/devextreme devextreme-schematics: specifier: '*' - version: 1.7.1(chokidar@3.6.0) + version: 1.7.1 inferno-server: specifier: 7.4.11 version: 7.4.11 devDependencies: '@angular-devkit/architect': - specifier: 0.1703.11 - version: 0.1703.11(chokidar@3.6.0) + specifier: 0.1900.2 + version: 0.1900.2 '@angular/animations': specifier: 17.3.12 version: 17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)) @@ -1386,7 +1386,7 @@ importers: version: 5.4.5 webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + version: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) yargs: specifier: 17.7.2 version: 17.7.2 @@ -1680,12 +1680,12 @@ packages: resolution: {integrity: sha512-YNasVZk4rYdcM6M+KRH8PUBhVyJfqzUYLpO98GgRokW+taIDgifckSlmfDZzQRbw45qiwei1IKCLqcpC8nM5Tw==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/architect@0.1703.8': - resolution: {integrity: sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g==} - engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/architect@0.1900.2': + resolution: {integrity: sha512-rGUgOgN/jb3Pyx3E1JsUbwQQZp4C0M/t0lwyWIFjUpndl27aBDjO2y5hzeG0B1+FgOuSNg8BPOYaEIO5vSCspw==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@17.3.8': - resolution: {integrity: sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg==} + '@angular-devkit/build-angular@17.3.11': + resolution: {integrity: sha512-lHX5V2dSts328yvo/9E2u9QMGcvJhbEKKDDp9dBecwvIG9s+4lTOJgi9DPUE7W+AtmPcmbbhwC2JRQ/SLQhAoA==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^17.0.0 @@ -1725,8 +1725,8 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.1703.8': - resolution: {integrity: sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q==} + '@angular-devkit/build-webpack@0.1703.11': + resolution: {integrity: sha512-qbCiiHuoVkD7CtLyWoRi/Vzz6nrEztpF5XIyWUcQu67An1VlxbMTE4yoSQiURjCQMnB/JvS1GPVed7wOq3SJ/w==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 @@ -1750,11 +1750,11 @@ packages: chokidar: optional: true - '@angular-devkit/core@17.3.8': - resolution: {integrity: sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==} - engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/core@19.0.2': + resolution: {integrity: sha512-p5pTx9rAtJUfoa7BP6R5U7dGFWHrrgpYpVyF3jwqYIu0h1C0rJIyY8q/HlkvzFxgfWag1qRf15oANq3G9fqdwg==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - chokidar: ^3.5.2 + chokidar: ^4.0.0 peerDependenciesMeta: chokidar: optional: true @@ -1767,10 +1767,6 @@ packages: resolution: {integrity: sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/schematics@17.3.8': - resolution: {integrity: sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==} - engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@17.3.12': resolution: {integrity: sha512-9hsdWF4gRRcVJtPcCcYLaX1CIyM9wUu6r+xRl6zU5hq8qhl35hig6ounz7CXFAzLf0WDBdM16bPHouVGaG76lg==} engines: {node: ^18.13.0 || >=20.9.0} @@ -3821,8 +3817,8 @@ packages: '@ndelangen/get-tarball@3.0.9': resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} - '@ngtools/webpack@17.3.8': - resolution: {integrity: sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ==} + '@ngtools/webpack@17.3.11': + resolution: {integrity: sha512-SfTCbplt4y6ak5cf2IfqdoVOsnoNdh/j6Vu+wb8WWABKwZ5yfr2S/Gk6ithSKcdIZhAF8DNBOoyk1EJuf8Xkfg==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^17.0.0 @@ -5384,9 +5380,6 @@ packages: '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint-visitor-keys@1.0.0': resolution: {integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==} @@ -6087,12 +6080,6 @@ packages: acorn-hammerhead@0.6.2: resolution: {integrity: sha512-JZklfs1VVyjA1hf1y5qSzKSmK3K1UUUI7fQTuM/Zhv3rz4kFhdx4QwVnmU6tBEC8g/Ov6B+opfNFPeSZrlQfqA==} - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - deprecated: package has been renamed to acorn-import-attributes - peerDependencies: - acorn: ^8 - acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -6176,6 +6163,14 @@ packages: ajv: optional: true + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -10139,15 +10134,6 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} - http-proxy-middleware@2.0.6: - resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - http-proxy-middleware@2.0.7: resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} engines: {node: '>=12.0.0'} @@ -15838,8 +15824,8 @@ packages: resolution: {integrity: sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==} engines: {node: '>=10.13.0'} - vite@5.1.7: - resolution: {integrity: sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==} + vite@5.1.8: + resolution: {integrity: sha512-mB8ToUuSmzODSpENgvpFk2fTiU/YQ1tmcVJJ4WZbq4fPdGJkFNVcmVL5k7iDug6xzWjjuGDKAuSievIsD6H7Xw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -16097,16 +16083,6 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.90.3: - resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack@5.94.0: resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} @@ -16401,19 +16377,19 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/architect@0.1703.8(chokidar@3.6.0)': + '@angular-devkit/architect@0.1900.2': dependencies: - '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/core': 19.0.2 rxjs: 7.8.1 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@17.3.8(ta2xvmedzeu3mme5vju3d2neh4)': + '@angular-devkit/build-angular@17.3.11(qwvpz4std2ihowmewzmfizrlqa)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1703.8(chokidar@3.6.0) - '@angular-devkit/build-webpack': 0.1703.8(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) - '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/architect': 0.1703.11(chokidar@3.6.0) + '@angular-devkit/build-webpack': 0.1703.11(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + '@angular-devkit/core': 17.3.11(chokidar@3.6.0) '@angular/compiler-cli': 17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5) '@babel/core': 7.24.0 '@babel/generator': 7.23.6 @@ -16425,29 +16401,29 @@ snapshots: '@babel/preset-env': 7.24.0(@babel/core@7.24.0) '@babel/runtime': 7.24.0 '@discoveryjs/json-ext': 0.5.7 - '@ngtools/webpack': 17.3.8(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) - '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1)) + '@ngtools/webpack': 17.3.11(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.1.8(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.18(postcss@8.4.35) - babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) babel-plugin-istanbul: 6.1.1 browserslist: 4.24.2 - copy-webpack-plugin: 11.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + copy-webpack-plugin: 11.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) critters: 0.0.22 - css-loader: 6.10.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + css-loader: 6.10.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) esbuild-wasm: 0.20.1 fast-glob: 3.3.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) + http-proxy-middleware: 2.0.7(@types/express@4.17.21) https-proxy-agent: 7.0.4 inquirer: 9.2.15 jsonc-parser: 3.2.1 karma-source-map-support: 1.4.0 less: 4.2.0 - less-loader: 11.1.0(less@4.2.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) - license-webpack-plugin: 4.0.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + less-loader: 11.1.0(less@4.2.0)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + license-webpack-plugin: 4.0.2(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) loader-utils: 3.2.1 magic-string: 0.30.8 - mini-css-extract-plugin: 2.8.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + mini-css-extract-plugin: 2.8.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) mrmime: 2.0.0 open: 8.4.2 ora: 5.4.1 @@ -16455,26 +16431,26 @@ snapshots: picomatch: 4.0.1 piscina: 4.4.0 postcss: 8.4.35 - postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.71.1 - sass-loader: 14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + sass-loader: 14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) semver: 7.6.0 - source-map-loader: 5.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + source-map-loader: 5.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) source-map-support: 0.5.21 terser: 5.29.1 tree-kill: 1.2.2 tslib: 2.6.2 typescript: 5.4.5 undici: 6.11.1 - vite: 5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1) + vite: 5.1.8(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1) watchpack: 2.4.0 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) - webpack-dev-middleware: 6.1.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) - webpack-dev-server: 4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack-dev-middleware: 6.1.2(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + webpack-dev-server: 4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) webpack-merge: 5.10.0 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) optionalDependencies: '@angular/platform-server': 17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))) esbuild: 0.20.1 @@ -16501,16 +16477,16 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1703.8(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1))': + '@angular-devkit/build-webpack@0.1703.11(chokidar@3.6.0)(webpack-dev-server@4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1))': dependencies: - '@angular-devkit/architect': 0.1703.8(chokidar@3.6.0) + '@angular-devkit/architect': 0.1703.11(chokidar@3.6.0) rxjs: 7.8.1 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) - webpack-dev-server: 4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack-dev-server: 4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@16.2.16(chokidar@3.6.0)': + '@angular-devkit/core@16.2.16': dependencies: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) @@ -16518,8 +16494,6 @@ snapshots: picomatch: 2.3.1 rxjs: 7.8.1 source-map: 0.7.4 - optionalDependencies: - chokidar: 3.6.0 '@angular-devkit/core@17.3.11(chokidar@3.6.0)': dependencies: @@ -16532,20 +16506,18 @@ snapshots: optionalDependencies: chokidar: 3.6.0 - '@angular-devkit/core@17.3.8(chokidar@3.6.0)': + '@angular-devkit/core@19.0.2': dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - jsonc-parser: 3.2.1 - picomatch: 4.0.1 + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.2 rxjs: 7.8.1 source-map: 0.7.4 - optionalDependencies: - chokidar: 3.6.0 - '@angular-devkit/schematics@16.2.16(chokidar@3.6.0)': + '@angular-devkit/schematics@16.2.16': dependencies: - '@angular-devkit/core': 16.2.16(chokidar@3.6.0) + '@angular-devkit/core': 16.2.16 jsonc-parser: 3.2.0 magic-string: 0.30.1 ora: 5.4.1 @@ -16563,16 +16535,6 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/schematics@17.3.8(chokidar@3.6.0)': - dependencies: - '@angular-devkit/core': 17.3.8(chokidar@3.6.0) - jsonc-parser: 3.2.1 - magic-string: 0.30.8 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - '@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10))': dependencies: '@angular/core': 17.3.12(rxjs@7.8.1)(zone.js@0.14.10) @@ -16728,7 +16690,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.23.6 + '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.24.0) '@babel/helpers': 7.26.0 @@ -17365,6 +17327,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.24.0) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0)': dependencies: '@babel/core': 7.24.0 @@ -17383,6 +17354,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.24.0)': + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.23.9)': dependencies: '@babel/core': 7.23.9 @@ -18166,8 +18146,8 @@ snapshots: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.24.0) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.24.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.24.0) '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.24.0) '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.24.0) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.24.0) @@ -18387,7 +18367,7 @@ snapshots: loader-utils: 2.0.4 typescript: 4.3.5 vinyl: 2.2.1 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) transitivePeerDependencies: - '@swc/core' - '@typescript-eslint/eslint-plugin' @@ -19420,11 +19400,11 @@ snapshots: pump: 3.0.2 tar-fs: 2.1.1 - '@ngtools/webpack@17.3.8(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1))': + '@ngtools/webpack@17.3.11(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5))(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1))': dependencies: '@angular/compiler-cli': 17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.4.5) typescript: 5.4.5 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: @@ -19719,69 +19699,73 @@ snapshots: '@one-ini/wasm@0.1.1': {} - '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/graph': 3.2.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.15) '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/logger': 2.12.0 '@parcel/utils': 2.12.0 lmdb: 2.8.5 + transitivePeerDependencies: + - '@swc/helpers' '@parcel/codeframe@2.12.0': dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(postcss@8.4.49)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.5)': dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/core': 2.12.0(@swc/helpers@0.5.15) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(postcss@8.4.49)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.5) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(postcss@8.4.49)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.5) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@swc/helpers' - cssnano @@ -19796,20 +19780,20 @@ snapshots: '@parcel/core@2.12.0(@swc/helpers@0.5.15)': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/diagnostic': 2.12.0 '@parcel/events': 2.12.0 '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/graph': 3.2.0 '@parcel/logger': 2.12.0 '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/profiler': 2.12.0 '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) abortcontroller-polyfill: 1.7.6 base-x: 3.0.10 browserslist: 4.24.2 @@ -19837,7 +19821,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.5.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@swc/helpers' @@ -19854,13 +19838,14 @@ snapshots: dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' '@parcel/node-resolver-core@3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': dependencies: @@ -19874,10 +19859,10 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 browserslist: 4.24.2 @@ -19885,16 +19870,18 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(postcss@8.4.49)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.5)': + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(postcss@8.4.49)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.5)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) htmlnano: 2.1.1(postcss@8.4.49)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.5) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - cssnano - postcss - purgecss @@ -19904,28 +19891,31 @@ snapshots: - typescript - uncss - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.15) '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + transitivePeerDependencies: + - '@swc/helpers' - '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 '@swc/core': 1.9.2(@swc/helpers@0.5.15) @@ -19943,37 +19933,39 @@ snapshots: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@swc/core': 1.9.2(@swc/helpers@0.5.15) semver: 7.6.3 transitivePeerDependencies: - '@swc/helpers' - '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 lightningcss: 1.28.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) @@ -19982,33 +19974,38 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' '@parcel/profiler@2.12.0': dependencies: @@ -20016,71 +20013,79 @@ snapshots: '@parcel/events': 2.12.0 chrome-trace-event: 1.0.4 - '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 chalk: 4.1.2 term-size: 2.2.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 chrome-trace-event: 1.0.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 react-error-overlay: 6.0.9 react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' '@parcel/rust@2.12.0': {} @@ -20088,10 +20093,10 @@ snapshots: dependencies: detect-libc: 1.0.3 - '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 browserslist: 4.24.2 @@ -20100,11 +20105,12 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 browserslist: 4.24.2 @@ -20112,11 +20118,12 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 @@ -20126,41 +20133,45 @@ snapshots: srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.15) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' '@parcel/transformer-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.15) '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@swc/helpers': 0.5.15 browserslist: 4.24.2 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 semver: 7.6.3 - '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 clone: 2.1.2 @@ -20169,10 +20180,11 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 @@ -20181,25 +20193,28 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' - '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/rust': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 @@ -20208,15 +20223,16 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' + - '@swc/helpers' '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/diagnostic': 2.12.0 '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -20293,7 +20309,7 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.0 '@parcel/watcher-win32-x64': 2.5.0 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.15) '@parcel/diagnostic': 2.12.0 @@ -20302,6 +20318,8 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' '@phenomnomnominal/tsquery@5.0.1(typescript@5.4.5)': dependencies: @@ -20850,10 +20868,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - '@schematics/angular@16.2.16(chokidar@3.6.0)': + '@schematics/angular@16.2.16': dependencies: - '@angular-devkit/core': 16.2.16(chokidar@3.6.0) - '@angular-devkit/schematics': 16.2.16(chokidar@3.6.0) + '@angular-devkit/core': 16.2.16 + '@angular-devkit/schematics': 16.2.16 jsonc-parser: 3.2.0 transitivePeerDependencies: - chokidar @@ -21822,11 +21840,6 @@ snapshots: '@types/escodegen@0.0.6': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 8.56.2 - '@types/estree': 1.0.6 - '@types/eslint-visitor-keys@1.0.0': {} '@types/eslint@8.56.2': @@ -22437,9 +22450,9 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-basic-ssl@1.1.0(vite@5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1))': + '@vitejs/plugin-basic-ssl@1.1.0(vite@5.1.8(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1))': dependencies: - vite: 5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1) + vite: 5.1.8(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1) '@vitest/expect@0.34.7': dependencies: @@ -22815,10 +22828,6 @@ snapshots: dependencies: '@types/estree': 0.0.46 - acorn-import-assertions@1.9.0(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -22904,6 +22913,10 @@ snapshots: optionalDependencies: ajv: 8.17.1 + ajv-formats@3.0.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -23437,12 +23450,12 @@ snapshots: - supports-color optional: true - babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@babel/core': 7.24.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) babel-loader@9.2.1(@babel/core@7.23.9)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: @@ -24678,7 +24691,7 @@ snapshots: each-props: 1.3.2 is-plain-object: 5.0.0 - copy-webpack-plugin@11.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + copy-webpack-plugin@11.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -24686,7 +24699,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) core-js-compat@3.39.0: dependencies: @@ -24892,7 +24905,7 @@ snapshots: utrie: 1.0.2 optional: true - css-loader@6.10.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + css-loader@6.10.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 @@ -24903,9 +24916,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) - css-loader@6.10.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): + css-loader@6.10.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 @@ -24916,7 +24929,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) css-loader@6.10.0(webpack@5.94.0): dependencies: @@ -25393,11 +25406,11 @@ snapshots: parchment: 2.0.1 quill-delta: 5.1.0 - devextreme-schematics@1.7.1(chokidar@3.6.0): + devextreme-schematics@1.7.1: dependencies: - '@angular-devkit/core': 16.2.16(chokidar@3.6.0) - '@angular-devkit/schematics': 16.2.16(chokidar@3.6.0) - '@schematics/angular': 16.2.16(chokidar@3.6.0) + '@angular-devkit/core': 16.2.16 + '@angular-devkit/schematics': 16.2.16 + '@schematics/angular': 16.2.16 transitivePeerDependencies: - chokidar @@ -28224,7 +28237,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + html-webpack-plugin@5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -28232,10 +28245,9 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) - optional: true + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) - html-webpack-plugin@5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): + html-webpack-plugin@5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -28243,7 +28255,8 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + optional: true html2canvas@1.4.1: dependencies: @@ -28323,18 +28336,6 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.6(@types/express@4.17.21): - dependencies: - '@types/http-proxy': 1.17.15 - http-proxy: 1.18.1 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.21 - transitivePeerDependencies: - - debug - http-proxy-middleware@2.0.7(@types/express@4.17.21): dependencies: '@types/http-proxy': 1.17.15 @@ -29813,7 +29814,7 @@ snapshots: dependencies: glob: 7.2.3 minimatch: 9.0.5 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) webpack-merge: 4.2.2 karma@6.4.4: @@ -29923,11 +29924,11 @@ snapshots: lead@4.0.0: {} - less-loader@11.1.0(less@4.2.0)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + less-loader@11.1.0(less@4.2.0)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: klona: 2.0.6 less: 4.2.0 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) less@4.2.0: dependencies: @@ -29950,11 +29951,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + license-webpack-plugin@4.0.2(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: webpack-sources: 3.2.3 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) lie@3.3.0: dependencies: @@ -30709,11 +30710,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.8.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + mini-css-extract-plugin@2.8.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) minimalistic-assert@1.0.1: {} @@ -31626,9 +31627,9 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/logger': 2.12.0 '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15)) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) '@parcel/utils': 2.12.0 chalk: 4.1.2 commander: 7.2.0 @@ -31934,14 +31935,14 @@ snapshots: postcss: 8.4.38 postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.6 postcss: 8.4.35 - semver: 7.6.0 + semver: 7.6.3 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) transitivePeerDependencies: - typescript @@ -33100,13 +33101,13 @@ snapshots: sass-embedded-win32-ia32: 1.66.0 sass-embedded-win32-x64: 1.66.0 - sass-loader@14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + sass-loader@14.1.1(sass-embedded@1.66.0)(sass@1.71.1)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.71.1 sass-embedded: 1.66.0 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) sass-lookup@5.0.1: dependencies: @@ -33479,11 +33480,11 @@ snapshots: source-map-js: 1.2.1 webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - source-map-loader@5.0.0(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + source-map-loader@5.0.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) source-map-resolve@0.5.3: dependencies: @@ -33720,7 +33721,7 @@ snapshots: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) string-width@1.0.2: dependencies: @@ -34332,29 +34333,18 @@ snapshots: '@swc/core': 1.9.2(@swc/helpers@0.5.15) esbuild: 0.18.20 - terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) esbuild: 0.20.1 - terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.36.0 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) - optionalDependencies: - '@swc/core': 1.9.2(@swc/helpers@0.5.15) - terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -34385,7 +34375,7 @@ snapshots: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) optionalDependencies: '@swc/core': 1.9.2(@swc/helpers@0.5.15) @@ -35764,7 +35754,7 @@ snapshots: replace-ext: 2.0.0 teex: 1.0.1 - vite@5.1.7(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1): + vite@5.1.8(@types/node@20.11.17)(less@4.2.0)(lightningcss@1.28.1)(sass@1.71.1)(terser@5.29.1): dependencies: esbuild: 0.19.3 postcss: 8.4.38 @@ -35928,24 +35918,24 @@ snapshots: optionalDependencies: webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.94.0) - webpack-dev-middleware@5.3.4(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + webpack-dev-middleware@5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) + optional: true - webpack-dev-middleware@5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): + webpack-dev-middleware@5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) - optional: true + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) webpack-dev-middleware@5.3.4(webpack@5.94.0): dependencies: @@ -35956,7 +35946,7 @@ snapshots: schema-utils: 4.2.0 webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack-cli@5.1.4) - webpack-dev-middleware@6.1.2(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + webpack-dev-middleware@6.1.2(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -35964,7 +35954,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) webpack-dev-middleware@6.1.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: @@ -36017,7 +36007,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@4.15.1(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + webpack-dev-server@4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -36047,17 +36037,18 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + webpack-dev-middleware: 5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) ws: 8.18.0 optionalDependencies: - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate + optional: true - webpack-dev-server@4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)): + webpack-dev-server@4.15.1(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -36087,16 +36078,15 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) + webpack-dev-middleware: 5.3.4(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) ws: 8.18.0 optionalDependencies: - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - optional: true webpack-hot-middleware@2.26.1: dependencies: @@ -36126,51 +36116,20 @@ snapshots: supports-color: 8.1.1 through: 2.3.8 vinyl: 2.2.1 - webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)): dependencies: typed-assert: 1.0.9 - webpack: 5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) + webpack: 5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1) optionalDependencies: - html-webpack-plugin: 5.6.3(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) + html-webpack-plugin: 5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) webpack-virtual-modules@0.5.0: {} webpack-virtual-modules@0.6.2: {} - webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.0 - acorn-import-assertions: 1.9.0(acorn@8.14.0) - browserslist: 4.24.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)(webpack@5.90.3(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15)): + webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -36192,7 +36151,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36200,7 +36159,7 @@ snapshots: - esbuild - uglify-js - webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20): + webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -36222,7 +36181,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.20.1)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: From 87a1f1575ebcf9ee0a1636e8b457251c7283cc77 Mon Sep 17 00:00:00 2001 From: Alexander Kozlovskiy Date: Fri, 6 Dec 2024 22:11:37 +0400 Subject: [PATCH 09/21] Chat - add AIAndChatbotIntegration React demo (#28491) --- .../AIAndChatbotIntegration/React/App.tsx | 182 ++++++++++++++++++ .../AIAndChatbotIntegration/React/Message.tsx | 63 ++++++ .../AIAndChatbotIntegration/React/data.ts | 25 +++ .../AIAndChatbotIntegration/React/index.html | 24 +++ .../AIAndChatbotIntegration/React/index.tsx | 9 + .../AIAndChatbotIntegration/React/styles.css | 65 +++++++ apps/demos/menuMeta.json | 1 + 7 files changed, 369 insertions(+) create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/React/App.tsx create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.html create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.tsx create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/React/styles.css diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/App.tsx b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/App.tsx new file mode 100644 index 000000000000..4cba5ee4f435 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/App.tsx @@ -0,0 +1,182 @@ +import React, { useState } from 'react'; +import Chat, { ChatTypes } from 'devextreme-react/chat'; +import { AzureOpenAI } from 'openai'; +import { MessageEnteredEvent } from 'devextreme/ui/chat'; +import CustomStore from 'devextreme/data/custom_store'; +import DataSource from 'devextreme/data/data_source'; +import { loadMessages } from 'devextreme/localization'; +import { + user, + assistant, + AzureOpenAIConfig, + REGENERATION_TEXT, + CHAT_DISABLED_CLASS, + ALERT_TIMEOUT +} from './data.ts'; +import Message from './Message.tsx'; + +const store = []; +const messages = []; + +loadMessages({ + en: { + 'dxChat-emptyListMessage': 'Chat is Empty', + 'dxChat-emptyListPrompt': 'AI Assistant is ready to answer your questions.', + 'dxChat-textareaPlaceholder': 'Ask AI Assistant...', + }, +}); + +const chatService = new AzureOpenAI(AzureOpenAIConfig); + +async function getAIResponse(messages) { + const params = { + messages, + max_tokens: 1000, + temperature: 0.7, + }; + + const response = await chatService.chat.completions.create(params); + const data = { choices: response.choices }; + + return data.choices[0].message?.content; +} + +function updateLastMessage(text = REGENERATION_TEXT) { + const items = dataSource.items(); + const lastMessage = items.at(-1); + + dataSource.store().push([{ + type: 'update', + key: lastMessage.id, + data: { text }, + }]); +} + +function renderAssistantMessage(text) { + const message = { + id: Date.now(), + timestamp: new Date(), + author: assistant, + text, + }; + + dataSource.store().push([{ type: 'insert', data: message }]); +} + +const customStore = new CustomStore({ + key: 'id', + load: () => { + return new Promise((resolve) => { + setTimeout(() => { + resolve([...store]); + }, 0); + }); + }, + insert: (message) => { + return new Promise((resolve) => { + setTimeout(() => { + store.push(message); + resolve(message); + }); + }); + }, +}); + +const dataSource = new DataSource({ + store: customStore, + paginate: false, +}) + +export default function App() { + const [alerts, setAlerts] = useState([]); + const [typingUsers, setTypingUsers] = useState([]); + const [classList, setClassList] = useState(''); + + function alertLimitReached() { + setAlerts([{ + message: 'Request limit reached, try again in a minute.' + }]); + + setTimeout(() => { + setAlerts([]); + }, ALERT_TIMEOUT); + } + + function toggleDisabledState(disabled: boolean, event = undefined) { + setClassList(disabled ? CHAT_DISABLED_CLASS : ''); + + if (disabled) { + event?.target.blur(); + } else { + event?.target.focus(); + } + }; + + async function processMessageSending(message, event) { + toggleDisabledState(true, event); + + messages.push({ role: 'user', content: message.text }); + setTypingUsers([assistant]); + + try { + const aiResponse = await getAIResponse(messages); + + setTimeout(() => { + setTypingUsers([]); + messages.push({ role: 'assistant', content: aiResponse }); + renderAssistantMessage(aiResponse); + }, 200); + } catch { + setTypingUsers([]); + messages.pop(); + alertLimitReached(); + } finally { + toggleDisabledState(false, event); + } + } + + async function regenerate() { + toggleDisabledState(true); + + try { + const aiResponse = await getAIResponse(messages.slice(0, -1)); + + updateLastMessage(aiResponse); + messages.at(-1).content = aiResponse; + } catch { + updateLastMessage(messages.at(-1).content); + alertLimitReached(); + } finally { + toggleDisabledState(false); + } + } + + function onMessageEntered({ message, event }: MessageEnteredEvent) { + dataSource.store().push([{ type: 'insert', data: { id: Date.now(), ...message } }]); + + if (!alerts.length) { + processMessageSending(message, event); + } + } + + function onRegenerateButtonClick() { + updateLastMessage(); + regenerate(); + } + + return ( + Message(data, onRegenerateButtonClick)} + /> + ); +} diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx new file mode 100644 index 000000000000..39807803d2fd --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx @@ -0,0 +1,63 @@ +import React, { useState, useRef } from 'react'; +import Button from 'devextreme-react/button'; +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkRehype from 'remark-rehype'; +import rehypeStringify from 'rehype-stringify'; +import HTMLReactParser from 'html-react-parser'; + +import { REGENERATION_TEXT } from './data.ts'; + +function convertToHtml(value: string) { + const result = unified() + .use(remarkParse) + .use(remarkRehype) + .use(rehypeStringify) + .processSync(value) + .toString(); + + return result; +} + +function Message({ message }, onRegenerateButtonClick) { + const [icon, setIcon] = useState('copy'); + + if (message.text === REGENERATION_TEXT) { + return {REGENERATION_TEXT}; + } + + function onCopyButtonClick() { + navigator.clipboard?.writeText(message.text); + setIcon('check'); + + setTimeout(() => { + setIcon('copy'); + }, 2500); + } + + return ( + +
+ {HTMLReactParser(convertToHtml(message.text))} +
+
+
+
+ ) +} + +export default Message; diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts new file mode 100644 index 000000000000..63fdf20d2a96 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts @@ -0,0 +1,25 @@ +import { ChatTypes } from 'devextreme-react/chat'; + +const date = new Date(); +date.setHours(0, 0, 0, 0); + +export const AzureOpenAIConfig = { + dangerouslyAllowBrowser: true, + deployment: 'gpt-4o-mini', + apiVersion: '2024-02-01', + endpoint: 'https://public-api.devexpress.com/demo-openai', + apiKey: 'DEMO', +} + +export const REGENERATION_TEXT = 'Regeneration...'; +export const CHAT_DISABLED_CLASS = 'dx-chat-disabled'; +export const ALERT_TIMEOUT = 1000 * 60; + +export const user: ChatTypes.User = { + id: 'user', +}; + +export const assistant: ChatTypes.User = { + id: 'assistant', + name: 'Virtual Assistant', +}; diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.html b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.html new file mode 100644 index 000000000000..ee451f8288ff --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.html @@ -0,0 +1,24 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.tsx b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.tsx new file mode 100644 index 000000000000..8acbec4b6179 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/index.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +import App from './App.tsx'; + +ReactDOM.render( + , + document.getElementById('app'), +); diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/styles.css b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/styles.css new file mode 100644 index 000000000000..320a5354463e --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/styles.css @@ -0,0 +1,65 @@ +#app { + display: flex; + justify-content: center; +} + +.dx-chat { + max-width: 900px; +} + +.dx-chat-messagelist-empty-image { + display: none; +} + +.dx-chat-messagelist-empty-message { + font-size: var(--dx-font-size-heading-5); +} + +.dx-chat-messagebubble-content, +.dx-chat-messagebubble-text { + display: flex; + flex-direction: column; +} + +.dx-bubble-button-container { + display: none; +} + +.dx-button { + display: inline-block; + color: var(--dx-color-icon); +} + +.dx-chat-messagegroup-alignment-start:last-child .dx-chat-messagebubble:last-child .dx-bubble-button-container { + display: flex; + gap: 4px; + margin-top: 8px; +} + +.dx-chat-messagebubble-content > div > p:first-child { + margin-top: 0; +} + +.dx-chat-messagebubble-content > div > p:last-child { + margin-bottom: 0; +} + +.dx-chat-messagebubble-content ol, +.dx-chat-messagebubble-content ul { + white-space: normal; +} + +.dx-chat-messagebubble-content h1, +.dx-chat-messagebubble-content h2, +.dx-chat-messagebubble-content h3, +.dx-chat-messagebubble-content h4, +.dx-chat-messagebubble-content h5, +.dx-chat-messagebubble-content h6 { + font-size: revert; + font-weight: revert; +} + +.dx-chat-disabled .dx-chat-messagebox { + opacity: 0.5; + pointer-events: none; +} diff --git a/apps/demos/menuMeta.json b/apps/demos/menuMeta.json index 656d9ffd7ad0..87e40d5793b6 100644 --- a/apps/demos/menuMeta.json +++ b/apps/demos/menuMeta.json @@ -2098,6 +2098,7 @@ "Title": "AI and Chatbot Integration", "Name": "AIAndChatbotIntegration", "Widget": "Chat", + "Modules": "html-react-parser", "DemoType": "Web" } ] From 2ac1f5da3fcefb90e243bab37e0408df659a7ec4 Mon Sep 17 00:00:00 2001 From: Vasily Strelyaev Date: Fri, 6 Dec 2024 22:15:57 +0400 Subject: [PATCH 10/21] fix: return localization dictionaries back (#28514) --- .../Angular/app/app.component.ts | 4 +- .../Localization/UsingGlobalize/React/App.tsx | 4 +- .../UsingGlobalize/ReactJs/App.js | 4 +- .../Localization/UsingGlobalize/Vue/App.vue | 4 +- .../UsingIntl/Angular/app/app.component.ts | 4 +- .../Localization/UsingIntl/React/App.tsx | 4 +- .../Localization/UsingIntl/ReactJs/App.js | 4 +- .../Demos/Localization/UsingIntl/Vue/App.vue | 4 +- apps/demos/configs/React/config.bundle.js | 2 +- apps/demos/configs/React/config.js | 2 +- apps/demos/configs/ReactJs/config.bundle.js | 2 +- apps/demos/configs/ReactJs/config.js | 2 +- apps/demos/utils/bundle/index.js | 2 +- .../devextreme/build/gulp/localization.js | 8 +-- .../core => }/localization/messages/ar.json | 0 .../core => }/localization/messages/ca.json | 0 .../core => }/localization/messages/cs.json | 0 .../core => }/localization/messages/de.json | 0 .../core => }/localization/messages/el.json | 0 .../core => }/localization/messages/en.json | 0 .../core => }/localization/messages/es.json | 0 .../core => }/localization/messages/fa.json | 0 .../core => }/localization/messages/fi.json | 0 .../core => }/localization/messages/fr.json | 0 .../core => }/localization/messages/hu.json | 0 .../core => }/localization/messages/it.json | 0 .../core => }/localization/messages/ja.json | 0 .../core => }/localization/messages/lt.json | 0 .../core => }/localization/messages/lv.json | 0 .../core => }/localization/messages/nb.json | 0 .../core => }/localization/messages/nl.json | 0 .../core => }/localization/messages/pl.json | 0 .../core => }/localization/messages/pt.json | 0 .../core => }/localization/messages/ro.json | 0 .../core => }/localization/messages/ru.json | 0 .../core => }/localization/messages/sl.json | 0 .../core => }/localization/messages/sv.json | 0 .../core => }/localization/messages/tr.json | 0 .../core => }/localization/messages/vi.json | 0 .../localization/messages/zh-tw.json | 0 .../core => }/localization/messages/zh.json | 0 .../commonParts/loadPanel.tests.js | 2 +- .../DevExpress.localization/locales.tests.js | 52 +++++++++---------- .../localization.messages.test.js | 2 +- .../validation.tests.js | 2 +- .../datebox.tests.js | 2 +- .../DevExpress.ui.widgets/button.tests.js | 2 +- 47 files changed, 56 insertions(+), 56 deletions(-) rename packages/devextreme/js/{common/core => }/localization/messages/ar.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/ca.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/cs.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/de.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/el.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/en.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/es.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/fa.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/fi.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/fr.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/hu.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/it.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/ja.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/lt.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/lv.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/nb.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/nl.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/pl.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/pt.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/ro.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/ru.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/sl.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/sv.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/tr.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/vi.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/zh-tw.json (100%) rename packages/devextreme/js/{common/core => }/localization/messages/zh.json (100%) diff --git a/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts b/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts index 8e3d25d17e7d..ecce89fabec9 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts +++ b/apps/demos/Demos/Localization/UsingGlobalize/Angular/app/app.component.ts @@ -8,8 +8,8 @@ import 'devextreme/localization/globalize/date'; import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; -import deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; -import ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; +import deMessages from 'npm:devextreme/localization/messages/de.json!json'; +import ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; import deCldrData from 'npm:devextreme-cldr-data/de.json!json'; import ruCldrData from 'npm:devextreme-cldr-data/ru.json!json'; diff --git a/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx b/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx index 724a2794ad7d..b8c231be96b3 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx +++ b/apps/demos/Demos/Localization/UsingGlobalize/React/App.tsx @@ -9,8 +9,8 @@ import 'devextreme/localization/globalize/date'; import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; -import deMessages from 'devextreme/common/core/localization/messages/de.json'; -import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; +import deMessages from 'devextreme/localization/messages/de.json'; +import ruMessages from 'devextreme/localization/messages/ru.json'; import deCldrData from 'devextreme-cldr-data/de.json'; import ruCldrData from 'devextreme-cldr-data/ru.json'; diff --git a/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js b/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js index 79660350cfd1..2ebd1e15d128 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js +++ b/apps/demos/Demos/Localization/UsingGlobalize/ReactJs/App.js @@ -7,8 +7,8 @@ import 'devextreme/localization/globalize/number'; import 'devextreme/localization/globalize/date'; import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; -import deMessages from 'devextreme/common/core/localization/messages/de.json'; -import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; +import deMessages from 'devextreme/localization/messages/de.json'; +import ruMessages from 'devextreme/localization/messages/ru.json'; import deCldrData from 'devextreme-cldr-data/de.json'; import ruCldrData from 'devextreme-cldr-data/ru.json'; import supplementalCldrData from 'devextreme-cldr-data/supplemental.json'; diff --git a/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue b/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue index 7361909f8c1d..cb5add991431 100644 --- a/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue +++ b/apps/demos/Demos/Localization/UsingGlobalize/Vue/App.vue @@ -69,8 +69,8 @@ import 'devextreme/localization/globalize/currency'; import 'devextreme/localization/globalize/message'; /* eslint-disable import/no-unresolved */ /* eslint-disable import/no-webpack-loader-syntax */ -import * as deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; -import * as ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; +import * as deMessages from 'npm:devextreme/localization/messages/de.json!json'; +import * as ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; import * as deCldrData from 'npm:devextreme-cldr-data/de.json!json'; import * as ruCldrData from 'npm:devextreme-cldr-data/ru.json!json'; import * as supplementalCldrData from 'npm:devextreme-cldr-data/supplemental.json!json'; diff --git a/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts b/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts index f90ed845c760..cc7aa5448a6d 100644 --- a/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts +++ b/apps/demos/Demos/Localization/UsingIntl/Angular/app/app.component.ts @@ -5,8 +5,8 @@ import { DxSelectBoxModule, DxDataGridModule } from 'devextreme-angular'; import { locale, loadMessages, formatMessage } from 'devextreme/localization'; -import deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; -import ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; +import deMessages from 'npm:devextreme/localization/messages/de.json!json'; +import ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; import { Locale, Payment, Service } from './app.service'; if (!/localhost/.test(document.location.host)) { diff --git a/apps/demos/Demos/Localization/UsingIntl/React/App.tsx b/apps/demos/Demos/Localization/UsingIntl/React/App.tsx index db018e87c73b..c3033eafd311 100644 --- a/apps/demos/Demos/Localization/UsingIntl/React/App.tsx +++ b/apps/demos/Demos/Localization/UsingIntl/React/App.tsx @@ -4,8 +4,8 @@ import React, { useState } from 'react'; import DataGrid, { Column, Editing, FilterRow } from 'devextreme-react/data-grid'; import SelectBox, { SelectBoxTypes } from 'devextreme-react/select-box'; -import deMessages from 'devextreme/common/core/localization/messages/de.json'; -import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; +import deMessages from 'devextreme/localization/messages/de.json'; +import ruMessages from 'devextreme/localization/messages/ru.json'; import { locale, loadMessages, formatMessage } from 'devextreme/localization'; import service from './data.ts'; diff --git a/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js b/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js index 15a5a303cf11..7e8d2f742bce 100644 --- a/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js +++ b/apps/demos/Demos/Localization/UsingIntl/ReactJs/App.js @@ -3,8 +3,8 @@ import React, { useState } from 'react'; import DataGrid, { Column, Editing, FilterRow } from 'devextreme-react/data-grid'; import SelectBox from 'devextreme-react/select-box'; -import deMessages from 'devextreme/common/core/localization/messages/de.json'; -import ruMessages from 'devextreme/common/core/localization/messages/ru.json'; +import deMessages from 'devextreme/localization/messages/de.json'; +import ruMessages from 'devextreme/localization/messages/ru.json'; import { locale, loadMessages, formatMessage } from 'devextreme/localization'; import service from './data.js'; diff --git a/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue b/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue index dbd7d9b810ed..bb1cfb9efc0a 100644 --- a/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue +++ b/apps/demos/Demos/Localization/UsingIntl/Vue/App.vue @@ -65,8 +65,8 @@ import { import DxSelectBox, { DxSelectBoxTypes } from 'devextreme-vue/select-box'; /* eslint-disable import/no-unresolved */ /* eslint-disable import/no-webpack-loader-syntax */ -import * as deMessages from 'npm:devextreme/common/core/localization/messages/de.json!json'; -import * as ruMessages from 'npm:devextreme/common/core/localization/messages/ru.json!json'; +import * as deMessages from 'npm:devextreme/localization/messages/de.json!json'; +import * as ruMessages from 'npm:devextreme/localization/messages/ru.json!json'; import { locale as dxLocale, loadMessages, formatMessage as dxFormatMessage } from 'devextreme/localization'; import service from './data.ts'; diff --git a/apps/demos/configs/React/config.bundle.js b/apps/demos/configs/React/config.bundle.js index d87d4838bc9f..b603c1619458 100644 --- a/apps/demos/configs/React/config.bundle.js +++ b/apps/demos/configs/React/config.bundle.js @@ -47,7 +47,7 @@ const bundleConfig = { }, map: { 'devextreme.react.systemjs.js': '../../../../bundles/devextreme.react.systemjs.js', - 'devextreme/common/core/localization/messages': 'npm:devextreme/common/core/localization/messages', + 'devextreme/localization/messages': 'npm:devextreme/localization/messages', }, packages: { 'react': { diff --git a/apps/demos/configs/React/config.js b/apps/demos/configs/React/config.js index 2889787b7557..041e2325fe9a 100644 --- a/apps/demos/configs/React/config.js +++ b/apps/demos/configs/React/config.js @@ -161,7 +161,7 @@ window.config = { 'devextreme/events/utils': { main: 'index', }, - 'devextreme/common/core/localization/messages': { + 'devextreme/localization/messages': { format: 'json', defaultExtension: 'json', }, diff --git a/apps/demos/configs/ReactJs/config.bundle.js b/apps/demos/configs/ReactJs/config.bundle.js index 2e66ceb2d215..698ffa4e391c 100644 --- a/apps/demos/configs/ReactJs/config.bundle.js +++ b/apps/demos/configs/ReactJs/config.bundle.js @@ -42,7 +42,7 @@ const bundleConfig = { }, map: { 'devextreme.react.systemjs.js': '../../../../../bundles/devextreme.react.systemjs.js', - 'devextreme/common/core/localization/messages': 'npm:devextreme/common/core/localization/messages', + 'devextreme/localization/messages': 'npm:devextreme/localization/messages', }, packages: { 'react': { diff --git a/apps/demos/configs/ReactJs/config.js b/apps/demos/configs/ReactJs/config.js index 37f69cb7ee00..cd3d318242f9 100644 --- a/apps/demos/configs/ReactJs/config.js +++ b/apps/demos/configs/ReactJs/config.js @@ -162,7 +162,7 @@ window.config = { 'devextreme/events/utils': { main: 'index', }, - 'devextreme/common/core/localization/messages': { + 'devextreme/localization/messages': { format: 'json', defaultExtension: '', }, diff --git a/apps/demos/utils/bundle/index.js b/apps/demos/utils/bundle/index.js index 8bc6eaedc6fb..b1119b401f7f 100644 --- a/apps/demos/utils/bundle/index.js +++ b/apps/demos/utils/bundle/index.js @@ -176,7 +176,7 @@ const prepareConfigs = (framework)=> { }]; additionPaths = { - 'devextreme/common/core/localization/messages/*': 'node_modules/devextreme/common/core/localization/messages/*', + 'devextreme/localization/messages/*': 'node_modules/devextreme/localization/messages/*', }; packages = [ diff --git a/packages/devextreme/build/gulp/localization.js b/packages/devextreme/build/gulp/localization.js index b55f61901c81..b8269002aae1 100644 --- a/packages/devextreme/build/gulp/localization.js +++ b/packages/devextreme/build/gulp/localization.js @@ -84,7 +84,7 @@ const accountingFormats = function() { }; const RESULT_PATH = path.join(context.RESULT_JS_PATH, 'localization'); -const DICTIONARY_SOURCE_FOLDER = 'js/common/core/localization/messages'; +const DICTIONARY_SOURCE_FOLDER = 'js/localization/messages'; const getLocales = function(directory) { return fs.readdirSync(directory).map(file => { @@ -119,8 +119,8 @@ gulp.task('generate-community-locales', () => { return gulp .src([ - 'js/common/core/localization/messages/*.json', - '!js/common/core/localization/messages/en.json' + 'js/localization/messages/*.json', + '!js/localization/messages/en.json' ]) .pipe(through.obj(function(file, encoding, callback) { const parsedFile = JSON.parse(file.contents.toString(encoding)); @@ -169,7 +169,7 @@ gulp.task('localization-messages', gulp.parallel(getLocales(DICTIONARY_SOURCE_FO gulp.task('localization-generated-sources', gulp.parallel([ { - data: require('../../js/common/core/localization/messages/en.json'), + data: require('../../js/localization/messages/en.json'), filename: 'default_messages.js', exportName: 'defaultMessages', destination: 'js/common/core/localization' diff --git a/packages/devextreme/js/common/core/localization/messages/ar.json b/packages/devextreme/js/localization/messages/ar.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/ar.json rename to packages/devextreme/js/localization/messages/ar.json diff --git a/packages/devextreme/js/common/core/localization/messages/ca.json b/packages/devextreme/js/localization/messages/ca.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/ca.json rename to packages/devextreme/js/localization/messages/ca.json diff --git a/packages/devextreme/js/common/core/localization/messages/cs.json b/packages/devextreme/js/localization/messages/cs.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/cs.json rename to packages/devextreme/js/localization/messages/cs.json diff --git a/packages/devextreme/js/common/core/localization/messages/de.json b/packages/devextreme/js/localization/messages/de.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/de.json rename to packages/devextreme/js/localization/messages/de.json diff --git a/packages/devextreme/js/common/core/localization/messages/el.json b/packages/devextreme/js/localization/messages/el.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/el.json rename to packages/devextreme/js/localization/messages/el.json diff --git a/packages/devextreme/js/common/core/localization/messages/en.json b/packages/devextreme/js/localization/messages/en.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/en.json rename to packages/devextreme/js/localization/messages/en.json diff --git a/packages/devextreme/js/common/core/localization/messages/es.json b/packages/devextreme/js/localization/messages/es.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/es.json rename to packages/devextreme/js/localization/messages/es.json diff --git a/packages/devextreme/js/common/core/localization/messages/fa.json b/packages/devextreme/js/localization/messages/fa.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/fa.json rename to packages/devextreme/js/localization/messages/fa.json diff --git a/packages/devextreme/js/common/core/localization/messages/fi.json b/packages/devextreme/js/localization/messages/fi.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/fi.json rename to packages/devextreme/js/localization/messages/fi.json diff --git a/packages/devextreme/js/common/core/localization/messages/fr.json b/packages/devextreme/js/localization/messages/fr.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/fr.json rename to packages/devextreme/js/localization/messages/fr.json diff --git a/packages/devextreme/js/common/core/localization/messages/hu.json b/packages/devextreme/js/localization/messages/hu.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/hu.json rename to packages/devextreme/js/localization/messages/hu.json diff --git a/packages/devextreme/js/common/core/localization/messages/it.json b/packages/devextreme/js/localization/messages/it.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/it.json rename to packages/devextreme/js/localization/messages/it.json diff --git a/packages/devextreme/js/common/core/localization/messages/ja.json b/packages/devextreme/js/localization/messages/ja.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/ja.json rename to packages/devextreme/js/localization/messages/ja.json diff --git a/packages/devextreme/js/common/core/localization/messages/lt.json b/packages/devextreme/js/localization/messages/lt.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/lt.json rename to packages/devextreme/js/localization/messages/lt.json diff --git a/packages/devextreme/js/common/core/localization/messages/lv.json b/packages/devextreme/js/localization/messages/lv.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/lv.json rename to packages/devextreme/js/localization/messages/lv.json diff --git a/packages/devextreme/js/common/core/localization/messages/nb.json b/packages/devextreme/js/localization/messages/nb.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/nb.json rename to packages/devextreme/js/localization/messages/nb.json diff --git a/packages/devextreme/js/common/core/localization/messages/nl.json b/packages/devextreme/js/localization/messages/nl.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/nl.json rename to packages/devextreme/js/localization/messages/nl.json diff --git a/packages/devextreme/js/common/core/localization/messages/pl.json b/packages/devextreme/js/localization/messages/pl.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/pl.json rename to packages/devextreme/js/localization/messages/pl.json diff --git a/packages/devextreme/js/common/core/localization/messages/pt.json b/packages/devextreme/js/localization/messages/pt.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/pt.json rename to packages/devextreme/js/localization/messages/pt.json diff --git a/packages/devextreme/js/common/core/localization/messages/ro.json b/packages/devextreme/js/localization/messages/ro.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/ro.json rename to packages/devextreme/js/localization/messages/ro.json diff --git a/packages/devextreme/js/common/core/localization/messages/ru.json b/packages/devextreme/js/localization/messages/ru.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/ru.json rename to packages/devextreme/js/localization/messages/ru.json diff --git a/packages/devextreme/js/common/core/localization/messages/sl.json b/packages/devextreme/js/localization/messages/sl.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/sl.json rename to packages/devextreme/js/localization/messages/sl.json diff --git a/packages/devextreme/js/common/core/localization/messages/sv.json b/packages/devextreme/js/localization/messages/sv.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/sv.json rename to packages/devextreme/js/localization/messages/sv.json diff --git a/packages/devextreme/js/common/core/localization/messages/tr.json b/packages/devextreme/js/localization/messages/tr.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/tr.json rename to packages/devextreme/js/localization/messages/tr.json diff --git a/packages/devextreme/js/common/core/localization/messages/vi.json b/packages/devextreme/js/localization/messages/vi.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/vi.json rename to packages/devextreme/js/localization/messages/vi.json diff --git a/packages/devextreme/js/common/core/localization/messages/zh-tw.json b/packages/devextreme/js/localization/messages/zh-tw.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/zh-tw.json rename to packages/devextreme/js/localization/messages/zh-tw.json diff --git a/packages/devextreme/js/common/core/localization/messages/zh.json b/packages/devextreme/js/localization/messages/zh.json similarity index 100% rename from packages/devextreme/js/common/core/localization/messages/zh.json rename to packages/devextreme/js/localization/messages/zh.json diff --git a/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js b/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js index 84839ffc80ad..c9c852ee0bab 100644 --- a/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.exporter/commonParts/loadPanel.tests.js @@ -1,7 +1,7 @@ import { setHeight } from 'core/utils/size'; import $ from 'core/renderer'; import localization from 'localization'; -import ja from 'common/core/localization/messages/ja.json!'; +import ja from 'localization/messages/ja.json!'; import messageLocalization from 'common/core/localization/message'; import { getWindow, setWindow } from 'core/utils/window'; diff --git a/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js index 30e914299833..7148c2d07e2c 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/locales.tests.js @@ -2,32 +2,32 @@ const messageLocalization = require('common/core/localization/message'); const localization = require('localization'); const dictionaries = {}; -dictionaries['ar'] = require('common/core/localization/messages/ar.json!'); -dictionaries['ca'] = require('common/core/localization/messages/ca.json!'); -dictionaries['cs'] = require('common/core/localization/messages/cs.json!'); -dictionaries['de'] = require('common/core/localization/messages/de.json!'); -dictionaries['el'] = require('common/core/localization/messages/el.json!'); -dictionaries['en'] = require('common/core/localization/messages/en.json!'); -dictionaries['es'] = require('common/core/localization/messages/es.json!'); -dictionaries['fi'] = require('common/core/localization/messages/fi.json!'); -dictionaries['fr'] = require('common/core/localization/messages/fr.json!'); -dictionaries['hu'] = require('common/core/localization/messages/hu.json!'); -dictionaries['it'] = require('common/core/localization/messages/it.json!'); -dictionaries['ja'] = require('common/core/localization/messages/ja.json!'); -dictionaries['lt'] = require('common/core/localization/messages/lt.json!'); -dictionaries['lv'] = require('common/core/localization/messages/lv.json!'); -dictionaries['nb'] = require('common/core/localization/messages/nb.json!'); -dictionaries['nl'] = require('common/core/localization/messages/nl.json!'); -dictionaries['pt'] = require('common/core/localization/messages/pt.json!'); -dictionaries['ro'] = require('common/core/localization/messages/ro.json!'); -dictionaries['ru'] = require('common/core/localization/messages/ru.json!'); -dictionaries['sl'] = require('common/core/localization/messages/sl.json!'); -dictionaries['sv'] = require('common/core/localization/messages/sv.json!'); -dictionaries['tr'] = require('common/core/localization/messages/tr.json!'); -dictionaries['vi'] = require('common/core/localization/messages/vi.json!'); -dictionaries['zh-tw'] = require('common/core/localization/messages/zh-tw.json!'); -dictionaries['zh'] = require('common/core/localization/messages/zh.json!'); -dictionaries['fa'] = require('common/core/localization/messages/fa.json!'); +dictionaries['ar'] = require('localization/messages/ar.json!'); +dictionaries['ca'] = require('localization/messages/ca.json!'); +dictionaries['cs'] = require('localization/messages/cs.json!'); +dictionaries['de'] = require('localization/messages/de.json!'); +dictionaries['el'] = require('localization/messages/el.json!'); +dictionaries['en'] = require('localization/messages/en.json!'); +dictionaries['es'] = require('localization/messages/es.json!'); +dictionaries['fi'] = require('localization/messages/fi.json!'); +dictionaries['fr'] = require('localization/messages/fr.json!'); +dictionaries['hu'] = require('localization/messages/hu.json!'); +dictionaries['it'] = require('localization/messages/it.json!'); +dictionaries['ja'] = require('localization/messages/ja.json!'); +dictionaries['lt'] = require('localization/messages/lt.json!'); +dictionaries['lv'] = require('localization/messages/lv.json!'); +dictionaries['nb'] = require('localization/messages/nb.json!'); +dictionaries['nl'] = require('localization/messages/nl.json!'); +dictionaries['pt'] = require('localization/messages/pt.json!'); +dictionaries['ro'] = require('localization/messages/ro.json!'); +dictionaries['ru'] = require('localization/messages/ru.json!'); +dictionaries['sl'] = require('localization/messages/sl.json!'); +dictionaries['sv'] = require('localization/messages/sv.json!'); +dictionaries['tr'] = require('localization/messages/tr.json!'); +dictionaries['vi'] = require('localization/messages/vi.json!'); +dictionaries['zh-tw'] = require('localization/messages/zh-tw.json!'); +dictionaries['zh'] = require('localization/messages/zh.json!'); +dictionaries['fa'] = require('localization/messages/fa.json!'); const LOCALES = [ 'ar', 'ca', 'cs', 'de', 'el', diff --git a/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js b/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js index fb2c4c879ee2..6f4570399b3b 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/localization.messages.test.js @@ -1,7 +1,7 @@ const localization = require('localization'); const dictionaries = {}; -dictionaries['zh-tw'] = require('common/core/localization/messages/zh-tw.json!'); +dictionaries['zh-tw'] = require('localization/messages/zh-tw.json!'); QUnit.module('Locale messages of DevExtreme', { }, () => { diff --git a/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js b/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js index edf83bb11f69..623796d1dd67 100644 --- a/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.localization/validation.tests.js @@ -10,7 +10,7 @@ const cldrData = [ const ValidationEngine = require('ui/validation_engine'); const Globalize = require('globalize'); const localization = require('localization'); -const fr = require('common/core/localization/messages/fr.json!'); +const fr = require('localization/messages/fr.json!'); cldrData.forEach(localeCldrData => { Globalize.load(localeCldrData); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js index a8a4caa865ca..44d85ada1a0d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/datebox.tests.js @@ -13,7 +13,7 @@ import keyboardMock from '../../helpers/keyboardMock.js'; import { getActiveElement } from '../../helpers/shadowDom.js'; import messageLocalization from 'common/core/localization/message'; import localization from 'localization'; -import ja from 'common/core/localization/messages/ja.json!'; +import ja from 'localization/messages/ja.json!'; import pointerMock from '../../helpers/pointerMock.js'; import support from '__internal/core/utils/m_support'; import typeUtils from 'core/utils/type'; diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js index 828f749631c7..812ed5a8a285 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/button.tests.js @@ -7,7 +7,7 @@ import keyboardMock from '../../helpers/keyboardMock.js'; import pointerMock from '../../helpers/pointerMock.js'; import * as checkStyleHelper from '../../helpers/checkStyleHelper.js'; import localization from 'localization'; -import ja from 'common/core/localization/messages/ja.json!'; +import ja from 'localization/messages/ja.json!'; import { Deferred } from 'core/utils/deferred'; import dxButton from 'ui/button'; import { isRenderer } from 'core/utils/type'; From c2f2b0b33a94c00f80ed0f7c96c0a8fe347a366e Mon Sep 17 00:00:00 2001 From: Vasily Strelyaev Date: Sat, 7 Dec 2024 00:22:30 +0400 Subject: [PATCH 11/21] fix: framework demos fail when system.js faces some auto re-exports (#28512) --- apps/demos/utils/bundle/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/demos/utils/bundle/index.js b/apps/demos/utils/bundle/index.js index b1119b401f7f..de1daa887370 100644 --- a/apps/demos/utils/bundle/index.js +++ b/apps/demos/utils/bundle/index.js @@ -5,6 +5,7 @@ const Builder = require('systemjs-builder'); const babel = require('@babel/core'); const url = require('url'); +const GRID_COMMON_STAR_IMPORT = 'exports.Grids = __importStar(require("./grids"));'; // https://stackoverflow.com/questions/42412965/how-to-load-named-exports-with-systemjs/47108328 const prepareModulesToNamedImport = () => { @@ -216,6 +217,14 @@ const prepareConfigs = (framework)=> { ] }; + // This auto-generated runtime import is useless because grid.js exports only types, + // but System.js transpiles this import into code that crashes when triggered in a Demo. + const removeImportTranspiledToCrashingCode = (result) => { + if(result.code.includes(GRID_COMMON_STAR_IMPORT)) { + result.code = result.code.replace(GRID_COMMON_STAR_IMPORT, ''); + } + } + const result = new Promise((resolve) => { // systemjs-builder uses babel 6, so we use babel 7 here for transpiling ES2020 babel.transformFile(url.fileURLToPath(load.name), babelOptions, (err, result) => { @@ -223,6 +232,7 @@ const prepareConfigs = (framework)=> { fetch(load).then(r => resolve(r)); console.log('Unexpected transipling error (babel 7): ' + err); } else { + removeImportTranspiledToCrashingCode(result); resolve(result.code); } }); From 234ec8818ad8c0b2571c017323a8e5baf1107e03 Mon Sep 17 00:00:00 2001 From: Alexander Kozlovskiy Date: Mon, 9 Dec 2024 20:34:51 +0400 Subject: [PATCH 12/21] Chat - add ai chat bot demo for ReactJs (#28521) --- .../AIAndChatbotIntegration/React/Message.tsx | 2 +- .../AIAndChatbotIntegration/React/data.ts | 3 - .../AIAndChatbotIntegration/ReactJs/App.js | 181 ++++++++++++++++++ .../ReactJs/Message.js | 63 ++++++ .../AIAndChatbotIntegration/ReactJs/data.js | 20 ++ .../ReactJs/index.html | 44 +++++ .../AIAndChatbotIntegration/ReactJs/index.js | 9 + .../ReactJs/styles.css | 65 +++++++ 8 files changed, 383 insertions(+), 4 deletions(-) create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/App.js create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/Message.js create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/data.js create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.html create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.js create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/styles.css diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx index 39807803d2fd..262cffe611e9 100644 --- a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/Message.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef } from 'react'; +import React, { useState } from 'react'; import Button from 'devextreme-react/button'; import { unified } from 'unified'; import remarkParse from 'remark-parse'; diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts index 63fdf20d2a96..d758d604cb0e 100644 --- a/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/React/data.ts @@ -1,8 +1,5 @@ import { ChatTypes } from 'devextreme-react/chat'; -const date = new Date(); -date.setHours(0, 0, 0, 0); - export const AzureOpenAIConfig = { dangerouslyAllowBrowser: true, deployment: 'gpt-4o-mini', diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/App.js b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/App.js new file mode 100644 index 000000000000..8f898bb238c3 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/App.js @@ -0,0 +1,181 @@ +import React, { useState } from 'react'; +import Chat from 'devextreme-react/chat'; +import { AzureOpenAI } from 'openai'; +import CustomStore from 'devextreme/data/custom_store'; +import DataSource from 'devextreme/data/data_source'; +import { loadMessages } from 'devextreme/localization'; +import { + user, + assistant, + AzureOpenAIConfig, + REGENERATION_TEXT, + CHAT_DISABLED_CLASS, + ALERT_TIMEOUT +} from './data.js'; +import Message from './Message.js'; + +const store = []; +const messages = []; + +loadMessages({ + en: { + 'dxChat-emptyListMessage': 'Chat is Empty', + 'dxChat-emptyListPrompt': 'AI Assistant is ready to answer your questions.', + 'dxChat-textareaPlaceholder': 'Ask AI Assistant...', + }, +}); + +const chatService = new AzureOpenAI(AzureOpenAIConfig); + +async function getAIResponse(messages) { + const params = { + messages, + max_tokens: 1000, + temperature: 0.7, + }; + + const response = await chatService.chat.completions.create(params); + const data = { choices: response.choices }; + + return data.choices[0].message?.content; +} + +function updateLastMessage(text = REGENERATION_TEXT) { + const items = dataSource.items(); + const lastMessage = items.at(-1); + + dataSource.store().push([{ + type: 'update', + key: lastMessage.id, + data: { text }, + }]); +} + +function renderAssistantMessage(text) { + const message = { + id: Date.now(), + timestamp: new Date(), + author: assistant, + text, + }; + + dataSource.store().push([{ type: 'insert', data: message }]); +} + +const customStore = new CustomStore({ + key: 'id', + load: () => { + return new Promise((resolve) => { + setTimeout(() => { + resolve([...store]); + }, 0); + }); + }, + insert: (message) => { + return new Promise((resolve) => { + setTimeout(() => { + store.push(message); + resolve(message); + }); + }); + }, +}); + +const dataSource = new DataSource({ + store: customStore, + paginate: false, +}) + +export default function App() { + const [alerts, setAlerts] = useState([]); + const [typingUsers, setTypingUsers] = useState([]); + const [classList, setClassList] = useState(''); + + function alertLimitReached() { + setAlerts([{ + message: 'Request limit reached, try again in a minute.' + }]); + + setTimeout(() => { + setAlerts([]); + }, ALERT_TIMEOUT); + } + + function toggleDisabledState(disabled, event = undefined) { + setClassList(disabled ? CHAT_DISABLED_CLASS : ''); + + if (disabled) { + event?.target.blur(); + } else { + event?.target.focus(); + } + }; + + async function processMessageSending(message, event) { + toggleDisabledState(true, event); + + messages.push({ role: 'user', content: message.text }); + setTypingUsers([assistant]); + + try { + const aiResponse = await getAIResponse(messages); + + setTimeout(() => { + setTypingUsers([]); + messages.push({ role: 'assistant', content: aiResponse }); + renderAssistantMessage(aiResponse); + }, 200); + } catch { + setTypingUsers([]); + messages.pop(); + alertLimitReached(); + } finally { + toggleDisabledState(false, event); + } + } + + async function regenerate() { + toggleDisabledState(true); + + try { + const aiResponse = await getAIResponse(messages.slice(0, -1)); + + updateLastMessage(aiResponse); + messages.at(-1).content = aiResponse; + } catch { + updateLastMessage(messages.at(-1).content); + alertLimitReached(); + } finally { + toggleDisabledState(false); + } + } + + function onMessageEntered({ message, event }) { + dataSource.store().push([{ type: 'insert', data: { id: Date.now(), ...message } }]); + + if (!alerts.length) { + processMessageSending(message, event); + } + } + + function onRegenerateButtonClick() { + updateLastMessage(); + regenerate(); + } + + return ( + Message(data, onRegenerateButtonClick)} + /> + ); +} diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/Message.js b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/Message.js new file mode 100644 index 000000000000..0a2f46d82af2 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/Message.js @@ -0,0 +1,63 @@ +import React, { useState } from 'react'; +import Button from 'devextreme-react/button'; +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkRehype from 'remark-rehype'; +import rehypeStringify from 'rehype-stringify'; +import HTMLReactParser from 'html-react-parser'; + +import { REGENERATION_TEXT } from './data.js'; + +function convertToHtml(value) { + const result = unified() + .use(remarkParse) + .use(remarkRehype) + .use(rehypeStringify) + .processSync(value) + .toString(); + + return result; +} + +function Message({ message }, onRegenerateButtonClick) { + const [icon, setIcon] = useState('copy'); + + if (message.text === REGENERATION_TEXT) { + return {REGENERATION_TEXT}; + } + + function onCopyButtonClick() { + navigator.clipboard?.writeText(message.text); + setIcon('check'); + + setTimeout(() => { + setIcon('copy'); + }, 2500); + } + + return ( + +
+ {HTMLReactParser(convertToHtml(message.text))} +
+
+
+
+ ) +} + +export default Message; diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/data.js b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/data.js new file mode 100644 index 000000000000..3a66e2b837f0 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/data.js @@ -0,0 +1,20 @@ +export const AzureOpenAIConfig = { + dangerouslyAllowBrowser: true, + deployment: 'gpt-4o-mini', + apiVersion: '2024-02-01', + endpoint: 'https://public-api.devexpress.com/demo-openai', + apiKey: 'DEMO', +} + +export const REGENERATION_TEXT = 'Regeneration...'; +export const CHAT_DISABLED_CLASS = 'dx-chat-disabled'; +export const ALERT_TIMEOUT = 1000 * 60; + +export const user = { + id: 'user', +}; + +export const assistant = { + id: 'assistant', + name: 'Virtual Assistant', +}; diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.html b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.html new file mode 100644 index 000000000000..db31b0fd60c6 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.html @@ -0,0 +1,44 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.js b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.js new file mode 100644 index 000000000000..d9d7442ce766 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/index.js @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +import App from './App.js'; + +ReactDOM.render( + , + document.getElementById('app'), +); diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/styles.css b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/styles.css new file mode 100644 index 000000000000..320a5354463e --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/ReactJs/styles.css @@ -0,0 +1,65 @@ +#app { + display: flex; + justify-content: center; +} + +.dx-chat { + max-width: 900px; +} + +.dx-chat-messagelist-empty-image { + display: none; +} + +.dx-chat-messagelist-empty-message { + font-size: var(--dx-font-size-heading-5); +} + +.dx-chat-messagebubble-content, +.dx-chat-messagebubble-text { + display: flex; + flex-direction: column; +} + +.dx-bubble-button-container { + display: none; +} + +.dx-button { + display: inline-block; + color: var(--dx-color-icon); +} + +.dx-chat-messagegroup-alignment-start:last-child .dx-chat-messagebubble:last-child .dx-bubble-button-container { + display: flex; + gap: 4px; + margin-top: 8px; +} + +.dx-chat-messagebubble-content > div > p:first-child { + margin-top: 0; +} + +.dx-chat-messagebubble-content > div > p:last-child { + margin-bottom: 0; +} + +.dx-chat-messagebubble-content ol, +.dx-chat-messagebubble-content ul { + white-space: normal; +} + +.dx-chat-messagebubble-content h1, +.dx-chat-messagebubble-content h2, +.dx-chat-messagebubble-content h3, +.dx-chat-messagebubble-content h4, +.dx-chat-messagebubble-content h5, +.dx-chat-messagebubble-content h6 { + font-size: revert; + font-weight: revert; +} + +.dx-chat-disabled .dx-chat-messagebox { + opacity: 0.5; + pointer-events: none; +} From 3096fe9deefc985f385c3b5a44a0739c09dbe469 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Mon, 9 Dec 2024 22:09:23 +0400 Subject: [PATCH 13/21] Chat: update menuMeta for Customization aspnet demos (#28524) --- apps/demos/menuMeta.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/demos/menuMeta.json b/apps/demos/menuMeta.json index 87e40d5793b6..2893f7cf8b59 100644 --- a/apps/demos/menuMeta.json +++ b/apps/demos/menuMeta.json @@ -2086,7 +2086,13 @@ "Name": "Customization", "DocUrl": "Guide/UI_Components/Chat/Customization/", "Widget": "Chat", - "DemoType": "Web" + "DemoType": "Web", + "MvcAdditionalFiles": [ + "/Models/SampleData/ChatData.cs", + "/Models/Chat/User.cs", + "/Models/Chat/Message.cs", + "/ViewModels/ChatViewModel.cs" + ] } ] }, From 9ca03433034484a1dc0b0fdfca50179c61ef70b2 Mon Sep 17 00:00:00 2001 From: Vlada Skorohodova <94827090+vladaskorohodova@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:48:05 +0400 Subject: [PATCH 14/21] Update new demo descriptions (#28525) --- apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md | 4 ++-- .../demos/Demos/DataGrid/FixedAndStickyColumns/description.md | 4 ++-- apps/demos/Demos/Pagination/Overview/description.md | 2 +- apps/demos/Demos/TreeList/ColumnFixing/description.md | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md b/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md index 18824c42ff84..a7e914317678 100644 --- a/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/description.md @@ -1,4 +1,4 @@ -This demo uses an AI service and the DevExtreme Chat component to create a chatbot UI. +This demo uses an [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service) service and the DevExtreme Chat component to create a chatbot UI. You can integrate Chat with various AI services, including [OpenAI](https://openai.com/), [Google Dialogflow](https://cloud.google.com/dialogflow/docs), and [Microsoft Bot Framework](https://dev.botframework.com/). ## Handling dataSource (reloadOnChange: false) @@ -11,7 +11,7 @@ The Chat specifies a [messageTemplate](/Documentation/ApiReference/UI_Components ## Response Format Conversion: Markdown to HTML -The AI model outputs responses in Markdown, while the Chat requires HTML output. This examples uses the [unified](https://github.com/unifiedjs) plugin library to convert response content. Review `convertToHtml` function code for implementation details. +The AI model outputs responses in Markdown, while the Chat requires HTML output. This example uses the [unified](https://github.com/unifiedjs) plugin library to convert response content. Review `convertToHtml` function code for implementation details. ## Default Caption Customization diff --git a/apps/demos/Demos/DataGrid/FixedAndStickyColumns/description.md b/apps/demos/Demos/DataGrid/FixedAndStickyColumns/description.md index 19b882579083..33e1bbc0b9f0 100644 --- a/apps/demos/Demos/DataGrid/FixedAndStickyColumns/description.md +++ b/apps/demos/Demos/DataGrid/FixedAndStickyColumns/description.md @@ -10,6 +10,6 @@ The column is fixed to the right edge of the grid. - *'sticky'* The column sticks to left and right edges when it reaches them. - -To fix or unfix a column, users should right-click the column's header and select the corresponding operation in the context menu. To prevent users from fixing or unfixing a column, set its [allowFixing](/Documentation/ApiReference/UI_Components/dxDataGrid/Configuration/columns/#allowFixing) property to `false`. \ No newline at end of file +To fix or unfix a column, users should right-click the column's header and select the corresponding operation in the context menu. To prevent users from fixing or unfixing a column, set its [allowFixing](/Documentation/ApiReference/UI_Components/dxDataGrid/Configuration/columns/#allowFixing) property to `false`. + \ No newline at end of file diff --git a/apps/demos/Demos/Pagination/Overview/description.md b/apps/demos/Demos/Pagination/Overview/description.md index ada1cc79830e..e334bd8d669b 100644 --- a/apps/demos/Demos/Pagination/Overview/description.md +++ b/apps/demos/Demos/Pagination/Overview/description.md @@ -1,4 +1,4 @@ -DevExpress Pagination UI component allows users to navigate between pages and adjust page size at runtime. The Pagination component in this demo allows users to browse employee cards. +DevExpress Pagination UI component allows users to navigate between pages and adjust page size at runtime. In this demo, users can browse employee cards with the Pagination component. To set up a Pagination component, specify the following options: diff --git a/apps/demos/Demos/TreeList/ColumnFixing/description.md b/apps/demos/Demos/TreeList/ColumnFixing/description.md index 11b58966bb5d..d8d8917ac35d 100644 --- a/apps/demos/Demos/TreeList/ColumnFixing/description.md +++ b/apps/demos/Demos/TreeList/ColumnFixing/description.md @@ -10,6 +10,6 @@ The column is fixed to the right edge of the grid. - *'sticky'* The column sticks to left and right edges when it reaches them. - -To fix or unfix a column, users should right-click the column's header and select the corresponding operation in the context menu. To prevent users from fixing or unfixing a column, set its [allowFixing](/Documentation/ApiReference/UI_Components/dxTreeList/Configuration/columns/#allowFixing) property to `false`. \ No newline at end of file +To fix or unfix a column, users should right-click the column's header and select the corresponding operation in the context menu. To prevent users from fixing or unfixing a column, set its [allowFixing](/Documentation/ApiReference/UI_Components/dxTreeList/Configuration/columns/#allowFixing) property to `false`. + \ No newline at end of file From 733a7557135620e67a6335d11e10c753530e2f42 Mon Sep 17 00:00:00 2001 From: Alexander Kozlovskiy Date: Tue, 10 Dec 2024 15:15:45 +0400 Subject: [PATCH 15/21] Chat: Add Vue AI And Chatbot Integration Demo --- .../Chat/AIAndChatbotIntegration/Vue/App.vue | 267 ++++++++++++++++++ .../Chat/AIAndChatbotIntegration/Vue/data.ts | 74 +++++ .../AIAndChatbotIntegration/Vue/index.html | 29 ++ .../Chat/AIAndChatbotIntegration/Vue/index.ts | 4 + .../widgets/tagbox/GroupedItems.test.js | 4 +- 5 files changed, 376 insertions(+), 2 deletions(-) create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/App.vue create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/data.ts create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.html create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.ts diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/App.vue b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/App.vue new file mode 100644 index 000000000000..7d79c37f6389 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/App.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/data.ts b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/data.ts new file mode 100644 index 000000000000..c4a995f167f1 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/data.ts @@ -0,0 +1,74 @@ +import CustomStore from "devextreme/data/custom_store"; +import DataSource from "devextreme/data/data_source"; +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkRehype from 'remark-rehype'; +import rehypeStringify from 'rehype-stringify'; + +export const dictionary = { + en: { + 'dxChat-emptyListMessage': 'Chat is Empty', + 'dxChat-emptyListPrompt': 'AI Assistant is ready to answer your questions.', + 'dxChat-textareaPlaceholder': 'Ask AI Assistant...', + }, +} + +export const AzureOpenAIConfig = { + dangerouslyAllowBrowser: true, + deployment: 'gpt-4o-mini', + apiVersion: '2024-02-01', + endpoint: 'https://public-api.devexpress.com/demo-openai', + apiKey: 'DEMO', +} + +export const REGENERATION_TEXT = 'Regeneration...'; +export const CHAT_DISABLED_CLASS = 'dx-chat-disabled'; +export const ALERT_TIMEOUT = 1000 * 60; + +export const user = { + id: 'c94c0e76-fb49-4b9b-8f07-9f93ed93b4f3', + name: 'John Doe', +}; + +export const assistant = { + id: 'assistant', + name: 'Virtual Assistant', +}; + +export const store = []; +export const messages = []; + +const customStore = new CustomStore({ + key: 'id', + load: () => { + return new Promise((resolve) => { + setTimeout(() => { + resolve([...store]); + }, 0); + }); + }, + insert: (message) => { + return new Promise((resolve) => { + setTimeout(() => { + store.push(message); + resolve(message); + }); + }); + }, +}); + +export const dataSource = new DataSource({ + store: customStore, + paginate: false, +}) + +export function convertToHtml(value: string) { + const result = unified() + .use(remarkParse) + .use(remarkRehype) + .use(rehypeStringify) + .processSync(value) + .toString(); + + return result; +} diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.html b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.html new file mode 100644 index 000000000000..2413f2254bf1 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.html @@ -0,0 +1,29 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.ts b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.ts new file mode 100644 index 000000000000..684d04215d72 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Vue/index.ts @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './App.vue'; + +createApp(App).mount('#app'); diff --git a/apps/demos/testing/widgets/tagbox/GroupedItems.test.js b/apps/demos/testing/widgets/tagbox/GroupedItems.test.js index c1109ab435ee..d7d2f288a577 100644 --- a/apps/demos/testing/widgets/tagbox/GroupedItems.test.js +++ b/apps/demos/testing/widgets/tagbox/GroupedItems.test.js @@ -19,7 +19,7 @@ runManualTest('TagBox', 'GroupedItems', ['jQuery', 'React', 'Vue', 'Angular'], ( await testScreenshot(t, takeScreenshot, 'tagbox_groupeditems_first_opened.png'); await t - .pressKey('esc') + .pressKey('esc'); await t .pressKey('tab') @@ -28,7 +28,7 @@ runManualTest('TagBox', 'GroupedItems', ['jQuery', 'React', 'Vue', 'Angular'], ( await testScreenshot(t, takeScreenshot, 'tagbox_groupeditems_second_opened.png'); await t - .pressKey('esc') + .pressKey('esc'); await t .pressKey('tab') From bf4ce2801661cc5ee315a604236b6596d13816f7 Mon Sep 17 00:00:00 2001 From: Alexander Kozlovskiy Date: Wed, 11 Dec 2024 02:32:49 +0400 Subject: [PATCH 16/21] Chat: Add Angular AI And Chatbot Integration Demo (#28519) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: marker dao ® --- .../Angular/app/app.component.css | 65 ++++++ .../Angular/app/app.component.html | 44 ++++ .../Angular/app/app.component.ts | 120 +++++++++++ .../Angular/app/app.service.ts | 204 ++++++++++++++++++ .../Angular/index.html | 26 +++ 5 files changed, 459 insertions(+) create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.css create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.html create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.ts create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.service.ts create mode 100644 apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/index.html diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.css b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.css new file mode 100644 index 000000000000..eab5cdc6e206 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.css @@ -0,0 +1,65 @@ +.demo-container { + display: flex; + justify-content: center; +} + +::ng-deep .dx-chat { + max-width: 900px; +} + +::ng-deep .dx-chat-messagelist-empty-image { + display: none; +} + +::ng-deep .dx-chat-messagelist-empty-message { + font-size: var(--dx-font-size-heading-5); +} + +::ng-deep .dx-chat-messagebubble-content, +::ng-deep .dx-chat-messagebubble-text { + display: flex; + flex-direction: column; +} + +::ng-deep .dx-bubble-button-container { + display: none; +} + +::ng-deep .dx-button { + display: inline-block; + color: var(--dx-color-icon); +} + +::ng-deep .dx-chat-messagegroup-alignment-start:last-child .dx-chat-messagebubble:last-child .dx-bubble-button-container { + display: flex; + gap: 4px; + margin-top: 8px; +} + +::ng-deep .dx-template-wrapper > div > p:first-child { + margin-top: 0; +} + +::ng-deep .dx-template-wrapper > div > p:last-child { + margin-bottom: 0; +} + +::ng-deep .dx-chat-messagebubble-content ol, +::ng-deep .dx-chat-messagebubble-content ul { + white-space: normal; +} + +::ng-deep .dx-chat-messagebubble-content h1, +::ng-deep .dx-chat-messagebubble-content h2, +::ng-deep .dx-chat-messagebubble-content h3, +::ng-deep .dx-chat-messagebubble-content h4, +::ng-deep .dx-chat-messagebubble-content h5, +::ng-deep .dx-chat-messagebubble-content h6 { + font-size: revert; + font-weight: revert; +} + +::ng-deep .dx-chat-disabled .dx-chat-messagebox { + opacity: 0.5; + pointer-events: none; +} diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.html b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.html new file mode 100644 index 000000000000..6895eefd74a5 --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.html @@ -0,0 +1,44 @@ +
+ +
+ + {{ regenerationText }} + + +
+
+
+ + + + +
+
+
+
+
diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.ts b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.ts new file mode 100644 index 000000000000..dcb678531d0b --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.component.ts @@ -0,0 +1,120 @@ +import { NgModule, Component, enableProdMode } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { DxChatModule } from 'devextreme-angular'; +import { DxButtonModule } from 'devextreme-angular'; +import { + User, + Alert, + Message, + MessageEnteredEvent +} from 'devextreme/ui/chat'; +import { Observable } from 'rxjs'; +import { AppService } from './app.service'; +import { loadMessages } from 'devextreme/localization'; +import { DataSource } from 'devextreme/common/data'; + +if (!/localhost/.test(document.location.host)) { + enableProdMode(); +} + +let modulePrefix = ''; +// @ts-ignore +if (window && window.config.packageConfigPaths) { + modulePrefix = '/app'; +} + +@Component({ + selector: 'demo-app', + templateUrl: `.${modulePrefix}/app.component.html`, + styleUrls: [`.${modulePrefix}/app.component.css`], +}) +export class AppComponent { + dataSource: DataSource; + + user: User; + + typingUsers$: Observable; + + alerts$: Observable; + + regenerationText: string; + + copyButtonIcon: string; + + isDisabled: boolean; + + constructor(private readonly appService: AppService) { + loadMessages(this.appService.getDictionary()); + + this.dataSource = this.appService.dataSource; + this.user = this.appService.user; + this.alerts$ = this.appService.alerts$; + this.typingUsers$ = this.appService.typingUsers$; + this.regenerationText = this.appService.REGENERATION_TEXT; + this.copyButtonIcon = 'copy'; + this.isDisabled = false; + } + + convertToHtml(message: Message): string { + return this.appService.convertToHtml(message.text); + } + + toggleDisabledState(disabled: boolean, event = undefined) { + this.isDisabled = disabled; + + if (disabled) { + event?.target.blur(); + } else { + event?.target.focus(); + } + }; + + async onMessageEntered(e: MessageEnteredEvent) { + if (!this.appService.alerts.length) { + this.toggleDisabledState(true, e.event); + } + + try { + await this.appService.onMessageEntered(e); + } finally { + this.toggleDisabledState(false, e.event); + } + } + + onCopyButtonClick(message: Message) { + navigator.clipboard?.writeText(message.text); + + this.copyButtonIcon = 'check'; + + setTimeout(() => { + this.copyButtonIcon = 'copy'; + }, 2500); + } + + async onRegenerateButtonClick() { + this.appService.updateLastMessage(); + this.toggleDisabledState(true); + + try { + await this.appService.regenerate(); + } finally { + this.toggleDisabledState(false); + } + } +} + +@NgModule({ + imports: [ + BrowserModule, + DxChatModule, + DxButtonModule, + ], + declarations: [AppComponent], + bootstrap: [AppComponent], + providers: [AppService], +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.service.ts b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.service.ts new file mode 100644 index 000000000000..463e986e9edc --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/app/app.service.ts @@ -0,0 +1,204 @@ +import { Injectable } from '@angular/core'; +import { Observable, BehaviorSubject } from 'rxjs'; +import { AzureOpenAI } from 'openai'; +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkRehype from 'remark-rehype'; +import rehypeStringify from 'rehype-stringify'; +import { + User, + Alert, + MessageEnteredEvent +} from 'devextreme/ui/chat'; +import { DataSource, CustomStore } from 'devextreme/common/data'; + +@Injectable({ + providedIn: 'root', +}) + +export class AppService { + chatService: AzureOpenAI; + + AzureOpenAIConfig = { + dangerouslyAllowBrowser: true, + deployment: 'gpt-4o-mini', + apiVersion: '2024-02-01', + endpoint: 'https://public-api.devexpress.com/demo-openai', + apiKey: 'DEMO', + } + + REGENERATION_TEXT = 'Regeneration...'; + ALERT_TIMEOUT = 1000 * 60; + + user: User = { + id: 'user', + }; + + assistant: User = { + id: 'assistant', + name: 'Virtual Assistant', + }; + + store: any[] = []; + messages: any[] = []; + alerts: Alert[] = []; + + customStore: CustomStore; + + dataSource: DataSource; + + typingUsersSubject: BehaviorSubject = new BehaviorSubject([]); + + alertsSubject: BehaviorSubject = new BehaviorSubject([]); + + constructor() { + this.chatService = new AzureOpenAI(this.AzureOpenAIConfig); + this.initDataSource() + this.typingUsersSubject.next([]); + this.alertsSubject.next([]); + } + + get typingUsers$(): Observable { + return this.typingUsersSubject.asObservable(); + } + + get alerts$(): Observable { + return this.alertsSubject.asObservable(); + } + + getDictionary() { + return { + en: { + 'dxChat-emptyListMessage': 'Chat is Empty', + 'dxChat-emptyListPrompt': 'AI Assistant is ready to answer your questions.', + 'dxChat-textareaPlaceholder': 'Ask AI Assistant...', + } + } + } + + initDataSource() { + this.customStore = new CustomStore({ + key: 'id', + load: () => { + return new Promise((resolve) => { + setTimeout(() => { + resolve([...this.store]); + }, 0); + }); + }, + insert: (message) => { + return new Promise((resolve) => { + setTimeout(() => { + this.store.push(message); + resolve(message); + }); + }); + }, + }); + + this.dataSource = new DataSource({ + store: this.customStore, + paginate: false, + }); + } + + async getAIResponse(messages) { + const params = { + messages, + max_tokens: 1000, + temperature: 0.7, + }; + + const response = await this.chatService.chat.completions.create(params); + const data = { choices: response.choices }; + + return data.choices[0].message?.content; + } + + async processMessageSending(message, event) { + this.messages.push({ role: 'user', content: message.text }); + this.typingUsersSubject.next([this.assistant]); + + try { + const aiResponse = await this.getAIResponse(this.messages); + + setTimeout(() => { + this.typingUsersSubject.next([]); + this.messages.push({ role: 'assistant', content: aiResponse }); + this.renderAssistantMessage(aiResponse); + }, 200); + } catch { + this.typingUsersSubject.next([]); + this.messages.pop(); + this.alertLimitReached(); + } + } + + updateLastMessage(text = this.REGENERATION_TEXT) { + const items = this.dataSource.items(); + const lastMessage = items.at(-1); + + this.dataSource.store().push([{ + type: 'update', + key: lastMessage.id, + data: { text }, + }]); + } + + renderAssistantMessage(text: string) { + const message = { + id: Date.now(), + timestamp: new Date(), + author: this.assistant, + text, + }; + + this.dataSource.store().push([{ type: 'insert', data: message }]); + } + + alertLimitReached() { + this.setAlerts([{ + message: 'Request limit reached, try again in a minute.' + }]); + + setTimeout(() => { + this.setAlerts([]); + }, this.ALERT_TIMEOUT); + } + + setAlerts(alerts: Alert[]) { + this.alerts = alerts; + this.alertsSubject.next(alerts); + } + + async regenerate() { + try { + const aiResponse = await this.getAIResponse(this.messages.slice(0, -1)); + + this.updateLastMessage(aiResponse); + this.messages.at(-1).content = aiResponse; + } catch { + this.updateLastMessage(this.messages.at(-1).content); + this.alertLimitReached(); + } + } + + convertToHtml(value: string) { + const result = unified() + .use(remarkParse) + .use(remarkRehype) + .use(rehypeStringify) + .processSync(value) + .toString(); + + return result; + } + + async onMessageEntered({ message, event }: MessageEnteredEvent) { + this.dataSource.store().push([{ type: 'insert', data: { id: Date.now(), ...message } }]); + + if (!this.alerts.length) { + await this.processMessageSending(message, event); + } + } +} diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/index.html b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/index.html new file mode 100644 index 000000000000..1ab1fb54a1df --- /dev/null +++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/Angular/index.html @@ -0,0 +1,26 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + + + +
+ Loading... +
+ + From d37b38b6bfbdf8fa28f9d31278beaeea9d6090a1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 00:51:38 +0000 Subject: [PATCH 17/21] chore(deps): update dependency serve-static to v1.16.2 (#28528) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/demos/package.json | 2 +- pnpm-lock.yaml | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/demos/package.json b/apps/demos/package.json index 44b6bdcd5046..047d9dcf140e 100644 --- a/apps/demos/package.json +++ b/apps/demos/package.json @@ -128,7 +128,7 @@ "prettier": "2.8.8", "rollup": "4.22.4", "serve-index": "1.9.1", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "stylelint": "16.5.0", "stylelint-config-recommended-vue": "1.5.0", "stylelint-config-standard": "35.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bd64ce4bdc6..a1f2ec6e7fb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -518,8 +518,8 @@ importers: specifier: 1.9.1 version: 1.9.1 serve-static: - specifier: 1.16.0 - version: 1.16.0 + specifier: 1.16.2 + version: 1.16.2 stylelint: specifier: 16.5.0 version: 16.5.0(typescript@5.4.5) @@ -14195,6 +14195,10 @@ packages: resolution: {integrity: sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==} engines: {node: '>= 0.8.0'} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -33265,6 +33269,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + set-blocking@2.0.0: {} set-cookie-parser@2.7.1: {} From c697de0f4090f099851d6a377a99a1bbb1583745 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 11:01:58 +0000 Subject: [PATCH 18/21] chore(deps): update dependency express to v4.21.1 (#28526) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/demos/package.json | 2 +- packages/devextreme-themebuilder/package.json | 2 +- pnpm-lock.yaml | 93 +++++-------------- 3 files changed, 27 insertions(+), 70 deletions(-) diff --git a/apps/demos/package.json b/apps/demos/package.json index 047d9dcf140e..16c3505adf78 100644 --- a/apps/demos/package.json +++ b/apps/demos/package.json @@ -111,7 +111,7 @@ "eslint-plugin-deprecation": "2.0.0", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-perf": "3.3.2", - "express": "4.20.0", + "express": "4.21.1", "glob": "10.4.5", "gulp": "4.0.2", "gulp-clean": "0.4.0", diff --git a/packages/devextreme-themebuilder/package.json b/packages/devextreme-themebuilder/package.json index 3e1e41ce19ba..fa5b749ced5f 100644 --- a/packages/devextreme-themebuilder/package.json +++ b/packages/devextreme-themebuilder/package.json @@ -39,7 +39,7 @@ "eslint-config-airbnb-base": "15.0.0", "eslint-config-airbnb-typescript": "17.1.0", "eslint-config-devextreme": "1.1.5", - "express": "4.20.0", + "express": "4.21.1", "filing-cabinet": "4.1.6", "fs-extra": "11.2.0", "immutable": "4.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1f2ec6e7fb8..3fbd1fc04f86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -470,8 +470,8 @@ importers: specifier: 3.3.2 version: 3.3.2(eslint@8.56.0) express: - specifier: 4.20.0 - version: 4.20.0 + specifier: 4.21.1 + version: 4.21.1 glob: specifier: 10.4.5 version: 10.4.5 @@ -1566,8 +1566,8 @@ importers: specifier: 1.1.5 version: 1.1.5(s7hytideue6mgyvvaok756vzia) express: - specifier: 4.20.0 - version: 4.20.0 + specifier: 4.21.1 + version: 4.21.1 filing-cabinet: specifier: 4.1.6 version: 4.1.6 @@ -7528,8 +7528,8 @@ packages: resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} engines: {node: '>= 0.6'} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} cookie@0.7.2: @@ -9044,8 +9044,8 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - express@4.20.0: - resolution: {integrity: sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==} + express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} engines: {node: '>= 0.10.0'} ext@1.7.0: @@ -9227,8 +9227,8 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-babel-config@2.1.2: @@ -13306,10 +13306,6 @@ packages: resolution: {integrity: sha512-ZvWjbAj4MWAj6bnCc9CnculsXnJr7eoKsvH/8rVpZbqYxP2z05HNQa43ZVwe/dVRcFxgfFHE2CkUqn0sCyLfHw==} hasBin: true - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -14176,10 +14172,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -14191,10 +14183,6 @@ packages: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} - serve-static@1.16.0: - resolution: {integrity: sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==} - engines: {node: '>= 0.8.0'} - serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -21111,7 +21099,7 @@ snapshots: ejs: 3.1.10 esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 - express: 4.20.0 + express: 4.21.1 find-cache-dir: 3.3.2 fs-extra: 11.2.0 process: 0.11.10 @@ -21141,7 +21129,7 @@ snapshots: constants-browserify: 1.0.0 css-loader: 6.10.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) es-module-lexer: 1.5.4 - express: 4.20.0 + express: 4.21.1 fork-ts-checker-webpack-plugin: 8.0.0(typescript@4.9.5)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) fs-extra: 11.2.0 html-webpack-plugin: 5.6.3(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.15))(esbuild@0.18.20)) @@ -21203,7 +21191,7 @@ snapshots: detect-indent: 6.1.0 envinfo: 7.14.0 execa: 5.1.1 - express: 4.20.0 + express: 4.21.1 find-up: 5.0.0 fs-extra: 11.2.0 get-npm-tarball-url: 2.1.0 @@ -21333,7 +21321,7 @@ snapshots: cli-table3: 0.6.5 compression: 1.7.5 detect-port: 1.6.1 - express: 4.20.0 + express: 4.21.1 fs-extra: 11.2.0 globby: 11.1.0 ip: 2.0.1 @@ -24680,7 +24668,7 @@ snapshots: cookie@0.4.1: {} - cookie@0.6.0: {} + cookie@0.7.1: {} cookie@0.7.2: {} @@ -26816,21 +26804,21 @@ snapshots: exponential-backoff@3.1.1: {} - express@4.20.0: + express@4.21.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 merge-descriptors: 1.0.3 @@ -26839,11 +26827,11 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.0 - serve-static: 1.16.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -27077,10 +27065,10 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -32263,10 +32251,6 @@ snapshots: qrcode-terminal@0.10.0: {} - qs@6.11.0: - dependencies: - side-channel: 1.0.6 - qs@6.13.0: dependencies: side-channel: 1.0.6 @@ -33208,24 +33192,6 @@ snapshots: semver@7.6.3: {} - send@0.18.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - send@0.19.0: dependencies: debug: 2.6.9 @@ -33260,15 +33226,6 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.16.0: - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -35995,7 +35952,7 @@ snapshots: compression: 1.7.5 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.20.0 + express: 4.21.1 graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.7(@types/express@4.17.21) @@ -36036,7 +35993,7 @@ snapshots: compression: 1.7.5 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.20.0 + express: 4.21.1 graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.7(@types/express@4.17.21) @@ -36077,7 +36034,7 @@ snapshots: compression: 1.7.5 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.20.0 + express: 4.21.1 graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.7(@types/express@4.17.21) From 1f664c86ffcd0e0022ffb356e1f62137e61ee3bf Mon Sep 17 00:00:00 2001 From: Alex Lavrov <36633600+alexslavr@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:32:58 +0400 Subject: [PATCH 19/21] Skip discovering metadata in all:build dev mode (#28537) --- tools/scripts/build-all.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/scripts/build-all.ts b/tools/scripts/build-all.ts index 2a1f7770beed..578f395c7766 100644 --- a/tools/scripts/build-all.ts +++ b/tools/scripts/build-all.ts @@ -16,7 +16,7 @@ const DEVEXTREME_NPM_DIR = path.join(ROOT_DIR, 'packages/devextreme/artifacts/np const injectDescriptions = () => { sh.pushd(ROOT_DIR); - // Inject descriptions + const DOCUMENTATION_TEMP_DIR = path.join(ARTIFACTS_DIR, 'doc_tmp'); sh.exec(`git clone -b ${MAJOR_VERSION} --depth 1 --config core.longpaths=true https://github.com/DevExpress/devextreme-documentation.git ${DOCUMENTATION_TEMP_DIR}`); @@ -43,12 +43,13 @@ const packAndCopy = (outputDir: string) => { const monorepoVersion = sh.exec('pnpm pkg get version', { silent: true }).stdout.replaceAll('"', ''); const MAJOR_VERSION = monorepoVersion.split('.').slice(0, 2).join('_'); -// Prepare metadata sh.cd(ROOT_DIR); -sh.exec('pnpm run tools:discover-declarations'); -sh.exec(`pnpm run tools make-aspnet-metadata --version ${MAJOR_VERSION}`); if (!devMode) { + sh.exec('pnpm run tools:discover-declarations'); + // aspnet metadata will be used in Build custom-tasks to inject aspnet descriptions + sh.exec(`pnpm run tools make-aspnet-metadata --version ${MAJOR_VERSION}`); + injectDescriptions(); } From 385280c5bdda60f2c3572e99ea744295f7772bc1 Mon Sep 17 00:00:00 2001 From: volvl Date: Wed, 11 Dec 2024 16:54:27 +0400 Subject: [PATCH 20/21] Set dx-classes when resetting custom class in vue (#28538) --- .../src/core/__tests__/textbox.test.ts | 24 +++++++++++++++++++ packages/devextreme-vue/src/core/component.ts | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/devextreme-vue/src/core/__tests__/textbox.test.ts b/packages/devextreme-vue/src/core/__tests__/textbox.test.ts index 29a3885f9b56..bb60c478f8ac 100644 --- a/packages/devextreme-vue/src/core/__tests__/textbox.test.ts +++ b/packages/devextreme-vue/src/core/__tests__/textbox.test.ts @@ -82,4 +82,28 @@ describe('two-way binding', () => { expect(component.element.classList.toString()).toBe('custom2 dx-show-invalid-badge dx-textbox dx-texteditor dx-editor-outlined dx-texteditor-empty dx-widget'); }); }); + + it('dxClass should be set when class attr is undefined', async () => { + expect.assertions(1); + const vm = defineComponent({ + template: + ` + `, + components: { + DxTextBox, + }, + props: { + customClass: { + type: String, + default: true, + }, + }, + }); + const wrapper = mount(vm); + const component = wrapper.getComponent('#component'); + await wrapper.setProps({ customClass: false }); + await nextTick(() => { + expect(component.element.classList.toString()).toBe(' dx-show-invalid-badge dx-textbox dx-texteditor dx-editor-outlined dx-texteditor-empty dx-widget'); + }); + }); }); diff --git a/packages/devextreme-vue/src/core/component.ts b/packages/devextreme-vue/src/core/component.ts index de579a29874a..f09aec6d430b 100644 --- a/packages/devextreme-vue/src/core/component.ts +++ b/packages/devextreme-vue/src/core/component.ts @@ -54,7 +54,7 @@ function getAttrs(attrs, dxClasses: string[]) { const attributes = {}; includeAttrs.forEach((attr) => { const attrValue = attrs[attr]; - if (attrValue) { + if (attrValue !== undefined && attrValue !== null) { attributes[attr] = attr === 'class' && dxClasses.length ? `${attrValue} ${dxClasses.join(' ')}` : attrValue; } }); From 8ea8ffb78bda420a8c4c3001fc9ab96909225899 Mon Sep 17 00:00:00 2001 From: ivanblinov2k17 Date: Wed, 11 Dec 2024 18:42:24 +0400 Subject: [PATCH 21/21] Chat: fix class for WG to be able to resize properly (#28527) --- apps/demos/Demos/Chat/Customization/React/index.html | 2 +- apps/demos/Demos/Chat/Customization/ReactJs/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/demos/Demos/Chat/Customization/React/index.html b/apps/demos/Demos/Chat/Customization/React/index.html index e90d25ad8798..ee451f8288ff 100644 --- a/apps/demos/Demos/Chat/Customization/React/index.html +++ b/apps/demos/Demos/Chat/Customization/React/index.html @@ -17,7 +17,7 @@ -
+
diff --git a/apps/demos/Demos/Chat/Customization/ReactJs/index.html b/apps/demos/Demos/Chat/Customization/ReactJs/index.html index c9ee055d50a5..db31b0fd60c6 100644 --- a/apps/demos/Demos/Chat/Customization/ReactJs/index.html +++ b/apps/demos/Demos/Chat/Customization/ReactJs/index.html @@ -37,7 +37,7 @@ -
+

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≺#cnC6~AGgw0!(jd6k0a5`WjG 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