{"version":3,"sources":["webpack:///./node_modules/devextreme/esm/data/abstract_store.js","webpack:///./node_modules/devextreme/esm/events/gesture/emitter.gesture.js","webpack:///./node_modules/devextreme/esm/events/utils/add_namespace.js","webpack:///./node_modules/devextreme/esm/events/utils/index.js","webpack:///./node_modules/devextreme/esm/core/utils/dependency_injector.js","webpack:///./node_modules/devextreme/esm/ui/button.js","webpack:///./node_modules/devextreme/esm/core/component_registrator.js","webpack:///./node_modules/devextreme/esm/data/array_query.js","webpack:///./node_modules/devextreme/esm/core/utils/object.js","webpack:///./node_modules/devextreme/esm/core/templates/empty_template.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.base.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.js","webpack:///./node_modules/devextreme/esm/core/templates/template_engine_registry.js","webpack:///./node_modules/devextreme/esm/core/templates/template_engines.js","webpack:///./node_modules/devextreme/esm/core/templates/template.js","webpack:///./node_modules/devextreme/esm/core/utils/template_manager.js","webpack:///./node_modules/devextreme/esm/localization/cldr-data/first_day_of_week_data.js","webpack:///./node_modules/devextreme/esm/localization/intl/date.js","webpack:///./node_modules/devextreme/esm/localization/date.js","webpack:///./node_modules/devextreme/esm/core/utils/callbacks.js","webpack:///./node_modules/devextreme/esm/ui/editor/ui.data_expression.js","webpack:///./node_modules/devextreme/esm/ui/menu/ui.submenu.js","webpack:///./node_modules/devextreme/esm/ui/menu/ui.menu.js","webpack:///./node_modules/devextreme/esm/ui/menu.js","webpack:///./node_modules/devextreme/esm/core/utils/ready_callbacks.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/utils.js","webpack:///./node_modules/devextreme/esm/ui/load_panel.js","webpack:///./node_modules/devextreme/esm/core/utils/queue.js","webpack:///./node_modules/devextreme/esm/data/data_source/operation_manager.js","webpack:///./node_modules/devextreme/esm/data/data_source/data_source.js","webpack:///./node_modules/devextreme/esm/core/utils/icon.js","webpack:///./node_modules/devextreme/esm/core/utils/html_parser.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.base.js","webpack:///./node_modules/devextreme/esm/ui/list/item.js","webpack:///./node_modules/devextreme/esm/ui/themes.js","webpack:///./node_modules/devextreme/esm/ui/themes_callback.js","webpack:///./node_modules/devextreme/esm/ui/box.js","webpack:///./node_modules/devextreme/esm/ui/validation_summary.js","webpack:///./node_modules/devextreme/esm/ui/popover.js","webpack:///./node_modules/devextreme/esm/events/drag.js","webpack:///./node_modules/devextreme/esm/ui/validation_message.js","webpack:///./node_modules/devextreme/esm/ui/editor/editor.js","webpack:///./node_modules/devextreme/esm/core/utils/version.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.strategy.grouped.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator_registry.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.static.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.switchable.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.switchable.button.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator_menu_helper.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.switchable.slide.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.swipe.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.context.js","webpack:///./node_modules/devextreme/esm/ui/radio_group/radio_button.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.selection.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.reorder.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.provider.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.search.js","webpack:///./node_modules/devextreme/esm/ui/list.js","webpack:///./node_modules/devextreme/esm/core/utils/resize_callbacks.js","webpack:///./node_modules/devextreme/esm/core/config.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.js","webpack:///./node_modules/devextreme/esm/core/utils/variable_wrapper.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_button.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_editor.js","webpack:///./node_modules/devextreme/esm/core/http_request.js","webpack:///./node_modules/devextreme/esm/core/utils/ajax.js","webpack:///./node_modules/devextreme/esm/events/core/keyboard_processor.js","webpack:///./node_modules/devextreme/esm/events/short.js","webpack:///./node_modules/devextreme/esm/core/action.js","webpack:///./node_modules/devextreme/esm/data/errors.js","webpack:///./node_modules/devextreme/esm/ui/text_box/utils.support.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.rule.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.clear.js","webpack:///./node_modules/devextreme/esm/ui/text_box/texteditor_button_collection/custom.js","webpack:///./node_modules/devextreme/esm/ui/text_box/texteditor_button_collection/index.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.base.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.strategy.base.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.strategy.default.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.strategy.input_events.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.js","webpack:///./node_modules/devextreme/esm/ui/text_box/ui.text_editor.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.live_update.js","webpack:///./node_modules/devextreme/esm/core/utils/selection_filter.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.strategy.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.strategy.plain.js","webpack:///./node_modules/devextreme/esm/events/core/emitter_registrator.js","webpack:///./node_modules/devextreme/esm/core/utils/window.js","webpack:///./node_modules/devextreme/esm/ui/text_box/utils.caret.js","webpack:///./node_modules/devextreme/esm/events/core/event_registrator.js","webpack:///./node_modules/devextreme/esm/core/templates/template_base.js","webpack:///./node_modules/devextreme/esm/animation/easing.js","webpack:///./node_modules/devextreme/esm/animation/fx.js","webpack:///./node_modules/devextreme/esm/core/memorized_callbacks.js","webpack:///./node_modules/devextreme/esm/ui/widget/selectors.js","webpack:///./node_modules/devextreme/esm/core/devices.js","webpack:///./node_modules/devextreme/esm/animation/frame.js","webpack:///./node_modules/devextreme/esm/ui/validation_engine.js","webpack:///./node_modules/devextreme/esm/data/data_source/utils.js","webpack:///./node_modules/devextreme/esm/core/dom_adapter.js","webpack:///./node_modules/devextreme/esm/ui/text_box/text_box.js","webpack:///./node_modules/devextreme/esm/ui/text_box.js","webpack:///./node_modules/devextreme/esm/core/utils/dom.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.mask.parts.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_utils.js","webpack:///./node_modules/devextreme/esm/ui/calendar/ui.calendar.navigator.js","webpack:///./node_modules/devextreme/esm/ui/calendar/ui.calendar.base_view.js","webpack:///./node_modules/devextreme/esm/ui/calendar/ui.calendar.views.js","webpack:///./node_modules/devextreme/esm/ui/calendar/ui.calendar.js","webpack:///./node_modules/devextreme/esm/ui/calendar.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.calendar.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_view_roller.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_view.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.date_view.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.native.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.time_view.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.calendar_with_time.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.list.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.base.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.mask.js","webpack:///./node_modules/devextreme/esm/ui/date_box/ui.date_box.js","webpack:///./node_modules/devextreme/esm/ui/date_box.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/animator.js","webpack:///./node_modules/devextreme/esm/color.js","webpack:///./node_modules/devextreme/esm/localization/ldml/number.js","webpack:///./node_modules/devextreme/esm/core/renderer_base.js","webpack:///./node_modules/devextreme/esm/core/renderer.js","webpack:///./node_modules/devextreme/esm/core/polyfills/promise.js","webpack:///./node_modules/devextreme/esm/core/polyfills/weak_map.js","webpack:///./node_modules/devextreme/esm/core/templates/function_template.js","webpack:///./node_modules/devextreme/esm/core/utils/math.js","webpack:///./node_modules/devextreme/esm/core/utils/inflector.js","webpack:///./node_modules/devextreme/esm/localization/ldml/date.formatter.js","webpack:///./node_modules/devextreme/esm/events/gesture/swipeable.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_list.js","webpack:///./node_modules/devextreme/esm/ui/select_box.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.native.pull_down.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.native.swipe_down.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.simulated.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view.js","webpack:///./node_modules/devextreme/esm/data_helper.js","webpack:///./node_modules/devextreme/esm/core/utils/style.js","webpack:///./node_modules/devextreme/esm/ui/toolbar/constants.js","webpack:///./node_modules/devextreme/esm/core/utils/common.js","webpack:///./node_modules/devextreme/esm/ui/validation/default_adapter.js","webpack:///./node_modules/devextreme/esm/ui/validator.js","webpack:///./node_modules/devextreme/esm/ui/shared/grouped_data_converter_mixin.js","webpack:///./node_modules/devextreme/esm/events/index.js","webpack:///./node_modules/devextreme/esm/events/contextmenu.js","webpack:///./node_modules/devextreme/esm/events/hold.js","webpack:///./node_modules/devextreme/esm/core/utils/view_port.js","webpack:///./node_modules/devextreme/esm/core/template_manager.js","webpack:///./node_modules/devextreme/esm/core/dom_component.js","webpack:///./node_modules/devextreme/esm/core/utils/position.js","webpack:///./node_modules/devextreme/esm/events/double_click.js","webpack:///./node_modules/devextreme/esm/ui/hierarchical_collection/ui.data_converter.js","webpack:///./node_modules/devextreme/esm/ui/hierarchical_collection/ui.data_adapter.js","webpack:///./node_modules/devextreme/esm/ui/hierarchical_collection/ui.hierarchical_collection_widget.js","webpack:///./node_modules/devextreme/esm/mobile/hide_callback.js","webpack:///./node_modules/devextreme/esm/ui/resizable.js","webpack:///./node_modules/devextreme/esm/ui/overlay/z_index.js","webpack:///./node_modules/devextreme/esm/ui/overlay/ui.overlay.js","webpack:///./node_modules/devextreme/esm/localization/ldml/date.format.js","webpack:///./node_modules/devextreme/esm/core/templates/bindable_template.js","webpack:///./node_modules/devextreme/esm/ui/text_box/texteditor_button_collection/button.js","webpack:///./node_modules/devextreme/esm/localization/default_date_names.js","webpack:///./node_modules/devextreme/esm/events/swipe.js","webpack:///./node_modules/devextreme/esm/events/pointer/base.js","webpack:///./node_modules/devextreme/esm/events/pointer/touch.js","webpack:///./node_modules/devextreme/esm/events/pointer/mspointer.js","webpack:///./node_modules/devextreme/esm/events/pointer/observer.js","webpack:///./node_modules/devextreme/esm/events/pointer/mouse.js","webpack:///./node_modules/devextreme/esm/events/pointer/mouse_and_touch.js","webpack:///./node_modules/devextreme/esm/events/pointer.js","webpack:///./node_modules/devextreme/esm/core/utils/browser.js","webpack:///./node_modules/devextreme/esm/core/utils/array.js","webpack:///./node_modules/devextreme/esm/localization/currency.js","webpack:///./node_modules/devextreme/esm/events/core/emitter.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.native.js","webpack:///./node_modules/devextreme/esm/core/utils/string.js","webpack:///./node_modules/devextreme/esm/core/component_registrator_callbacks.js","webpack:///./node_modules/devextreme/esm/core/utils/comparator.js","webpack:///./node_modules/devextreme/esm/core/options/utils.js","webpack:///./node_modules/devextreme/esm/core/options/option_manager.js","webpack:///./node_modules/devextreme/esm/core/options/index.js","webpack:///./node_modules/devextreme/esm/core/postponed_operations.js","webpack:///./node_modules/devextreme/esm/core/component.js","webpack:///./node_modules/devextreme/esm/localization/utils.js","webpack:///./node_modules/devextreme/esm/data/utils.js","webpack:///./node_modules/devextreme/esm/ui/overlay/utils.js","webpack:///./node_modules/devextreme/esm/ui/load_indicator.js","webpack:///./node_modules/devextreme/esm/ui/popup.js","webpack:///./node_modules/devextreme/esm/core/errors.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollbar.js","webpack:///./node_modules/devextreme/esm/core/utils/console.js","webpack:///./node_modules/devextreme/esm/events/core/emitter.feedback.js","webpack:///./node_modules/devextreme/esm/ui/selection/selection.strategy.js","webpack:///./node_modules/devextreme/esm/ui/selection/selection.strategy.deferred.js","webpack:///./node_modules/devextreme/esm/ui/selection/selection.strategy.standard.js","webpack:///./node_modules/devextreme/esm/ui/selection/selection.js","webpack:///./node_modules/devextreme/esm/core/templates/child_default_template.js","webpack:///./node_modules/devextreme/esm/core/utils/call_once.js","webpack:///./node_modules/devextreme/esm/ui/draggable.js","webpack:///./node_modules/devextreme/esm/localization/ldml/date.parser.js","webpack:///./node_modules/devextreme/esm/core/element.js","webpack:///./node_modules/devextreme/esm/ui/widget/utils.ink_ripple.js","webpack:///./node_modules/devextreme/esm/core/utils/iterator.js","webpack:///./node_modules/devextreme/esm/ui/action_sheet.js","webpack:///./node_modules/devextreme/esm/ui/widget/ui.errors.js","webpack:///./node_modules/devextreme/esm/data/array_store.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.async.js","webpack:///./node_modules/devextreme/esm/ui/toolbar/ui.toolbar.base.js","webpack:///./node_modules/devextreme/esm/core/utils/data.js","webpack:///./node_modules/devextreme/esm/events/core/event_registrator_callbacks.js","webpack:///./node_modules/devextreme/esm/ui/collection/item.js","webpack:///./node_modules/devextreme/esm/ui/context_menu/ui.context_menu.js","webpack:///./node_modules/devextreme/esm/ui/context_menu.js","webpack:///./node_modules/devextreme/esm/core/utils/extend.js","webpack:///./node_modules/devextreme/esm/events/visibility_change.js","webpack:///./node_modules/devextreme/esm/data/array_utils.js","webpack:///./node_modules/devextreme/esm/animation/position.js","webpack:///./node_modules/devextreme/esm/core/utils/type.js","webpack:///./node_modules/devextreme/esm/core/utils/public_component.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/devextreme/esm/core/version.js","webpack:///./node_modules/devextreme/esm/events/core/wheel.js","webpack:///./node_modules/devextreme/esm/events/core/hook_touch_props.js","webpack:///./node_modules/devextreme/esm/events/core/events_engine.js","webpack:///./node_modules/devextreme/esm/animation/translator.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.events.emitter.gesture.scroll.js","webpack:///./node_modules/devextreme/esm/data/query_adapters.js","webpack:///./node_modules/devextreme/esm/data/remote_query.js","webpack:///./node_modules/devextreme/esm/data/query_implementation.js","webpack:///./node_modules/devextreme/esm/data/query.js","webpack:///./node_modules/devextreme/esm/core/utils/storage.js","webpack:///./node_modules/devextreme/esm/core/utils/support.js","webpack:///./node_modules/devextreme/esm/core/events_strategy.js","webpack:///./node_modules/devextreme/esm/data/custom_store.js","webpack:///./node_modules/devextreme/esm/core/utils/deferred.js","webpack:///./node_modules/devextreme/esm/ui/validation_group.js","webpack:///./node_modules/devextreme/esm/core/remove_event.js","webpack:///./node_modules/devextreme/esm/core/utils/error.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.device.js","webpack:///./node_modules/devextreme/esm/ui/tree_view/ui.tree_view.base.js","webpack:///./node_modules/devextreme/esm/ui/tree_view/ui.tree_view.search.js","webpack:///./node_modules/devextreme/esm/ui/tree_view.js","webpack:///./node_modules/devextreme/esm/ui/widget/ui.search_box_mixin.js","webpack:///./node_modules/devextreme/esm/localization/default_messages.js","webpack:///./node_modules/devextreme/esm/localization/message.js","webpack:///./node_modules/devextreme/esm/core/guid.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.simulated.js","webpack:///./node_modules/devextreme/esm/localization/cldr-data/parent_locales.js","webpack:///./node_modules/devextreme/esm/localization/parentLocale.js","webpack:///./node_modules/devextreme/esm/localization/core.js","webpack:///./node_modules/devextreme/esm/ui/widget/swatch_container.js","webpack:///./node_modules/devextreme/esm/localization/open_xml_currency_format.js","webpack:///./node_modules/devextreme/esm/localization/cldr-data/accounting_formats.js","webpack:///./node_modules/devextreme/esm/localization/intl/number.js","webpack:///./node_modules/devextreme/esm/localization/number.js","webpack:///./node_modules/devextreme/esm/ui/number_box/utils.js","webpack:///./node_modules/devextreme/esm/ui/number_box/number_box.caret.js","webpack:///./node_modules/devextreme/esm/ui/number_box/number_box.spin.js","webpack:///./node_modules/devextreme/esm/ui/number_box/number_box.spins.js","webpack:///./node_modules/devextreme/esm/ui/number_box/number_box.base.js","webpack:///./node_modules/devextreme/esm/ui/number_box/number_box.mask.js","webpack:///./node_modules/devextreme/esm/ui/number_box/number_box.js","webpack:///./node_modules/devextreme/esm/ui/number_box.js","webpack:///./node_modules/devextreme/esm/ui/check_box.js","webpack:///./node_modules/devextreme/esm/events/utils/event_nodes_disposing.js","webpack:///./node_modules/devextreme/esm/events/click.js","webpack:///./node_modules/devextreme/esm/data/store_helper.js","webpack:///./node_modules/devextreme/esm/core/utils/date_serialization.js","webpack:///./node_modules/devextreme/esm/core/utils/date.js","webpack:///./node_modules/devextreme/esm/core/utils/array_compare.js","webpack:///./node_modules/devextreme/esm/ui/context_menu/ui.menu_base.edit.strategy.js","webpack:///./node_modules/devextreme/esm/ui/context_menu/ui.menu_base.js","webpack:///./node_modules/devextreme/esm/ui/sortable.js","webpack:///./node_modules/devextreme/esm/ui/widget/ui.widget.js","webpack:///./node_modules/devextreme/esm/core/element_data.js","webpack:///./node_modules/devextreme/esm/core/utils/size.js","webpack:///./node_modules/devextreme/esm/core/class.js","webpack:///./node_modules/devextreme/esm/events/hover.js"],"names":["abstract","queryByOptions","storeImpl","Store","inherit","ctor","options","that","this","_eventsStrategy","_","optionName","on","slice","toLowerCase","_key","key","_errorHandler","errorHandler","_useDefaultSearch","_customLoadOptions","keyOf","obj","_keyGetter","_requireKey","Error","load","fireEvent","_withLock","_loadImpl","done","result","createQuery","enumerate","task","args","arguments","processRequestResultLock","promise","resolveWith","fail","rejectWith","totalCount","_totalCountImpl","count","byKey","extraOptions","_addFailHandlers","_byKeyImpl","insert","values","_insertImpl","callbackValues","callbackKey","update","_updateImpl","push","changes","beforePushArgs","waitFor","_pushImpl","remove","_removeImpl","deferred","eventName","eventHandler","off","create","alias","registerClass","type","inheritor","members","apply","ready","add","abs","Math","SLEEP","INITED","STARTED","TOUCH_BOUNDARY","IMMEDIATE_TOUCH_BOUNDARY","IMMEDIATE_TIMEOUT","supportPointerEvents","setGestureCover","isDesktop","real","deviceType","$cover","addClass","css","subscribeGlobal","e","preventDefault","appendTo","toggle","cursor","gestureCover","gestureCoverStrategy","GestureEmitter","gesture","configure","data","getElement","immediate","callBase","allowInterruptionByMouseWheel","_stage","getDirection","direction","_cancel","_toggleGestureCover","start","_needSkipEvent","_startEvent","_startEventData","_init","_setupImmediateTimer","clearTimeout","_immediateTimer","_immediateAccepted","setTimeout","bind","move","_directionConfirmed","_resetActiveElement","_clearSelection","_adjustStartEvent","_start","_requestAccept","_move","_forgetAccept","touchBoundary","_getTouchBoundary","delta","deltaX","x","deltaY","y","horizontalMove","_validateMove","verticalMove","bothAccepted","horizontalAccepted","verticalAccepted","mainAxis","crossAxis","pageX","pageY","platform","find","length","_toggleGestureCoverImpl","isStarted","end","_end","_stop","dispose","initialTouchBoundary","newBoundary","addNamespace","eventNames","namespace","errors","Array","isArray","map","join","indexOf","split","concat","KEY_MAP","backspace","tab","enter","escape","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","delete","f","a","alt","control","shift","left","up","right","down","multiply","spacebar","del","subtract","esc","LEGACY_KEY_CODES","8","9","13","27","33","34","35","36","37","38","39","40","46","32","70","65","106","109","189","173","16","17","18","EVENT_SOURCES_REGEX","dx","mouse","touch","keyboard","pointer","fixMethod","copyEvent","originalEvent","Event","isDxEvent","eventSource","isNativeMouseEvent","isNativeTouchEvent","_ref","test","isPointerEvent","isMouseEvent","pointerType","isDxMouseWheelEvent","isTouchEvent","eventData","_ref3","timeStamp","time","eventDelta","from","to","hasTouches","pointers","touches","skipEvents","needSkipEvent","target","$target","isContentEditable","hasAttribute","touchInEditable","is","isTextArea","hasClass","isInputFocused","which","createEvent","event","extend","props","delegateTarget","trigger","normalizeKeyName","_ref4","isKeySupported","String","fromCharCode","getChar","_ref5","isCommandKeyPressed","_ref6","ctrlKey","metaKey","BaseClass","object","InjectedClass","instance","initialFields","injectFields","injectionObject","initial","inject","resetInjection","ANONYMOUS_TEMPLATE_NAME","Button","super","_feedbackHideTimeout","$element","active","inactive","$el","_eventBindingTarget","selector","_activeStateUnit","excludeValidators","showTimeout","_feedbackShowTimeout","hideTimeout","_defaultOptionsRules","device","isSimulator","focusStateEnabled","useInkRipple","_clickAction","validationGroup","_validationGroupConfig","model","_modelByElement","option","findGroup","icon","text","_templateData","_getDefaultOptions","hoverStateEnabled","onClick","iconPosition","activeStateEnabled","template","useSubmitBehavior","stylingMode","needValidate","validationStatus","_createAction","status","complete","validate","then","_ref2","_submitInput","click","stopPropagation","_renderType","_renderStylingMode","_renderInkRipple","_renderClick","_updateAriaLabel","_initMarkup","_updateContent","setAria","_templateManager","addDefaultTemplates","content","container","$icon","$textContainer","$container","append","prepend","_initTemplates","name","_updateClick","_updateType","_updateStylingMode","_updateSubmitInput","_invalidate","_optionChanged","NAME","_executeClickAction","isOnlyIconButton","_inkRipple","waveSizeCoefficient","useHoldAnimation","isCentered","changeWaveVisibility","visible","_disposed","config","element","_$content","showWave","hideWave","_attachActiveEvents","submitAction","_getSubmitAction","$content","attr","_$submitInput","get","_supportedKeys","space","ariaTarget","_getAriaTarget","replace","_createActionByOption","afterExecute","_getContentData","empty","toggleClass","$template","_getTemplateByOption","render","transclude","anonymousTemplateName","replaceWith","$submitInput","_renderSubmitInput","mode","forEach","removeClass","getGroupConfig","_findGroup","registerComponent","componentClass","fire","registerRendererComponent","fn","isMemberInvoke","memberName","memberArgs","call","each","getInstance","member","memberValue","Iterator","toArray","reset","next","current","countable","ArrayIterator","array","index","WrappedIterator","iter","MapIterator","mapper","hasNext","defaultCompare","xValue","yValue","SortIterator","getter","desc","compare","_wrap","rules","thenBy","sortedIter","_ensureSorted","sort","_compare","_unwrap","record","value","wrappedItem","xIndex","yIndex","i","rulesCount","rule","compareResult","compileCriteria","toString","compileEquals","negate","crit","isGroupCriterion","ops","isConjunctiveOperator","isConjunctiveNextOperator","d","isUnaryOperation","op","criteria","normalizeBinaryCriterion","getterValue","searchValue","lastIndexOf","FilterIterator","GroupIterator","_ensureGrouped","groupedIter","hash","keys","items","SelectIterator","SliceIterator","skip","take","max","pos","min","arrayQueryImpl","queryOptions","handleError","error","handler","aggregateCore","aggregator","seed","step","finalize","NaN","accumulator","resolve","reject","standardAggregate","aggregators","select","chainQuery","selectProp","sortBy","filter","Number","MAX_VALUE","groupBy","aggregate","sum","avg","clone","Clone","prototype","orderEach","func","Object","hasOwnProperty","isNumberX","isNumberY","assignValueToProperty","property","assignByReference","isWrapped","assign","deepExtendArraySafe","extendComplexObject","prevValue","newValue","goDeeper","EmptyTemplate","COLLECTION_CLASS","ITEM_CLASS","CONTENT_CLASS_POSTFIX","ITEM_CONTENT_PLACEHOLDER_CLASS","ITEM_DATA_KEY","ITEM_INDEX_KEY","ITEM_TEMPLATE_ID_PREFIX","ITEMS_OPTIONS_NAME","SELECTED_ITEM_CLASS","ITEM_RESPONSE_WAIT_CLASS","EMPTY_COLLECTION","TEMPLATE_WRAPPER_CLASS","ITEM_PATH_REGEX","FOCUS_UP","FOCUS_DOWN","FOCUS_LEFT","FOCUS_RIGHT","FOCUS_PAGE_UP","FOCUS_PAGE_DOWN","FOCUS_LAST","FOCUS_FIRST","CollectionWidget","$itemElement","_itemClickHandler","currentTarget","location","_moveFocus","leftArrow","rightArrow","upArrow","downArrow","pageUp","pageDown","selectOnFocus","loopItemFocus","itemTemplate","onItemRendered","onItemClick","onItemHold","itemHoldTimeout","onItemContextMenu","onFocusedItemChanged","noDataText","message","format","dataSource","_itemAttributes","itemTemplateProperty","focusOnSelectedItem","focusedElement","displayExpr","disabledExpr","disabled","visibleExpr","_compileDisplayGetter","_cleanRenderedItems","_refreshDataSource","_displayGetter","_initItemsFromMarkup","_initDefaultItemTemplate","_getAnonymousTemplateName","fieldsMap","_getFieldsMap","item","_prepareDefaultItemTemplate","_getBindableFields","html","rawItems","isTemplateRequired","innerHTML","_prepareItemTemplate","templateId","detach","removeAttr","_saveTemplate","_dataSourceOptions","paginate","_renderedItemsCount","_focusTarget","_focusInHandler","$focusedElement","_setFocusedItem","$activeItem","_getActiveItem","_focusOutHandler","_updateFocusedItemState","last","activeElements","_getActiveElement","lastIndex","eq","$newTarget","$items","_getAvailableItems","_prevItem","_nextItem","first","_getVisibleItems","$itemElements","_itemElements","not","targetIndex","$last","$item","loop","$first","_selectFocusedItem","selectItem","isFocused","needCleanItemId","_refreshActiveDescendant","_refreshItemId","_toggleFocusClass","_updateParentActiveDescendant","getFocusedItemId","_findItemElementByItem","itemElements","_itemDataKey","_getIndexByItem","_itemOptionChanged","oldValue","constructor","ItemClass","setDataField","_refreshItem","isDisabling","_resetItemFocus","itemData","_getItemData","_itemIndexKey","_renderItem","matches","fullName","match","itemPath","previousValue","_renderEmptyMessage","_createItemRenderAction","_attachHoldEvent","_attachContextMenuEvent","_loadNextPage","_dataSource","_expectNextPageLoading","pageIndex","_startIndexForAppendedItems","_expectLastItemLoading","_forgetNextPageLoading","_dataSourceChangedHandler","newItems","_initialized","_shouldAppendItems","_isLastPage","_refreshContent","_prepareContent","_renderContent","_dataSourceLoadErrorHandler","_allowDynamicItemsAppend","_clean","_cleanFocusState","_cleanItemContainer","_itemContainer","_dispose","_itemFocusTimeout","_refresh","_itemClass","_itemContentClass","_selectedItemClass","_itemResponseWaitClass","_itemSelector","_renderContentImpl","_fireContentReadyAction","_render","_attachClickEvent","itemSelector","clickEventNamespace","pointerDownEventNamespace","pointerDownAction","_itemPointerDownHandler","execute","_itemDXEventHandler","_itemFocusHandler","isDefaultPrevented","$closestItem","closest","$closestFocusable","_closestFocusable","_forcePointerDownFocus","parent","isDocument","_updateFocusState","$itemContainer","hold","timeout","_getHoldTimeout","_itemHoldHandler","_shouldFireHoldEvent","hasActionSubscription","cancel","_itemContextMenuHandler","_shouldFireContextMenuEvent","_renderItems","$itemToReplace","$itemFrame","_renderItemFrame","_setElementData","_attachItemClickEvent","$itemContent","_getItemContent","renderContentPromise","_renderItemContent","contentClass","defaultTemplateName","_postprocessRenderItem","itemElement","itemContent","itemIndex","_executeItemRenderAction","_itemEventHandlerByHandler","itemTemplateName","_getItemTemplateName","_getTemplate","_addItemContentClasses","$templateResult","_createItemByTemplate","_renderItemContentByNode","$node","classes","_appendItemToContainer","_itemOptions","displayValue","watchMethod","owner","fieldGetter","field","expr","_getItemRenderAction","_itemRenderAction","category","templateProperty","renderArgs","_emptyMessageContainer","hideNoData","_isDataSourceLoading","_$noData","dxEvent","handlerOptionName","actionArgs","actionConfig","_itemEventHandler","initiator","action","validatingTargetName","_itemEventHandlerImpl","_closestItemElement","_extendActionArgs","_getSummaryItemsWidth","includeMargin","outerWidth","_focusedItemId","itemsContainer","include","ITEM_DELETING_DATA_KEY","NOT_EXISTING_INDEX","indexExists","_setOptionsByReference","_optionsByReference","selectedItem","selectionMode","selectionRequired","selectionByClick","selectedItems","selectedItemKeys","maxFilterLengthInRequest","keyExpr","selectedIndex","onSelectionChanged","onItemReordered","onItemDeleting","onItemDeleted","_userOptions","_initEditStrategy","_initKeyGetter","_initSelectionModule","_getKeysByItems","_editStrategy","getKeysByItems","_getItemsByKeys","getItemsByKeys","_getKeyByIndex","getKeyByIndex","_getIndexByKey","getIndexByKey","_getIndexByItemData","getIndexByItemData","_isKeySpecified","_getCombinedFilter","store","_nullValueSelectionSupported","itemsGetter","_selection","allowNullValue","equalByReference","addedItemKeys","removedItemKeys","_updateSelectedItems","loadOptions","customQueryParams","userData","_userData","loadResult","_applyMapFunction","plainItems","dataFields","Strategy","_getSelectedItemIndices","indices","getSelectedItemKeys","beginCache","endCache","_rendering","isLoading","_syncSelectionOptions","_normalizeSelectedItems","_rendered","byOption","_chooseSelectOption","getItemDataByIndex","_setOptionWithoutOptionChange","selectedItemIndex","setSelection","isOptionDefined","optionValue","_compareKeys","oldKeys","newKeys","newSelection","currentSelection","getSelectedItems","normalizedSelection","_itemSelectHandler","isItemSelected","unselectItem","_selectedItemElement","normalizedItemIndex","getNormalizedIndex","_isItemSelected","_processSelectableItem","isSelected","_setAriaSelected","selectionChangePromise","_selectionChangePromise","normalizedIndex","addedSelection","removedSelection","_addSelection","_i","_removeSelection","_updateSelection","_fireSelectionChangeEvent","addedItems","removedItems","getItemElement","triggerHandler","checkPending","_clearSelectedItems","_waitDeletingPrepare","deletingActionArgs","deletePromise","always","deletePromiseExists","deletePromiseResolved","state","argumentsSpecified","shouldDelete","_deleteItemFromDS","disabledState","dataStore","_tryRefreshLastPage","_refreshLastPage","_updateSelectionAfterDelete","deselect","_updateIndicesAfterIndex","_simulateOptionChange","_optionChangedAction","_deleteItemElementByIndex","deleteItemAtIndex","_afterItemElementDeleted","deletedActionArgs","changingOption","beforeExecute","deleteItem","itemResponseWaitClass","reorderItem","toItemElement","strategy","$movingItem","$destinationItem","movingIndex","destinationIndex","canMoveItems","itemPlacementFunc","moveItemAtIndexToIndex","fromIndex","getIndex","toIndex","currentTemplateEngine","templateEngines","registerTemplateEngine","templateEngine","setTemplateEngine","getCurrentTemplateEngine","compile","jQuery","tmpl","jsrender","templates","Mustache","Hogan","Handlebars","doT","_element","_compiledTemplate","contents","findTemplates","optionsString","optionsParser","suitableTemplatesByName","rawTemplates","templatesMap","_findBestMatches$","suitableTemplate","devices","addOneRenderedCall","templateResult","onRendered","getNormalizedTemplateArgs","validateTemplateSource","templateSource","templateKey","defaultCreateElement","acquireIntegrationTemplate","isAsyncTemplate","skipTemplates","integrationTemplate","acquireTemplate","createTemplate","defaultTemplates","nodeType","agq","ak","ar","asa","ast","az","bas","be","bem","bez","bg","bm","br","bs","ca","ce","cgg","ckb","cs","cy","da","de","dje","dsb","dua","dyo","ee","el","eo","es","et","eu","ewo","fa","ff","fi","fo","fr","fur","fy","ga","gd","gl","gsw","gv","ha","hr","hsb","hu","hy","ia","ig","it","jgo","jmc","ka","kab","kde","kea","khq","kk","kkj","kl","ksb","ksf","ksh","ku","kw","ky","lag","lb","lg","ln","lrc","lt","lu","lv","mfe","mg","mgo","mi","mk","mn","ms","mua","mzn","naq","nds","nl","nmg","nnh","no","nus","nyn","os","pcm","pl","ps","rm","rn","ro","rof","ru","rw","rwk","sah","sbp","se","ses","sg","shi","si","sk","sl","smn","so","sq","sr","sv","sw","teo","tg","tk","tr","tt","twq","tzm","uk","uz","vai","vi","vun","wae","wo","xog","yav","yi","yo","zgh","SYMBOLS_TO_REMOVE_REGEX","getIntlFormatter","date","timeZoneName","year","getFullYear","recognizableAsTwentyCentury","temporaryYearValue","utcDate","Date","UTC","getMonth","getDate","getHours","getMinutes","getSeconds","setFullYear","utcFormat","timeZone","formatDateTime","formattersCache","getFormatter","locale","JSON","stringify","Intl","DateTimeFormat","formatNumber","number","NumberFormat","getAlternativeNumeralsMap","numeralsMapCache","normalizeNumerals","dateString","alternativeNumeralsMap","sign","removeLeadingZeroes","str","dateStringEquals","actual","expected","normalizeMonth","intlFormats","day","dayofweek","weekday","longdate","month","longdatelongtime","hour","minute","second","longtime","monthandday","monthandyear","shortdate","shorttime","shortyear","defineProperty","defaultOptions","resolvedOptions","getIntlFormat","monthNameStrategies","standalone","monthIndex","monthFormat","parts","part","engine","getMonthNames","wide","abbreviated","narrow","getDayNames","dayIndex","short","getPeriodNames","hour12Formatter","hour12","hours","hourNumberText","timeParts","biggerPart","trim","_format","formatter","intlFormat","formatType","parse","parser","_parseDateBySimpleFormat","formatParts","getFormatParts","dateParts","dateArgs","_generateDateArgs","constructValidDate","ampmShift","parsedDate","hoursShift","minutes","seconds","currentDate","formatPart","datePart","parsed","parseInt","formatUsesMonthName","formatUsesDayName","getTimeSeparator","formattedDate","b","DEFAULT_DAY_OF_WEEK_INDEX","hasIntl","FORMATS_TO_PATTERN_MAP","quarterandyear","shortdateshorttime","quarter","millisecond","possiblePartPatterns","milliseconds","dateLocalization","_getPatternByFormat","_expandPattern","pattern","partName","possiblePatterns","getQuarterNames","is24HourFormat","amTime","pmTime","amTimeFormatted","pmTimeFormatted","isNaN","convertDigits","ldmlFormat","log","getTime","firstDayOfWeekIndex","getValueByClosestLocale","Callback","_options","_list","_queue","_firing","_fired","_firingIndexes","_fireCore","context","firingIndexes","list","stopOnFalse","pop","unique","has","splice","fireWith","queue","syncStrategy","memory","fired","Callbacks","DataExpressionMixin","_dataExpressionDefaultOptions","valueExpr","_initDataExpressions","_compileValueGetter","_initDynamicTemplates","_initDataSource","_itemsToDataSource","pageSize","_displayGetterExpr","_valueGetter","_valueGetterExpr","_loadValue","_unwrappedValue","_loadSingle","_isValueEquals","_getCurrentValue","_value","_getItemKey","unwrap","n","value1","value2","dataSourceKey","_compareValues","_compareByCompositeKey","_compareByKey","isObject","unwrapObservable","valueKey1","valueKey2","_setCollectionWidgetItemTemplate","_setCollectionWidgetOption","_getCollectionKeyExpr","isValueExprField","_dataExpressionOptionChanged","DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS","DX_SUBMENU_CLASS","orientation","tabIndex","onHoverStart","_dataAdapter","_initDataAdapter","_renderContextMenuOverlay","node","getNodeByKey","_getChildNodes","_renderDelimiter","$contentDelimiter","_getOverlayOptions","onPositioned","_overlayPositionedActionHandler","arg","_showDelimiter","_hoverEndHandler","hoverStartAction","_hoverStartHandler","$rootItem","_actions","onShowing","rootItem","submenu","_drawSubmenu","onShown","onHiding","_hideSubmenu","onHidden","$submenu","children","of","position","containerOffset","vLocation","v","hLocation","h","rootOffset","offset","offsetLeft","round","offsetTop","top","rootWidth","width","rootHeight","height","submenuWidth","submenuHeight","_isMenuHorizontal","at","my","setup","_overlay","DX_MENU_CLASS","DX_MENU_VERTICAL_CLASS","DX_MENU_HORIZONTAL_CLASS","DX_MENU_ITEM_CLASS","DX_MENU_ITEMS_CONTAINER_CLASS","DX_MENU_ITEM_EXPANDED_CLASS","DX_CONTEXT_MENU_CLASS","DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS","DX_STATE_DISABLED_CLASS","DX_STATE_HOVER_CLASS","DX_STATE_ACTIVE_CLASS","DX_ADAPTIVE_MODE_CLASS","DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS","DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS","SHOW_SUBMENU_OPERATION","NEXTITEM_OPERATION","PREVITEM_OPERATION","DEFAULT_DELAY","show","hide","ACTIONS","submenuDirection","showFirstSubmenuMode","delay","hideSubmenuOnMouseLeave","onSubmenuShowing","onSubmenuShown","onSubmenuHiding","onSubmenuHidden","adaptivityEnabled","animation","rootMenuElements","submenuElements","_submenuItemElements","elements","currentSubmenu","_submenus","argument","operation","navigationAction","isMenuHorizontal","_getItemsNavigationOperation","_getKeyboardNavigationAction","navOperation","_showSubmenu","_resizeEventTimer","_menuItemsWidth","_updateItemsWidthCache","_dimensionChanged","$menuItems","_isAdaptivityEnabled","containerWidth","_toggleAdaptiveMode","_visibleSubmenu","_initAdaptivity","_hamburger","_toggleTreeView","_toggleHamburgerActiveState","$menuItemsContainer","$adaptiveElements","_hideVisibleSubmenu","_treeView","collapseAll","_$adaptiveContainer","rtl","maxHeight","deferRendering","shading","closeOnTargetScroll","closeOnOutsideClick","collision","menuOptions","actionName","getDataSource","animationEnabled","_treeviewItemClickHandler","onItemExpanded","repaint","onItemCollapsed","selectNodesRecursive","selectByClick","expandEvent","$hamburger","_renderHamburgerButton","_createComponent","_getTreeViewOptions","_getAdaptiveOverlayOptions","$wrapper","delayType","_keyboardHandler","_renderContainer","_createSubmenu","_renderBorderElement","_getKeyboardListeners","$submenuContainer","_getSubmenuOptions","_parentKey","internalFields","_clearTimeouts","getSubmenuPosition","_attachSubmenuHandlers","$submenuTarget","cssClass","showSubmenuMode","selectedExpr","itemsExpr","component","_nestedItemOnSelectionChangedHandler","_nestedItemOnItemClickHandler","_nestedItemOnItemRenderedHandler","onLeftFirstItem","_moveMainMenuFocus","onLeftLastItem","onCloseRootSubmenu","onExpandLastSubmenu","_isDesktopDevice","itemCount","$currentItem","$newItem","_clearSelectionInSubmenus","_clearRootSelection","targetSubmenu","cleanAllSubmenus","isOtherItem","$selectedItem","selectedItemData","selected","$prevSelectedItem","prevSelectedItemData","$submenuOverlayContent","getOverlayContent","submenus","submenuMouseLeaveName","hover","_submenuOnShowingHandler","_submenuOnShownHandler","_submenuOnHidingHandler","_submenuOnHiddenHandler","_submenuMouseLeaveHandler","$border","eventArgs","relatedTarget","parents","contextMenu","_getSubmenuByRootElement","_hideSubmenuAfterTimeout","_getDelay","isRootItemHovered","isSubmenuItemHovered","hoveredElementFromSubMenu","querySelector","isHorizontalMenu","rtlEnabled","submenuPosition","mouseMoveEventName","_getItemElementByEventArgs","getNodeByItem","isSelectionActive","buttons","_isItemDisabled","_hasChildren","_getShowFirstSubmenuMode","_getSubmenuByElement","isOverlayVisible","_itemMouseMoveHandler","_showSubmenuTimer","eventArg","_hideSubmenuTimer","_hoveredRootItem","_renderSubmenuItems","_disabledGetter","_updateSelectedItemOnClick","_initActions","_changeSubmenusOption","_removeAdaptivity","callbacks","isReady","getReadyState","getDocumentElement","doScroll","subscribeReady","removeListener","listen","getDocument","readyCallbacks","callback","windowExists","getElementWidth","getSizeValue","size","LOADPANEL_CLASS","LOADPANEL_WRAPPER_CLASS","LOADPANEL_INDICATOR_CLASS","LOADPANEL_MESSAGE_CLASS","LOADPANEL_CONTENT_CLASS","LOADPANEL_CONTENT_WRAPPER_CLASS","LOADPANEL_PANE_HIDDEN_CLASS","LoadPanel","showIndicator","indicatorSrc","showPane","templatesRenderAsynchronously","hideTopOverlayHandler","resizeEnabled","shadingColor","maxWidth","_$loadPanelContentWrapper","_togglePaneVisible","_cleanPreviousContent","_renderLoadIndicator","_renderMessage","_show","_clearShowTimeout","_showTimeout","_hide","$message","_$indicator","createQueue","discardPendingTasks","_tasks","_busy","exec","removeTaskCallback","busy","_counter","_deferreds","operationId","DataSource","_options$reshapeOnPus","_store","_changedTime","needThrottling","pushAggregationTimeout","pushDeferred","lastPushWaiters","throttlingTimeout","throttlingPushHandler","throttleChanges","storePushPending","_onPush","_onPushHandler","_aggregationTimeoutId","_storeLoadOptions","_extractLoadOptions","_mapFunc","_postProcessFunc","postProcess","_pageIndex","_pageSize","_loadingCount","_loadQueue","_createLoadQueue","_searchValue","_searchOperation","searchOperation","_searchExpr","searchExpr","_paginate","_reshapeOnPush","reshapeOnPush","substr","_operationManager","_items","_totalCount","_isLoaded","group","_this$_delayedLoadTas","_delayedLoadTask","abort","cancelAll","names","customNames","newIndex","normalizedArgs","_len","generateStoreLoadOptionAccessor","newFilter","_len2","_key2","_len3","_key3","requireTotalCount","argc","_this$_store","_changeLoadingCount","increment","oldLoading","newLoading","beginLoading","endLoading","_this","_len4","_key4","_fireChanged","propName","propValue","_createStoreLoadOptions","_scheduleFailCallbacks","refresh","searchString","_byKeyViaLoad","loadTask","_loadFromStore","loadOperation","_scheduleLoadCallbacks","_scheduleChangedCallbacks","_createLoadOperation","groupLevel","dataSourceChanges","keyInfo","groupCount","useInsertIndex","storeLoadOptions","clearRawDataCache","_addSearchFilter","_addSearchOptions","searchFilter","pendingDeferred","handleSuccess","extra","_processStoreLoadResult","resolvePendingDeferred","isFinite","_applyPostProcessFunction","ICON_CLASS","SVG_ICON_CLASS","getImageSourceType","source","getImageContainer","isTagName","tagWrappers","default","tagsCount","startTags","endTags","thead","td","col","tbody","colgroup","caption","tfoot","th","parseHTML","fragment","createDocumentFragment","appendChild","createElement","tags","firstRootTag","tagWrapper","lastChild","childNodes","isTablePart","_scrollView","LIST_ITEM_BADGE_CONTAINER_CLASS","LIST_ITEM_BADGE_CLASS","BADGE_CLASS","LIST_ITEM_CHEVRON_CONTAINER_CLASS","LIST_ITEM_CHEVRON_CLASS","ListItem","_renderWatchers","_startWatcher","_renderBadge","_renderShowChevron","badge","_$element","$badge","$chevron","insertBefore","showChevron","$chevronContainer","LIST_CLASS","LIST_ITEM_CLASS","LIST_ITEM_SELECTOR","LIST_ITEM_ICON_CONTAINER_CLASS","LIST_ITEM_ICON_CLASS","LIST_GROUP_CLASS","LIST_GROUP_HEADER_CLASS","LIST_GROUP_BODY_CLASS","LIST_COLLAPSIBLE_GROUPS_CLASS","LIST_GROUP_COLLAPSED_CLASS","LIST_GROUP_HEADER_INDICATOR_CLASS","LIST_HAS_NEXT_CLASS","LIST_NEXT_BUTTON_CLASS","WRAP_ITEM_TEXT_CLASS","SELECT_ALL_ITEM_SELECTOR","LIST_ITEM_DATA_KEY","LIST_FEEDBACK_SHOW_TIMEOUT","groupItemsGetter","ListBase","moveFocusPerPage","getEdgeVisibleItem","isFocusedItem","resultPosition","outerHeight","scrollTo","scrollToItem","scrollTop","containerHeight","isItemVisible","$nextItem","nextItemLocation","pullRefreshEnabled","scrollingEnabled","showScrollbar","useNativeScrolling","bounceEnabled","scrollByContent","scrollByThumb","pullingDownText","pulledDownText","refreshingText","pageLoadingText","onScroll","onPullRefresh","onPageLoading","pageLoadMode","nextButtonText","onItemSwipe","grouped","onGroupRendered","collapsibleGroups","groupTemplate","indicateLoading","role","_listAttributes","wrapItemText","_swipeEnabled","_revertPageOnEmptyLoad","showChevronExpr","badgeExpr","themeName","_device","_visibilityChanged","_updateLoadingState","_$container","_saveSelectionChangeEvent","_selectionChangeEventInstance","_getSelectionChangeEvent","_refreshItemElements","_itemElementsCache","_modifyByChanges","_resetDataSourcePageIndex","currentDataSource","_initScrollView","_createGroupRenderAction","_scrollBottomMode","_nextButtonMode","scrollBottom","nextButton","_getGroupedOption","_getGroupContainerByIndex","groupIndex","_dataSourceFromUrlLoadMode","autoPagingEnabled","getScrollView","_scrollHandler","onPullDown","_pullDownHandler","onReachBottom","_scrollBottomHandler","useNative","reachBottomText","useKeyboard","_createScrollViewActions","_scrollAction","_pullRefreshAction","_pageLoadingAction","$iconContainer","tryLoadMore","isDataLoaded","scrollBottomMode","stopLoading","hideLoadIndicator","_scrollViewIsFull","release","_toggleNextButton","_shouldRenderNextButton","_loadIndicationSuppressed","_infiniteDataLoading","isLoaded","_isDataSourceFirstLoadCompleted","_isFirstLoadCompleted","_dataSourceLoadingChangedHandler","_showLoadingIndicatorTimer","_this$_scrollView","isEmpty","shouldIndicateLoading","startLoading","finishLoading","_hideLoadingIfLoadIndicationOff","_isLoadIndicationSuppressed","isFull","reload","isElementVisible","_loadNextPageTimer","_setPreviousPageIfNewIsEmpty","_renderGroup","_attachGroupCollapseEvent","attachGroupHeaderInkRippleEvents","$group","_collapseGroupHandler","$groupBody","startHeight","endHeight","fx","animate","duration","updateDimensions","_toggleActiveState","_inkRippleTimer","_attachSwipeEvent","endEventName","swipe","_itemSwipeEndHandler","_nextButtonHandler","toggleLoading","_$nextButton","$groupElement","$groupHeaderElement","groupTemplateName","prependTo","_renderingGroupIndex","_groupRenderAction","groupElement","groupData","downInkRippleHandler","upInkRippleHandler","_downInkRippleHandler","_upInkRippleHandler","downArguments","upArguments","_holdTimer","_toggleDisabledState","$nextButton","_getNextButton","_createNextButton","$result","$button","integrationOptions","expandGroup","collapseGroup","scrollOffset","clientHeight","scrollHeight","scrollBy","distance","scrollToElement","$activeThemeLink","knownThemes","currentThemeName","pendingThemeName","themeClasses","themeReadyCallback","viewPort","viewPortChanged","initDeferred","DX_LINK_SELECTOR","THEME_ATTR","ACTIVE_ATTR","DX_HAIRLINES_CLASS","ANY_THEME","defaultTimeout","THEME_MARKER_PREFIX","readThemeMarker","documentElement","getComputedStyle","fontFamily","waitForThemeLoad","waitStartTime","timerId","intervalCleared","handleLoaded","clearInterval","isPendingThemeLoaded","now","setInterval","isTimeout","anyThemePending","themeMarker","processMarkup","$allThemeLinks","link","fullThemeName","url","isActive","after","resolveFullThemeName","desiredThemeName","desiredThemeParts","knownThemeName","themeData","knownThemeParts","initContext","newContext","init","detachCssClasses","theme","currentThemeData","isAutoInit","_autoInit","loadCallback","_forceTimeout","attachCssClasses","getCssClasses","themeNameParts","isMaterial","pixelRatio","devicePixelRatio","$tester","themeReady","isTheme","themeRegExp","RegExp","isGeneric","isDark","isWebFontLoaded","fontWeight","document","testElement","style","visibility","fontSize","body","etalonFontWidth","offsetWidth","testedFontWidth","parentNode","removeChild","waitWebFont","clear","intervalId","timeoutId","autoInit","resetTheme","initialized","setDefaultTimeout","prevViewPort","changed","BOX_CLASS","BOX_SELECTOR","BOX_ITEM_CLASS","BOX_ITEM_DATA_KEY","MINSIZE_MAP","row","MAXSIZE_MAP","SHRINK","FLEX_JUSTIFY_CONTENT_MAP","center","FLEX_ALIGN_ITEMS_MAP","stretch","FLEX_DIRECTION_MAP","setFlexProp","prop","cssName","styleExpr","attributes","setAttribute","BOX_EVENTNAMESPACE","UPDATE_EVENT","FALLBACK_BOX_ITEM","FALLBACK_WRAP_MAP","FALLBACK_MAIN_SIZE_MAP","FALLBACK_CROSS_SIZE_MAP","FALLBACK_PRE_MARGIN_MAP","FALLBACK_POST_MARGIN_MAP","FALLBACK_CROSS_PRE_MARGIN_MAP","FALLBACK_CROSS_POST_MARGIN_MAP","MARGINS_RTL_FLIP_MAP","marginLeft","marginRight","BoxItem","_renderVisible","fireItemStateChangedAction","oldState","FlexLayoutStrategy","_option","initSize","display","justifyContent","_normalizedAlign","align","alignItems","_normalizedCrossAlign","crossAlign","flexPropPrefix","maxSize","minSize","baseSize","ratio","shrink","flexBasis","flexDirection","FallbackLayoutStrategy","whiteSpace","verticalAlign","_$items","totalItemSize","boxSize","freeSpace","_setItemsMargins","_chooseMarginSide","itemSize","totalRatio","totalWeightedShrink","totalBaseSize","_baseSize","freeSpaceSize","_boxSize","factor","totalFactor","_contentSize","_parseSize","parseFloat","_boxSizeValue","_totalBaseSize","renderItems","renderAlign","renderCrossAlign","Box","onItemStateChanged","_layoutStrategy","msie","_initLayout","_initBoxQueue","_layout","renderBox","_renderAlign","_renderActions","_onItemStateChanged","_queueIsNotEmpty","_shiftItemFromQueue","_updateTimer","_isUpdated","$itemNode","boxConfig","box","_pushItemToQueue","VALIDATION_SUMMARY_CLASS","ValidationSummary","_initGroupRegistration","groupConfig","addGroup","_unsubscribeGroup","_groupWasInit","_validationGroup","groupSubscription","_groupValidationHandler","validators","orderedItems","validator","foundItems","params","_getOrderedItems","brokenRules","_validationSummary","_itemValidationHandler","isValid","itemsChanged","_loop","foundRule","foundItem","focus","window","POPOVER_CLASS","POPOVER_WRAPPER_CLASS","POPOVER_ARROW_CLASS","POPOVER_WITHOUT_TITLE_CLASS","POSITION_FLIP_MAP","bottom","WEIGHT_OF_SIDES","POSITION_ALIASES","SIDE_BORDER_WIDTH_STYLES","getEventNameByOption","getEventName","getEventDelay","attachEvent","isSelector","_clearEventsTimeouts","_timeouts","EVENT_HANDLER_NAME","targetElement","detachEvent","Popover","showTitle","dragEnabled","fullScreen","arrowPosition","arrowOffset","boundaryOffset","_fixedPosition","_renderArrow","_detachEvents","_attachEvents","_$arrow","$overlayContent","_documentDownHandler","_isOutsideClick","_animate","_getContainerPosition","_stopAnimation","_renderTitle","_renderPosition","_renderOverlayPosition","_renderOverlayBoundaryOffset","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","positionSide","_getSideByLocation","_togglePositionClass","_toggleFlippedClass","flip","isArrowVisible","_isHorizontalSide","_isVerticalSide","_renderArrowPosition","_setContentHeight","_positionSide","containerLocation","calculate","oversize","fit","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","_position","hOffset","vOffset","isVerticalSide","isHorizontalSide","isPopoverInside","_isPopoverInside","arrowSize","arrowSizeCorrection","_getContentBorderWidth","side","borderWidth","isFlippedByVertical","isFlippedByHorizontal","positionClass","isFlippedHorizontal","isFlippedVertical","arrowRect","arrowFlip","arrowLocation","axis","sizeProperty","targetOffset","contentOffset","contentLocation","contentSize","targetLocation","targetSize","finalArrowLocation","_transformStringPosition","normalizeAlign","fullUpdate","_renderWrapperPosition","_renderWrapperDimensions","_normalizePosition","_getDisplaySide","weightSign","horizontalWeight","verticalWeight","_clearEventTimeout","_renderGeometry","substring","DRAG_START_EVENT","DRAG_EVENT","DRAG_END_EVENT","DRAG_ENTER_EVENT","DRAG_LEAVE_EVENT","DROP_EVENT","DX_DRAG_EVENTS_COUNT_KEY","knownDropTargets","knownDropTargetSelectors","knownDropTargetConfigs","dropTargetRegistration","knownDropTarget","handleObj","updateEventsCounter","eventsCount","teardown","handlersCount","getItemDelegatedTargets","dropTargetIndex","dropTargetSelectors","$delegatedTargets","getItemConfig","getItemPosition","dropTargetConfig","itemPositionFunc","getItemSize","itemSizeFunc","getBoundingClientRect","DragEmitter","_initEvent","_fireEvent","_maxLeftOffset","maxLeftOffset","_maxRightOffset","maxRightOffset","_maxTopOffset","maxTopOffset","_maxBottomOffset","maxBottomOffset","dropTargets","targetElements","_dropTargets","dragOffset","_calculateOffset","_processDropTargets","_cancelPreventDefault","_calculateXOffset","_calculateYOffset","_fitOffset","minOffset","maxOffset","_findDropTarget","sameTarget","_currentDropTarget","_fireDropTargetEvent","draggingElement","_checkDropTargetActive","delegatedTarget","$delegatedTarget","_checkDropTarget","activeTarget","$prevTarget","isDraggingElement","targetPosition","checkDropTarget","emitter","events","INVALID_MESSAGE","INVALID_MESSAGE_AUTO","INVALID_MESSAGE_ALWAYS","INVALID_MESSAGE_CONTENT","VALIDATION_MESSAGE_MIN_WIDTH","ValidationMessage","propagateOutsideClick","_checkParentVisibility","contentTemplate","_renderInnerHtml","validationErrors","positionRequest","describedElement","boundary","updateMaxWidth","_updatePosition","_toggleModeClass","_updateContentId","contentId","validationErrorMessage","err","separator","_target$outerWidth","targetWidth","verticalPositions","READONLY_STATE_CLASS","INVALID_CLASS","DX_INVALID_BADGE_CLASS","VALIDATION_TARGET","VALIDATION_STATUS_VALID","VALIDATION_STATUS_INVALID","READONLY_NAMESPACE","ALLOWED_STYLING_MODES","VALIDATION_MESSAGE_KEYS_MAP","validationMessageMode","validationMessageOffset","validationBoundary","Editor","showValidationMessageTimeout","validationRequest","_createElement","_initOptions","initValidationOptions","cache","onValueChanged","readOnly","validationError","validationTooltipOptions","_attachKeyboardEvents","_createValueChangeAction","_valueChangeAction","_suppressValueChangeAction","_valueChangeActionSuppressed","_resumeValueChangeAction","_toggleReadOnlyState","_setSubmitElementName","_renderValidationState","_raiseValueChangeAction","_valueChangeArgs","_valueChangeEventInstance","_saveValueChangeEvent","isValidationMessageShownOnFocus","_canValueBeChangedByClick","_this$_validationMess","$validationMessageWrapper","_validationMessage","_getStylingModePrefix","prefix","allowedStylingClasses","className","stylingModeClass","defaultOptionValue","platformOptionValue","_convertRulesToOptions","_getValidationErrors","_disposeValidationMessage","_$validationMessage","_toggleValidationClasses","isInvalid","_getValidationMessageTarget","_bindInnerWidgetOptions","_toggleBackspaceHandler","isReadOnly","$eventTarget","_keyboardEventBindingTarget","$submitElement","_getSubmitElement","_setValidationMessageOption","_this$_validationMess2","optionKey","_hasActiveElement","_this$_validationMess3","_refreshFocusState","editor","synchronizeValidationOptions","_innerWidgetOptionChanged","blur","isEditor","maxLevel","normalizeArg","xItem","yItem","SELECTION_SHIFT","SELECTION_MASK","combineIndex","splitIndex","combinedIndex","GroupedEditStrategy","_groupElements","_collectionWidget","_groupItemElements","groups","resultItems","itemGroup","keyIndex","itemKey","_equalKeys","_getGroups","query","getItemMeta","groupKey","itemMeta","selectedGroup","movingIndices","destinationIndices","movingItemGroup","destinationItemGroup","movedItemData","_isItemIndex","_getNormalizedItemIndex","_normalizeItemIndex","_denormalizeItemIndex","_getItemByNormalizedIndex","_itemsFromSameParent","firstIndex","secondIndex","registry","register","decoratorClass","decoratorsRegistry","decoratorConfig","LIST_EDIT_DECORATOR","SWIPE_START_EVENT_NAME","SWIPE_UPDATE_EVENT_NAME","SWIPE_END_EVENT_NAME","EditDecorator","_shouldHandleSwipe","swipeConfig","_clearSwipeCache","_itemWidthCache","_itemSwipeStartHandler","_itemSwipeUpdateHandler","_swipeStartHandler","_swipeUpdateHandler","_swipeEndHandler","beforeBag","afterBag","_commonOptions","modifyElement","afterRender","handleClick","handleKeyboardEvents","handleEnterPressing","handleContextMenu","visibilityChange","getExcludedSelectors","STATIC_DELETE_BUTTON_CONTAINER_CLASS","STATIC_DELETE_BUTTON_CLASS","_deleteItem","POINTER_DOWN_EVENT_NAME","ACTIVE_EVENT_NAME","LIST_ITEM_CONTENT_CLASS","SWITCHABLE_DELETE_READY_CLASS","SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS","SWITCHABLE_DELETE_TOP_SHIELD_CLASS","SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS","SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS","SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS","SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS","SwitchableEditDecorator","_$topShield","_$bottomShield","_$itemContentShield","_cancelDeleteReadyItem","_$readyToDeleteItem","_cancelDelete","_toggleDeleteReady","readyToDelete","_isReadyToDelete","_toggleShields","_toggleScrolling","_cacheReadyToDeleteItem","_animateToggleDelete","enabled","_updateShieldsHeight","_toggleContentShield","$list","listTopOffset","listHeight","itemTopOffset","itemHeight","dirtyTopShieldHeight","dirtyBottomShieldHeight","scrollView","dxScrollView","_cancelScrolling","_enablePositioning","_prepareDeleteReady","_animatePrepareDeleteReady","_forgetDeleteReady","_animateForgetDeleteReady","_disablePositioning","one","_getDeleteButtonContainer","_isRtlEnabled","SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS","SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS","SWITCHABLE_DELETE_BUTTON_CLASS","SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION","SwitchableButtonEditDecorator","$buttonContainer","$buttonWrapper","$buttonInnerWrapper","_$buttonContainer","stop","listWidth","buttonWidth","_buttonWidth","fromValue","toValue","_buttonContainerWidth","TOGGLE_DELETE_SWITCH_CONTAINER_CLASS","TOGGLE_DELETE_SWITCH_CLASS","$toggle","EditDecoratorMenuHelperMixin","_menuEnabled","_menuItems","_deleteEnabled","_fireMenuAction","CLICK_EVENT_NAME","SLIDE_MENU_CLASS","SLIDE_MENU_WRAPPER_CLASS","SLIDE_MENU_CONTENT_CLASS","SLIDE_MENU_BUTTONS_CONTAINER_CLASS","SLIDE_MENU_BUTTONS_CLASS","SLIDE_MENU_BUTTON_CLASS","SLIDE_MENU_BUTTON_MENU_CLASS","SLIDE_MENU_BUTTON_DELETE_CLASS","SLIDE_MENU_ANIMATION_DURATION","SLIDE_MENU_ANIMATION_EASING","_$buttonsContainer","_$buttons","_renderMenu","_renderDeleteButton","menuItems","menuItem","_renderMenuButton","_fireAction","$menu","_menu","$menuButton","$deleteButton","_cachedNode","$slideMenuContent","wrapInner","_cacheItemData","_setPositions","_getPositions","signCorrection","isItemReadyToDelete","moveJustStarted","_getCurrentPositions","_getStartPositions","_cachedItemWidth","startOffset","_cachedButtonWidth","correctedOffset","percent","buttonsContainer","startPositions","_$cachedContent","positions","_minButtonContainerLeftOffset","endedAtReadyToDelete","_animateToPositions","currentPosition","durationTimePart","easing","draw","_renderItemPosition","itemOffset","_itemElementWidth","CONTEXTMENU_CLASS","CONTEXTMENU_MENUCONTENT_CLASS","_renderOverlay","opacity","_$menuList","onContentReady","_renderMenuContent","_menuItemClickHandler","_$itemWithMenu","RADIO_BUTTON_CLASS","RADIO_BUTTON_ICON_CLASS","RADIO_BUTTON_ICON_DOT_CLASS","RADIO_BUTTON_CHECKED_CLASS","RADIO_BUTTON_ICON_CHECKED_CLASS","RadioButton","_renderIcon","_renderCheckedState","wavesNumber","_renderInkWave","doRender","waveIndex","wave","_$icon","checked","_clickHandler","SELECT_DECORATOR_ENABLED_CLASS","SELECT_DECORATOR_SELECT_ALL_CLASS","SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS","SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS","SELECT_CHECKBOX_CONTAINER_CLASS","SELECT_CHECKBOX_CLASS","SELECT_RADIO_BUTTON_CONTAINER_CLASS","SELECT_RADIO_BUTTON_CLASS","FOCUSED_STATE_CLASS","_singleStrategy","_containerClass","_controlClass","_controlWidget","$control","_isSelected","_processCheckedState","_updateSelectAllState","_$selectAll","_selectAllCheckBox","isSelectAll","_renderSelectAll","currentFocusedIndex","moveFocusUp","moveFocusDown","$selectAll","lastItemIndex","_getLastItemIndex","isFocusOutOfList","hasSelectAllItem","downArrowHandler","registerKeyHandler","_attachSelectAllHandler","_selectAllHandler","_selectAllClickHandler","isSelectedAll","_selectAllItems","_unselectAllItems","_checkSelectAllCapability","selectAll","deselectAll","_disposeSelectAll","REORDER_HANDLE_CONTAINER_CLASS","REORDER_HANDLE_CLASS","REORDERING_ITEM_GHOST_CLASS","STATE_HOVER_CLASS","_groupedEnabled","_lockedDrag","_sortable","allowReordering","dragDirection","handle","dragTemplate","_dragTemplate","onDragStart","_dragStartHandler","onDragChange","_dragChangeHandler","onReorder","_reorderHandler","_sameParent","$dragging","getItemElementByFlatIndex","$over","$targetElement","$handle","editOptionsRegistry","registerOption","enabledFunc","decoratorTypeFunc","decoratorSubTypeFunc","decoratorType","decoratorSubType","LIST_ITEM_BEFORE_BAG_CLASS","LIST_ITEM_AFTER_BAG_CLASS","DECORATOR_BEFORE_BAG_CREATE_METHOD","DECORATOR_AFTER_BAG_CREATE_METHOD","DECORATOR_MODIFY_ELEMENT_METHOD","DECORATOR_AFTER_RENDER_METHOD","DECORATOR_GET_EXCLUDED_SELECTORS_METHOD","EditProvider","_fetchRequiredDecorators","_decorators","decorator","optionEnabled","_createDecorator","subType","_findDecorator","foundDecorator","modifyItemElement","_prependBeforeBags","_appendAfterBags","_applyDecorators","afterItemsRendered","$beforeBags","_collectDecoratorsMarkup","$afterBags","method","containerClass","$collector","_handlerExists","decorators","_eventHandler","response","contextMenuHandlerExists","getExcludedItemSelectors","excludedSelectors","LIST_ITEM_SELECTED_CLASS","LIST_ITEM_RESPONSE_WAIT_CLASS","ListEdit","moveFocusedItem","moveUp","editStrategy","focusedItemIndex","isLastIndexFocused","shiftKey","nextItemIndex","editProvider","_editProvider","isInternalMoving","_isItemStrictEquals","item1","item2","privateKey","__dx_key__","showSelectionControls","selectAllMode","onSelectAllValueChanged","selectAllText","menuMode","allowItemDeleting","itemDeleteMode","itemDragging","_initEditProvider","_isPageSelectAll","_disposeEditProvider","_refreshEditProvider","handledByEditProvider","_getItemContainer","changeData","_this$_editStrategy$g","getSelectAllState","flatIndex","ListSearch","_addWidgetPrefix","getOperationBySearchMode","resizeCallbacks","prevSize","originalCallbacksAdd","originalCallbacksRemove","formatSize","innerWidth","innerHeight","handleResize","changedDimension","setPrevSize","defaultCurrency","oDataFilterToLower","serverDecimalSeparator","decimalSeparator","thousandsSeparator","forceIsoDateParsing","wrapActionsBeforeExecute","useLegacyStoreResult","useJQuery","editorStylingMode","useLegacyVisibleIndex","floatingActionButtonConfig","closeIcon","label","maxSpeedDialActionCount","charAt","Function","ex","deprecatedFields","configMethod","newConfig","deprecatedField","DevExpress","SCROLLABLE","SCROLLABLE_STRATEGY","SCROLLABLE_CLASS","SCROLLABLE_DISABLED_CLASS","SCROLLABLE_CONTAINER_CLASS","SCROLLABLE_WRAPPER_CLASS","SCROLLABLE_CONTENT_CLASS","VERTICAL","HORIZONTAL","BOTH","Scrollable","onUpdated","onStart","onEnd","onBounce","useSimulatedScrollbar","inertiaEnabled","updateManually","mozilla","_setUseSimulatedScrollbar","initialOption","_initScrollableMarkup","_locked","_getWindowDevicePixelRatio","_updateRtlPosition","_savedScrollOffset","_$wrapper","hasDocumentProperty","version","_renderDirection","_renderStrategy","_attachEventHandlers","_renderDisabledState","_createActions","_rtlConfig","scrollRight","clientWidth","_container","windowPixelRatio","_isHorizontalAndRtlEnabled","_updateBounds","scrollLeft","_getMaxOffset","skipUpdating","scrollWidth","_strategy","updateBounds","initEventData","_validate","isNative","scrollTarget","_initHandler","handleStart","handleMove","handleEnd","handleCancel","handleStop","handleScroll","_updateRtlConfig","_isLocked","_updateIfNeed","handleInit","_lock","_unlock","_createStrategy","createActions","_resetInactiveDirection","disabledChanged","inactiveProp","_getInactiveProp","_location","_normalizeLocation","_isDirection","_updateAllowedDirection","allowedDirections","_allowedDirections","vertical","horizontal","_allowedDirectionValue","_allowedDirection","_getScrollOffset","_applyScaleRatio","elementInsideContent","elementIsInsideContent","scrollPosition","getScrollElementPosition","scrollToElementTopLeft","leftPosition","_elementPositionRelativeToContent","isVertical","endOffset","elementPositionRelativeToContent","elementPosition","elementSize","scrollLocation","clientSize","startDistance","endDistance","_hasScrollContent","offsetParent","_useTemplates","isWritableWrapped","wrap","DROP_DOWN_EDITOR_BUTTON_CLASS","DROP_DOWN_EDITOR_BUTTON_VISIBLE","BUTTON_MESSAGE","currentTemplate","_openHandler","_getOptions","_addToContainer","elementAttr","_legacyRender","_isVisible","_addTemplate","$editor","isVisible","_isSameTemplate","shouldUpdate","DROP_DOWN_EDITOR_CLASS","DROP_DOWN_EDITOR_INPUT_WRAPPER","DROP_DOWN_EDITOR_BUTTON_ICON","DROP_DOWN_EDITOR_OVERLAY","DROP_DOWN_EDITOR_OVERLAY_FLIPPED","DROP_DOWN_EDITOR_ACTIVE","DROP_DOWN_EDITOR_FIELD_CLICKABLE","DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER","isIOs","DropDownEditor","$focusableElement","_getLastPopupElement","_getFirstPopupElement","close","altKey","_validatedOpening","_valueChangeEventHandler","_getDefaultButtons","Ctor","onOpened","onClosed","opened","acceptCustomValue","applyValueMode","dropDownButtonTemplate","fieldTemplate","openOnFieldClick","showDropDownButton","dropDownOptions","popupPosition","_getDefaultPopupPosition","onPopupInitialized","applyButtonText","cancelButtonText","buttonsLocation","useHiddenSubmitElement","isRtlEnabled","_inputWrapper","_initVisibilityActions","_initPopupInitializedAction","_updatePopupPosition","_openAction","_closeAction","_popupInitializedAction","_renderSubmitElement","_renderOpenHandler","_attachFocusOutHandler","_renderOpenedState","_createPopup","_renderInput","_wrapInput","_setDefaultAria","haspopup","autocomplete","_readOnlyPropValue","_isEditable","_detachFocusEvents","_getFieldTemplate","_renderMask","_renderField","_renderTemplatedField","_fieldRenderData","_renderPlaceholder","hasFieldTemplate","_renderValue","_setSubmitValue","_input","_detachKeyboardEvents","_refreshButtonsContainer","_detachWrapperContent","$templateWrapper","$input","_integrateInput","_attachWrapperContent","_this$_$submitElement","_this$_$beforeButtons","_this$_$afterButtonsC","_$submitElement","beforeButtonsContainerParent","_$beforeButtonsContainer","afterButtonsContainerParent","_$afterButtonsContainer","_this$_$submitElement2","_refreshEvents","_refreshValueChangeEvent","_renderFocusState","_refreshEmptinessEvent","_toggleEmptinessEventHandler","_renderEmptinessEvent","dropDownButton","$inputWrapper","_getInputClickHandler","_openOnFieldClickAction","_detachFocusOutEvents","newTarget","popupWrapper","_$popup","isNewTargetOutside","_executeOpenAction","_focusInput","_toggleOpenState","_resetCaretPosition","ignoreEditable","inputElement","caretPosition","_caret","_setPopupOption","expanded","_popupContentId","_renderPopup","_renderPopupContent","popupConfig","_popupConfig","_popup","showing","_popupShowingHandler","shown","_popupShownHandler","hiding","_popupHidingHandler","hidden","_popupHiddenHandler","contentReady","_contentReadyHandler","_setPopupContentId","$popupContent","onInitialized","_popupInitializedHandler","_closeOutsideDropDownHandler","showCloseButton","toolbarItems","_getPopupToolbarItems","_popupPositionedHandler","popup","popupWidth","_getValidationMessagePositionRequest","myTop","popupTop","getButton","$dropDownButton","isInputClicked","isDropDownButtonClicked","isOutsideClick","_setWidgetOption","_popupToolbarItemsConfig","_popupElementTabHandler","_popupElementEscHandler","_popupButtonInitializedHandler","buttonsConfig","shortcut","_applyButtonHandler","_cancelButtonHandler","_applyButtonsLocation","resultConfig","toolbar","_popupOptionChanged","getOptionsFromContainer","optionsKeys","val","_setDeprecatedOptions","_deprecatedOptions","showPopupTitle","since","_this$_popup","_updateButtons","open","nativeXMLHttpRequest","getXhr","XMLHttpRequest","SUCCESS","ERROR","TIMEOUT","NO_CONTENT","PARSER_ERROR","isStatusSuccess","hasContent","paramsConvert","encodeURIComponent","createScript","script","removeScript","scriptNode","appendToHead","getHead","evalScript","code","evalCrossDomainScript","src","loadHandler","getAcceptHeader","dataType","scriptAccept","accepts","xml","json","jsonp","getContentTypeHeader","defaultContentType","upload","getMethod","contentType","getDataFromResponse","xhr","responseType","responseText","isCrossDomain","crossDomain","originAnchor","urlAnchor","href","protocol","host","setHttpTimeout","customStatus","getJsonpOptions","random","callbackName","jsonpCallback","callbackParameter","getRequestOptions","headers","paramsAlreadyString","parameters","toUpperCase","getRequestHeaders","Accept","sendRequest","async","needScriptEvaluation","requestOptions","username","password","onreadystatechange","readyState","onprogress","onloadstart","onabort","xhrFields","setRequestHeader","beforeSend","send","COMPOSITION_START_EVENT","COMPOSITION_END_EVENT","KEYDOWN_EVENT","NAMESPACE","KeyboardProcessor","_keydown","_compositionStart","_compositionEnd","focusTarget","_handler","_processFunction","isNotFocusTarget","shouldSkipProcessing","_isComposingJustFinished","_isComposing","process","_toggleProcessingWithContext","toggleProcessing","keyName","ctrl","executeAction","opts","resize","focusIn","focusOut","isFocusable","_ref7","dxClick","keyboardProcessors","generateListenerId","listenerId","_getProcessor","Action","_action","_context","_beforeExecute","_afterExecute","_component","_validatingTargetName","_excludeValidators","handled","argsBag","_validateAction","_executeAction","executors","_executor$validate","executor","_executor$execute","registerExecutor","createValidatorByTargetElement","condition","undefined","ERROR_MESSAGES","E4000","E4001","E4002","E4003","E4004","E4005","E4006","E4007","E4008","E4009","E4010","E4011","E4012","E4013","E4014","E4015","E4016","E4017","E4018","E4019","E4020","E4021","E4022","E4023","E4024","W4000","W4001","W4002","isModernAndroidDevice","android","isInputEventsL2Supported","EMPTY_CHAR","BaseMaskRule","_next","rawValue","_prepareHandlingArgs","_config$str","_config$start","_config$length","handlingProperty","isAccepted","adjustedCaret","caret","isForwardDirection","char","_adjustedForward","_adjustedBackward","EmptyMaskRule","MaskRule","maskChar","rest","_tryAcceptChar","_accepted","_isAllowed","acceptedChar","fullText","_isAccepted","_isValid","allowedChars","StubMaskRule","hasValueProperty","nextArgs","pointerDown","STATE_INVISIBLE_CLASS","TEXTEDITOR_CLEAR_BUTTON_CLASS","TEXTEDITOR_CLEAR_ICON_CLASS","TEXTEDITOR_ICON_CLASS","TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS","_isClearButtonVisible","editorName","_clearValueHandler","rendered","CUSTOM_BUTTON_HOVERED_CLASS","ignoreParentReadOnly","_isDisabled","_prepareIntegrationOptions","isUpdated","isDefinedByUser","TEXTEDITOR_BUTTONS_CONTAINER_CLASS","checkButtonInfo","buttonInfo","checkNamesUniqueness","existingNames","newName","isPredefinedButtonName","predefinedButtonsInfo","info","defaultButtonsInfo","button","isStringButton","isDefaultButton","defaultButtonInfo","buttonsInfo","$buttonsContainer","_compileButtonInfo","_createButton","buttonName","_renderButtons","TEXTEDITOR_CLASS","TEXTEDITOR_INPUT_CONTAINER_CLASS","TEXTEDITOR_INPUT_CLASS","TEXTEDITOR_INPUT_SELECTOR","TEXTEDITOR_CONTAINER_CLASS","TEXTEDITOR_PLACEHOLDER_CLASS","TEXTEDITOR_EMPTY_INPUT_CLASS","TEXTEDITOR_PENDING_INDICATOR_CLASS","TEXTEDITOR_VALIDATION_PENDING_CLASS","TEXTEDITOR_VALID_CLASS","EVENTS_LIST","CONTROL_KEYS","checkButtonsOptionType","TextEditorBase","_buttonCollection","spellcheck","showClearButton","valueChangeEvent","placeholder","inputAttr","onFocusIn","onFocusOut","onKeyDown","onKeyPress","onKeyUp","onChange","onInput","onCut","onCopy","onPaste","onEnterKey","displayValueFormatter","showValidationMark","_isFocused","_buttonsContainer","_isControlKey","_updateButtonsStyling","_renderInputType","_renderProps","_renderEvents","_renderEnterKeyAction","_$textEditorContainer","_$textEditorInputContainer","_createInput","_renderButtonContainers","_renderPendingIndicator","$inputContainer","_getInputContainer","$indicatorElement","_pendingIndicator","_disposePendingIndicator","isPending","_showValidMark","renderBeforeButtons","renderAfterButtons","_cleanButtonContainers","clean","_applyInputAttributes","inputAttrName","customAttributes","inputAttributes","_getDefaultAttributes","defaultAttributes","ios","mac","updateButtons","buttonInstance","renderInputPromise","_renderInputValue","_renderDisplayText","_isValueValid","validity","valid","_toggleEmptiness","_togglePlaceholder","_toggleSpellcheckState","_toggleTabIndex","_renderPlaceholderMarkup","_attachPlaceholderEvents","_$placeholder","placeholderText","$placeholder","insertAfter","startEvent","_placeholder","_clearValue","_keyPressHandler","_keyDownHandler","isCtrlEnter","isNewValue","_renderValueChangeEvent","keyPressEvent","_renderValueEventName","keyDownEvent","_cleanValueChangeEvent","valueChangeNamespace","textChangeNamespace","_focusEventTarget","_isInput","_preventNestedFocusEvent","_isNestedTarget","_focusClassTarget","_hasFocusClass","formattedValue","_enterKeyAction","_enterKeyHandlerUp","_updateValue","silent","getActiveElement","_refreshFocusEvent","_setInputType","input","MASK_EVENT_NAMESPACE","BLUR_EVENT","DIRECTION","FORWARD","BACKWARD","_getStrategyName","newCaret","handlerName","editorInput","getHandleEventNames","subscriptionName","getEventHandler","_attachChangeEventHandlers","editorOption","_suppressCaretChanging","_changeHandler","_showMaskPlaceholder","_direction","_isValueEmpty","_adjustCaret","_maskRulesChain","_caretTimeout","editorCaret","selectedText","_maskKeyHandler","_clearDragTimer","_dragTimer","_convertToValue","_keyPressHandled","pastedText","restText","accepted","_handleChain","inputVal","_inputHandlerTimer","_isAutoFill","_validateMask","browser","webkit","keyPressHandled","_hasSelection","_handleKey","_backspaceHandlerTimeout","BACKSPACE_INPUT_TYPE","_isControlKeyFired","_backspaceInputHandled","inputType","_handleBackspaceInput","_autoFillHandler","inputValue","afterBackspaceHandler","needAdjustCaret","callBack","currentCaret","_displayMask","_tryMoveCaretBackward","_backspaceHandler","DELETE_INPUT_TYPE","_prevCaret","setBackwardDirection","_updateEditorMask","_getEmptyString","_this$_prevCaret","_this$_prevCaret2","_this$_prevCaret3","_length","newData","setForwardDirection","hasValidChars","textLength","updatedCharsCount","correction","stubCaret","ESCAPED_CHAR","TEXTEDITOR_MASKED_CLASS","FORWARD_DIRECTION","BACKWARD_DIRECTION","buildInMaskRules","0","L","isLiteralChar","l","isSpaceChar","C","c","A","isNumericChar","charCodeAt","TextEditorMask","mask","maskRules","maskInvalidMessage","useMaskedValue","showMaskMode","keyHandlerMap","_maskStrategy","getHandler","parentHandler","_$hiddenElement","_initMaskStrategy","_renderHiddenElement","_attachMouseWheelEventHandlers","hasMouseWheelHandler","_onMouseWheel","wheel","mouseWheelAction","_removeHiddenElement","detachEvents","attachEvents","_parseMask","_renderMaskedValue","_changedValue","changeEvent","_maskRules","_parseMaskRule","currentMaskChar","isEscapedChar","_getMaskRule","ruleConfig","rulePattern","_normalizeChainArguments","chainArgs","_isMaskedValueMode","_replaceSelectedText","selection","textBefore","textAfter","edited","_shouldShowMask","submitElementValue","_getPreparedValue","handledCount","_textValue","_replaceMaskCharWithEmpty","keyHandler","_handleSelection","previousText","raiseInputEvent","runWithoutEventProcessing","_handleKeyChain","_moveCaret","emptyChars","chars","maskRuleIndex","force","_typingDirection","editorSpecific","_updateHiddenElement","_updateMaskOption","_processEmptyMask","PRIVATE_KEY_FIELD","repaintChangesOnly","_customizeStoreLoadOptions","_correctionIndex","_refreshItemsCache","_findItemElementByKey","keysEqual","_isItemEquals","_shouldAddNewGroup","change","_partialRefresh","_itemsCache","itemCache","_updateByChange","isPartialRefresh","changedItem","_insertByChange","_change$index","_beforeItemElementInserted","_afterItemElementInserted","_updateSelectionAfterRemoveByChange","removeIndex","_removeByChange","removedItem","oldItem","$removedItemElement","nextSiblingElement","insertElement","isItemsUpdated","SelectionFilterCreator","selectedItemKeyHashesMap","functionFilter","equalKeys","keyHash","selectedKeyHashesMap","getFilterForPlainKey","keyValue","getLocalFilter","keyGetter","getExpr","filterExpr","filterExprPart","itemKeyValue","currentKeyExpr","currentKeyValue","getCombinedFilter","dataSourceFilter","combinedFilter","EditStrategy","collectionWidget","resultIndex","key1","key2","_cache","_isNormalizedItemIndex","_isNode","isNode","PlainEditStrategy","_getPlainItems","MANAGER_EVENT","EMITTER_DATA","EventManager","_attachHandlers","_proxiedCancelHandler","_cancelHandler","_proxiedAcceptHandler","_acceptHandler","_pointerDownHandler","_pointerMoveHandler","_pointerUpHandler","_mouseWheelHandler","_eachEmitter","activeEmitters","_activeEmitters","_applyToEmitters","resetEmitter","_updateEmitters","_isSetChanged","_cleanEmitters","_fetchEmitters","currentSet","_closestEmitter","previousSet","_emittersSet","setChanged","handleEmitter","validatePointers","addCancelCallback","addAcceptCallback","emitters","acceptedEmitter","_cancelEmitter","canceledEmitter","removeCancelCallback","removeAcceptCallback","emitterIndex","_allowInterruptionByMouseWheel","_adjustWheelEvent","allowInterruption","closestGestureEmitter","verticalGestureDirection","eventManager","EMITTER_SUBSCRIPTION_DATA","registerEmitter","emitterConfig","emitterClass","emitterName","emitterEvents","noBubble","bubble","subscriptions","delegateSelector","disposeEmitter","hasWindowValue","hasWindow","windowObject","getWindow","hasProperty","defaultScreenFactorFunc","getCurrentScreenFactor","screenFactorCallback","screenFactorFunc","windowWidth","getNavigator","navigator","userAgent","isFocusingOnCaretChange","getCaret","range","selectionStart","selectionEnd","setCaret","getBody","contains","registerEvent","eventObject","bindType","delegateType","methodName","unshift","renderedCallbacks","TemplateBase","_renderCore","_ensureResultInContainer","resultInContainer","resultInBody","CSS_TRANSITION_EASING_REGEX","TransitionTimingFuncMap","linear","swing","ease","polynomBezier","x1","y1","x2","y2","Cx","Bx","Ax","Cy","By","Ay","bezierX","t","derivativeX","z","convertTransitionTimingFuncToEasing","cssTransitionEasing","forceName","coeffs","easingName","getEasing","removeEventName","RELATIVE_VALUE_REGEX","ANIM_DATA_KEY","ANIM_QUEUE_KEY","TRANSFORM_PROP","TransitionAnimationStrategy","initAnimation","transitionProperty","setProps","cleanupWhen","transitionAnimation","finish","_finishTransition","_cleanup","_completeAnimationCallback","_startAnimation","simulatedEndEventTimer","startTime","transitionEndFired","simulatedTransitionEndFired","transitionEndEventFullName","cleanup","waitForJSCompleteTimer","_simulatedTransitionEndDelay","transitionDelay","transitionDuration","transitionTimingFunction","jumpToEnd","FrameAnimationStrategy","_normalizeValue","_parseTransform","frameAnimation","currentValue","valueOf","animationFrameId","delayTimeout","_animationStep","transformString","translateData","scaleData","rotateData","translate","scale","_calcStepValue","currentDuration","calcValueRecursively","endPropValue","numericValue","FallbackToNoAnimationStrategy","isSynchronous","getAnimationStrategy","animationStrategies","transition","frame","noAnimation","baseConfigValidator","animationType","typeMessage","isObjectConfigValidator","isStringConfigValidator","CustomAnimationConfigurator","CssAnimationConfigurator","validateConfig","positionAliases","SlideAnimationConfigurator","positioningConfig","setupPosition","_setUpConfig","_initNewPosition","relativeValue","_getRelativeValue","FadeAnimationConfigurator","toOpacity","fromOpacity","skipElementInitialStyles","PopAnimationConfigurator","fromScale","toScale","_getCssTransform","animationConfigurators","custom","slide","slideIn","slideOut","fade","fadeIn","fadeOut","getAnimationConfigurator","defaultJSConfig","defaultCssConfig","setupAnimationOnElement","configurator","onElementAnimationComplete","removeData","startAnimationOnElement","stopAnimationOnElement","startTimeout","scopedRemoveEvent","subscribeToRemoveEvent","createAnimation","initialConfig","defaultConfig","pushInAnimationQueue","queueData","getAnimQueueData","writeAnimQueueData","isAnimating","shiftFromAnimationQueue","destroyAnimQueueData","executeAnimation","win","animationTypes","MemorizedCallbacks","focusableFn","nodeName","isTabIndexNotNaN","isDisabled","isDefaultFocus","isHyperlink","focusable","tabbable","focused","KNOWN_UA_TABLE","iPhone","iPhone5","iPhone6","iPhone6plus","iPad","iPadMini","androidPhone","androidTablet","msSurface","desktop","DEFAULT_DEVICE","phone","tablet","generic","grade","uaParsers","isPhone","isTablet","isMac","isIPhone4","screen","worseThan4_4","Devices","_window","_realDevice","_getDevice","_currentDevice","_currentOrientation","_recalculateOrientation","deviceOrName","_forced","_getDeviceOrNameFromWindowScope","_getDeviceNameFromSessionStorage","forceDevice","tinyHippos","realDevice","_deviceClasses","_getCssClasses","_isSimulator","self","isRippleEmulator","deviceName","_fromConfig","ua","_fromUA","sessionStorage","getItem","shortcuts","$window","_currentWidth","_changeOrientation","prevViewport","FRAME_ANIMATION_STEP_TIME","request","requestID","setAnimationFrameMethods","nativeRequest","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","nativeCancel","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","canceledRequests","requestId","STATUS","invalid","pending","BaseRuleValidator","rulesValidators","required","valueArray","every","itemValue","RequiredRuleValidator","NumericRuleValidator","ignoreEmptyValue","useCultureSettings","RangeRuleValidator","validNumber","numeric","validValue","StringLengthRuleValidator","CustomRuleValidator","dataGetter","extraParams","validationCallback","AsyncRuleValidator","reevaluate","callbackResult","_getWrappedPromise","res","CompareRuleValidator","comparisonTarget","otherValue","comparisonType","PatternRuleValidator","EmailRuleValidator","stringLength","email","GroupConfig","_pendingValidators","_onValidatorStatusChanged","_resetValidationInfo","_unsubscribeFromAllChangeEvents","validatorResult","_addPendingValidator","_subscribeToChangeEvents","_raiseValidatedEvent","_updateValidationInfo","_validationInfo","_unsubscribeFromChangeEvents","foundValidator","orderedRules","foundRules","_orderBrokenRules","_resolveIfComplete","_removePendingValidator","_updateBrokenRules","_synchronizeValidationInfo","ValidationEngine","$dxGroup","dxValidationGroup","defaultFormattedMessage","defaultMessage","brokenRule","validationRules","pendingRules","asyncRuleItems","ruleValidationResult","ruleValidator","_addBrokenRule","_setDefaultMessage","_validateAsyncRules","asyncResults","validateResult","asyncResult","ruleResult","_getPatchedRuleResult","_updateRuleConfig","all","_getAsyncRulesResult","registerValidator","validatorsInGroup","isDefaultGroup","isValidationGroupInstance","removeRegisteredValidator","_shouldRemoveGroup","removeGroup","initedOptions","newStatus","initGroups","_excluded","CANCELED_TOKEN","normalizeStoreLoadOptionAccessorArguments","originalArguments","mapGroup","level","restItem","mapRecursive","mapDataRespectingGrouping","groupInfo","normalizeSortingInfo","normalizeLoadResult","_data","createCustomStoreFromLoadFunc","storeConfig","createStoreFromConfig","createCustomStoreFromUrl","normalizationOptions","loadMode","fromUrlLoadMode","normalizeDataSourceOptions","ELEMENT_NODE","TEXT_NODE","DOCUMENT_NODE","nativeDOMAdapterStrategy","querySelectorAll","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","doc","ownerDocument","tagName","_document","ns","createElementNS","createTextNode","isElementNode","isTextNode","parentElement","newElement","getAttribute","removeAttribute","textContent","isAdd","classList","resultClassName","classNameSupported","elementClass","classNames","classIndex","activeElement","head","addEventListener","removeEventListener","ignoreKeys","TEXTBOX_CLASS","SEARCHBOX_CLASS","SEARCH_ICON_CLASS","TextBox","_showClearButton","maxLength","_renderMaxLengthHandlers","_renderSearchMode","_isAndroidOrIE","_onKeyDownCutOffHandler","_onChangeCutOffHandler","_toggleMaxLengthProp","_getMaxLength","_renderSearchIcon","_$searchIcon","$searchIcon","actualMaxLength","_cutOffExtraChar","getSelection","textInput","isMaskSpecified","resetActiveElement","clearSelection","removeAllRanges","closestCommonParent","startTarget","endTarget","$startTarget","$endTarget","$startParents","$endParents","startingParent","extractTemplateMarkup","templateTag","normalizeTemplateElement","clipboardText","clipboard","clipboardData","getData","setData","compareDocumentPosition","DOCUMENT_POSITION_CONTAINS","createTextElementHiddenCopy","elementStyles","includePaddings","fontStyle","fontVariant","letterSpacing","border","paddingTop","paddingRight","paddingBottom","paddingLeft","float","monthGetter","monthSetter","monthLimits","getLimits","setMonth","newDay","setDate","PATTERN_GETTERS","E","M","H","m","s","S","PATTERN_SETTERS","setHours","lastDayInMonth","isPM","getDay","currentYear","valueLength","maxLimitLength","getPatternGetter","patternChar","renderDateParts","regExpInfo","regexp","sections","patterns","isStub","limits","setter","forcedPattern","dM","getAmPm","getDatePartIndexByPosition","caretInGroup","DATE_COMPONENTS","TIME_COMPONENTS","ONE_MINUTE","ONE_DAY","ONE_YEAR","getStringFormat","dateUtils","SUPPORTED_FORMATS","MIN_DATEVIEW_DEFAULT_DATE","MAX_DATEVIEW_DEFAULT_DATE","newDate","FORMATS_INFO","getStandardPattern","components","datetime","standardPattern","FORMATS_MAP","SUBMIT_FORMATS_MAP","toStandardDateFormat","serializeDate","fromStandardDateFormat","dateParser","getMaxMonthDay","mergeDates","formatInfo","componentInfo","DATE_COMPONENTS_INFO","getLongestCaptionIndex","captionArray","longestIndex","longestCaptionLength","getLongestDate","monthNames","dayNames","stringFormat","longestDate","normalizeTime","setSeconds","setMilliseconds","formatDate","startValue","endValue","CALENDAR_NAVIGATOR_CLASS","CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS","CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS","CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS","CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS","CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS","CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS","Navigator","onCaptionClick","_captionClickAction","_renderCaption","_prevButton","$prevButton","_nextButton","_caption","$caption","toggleButton","buttonPrefix","CALENDAR_OTHER_VIEW_CLASS","CALENDAR_CELL_CLASS","CALENDAR_EMPTY_CELL_CLASS","CALENDAR_TODAY_CLASS","CALENDAR_SELECTED_DATE_CLASS","CALENDAR_CONTOURED_DATE_CLASS","CALENDAR_DXCLICK_EVENT_NAME","CALENDAR_DATE_VALUE_KEY","BaseView","_getViewName","cellTemplate","disabledDates","onCellClick","rowCount","colCount","allowValueSelection","_todayDate","_renderImpl","_createTable","_createDisabledDatesHandler","_renderBody","_renderContouredDate","_$table","$body","rowData","cellDate","_getFirstCellData","prevCellDate","rowIndex","_createRow","colIndex","_renderCell","_appendCell","cell","_appendMethodName","_cacheAppendMethodName","_createCell","$cell","_getClassNameByDate","getShortDateFormat","getCellAriaLabel","cellIndex","fixTimezoneGap","_prepareCellTemplateData","_getCellText","_getNextCellData","_isTodayCell","_isDateOutOfRange","isDateDisabled","_isOtherView","view","_createCellClickAction","_cellClickAction","_disabledDatesHandler","_getDefaultDisabledDatesHandler","contouredDate","$oldContouredCell","_getContouredCell","$newContouredCell","_getCellByDate","_changeValue","selectedCell","_selectedCell","_getFirstAvailableDate","getFirstDateView","isBoundary","CALENDAR_OTHER_MONTH_CLASS","Views","firstDayOfWeek","_renderHeader","_renderFocusTarget","$headerRow","$header","_renderHeaderCell","full","fullCaption","abbrCaption","_getDayCaption","_getFirstDayOfWeek","scope","abbr","getNavigatorCaption","today","sameDate","minDate","maxDate","dateInRange","daysInWeek","firstDay","getFirstMonthDate","firstMonthDayOffset","createDate","sameMonthAndYear","isDisabledDate","some","getLastMonthDate","foundDate","sameYear","decade","sameDecade","getFirstYearInDecade","createDateWithFullYear","firstYearInDecade","startDate","endDate","_isValueOnCurrentView","century","minDecade","maxDecade","sameCentury","getFirstDecadeInCentury","firstDecadeInCentury","CALENDAR_CLASS","CALENDAR_BODY_CLASS","CALENDAR_FOOTER_CLASS","CALENDAR_TODAY_BUTTON_CLASS","CALENDAR_HAS_FOOTER_CLASS","CALENDAR_VIEWS_WRAPPER_CLASS","CALENDAR_VIEW_CLASS","ANIMATION_DURATION_SHOW_VIEW","POP_ANIMATION_FROM","POP_ANIMATION_TO","CALENDAR_INPUT_STANDARD_PATTERN","LEVEL_COMPARE_MAP","ZOOM_LEVEL","MONTH","YEAR","DECADE","CENTURY","isIE11","Calendar","dateSerializationFormat","zoomLevel","maxZoomLevel","minZoomLevel","showTodayButton","onContouredChanged","hasFocus","_waitRenderView","_moveCurrentDateByOffset","_getRtlCorrection","_navigateUp","_view","_navigateDown","_dateOption","sameView","getViewFirstCellDate","_moveToClosestAvailableDate","getViewLastCellDate","_isMaxZoomLevel","_updateTimeComponent","_dateValue","_getSerializationFormat","getDateSerializationFormat","_convertToDate","deserializeDate","cellElement","serializationFormat","_shiftDate","reverse","baseDate","_getMaxDate","_getMinDate","isDateForwardInNeighborView","_areDatesInNeighborView","isDateForwardInRange","dateForward","date1","date2","getYear","isDateForwardInStartView","isDateBackwardInStartView","isCurrentDateAvailable","_isDateNotAvailable","isDateForwardAvailable","isDateBackwardAvailable","dateBackward","_areDatesInSameView","_correctZoomLevel","_initCurrentDate","_getNormalizedDate","normalizeDate","_getDate","_onContouredChanged","_updateCurrentDate","_$viewsWrapper","normalizedDate","_getViewsOffset","_isOtherViewCellClicked","_suppressNavigation","_navigate","_renderNavigator","_setViewContoured","_updateAriaId","zoomCorrection","_getMonthsOffset","yearOffset","monthOffset","_alreadyViewRender","_getDateByOffset","_waitRenderViewTimeout","_date","currentDay","difference","getDifferenceInMonth","lastDay","_renderViews","_navigator","_renderSwipeable","_renderFooter","_updateAriaSelected","_renderSpecificView","beforeDate","_beforeView","_isViewAvailable","afterDate","_afterView","_translateViews","specificView","$view","_viewConfig","_injectComponent","_cellClickHandler","getViewMinBoundaryDate","getViewMaxBoundaryDate","_getViewPosition","coefficient","rtlCorrection","nextView","getViewDown","isMaxZoomLevel","setMinutes","getMilliseconds","newCurrentDate","_animateShowView","_navigatorConfig","_updateButtonsVisibility","_navigatorClickHandler","getViewUp","_isMinZoomLevel","_getRequiredView","_swipeable","_viewWidth","isRtl","_updateNavigatorCaption","moveOffset","_isDateInInvalidRange","_animateWrapper","_viewWidthValue","$todayButton","_toTodayView","_$footer","dateValue","_popAnimationView","newView","offsetSign","endPosition","viewsWrapperPosition","_preventViewChangeAnimation","_wrapperAnimationEndHandler","_rearrangeViews","_resetLocation","viewOffset","viewToCreateKey","viewToRemoveKey","destinationDate","dateByOffset","_clearViewWidthCache","_disposeViews","_refreshViews","_updateViewsValue","$prevSelectedCell","$selectedCell","_value2","ariaId","$newCell","_suppressingNavigation","DateBoxStrategy","dateBox","widgetOption","_widget","_renderWidget","_createWidget","_getWidgetContainer","widgetName","_getWidgetName","widgetOptions","_getWidgetOptions","getDefaultOptions","getDisplayFormat","supportedKeys","getKeyboardListener","customizeButtons","getParsedText","renderInputMinMax","renderOpenedState","_this$_getPopup","_getPopup","renderPopupContent","_preventFocusOnPopup","getFirstPopupElement","getLastPopupElement","popupShowingHandler","popupHiddenHandler","dateBoxValue","useCurrentDateByDefault","getDefaultDate","textChangedHandler","renderValue","getValue","isAdaptivityChanged","dateOption","CalendarStrategy","homeEndHandler","viewValue","_getContouredValue","lastActionElement","_lastActionElement","shouldCloseDropDown","_closeDropDownByEnter","displayFormat","_valueChangedHandler","actionValue","_isCalendarVisible","widget","_escapeHandler","DATEVIEW_ROLLER_CLASS","DATEVIEW_ROLLER_ACTIVE_CLASS","DATEVIEW_ROLLER_CURRENT_CLASS","DATEVIEW_ROLLER_ITEM_CLASS","DATEVIEW_ROLLER_ITEM_SELECTED_CLASS","DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS","DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS","DateViewRoller","showOnClick","onSelectedIndexChanged","_renderSelectedItemFrame","_renderContainerClick","_renderSelectedValue","_renderItemsClick","_renderWheelEvent","_wrapAction","_endActionHandler","_renderSelectedIndexChanged","_selectedIndexChanged","_isWheelScrolled","clickAction","originalAction","_fitIndex","_moveTo","_getItemPosition","_renderActiveStateItem","_itemHeight","_getItemSelector","_itemElementIndex","_shouldScrollToNeighborItem","_prepareDirections","_animation","floor","_fitSelectedIndexInRange","itemsCount","_isInNullNeighborhood","_getSelectedIndexAfterScroll","currentSelectedIndex","locationTop","currentSelectedIndexPosition","dy","newSelectedIndex","_getNewSelectedIndex","_toggleActive","_fireSelectedIndexChanged","toggleActiveState","_refreshSelectedIndex","fitIndex","DATEVIEW_CLASS","DATEVIEW_COMPACT_CLASS","DATEVIEW_WRAPPER_CLASS","DATEVIEW_ROLLER_CONTAINER_CLASS","TYPE","ROLLER_TYPE","DateView","_valueOption","_getDefaultDate","applyCompactClass","_toggleFormatClasses","_toggleCompactClass","currentFormat","previousFormat","_wrapper","_renderRollers","_$rollersContainer","_createRollerConfigs","_rollers","_rollerConfigs","$roller","displayItems","roller","_setActiveRoller","_setRollerState","_createRollerConfig","componentName","valueRange","_calculateRollerConfigValueRange","curDate","_getCurrentDate","setValue","valueItems","currentRoller","activeRoller","_updateRollersPosition","correctIndex","rollerValue","_refreshRollers","_refreshRoller","rollerType","rollerConfig","minYear","minMonth","maxYear","maxMonth","minHour","maxHour","DateViewStrategy","defaultOptionsRules","_device2","_isNativeType","onDisposing","NativeStrategy","_isTextInput","_getDateBoxType","TIMEVIEW_CLASS","TIMEVIEW_CLOCK_CLASS","TIMEVIEW_FIELD_CLASS","TIMEVIEW_HOURARROW_CLASS","TIMEVIEW_TIME_SEPARATOR_CLASS","TIMEVIEW_FORMAT12_CLASS","TIMEVIEW_FORMAT12_AM","TIMEVIEW_FORMAT12_PM","TIMEVIEW_MINUTEARROW_CLASS","rotateArrow","$arrow","angle","cssRotate","TimeView","use24HourFormat","_showClock","_arrowOffset","_getValue","_renderBox","_updateTime","$box","_renderClock","__","_$hourArrow","_$minuteArrow","_updateClock","hourArrowAngle","minuteArrowAngle","_getBoxItems","is12HourFormat","_hourBox","_minuteBox","_format12","_createHourBox","_createMinuteBox","_createFormat12Box","_onHourBoxValueChanged","onKeyboardHandled","_getNumberBoxConfig","_isPM","newHours","_convertMaxHourToMin","maxHoursValue","newMinutes","periodNames","_refreshFormat12","_silentEditorValueUpdate","showSpinButtons","_normalizeHours","_updateField","SHRINK_VIEW_SCREEN_WIDTH","DATEBOX_ADAPTIVITY_MODE_CLASS","CalendarWithTimeStrategy","_is24HourFormat","viewDate","_updateDateTime","_timeView","_isShrinkView","_isSmallScreen","_repaintTimer","isAdaptiveMode","currentAdaptiveMode","_currentAdaptiveMode","preventDefaultValue","_box","_attachTabHandler","calendarPopupConfig","clockMinWidth","_removeMinWidthTimer","DATE_FORMAT","BOUNDARY_VALUES","ListStrategy","_refreshItems","_timeListItemTemplate","_listItemClickHandler","_widgetItems","_getTimeListItems","_setSelectedItemsByValue","_asyncScrollTimeout","_scrollToSelectedItem","dateIndex","_getDateIndex","_areDatesEqual","_getBoundaryDate","_getRangeItems","rangeDuration","rangeItems","interval","boundaryValue","_updatePopupHeight","dropDownOptionsHeight","popupHeight","_timeList","DATEBOX_CLASS","DX_AUTO_WIDTH_CLASS","DX_CLEAR_BUTTON_CLASS","DATEBOX_WRAPPER_CLASS","PICKER_TYPE","calendar","rollers","native","STRATEGY_NAME","dateView","calendarWithTime","STRATEGY_CLASSES","Native","CalendarWithTime","List","DateBox","showAnalogClock","pickerType","invalidDateMessage","dateOutOfRangeMessage","calendarOptions","currentDevice","_updatePickerOptions","_pickerType","_initStrategy","_toLowerCaseFirstLetter","string","strategyName","_getFormatType","currentType","isTime","isDate","_refreshFormatClass","_refreshPickerTypeClass","_formatValidationIcon","_renderDimensions","_this$_strategy$_upda","_this$_strategy","clearButtonWidth","_getClearButtonWidth","longestElementDimensions","_getLongestElementDimensions","curWidth","shouldHideValidationIcon","_storedPadding","leftPadding","rightPadding","clearButtonElement","longestValue","$longestValueElement","isPaddingStored","storedPadding","elementWidth","necessaryWidth","_renderPopupWrapper","title","_getPopupTitle","classPostfixes","isCustomValueDisabled","_getDisplayedText","submitFormat","submitValue","displayedText","_getFormatByMode","_getParsedDate","_getDateByDefault","_applyInternalValidation","parsedText","hasText","isDateInRange","validationMessage","_applyCustomValidation","_serializeDate","_isValueChanged","oldTime","newTime","_isTextChanged","oldText","newText","_refreshStrategy","_this$_strategy2","isValueChanged","DateBoxMask","originalHandlers","callOriginalHandler","originalHandler","applyHandler","maskHandler","_shouldUseOriginalHandler","_revertPart","_isAllSelected","_selectFirstPart","_selectLastPart","_revertChanges","_enterHandler","_selectNextPart","_upDownArrowHandler","isNotDeletingInCalendar","_useMaskBehavior","_setNewDateIfEmpty","originalValue","_getActivePartValue","_initialMaskValue","_loadMaskValue","_partIncrease","useMaskBehavior","emptyDateValue","_e$originalEvent","_useBeforeInputEvent","chrome","_processInputKey","_maskInputHandler","_renderSelectedPart","_isSingleCharKey","isBackwardDeletion","isForwardDeletion","_isSingleDigitKey","_maskValue","_activePartIndex","_searchString","_searchNumber","_formatPattern","isLDMLPattern","_renderDateParts","formatLength","_getActivePartProp","isShortFormat","maxSearchLength","isLengthExceeded","isValueOverflowed","_getActivePartLimits","_setActivePartValue","_partLimitsReached","startString","endLimit","_clearSearchValue","_regExpInfo","_getFormatPattern","regExp","flags","convertedRegExp","_prepareRegExpInfo","_detachMaskEvents","_clearMaskState","_attachMaskEvents","_initMaskState","_dateParts","_maskClickHandler","_maskPasteHandler","_maskCompositionEndHandler","_maskBeforeInputHandler","isBoundaryIndex","lockOtherParts","limitFunction","_getRealLimitsPattern","zeroes","_addLeadingZeroes","limitDelta","_applyLimits","limitBase","limitClosest","_isDateValid","_isValueDirty","_fireChangeEvent","_saveMaskValue","Animator","_finished","_stopped","_proxiedStepCore","_stepCore","_stepAnimationFrame","_isStopped","_isFinished","_complete","_step","inProgress","standardColorNames","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","standardColorTypes","re","colorString","rgb","hsvToRgb","hslToRgb","_round","Color","color","baseColor","parseColor","colorIsInvalid","r","normalize","g","hsv","toHsvFromRgb","hsl","toHslFromRgb","ii","colorComponent","def","toHexFromRgb","V","vMin","vInc","vDec","calculateHue","convertTo01Bounds","maxMinSum","makeColorTint","colorPart","colorTint","modifyColorTint","hueToRgb","p","q","isIntegerBetweenMinAndMax","highlight","alter","toHex","darken","blend","blendColor","other","getPureColor","isValidHex","hex","isValidRGB","isValidAlpha","fromHSL","DEFAULT_CONFIG","ESCAPING_CHAR","MAXIMUM_NUMBER_LENGTH","getGroupSizes","formatString","getSignParts","signParts","reverseString","isPercentFormat","removeStubs","getNonRequiredDigitCount","floatFormat","getRequiredDigitCount","normalizeValueString","valuePart","minDigitCount","maxDigitCount","applyGroups","valueString","groupSizes","groupSize","formatNumberPart","escapeIndex","isEscape","getFloatPointIndex","signFormatParts","isPositiveZero","isPositive","numberFormat","floatPointIndex","floatFormatParts","minFloatPrecision","maxFloatPrecision","minIntegerPrecision","maxIntegerPrecision","unlimitedIntegerDigits","integerLength","floatPrecision","valueParts","valueIntegerPart","valueFloatPart","integerString","floatString","parseValue","isPercent","isNegative","prepareValueText","valueText","isIntegerPart","nextText","nextValueText","hasGroups","getFormatByValueText","valueTextParts","valueTextWithModifiedFloat","valueWithModifiedFloat","decimalSeparatorIndex","getFormat","positiveFormat","negativeFormat","renderer","initRender","dxRenderer","repeatMethod","setAttributeValue","attrName","setProperty","_className","setClass","partialName","isOuter","isInner","paddings","borders","margins","sizeAdjustment","isBorderBox","boxSizing","padding","setStyle","appendElements","nextSibling","wrapTR","tBodies","setCss","firstChild","before","wrapper","removeElement","setText","cloneNode","nodes","elementId","queryId","offsetHeight","getClientRects","elementMatches","j","siblings","parentChildNodes","prev","previousSibling","targets","emptyArray","getWindowByElement","defaultView","rect","docElem","pageYOffset","clientTop","pageXOffset","clientLeft","marginTop","parentOffset","offsetProp","scrollWindow","directionStrategy","rendererWrapper","enumerable","configurable","set","Promise","resolver","promises","weakMap","WeakMap","FunctionTemplate","fitIntoRange","minValue","maxValue","isMinValueUndefined","isMaxValueUndefined","inRange","getExponent","toExponential","_isEdgeBug","toPrecision","adjust","separatedAdjustedValue","precision","getPrecision","separatedValue","sourceValue","absValue","isExponentValue","integerPart","mantissa","positionOfDelimiter","getRemainderByDivision","dividend","divider","digitsCount","quotient","roundFloatPart","getExponentLength","_valueString$split$","toFixed","_normalize","_upperCaseFirst","_chop","dasherize","camelize","upperFirst","humanize","titleize","DIGIT_CHARS","captionize","captionList","isPrevCharNewWord","isNewWord","leftPad","FORMAT_TYPES","3","4","5","LDML_FORMATTERS","useUtc","Q","period","timezoneOffset","getTimezoneOffset","signPart","timezoneOffsetAbs","hoursPart","minutesPart","X","Z","charIndex","isCurrentCharEqualsNext","charCount","isEscaping","DX_SWIPEABLE","SWIPEABLE_CLASS","ACTION_TO_EVENT_MAP","onCancel","Swipeable","elastic","_detachEventHandlers","_createEventData","_eventData","DROPDOWNLIST_POPUP_WRAPPER_CLASS","SKIP_GESTURE_EVENT_CLASS","SEARCH_EVENT","SEARCH_MODES","DropDownList","_allowSelectItemByTab","$focusedItem","_setSelectedElement","_setValue","searchEnabled","searchMode","searchTimeout","minSearchLength","showDataBeforeSearch","useItemTextAsTitle","_setListDataSource","_validateSearchMode","_clearSelectedItem","_initItems","_setListFocusedElementOptionChange","_updateActiveDescendant","_initContentReadyAction","_initSelectionChangedAction","_initItemClickAction","_contentReadyAction","_selectionChangedAction","_itemClickAction","_saveFocusOnWidget","_fitIntoRange","availableItems","_calcNextItem","nextIndex","_getSelectedIndex","_updateCustomBoundaryContainer","_popupWrapperClass","customContainer","$containerWithParents","overflowY","_$customBoundaryContainer","_loadInputValue","_setSelectedItem","_loadItem","_getItemFromPlain","itemByValue","_this$_list","listFocusedItemId","isElementOnDom","activedescendant","_displayValue","_refreshSelected","_listItemElements","_isSelectedValue","_setFocusPolicy","normalizedSearchMode","_processDataSourceChanging","_isCustomValueAllowed","_clearFilter","_preventFiltering","_$list","autoResizeEnabled","_getMaxHeight","_renderList","canListHaveFocus","_canListHaveFocus","_setAriaTargetForList","_listId","_listConfig","_refreshList","_renderPreventBlur","controls","owns","_shouldRefreshDataSource","dataSourceProvided","_needPassDataSourceToList","_templates","templateProvider","_listContentReadyHandler","_listItemClickAction","_getDataSource","dxList","_setListOption","_isMinSearchLengthExceeded","_needClearFilter","_canKeepDataSource","_this$_dataSource","isMinSearchLengthExceeded","_isLastMinSearchLengthExceeded","_getSearchEvent","_getSetFocusPolicyEvent","_shouldRenderSearchEvent","_searchHandler","_clearSearchTimer","_searchTimer","_searchDataSource","_searchCanceled","_filterDataSource","_dataSourceFiltered","_refreshPopupVisibility","_shouldOpenPopup","_hasItemsToShow","shouldOpenPopup","resultAmount","_updatePopupDimensions","_needPopupRepaint","currentPageIndex","needRepaint","$customBoundaryContainer","windowHeight","_shouldUseDisplayValue","DISABLED_STATE_SELECTOR","SELECTBOX_CLASS","SELECTBOX_POPUP_CLASS","SELECTBOX_CONTAINER_CLASS","SELECTBOX_POPUP_WRAPPER_CLASS","SelectBox","clearSelectBox","isEditable","_valueSubstituted","_savedTextRemoveEvent","_preventSubstitution","searchIfNeeded","_cancelSearchIfNeed","_setNextValue","_cancelEditing","isOpened","inputText","isCustomText","isSearchEnabled","onCustomItemCreating","customItem","allowClearing","tooltipEnabled","displayCustomValue","_initCustomItemCreatingAction","_renderTooltip","_focusListElement","_focusSelectedElement","$listItems","_isCustomItemSelected","_renderFocusedElement","_preventInputValueRender","isPaginate","_renderInputValueAsync","_renderInputValueImpl","_setNextItem","dataSourceIsLoaded","hasPages","isLastPage","isLastItem","isUnknownItem","_getSelectionChangeHandler","_listFocusedItemChangeHandler","focusedItem","_selectionChangeHandler","addedItem","_getActualSearchValue","_shouldClearFilter","_restoreInputText","_wasSearch","showDataImmediately","_isValueEqualInputText","initialSelectedItem","_shouldCancelSearch","saveEditingValue","_loadItemDeferred","_clearTextValue","newSelectedItem","isOverlayTarget","_isOverlayNestedTarget","shouldCancelSearch","isPopupVisible","_hideAnimationProcessing","_shouldCancelSearchValue","$listFocused","_shouldCloseOnItemClick","_completeSelection","selectedItemText","_isValueChanging","_customItemAddedHandler","_customItemCreatingAction","_createCustomItem","actionResult","_setCustomItem","_wasSearchValue","_renderInputSubstitution","isAllSelected","inputHasSelection","_shouldSubstitutionBeRendered","SCROLLVIEW_PULLDOWN_REFRESHING_CLASS","SCROLLVIEW_PULLDOWN_READY_CLASS","SCROLLVIEW_PULLDOWN_IMAGE_CLASS","SCROLLVIEW_PULLDOWN_INDICATOR_CLASS","SCROLLVIEW_PULLDOWN_TEXT_CLASS","SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS","STATE_RELEASED","STATE_READY","STATE_REFRESHING","STATE_LOADING","PULLDOWN_RELEASE_TIME","PullDownNativeScrollViewStrategy","_$topPocket","_$pullDown","_$bottomPocket","_$refreshingText","_$scrollViewContent","_initCallbacks","pullDownCallbacks","releaseCallbacks","reachBottomCallbacks","_renderPullDown","_releaseState","$image","$loadContainer","$loadIndicator","$text","_$pullDownText","_$pullingDownText","_$pulledDownText","_state","_refreshPullDownText","pullDownTextItems","visibleState","_setTopPocketOffset","_updateDimensions","_topPocketSize","_bottomPocketSize","_scrollOffset","_pullDownEnabled","_setPullDownOffset","_pullDownRefreshTimeout","_pullDownRefreshing","currentLocation","scrollDelta","_isPullDown","_pullDownReady","_isReachBottom","_reachBottom","_stateReleased","_reachBottomEnabled","pullDownEnable","reachBottomEnable","pendingRelease","_releaseTimeout","_updateAction","SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS","PULLDOWN_ICON_CLASS","STATE_TOUCHED","STATE_PULLED","SwipeDownNativeScrollViewStrategy","_releasePullDown","_startClientY","_deltaY","_movePullDown","pullDownHeight","_getPullDownHeight","_getPullDownStartPosition","transform","_pullDownRefreshHandler","_refreshPullDown","math","ScrollViewScroller","considerPockets","_dimension","_bottomBound","_minOffset","_updateScrollbar","_scrollbar","containerSize","_containerSize","scaleRatio","_getScaleRatio","_moveContent","_reachBottomReady","_moveScrollbar","moveTo","_scrollComplete","_inBounds","_reachBottomLoading","_getMinOffset","_maxOffset","_releaseHandler","_moveToBounds","_update","_releaseTask","_release","_reachBottomEnablingHandler","_pullDownEnablingHandler","_considerTopPocketChange","_updateHandler","_pendingReleaseHandler","SimulatedScrollViewStrategy","_createScroller","scroller","_scrollers","_scrollerOptions","$topPocket","$bottomPocket","$pullDown","$pullDownText","$pullingDownText","$pulledDownText","$refreshingText","SCROLLVIEW_CLASS","SCROLLVIEW_CONTENT_CLASS","SCROLLVIEW_TOP_POCKET_CLASS","SCROLLVIEW_BOTTOM_POCKET_CLASS","SCROLLVIEW_PULLDOWN_CLASS","SCROLLVIEW_REACHBOTTOM_CLASS","SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS","SCROLLVIEW_REACHBOTTOM_TEXT_CLASS","SCROLLVIEW_LOADPANEL","refreshStrategies","pullDown","swipeDown","simulated","isServerSide","scrollViewServerConfig","ScrollView","refreshStrategy","_loadingIndicatorEnabled","_initContent","_initTopPocket","_initBottomPocket","_initLoadPanel","$reachBottom","_$reachBottom","_$reachBottomText","_updateReachBottomText","$loadPanelElement","loadPanelOptions","_loadPanel","strategyClass","_reachBottomHandler","_pullDownAction","_reachBottomAction","_tryRefreshPocketState","_pullDownEnable","_reachBottomEnable","_loadingIndicator","_pullDownLoading","preventReachBottom","showOrHide","DATA_SOURCE_OPTIONS_METHOD","DATA_SOURCE_CHANGED_METHOD","DATA_SOURCE_LOAD_ERROR_METHOD","DATA_SOURCE_LOADING_CHANGED_METHOD","DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD","SPECIFIC_DATA_SOURCE_OPTION","NORMALIZE_DATA_SOURCE","DataHelperMixin","postCtor","_disposeDataSource","_loadDataSource","widgetDataSourceOptions","dataSourceType","dataSourceOptions","_isSharedDataSource","_dataSourceType","_addDataSourceHandlers","_addDataSourceChangeHandler","_addDataSourceLoadErrorHandler","_addDataSourceLoadingChangedHandler","_addReadyWatcher","_ready","_proxiedDataSourceChangedHandler","_proxiedDataSourceLoadErrorHandler","_proxiedDataSourceLoadingChangedHandler","loadSingle","jsPrefixes","cssPrefixes","Webkit","Moz","O","getStyles","forEachPrefixes","cssPrefixesCount","jsPrefix","prefixedProp","lowerPrefixedProp","styleProp","originalName","stylePropPrefix","specific","pxExceptions","normalizeStyleProp","setDimensionProperty","propertyName","setWidth","setHeight","TOOLBAR_CLASS","executingName","ensureDefined","defaultValue","executeAsync","normalizedContext","delayedFuncs","delayedNames","delayedDeferreds","deferExecute","oldExecutingName","currentDelayedCount","deferRender","deferUpdate","deferRenderer","deferUpdater","findBestMatches","targetFilter","mapFn","bestMatches","maxMatchCount","itemSrc","matchCount","paramName","targetValue","mismatch","valueItem","splitPair","raw","_raw$x","_raw$y","pairToObject","preventRound","pair","getKeyHash","escapeRegExp","applyServerDecimalSeparator","noop","asyncNoop","grep","checkFunction","invert","check","expectedCheck","arraysEqualByValue","array1","array2","depth","equalByValue","objectsEqualByValue","object1","object2","strict","_propertyName","maxEqualityDepth","comparisonResult","DefaultAdapter","validationRequestsCallbacks","VALIDATOR_CLASS","VALIDATION_STATUS_PENDING","Validator","_initAdapter","skipValidation","registerValidatorInGroup","dxStandardEditor","adapter","_this$option$editor$o","_this$option","_this$option$editor","_resetValidationRules","_validationRules","bypass","currentError","getCurrentValidationError","_getValidationRules","currentResult","id","_applyValidationResult","validatedAction","_updateValidationResult","applyValidationResults","isCorrectStructure","hasTwoFields","hasCorrectFields","_getSpecificDataSourceOption","hasSimpleItems","reduce","innerItem","keepInitialKeyOrder","CONTEXTMENU_NAMESPACE","CONTEXTMENU_NAMESPACED_EVENT_NAME","HOLD_NAMESPACED_EVENT_NAME","CONTEXTMENU_EVENT_NAME","ContextMenu","_contextMenuHandler","_holdHandler","_fireContextMenu","HOLD_EVENT_NAME","HOLD_TIMEOUT","HoldEmitter","_startTimer","holdTimeout","_touchWasMoved","_stopTimer","changeCallback","$originalViewPort","$current","isNewViewportFound","originalViewPort","TEMPLATE_OPTIONS_NAME","DX_POLYMORPH_WIDGET_TEMPLATE","widgetElement","_tempTemplates","_defaultTemplates","_anonymousTemplateName","_createTemplateIfNeeded","skipImmediate","useDeferUpdateForTemplates","tempTemplate","_extractTemplates","anonymousTemplateMeta","_extractAnonymousTemplate","suitableTemplates","_createTemplate","$anonymousTemplate","$notJunkTemplateContent","isEmptyText","cachedTemplate","templateSourceResult","DOMComponent","createDefaultOptions","_customClass","_getSynchronizableOptionsForCreateComponent","_attachWindowResizeCallback","_initTemplateManager","instanceCustomRules","_classCustomRules","isCustomOption","_isDimensionChangeSupported","windowResizeCallBack","_windowResizeCallBack","_renderElementAttributes","_toggleRTLDirection","_renderVisibilityChange","_attachVisibilityChangeHandlers","class","_attachDimensionChangeHandlers","_isVisibilityChangeSupported","_getOptionValue","_isCssUpdateRequired","_isHidden","_checkVisibilityChanged","modelByElement","_isUpdateAllowed","_requireRefresh","_renderComponent","_detachWindowResizeCallback","synchronizableOptions","nestedComponentOptions","nestedComponentConfig","_extendConfig","optionChangedHandler","extendConfig","attrs","renderRequired","_isInitializingRequired","_updateDOMComponent","_removeAttributes","_removeClasses","extractTemplates","anonymousTemplate","getTemplate","getDefaultAlignment","getElementsFromPoint","msElementsFromPoint","elementsFromPoint","getBoundingRect","DBLCLICK_EVENT_NAME","DBLCLICK_NAMESPACE","NAMESPACED_CLICK_EVENT","DBLCLICK_TIMEOUT","DblClick","_handlerCount","_forgetLastClick","_firstClickTarget","_lastClickTimeStamp","timeBetweenClicks","isSimulated","isDouble","DataConverter","_dataStructure","_itemsCount","_visibleItemsCount","_indexByKey","_convertItemsToNodes","parentKey","parentId","_getParentId","_convertItemToNode","_checkForDuplicateId","_itemHasChildren","_dataAccessors","getters","_dataType","_getUniqueKey","isCorrectKey","getItemsCount","_rootValue","_makeObjectFromPrimitive","childrenKeys","setChildrenKeys","getParentNode","setters","_convertToPublicNode","publicNode","convertToPublicNodes","publicNodes","_getByKey","setDataAccessors","accessors","getByKey","currentElementKey","getVisibleItemsCount","updateIndexByKey","updateChildrenKeys","removeChildrenKeys","createPlainStructure","rootValue","EXPANDED","SELECTED","DISABLED","DataAdapter","_defaultOptions","dataConverter","dataAccessors","_selectedNodesKeys","_expandedNodesKeys","_createInternalDataStructure","getTreeNodes","setOption","multipleSelection","recursiveSelection","recursiveExpansion","onNodeChanged","_initialDataStructure","search","_updateExpansion","_setChildrenSelection","_setParentSelection","_updateNodesKeysArray","_updateOneBranch","_setParentExpansion","_getDataBySelectionMode","_isNodeVisible","toggleSelection","getFullData","_toggleChildrenSelection","_iterateParents","newParentState","_calculateSelectedState","_setFieldState","_iterateChildren","recursive","processedKeys","nodeKey","child","selectedItemsCount","invisibleItemsCount","childNode","isChildInvisible","childState","_markChildren","_removeNode","counter","_addNode","_updateFields","getSelectedNodesKeys","getExpandedNodesKeys","getNodesByItems","getRootNodes","getPublicNode","getChildrenNodes","addItem","removeItem","selectRecursive","isSingleModeUnselect","_isSingleModeUnselect","selectionState","toggleNodeDisabledState","toggleSelectAll","lastSelectedKey","dataStructure","toggleExpansion","isFiltered","_filterDataStructure","_createCriteria","filterValue","lookForParents","DISABLED_STATE_CLASS","HierarchicalCollectionWidget","parentIdExpr","expandedExpr","_initAccessors","_createDataAdapterAccessors","_getDataAdapterOptions","_getIconContainer","_getTextContainer","_getPopoutContainer","_addContentClasses","_itemsGetter","_getAccessors","accessor","_compileAccessor","arr","optionExpr","getterName","setterName","newAccessor","_addWidgetClass","_widgetClass","hideCallback","indexOfCallback","hasCallback","RESIZABLE","RESIZABLE_CLASS","RESIZABLE_RESIZING_CLASS","RESIZABLE_HANDLE_CLASS","RESIZABLE_HANDLE_TOP_CLASS","RESIZABLE_HANDLE_BOTTOM_CLASS","RESIZABLE_HANDLE_LEFT_CLASS","RESIZABLE_HANDLE_RIGHT_CLASS","RESIZABLE_HANDLE_CORNER_CLASS","DRAGSTART_START_EVENT_NAME","drag","DRAGSTART_EVENT_NAME","DRAGSTART_END_EVENT_NAME","Resizable","handles","stepPrecision","area","minWidth","minHeight","onResizeStart","onResize","onResizeEnd","roundStepValue","_renderHandles","_resizeStartAction","_resizeEndAction","_resizeAction","_handles","directions","handleName","_renderHandle","handlers","_dragHandler","_dragEndHandler","handleElement","_toggleEventHandlers","shouldAttachEvents","_toggleResizingClass","_movingSides","_getMovingSides","_elementLocation","elementRect","_elementSize","_renderDragOffsets","_getArea","handleWidth","handleHeight","handleOffset","areaOffset","_getAreaScrollOffset","scrollX","scrollY","_getBorderWidth","sides","_getOffset","_renderWidth","_renderHeight","steps","strictPrecision","_getStrictOffset","_getSimpleOffset","xPos","yPos","newXShift","newYShift","separatorOffset","isSmallOffset","newOffsetX","newOffsetY","hasCornerTopLeftClass","hasCornerTopRightClass","hasCornerBottomLeftClass","hasCornerBottomRightClass","_getAreaFromObject","_getAreaFromElement","isElement","areaElement","_correctAreaGeometry","$area","areaBorderLeft","areaBorderTop","baseZIndex","zIndexStack","base","ZIndex","baseIndex","zIndex","OVERLAY_CLASS","OVERLAY_WRAPPER_CLASS","OVERLAY_CONTENT_CLASS","OVERLAY_SHADER_CLASS","OVERLAY_MODAL_CLASS","INNER_OVERLAY_CLASS","INVISIBLE_STATE_CLASS","RTL_DIRECTION_CLASS","OVERLAY_STACK","PREVENT_SAFARI_SCROLLING_CLASS","TAB_KEY","firefoxDesktop","iOS","hasSafariAddressBar","safari","forceRepaint","_proxiedDocumentDownHandler","Overlay","allowedOffsets","_allowedOffsets","_changePosition","innerOverlay","ignoreChildEvents","_initCloseOnOutsideClickHandler","_initTabTerminatorHandler","_initInnerOverlayClass","_toggleViewPortSubscription","_initHideTopOverlayHandler","_initTarget","_initContainer","path","pathParts","_hideTopOverlayHandler","_showAnimationProcessing","isAttachedTarget","isInnerOverlay","outsideClick","_outsideClickHandler","_isTopOverlay","overlayStack","_overlayStack","tabbableElements","_findTabbableBounds","_zIndexInitValue","_viewPortChangeHandle","_viewPortChangeHandler","_renderVisibilityAnimate","_getAnimationConfig","_parentHidden","_isParentHidden","_currentVisible","_isShown","showAnimation","_normalizeAnimation","startShowAnimation","completeShowAnimation","_isHidingActionCanceled","_renderVisibility","_isShowingActionCanceled","_toggleSafariScrolling","_stopShowTimer","_asyncShowTimeout","hideAnimation","startHideAnimation","completeHideAnimation","hidingArgs","_forceFocusLost","_toggleShading","_toggleSubscriptions","_that$_actions","shouldResetActiveElement","completeCallback","startCallback","_toggleVisibility","_updateZIndexStackPosition","showingArgs","_moveFromContainer","_moveToContainer","pushToStack","_zIndex","_toggleTabTerminator","_proxiedTabTerminatorHandler","_tabKeyHandler","$elements","elementsCount","$firstTabbable","$lastTabbable","isTabOnLast","isShiftTabOnFirst","isEmptyTabList","isOutsideTarget","$focusElement","_toggleHideTopOverlayCallback","_toggleParentsScrollSubscription","subscribe","closeOnScroll","$parents","scrollEvent","_proxiedTargetParentsScrollHandler","_targetParentsScrollHandler","_$prevTargetParents","closeHandled","_appendContentToElement","shouldDeferRendering","isParentHidden","_contentAlreadyRendered","$parent","isHidden","whenContentRendered","contentTemplateOption","noModel","_renderDrag","_renderResize","_renderScrollTerminator","$dragTarget","_getDragTarget","startEventName","updateEventName","_dragUpdateHandler","_resizable","_resizeEndHandler","_getDragResizeContainer","_positionChangeHandled","$scrollTerminator","terminatorEventName","isWheel","isMouseMove","isScrollByWheel","cancelable","_prevOffset","isContainerDefined","_deltaSize","contentWidth","contentHeight","_isWindow","fullPageHeight","fullPageWidth","prevOffset","deltaSize","isAllowedDrag","shaderOffset","_getContainer","_detachWrapperToContainer","_attachWrapperToContainer","containerDefined","renderContainer","getSwatchContainer","_fixHeightAfterSafariAddressBarResizing","isDimensionChanged","_renderGeometryImpl","_renderWrapper","_fixWrapperPosition","_useFixedPosition","_shouldFixBodyPosition","_bodyScrollTop","wrapperWidth","wrapperHeight","isWindow","positionOf","_keyboardListenerId","_deferShowTimer","Boolean","_animateDeferred","animateDeferred","ARABIC_COMMA","FORMAT_SEPARATORS","AM_PM_PATTERN","checkDigit","zeroCode","checkPatternContinue","isDigit","nextChar","isDigitChanged","getPatternStartIndex","defaultPattern","getDifference","processedIndexes","patternsFilter","replaceCharsCore","indexes","patternPositions","baseCharIndex","patternIndex","replaceChars","letterCount","formatValue","ESCAPE_CHARS_REGEXP","escapeChars","escapeIndexes","isCurrentCharEscaped","isPrevCharEscaped","isNextCharEscaped","replacedPatterns","datePatterns","diff","watchChanges","rawData","fields","fieldsDispose","globalDispose","dataWithRawFields","resolvedData","missedFields","watchHandlers","BindableTemplate","_fields","_fieldsMap","_watchMethod","TextEditorButton","$placeMarker","_isRendered","_create","_addPlaceMarker","_shouldRender","MONTHS","DAYS","PERIODS","QUARTERS","cutCaptions","captions","lengthByFormat","SWIPE_START_EVENT","SWIPE_EVENT","SWIPE_END_EVENT","HorizontalStrategy","defaultItemSizeFunc","getBounds","calcOffsetRatio","endEventData","_savedEventData","_itemSizeFunc","isFastSwipe","FAST_SWIPE_SPEED_LIMIT","_tickData","VerticalStrategy","STRATEGIES","SwipeEmitter","TICK_INTERVAL","_getStrategy","_defaultItemSizeFunc","moveEventData","offsetRatio","isFast","_calcTargetOffset","bounds","ceil","POINTER_EVENTS_NAMESPACE","BaseStrategy","originalEvents","_eventName","_originalEvents","_isNoBubble","_getDelegateTarget","_setSelector","_selector","_getSelector","dxpointerdown","dxpointermove","dxpointerup","dxpointercancel","dxpointerover","dxpointerout","dxpointerenter","dxpointerleave","normalizeTouchEvent","pointerId","identifier","changedTouches","skipTouchWithSameIdentifier","pointerEvent","TouchStrategy","_pointerId","addEventsListener","Observer","eventMap","pointerEquals","onPointerAdding","getPointerIndex","removePointer","activated","activateStrategy","isPrimary","MsPointerStrategy","resetObserver","normalizeMouseEvent","MouseStrategy","activate","MouseAndTouchStrategy","EVENT_LOCK_TIMEOUT","isMouse","_skipNextEvents","_mouseLocked","_unlockMouseTimer","normalizer","getStrategy","support","pointerEvents","EventStrategy","leave","over","out","webkitRegExp","ieRegExp","ie11RegExp","msEdge","mozillaRegExp","browserFromUA","browserName","browserVersion","entity","wrapToArray","inArray","uniqueValues","removeDuplicates","what","normalizeIndexes","indexParameterName","currentItem","needIndexCallback","indexedItems","parameterIndex","merge","cb","_formatNumberCore","formatConfig","currencyPart","getCurrencySymbol","symbol","getOpenXmlCurrencyFormat","Emitter","_cancelCallback","_acceptCallback","_accept","_acceptRequestEvent","_getEmitterTarget","SCROLLABLE_NATIVE","SCROLLABLE_NATIVE_CLASS","SCROLLABLE_SCROLLBAR_SIMULATED","SCROLLABLE_SCROLLBARS_HIDDEN","HIDE_SCROLLBAR_TIMEOUT","scrollable","_useSimulatedScrollbar","_showScrollbar","_renderScrollbars","_scrollbars","_hideScrollbarTimeout","_renderScrollbar","expandable","isScrollingEvent","_eachScrollbar","scrollbar","_createActionArgs","_eventForUserAction","reachedLeft","_isReachedLeft","reachedRight","_isReachedRight","reachedTop","reachedBottom","_moveScrollbars","_hideScrollbars","_updateScrollbars","_componentContentSize","dimension","scrollableNativeRegexp","_removeScrollbars","_isScrolledInMaxDirection","encodeHtml","encodeRegExp","splitQuad","quadToObject","quad","placeholderReg","SPACE_REGEXP","hasNegation","equals","oldValueIsNaN","newValueIsNaN","cachedGetters","convertRulesToOptions","ruleOptions","deviceFilter","deviceMatch","normalizeOptions","getFieldName","getParentName","getNestedOptionValue","optionsObject","functionsAsIs","cachedSetters","optionsByReference","_changingCallback","_changedCallback","_namePreparedCallbacks","rulesOptions","fieldName","unwrapObservables","valueName","_prepareRelevantNames","_name","_setPreparedValue","deprecatedOptions","_deprecatedCallback","_startChangeCallback","_endChangeCallback","_default","_deprecated","_deprecatedNames","_initDeprecatedNames","_optionManager","onRelevantNamesPrepared","_setRelevantNames","_cachedOptions","_rules","_initialOptions","_getByRules","_setByReference","normalizedName","_normalizeName","_setField","_clearField","fieldObject","previousFieldName","deprecate","_notifyDeprecated","onChanging","onChanged","initialValue","areFunctions","_initial","isGetter","fullPath","aliasName","_postponedOperations","postponedPromise","completePromise","isInnerOption","Component","onOptionChanged","applyRules","isInitial","_optionChangedCallbacks","_disposingCallbacks","eventsStrategy","_updateLockCount","postponedOperations","_createOptions","beginUpdate","_getOptionsByReference","_getDeprecatedOptions","_optionChanging","onDeprecated","_logDeprecatedOptionWarning","_notifyOptionChanged","onStartChange","onEndChange","endUpdate","addRules","onInitializing","_setOptionsByDevice","_createOptionChangedAction","_disposingAction","_createDisposingAction","_initializing","callPostponedOperations","_initializeComponent","_lockUpdate","_unlockUpdate","_commitUpdate","optionNames","getAliasesByName","_defaultActionArgs","_cancelOptionChange","actionSource","_defaultActionConfig","actionFunc","hasEvent","beforeActionExecute","wrappedAction","onActionCreated","isDeprecated","DECIMAL_BASE","roundByAbs","valueSign","adjustValue","precisionMultiplier","pow","roundMultiplier","intermediateValue","valuePrecision","adjustedValue","XHR_ERROR_UNLOAD","dir","errorMessageFromXhr","unloading","textStatusMessages","parsererror","textStatus","statusText","lockDeferred","lockCount","obtain","isDisjunctiveOperator","k","BASE64_CHARS","base64_encode","stringToByteArray","getBase64Char","octet1","octet2","octet3","bytes","isGroupOperator","trivialPromise","rejectedPromise","throttle","lastArgs","throttled","utils","WINDOW_HEIGHT_PERCENT","getElementMaxHeightByWindow","startLocation","actualOffset","elementOffset","offsetBottom","LOADINDICATOR_CLASS","LOADINDICATOR_WRAPPER_CLASS","LOADINDICATOR_CONTENT_CLASS","LOADINDICATOR_ICON_CLASS","LOADINDICATOR_SEGMENT_CLASS","LOADINDICATOR_SEGMENT_INNER_CLASS","LOADINDICATOR_IMAGE_CLASS","LoadIndicator","_animatingSegmentCount","_animatingSegmentInner","obsoleteAndroid","viaImage","_renderIndicatorContent","_renderMarkup","_renderMarkupForImage","_renderMarkupForAnimation","animatingSegmentInner","$segment","_updateContentSizeForAnimation","minDimension","_removeMarkupForAnimation","_removeMarkupForImage","POPUP_CLASS","POPUP_WRAPPER_CLASS","POPUP_FULL_SCREEN_CLASS","POPUP_FULL_SCREEN_WIDTH_CLASS","POPUP_NORMAL_CLASS","POPUP_CONTENT_CLASS","POPUP_DRAGGABLE_CLASS","POPUP_TITLE_CLASS","POPUP_TITLE_CLOSEBUTTON_CLASS","POPUP_BOTTOM_CLASS","POPUP_HAS_CLOSE_BUTTON_CLASS","POPUP_CONTENT_FLEX_HEIGHT_CLASS","POPUP_CONTENT_INHERIT_HEIGHT_CLASS","ALLOWED_TOOLBAR_ITEM_ALIASES","BUTTON_DEFAULT_TYPE","BUTTON_NORMAL_TYPE","BUTTON_TEXT_MODE","BUTTON_CONTAINED_MODE","IS_IE11","IS_OLD_SAFARI","HEIGHT_STRATEGIES","static","flex","getButtonPlace","Popup","titleTemplate","onTitleRendered","bottomTemplate","useDefaultToolbarButtons","useFlatToolbarButtons","_iosAnimation","_androidAnimation","_$popupContent","isFullscreen","_toggleFullScreenClass","_renderBottom","_getToolbarItems","titleText","_$title","$title","_renderTemplateByType","_executeTitleRenderAction","_hasCloseButton","additionalToolbarOptions","toolbarTemplate","toolbarOptions","useDefaultButtons","useFlatButtons","$toolbar","$titleElement","_getTitleRenderAction","titleElement","_titleRenderAction","_createTitleRenderAction","_getCloseButton","_getCloseButtonRenderer","_createToolbarItemAction","toolbarsItems","_toolbarItemClasses","currentPlatform","isShortcut","_getToolbarItemByAlias","isLTROrder","_getLocalizationKey","itemType","itemConfig","itemClass","$toolbarItem","_$bottom","$bottom","compactMode","_toggleClasses","aliases","topToolbar","_resetContentHeight","overlayContent","currentHeightStrategyClass","_chooseHeightStrategy","_getHeightCssStyles","_setHeightClasses","_heightStrategyChangeOffset","popupVerticalPaddings","isAutoWidth","_isAutoHeight","cssStyles","contentMaxHeight","contentMinHeight","popupHeightParts","_splitPopupHeight","toolbarsAndVerticalOffsetsHeight","header","footer","contentVerticalOffsets","popupVerticalOffsets","overlayHeight","maxHeightValue","minHeightValue","currentClass","excessClasses","bottomToolbar","_toggleSafariFullScreen","toggleFullScreenBeforeShown","_renderFullscreenWidthClass","refreshPosition","shouldRenderGeometry","E0001","E0002","E0003","E0004","E0005","E0006","E0007","E0008","E0009","E0010","E0011","E0012","E0013","E0014","E0015","E0017","E0018","E0020","E0021","E0022","E0023","E0024","E0025","E0100","E0101","E0102","E0103","E0110","E0120","E0121","W0000","W0001","W0002","W0003","W0004","W0005","W0006","W0007","W0008","W0009","W0010","W0011","W0012","W0013","W0014","W0015","W0016","SCROLLBAR","SCROLLABLE_SCROLLBAR_CLASS","SCROLLABLE_SCROLLBAR_ACTIVE_CLASS","SCROLLABLE_SCROLL_CLASS","SCROLLABLE_SCROLL_CONTENT_CLASS","HOVER_ENABLED_STATE","THUMB_MIN_SIZE","SCROLLBAR_VISIBLE","onHover","never","activeScrollbar","Scrollbar","visibilityMode","_isHovered","_renderThumb","_attachPointerDownHandler","_isHoverMode","_$thumb","isThumb","_prop","feedbackOn","feedbackOff","cursorEnter","_needScrollbar","cursorLeave","_adjustVisibility","_baseContainerToContentRatio","scrollBarLocation","_calculateScrollBarPosition","_thumbRatio","baseContainerSize","baseContentSize","_realContainerToContentRatio","thumbSize","containerToContentRatio","_normalizeSize","getConsoleMethod","console","logger","warn","assert","activeFeedback","INACTIVE_EVENT_NAME","ACTIVE_TIMEOUT","INACTIVE_TIMEOUT","FeedbackEvent","_timeout","_fire","_schedule","_timer","FeedbackEmitter","_active","_inactive","activeTimeout","inactiveTimeout","activeChildExists","childJustActivated","_initEvents","eventTarget","mouseEvent","deferFeedback","skipTimers","lockInactive","lock","_setOption","_clearItemKeys","getSelectableItems","preserve","isDeselect","_loadFilteredData","remoteFilter","localFilter","filterLength","encodeURI","needLoadAllData","filteredItems","updateSelectedItemKeyHash","keyHashIndices","keyIndices","_isAnyItemSelected","_getFullSelectAllState","dataFilter","selectedItemsLength","disabledItemKeys","_getVisibleSelectAllState","hasSelectedItems","hasUnselectedItems","getItemData","isSelectableItem","isItemKeySelected","selectionFilter","needResetSelectionFilter","_addSelectionFilter","removeSelectedItem","addSelectedItem","setSelectedItems","isItemDataSelected","_getKeyExpr","keyField","_normalizeKey","_getFilterByKey","_findSubFilter","filterString","subFilter","_isLastSubFilter","_addFilterOperator","filterOperator","_denormalizeFilter","currentFilter","currentOperation","needAddFilter","_removeSameFilter","filterIndex","isKeyOperatorsAfterRemoved","_isKeyFilter","_hasKeyFiltersOnlyStartingFromIndex","_normalizeFilter","_removeFilterByIndex","_isSimpleKeyFilter","inverted","_filterIndex","_initSelectedItemKeyHash","_preserveSelectionUpdate","keyIndicesToRemoveMap","isBatchDeselect","_batchRemoveSelectedItems","_loadSelectedItemsCore","selectionFilterCreator","deselectedItems","_replaceSelectionUpdate","internalKeys","_warnOnIncorrectKeys","_isMultiSelectEnabled","_requestInProgress","_this$_lastLoadDeferr","_lastLoadDeferred","_concatRequestsItems","oldRequestItems","added","removed","_collectLastRequestData","isDeselectAll","multiSelectEnabled","lastRequestData","_lastRequestData","_updateKeysByLastRequestData","_this$_lastRequestDat","_this$_lastRequestDat2","currentKeys","_loadSelectedItems","_getKeyHash","_indexOfSelectedItemKey","_getSelectedIndexByKey","ignoreIndicesMap","_getSelectedIndexByHash","_shiftSelectedKeyIndices","currentKeyIndex","currentKey","currentKeyHash","currentKeyIndices","_updateAddedItemKeys","_updateRemovedItemKeys","oldSelectedKeys","oldSelectedItems","_isItemSelectionInProgress","shouldCheckPending","visibleOnly","selectedKeys","_selectionStrategy","_focusedItemIndex","filterIsChanged","_keys","_addSelectedItem","_removeSelectedItem","_setSelectedItems","changeItemSelection","isSelectedItemsChanged","isSelectable","isDataItem","changeItemSelectionWhenShiftKeyPressed","_resetItemSelectionWhenShiftKeyPressed","clearSelectedItems","isKeysEqual","_shiftFocusedItemIndex","_resetFocusedItemIndex","itemIndexStep","focusedData","focusedKey","isFocusedItemSelected","isOnePage","_onePageSelectAll","ChildDefaultTemplate","callOnce","_wrappedHandler","targetDraggable","sourceDraggable","DRAGGABLE","DRAG_EVENT_NAME","DRAGEND_EVENT_NAME","DRAG_ENTER_EVENT_NAME","DRAGEND_LEAVE_EVENT_NAME","POINTERDOWN_EVENT_NAME","CLONE_CLASS","getMousePosition","GESTURE_COVER_CLASS","ScrollHelper","_preventScroll","_scrollValue","_overFlowAttr","_sizeAttr","_scrollSizeProp","_clientSizeProp","_limitProps","mousePosition","needResetScrollable","isTargetOverOverlayWrapper","isTargetOverOverlayContent","_trySetScrollable","_$scrollableAtPointer","_scrollSpeed","distanceToBorders","sensitivity","isScrollable","_calculateDistanceToBorders","_calculateScrollSpeed","areaBoundingRect","maxSpeed","$scrollable","scrollableInstance","nextScrollPosition","_nextScrollPosition","dragMoveArgs","_dragMoveArgs","_dragMoveHandler","scrollableSize","ScrollAnimator","horizontalScrollHelper","_horizontalScrollHelper","verticalScrollHelper","_verticalScrollHelper","scrollByStep","Draggable","dragMove","dragEnter","dragLeave","dragEnd","sourceEvent","_getSourceDraggable","_fireRemoveEvent","onDragMove","onDragEnd","onDragEnter","onDragLeave","onDrop","boundOffset","allowMoveByClick","autoScroll","scrollSpeed","scrollSensitivity","_scrollAnimator","_normalizeCursorOffset","_getNormalizedCursorOffset","_calculateElementOffset","dragElementOffset","$dragElement","dragElement","isCloned","_dragElementIsCloned","cursorOffset","normalizedCursorOffset","currentLocate","_initialLocate","initialOffset","_initPosition","_startPosition","_startAnimator","_stopAnimator","_getItemsSelector","itemsSelector","targetGroup","sourceGroup","_getScrollable","isOutsideScrollable","_dragEnterHandler","_dragLeaveHandler","_$dragElement","_getDragTemplateArgs","_createDragElement","_resetDragElement","_toggleDraggingClass","_resetSourceElement","_toggleDragSourceClass","_$sourceElement","_getDraggableElement","$sourceElement","_getSourceElement","draggable","_getAction","_getEventArgs","_isValidElement","dragStartArgs","_getDragStartArgs","_setSourceDraggable","_setGestureCoverCursor","isFixedPosition","_getAreaOffset","_getBoundOffset","areaWidth","areaHeight","elementHeight","startOffset_left","startOffset_top","startPosition","_updateScrollable","_getTargetDraggable","allObjects","updateScrollable","fromComponent","toComponent","fromData","toData","_revertItemToInitialPosition","dragEndEventArgs","dropEventArgs","needRevertPosition","_resetTargetDraggable","_resetSourceDraggable","_isTargetOverAnotherDraggable","$sourceDraggableElement","$targetDraggableElement","firstWidgetElement","isTargetOverItself","isTargetOverNestedDraggable","_fireDragEnterEvent","_setTargetDraggable","_fireDragLeaveEvent","currentGroup","monthRegExpGenerator","PATTERN_REGEXPS","countSuffix","w","parseNumber","caseInsensitiveIndexOf","monthPatternParser","PATTERN_PARSERS","ORDERED_PATTERNS","datePartValues","hourPartValue","getSameCharCount","createPattern","getRegExpInfo","regexpText","stubText","addPreviousStub","isEscapeChar","regexpPart","getPatternSetters","setPatternPart","partSetter","partParser","setPatternPartFromNow","getShortPatterns","fullPatterns","getMaxOrderedPatternIndex","getOrderedFormatPatterns","formatPatterns","otherPatterns","getParser","regExpResult","maxPatternIndex","orderedFormatPatterns","regExpPattern","regExpText","getPublicElement","INKRIPPLE_CLASS","INKRIPPLE_WAVE_CLASS","INKRIPPLE_SHOWING_CLASS","INKRIPPLE_HIDING_CLASS","DEFAULT_WAVE_SIZE_COEFFICIENT","MAX_WAVE_SIZE","ANIMATION_DURATION","HOLD_ANIMATION_DURATION","DEFAULT_WAVE_INDEX","initConfig","durations","getDurations","getInkRipple","getWaves","inkRipple","$currentWave","getWaveStyleConfig","elementDiagonal","sqrt","waveSize","$wave","hidingTimeout","hideSelectedWave","showingTimeout","showingWaveHandler","durationCss","showingScale","hidingScale","hidingOpacity","animationDuration","ACTION_SHEET_CLASS","ACTION_SHEET_CONTAINER_CLASS","ACTION_SHEET_POPUP_WRAPPER_CLASS","ACTION_SHEET_POPOVER_WRAPPER_CLASS","ACTION_SHEET_CANCEL_BUTTON_CLASS","ACTION_SHEET_ITEM_CLASS","ACTION_SHEET_ITEM_DATA_KEY","ACTION_SHEET_WITHOUT_TITLE_CLASS","ActionSheet","usePopover","showCancelButton","cancelText","onCancelClick","_$itemContainer","_createItemContainer","_renderDisabled","_isPopoverMode","_createPopover","_renderPopupTitle","_mapPopupOption","_overlayConfig","angular","_popupContentReadyAction","_renderCancelButton","_$cancelButton","cancelClickAction","E1001","E1002","E1003","E1004","E1005","E1006","E1007","E1010","E1011","E1012","E1016","E1018","E1019","E1020","E1021","E1022","E1023","E1025","E1026","E1031","E1032","E1033","E1034","E1035","E1037","E1038","E1039","E1040","E1041","E1042","E1043","E1044","E1045","E1046","E1047","E1048","E1049","E1050","E1051","E1052","E1053","E1054","E1055","E1056","E1058","E1059","E1060","W1001","W1002","W1003","W1004","W1005","W1006","W1007","W1008","W1009","W1010","W1011","W1012","W1013","W1014","W1015","W1016","W1017","W1018","W1019","ArrayStore","initialArray","_array","AsyncCollectionWidget","_deferredItems","renderContentDeferred","itemDeferred","_postProcessRenderItems","TOOLBAR_BEFORE_CLASS","TOOLBAR_CENTER_CLASS","TOOLBAR_AFTER_CLASS","TOOLBAR_MINI_CLASS","TOOLBAR_ITEM_CLASS","TOOLBAR_LABEL_CLASS","TOOLBAR_BUTTON_CLASS","TOOLBAR_ITEMS_CONTAINER_CLASS","TOOLBAR_GROUP_CLASS","TOOLBAR_COMPACT_CLASS","TOOLBAR_LABEL_SELECTOR","TOOLBAR_MULTILINE_CLASS","TEXT_BUTTON_MODE","DEFAULT_BUTTON_TYPE","TOOLBAR_ITEM_DATA_KEY","ToolbarBase","rawModel","renderAs","multiline","_$toolbarItemsContainer","_buttonClass","_arrangeItems","_applyCompactMode","_renderToolbar","_renderSections","_waitParentAnimationFinished","runCheck","_waitParentAnimationTimeout","readyToResolve","_renderItemsAsync","_checkWebFontForLabelsLoaded","sectionClass","$section","$labels","_$centerSection","margin","beforeRect","_$beforeSection","afterRect","_$afterSection","_alignCenterSection","$label","labelOffset","widthBeforeSection","widthAfterSection","elemsAtSectionWidth","sectionMaxWidth","_alignSection","labelPaddings","isRTL","leftRect","rightRect","centerRect","labels","_getCurrentLabelsPaddings","currentWidth","_getCurrentLabelsWidth","_alignSectionLabels","expanding","getRealLabelWidth","currentLabelWidth","labelMaxWidth","possibleLabelWidth","itemContainer","$after","itemHasText","_renderGroupedItems","groupItems","unwrapVariable","bracketsToDots","readPropValue","assignPropValue","prepareOptions","compileGetter","functionAsIs","hasDefaultValue","pathPart","combineGetters","compiledGetters","pathItem","ensurePropValueDefined","compileSetter","lastLevelIndex","levelIndex","propertyValue","isPropertyFunc","toComparable","caseSensitive","forcibleWatcher","filteredCallback","CollectionItem","_rawData","_watchers","exprGetter","watcher","_dirty","_updateOwnerFocus","ownerComponent","DX_MENU_PHONE_CLASS","DX_MENU_ITEM_WRAPPER_CLASS","DX_HAS_CONTEXT_MENU_CLASS","DX_STATE_FOCUSED_CLASS","LOCAL_SUBMENU_DIRECTIONS","DEFAULT_SHOW_EVENT","showEventOption","showEvent","onSubmenuCreated","onPositioning","_isSelectionEnabled","$availableItems","$hoveredItem","$hoveredItemContainer","_getItemsByLocation","$oldTarget","$activeItemHighlighted","_setFocusedElement","_hideSubmenuHandler","_expandSubmenuHandler","$curItem","$parentItem","_hideSubmenusOnSameLevel","isItemHasSubmenu","_hasSubmenu","_detachShowContextMenuEvents","_getTarget","_attachShowContextMenuEvents","overlayOptions","_addCustomCssClass","_addPlatformDependentClass","getShowEvent","_showContextMenuEventHandler","contextMenuAction","getShowDelay","submenuContainer","$holder","$itemsContainer","submenuElement","_closeOnOutsideClickHandler","_overlayShownActionHandler","_overlayHidingActionHandler","_overlayHiddenActionHandler","_hideAllShownSubmenus","$activeItemContainer","_getActiveItemsContainer","$itemContainers","_getItemsContainers","$clickedItem","_searchActiveItem","isRootItemClicked","isInnerOverlayClicked","_isIncludeOverlay","_getShowSubmenuMode","_hideAllShownChildSubmenus","$activeOverlay","$allOverlays","isSame","$overlay","$submenuElements","shownSubmenus","_shownSubmenus","$context","isSubmenuRendered","_isSubmenuVisible","$expandedItems","_hideSubmenuCore","_getSubmenuPosition","$rootItemWrapper","shouldRenderSubmenu","notCloseMenuOnItemClick","closeMenuOnClick","$prevSubmenu","canceled","$curSubmenu","_stopAnimate","jQEvent","_event$originalEvent","_positionContextMenu","_attachHoverEvents","_setAriaAttributes","preventShowingDefaultContextMenuAboveOverlay","_overlayContentId","_getContextMenuPosition","isInitialPosition","_isInitialOptionValue","positioningAction","lastPosition","_cleanAriaAttributes","extendFromObject","overrideExistingValues","deep","sourceValueIsArray","triggerVisibilityChangeEvent","changeHandlers","triggerShownEvent","triggerHidingEvent","triggerResizeEvent","hasKey","keyOrKeys","findItems","childItems","collapsedItems","indexByKey","getItems","generateDataByKeyMap","_dataByKeyMap","_dataByKeyMapLength","dataByKeyMap","arrayLength","getCacheValue","getHasKeyCacheValue","setDataByKeyMapValue","createObjectWithChanges","getPrototypeOf","targetWithoutPrototype","applyBatch","immutable","disableCache","logError","getErrorResult","isBatch","errorCode","scrollbarWidth","horzRe","vertRe","collisionRe","scaleRe","IS_SAFARI","normalizeOffset","normalizeCollision","getAlignFactor","inverseAlign","calculateOversize","myLocation","collisionSide","initMyLocation","atLocation","atAlign","atSize","myAlign","mySize","collisionResolvers","inverseData","flipfit","none","calculateScrollbarWidth","$scrollDiv","overflow","defaultPositionResult","calculatePosition","$what","currentOffset","visualViewport","ofRect","o","getOffsetWithoutScale","hZoomLevel","vZoomLevel","boundaryWidth","boundaryHeight","$boundary","boundaryPosition","preciser","precise","$startElement","_currentElement$getAt","_style$match","$currentElement","currentElement","types","typeOfObject","isBoolean","isExponential","isNumeric","isDefined","isFunction","isString","isEmptyObject","isPlainObject","proto","isPrimitive","isRenderer","jquery","isPromise","isDeferred","isEvent","COMPONENT_NAMES_DATA_KEY","ANONYMOUS_COMPONENT_DATA_KEY","componentNames","nextAnonymousComponent","getName","generatedName","attachInstanceToElement","componentInstance","disposeFn","getInstanceByElement","_extends","EVENT_NAME","EVENT_NAMESPACE","NATIVE_EVENT_NAME","PIXEL_MODE","DELTA_MUTLIPLIER","_wheelHandler","deltaMode","deltaZ","_normalizeDelta","touchPropsToHook","touchPropHook","EMPTY_EVENT_NAME","NATIVE_EVENTS_TO_SUBSCRIBE","mouseenter","mouseleave","pointerenter","pointerleave","NATIVE_EVENTS_TO_TRIGGER","focusin","focusout","NO_BUBBLE_EVENTS","forcePassiveFalseEventNames","matchesSafe","skipEvent","elementDataMap","guid","special","specialData","getField","callMethod","eventsEngine","normalizeOnArguments","iterate","handlersController","getHandlersController","addHandler","oneTimeHandler","normalizeOffArguments","removeHandler","normalizeTriggerArguments","extraParameters","callHandlers","isPropagationStopped","getParents","parentDataByEvent","callNativeMethod","applyForEach","itemArgs","detectPassiveEventHandlersSupport","isSupported","passiveEventHandlersSupported","elementData","eventNameParts","namespaces","eventNameIsDefined","handleObjects","nativeHandler","callHandler","secondaryTargetIsInside","handlerArgs","handleObject","wrappedHandler","nativeListenerOptions","firstHandlerForTheType","shouldAddNativeListener","getNativeHandler","passive","removeByEventName","removedHandler","isSubset","lastHandlerForTheType","shouldRemoveNativeListener","elementDataIsEmpty","forceStop","handleCallback","isImmediatePropagationStopped","subscribeName","original","normalizeEventArguments","iterateEventNames","nativeMethodName","localName","calculateWhich","charCode","keyCode","1","2","initEvent","EventClass","addProperty","hook","eventInstance","writable","propagationStopped","immediatePropagationStopped","defaultPrevented","stopImmediatePropagation","beforeSetStrategy","afterSetStrategy","offArgs","TRANSLATOR_DATA_KEY","TRANSFORM_MATRIX_REGEX","TRANSLATE_REGEX","locate","getTranslate","isPercentValue","cacheTranslate","clearCache","getTranslateCss","xValueString","yValueString","transformValue","matrix","is3D","resetPosition","finishTransition","originalTransition","stylesConfig","parseTranslate","translateString","SCROLL_INIT_EVENT","SCROLL_START_EVENT","SCROLL_MOVE_EVENT","SCROLL_END_EVENT","SCROLL_STOP_EVENT","SCROLL_CANCEL_EVENT","Locker","NAMESPACED_SCROLL_EVENT","_proxiedScroll","_scroll","TimeoutLocker","_prepare","_forget","_clearTimer","WheelLocker","_lastWheelDirection","_checkDirectionChanged","directionChange","PointerLocker","ios8_greater","android5_greater","_scrollFrame","_checkFrame","ScrollEmitter","FRAME_DURATION","_pointerLocker","_wheelLocker","skipCheck","_prevEventData","currentEventData","endEventDelta","velocity","velocityMultiplier","remoteQueryImpl","tasks","createTask","executorTask","_adapterFactory","_adapter","_taskQueue","_currentTask","_mergedSortArgs","rejectWithNotify","mergeSortTask","optimize","unmergedTasks","clientChain","queryImpl","remote","impl","getSessionStorage","maxTouchPoints","msMaxTouchPoints","pointerEnabled","transitionEndEventNames","webkitTransition","MozTransition","OTransition","msTransition","supportProp","isNativeScrollingSupported","isObsoleteAndroid","isNativeScrollDevice","detectTouchEvents","hasWindowProperty","detectPointerEvent","isPointerEnabled","canUsePointerEvent","touchEvents","touchPointersPresent","transitionEndEventName","nativeScrolling","EventsStrategy","_events","_owner","addFn","originalAdd","TOTAL_COUNT","LOAD","BY_KEY","INSERT","UPDATE","REMOVE","ensureRequiredFuncOption","throwInvalidUserFuncResult","createUserFuncFailureHandler","promiseArguments","getResponseHeader","invokeUserLoad","userResult","userFunc","_loadFunc","invokeUserTotalCountFunc","_totalCountFunc","invokeUserByKeyFunc","_byKeyFunc","runRawLoad","userFuncOptions","continuation","__rawData","loadPromise","__rawDataPromise","_cacheRawData","runRawLoadWithQuery","countOnly","itemsQuery","totalCountQuery","rawDataQuery","waitList","runRawLoadWithKey","len","CustomStore","useDefaultSearch","_loadMode","cacheRawData","_insertFunc","_updateFunc","_removeFunc","serverResponse","deferredConfig","_DeferredObj","_promise","catch","fromPromise","whenFunc","contexts","resolvedCount","updateState","Deferred","when","VALIDATION_ENGINE_CLASS","ValidationGroup","validatorContainer","summaryContainer","validateGroup","resetGroup","removeEvent","eventPropName","ERROR_URL","exports","baseErrors","makeError","combineMessage","formatMessage","formatDetails","details","getErrorUrl","__id","__details","deviceDependentOptions","WIDGET_CLASS","NODE_CLASS","NODE_CONTAINER_CLASS","NODE_LOAD_INDICATOR_CLASS","OPENED_NODE_CONTAINER_CLASS","IS_LEAF","ITEM_WITH_CHECKBOX_CLASS","ITEM_WITHOUT_CHECKBOX_CLASS","TOGGLE_ITEM_VISIBILITY_CLASS","LOAD_INDICATOR_CLASS","LOAD_INDICATOR_WRAPPER_CLASS","TOGGLE_ITEM_VISIBILITY_OPENED_CLASS","SELECT_ALL_ITEM_CLASS","EXPAND_EVENT_NAMESPACE","DATA_ITEM_ID","TreeViewBase","expandEventName","_getEventNameByOption","expandByClick","_expandEventHandler","checkboxInstance","_getCheckBoxInstance","currentState","_updateItemSelection","toggleExpandedNestedItems","$rootElement","_toggleExpandedNestedItems","_showCheckboxes","asterisk","minus","_toggleExpandedState","_getNodeElement","_encodeString","$nodeByKey","expandAllEnabled","hasItemsExpr","expandNodesRecursive","showCheckBoxesMode","onItemSelectionChanged","scrollDirection","virtualModeEnabled","createChildren","_initSelectedItems","_fireSelectionChanged","_createSelectAllValueChangedAction","_selectAllValueChangedAction","_fireSelectAllValueChanged","_checkBoxModeChange","selectAllExists","_$selectAllItem","_renderSelectAllItem","dxCheckBox","_scrollableContainer","_filter","_initExpandEvent","_useCustomChildrenLoader","_loadChildrenByCustomLoader","_isVirtualMode","_initVirtualMode","internal","_isDataStructurePlain","invocationResult","_combineFilter","_initStoreChangeHandlers","_removeTreeViewLoadIndicator","_treeViewLoadIndicator","_createTreeViewLoadIndicator","resultFilter","newItem","_updateLevel","_parentIdGetter","removedKey","_markChildrenItemsToRemove","_removeItems","_getContainerByParentKey","_getOldContainer","_renderNodeContainer","_isRootLevel","_renderScrollableContainer","_isSingleSelection","_isRecursiveSelection","$nodeContainer","_selectAllEnabled","skipContentReadyAction","_expandedGetter","_createDOMElement","_getLevel","nodeIndex","nodeData","showCheckBox","_renderCheckBox","_toggleSelectedClass","_renderChildren","_renderToggleItemVisibilityIcon","_loadSublevel","_renderSublevel","_getActualNode","_addLeafClass","cachedNode","_hasItemsGetter","childrenNodes","_loadNestedItems","$nestedNodeContainer","childNodesByChildrenKeys","_updateParentsState","_normalizeIconState","_getNode","$nodeElement","expandedEventName","_getNodeByElement","_decodeString","_createLoadIndicator","_updateExpandedItemsUI","_renderToggleItemVisibilityIconClick","isHiddenNode","nodeContainerExists","completionCallback","_animateNodeContainer","_loadNestedItemsWithUpdate","actualNodeData","_areNodesExists","_appendItems","keyOfRootItem","fullData","nodeHeight","_fireExpandedStateUpdatedEvent","isExpanded","hasNewItems","_onSelectAllCheckboxValueChanged","_toggleSelectAll","_updateItemsUI","$checkbox","_changeCheckboxValue","_toggleNodeDisabledState","checkbox","_isLastSelectedBranch","selectedNodesKeys","_isLastRequired","isSingleMode","getSelectedNodeKeys","_fireItemSelectionChanged","needFireSelectAllChanged","nodeSelection","selectAllCheckbox","$parentNode","parentValue","_createEventHandler","clickSelector","pointerDownSelector","pointerDownEvent","_updateSelectionToFirstItem","startIndex","_updateSelectionToLastItem","_setFocusedItemTimeout","_findNonDisabledNodes","$nodes","_nodeElements","$prevItem","prevItemElement","_getNodeItemElement","nextItemElement","$firstItem","$lastItem","_expandFocusedContainer","_collapseFocusedContainer","$focusedNode","_getClosestNonDisabledNode","nodeElement","collapsedNode","decodeURI","expandItem","collapseItem","getNodes","getSelectedNodes","unselectAll","expandAll","dataAdapter","keyOrItemOrElement","nodeKeysToExpand","scrollCallback","_expandNodes","keysToExpand","resultCallback","callbacksByNodes","TreeViewSearch","_updateSearch","_repaintContainer","_updateDataAdapter","_searchEditor","editorOptions","_getSearchEditorOptions","rootNodes","isSearchMode","_removeSearchBox","searchEditorOptions","_renderSearch","searchBoxClassName","rootElementClassName","_$searchEditorElement","userEditorOptions","searchText","_valueChangeDeferred","_valueChangeTimeout","_cleanAria","defaultMessages","en","Yes","No","Cancel","Clear","Done","Loading","Select","Search","Back","OK","baseDictionary","getDataByLocale","localeData","newMessages","messageLocalization","_dictionary","messages","_localizablePrefix","localizablePrefix","localizeString","regex","escapeString","localizationKey","defaultResult","localizeNode","nodeItem","nodeValue","localizedValue","getMessagesByLocales","getDictionary","onlyNew","core","_getFormatterBase","Guid","_generate","toJSON","hoveredScrollable","activeScrollable","SCROLLABLE_SIMULATED","SCROLLABLE_SIMULATED_CURSOR","SCROLLABLE_SIMULATED_KEYBOARD","SCROLLABLE_SIMULATED_CLASS","SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE","ACCELERATION","OUT_BOUNDS_ACCELERATION","MIN_VELOCITY_LIMIT","SCROLL_LINE_HEIGHT","VALIDATE_WHEEL_TIMEOUT","BOUNCE_MIN_VELOCITY_LIMIT","BOUNCE_DURATION","BOUNCE_FRAMES","BOUNCE_ACCELERATION_SUM","KEY_CODES","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","TAB","InertiaAnimator","VELOCITY_LIMIT","_velocity","_scrollStep","_acceleration","BounceAnimator","_crossBoundOnNextStep","_bounceLocation","Scroller","_initAnimators","_initScrollbar","_topReached","_bottomReached","_axis","_scrollProp","_inertiaAnimator","_bounceAnimator","_scrollByThumb","_visibilityModeNormalize","_scrollbarVisible","_$scrollbar","prevLocation","_suppressBounce","_bounceEnabled","_boundLocation","_moveContentByTranslator","_scaleRatio","realDimension","_getRealDimension","baseDimension","_getBaseDimension","dimensionName","translateOffset","_maxScrollPropValue","_translateOffset","_hideScrollbar","_completeDeferred","_scrollToBounds","_bounceAction","_setupBounce","boundLocation","bounceDistance","nextLocation","_stopScrolling","_prepareThumbScrolling","scrollbarClicked","_isScrollbar","_moveToMouseLocation","_thumbScrolling","_isThumb","_crossThumbScrolling","_isAnyThumbScrolling","_isThumbScrollingHandler","mouseLocation","_containerToContentRatio","_startHandler","_moveHandler","_scrollBy","_scrollByHandler","_endHandler","_inertiaHandler","_resetThumbScrolling","_suppressInertia","_inertiaEnabled","_stopHandler","_disposeHandler","_resetScaleRatio","_updateLocation","locationChanged","_createActionsHandler","actions","scroll","bounce","isOverflowHidden","containerScrollSize","_validateEvent","_isContent","_scrollByContent","_reachedMin","_reachedMax","_cursorEnterHandler","_cursorLeaveHandler","SimulatedStrategy","_createScrollers","_attachKeyboardHandler","_attachCursorHandlers","scrollbarVisible","isAnyThumbScrolling","_getPropByDirection","isThumbScrollingVertical","isThumbScrollingHorizontal","_suppressDirections","_eachScroller","_validDirections","_startAction","_saveActive","_resetActive","_adjustDistance","_tryGetDevicePixelRatio","_refreshCursorState","_endAction","_updateHandlerTimeout","_scrollByLine","_scrollByPage","_scrollToHome","_scrollToEnd","lines","page","_wheelProp","_dimensionByProp","_createActionHandler","_createScrollerActions","actionHandler","scrollerX","scrollerY","deferreds","_hoverHandled","targetScrollable","touchDirection","verticalScroller","horizontalScroller","_validateWheel","_wheelDirection","reachedMin","reachedMax","contentGreaterThanContainer","locatedNotAtBound","scrollFromMin","scrollFromMax","validated","_validateWheelTimer","nb","nn","PARENT_LOCALE_SEPARATOR","parentLocale","parentLocales","DEFAULT_LOCALE","currentLocale","isRootLocale","SWATCH_CONTAINER_CLASS_PREFIX","swatchContainer","viewport","swatchClassRegex","swatchClass","viewportSwatchContainer","accountingFormat","encodedCurrencySymbol","currencySymbol","encodeSymbols","af","am","as","bn","bo","brx","ccp","ceb","chr","dav","doi","dz","ebu","fil","gu","guz","haw","he","hi","ja","jv","kam","ki","kln","km","kn","ko","kok","ks","lkt","lo","luo","luy","mai","mas","mer","mgh","ml","mni","mr","mt","nd","ne","om","or","pa","pt","qu","root","sa","saq","sat","sd","seh","sn","su","ta","te","ti","ug","ur","xh","yue","zh","zu","detectCurrencySymbolRegex","getCurrencyFormatter","currency","_normalizeFormatConfig","minimumIntegerDigits","useGrouping","maximumFractionDigits","_getPrecisionConfig","minimumFractionDigits","_normalizeFormat","_getCurrencySymbolInfo","_extractCurrencySymbolInfo","currencyValueString","delimiter","symbolInfo","targetCurrency","closestAccountingFormat","MAX_LARGE_NUMBER_POWER","NUMERIC_FORMATS","LargeNumberFormatPostfixes","LargeNumberFormatPowers","largenumber","thousands","millions","billions","trillions","numberLocalization","numericFormats","defaultLargeNumberFormatPostfixes","_parseNumberFormatString","formatObject","formatList","power","_calculateNumberPower","minPower","maxPower","_getNumberByPower","_formatNumber","powerPostfix","_formatNumberExponential","powString","_addZeroes","multiplier","_addGroupSeparators","_getSeparators","getDecimalSeparator","getThousandsSeparator","toStandard","digits","fromFirstDigit","toFirstDigit","fromLastDigit","getNegativeEtalonRegExp","separators","digitalRegExp","negativeEtalon","getSign","numberConfig","formatterConfig","cleanedText","_calcSignificantDigits","integer","fractional","calcDigitsAfterLeadingZeros","getRealSeparatorIndex","quoteBalance","separatorCount","occurrence","getNthOccurrence","splitByIndex","getCaretBoundaries","prefixStubLength","postfixStubLength","_getDigitCountBeforeIndex","textBeforePosition","_reverseText","_getDigitPositionByIndex","digitIndex","_trimNonNumericCharsFromEnd","getCaretWithOffset","getCaretAfterFormat","formatted","point","isSeparatorBasedText","isSeparatorBasedString","realSeparatorOccurrenceIndex","pointPosition","newPointPosition","textParts","formattedParts","isCaretOnFloat","relativeIndex","digitsBefore","newPosition","getCaretInBoundaries","formattedIntPart","positionFromEnd","digitsFromEnd","newPositionFromEnd","newPositionFromBegin","isCaretInBoundaries","boundaries","getCaretOffset","previousBoundaries","newBoundaries","SPIN_CLASS","SPIN_BUTTON_CLASS","SPIN_HOLD_DELAY","NUMBER_BOX","POINTERUP_EVENT_NAME","POINTERCANCEL_EVENT_NAME","SpinButton","_spinIcon","_spinDownHandler","_spinChangeHandler","_feedBackDeferred","SPIN_CONTAINER_CLASS","SPIN_TOUCH_FRIENDLY_CLASS","$spinContainer","$spinContainerChildren","_spinButtonsPointerDownHandler","_spinUpChangeHandler","_spinDownChangeHandler","$spinUp","$spinDown","_isTouchFriendly","isTouchFriendly","$spinButtons","spinUp","spinDown","FIREFOX_CONTROL_KEYS","FORCE_VALUECHANGE_EVENT_NAMESPACE","NumberBoxBase","useLargeSpinButtons","invalidValueMessage","_isSupportInputMode","inputmode","_validateValue","isInputCharValid","_keyPressed","_spinValueChange","_forceValueRender","valuenow","valuetext","_applyDisplayValueFormatter","valuemin","valuemax","_normalizeInputValue","_correctRounding","isFloatValue","isFloatStep","valueAccuracy","stepAccuracy","accuracy","forceValueChangeEvent","_forceRefreshInputValue","_normalizeText","_parseValue","valueHasDigits","_applyValueBoundaries","parsedValue","isValueIncomplete","_isValueIncomplete","isValueCorrect","_isValueInRange","_replaceCommaWithPoint","_inputIsInvalid","isNumberMode","validityState","badInput","_isNumber","isValueValid","isNumber","NUMBER_FORMATTER_NAMESPACE","MOVE_FORWARD","MOVE_BACKWARD","MINUS","MINUS_KEY","NUMPUD_MINUS_KEY_IE","INPUT_EVENT","CARET_TIMEOUT_DURATION","NumberBoxMask","_isDeleteKey","_revertSign","_removeHandler","_arrowHandler","_moveCaretToBoundaryEventHandler","_updateFormattedValue","_getTextSeparatorIndex","clearCaretTimeout","_getInputVal","shouldHandleEvent","_focusOutOccurs","_hasValueBeenChanged","_updateParsedValue","_adjustParsedValue","_setTextByParsedValue","_parsedValue","nextCaret","_moveCaretToBoundary","_shouldMoveCaret","isDecimalSeparatorNext","isZeroNext","moveToFloat","_lastKey","zeroToZeroReplace","_lastKeyName","_shouldHandleKey","normalizedText","enteredChar","_tryParse","isDeleteKey","isBackspaceKey","canDelete","_isStub","editedText","noDigits","valueAfterRemoving","_isNonStubAfter","_isPercentFormat","noEscapedFormat","_parse","formatOption","isCustomParser","integerPartStartIndex","formatPointIndex","textPointIndex","formatIntegerPartLength","textIntegerPartLength","_removeStubs","isCustomFormatter","_currentFormat","_updateFormat","_getFormatForSign","_sign","excludeComma","stubs","_getStubs","prefixStubs","postfixRegex","decoratorsRegex","stub","_truncateToPrecision","maxPrecision","strValue","isTextSelected","_getParsedValue","_getPrecisionLimits","isDecimalPointRestricted","isUselessCharRestricted","parsedValueSign","parsedValueWithSign","pointIndex","floatLength","isPrecisionInRange","endsWithZero","_setInputText","_formattedValue","isNumberType","_isChar","isSpecialChar","isMinusKey","_renderFormatter","_clearCache","_detachFormatterEvents","_attachFormatterEvents","_isInputFromPaste","_isValuePasted","_formatValue","escapedDecimalSeparator","regExpString","stubRegExp","realSeparatorIndex","floatPart","minPrecision","_applyRevertedSign","preserveSelectedText","currentText","caretInBoundaries","_removeMinusFromText","isMinusPressed","textWithoutMinus","wasMinusRemoved","textWasChanged","clearedText","CHECKBOX_CLASS","CHECKBOX_ICON_CLASS","CHECKBOX_CHECKED_CLASS","CHECKBOX_CONTAINER_CLASS","CHECKBOX_TEXT_CLASS","CHECKBOX_HAS_TEXT_CLASS","CHECKBOX_INDETERMINATE_CLASS","CHECKBOX_FEEDBACK_HIDE_TIMEOUT","CheckBox","_renderText","textValue","_$text","indeterminate","REMOVE_EVENT_NAME","nodesByEvent","subscribeNodesDisposing","unsubscribeNodesDisposing","isInput","misc","ClickEmitter","_makeElementClickable","_blurPrevented","_startTarget","_eventOutOfElement","_clickAnimationFrame","_fireClickEvent","targetChanged","gestureDelta","boundsExceeded","useNativeClick","isNativeClickEvent","prevented","lastFiredEvent","onNodeRemove","clickHandler","eventAlreadyFired","DXCLICK_FIRED","leftButton","desktopDevice","blurPrevented","multiLevelGroup","arrangeSortingInfo","sortInfo","filteredGroup","isCountQuery","NUMBER_SERIALIZATION_FORMAT","DATE_SERIALIZATION_FORMAT","DATETIME_SERIALIZATION_FORMAT","ISO8601_PATTERN","ISO8601_TIME_PATTERN","ISO8601_PATTERN_PARTS","DATE_SERIALIZATION_PATTERN","MILLISECOND_LENGHT","skipISO8601Parsing","parseISO8601String","parseDate","getTimePart","isDefaultSerializationFormat","timeZoneHour","timeZoneMinute","getIso8601Format","dateUnitIntervals","toMilliseconds","getDatesInterval","intervalUnit","millisecondCount","getNextDateUnit","unit","withWeeks","getDateUnitInterval","convertMillisecondsToDateUnits","dateUnitCount","dateUnitInterval","convertDateUnitToMilliseconds","dateToMilliseconds","tickInterval","dateUnit","maxInterval","tickIntervalToFormatMap","week","getDateFormatByTickInterval","getQuarter","getFirstQuarterMonth","correctDateWithUnitBeginning","dateInterval","withCorrection","firstQuarterMonth","oldDate","getFirstWeekDate","trimTime","setToDayEnd","getDatesDifferences","differences","getTimezonesDifference","addDateInterval","intervalObject","getDateIntervalByString","years","quarters","months","weeks","days","setTime","addInterval","getSequenceByInterval","cur","intervals","viewType","getLastMonthDay","resultDate","typeView","getDifferenceInMonthForCells","intervalString","startDecadeDate1","startDecadeDate2","startCenturyDate1","startCenturyDate2","normalizeDateByWeek","differenceInDays","intervalsOverlap","firstMin","firstMax","secondMin","secondMax","dateTimeFromDecimal","roundDateByStartDayHour","startDayHour","trial","roundToHour","makeDate","getDatesOfInterval","sameMonth","getKeyWrapper","getKey","getSameNewByOld","newIndexByKey","findChanges","oldItems","isItemEquals","oldIndexByKey","addedCount","removeCount","oldNextIndex","nextOldItem","isRemoved","oldIndex","getMenuItems","_getTemplateString","DX_MENU_NO_ICONS_CLASS","DX_MENU_BASE_CLASS","DX_ITEM_CONTENT_CLASS","DX_MENU_SELECTED_ITEM_CLASS","DX_MENU_SEPARATOR_CLASS","DX_MENU_ITEM_LAST_GROUP_ITEM","DX_ITEM_HAS_TEXT","DX_ITEM_HAS_ICON","DX_ITEM_HAS_SUBMENU","DX_MENU_ITEM_POPOUT_CLASS","DX_MENU_ITEM_POPOUT_CONTAINER_CLASS","DX_MENU_ITEM_CAPTION_CLASS","SINGLE_SELECTION_MODE","_renderSelectedItem","itemText","$popOutContainer","$popOutImage","nodeToSelect","selectedKey","selectable","_selectByItem","_showSubmenusTimeout","_getSubmenuDelay","_addExpandedClass","hasIcons","firstVisibleIndex","nextGroupFirstIndex","isVisibleNode","isBeginGroup","beginGroup","_renderSeparator","hasIcon","hasSubmenu","_selectedGetter","_isItemSelectable","_skipHandling","itemClickActionHandler","_updateSubmenuVisibilityOnClick","_isItemSelectionAllowed","selectedItemKey","selectedNode","_toggleItemSelection","isSelectionByClickEnabled","_isContainerEmpty","_getElementByItem","oldSelection","SORTABLE","PLACEHOLDER_CLASS","_config$to","_config$to2","stopAnimation","getScrollableBoundary","Sortable","_sourceScrollHandler","_handleSourceScroll","_sourceScrollableInfo","itemOrientation","dropFeedbackMode","allowDropInsideItem","moveItemOnDrop","onAdd","onRemove","onPlaceholderPrepared","dropInsideItem","itemPoints","fromIndexOffset","autoUpdate","draggableElementSize","_$placeholderElement","_isIndicateMode","_$modifiedItem","_modifiedItemMargin","_getPrevVisibleItem","_updateItemPoints","_subscribeToSourceScroll","_getElementIndex","_unsubscribeFromSourceScroll","sourceScrollableInfo","scrollProp","_correctItemPoints","lastItemPoint","_isVerticalOrientation","sourceElementSize","scrollSize","positionProp","lastPointPosition","freeSize","_getItems","marginBottom","$sortable","sortable","_isInsideTargetDraggable","$targetDraggable","validX","validY","cancelAdd","cancelRemove","isSourceDraggable","isInsideTargetDraggable","_fireAddEvent","_moveItem","_fireReorderEvent","itemPoint","axisName","cursorPosition","centerPosition","_updatePlaceholderPosition","isScrolling","_movePlaceholder","_createPlaceholder","$placeholderContainer","_allowReordering","_isValidPoint","visibleIndex","draggableVisibleIndex","_getItemPoints","itemWidth","visibleItemElements","visibleItemCount","$draggableItem","needCorrectLeftPosition","needCorrectTopPosition","points","forceUpdate","positionPropName","_normalizeToIndex","isAnotherDraggable","placeholderElement","_makeWidthCorrection","_$scrollable","scrollableWidth","offsetRight","_updatePlaceholderSizes","$placeholderElement","$prevTargetItemElement","$targetItemElement","_moveItemCore","$targetItem","prevItem","isDragSource","$fromElement","_optionChangedDropInsideItem","_optionChangedToIndex","_isPositionVisible","scrollContainer","clientRect","isVerticalOrientation","pageOffset","showPlaceholder","_moveItems","_updateDragSourceClass","_getActualFromIndex","_makeLeftCorrection","leftMargin","prevVisibleItemElement","_getDraggableElementSize","prevToIndex","prevPositions","animationConfig","prevPosition","Widget","hoveredElement","hint","accessKey","innerWidget","optionsContainer","syncOptions","_renderHint","_isFocusable","_attachFeedbackEvents","_toggleIndependentState","_resetActiveState","_attachFocusEvents","_renderAccessKey","$focusTarget","hasChildListeners","hasKeyboardEventHandler","shouldAttach","onlyChildProcessing","keyboardListeners","listener","_hover","$previous","_findHoverTarget","newHoveredElement","widgetOptionMap","_updatedHover","_isReady","dataMap","strategyChanging","beforeCleanDataFunc","afterCleanDataFunc","setDataStrategy","cleanData","beforeCleanData","afterCleanData","cleanDataRecursive","cleanSelf","childElements","getElementsByTagName","SPECIAL_HEIGHT_VALUES","getSizeByStyles","styles","getElementBoxParams","beforeName","afterName","getBoxSizingOffset","boxParams","getSize","boundingClientRect","getContainerHeight","parseHeight","getHeightWithOffset","operationString","addOffsetToMaxHeight","addOffsetToMinHeight","getVerticalOffsets","withMargins","getVisibleHeight","wrapOverridden","baseProto","prevCallBase","clonePrototype","redefine","overridden","classObj","hasClassObjOwnProperty","isES6Class","_includedCtors","_includedPostCtors","subclassOf","parentClass","hasParentProperty","baseClass","copyStatic","hasOwn","destination","classImpl","includedCtors","includedPostCtors","HOVERSTART_NAMESPACE","HOVERSTART","POINTERENTER_NAMESPACED_EVENT_NAME","HOVEREND_NAMESPACE","HOVEREND","POINTERLEAVE_NAMESPACED_EVENT_NAME","Hover","_handlerArrayKeyPath","_eventNamespace","_originalEventName","HoverStart","HoverEnd"],"mappings":"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ACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACTyJ,GAAI,KACJC,GAAI,KACJ,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,UAAW,OACX,UAAW,OACX,WAAY,OACZ,UAAW,OACX,UAAW,OACX,WAAY,OACZ,UAAW,OACX,WAAY,OACZ,WAAY,OACZ,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,UAAW,OACX,WAAY,OACZ,UAAW,OACX,UAAW,OACX,WAAY,OACZ,UAAW,OACX,UAAW,OACX,UAAW,OACX,WAAY,OACZ,UAAW,OACX,UAA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BACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,cAAe,wBACf,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT,QAAS,wBACT17N,GAAI,aACJC,GAAI,aACJ,SAAU,YACV,QAAS,0BACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,wBACT,QAAS,aACT,QAAS,YACT,QAAS,aACT,QAAS,YACT,QAAS,YACT,QAAS,aACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,aACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,YACT,QAAS,0BACT,QAAS,YACTC,GAAI,0BACJC,GAAI,0BACJC,IAAK,aACLC,GAAI,4BACJ,QAAS,2BACTC,GAAI,aACJ,UAAW,aACX,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,UAAW,aACX,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACd,aAAc,aACdC,GAAI,aACJopO,IAAK,wBACLnpO,GAAI,0BACJ,QAAS,0BACTC,GAAI,0BACJ,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT,QAAS,0BACT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","file":"js/chunk-19f5c682.75d9fb51.js","sourcesContent":["/**\r\n * DevExtreme (esm/data/abstract_store.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n EventsStrategy\r\n} from \"../core/events_strategy\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n errors,\r\n handleError\r\n} from \"./errors\";\r\nimport dataUtils from \"./utils\";\r\nimport {\r\n compileGetter\r\n} from \"../core/utils/data\";\r\nimport storeHelper from \"./store_helper\";\r\nvar queryByOptions = storeHelper.queryByOptions;\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nvar storeImpl = {};\r\nvar Store = Class.inherit({\r\n ctor: function(options) {\r\n var that = this;\r\n options = options || {};\r\n this._eventsStrategy = new EventsStrategy(this);\r\n each([\"onLoaded\", \"onLoading\", \"onInserted\", \"onInserting\", \"onUpdated\", \"onUpdating\", \"onPush\", \"onRemoved\", \"onRemoving\", \"onModified\", \"onModifying\"], (function(_, optionName) {\r\n if (optionName in options) {\r\n that.on(optionName.slice(2).toLowerCase(), options[optionName])\r\n }\r\n }));\r\n this._key = options.key;\r\n this._errorHandler = options.errorHandler;\r\n this._useDefaultSearch = true\r\n },\r\n _customLoadOptions: function() {\r\n return null\r\n },\r\n key: function() {\r\n return this._key\r\n },\r\n keyOf: function(obj) {\r\n if (!this._keyGetter) {\r\n this._keyGetter = compileGetter(this.key())\r\n }\r\n return this._keyGetter(obj)\r\n },\r\n _requireKey: function() {\r\n if (!this.key()) {\r\n throw errors.Error(\"E4005\")\r\n }\r\n },\r\n load: function(options) {\r\n var that = this;\r\n options = options || {};\r\n this._eventsStrategy.fireEvent(\"loading\", [options]);\r\n return this._withLock(this._loadImpl(options)).done((function(result) {\r\n that._eventsStrategy.fireEvent(\"loaded\", [result, options])\r\n }))\r\n },\r\n _loadImpl: function(options) {\r\n return queryByOptions(this.createQuery(options), options).enumerate()\r\n },\r\n _withLock: function(task) {\r\n var result = new Deferred;\r\n task.done((function() {\r\n var that = this;\r\n var args = arguments;\r\n dataUtils.processRequestResultLock.promise().done((function() {\r\n result.resolveWith(that, args)\r\n }))\r\n })).fail((function() {\r\n result.rejectWith(this, arguments)\r\n }));\r\n return result\r\n },\r\n createQuery: abstract,\r\n totalCount: function(options) {\r\n return this._totalCountImpl(options)\r\n },\r\n _totalCountImpl: function(options) {\r\n return queryByOptions(this.createQuery(options), options, true).count()\r\n },\r\n byKey: function(key, extraOptions) {\r\n return this._addFailHandlers(this._withLock(this._byKeyImpl(key, extraOptions)))\r\n },\r\n _byKeyImpl: abstract,\r\n insert: function(values) {\r\n var that = this;\r\n that._eventsStrategy.fireEvent(\"modifying\");\r\n that._eventsStrategy.fireEvent(\"inserting\", [values]);\r\n return that._addFailHandlers(that._insertImpl(values).done((function(callbackValues, callbackKey) {\r\n that._eventsStrategy.fireEvent(\"inserted\", [callbackValues, callbackKey]);\r\n that._eventsStrategy.fireEvent(\"modified\")\r\n })))\r\n },\r\n _insertImpl: abstract,\r\n update: function(key, values) {\r\n var that = this;\r\n that._eventsStrategy.fireEvent(\"modifying\");\r\n that._eventsStrategy.fireEvent(\"updating\", [key, values]);\r\n return that._addFailHandlers(that._updateImpl(key, values).done((function() {\r\n that._eventsStrategy.fireEvent(\"updated\", [key, values]);\r\n that._eventsStrategy.fireEvent(\"modified\")\r\n })))\r\n },\r\n _updateImpl: abstract,\r\n push: function(changes) {\r\n var beforePushArgs = {\r\n changes: changes,\r\n waitFor: []\r\n };\r\n this._eventsStrategy.fireEvent(\"beforePush\", [beforePushArgs]);\r\n when(...beforePushArgs.waitFor).done(() => {\r\n this._pushImpl(changes);\r\n this._eventsStrategy.fireEvent(\"push\", [changes])\r\n })\r\n },\r\n _pushImpl: noop,\r\n remove: function(key) {\r\n var that = this;\r\n that._eventsStrategy.fireEvent(\"modifying\");\r\n that._eventsStrategy.fireEvent(\"removing\", [key]);\r\n return that._addFailHandlers(that._removeImpl(key).done((function(callbackKey) {\r\n that._eventsStrategy.fireEvent(\"removed\", [callbackKey]);\r\n that._eventsStrategy.fireEvent(\"modified\")\r\n })))\r\n },\r\n _removeImpl: abstract,\r\n _addFailHandlers: function(deferred) {\r\n return deferred.fail(this._errorHandler).fail(handleError)\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\nStore.create = function(alias, options) {\r\n if (!(alias in storeImpl)) {\r\n throw errors.Error(\"E4020\", alias)\r\n }\r\n return new storeImpl[alias](options)\r\n};\r\nStore.registerClass = function(type, alias) {\r\n if (alias) {\r\n storeImpl[alias] = type\r\n }\r\n return type\r\n};\r\nStore.inherit = function(inheritor) {\r\n return function(members, alias) {\r\n var type = inheritor.apply(this, [members]);\r\n Store.registerClass(type, alias);\r\n return type\r\n }\r\n}(Store.inherit);\r\nexport default Store;\r\n","/**\r\n * DevExtreme (esm/events/gesture/emitter.gesture.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n styleProp\r\n} from \"../../core/utils/style\";\r\nimport callOnce from \"../../core/utils/call_once\";\r\nimport {\r\n resetActiveElement,\r\n clearSelection\r\n} from \"../../core/utils/dom\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nvar ready = readyCallbacks.add;\r\nimport {\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n needSkipEvent,\r\n createEvent,\r\n eventData,\r\n isDxMouseWheelEvent,\r\n eventDelta,\r\n isTouchEvent\r\n} from \"../utils/index\";\r\nimport Emitter from \"../core/emitter\";\r\nvar abs = Math.abs;\r\nvar SLEEP = 0;\r\nvar INITED = 1;\r\nvar STARTED = 2;\r\nvar TOUCH_BOUNDARY = 10;\r\nvar IMMEDIATE_TOUCH_BOUNDARY = 0;\r\nvar IMMEDIATE_TIMEOUT = 180;\r\nvar supportPointerEvents = function() {\r\n return styleProp(\"pointer-events\")\r\n};\r\nvar setGestureCover = callOnce((function() {\r\n var isDesktop = \"desktop\" === devices.real().deviceType;\r\n if (!supportPointerEvents() || !isDesktop) {\r\n return noop\r\n }\r\n var $cover = $(\"
\").addClass(\"dx-gesture-cover\").css(\"pointerEvents\", \"none\");\r\n eventsEngine.subscribeGlobal($cover, \"dxmousewheel\", (function(e) {\r\n e.preventDefault()\r\n }));\r\n ready((function() {\r\n $cover.appendTo(\"body\")\r\n }));\r\n return function(toggle, cursor) {\r\n $cover.css(\"pointerEvents\", toggle ? \"all\" : \"none\");\r\n toggle && $cover.css(\"cursor\", cursor)\r\n }\r\n}));\r\nvar gestureCover = function(toggle, cursor) {\r\n var gestureCoverStrategy = setGestureCover();\r\n gestureCoverStrategy(toggle, cursor)\r\n};\r\nvar GestureEmitter = Emitter.inherit({\r\n gesture: true,\r\n configure: function(data) {\r\n this.getElement().css(\"msTouchAction\", data.immediate ? \"pinch-zoom\" : \"\");\r\n this.callBase(data)\r\n },\r\n allowInterruptionByMouseWheel: function() {\r\n return this._stage !== STARTED\r\n },\r\n getDirection: function() {\r\n return this.direction\r\n },\r\n _cancel: function() {\r\n this.callBase.apply(this, arguments);\r\n this._toggleGestureCover(false);\r\n this._stage = SLEEP\r\n },\r\n start: function(e) {\r\n if (e._needSkipEvent || needSkipEvent(e)) {\r\n this._cancel(e);\r\n return\r\n }\r\n this._startEvent = createEvent(e);\r\n this._startEventData = eventData(e);\r\n this._stage = INITED;\r\n this._init(e);\r\n this._setupImmediateTimer()\r\n },\r\n _setupImmediateTimer: function() {\r\n clearTimeout(this._immediateTimer);\r\n this._immediateAccepted = false;\r\n if (!this.immediate) {\r\n return\r\n }\r\n this._immediateTimer = setTimeout(function() {\r\n this._immediateAccepted = true\r\n }.bind(this), IMMEDIATE_TIMEOUT)\r\n },\r\n move: function(e) {\r\n if (this._stage === INITED && this._directionConfirmed(e)) {\r\n this._stage = STARTED;\r\n this._resetActiveElement();\r\n this._toggleGestureCover(true);\r\n this._clearSelection(e);\r\n this._adjustStartEvent(e);\r\n this._start(this._startEvent);\r\n if (this._stage === SLEEP) {\r\n return\r\n }\r\n this._requestAccept(e);\r\n this._move(e);\r\n this._forgetAccept()\r\n } else if (this._stage === STARTED) {\r\n this._clearSelection(e);\r\n this._move(e)\r\n }\r\n },\r\n _directionConfirmed: function(e) {\r\n var touchBoundary = this._getTouchBoundary(e);\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n var deltaX = abs(delta.x);\r\n var deltaY = abs(delta.y);\r\n var horizontalMove = this._validateMove(touchBoundary, deltaX, deltaY);\r\n var verticalMove = this._validateMove(touchBoundary, deltaY, deltaX);\r\n var direction = this.getDirection(e);\r\n var bothAccepted = \"both\" === direction && (horizontalMove || verticalMove);\r\n var horizontalAccepted = \"horizontal\" === direction && horizontalMove;\r\n var verticalAccepted = \"vertical\" === direction && verticalMove;\r\n return bothAccepted || horizontalAccepted || verticalAccepted || this._immediateAccepted\r\n },\r\n _validateMove: function(touchBoundary, mainAxis, crossAxis) {\r\n return mainAxis && mainAxis >= touchBoundary && (this.immediate ? mainAxis >= crossAxis : true)\r\n },\r\n _getTouchBoundary: function(e) {\r\n return this.immediate || isDxMouseWheelEvent(e) ? IMMEDIATE_TOUCH_BOUNDARY : TOUCH_BOUNDARY\r\n },\r\n _adjustStartEvent: function(e) {\r\n var touchBoundary = this._getTouchBoundary(e);\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n this._startEvent.pageX += sign(delta.x) * touchBoundary;\r\n this._startEvent.pageY += sign(delta.y) * touchBoundary\r\n },\r\n _resetActiveElement: function() {\r\n if (\"ios\" === devices.real().platform && this.getElement().find(\":focus\").length) {\r\n resetActiveElement()\r\n }\r\n },\r\n _toggleGestureCover: function(toggle) {\r\n this._toggleGestureCoverImpl(toggle)\r\n },\r\n _toggleGestureCoverImpl: function(toggle) {\r\n var isStarted = this._stage === STARTED;\r\n if (isStarted) {\r\n gestureCover(toggle, this.getElement().css(\"cursor\"))\r\n }\r\n },\r\n _clearSelection: function(e) {\r\n if (isDxMouseWheelEvent(e) || isTouchEvent(e)) {\r\n return\r\n }\r\n clearSelection()\r\n },\r\n end: function(e) {\r\n this._toggleGestureCover(false);\r\n if (this._stage === STARTED) {\r\n this._end(e)\r\n } else if (this._stage === INITED) {\r\n this._stop(e)\r\n }\r\n this._stage = SLEEP\r\n },\r\n dispose: function() {\r\n clearTimeout(this._immediateTimer);\r\n this.callBase.apply(this, arguments);\r\n this._toggleGestureCover(false)\r\n },\r\n _init: noop,\r\n _start: noop,\r\n _move: noop,\r\n _stop: noop,\r\n _end: noop\r\n});\r\nGestureEmitter.initialTouchBoundary = TOUCH_BOUNDARY;\r\nGestureEmitter.touchBoundary = function(newBoundary) {\r\n if (isDefined(newBoundary)) {\r\n TOUCH_BOUNDARY = newBoundary;\r\n return\r\n }\r\n return TOUCH_BOUNDARY\r\n};\r\nexport default GestureEmitter;\r\n","/**\r\n * DevExtreme (esm/events/utils/add_namespace.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../../core/errors\";\r\nvar addNamespace = (eventNames, namespace) => {\r\n if (!namespace) {\r\n throw errors.Error(\"E0017\")\r\n }\r\n if (Array.isArray(eventNames)) {\r\n return eventNames.map(eventName => addNamespace(eventName, namespace)).join(\" \")\r\n }\r\n if (-1 !== eventNames.indexOf(\" \")) {\r\n return addNamespace(eventNames.split(/\\s+/g), namespace)\r\n }\r\n return \"\".concat(eventNames, \".\").concat(namespace)\r\n};\r\nexport default addNamespace;\r\n","/**\r\n * DevExtreme (esm/events/utils/index.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport mappedAddNamespace from \"./add_namespace\";\r\nimport eventsEngine from \"../core/events_engine\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focused\r\n} from \"../../ui/widget/selectors\";\r\nvar KEY_MAP = {\r\n backspace: \"backspace\",\r\n tab: \"tab\",\r\n enter: \"enter\",\r\n escape: \"escape\",\r\n pageup: \"pageUp\",\r\n pagedown: \"pageDown\",\r\n end: \"end\",\r\n home: \"home\",\r\n arrowleft: \"leftArrow\",\r\n arrowup: \"upArrow\",\r\n arrowright: \"rightArrow\",\r\n arrowdown: \"downArrow\",\r\n delete: \"del\",\r\n \" \": \"space\",\r\n f: \"F\",\r\n a: \"A\",\r\n \"*\": \"asterisk\",\r\n \"-\": \"minus\",\r\n alt: \"alt\",\r\n control: \"control\",\r\n shift: \"shift\",\r\n left: \"leftArrow\",\r\n up: \"upArrow\",\r\n right: \"rightArrow\",\r\n down: \"downArrow\",\r\n multiply: \"asterisk\",\r\n spacebar: \"space\",\r\n del: \"del\",\r\n subtract: \"minus\",\r\n esc: \"escape\"\r\n};\r\nvar LEGACY_KEY_CODES = {\r\n 8: \"backspace\",\r\n 9: \"tab\",\r\n 13: \"enter\",\r\n 27: \"escape\",\r\n 33: \"pageUp\",\r\n 34: \"pageDown\",\r\n 35: \"end\",\r\n 36: \"home\",\r\n 37: \"leftArrow\",\r\n 38: \"upArrow\",\r\n 39: \"rightArrow\",\r\n 40: \"downArrow\",\r\n 46: \"del\",\r\n 32: \"space\",\r\n 70: \"F\",\r\n 65: \"A\",\r\n 106: \"asterisk\",\r\n 109: \"minus\",\r\n 189: \"minus\",\r\n 173: \"minus\",\r\n 16: \"shift\",\r\n 17: \"control\",\r\n 18: \"alt\"\r\n};\r\nvar EVENT_SOURCES_REGEX = {\r\n dx: /^dx/i,\r\n mouse: /(mouse|wheel)/i,\r\n touch: /^touch/i,\r\n keyboard: /^key/i,\r\n pointer: /^(ms)?pointer/i\r\n};\r\nvar fixMethod = e => e;\r\nvar copyEvent = originalEvent => fixMethod(eventsEngine.Event(originalEvent, originalEvent), originalEvent);\r\nvar isDxEvent = e => \"dx\" === eventSource(e);\r\nvar isNativeMouseEvent = e => \"mouse\" === eventSource(e);\r\nvar isNativeTouchEvent = e => \"touch\" === eventSource(e);\r\nexport var eventSource = _ref => {\r\n var {\r\n type: type\r\n } = _ref;\r\n var result = \"other\";\r\n each(EVENT_SOURCES_REGEX, (function(key) {\r\n if (this.test(type)) {\r\n result = key;\r\n return false\r\n }\r\n }));\r\n return result\r\n};\r\nexport var isPointerEvent = e => \"pointer\" === eventSource(e);\r\nexport var isMouseEvent = e => isNativeMouseEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && \"mouse\" === e.pointerType;\r\nexport var isDxMouseWheelEvent = e => e && \"dxmousewheel\" === e.type;\r\nexport var isTouchEvent = e => isNativeTouchEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && \"touch\" === e.pointerType;\r\nexport var isKeyboardEvent = e => \"keyboard\" === eventSource(e);\r\nexport var isFakeClickEvent = _ref2 => {\r\n var {\r\n screenX: screenX,\r\n offsetX: offsetX,\r\n pageX: pageX\r\n } = _ref2;\r\n return 0 === screenX && !offsetX && 0 === pageX\r\n};\r\nexport var eventData = _ref3 => {\r\n var {\r\n pageX: pageX,\r\n pageY: pageY,\r\n timeStamp: timeStamp\r\n } = _ref3;\r\n return {\r\n x: pageX,\r\n y: pageY,\r\n time: timeStamp\r\n }\r\n};\r\nexport var eventDelta = (from, to) => ({\r\n x: to.x - from.x,\r\n y: to.y - from.y,\r\n time: to.time - from.time || 1\r\n});\r\nexport var hasTouches = e => {\r\n var {\r\n originalEvent: originalEvent,\r\n pointers: pointers\r\n } = e;\r\n if (isNativeTouchEvent(e)) {\r\n return (originalEvent.touches || []).length\r\n }\r\n if (isDxEvent(e)) {\r\n return (pointers || []).length\r\n }\r\n return 0\r\n};\r\nvar skipEvents = false;\r\nexport var forceSkipEvents = () => skipEvents = true;\r\nexport var stopEventsSkipping = () => skipEvents = false;\r\nexport var needSkipEvent = e => {\r\n if (skipEvents) {\r\n return true\r\n }\r\n var {\r\n target: target\r\n } = e;\r\n var $target = $(target);\r\n var isContentEditable = (null === target || void 0 === target ? void 0 : target.isContentEditable) || (null === target || void 0 === target ? void 0 : target.hasAttribute(\"contenteditable\"));\r\n var touchInEditable = $target.is(\"input, textarea, select\") || isContentEditable;\r\n if ($target.is(\".dx-skip-gesture-event *, .dx-skip-gesture-event\")) {\r\n return true\r\n }\r\n if (isDxMouseWheelEvent(e)) {\r\n var isTextArea = $target.is(\"textarea\") && $target.hasClass(\"dx-texteditor-input\");\r\n if (isTextArea || isContentEditable) {\r\n return false\r\n }\r\n var isInputFocused = $target.is(\"input[type='number'], textarea, select\") && $target.is(\":focus\");\r\n return isInputFocused\r\n }\r\n if (isMouseEvent(e)) {\r\n return touchInEditable || e.which > 1\r\n }\r\n if (isTouchEvent(e)) {\r\n return touchInEditable && focused($target)\r\n }\r\n};\r\nexport var setEventFixMethod = func => fixMethod = func;\r\nexport var createEvent = (originalEvent, args) => {\r\n var event = copyEvent(originalEvent);\r\n args && extend(event, args);\r\n return event\r\n};\r\nexport var fireEvent = props => {\r\n var {\r\n originalEvent: originalEvent,\r\n delegateTarget: delegateTarget\r\n } = props;\r\n var event = createEvent(originalEvent, props);\r\n eventsEngine.trigger(delegateTarget || event.target, event);\r\n return event\r\n};\r\nexport var normalizeKeyName = _ref4 => {\r\n var {\r\n key: key,\r\n which: which\r\n } = _ref4;\r\n var isKeySupported = !!key;\r\n key = isKeySupported ? key : which;\r\n if (key) {\r\n if (isKeySupported) {\r\n key = KEY_MAP[key.toLowerCase()] || key\r\n } else {\r\n key = LEGACY_KEY_CODES[key] || String.fromCharCode(key)\r\n }\r\n return key\r\n }\r\n};\r\nexport var getChar = _ref5 => {\r\n var {\r\n key: key,\r\n which: which\r\n } = _ref5;\r\n return key || String.fromCharCode(which)\r\n};\r\nexport var addNamespace = mappedAddNamespace;\r\nexport var isCommandKeyPressed = _ref6 => {\r\n var {\r\n ctrlKey: ctrlKey,\r\n metaKey: metaKey\r\n } = _ref6;\r\n return ctrlKey || metaKey\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/dependency_injector.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n isFunction\r\n} from \"./type\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport Class from \"../class\";\r\nexport default function(object) {\r\n var BaseClass = Class.inherit(object);\r\n var InjectedClass = BaseClass;\r\n var instance = new InjectedClass(object);\r\n var initialFields = {};\r\n var injectFields = function(injectionObject, initial) {\r\n each(injectionObject, (function(key) {\r\n if (isFunction(instance[key])) {\r\n if (initial || !object[key]) {\r\n object[key] = function() {\r\n return instance[key].apply(object, arguments)\r\n }\r\n }\r\n } else {\r\n if (initial) {\r\n initialFields[key] = object[key]\r\n }\r\n object[key] = instance[key]\r\n }\r\n }))\r\n };\r\n injectFields(object, true);\r\n object.inject = function(injectionObject) {\r\n InjectedClass = InjectedClass.inherit(injectionObject);\r\n instance = new InjectedClass;\r\n injectFields(injectionObject)\r\n };\r\n object.resetInjection = function() {\r\n extend(object, initialFields);\r\n InjectedClass = BaseClass;\r\n instance = new BaseClass\r\n };\r\n return object\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/button.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport devices from \"../core/devices\";\r\nimport {\r\n render\r\n} from \"./widget/utils.ink_ripple\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n isMaterial,\r\n current\r\n} from \"./themes\";\r\nimport Action from \"../core/action\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport Widget from \"./widget/ui.widget\";\r\nimport {\r\n active as activeEvents,\r\n click as clickEvent,\r\n dxClick as dxClickEvent\r\n} from \"../events/short\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../core/templates/function_template\";\r\nimport {\r\n getImageContainer,\r\n getImageSourceType\r\n} from \"../core/utils/icon\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nclass Button extends Widget {\r\n constructor() {\r\n super(...arguments);\r\n this._feedbackHideTimeout = 100\r\n }\r\n _$content() {\r\n return this.$element().find(\".dx-button-content\")\r\n }\r\n _$submitInput() {\r\n return this.$element().find(\".dx-button-submit-input\")\r\n }\r\n _attachActiveEvents(active, inactive) {\r\n var $el = this._eventBindingTarget();\r\n var selector = this._activeStateUnit;\r\n activeEvents.off($el, {\r\n namespace: \"inkRipple\",\r\n selector: selector\r\n });\r\n activeEvents.on($el, new Action(active), new Action(inactive, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }), {\r\n showTimeout: this._feedbackShowTimeout,\r\n hideTimeout: this._feedbackHideTimeout,\r\n selector: selector,\r\n namespace: \"inkRipple\"\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: () => \"desktop\" === devices.real().deviceType && !devices.isSimulator(),\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: () => isMaterial(current()),\r\n options: {\r\n useInkRipple: true\r\n }\r\n }])\r\n }\r\n _executeClickAction(event) {\r\n this._clickAction({\r\n validationGroup: this._validationGroupConfig,\r\n event: event\r\n })\r\n }\r\n _findGroup() {\r\n var $element = this.$element();\r\n var model = this._modelByElement($element);\r\n var {\r\n validationGroup: validationGroup\r\n } = this.option();\r\n return validationGroup || ValidationEngine.findGroup($element, model)\r\n }\r\n _getContentData() {\r\n var {\r\n icon: icon,\r\n text: text,\r\n type: type,\r\n _templateData: _templateData\r\n } = this.option();\r\n return extend({\r\n icon: \"back\" === type && !icon ? \"back\" : icon,\r\n text: text\r\n }, _templateData)\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n hoverStateEnabled: true,\r\n onClick: null,\r\n type: \"normal\",\r\n text: \"\",\r\n icon: \"\",\r\n iconPosition: \"left\",\r\n validationGroup: void 0,\r\n activeStateEnabled: true,\r\n template: \"content\",\r\n useSubmitBehavior: false,\r\n useInkRipple: false,\r\n _templateData: {},\r\n stylingMode: \"contained\"\r\n })\r\n }\r\n _getSubmitAction() {\r\n var needValidate = true;\r\n var validationStatus = \"valid\";\r\n return this._createAction(_ref => {\r\n var {\r\n event: event\r\n } = _ref;\r\n if (needValidate) {\r\n var validationGroup = this._validationGroupConfig;\r\n if (validationGroup) {\r\n var {\r\n status: status,\r\n complete: complete\r\n } = validationGroup.validate();\r\n validationStatus = status;\r\n if (\"pending\" === status) {\r\n needValidate = false;\r\n this.option(\"disabled\", true);\r\n complete.then(_ref2 => {\r\n var {\r\n status: status\r\n } = _ref2;\r\n this.option(\"disabled\", false);\r\n validationStatus = status;\r\n \"valid\" === validationStatus && this._submitInput().click();\r\n needValidate = true\r\n })\r\n }\r\n }\r\n }\r\n \"valid\" !== validationStatus && event.preventDefault();\r\n event.stopPropagation()\r\n })\r\n }\r\n _initMarkup() {\r\n this.$element().addClass(\"dx-button\");\r\n this._renderType();\r\n this._renderStylingMode();\r\n this._renderInkRipple();\r\n this._renderClick();\r\n this._updateAriaLabel();\r\n super._initMarkup();\r\n this._updateContent();\r\n this.setAria(\"role\", \"button\")\r\n }\r\n _getAnonymousTemplateName() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n }\r\n _initTemplates() {\r\n this._templateManager.addDefaultTemplates({\r\n content: new FunctionTemplate(_ref3 => {\r\n var {\r\n model: model = {},\r\n container: container\r\n } = _ref3;\r\n var {\r\n text: text,\r\n icon: icon\r\n } = model;\r\n var {\r\n iconPosition: iconPosition\r\n } = this.option();\r\n var $icon = getImageContainer(icon);\r\n var $textContainer = text && $(\"\").text(text).addClass(\"dx-button-text\");\r\n var $container = $(container);\r\n $container.append($textContainer);\r\n if (\"left\" === iconPosition) {\r\n $container.prepend($icon)\r\n } else {\r\n $icon.addClass(\"dx-icon-right\");\r\n $container.append($icon)\r\n }\r\n })\r\n });\r\n super._initTemplates()\r\n }\r\n _optionChanged(args) {\r\n var {\r\n name: name\r\n } = args;\r\n switch (name) {\r\n case \"onClick\":\r\n this._updateClick();\r\n break;\r\n case \"icon\":\r\n case \"text\":\r\n this._updateContent();\r\n this._updateAriaLabel();\r\n break;\r\n case \"type\":\r\n this._updateType();\r\n this._updateContent();\r\n break;\r\n case \"_templateData\":\r\n break;\r\n case \"template\":\r\n case \"iconPosition\":\r\n this._updateContent();\r\n break;\r\n case \"stylingMode\":\r\n this._updateStylingMode();\r\n break;\r\n case \"useSubmitBehavior\":\r\n this._updateSubmitInput();\r\n break;\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _renderClick() {\r\n var $el = this.$element();\r\n dxClickEvent.off($el, {\r\n namespace: this.NAME\r\n });\r\n dxClickEvent.on($el, event => this._executeClickAction(event), {\r\n namespace: this.NAME\r\n });\r\n this._updateClick()\r\n }\r\n _renderInkRipple() {\r\n var {\r\n text: text,\r\n icon: icon,\r\n type: type,\r\n useInkRipple: useInkRipple\r\n } = this.option();\r\n if (useInkRipple) {\r\n var isOnlyIconButton = !text && icon || \"back\" === type;\r\n var _inkRipple = render(isOnlyIconButton ? {\r\n waveSizeCoefficient: 1,\r\n useHoldAnimation: false,\r\n isCentered: true\r\n } : {});\r\n var changeWaveVisibility = (event, visible) => {\r\n var {\r\n activeStateEnabled: activeStateEnabled,\r\n useInkRipple: useInkRipple\r\n } = this.option();\r\n if (useInkRipple && activeStateEnabled && !this._disposed) {\r\n var config = {\r\n element: this._$content(),\r\n event: event\r\n };\r\n visible ? _inkRipple.showWave(config) : _inkRipple.hideWave(config)\r\n }\r\n };\r\n this._attachActiveEvents(_ref4 => {\r\n var {\r\n event: event\r\n } = _ref4;\r\n return changeWaveVisibility(event, true)\r\n }, _ref5 => {\r\n var {\r\n event: event\r\n } = _ref5;\r\n return changeWaveVisibility(event)\r\n })\r\n }\r\n }\r\n _renderStylingMode() {\r\n var $element = this.$element();\r\n var {\r\n stylingMode: stylingMode\r\n } = this.option();\r\n if (-1 === [\"contained\", \"text\", \"outlined\"].indexOf(stylingMode)) {\r\n stylingMode = this._getDefaultOptions().stylingMode\r\n }\r\n $element.addClass(\"dx-button-mode-\".concat(stylingMode))\r\n }\r\n _renderSubmitInput() {\r\n var {\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.option();\r\n if (useSubmitBehavior) {\r\n var submitAction = this._getSubmitAction();\r\n var $content = this._$content();\r\n $(\"\").attr(\"type\", \"submit\").attr(\"tabindex\", -1).addClass(\"dx-button-submit-input\").appendTo($content);\r\n clickEvent.on(this._$submitInput(), event => submitAction({\r\n event: event\r\n }))\r\n }\r\n }\r\n _renderType() {\r\n var {\r\n type: type\r\n } = this.option();\r\n var $element = this.$element();\r\n type && $element.addClass(\"dx-button-\".concat(type))\r\n }\r\n _submitInput() {\r\n return this._$submitInput().get(0)\r\n }\r\n _supportedKeys() {\r\n var click = e => {\r\n e.preventDefault();\r\n this._executeClickAction(e)\r\n };\r\n return extend(super._supportedKeys(), {\r\n space: click,\r\n enter: click\r\n })\r\n }\r\n _updateAriaLabel() {\r\n var ariaTarget = this._getAriaTarget();\r\n var {\r\n icon: icon,\r\n text: text\r\n } = this.option();\r\n if (!text) {\r\n if (\"image\" === getImageSourceType(icon)) {\r\n icon = -1 === icon.indexOf(\"base64\") ? icon.replace(/.+\\/([^.]+)\\..+$/, \"$1\") : \"Base64\"\r\n }\r\n text = icon || \"\"\r\n }\r\n ariaTarget.attr(\"aria-label\", text || null)\r\n }\r\n _updateClick() {\r\n this._clickAction = this._createActionByOption(\"onClick\", {\r\n excludeValidators: [\"readOnly\"],\r\n afterExecute: () => {\r\n var {\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.option();\r\n useSubmitBehavior && setTimeout(() => this._submitInput().click())\r\n }\r\n })\r\n }\r\n _updateContent() {\r\n var $element = this.$element();\r\n var $content = this._$content();\r\n var data = this._getContentData();\r\n var {\r\n template: template,\r\n iconPosition: iconPosition\r\n } = this.option();\r\n var {\r\n icon: icon,\r\n text: text\r\n } = data;\r\n $content.length ? $content.empty() : $content = $(\"
\").addClass(\"dx-button-content\").appendTo($element);\r\n $element.toggleClass(\"dx-button-has-icon\", !!icon).toggleClass(\"dx-button-icon-right\", !!icon && \"left\" !== iconPosition).toggleClass(\"dx-button-has-text\", !!text);\r\n var $template = $(this._getTemplateByOption(\"template\").render({\r\n model: data,\r\n container: getPublicElement($content),\r\n transclude: this._templateManager.anonymousTemplateName === template\r\n }));\r\n if ($template.hasClass(\"dx-template-wrapper\")) {\r\n $template.addClass(\"dx-button-content\");\r\n $content.replaceWith($template)\r\n }\r\n this._updateSubmitInput()\r\n }\r\n _updateSubmitInput() {\r\n var {\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.option();\r\n var $submitInput = this._$submitInput();\r\n if (!useSubmitBehavior && $submitInput.length) {\r\n $submitInput.remove()\r\n } else if (useSubmitBehavior && !$submitInput.length) {\r\n this._renderSubmitInput()\r\n }\r\n }\r\n _updateStylingMode() {\r\n var $element = this.$element();\r\n [\"contained\", \"text\", \"outlined\"].map(mode => \"dx-button-mode-\".concat(mode)).forEach($element.removeClass.bind($element));\r\n this._renderStylingMode()\r\n }\r\n _updateType() {\r\n var $element = this.$element();\r\n [\"back\", \"danger\", \"default\", \"normal\", \"success\"].map(type => \"dx-button-\".concat(type)).forEach($element.removeClass.bind($element));\r\n this._renderType()\r\n }\r\n get _validationGroupConfig() {\r\n return ValidationEngine.getGroupConfig(this._findGroup())\r\n }\r\n}\r\nregisterComponent(\"dxButton\", Button);\r\nexport default Button;\r\n","/**\r\n * DevExtreme (esm/core/component_registrator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport callbacks from \"./component_registrator_callbacks\";\r\nimport errors from \"./errors\";\r\nimport {\r\n name as publicComponentName\r\n} from \"./utils/public_component\";\r\nvar registerComponent = function(name, namespace, componentClass) {\r\n if (!componentClass) {\r\n componentClass = namespace\r\n } else {\r\n namespace[name] = componentClass\r\n }\r\n publicComponentName(componentClass, name);\r\n callbacks.fire(name, componentClass)\r\n};\r\nvar registerRendererComponent = function(name, componentClass) {\r\n $.fn[name] = function(options) {\r\n var isMemberInvoke = \"string\" === typeof options;\r\n var result;\r\n if (isMemberInvoke) {\r\n var memberName = options;\r\n var memberArgs = [].slice.call(arguments).slice(1);\r\n this.each((function() {\r\n var instance = componentClass.getInstance(this);\r\n if (!instance) {\r\n throw errors.Error(\"E0009\", name)\r\n }\r\n var member = instance[memberName];\r\n var memberValue = member.apply(instance, memberArgs);\r\n if (void 0 === result) {\r\n result = memberValue\r\n }\r\n }))\r\n } else {\r\n this.each((function() {\r\n var instance = componentClass.getInstance(this);\r\n if (instance) {\r\n instance.option(options)\r\n } else {\r\n new componentClass(this, options)\r\n }\r\n }));\r\n result = this\r\n }\r\n return result\r\n }\r\n};\r\ncallbacks.add(registerRendererComponent);\r\nexport default registerComponent;\r\n","/**\r\n * DevExtreme (esm/data/array_query.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nimport {\r\n isFunction,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n compileGetter,\r\n toComparable\r\n} from \"../core/utils/data\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n errors,\r\n handleError as handleDataError\r\n} from \"./errors\";\r\nimport dataUtils from \"./utils\";\r\nvar Iterator = Class.inherit({\r\n toArray: function() {\r\n var result = [];\r\n this.reset();\r\n while (this.next()) {\r\n result.push(this.current())\r\n }\r\n return result\r\n },\r\n countable: function() {\r\n return false\r\n }\r\n});\r\nvar ArrayIterator = Iterator.inherit({\r\n ctor: function(array) {\r\n this.array = array;\r\n this.index = -1\r\n },\r\n next: function() {\r\n if (this.index + 1 < this.array.length) {\r\n this.index++;\r\n return true\r\n }\r\n return false\r\n },\r\n current: function() {\r\n return this.array[this.index]\r\n },\r\n reset: function() {\r\n this.index = -1\r\n },\r\n toArray: function() {\r\n return this.array.slice(0)\r\n },\r\n countable: function() {\r\n return true\r\n },\r\n count: function() {\r\n return this.array.length\r\n }\r\n});\r\nvar WrappedIterator = Iterator.inherit({\r\n ctor: function(iter) {\r\n this.iter = iter\r\n },\r\n next: function() {\r\n return this.iter.next()\r\n },\r\n current: function() {\r\n return this.iter.current()\r\n },\r\n reset: function() {\r\n return this.iter.reset()\r\n }\r\n});\r\nvar MapIterator = WrappedIterator.inherit({\r\n ctor: function(iter, mapper) {\r\n this.callBase(iter);\r\n this.index = -1;\r\n this.mapper = mapper\r\n },\r\n current: function() {\r\n return this.mapper(this.callBase(), this.index)\r\n },\r\n next: function() {\r\n var hasNext = this.callBase();\r\n if (hasNext) {\r\n this.index++\r\n }\r\n return hasNext\r\n }\r\n});\r\nvar defaultCompare = function(xValue, yValue) {\r\n xValue = toComparable(xValue);\r\n yValue = toComparable(yValue);\r\n if (null === xValue && null !== yValue) {\r\n return -1\r\n }\r\n if (null !== xValue && null === yValue) {\r\n return 1\r\n }\r\n if (void 0 === xValue && void 0 !== yValue) {\r\n return 1\r\n }\r\n if (void 0 !== xValue && void 0 === yValue) {\r\n return -1\r\n }\r\n if (xValue < yValue) {\r\n return -1\r\n }\r\n if (xValue > yValue) {\r\n return 1\r\n }\r\n return 0\r\n};\r\nvar SortIterator = Iterator.inherit({\r\n ctor: function(iter, getter, desc, compare) {\r\n if (!(iter instanceof MapIterator)) {\r\n iter = new MapIterator(iter, this._wrap)\r\n }\r\n this.iter = iter;\r\n this.rules = [{\r\n getter: getter,\r\n desc: desc,\r\n compare: compare\r\n }]\r\n },\r\n thenBy: function(getter, desc, compare) {\r\n var result = new SortIterator(this.sortedIter || this.iter, getter, desc, compare);\r\n if (!this.sortedIter) {\r\n result.rules = this.rules.concat(result.rules)\r\n }\r\n return result\r\n },\r\n next: function() {\r\n this._ensureSorted();\r\n return this.sortedIter.next()\r\n },\r\n current: function() {\r\n this._ensureSorted();\r\n return this.sortedIter.current()\r\n },\r\n reset: function() {\r\n delete this.sortedIter\r\n },\r\n countable: function() {\r\n return this.sortedIter || this.iter.countable()\r\n },\r\n count: function() {\r\n if (this.sortedIter) {\r\n return this.sortedIter.count()\r\n }\r\n return this.iter.count()\r\n },\r\n _ensureSorted: function() {\r\n var that = this;\r\n if (that.sortedIter) {\r\n return\r\n }\r\n each(that.rules, (function() {\r\n this.getter = compileGetter(this.getter)\r\n }));\r\n that.sortedIter = new MapIterator(new ArrayIterator(this.iter.toArray().sort((function(x, y) {\r\n return that._compare(x, y)\r\n }))), that._unwrap)\r\n },\r\n _wrap: function(record, index) {\r\n return {\r\n index: index,\r\n value: record\r\n }\r\n },\r\n _unwrap: function(wrappedItem) {\r\n return wrappedItem.value\r\n },\r\n _compare: function(x, y) {\r\n var xIndex = x.index;\r\n var yIndex = y.index;\r\n x = x.value;\r\n y = y.value;\r\n if (x === y) {\r\n return xIndex - yIndex\r\n }\r\n for (var i = 0, rulesCount = this.rules.length; i < rulesCount; i++) {\r\n var rule = this.rules[i];\r\n var xValue = rule.getter(x);\r\n var yValue = rule.getter(y);\r\n var compare = rule.compare || defaultCompare;\r\n var compareResult = compare(xValue, yValue);\r\n if (compareResult) {\r\n return rule.desc ? -compareResult : compareResult\r\n }\r\n }\r\n return xIndex - yIndex\r\n }\r\n});\r\nvar compileCriteria = function() {\r\n var toString = function(value) {\r\n return isDefined(value) ? value.toString() : \"\"\r\n };\r\n\r\n function compileEquals(getter, value, negate) {\r\n return function(obj) {\r\n obj = toComparable(getter(obj));\r\n var result = function(value) {\r\n return \"\" === value || 0 === value || false === value\r\n }(value) ? obj === value : obj == value;\r\n if (negate) {\r\n result = !result\r\n }\r\n return result\r\n }\r\n }\r\n return function(crit) {\r\n if (isFunction(crit)) {\r\n return crit\r\n }\r\n if (dataUtils.isGroupCriterion(crit)) {\r\n return function(crit) {\r\n var ops = [];\r\n var isConjunctiveOperator = false;\r\n var isConjunctiveNextOperator = false;\r\n each(crit, (function() {\r\n if (Array.isArray(this) || isFunction(this)) {\r\n if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) {\r\n throw new errors.Error(\"E4019\")\r\n }\r\n ops.push(compileCriteria(this));\r\n isConjunctiveOperator = isConjunctiveNextOperator;\r\n isConjunctiveNextOperator = true\r\n } else {\r\n isConjunctiveNextOperator = dataUtils.isConjunctiveOperator(this)\r\n }\r\n }));\r\n return function(d) {\r\n var result = isConjunctiveOperator;\r\n for (var i = 0; i < ops.length; i++) {\r\n if (ops[i](d) !== isConjunctiveOperator) {\r\n result = !isConjunctiveOperator;\r\n break\r\n }\r\n }\r\n return result\r\n }\r\n }(crit)\r\n }\r\n if (dataUtils.isUnaryOperation(crit)) {\r\n return function(crit) {\r\n var op = crit[0];\r\n var criteria = compileCriteria(crit[1]);\r\n if (\"!\" === op) {\r\n return function(obj) {\r\n return !criteria(obj)\r\n }\r\n }\r\n throw errors.Error(\"E4003\", op)\r\n }(crit)\r\n }\r\n return function(crit) {\r\n crit = dataUtils.normalizeBinaryCriterion(crit);\r\n var getter = compileGetter(crit[0]);\r\n var op = crit[1];\r\n var value = crit[2];\r\n value = toComparable(value);\r\n switch (op.toLowerCase()) {\r\n case \"=\":\r\n return compileEquals(getter, value);\r\n case \"<>\":\r\n return compileEquals(getter, value, true);\r\n case \">\":\r\n return function(obj) {\r\n return toComparable(getter(obj)) > value\r\n };\r\n case \"<\":\r\n return function(obj) {\r\n return toComparable(getter(obj)) < value\r\n };\r\n case \">=\":\r\n return function(obj) {\r\n return toComparable(getter(obj)) >= value\r\n };\r\n case \"<=\":\r\n return function(obj) {\r\n return toComparable(getter(obj)) <= value\r\n };\r\n case \"startswith\":\r\n return function(obj) {\r\n return 0 === toComparable(toString(getter(obj))).indexOf(value)\r\n };\r\n case \"endswith\":\r\n return function(obj) {\r\n var getterValue = toComparable(toString(getter(obj)));\r\n var searchValue = toString(value);\r\n if (getterValue.length < searchValue.length) {\r\n return false\r\n }\r\n var index = getterValue.lastIndexOf(value);\r\n return -1 !== index && index === getterValue.length - value.length\r\n };\r\n case \"contains\":\r\n return function(obj) {\r\n return toComparable(toString(getter(obj))).indexOf(value) > -1\r\n };\r\n case \"notcontains\":\r\n return function(obj) {\r\n return -1 === toComparable(toString(getter(obj))).indexOf(value)\r\n }\r\n }\r\n throw errors.Error(\"E4003\", op)\r\n }(crit)\r\n }\r\n}();\r\nvar FilterIterator = WrappedIterator.inherit({\r\n ctor: function(iter, criteria) {\r\n this.callBase(iter);\r\n this.criteria = compileCriteria(criteria)\r\n },\r\n next: function() {\r\n while (this.iter.next()) {\r\n if (this.criteria(this.current())) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n});\r\nvar GroupIterator = Iterator.inherit({\r\n ctor: function(iter, getter) {\r\n this.iter = iter;\r\n this.getter = getter\r\n },\r\n next: function() {\r\n this._ensureGrouped();\r\n return this.groupedIter.next()\r\n },\r\n current: function() {\r\n this._ensureGrouped();\r\n return this.groupedIter.current()\r\n },\r\n reset: function() {\r\n delete this.groupedIter\r\n },\r\n countable: function() {\r\n return !!this.groupedIter\r\n },\r\n count: function() {\r\n return this.groupedIter.count()\r\n },\r\n _ensureGrouped: function() {\r\n if (this.groupedIter) {\r\n return\r\n }\r\n var hash = {};\r\n var keys = [];\r\n var iter = this.iter;\r\n var getter = compileGetter(this.getter);\r\n iter.reset();\r\n while (iter.next()) {\r\n var current = iter.current();\r\n var key = getter(current);\r\n if (key in hash) {\r\n hash[key].push(current)\r\n } else {\r\n hash[key] = [current];\r\n keys.push(key)\r\n }\r\n }\r\n this.groupedIter = new ArrayIterator(map(keys, (function(key) {\r\n return {\r\n key: key,\r\n items: hash[key]\r\n }\r\n })))\r\n }\r\n});\r\nvar SelectIterator = WrappedIterator.inherit({\r\n ctor: function(iter, getter) {\r\n this.callBase(iter);\r\n this.getter = compileGetter(getter)\r\n },\r\n current: function() {\r\n return this.getter(this.callBase())\r\n },\r\n countable: function() {\r\n return this.iter.countable()\r\n },\r\n count: function() {\r\n return this.iter.count()\r\n }\r\n});\r\nvar SliceIterator = WrappedIterator.inherit({\r\n ctor: function(iter, skip, take) {\r\n this.callBase(iter);\r\n this.skip = Math.max(0, skip);\r\n this.take = Math.max(0, take);\r\n this.pos = 0\r\n },\r\n next: function() {\r\n if (this.pos >= this.skip + this.take) {\r\n return false\r\n }\r\n while (this.pos < this.skip && this.iter.next()) {\r\n this.pos++\r\n }\r\n this.pos++;\r\n return this.iter.next()\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this.pos = 0\r\n },\r\n countable: function() {\r\n return this.iter.countable()\r\n },\r\n count: function() {\r\n return Math.min(this.iter.count() - this.skip, this.take)\r\n }\r\n});\r\nvar arrayQueryImpl = function arrayQueryImpl(iter, queryOptions) {\r\n queryOptions = queryOptions || {};\r\n if (!(iter instanceof Iterator)) {\r\n iter = new ArrayIterator(iter)\r\n }\r\n var handleError = function(error) {\r\n var handler = queryOptions.errorHandler;\r\n if (handler) {\r\n handler(error)\r\n }\r\n handleDataError(error)\r\n };\r\n var aggregateCore = function(aggregator) {\r\n var d = (new Deferred).fail(handleError);\r\n var seed;\r\n var step = aggregator.step;\r\n var finalize = aggregator.finalize;\r\n try {\r\n iter.reset();\r\n if (\"seed\" in aggregator) {\r\n seed = aggregator.seed\r\n } else {\r\n seed = iter.next() ? iter.current() : NaN\r\n }\r\n var accumulator = seed;\r\n while (iter.next()) {\r\n accumulator = step(accumulator, iter.current())\r\n }\r\n d.resolve(finalize ? finalize(accumulator) : accumulator)\r\n } catch (x) {\r\n d.reject(x)\r\n }\r\n return d.promise()\r\n };\r\n var standardAggregate = function(name) {\r\n return aggregateCore(dataUtils.aggregators[name])\r\n };\r\n var select = function(getter) {\r\n if (!isFunction(getter) && !Array.isArray(getter)) {\r\n getter = [].slice.call(arguments)\r\n }\r\n return chainQuery(new SelectIterator(iter, getter))\r\n };\r\n var selectProp = function(name) {\r\n return select(compileGetter(name))\r\n };\r\n\r\n function chainQuery(iter) {\r\n return arrayQueryImpl(iter, queryOptions)\r\n }\r\n return {\r\n toArray: function() {\r\n return iter.toArray()\r\n },\r\n enumerate: function() {\r\n var d = (new Deferred).fail(handleError);\r\n try {\r\n d.resolve(iter.toArray())\r\n } catch (x) {\r\n d.reject(x)\r\n }\r\n return d.promise()\r\n },\r\n sortBy: function(getter, desc, compare) {\r\n return chainQuery(new SortIterator(iter, getter, desc, compare))\r\n },\r\n thenBy: function(getter, desc, compare) {\r\n if (iter instanceof SortIterator) {\r\n return chainQuery(iter.thenBy(getter, desc, compare))\r\n }\r\n throw errors.Error(\"E4004\")\r\n },\r\n filter: function(criteria) {\r\n if (!Array.isArray(criteria)) {\r\n criteria = [].slice.call(arguments)\r\n }\r\n return chainQuery(new FilterIterator(iter, criteria))\r\n },\r\n slice: function(skip, take) {\r\n if (void 0 === take) {\r\n take = Number.MAX_VALUE\r\n }\r\n return chainQuery(new SliceIterator(iter, skip, take))\r\n },\r\n select: select,\r\n groupBy: function(getter) {\r\n return chainQuery(new GroupIterator(iter, getter))\r\n },\r\n aggregate: function(seed, step, finalize) {\r\n if (arguments.length < 2) {\r\n return aggregateCore({\r\n step: arguments[0]\r\n })\r\n }\r\n return aggregateCore({\r\n seed: seed,\r\n step: step,\r\n finalize: finalize\r\n })\r\n },\r\n count: function() {\r\n if (iter.countable()) {\r\n var d = (new Deferred).fail(handleError);\r\n try {\r\n d.resolve(iter.count())\r\n } catch (x) {\r\n d.reject(x)\r\n }\r\n return d.promise()\r\n }\r\n return standardAggregate(\"count\")\r\n },\r\n sum: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).sum()\r\n }\r\n return standardAggregate(\"sum\")\r\n },\r\n min: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).min()\r\n }\r\n return standardAggregate(\"min\")\r\n },\r\n max: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).max()\r\n }\r\n return standardAggregate(\"max\")\r\n },\r\n avg: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).avg()\r\n }\r\n return standardAggregate(\"avg\")\r\n }\r\n }\r\n};\r\nexport default arrayQueryImpl;\r\n","/**\r\n * DevExtreme (esm/core/utils/object.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isNumeric,\r\n isPlainObject,\r\n isObject\r\n} from \"./type\";\r\nimport variableWrapper from \"./variable_wrapper\";\r\nvar clone = function() {\r\n function Clone() {}\r\n return function(obj) {\r\n Clone.prototype = obj;\r\n return new Clone\r\n }\r\n}();\r\nvar orderEach = function(map, func) {\r\n var keys = [];\r\n var key;\r\n var i;\r\n for (key in map) {\r\n if (Object.prototype.hasOwnProperty.call(map, key)) {\r\n keys.push(key)\r\n }\r\n }\r\n keys.sort((function(x, y) {\r\n var isNumberX = isNumeric(x);\r\n var isNumberY = isNumeric(y);\r\n if (isNumberX && isNumberY) {\r\n return x - y\r\n }\r\n if (isNumberX && !isNumberY) {\r\n return -1\r\n }\r\n if (!isNumberX && isNumberY) {\r\n return 1\r\n }\r\n if (x < y) {\r\n return -1\r\n }\r\n if (x > y) {\r\n return 1\r\n }\r\n return 0\r\n }));\r\n for (i = 0; i < keys.length; i++) {\r\n key = keys[i];\r\n func(key, map[key])\r\n }\r\n};\r\nvar assignValueToProperty = function(target, property, value, assignByReference) {\r\n if (!assignByReference && variableWrapper.isWrapped(target[property])) {\r\n variableWrapper.assign(target[property], value)\r\n } else {\r\n target[property] = value\r\n }\r\n};\r\nvar deepExtendArraySafe = function deepExtendArraySafe(target, changes, extendComplexObject, assignByReference) {\r\n var prevValue;\r\n var newValue;\r\n for (var name in changes) {\r\n prevValue = target[name];\r\n newValue = changes[name];\r\n if (\"__proto__\" === name || \"constructor\" === name || target === newValue) {\r\n continue\r\n }\r\n if (isPlainObject(newValue)) {\r\n var goDeeper = extendComplexObject ? isObject(prevValue) : isPlainObject(prevValue);\r\n newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference)\r\n }\r\n if (void 0 !== newValue && prevValue !== newValue) {\r\n assignValueToProperty(target, name, newValue, assignByReference)\r\n }\r\n }\r\n return target\r\n};\r\nexport {\r\n clone,\r\n orderEach,\r\n deepExtendArraySafe\r\n};\r\n","/**\r\n * DevExtreme (esm/core/templates/empty_template.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nexport class EmptyTemplate extends TemplateBase {\r\n _renderCore() {\r\n return $()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ensureDefined,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n findTemplates\r\n} from \"../../core/utils/template_manager\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isPlainObject,\r\n isFunction,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport Action from \"../../core/action\";\r\nimport Guid from \"../../core/guid\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport CollectionWidgetItem from \"./item\";\r\nimport {\r\n focusable\r\n} from \"../widget/selectors\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n name as contextMenuEventName\r\n} from \"../../events/contextmenu\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nvar COLLECTION_CLASS = \"dx-collection\";\r\nvar ITEM_CLASS = \"dx-item\";\r\nvar CONTENT_CLASS_POSTFIX = \"-content\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar ITEM_DATA_KEY = \"dxItemData\";\r\nvar ITEM_INDEX_KEY = \"dxItemIndex\";\r\nvar ITEM_TEMPLATE_ID_PREFIX = \"tmpl-\";\r\nvar ITEMS_OPTIONS_NAME = \"dxItem\";\r\nvar SELECTED_ITEM_CLASS = \"dx-item-selected\";\r\nvar ITEM_RESPONSE_WAIT_CLASS = \"dx-item-response-wait\";\r\nvar EMPTY_COLLECTION = \"dx-empty-collection\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar ITEM_PATH_REGEX = /^([^.]+\\[\\d+\\]\\.)+([\\w.]+)$/;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"item\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_PAGE_UP = \"pageup\";\r\nvar FOCUS_PAGE_DOWN = \"pagedown\";\r\nvar FOCUS_LAST = \"last\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar CollectionWidget = Widget.inherit({\r\n _activeStateUnit: \".\" + ITEM_CLASS,\r\n _supportedKeys: function() {\r\n var enter = function(e) {\r\n var $itemElement = $(this.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n this._itemClickHandler(extend({}, e, {\r\n target: $itemElement.get(0),\r\n currentTarget: $itemElement.get(0)\r\n }))\r\n };\r\n var move = function(location, e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moveFocus(location, e)\r\n }\r\n };\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n enter.call(this, e)\r\n },\r\n enter: enter,\r\n leftArrow: move.bind(this, FOCUS_LEFT),\r\n rightArrow: move.bind(this, FOCUS_RIGHT),\r\n upArrow: move.bind(this, FOCUS_UP),\r\n downArrow: move.bind(this, FOCUS_DOWN),\r\n pageUp: move.bind(this, FOCUS_UP),\r\n pageDown: move.bind(this, FOCUS_DOWN),\r\n home: move.bind(this, FOCUS_FIRST),\r\n end: move.bind(this, FOCUS_LAST)\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectOnFocus: false,\r\n loopItemFocus: true,\r\n items: [],\r\n itemTemplate: \"item\",\r\n onItemRendered: null,\r\n onItemClick: null,\r\n onItemHold: null,\r\n itemHoldTimeout: 750,\r\n onItemContextMenu: null,\r\n onFocusedItemChanged: null,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n dataSource: null,\r\n _itemAttributes: {},\r\n itemTemplateProperty: \"template\",\r\n focusOnSelectedItem: true,\r\n focusedElement: null,\r\n displayExpr: void 0,\r\n disabledExpr: function(data) {\r\n return data ? data.disabled : void 0\r\n },\r\n visibleExpr: function(data) {\r\n return data ? data.visible : void 0\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this._compileDisplayGetter();\r\n this.callBase();\r\n this._cleanRenderedItems();\r\n this._refreshDataSource()\r\n },\r\n _compileDisplayGetter: function() {\r\n var displayExpr = this.option(\"displayExpr\");\r\n this._displayGetter = displayExpr ? compileGetter(this.option(\"displayExpr\")) : void 0\r\n },\r\n _initTemplates: function() {\r\n this._initItemsFromMarkup();\r\n this._initDefaultItemTemplate();\r\n this.callBase()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initDefaultItemTemplate: function() {\r\n var fieldsMap = this._getFieldsMap();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(function($container, data) {\r\n if (isPlainObject(data)) {\r\n this._prepareDefaultItemTemplate(data, $container)\r\n } else {\r\n if (fieldsMap && isFunction(fieldsMap.text)) {\r\n data = fieldsMap.text(data)\r\n }\r\n $container.text(String(ensureDefined(data, \"\")))\r\n }\r\n }.bind(this), this._getBindableFields(), this.option(\"integrationOptions.watchMethod\"), fieldsMap)\r\n })\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\"]\r\n },\r\n _getFieldsMap: function() {\r\n if (this._displayGetter) {\r\n return {\r\n text: this._displayGetter\r\n }\r\n }\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n if (isDefined(data.text)) {\r\n $container.text(data.text)\r\n }\r\n if (isDefined(data.html)) {\r\n $container.html(data.html)\r\n }\r\n },\r\n _initItemsFromMarkup: function() {\r\n var rawItems = findTemplates(this.$element(), ITEMS_OPTIONS_NAME);\r\n if (!rawItems.length || this.option(\"items\").length) {\r\n return\r\n }\r\n var items = rawItems.map(_ref => {\r\n var {\r\n element: element,\r\n options: options\r\n } = _ref;\r\n var isTemplateRequired = /\\S/.test(element.innerHTML) && !options.template;\r\n if (isTemplateRequired) {\r\n options.template = this._prepareItemTemplate(element)\r\n } else {\r\n $(element).remove()\r\n }\r\n return options\r\n });\r\n this.option(\"items\", items)\r\n },\r\n _prepareItemTemplate: function(item) {\r\n var templateId = ITEM_TEMPLATE_ID_PREFIX + new Guid;\r\n var $template = $(item).detach().clone().removeAttr(\"data-options\").addClass(TEMPLATE_WRAPPER_CLASS);\r\n this._saveTemplate(templateId, $template);\r\n return templateId\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _cleanRenderedItems: function() {\r\n this._renderedItemsCount = 0\r\n },\r\n _focusTarget: function() {\r\n return this.$element()\r\n },\r\n _focusInHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (-1 === inArray(e.target, this._focusTarget())) {\r\n return\r\n }\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n if ($focusedElement.length) {\r\n this._setFocusedItem($focusedElement)\r\n } else {\r\n var $activeItem = this._getActiveItem();\r\n if ($activeItem.length) {\r\n this.option(\"focusedElement\", getPublicElement($activeItem))\r\n }\r\n }\r\n },\r\n _focusOutHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n var $target = $(this.option(\"focusedElement\"));\r\n this._updateFocusedItemState($target, false)\r\n },\r\n _getActiveItem: function(last) {\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n if ($focusedElement.length) {\r\n return $focusedElement\r\n }\r\n var index = this.option(\"focusOnSelectedItem\") ? this.option(\"selectedIndex\") : 0;\r\n var activeElements = this._getActiveElement();\r\n var lastIndex = activeElements.length - 1;\r\n if (index < 0) {\r\n index = last ? lastIndex : 0\r\n }\r\n return activeElements.eq(index)\r\n },\r\n _moveFocus: function(location) {\r\n var $items = this._getAvailableItems();\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_PAGE_UP:\r\n case FOCUS_UP:\r\n $newTarget = this._prevItem($items);\r\n break;\r\n case FOCUS_PAGE_DOWN:\r\n case FOCUS_DOWN:\r\n $newTarget = this._nextItem($items);\r\n break;\r\n case FOCUS_RIGHT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._prevItem($items) : this._nextItem($items);\r\n break;\r\n case FOCUS_LEFT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._nextItem($items) : this._prevItem($items);\r\n break;\r\n case FOCUS_FIRST:\r\n $newTarget = $items.first();\r\n break;\r\n case FOCUS_LAST:\r\n $newTarget = $items.last();\r\n break;\r\n default:\r\n return false\r\n }\r\n if (0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", getPublicElement($newTarget))\r\n }\r\n },\r\n _getVisibleItems: function($itemElements) {\r\n $itemElements = $itemElements || this._itemElements();\r\n return $itemElements.filter(\":visible\")\r\n },\r\n _getAvailableItems: function($itemElements) {\r\n return this._getVisibleItems($itemElements).not(\".dx-state-disabled\")\r\n },\r\n _prevItem: function($items) {\r\n var $target = this._getActiveItem();\r\n var targetIndex = $items.index($target);\r\n var $last = $items.last();\r\n var $item = $($items[targetIndex - 1]);\r\n var loop = this.option(\"loopItemFocus\");\r\n if (0 === $item.length && loop) {\r\n $item = $last\r\n }\r\n return $item\r\n },\r\n _nextItem: function($items) {\r\n var $target = this._getActiveItem(true);\r\n var targetIndex = $items.index($target);\r\n var $first = $items.first();\r\n var $item = $($items[targetIndex + 1]);\r\n var loop = this.option(\"loopItemFocus\");\r\n if (0 === $item.length && loop) {\r\n $item = $first\r\n }\r\n return $item\r\n },\r\n _selectFocusedItem: function($target) {\r\n this.selectItem($target)\r\n },\r\n _updateFocusedItemState: function(target, isFocused, needCleanItemId) {\r\n var $target = $(target);\r\n if ($target.length) {\r\n this._refreshActiveDescendant();\r\n this._refreshItemId($target, needCleanItemId);\r\n this._toggleFocusClass(isFocused, $target)\r\n }\r\n this._updateParentActiveDescendant()\r\n },\r\n _refreshActiveDescendant: function($target) {\r\n this.setAria(\"activedescendant\", isDefined(this.option(\"focusedElement\")) ? this.getFocusedItemId() : null, $target)\r\n },\r\n _refreshItemId: function($target, needCleanItemId) {\r\n if (!needCleanItemId && this.option(\"focusedElement\")) {\r\n this.setAria(\"id\", this.getFocusedItemId(), $target)\r\n } else {\r\n this.setAria(\"id\", null, $target)\r\n }\r\n },\r\n _setFocusedItem: function($target) {\r\n if (!$target || !$target.length) {\r\n return\r\n }\r\n this._updateFocusedItemState($target, true);\r\n this.onFocusedItemChanged(this.getFocusedItemId());\r\n if (this.option(\"selectOnFocus\")) {\r\n this._selectFocusedItem($target)\r\n }\r\n },\r\n _findItemElementByItem: function(item) {\r\n var result = $();\r\n var that = this;\r\n this.itemElements().each((function() {\r\n var $item = $(this);\r\n if ($item.data(that._itemDataKey()) === item) {\r\n result = $item;\r\n return false\r\n }\r\n }));\r\n return result\r\n },\r\n _getIndexByItem: function(item) {\r\n return this.option(\"items\").indexOf(item)\r\n },\r\n _itemOptionChanged: function(item, property, value, oldValue) {\r\n var $item = this._findItemElementByItem(item);\r\n if (!$item.length) {\r\n return\r\n }\r\n if (!this.constructor.ItemClass.getInstance($item).setDataField(property, value)) {\r\n this._refreshItem($item, item)\r\n }\r\n var isDisabling = \"disabled\" === property && value;\r\n if (isDisabling) {\r\n this._resetItemFocus($item)\r\n }\r\n },\r\n _resetItemFocus($item) {\r\n if ($item.is(this.option(\"focusedElement\"))) {\r\n this.option(\"focusedElement\", null)\r\n }\r\n },\r\n _refreshItem: function($item) {\r\n var itemData = this._getItemData($item);\r\n var index = $item.data(this._itemIndexKey());\r\n this._renderItem(this._renderedItemsCount + index, itemData, null, $item)\r\n },\r\n _updateParentActiveDescendant: noop,\r\n _optionChanged: function(args) {\r\n if (\"items\" === args.name) {\r\n var matches = args.fullName.match(ITEM_PATH_REGEX);\r\n if (matches && matches.length) {\r\n var property = matches[matches.length - 1];\r\n var itemPath = args.fullName.replace(\".\" + property, \"\");\r\n var item = this.option(itemPath);\r\n this._itemOptionChanged(item, property, args.value, args.previousValue);\r\n return\r\n }\r\n }\r\n switch (args.name) {\r\n case \"items\":\r\n case \"_itemAttributes\":\r\n case \"itemTemplateProperty\":\r\n case \"useItemTextAsTitle\":\r\n this._cleanRenderedItems();\r\n this._invalidate();\r\n break;\r\n case \"dataSource\":\r\n this._refreshDataSource();\r\n this._renderEmptyMessage();\r\n break;\r\n case \"noDataText\":\r\n this._renderEmptyMessage();\r\n break;\r\n case \"itemTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"onItemRendered\":\r\n this._createItemRenderAction();\r\n break;\r\n case \"onItemClick\":\r\n break;\r\n case \"onItemHold\":\r\n case \"itemHoldTimeout\":\r\n this._attachHoldEvent();\r\n break;\r\n case \"onItemContextMenu\":\r\n this._attachContextMenuEvent();\r\n break;\r\n case \"onFocusedItemChanged\":\r\n this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n break;\r\n case \"selectOnFocus\":\r\n case \"loopItemFocus\":\r\n case \"focusOnSelectedItem\":\r\n break;\r\n case \"focusedElement\":\r\n this._updateFocusedItemState(args.previousValue, false, true);\r\n this._setFocusedItem($(args.value));\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._initDefaultItemTemplate();\r\n this._invalidate();\r\n break;\r\n case \"visibleExpr\":\r\n case \"disabledExpr\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _invalidate: function() {\r\n this.option(\"focusedElement\", null);\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _loadNextPage: function() {\r\n var dataSource = this._dataSource;\r\n this._expectNextPageLoading();\r\n dataSource.pageIndex(1 + dataSource.pageIndex());\r\n return dataSource.load()\r\n },\r\n _expectNextPageLoading: function() {\r\n this._startIndexForAppendedItems = 0\r\n },\r\n _expectLastItemLoading: function() {\r\n this._startIndexForAppendedItems = -1\r\n },\r\n _forgetNextPageLoading: function() {\r\n this._startIndexForAppendedItems = null\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n var items = this.option(\"items\");\r\n if (this._initialized && items && this._shouldAppendItems()) {\r\n this._renderedItemsCount = items.length;\r\n if (!this._isLastPage() || -1 !== this._startIndexForAppendedItems) {\r\n this.option().items = items.concat(newItems.slice(this._startIndexForAppendedItems))\r\n }\r\n this._forgetNextPageLoading();\r\n this._refreshContent()\r\n } else {\r\n this.option(\"items\", newItems.slice())\r\n }\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._renderContent()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n this.option(\"items\", this.option(\"items\"))\r\n },\r\n _shouldAppendItems: function() {\r\n return null != this._startIndexForAppendedItems && this._allowDynamicItemsAppend()\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return false\r\n },\r\n _clean: function() {\r\n this._cleanFocusState();\r\n this._cleanItemContainer()\r\n },\r\n _cleanItemContainer: function() {\r\n $(this._itemContainer()).empty()\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._itemFocusTimeout)\r\n },\r\n _refresh: function() {\r\n this._cleanRenderedItems();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _itemContainer: function() {\r\n return this.$element()\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemContentClass: function() {\r\n return this._itemClass() + CONTENT_CLASS_POSTFIX\r\n },\r\n _selectedItemClass: function() {\r\n return SELECTED_ITEM_CLASS\r\n },\r\n _itemResponseWaitClass: function() {\r\n return ITEM_RESPONSE_WAIT_CLASS\r\n },\r\n _itemSelector: function() {\r\n return \".\" + this._itemClass()\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _itemIndexKey: function() {\r\n return ITEM_INDEX_KEY\r\n },\r\n _itemElements: function() {\r\n return this._itemContainer().find(this._itemSelector())\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n this.$element().addClass(COLLECTION_CLASS);\r\n this._prepareContent()\r\n },\r\n _prepareContent: deferRenderer((function() {\r\n this._renderContentImpl()\r\n })),\r\n _renderContent: function() {\r\n this._fireContentReadyAction()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._attachContextMenuEvent()\r\n },\r\n _attachClickEvent: function() {\r\n var itemSelector = this._itemSelector();\r\n var clickEventNamespace = addNamespace(clickEventName, this.NAME);\r\n var pointerDownEventNamespace = addNamespace(pointerEvents.down, this.NAME);\r\n var that = this;\r\n var pointerDownAction = new Action((function(args) {\r\n var event = args.event;\r\n that._itemPointerDownHandler(event)\r\n }));\r\n eventsEngine.off(this._itemContainer(), clickEventNamespace, itemSelector);\r\n eventsEngine.off(this._itemContainer(), pointerDownEventNamespace, itemSelector);\r\n eventsEngine.on(this._itemContainer(), clickEventNamespace, itemSelector, function(e) {\r\n this._itemClickHandler(e)\r\n }.bind(this));\r\n eventsEngine.on(this._itemContainer(), pointerDownEventNamespace, itemSelector, (function(e) {\r\n pointerDownAction.execute({\r\n element: $(e.target),\r\n event: e\r\n })\r\n }))\r\n },\r\n _itemClickHandler: function(e, args, config) {\r\n this._itemDXEventHandler(e, \"onItemClick\", args, config)\r\n },\r\n _itemPointerDownHandler: function(e) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n this._itemFocusHandler = function() {\r\n clearTimeout(this._itemFocusTimeout);\r\n this._itemFocusHandler = null;\r\n if (e.isDefaultPrevented()) {\r\n return\r\n }\r\n var $target = $(e.target);\r\n var $closestItem = $target.closest(this._itemElements());\r\n var $closestFocusable = this._closestFocusable($target);\r\n if ($closestItem.length && $closestFocusable && -1 !== inArray($closestFocusable.get(0), this._focusTarget())) {\r\n this.option(\"focusedElement\", getPublicElement($closestItem))\r\n }\r\n }.bind(this);\r\n this._itemFocusTimeout = setTimeout(this._forcePointerDownFocus.bind(this))\r\n },\r\n _closestFocusable: function($target) {\r\n if ($target.is(focusable)) {\r\n return $target\r\n } else {\r\n $target = $target.parent();\r\n while ($target.length && !domAdapter.isDocument($target.get(0))) {\r\n if ($target.is(focusable)) {\r\n return $target\r\n }\r\n $target = $target.parent()\r\n }\r\n }\r\n },\r\n _forcePointerDownFocus: function() {\r\n this._itemFocusHandler && this._itemFocusHandler()\r\n },\r\n _updateFocusState: function() {\r\n this.callBase.apply(this, arguments);\r\n this._forcePointerDownFocus()\r\n },\r\n _attachHoldEvent: function() {\r\n var $itemContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n var eventName = addNamespace(holdEvent.name, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, itemSelector);\r\n eventsEngine.on($itemContainer, eventName, itemSelector, {\r\n timeout: this._getHoldTimeout()\r\n }, this._itemHoldHandler.bind(this))\r\n },\r\n _getHoldTimeout: function() {\r\n return this.option(\"itemHoldTimeout\")\r\n },\r\n _shouldFireHoldEvent: function() {\r\n return this.hasActionSubscription(\"onItemHold\")\r\n },\r\n _itemHoldHandler: function(e) {\r\n if (this._shouldFireHoldEvent()) {\r\n this._itemDXEventHandler(e, \"onItemHold\")\r\n } else {\r\n e.cancel = true\r\n }\r\n },\r\n _attachContextMenuEvent: function() {\r\n var $itemContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n var eventName = addNamespace(contextMenuEventName, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, itemSelector);\r\n eventsEngine.on($itemContainer, eventName, itemSelector, this._itemContextMenuHandler.bind(this))\r\n },\r\n _shouldFireContextMenuEvent: function() {\r\n return this.hasActionSubscription(\"onItemContextMenu\")\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n if (this._shouldFireContextMenuEvent()) {\r\n this._itemDXEventHandler(e, \"onItemContextMenu\")\r\n } else {\r\n e.cancel = true\r\n }\r\n },\r\n _renderContentImpl: function() {\r\n var items = this.option(\"items\") || [];\r\n if (this._renderedItemsCount) {\r\n this._renderItems(items.slice(this._renderedItemsCount))\r\n } else {\r\n this._renderItems(items)\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (items.length) {\r\n each(items, function(index, itemData) {\r\n this._renderItem(this._renderedItemsCount + index, itemData)\r\n }.bind(this))\r\n }\r\n this._renderEmptyMessage()\r\n },\r\n _renderItem: function(index, itemData, $container, $itemToReplace) {\r\n $container = $container || this._itemContainer();\r\n var $itemFrame = this._renderItemFrame(index, itemData, $container, $itemToReplace);\r\n this._setElementData($itemFrame, itemData, index);\r\n $itemFrame.attr(this.option(\"_itemAttributes\"));\r\n this._attachItemClickEvent(itemData, $itemFrame);\r\n var $itemContent = this._getItemContent($itemFrame);\r\n var renderContentPromise = this._renderItemContent({\r\n index: index,\r\n itemData: itemData,\r\n container: getPublicElement($itemContent),\r\n contentClass: this._itemContentClass(),\r\n defaultTemplateName: this.option(\"itemTemplate\")\r\n });\r\n var that = this;\r\n when(renderContentPromise).done((function($itemContent) {\r\n that._postprocessRenderItem({\r\n itemElement: $itemFrame,\r\n itemContent: $itemContent,\r\n itemData: itemData,\r\n itemIndex: index\r\n });\r\n that._executeItemRenderAction(index, itemData, getPublicElement($itemFrame))\r\n }));\r\n return $itemFrame\r\n },\r\n _getItemContent: function($itemFrame) {\r\n var $itemContent = $itemFrame.find(\".\" + ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n $itemContent.removeClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n return $itemContent\r\n },\r\n _attachItemClickEvent: function(itemData, $itemElement) {\r\n if (!itemData || !itemData.onClick) {\r\n return\r\n }\r\n eventsEngine.on($itemElement, clickEventName, function(e) {\r\n this._itemEventHandlerByHandler($itemElement, itemData.onClick, {\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _renderItemContent: function(args) {\r\n var itemTemplateName = this._getItemTemplateName(args);\r\n var itemTemplate = this._getTemplate(itemTemplateName);\r\n this._addItemContentClasses(args);\r\n var $templateResult = $(this._createItemByTemplate(itemTemplate, args));\r\n if (!$templateResult.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n return args.container\r\n }\r\n return this._renderItemContentByNode(args, $templateResult)\r\n },\r\n _renderItemContentByNode: function(args, $node) {\r\n $(args.container).replaceWith($node);\r\n args.container = getPublicElement($node);\r\n this._addItemContentClasses(args);\r\n return $node\r\n },\r\n _addItemContentClasses: function(args) {\r\n var classes = [ITEM_CLASS + CONTENT_CLASS_POSTFIX, args.contentClass];\r\n $(args.container).addClass(classes.join(\" \"))\r\n },\r\n _appendItemToContainer: function($container, $itemFrame, index) {\r\n $itemFrame.appendTo($container)\r\n },\r\n _renderItemFrame: function(index, itemData, $container, $itemToReplace) {\r\n var $itemFrame = $(\"
\");\r\n new this.constructor.ItemClass($itemFrame, this._itemOptions(), itemData || {});\r\n if ($itemToReplace && $itemToReplace.length) {\r\n $itemToReplace.replaceWith($itemFrame)\r\n } else {\r\n this._appendItemToContainer.call(this, $container, $itemFrame, index)\r\n }\r\n if (this.option(\"useItemTextAsTitle\")) {\r\n var displayValue = this._displayGetter ? this._displayGetter(itemData) : itemData;\r\n $itemFrame.attr(\"title\", displayValue)\r\n }\r\n return $itemFrame\r\n },\r\n _itemOptions: function() {\r\n var that = this;\r\n return {\r\n watchMethod: function() {\r\n return that.option(\"integrationOptions.watchMethod\")\r\n },\r\n owner: that,\r\n fieldGetter: function(field) {\r\n var expr = that.option(field + \"Expr\");\r\n var getter = compileGetter(expr);\r\n return getter\r\n }\r\n }\r\n },\r\n _postprocessRenderItem: noop,\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n this._getItemRenderAction()({\r\n itemElement: itemElement,\r\n itemIndex: index,\r\n itemData: itemData\r\n })\r\n },\r\n _setElementData: function(element, data, index) {\r\n element.addClass([ITEM_CLASS, this._itemClass()].join(\" \")).data(this._itemDataKey(), data).data(this._itemIndexKey(), index)\r\n },\r\n _createItemRenderAction: function() {\r\n return this._itemRenderAction = this._createActionByOption(\"onItemRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n })\r\n },\r\n _getItemRenderAction: function() {\r\n return this._itemRenderAction || this._createItemRenderAction()\r\n },\r\n _getItemTemplateName: function(args) {\r\n var data = args.itemData;\r\n var templateProperty = args.templateProperty || this.option(\"itemTemplateProperty\");\r\n var template = data && data[templateProperty];\r\n return template || args.defaultTemplateName\r\n },\r\n _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n return itemTemplate.render({\r\n model: renderArgs.itemData,\r\n container: renderArgs.container,\r\n index: renderArgs.index\r\n })\r\n },\r\n _emptyMessageContainer: function() {\r\n return this._itemContainer()\r\n },\r\n _renderEmptyMessage: function(items) {\r\n items = items || this.option(\"items\");\r\n var noDataText = this.option(\"noDataText\");\r\n var hideNoData = !noDataText || items && items.length || this._isDataSourceLoading();\r\n if (hideNoData && this._$noData) {\r\n this._$noData.remove();\r\n this._$noData = null;\r\n this.setAria(\"label\", void 0)\r\n }\r\n if (!hideNoData) {\r\n this._$noData = this._$noData || $(\"
\").addClass(\"dx-empty-message\");\r\n this._$noData.appendTo(this._emptyMessageContainer()).html(noDataText);\r\n this.setAria(\"label\", noDataText)\r\n }\r\n this.$element().toggleClass(EMPTY_COLLECTION, !hideNoData)\r\n },\r\n _itemDXEventHandler: function(dxEvent, handlerOptionName, actionArgs, actionConfig) {\r\n this._itemEventHandler(dxEvent.target, handlerOptionName, extend(actionArgs, {\r\n event: dxEvent\r\n }), actionConfig)\r\n },\r\n _itemEventHandler: function(initiator, handlerOptionName, actionArgs, actionConfig) {\r\n var action = this._createActionByOption(handlerOptionName, extend({\r\n validatingTargetName: \"itemElement\"\r\n }, actionConfig));\r\n return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n },\r\n _itemEventHandlerByHandler: function(initiator, handler, actionArgs, actionConfig) {\r\n var action = this._createAction(handler, extend({\r\n validatingTargetName: \"itemElement\"\r\n }, actionConfig));\r\n return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n },\r\n _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n var $itemElement = this._closestItemElement($(initiator));\r\n var args = extend({}, actionArgs);\r\n return action(extend(actionArgs, this._extendActionArgs($itemElement), args))\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n return {\r\n itemElement: getPublicElement($itemElement),\r\n itemIndex: this._itemElements().index($itemElement),\r\n itemData: this._getItemData($itemElement)\r\n }\r\n },\r\n _closestItemElement: function($element) {\r\n return $($element).closest(this._itemSelector())\r\n },\r\n _getItemData: function(itemElement) {\r\n return $(itemElement).data(this._itemDataKey())\r\n },\r\n _getSummaryItemsWidth: function(items, includeMargin) {\r\n var result = 0;\r\n if (items) {\r\n each(items, (function(_, item) {\r\n result += $(item).outerWidth(includeMargin || false)\r\n }))\r\n }\r\n return result\r\n },\r\n getFocusedItemId: function() {\r\n if (!this._focusedItemId) {\r\n this._focusedItemId = \"dx-\" + new Guid\r\n }\r\n return this._focusedItemId\r\n },\r\n itemElements: function() {\r\n return this._itemElements()\r\n },\r\n itemsContainer: function() {\r\n return this._itemContainer()\r\n }\r\n}).include(DataHelperMixin);\r\nCollectionWidget.ItemClass = CollectionWidgetItem;\r\nexport default CollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport BaseCollectionWidget from \"./ui.collection_widget.base\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport PlainEditStrategy from \"./ui.collection_widget.edit.strategy.plain\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport {\r\n normalizeLoadResult\r\n} from \"../../data/data_source/utils\";\r\nimport Selection from \"../selection/selection\";\r\nimport {\r\n when,\r\n Deferred,\r\n fromPromise\r\n} from \"../../core/utils/deferred\";\r\nvar ITEM_DELETING_DATA_KEY = \"dxItemDeleting\";\r\nvar NOT_EXISTING_INDEX = -1;\r\nvar indexExists = function(index) {\r\n return index !== NOT_EXISTING_INDEX\r\n};\r\nvar CollectionWidget = BaseCollectionWidget.inherit({\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n selectedItem: true\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectionMode: \"none\",\r\n selectionRequired: false,\r\n selectionByClick: true,\r\n selectedItems: [],\r\n selectedItemKeys: [],\r\n maxFilterLengthInRequest: 1500,\r\n keyExpr: null,\r\n selectedIndex: NOT_EXISTING_INDEX,\r\n selectedItem: null,\r\n onSelectionChanged: null,\r\n onItemReordered: null,\r\n onItemDeleting: null,\r\n onItemDeleted: null\r\n })\r\n },\r\n ctor: function(element, options) {\r\n this._userOptions = options || {};\r\n this.callBase(element, options)\r\n },\r\n _init: function() {\r\n this._initEditStrategy();\r\n this.callBase();\r\n this._initKeyGetter();\r\n this._initSelectionModule()\r\n },\r\n _initKeyGetter: function() {\r\n this._keyGetter = compileGetter(this.option(\"keyExpr\"))\r\n },\r\n _getKeysByItems: function(selectedItems) {\r\n return this._editStrategy.getKeysByItems(selectedItems)\r\n },\r\n _getItemsByKeys: function(selectedItemKeys, selectedItems) {\r\n return this._editStrategy.getItemsByKeys(selectedItemKeys, selectedItems)\r\n },\r\n _getKeyByIndex: function(index) {\r\n return this._editStrategy.getKeyByIndex(index)\r\n },\r\n _getIndexByKey: function(key) {\r\n return this._editStrategy.getIndexByKey(key)\r\n },\r\n _getIndexByItemData: function(itemData) {\r\n return this._editStrategy.getIndexByItemData(itemData)\r\n },\r\n _isKeySpecified: function() {\r\n return !!(this._dataSource && this._dataSource.key())\r\n },\r\n _getCombinedFilter: function() {\r\n return this._dataSource && this._dataSource.filter()\r\n },\r\n key: function() {\r\n if (this.option(\"keyExpr\")) {\r\n return this.option(\"keyExpr\")\r\n }\r\n return this._dataSource && this._dataSource.key()\r\n },\r\n keyOf: function(item) {\r\n var key = item;\r\n var store = this._dataSource && this._dataSource.store();\r\n if (this.option(\"keyExpr\")) {\r\n key = this._keyGetter(item)\r\n } else if (store) {\r\n key = store.keyOf(item)\r\n }\r\n return key\r\n },\r\n _nullValueSelectionSupported: function() {\r\n return false\r\n },\r\n _initSelectionModule: function() {\r\n var that = this;\r\n var itemsGetter = that._editStrategy.itemsGetter;\r\n this._selection = new Selection({\r\n allowNullValue: this._nullValueSelectionSupported(),\r\n mode: this.option(\"selectionMode\"),\r\n maxFilterLengthInRequest: this.option(\"maxFilterLengthInRequest\"),\r\n equalByReference: !this._isKeySpecified(),\r\n onSelectionChanged: function(args) {\r\n if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n that.option(\"selectedItems\", that._getItemsByKeys(args.selectedItemKeys, args.selectedItems));\r\n that._updateSelectedItems(args)\r\n }\r\n },\r\n filter: that._getCombinedFilter.bind(that),\r\n totalCount: function() {\r\n var items = that.option(\"items\");\r\n var dataSource = that._dataSource;\r\n return dataSource && dataSource.totalCount() >= 0 ? dataSource.totalCount() : items.length\r\n },\r\n key: that.key.bind(that),\r\n keyOf: that.keyOf.bind(that),\r\n load: function(options) {\r\n if (that._dataSource) {\r\n var loadOptions = that._dataSource.loadOptions();\r\n options.customQueryParams = loadOptions.customQueryParams;\r\n options.userData = that._dataSource._userData\r\n }\r\n var store = that._dataSource && that._dataSource.store();\r\n if (store) {\r\n return store.load(options).done((function(loadResult) {\r\n if (that._disposed) {\r\n return\r\n }\r\n var items = normalizeLoadResult(loadResult).data;\r\n that._dataSource._applyMapFunction(items)\r\n }))\r\n } else {\r\n return (new Deferred).resolve(this.plainItems())\r\n }\r\n },\r\n dataFields: function() {\r\n return that._dataSource && that._dataSource.select()\r\n },\r\n plainItems: itemsGetter.bind(that._editStrategy)\r\n })\r\n },\r\n _initEditStrategy: function() {\r\n var Strategy = PlainEditStrategy;\r\n this._editStrategy = new Strategy(this)\r\n },\r\n _getSelectedItemIndices: function(keys) {\r\n var that = this;\r\n var indices = [];\r\n keys = keys || this._selection.getSelectedItemKeys();\r\n that._editStrategy.beginCache();\r\n each(keys, (function(_, key) {\r\n var selectedIndex = that._getIndexByKey(key);\r\n if (indexExists(selectedIndex)) {\r\n indices.push(selectedIndex)\r\n }\r\n }));\r\n that._editStrategy.endCache();\r\n return indices\r\n },\r\n _initMarkup: function() {\r\n this._rendering = true;\r\n if (!this._dataSource || !this._dataSource.isLoading()) {\r\n this._syncSelectionOptions().done(() => this._normalizeSelectedItems())\r\n }\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._rendering = false\r\n },\r\n _fireContentReadyAction: function() {\r\n this._rendering = false;\r\n this._rendered = true;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _syncSelectionOptions: function(byOption) {\r\n byOption = byOption || this._chooseSelectOption();\r\n var selectedItem;\r\n var selectedIndex;\r\n var selectedItemKeys;\r\n var selectedItems;\r\n switch (byOption) {\r\n case \"selectedIndex\":\r\n selectedItem = this._editStrategy.getItemDataByIndex(this.option(\"selectedIndex\"));\r\n if (isDefined(selectedItem)) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n } else {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n break;\r\n case \"selectedItems\":\r\n selectedItems = this.option(\"selectedItems\") || [];\r\n selectedIndex = selectedItems.length ? this._editStrategy.getIndexByItemData(selectedItems[0]) : NOT_EXISTING_INDEX;\r\n if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItems[0]);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems(selectedItems));\r\n break;\r\n case \"selectedItem\":\r\n selectedItem = this.option(\"selectedItem\");\r\n selectedIndex = this._editStrategy.getIndexByItemData(selectedItem);\r\n if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n if (isDefined(selectedItem)) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n } else {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", NOT_EXISTING_INDEX)\r\n }\r\n break;\r\n case \"selectedItemKeys\":\r\n selectedItemKeys = this.option(\"selectedItemKeys\");\r\n if (this.option(\"selectionRequired\")) {\r\n var selectedItemIndex = this._getIndexByKey(selectedItemKeys[0]);\r\n if (!indexExists(selectedItemIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n }\r\n return this._selection.setSelection(selectedItemKeys)\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n _chooseSelectOption: function() {\r\n var optionName = \"selectedIndex\";\r\n var isOptionDefined = function(optionName) {\r\n var optionValue = this.option(optionName);\r\n var length = isDefined(optionValue) && optionValue.length;\r\n return length || optionName in this._userOptions\r\n }.bind(this);\r\n if (isOptionDefined(\"selectedItems\")) {\r\n optionName = \"selectedItems\"\r\n } else if (isOptionDefined(\"selectedItem\")) {\r\n optionName = \"selectedItem\"\r\n } else if (isOptionDefined(\"selectedItemKeys\")) {\r\n optionName = \"selectedItemKeys\"\r\n }\r\n return optionName\r\n },\r\n _compareKeys: function(oldKeys, newKeys) {\r\n if (oldKeys.length !== newKeys.length) {\r\n return false\r\n }\r\n for (var i = 0; i < newKeys.length; i++) {\r\n if (oldKeys[i] !== newKeys[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _normalizeSelectedItems: function() {\r\n if (\"none\" === this.option(\"selectionMode\")) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._syncSelectionOptions(\"selectedItems\")\r\n } else if (\"single\" === this.option(\"selectionMode\")) {\r\n var newSelection = this.option(\"selectedItems\");\r\n if (newSelection.length > 1 || !newSelection.length && this.option(\"selectionRequired\") && this.option(\"items\") && this.option(\"items\").length) {\r\n var currentSelection = this._selection.getSelectedItems();\r\n var normalizedSelection = void 0 === newSelection[0] ? currentSelection[0] : newSelection[0];\r\n if (void 0 === normalizedSelection) {\r\n normalizedSelection = this._editStrategy.itemsGetter()[0]\r\n }\r\n if (this.option(\"grouped\") && normalizedSelection && normalizedSelection.items) {\r\n normalizedSelection.items = [normalizedSelection.items[0]]\r\n }\r\n this._selection.setSelection(this._getKeysByItems([normalizedSelection]));\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [normalizedSelection]);\r\n return this._syncSelectionOptions(\"selectedItems\")\r\n } else {\r\n this._selection.setSelection(this._getKeysByItems(newSelection))\r\n }\r\n } else {\r\n var newKeys = this._getKeysByItems(this.option(\"selectedItems\"));\r\n var oldKeys = this._selection.getSelectedItemKeys();\r\n if (!this._compareKeys(oldKeys, newKeys)) {\r\n this._selection.setSelection(newKeys)\r\n }\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n _itemClickHandler: function(e) {\r\n this._createAction(function(e) {\r\n this._itemSelectHandler(e.event)\r\n }.bind(this), {\r\n validatingTargetName: \"itemElement\"\r\n })({\r\n itemElement: $(e.currentTarget),\r\n event: e\r\n });\r\n this.callBase.apply(this, arguments)\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (!this.option(\"selectionByClick\")) {\r\n return\r\n }\r\n var $itemElement = e.currentTarget;\r\n if (this.isItemSelected($itemElement)) {\r\n this.unselectItem(e.currentTarget)\r\n } else {\r\n this.selectItem(e.currentTarget)\r\n }\r\n },\r\n _selectedItemElement: function(index) {\r\n return this._itemElements().eq(index)\r\n },\r\n _postprocessRenderItem: function(args) {\r\n if (\"none\" !== this.option(\"selectionMode\")) {\r\n var $itemElement = $(args.itemElement);\r\n var normalizedItemIndex = this._editStrategy.getNormalizedIndex($itemElement);\r\n var isItemSelected = this._isItemSelected(normalizedItemIndex);\r\n this._processSelectableItem($itemElement, isItemSelected)\r\n }\r\n },\r\n _processSelectableItem: function($itemElement, isSelected) {\r\n $itemElement.toggleClass(this._selectedItemClass(), isSelected);\r\n this._setAriaSelected($itemElement, String(isSelected))\r\n },\r\n _updateSelectedItems: function(args) {\r\n var that = this;\r\n var addedItemKeys = args.addedItemKeys;\r\n var removedItemKeys = args.removedItemKeys;\r\n if (that._rendered && (addedItemKeys.length || removedItemKeys.length)) {\r\n var selectionChangePromise = that._selectionChangePromise;\r\n if (!that._rendering) {\r\n var addedSelection = [];\r\n var normalizedIndex;\r\n var removedSelection = [];\r\n that._editStrategy.beginCache();\r\n for (var i = 0; i < addedItemKeys.length; i++) {\r\n normalizedIndex = that._getIndexByKey(addedItemKeys[i]);\r\n addedSelection.push(normalizedIndex);\r\n that._addSelection(normalizedIndex)\r\n }\r\n for (var _i = 0; _i < removedItemKeys.length; _i++) {\r\n normalizedIndex = that._getIndexByKey(removedItemKeys[_i]);\r\n removedSelection.push(normalizedIndex);\r\n that._removeSelection(normalizedIndex)\r\n }\r\n that._editStrategy.endCache();\r\n that._updateSelection(addedSelection, removedSelection)\r\n }\r\n when(selectionChangePromise).done((function() {\r\n that._fireSelectionChangeEvent(args.addedItems, args.removedItems)\r\n }))\r\n }\r\n },\r\n _fireSelectionChangeEvent: function(addedItems, removedItems) {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })({\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n _updateSelection: noop,\r\n _setAriaSelected: function($target, value) {\r\n this.setAria(\"selected\", value, $target)\r\n },\r\n _removeSelection: function(normalizedIndex) {\r\n var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n if (indexExists(normalizedIndex)) {\r\n this._processSelectableItem($itemElement, false);\r\n eventsEngine.triggerHandler($itemElement, \"stateChanged\", false)\r\n }\r\n },\r\n _addSelection: function(normalizedIndex) {\r\n var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n if (indexExists(normalizedIndex)) {\r\n this._processSelectableItem($itemElement, true);\r\n eventsEngine.triggerHandler($itemElement, \"stateChanged\", true)\r\n }\r\n },\r\n _isItemSelected: function(index) {\r\n var key = this._getKeyByIndex(index);\r\n return this._selection.isItemSelected(key, {\r\n checkPending: true\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"selectionMode\":\r\n this._invalidate();\r\n break;\r\n case \"dataSource\":\r\n if (!args.value || Array.isArray(args.value) && !args.value.length) {\r\n this.option(\"selectedItemKeys\", [])\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"selectedIndex\":\r\n case \"selectedItem\":\r\n case \"selectedItems\":\r\n case \"selectedItemKeys\":\r\n this._syncSelectionOptions(args.name).done(() => this._normalizeSelectedItems());\r\n break;\r\n case \"keyExpr\":\r\n this._initKeyGetter();\r\n break;\r\n case \"selectionRequired\":\r\n this._normalizeSelectedItems();\r\n break;\r\n case \"selectionByClick\":\r\n case \"onSelectionChanged\":\r\n case \"onItemDeleting\":\r\n case \"onItemDeleted\":\r\n case \"onItemReordered\":\r\n case \"maxFilterLengthInRequest\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearSelectedItems: function() {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._syncSelectionOptions(\"selectedItems\")\r\n },\r\n _waitDeletingPrepare: function($itemElement) {\r\n if ($itemElement.data(ITEM_DELETING_DATA_KEY)) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n $itemElement.data(ITEM_DELETING_DATA_KEY, true);\r\n var deferred = new Deferred;\r\n var deletingActionArgs = {\r\n cancel: false\r\n };\r\n var deletePromise = this._itemEventHandler($itemElement, \"onItemDeleting\", deletingActionArgs, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n when(deletePromise).always(function(value) {\r\n var deletePromiseExists = !deletePromise;\r\n var deletePromiseResolved = !deletePromiseExists && \"resolved\" === deletePromise.state();\r\n var argumentsSpecified = !!arguments.length;\r\n var shouldDelete = deletePromiseExists || deletePromiseResolved && !argumentsSpecified || deletePromiseResolved && value;\r\n when(fromPromise(deletingActionArgs.cancel)).always((function() {\r\n $itemElement.data(ITEM_DELETING_DATA_KEY, false)\r\n })).done((function(cancel) {\r\n shouldDelete && !cancel ? deferred.resolve() : deferred.reject()\r\n })).fail(deferred.reject)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _deleteItemFromDS: function($item) {\r\n if (!this._dataSource) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n var deferred = new Deferred;\r\n var disabledState = this.option(\"disabled\");\r\n var dataStore = this._dataSource.store();\r\n this.option(\"disabled\", true);\r\n if (!dataStore.remove) {\r\n throw errors.Error(\"E1011\")\r\n }\r\n dataStore.remove(dataStore.keyOf(this._getItemData($item))).done((function(key) {\r\n if (void 0 !== key) {\r\n deferred.resolve()\r\n } else {\r\n deferred.reject()\r\n }\r\n })).fail((function() {\r\n deferred.reject()\r\n }));\r\n deferred.always(function() {\r\n this.option(\"disabled\", disabledState)\r\n }.bind(this));\r\n return deferred\r\n },\r\n _tryRefreshLastPage: function() {\r\n var deferred = new Deferred;\r\n if (this._isLastPage() || this.option(\"grouped\")) {\r\n deferred.resolve()\r\n } else {\r\n this._refreshLastPage().done((function() {\r\n deferred.resolve()\r\n }))\r\n }\r\n return deferred.promise()\r\n },\r\n _refreshLastPage: function() {\r\n this._expectLastItemLoading();\r\n return this._dataSource.load()\r\n },\r\n _updateSelectionAfterDelete: function(index) {\r\n var key = this._getKeyByIndex(index);\r\n this._selection.deselect([key])\r\n },\r\n _updateIndicesAfterIndex: function(index) {\r\n var itemElements = this._itemElements();\r\n for (var i = index + 1; i < itemElements.length; i++) {\r\n $(itemElements[i]).data(this._itemIndexKey(), i - 1)\r\n }\r\n },\r\n _simulateOptionChange: function(optionName) {\r\n var optionValue = this.option(optionName);\r\n if (optionValue instanceof DataSource) {\r\n return\r\n }\r\n this._optionChangedAction({\r\n name: optionName,\r\n fullName: optionName,\r\n value: optionValue\r\n })\r\n },\r\n isItemSelected: function(itemElement) {\r\n return this._isItemSelected(this._editStrategy.getNormalizedIndex(itemElement))\r\n },\r\n selectItem: function(itemElement) {\r\n if (\"none\" === this.option(\"selectionMode\")) {\r\n return\r\n }\r\n var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n if (!indexExists(itemIndex)) {\r\n return\r\n }\r\n var key = this._getKeyByIndex(itemIndex);\r\n if (this._selection.isItemSelected(key)) {\r\n return\r\n }\r\n if (\"single\" === this.option(\"selectionMode\")) {\r\n this._selection.setSelection([key])\r\n } else {\r\n var selectedItemKeys = this.option(\"selectedItemKeys\") || [];\r\n this._selection.setSelection([...selectedItemKeys, key])\r\n }\r\n },\r\n unselectItem: function(itemElement) {\r\n var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n if (!indexExists(itemIndex)) {\r\n return\r\n }\r\n var selectedItemKeys = this._selection.getSelectedItemKeys();\r\n if (this.option(\"selectionRequired\") && selectedItemKeys.length <= 1) {\r\n return\r\n }\r\n var key = this._getKeyByIndex(itemIndex);\r\n if (!this._selection.isItemSelected(key, {\r\n checkPending: true\r\n })) {\r\n return\r\n }\r\n this._selection.deselect([key])\r\n },\r\n _deleteItemElementByIndex: function(index) {\r\n this._updateSelectionAfterDelete(index);\r\n this._updateIndicesAfterIndex(index);\r\n this._editStrategy.deleteItemAtIndex(index)\r\n },\r\n _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n var changingOption = this._dataSource ? \"dataSource\" : \"items\";\r\n this._simulateOptionChange(changingOption);\r\n this._itemEventHandler($item, \"onItemDeleted\", deletedActionArgs, {\r\n beforeExecute: function() {\r\n $item.remove()\r\n },\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this._renderEmptyMessage()\r\n },\r\n deleteItem: function(itemElement) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n var index = this._editStrategy.getNormalizedIndex(itemElement);\r\n var itemResponseWaitClass = this._itemResponseWaitClass();\r\n if (indexExists(index)) {\r\n this._waitDeletingPrepare($item).done((function() {\r\n $item.addClass(itemResponseWaitClass);\r\n var deletedActionArgs = that._extendActionArgs($item);\r\n that._deleteItemFromDS($item).done((function() {\r\n that._deleteItemElementByIndex(index);\r\n that._afterItemElementDeleted($item, deletedActionArgs);\r\n that._tryRefreshLastPage().done((function() {\r\n deferred.resolveWith(that)\r\n }))\r\n })).fail((function() {\r\n $item.removeClass(itemResponseWaitClass);\r\n deferred.rejectWith(that)\r\n }))\r\n })).fail((function() {\r\n deferred.rejectWith(that)\r\n }))\r\n } else {\r\n deferred.rejectWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var deferred = new Deferred;\r\n var that = this;\r\n var strategy = this._editStrategy;\r\n var $movingItem = strategy.getItemElement(itemElement);\r\n var $destinationItem = strategy.getItemElement(toItemElement);\r\n var movingIndex = strategy.getNormalizedIndex(itemElement);\r\n var destinationIndex = strategy.getNormalizedIndex(toItemElement);\r\n var changingOption = this._dataSource ? \"dataSource\" : \"items\";\r\n var canMoveItems = indexExists(movingIndex) && indexExists(destinationIndex) && movingIndex !== destinationIndex;\r\n if (canMoveItems) {\r\n deferred.resolveWith(this)\r\n } else {\r\n deferred.rejectWith(this)\r\n }\r\n return deferred.promise().done((function() {\r\n $destinationItem[strategy.itemPlacementFunc(movingIndex, destinationIndex)]($movingItem);\r\n strategy.moveItemAtIndexToIndex(movingIndex, destinationIndex);\r\n this._updateIndicesAfterIndex(movingIndex);\r\n that.option(\"selectedItems\", that._getItemsByKeys(that._selection.getSelectedItemKeys(), that._selection.getSelectedItems()));\r\n if (\"items\" === changingOption) {\r\n that._simulateOptionChange(changingOption)\r\n }\r\n that._itemEventHandler($movingItem, \"onItemReordered\", {\r\n fromIndex: strategy.getIndex(movingIndex),\r\n toIndex: strategy.getIndex(destinationIndex)\r\n }, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }))\r\n }\r\n});\r\nexport default CollectionWidget;\r\n","/**\r\n * DevExtreme (esm/core/templates/template_engine_registry.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isString\r\n} from \"../utils/type\";\r\nimport errors from \"../errors\";\r\nvar templateEngines = {};\r\nvar currentTemplateEngine;\r\nexport function registerTemplateEngine(name, templateEngine) {\r\n templateEngines[name] = templateEngine\r\n}\r\nexport function setTemplateEngine(templateEngine) {\r\n if (isString(templateEngine)) {\r\n currentTemplateEngine = templateEngines[templateEngine];\r\n if (!currentTemplateEngine) {\r\n throw errors.Error(\"E0020\", templateEngine)\r\n }\r\n } else {\r\n currentTemplateEngine = templateEngine\r\n }\r\n}\r\nexport function getCurrentTemplateEngine() {\r\n return currentTemplateEngine\r\n}\r\n","/**\r\n * DevExtreme (esm/core/templates/template_engines.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extractTemplateMarkup\r\n} from \"../utils/dom\";\r\nimport {\r\n registerTemplateEngine\r\n} from \"./template_engine_registry\";\r\nregisterTemplateEngine(\"jquery-tmpl\", {\r\n compile: element => extractTemplateMarkup(element),\r\n render: (template, data) => jQuery.tmpl(template, data)\r\n});\r\nregisterTemplateEngine(\"jsrender\", {\r\n compile: element => (jQuery ? jQuery : jsrender).templates(extractTemplateMarkup(element)),\r\n render: (template, data) => template.render(data)\r\n});\r\nregisterTemplateEngine(\"mustache\", {\r\n compile: element => extractTemplateMarkup(element),\r\n render: (template, data) => Mustache.render(template, data)\r\n});\r\nregisterTemplateEngine(\"hogan\", {\r\n compile: element => Hogan.compile(extractTemplateMarkup(element)),\r\n render: (template, data) => template.render(data)\r\n});\r\nregisterTemplateEngine(\"underscore\", {\r\n compile: element => _.template(extractTemplateMarkup(element)),\r\n render: (template, data) => template(data)\r\n});\r\nregisterTemplateEngine(\"handlebars\", {\r\n compile: element => Handlebars.compile(extractTemplateMarkup(element)),\r\n render: (template, data) => template(data)\r\n});\r\nregisterTemplateEngine(\"doT\", {\r\n compile: element => doT.template(extractTemplateMarkup(element)),\r\n render: (template, data) => template(data)\r\n});\r\n","/**\r\n * DevExtreme (esm/core/templates/template.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport {\r\n normalizeTemplateElement\r\n} from \"../utils/dom\";\r\nimport {\r\n getCurrentTemplateEngine,\r\n registerTemplateEngine,\r\n setTemplateEngine\r\n} from \"./template_engine_registry\";\r\nimport \"./template_engines\";\r\nregisterTemplateEngine(\"default\", {\r\n compile: element => normalizeTemplateElement(element),\r\n render: (template, model, index) => template.clone()\r\n});\r\nsetTemplateEngine(\"default\");\r\nexport class Template extends TemplateBase {\r\n constructor(element) {\r\n super();\r\n this._element = element\r\n }\r\n _renderCore(options) {\r\n var transclude = options.transclude;\r\n if (!transclude && !this._compiledTemplate) {\r\n this._compiledTemplate = getCurrentTemplateEngine().compile(this._element)\r\n }\r\n return $(\"
\").append(transclude ? this._element : getCurrentTemplateEngine().render(this._compiledTemplate, options.model, options.index)).contents()\r\n }\r\n source() {\r\n return $(this._element).clone()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/template_manager.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../config\";\r\nimport devices from \"../devices\";\r\nimport Errors from \"../errors\";\r\nimport $ from \"../renderer\";\r\nimport {\r\n ChildDefaultTemplate\r\n} from \"../templates/child_default_template\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../templates/empty_template\";\r\nimport {\r\n Template\r\n} from \"../templates/template\";\r\nimport {\r\n TemplateBase\r\n} from \"../templates/template_base\";\r\nimport {\r\n groupBy\r\n} from \"./array\";\r\nimport {\r\n findBestMatches\r\n} from \"./common\";\r\nimport {\r\n normalizeTemplateElement\r\n} from \"./dom\";\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n isFunction,\r\n isRenderer\r\n} from \"./type\";\r\nexport var findTemplates = (element, name) => {\r\n var templates = $(element).contents().filter(\"[\".concat(\"data-options\", '*=\"').concat(name, '\"]'));\r\n return [].slice.call(templates).map(element => {\r\n var optionsString = $(element).attr(\"data-options\") || \"\";\r\n return {\r\n element: element,\r\n options: config().optionsParser(optionsString)[name]\r\n }\r\n }).filter(template => !!template.options)\r\n};\r\nexport var suitableTemplatesByName = rawTemplates => {\r\n var templatesMap = groupBy(rawTemplates, template => template.options.name);\r\n if (templatesMap[void 0]) {\r\n throw Errors.Error(\"E0023\")\r\n }\r\n var result = {};\r\n Object.keys(templatesMap).forEach(name => {\r\n var _findBestMatches$;\r\n var suitableTemplate = null === (_findBestMatches$ = findBestMatches(devices.current(), templatesMap[name], template => template.options)[0]) || void 0 === _findBestMatches$ ? void 0 : _findBestMatches$.element;\r\n if (suitableTemplate) {\r\n result[name] = suitableTemplate\r\n }\r\n });\r\n return result\r\n};\r\nexport var addOneRenderedCall = template => {\r\n var render = template.render.bind(template);\r\n return extend({}, template, {\r\n render(options) {\r\n var templateResult = render(options);\r\n options && options.onRendered && options.onRendered();\r\n return templateResult\r\n }\r\n })\r\n};\r\nexport var getNormalizedTemplateArgs = options => {\r\n var args = [];\r\n if (\"model\" in options) {\r\n args.push(options.model)\r\n }\r\n if (\"index\" in options) {\r\n args.push(options.index)\r\n }\r\n args.push(options.container);\r\n return args\r\n};\r\nexport var validateTemplateSource = templateSource => \"string\" === typeof templateSource ? normalizeTemplateElement(templateSource) : templateSource;\r\nexport var templateKey = templateSource => isRenderer(templateSource) && templateSource[0] || templateSource;\r\nexport var defaultCreateElement = element => new Template(element);\r\nexport var acquireIntegrationTemplate = (templateSource, templates, isAsyncTemplate, skipTemplates) => {\r\n var integrationTemplate = null;\r\n if (!skipTemplates || -1 === skipTemplates.indexOf(templateSource)) {\r\n integrationTemplate = templates[templateSource];\r\n if (integrationTemplate && !(integrationTemplate instanceof TemplateBase) && !isAsyncTemplate) {\r\n integrationTemplate = addOneRenderedCall(integrationTemplate)\r\n }\r\n }\r\n return integrationTemplate\r\n};\r\nexport var acquireTemplate = (templateSource, createTemplate, templates, isAsyncTemplate, skipTemplates, defaultTemplates) => {\r\n if (null == templateSource) {\r\n return new EmptyTemplate\r\n }\r\n if (templateSource instanceof ChildDefaultTemplate) {\r\n return defaultTemplates[templateSource.name]\r\n }\r\n if (templateSource instanceof TemplateBase) {\r\n return templateSource\r\n }\r\n if (isFunction(templateSource.render) && !isRenderer(templateSource)) {\r\n return isAsyncTemplate ? templateSource : addOneRenderedCall(templateSource)\r\n }\r\n if (templateSource.nodeType || isRenderer(templateSource)) {\r\n return createTemplate($(templateSource))\r\n }\r\n return acquireIntegrationTemplate(templateSource, templates, isAsyncTemplate, skipTemplates) || defaultTemplates[templateSource] || createTemplate(templateSource)\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/cldr-data/first_day_of_week_data.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default {\r\n \"af-NA\": 1,\r\n agq: 1,\r\n ak: 1,\r\n ar: 6,\r\n \"ar-EH\": 1,\r\n \"ar-ER\": 1,\r\n \"ar-KM\": 1,\r\n \"ar-LB\": 1,\r\n \"ar-MA\": 1,\r\n \"ar-MR\": 1,\r\n \"ar-PS\": 1,\r\n \"ar-SO\": 1,\r\n \"ar-SS\": 1,\r\n \"ar-TD\": 1,\r\n \"ar-TN\": 1,\r\n asa: 1,\r\n ast: 1,\r\n az: 1,\r\n \"az-Cyrl\": 1,\r\n bas: 1,\r\n be: 1,\r\n bem: 1,\r\n bez: 1,\r\n bg: 1,\r\n bm: 1,\r\n br: 1,\r\n bs: 1,\r\n \"bs-Cyrl\": 1,\r\n ca: 1,\r\n ce: 1,\r\n cgg: 1,\r\n ckb: 6,\r\n cs: 1,\r\n cy: 1,\r\n da: 1,\r\n de: 1,\r\n dje: 1,\r\n dsb: 1,\r\n dua: 1,\r\n dyo: 1,\r\n ee: 1,\r\n el: 1,\r\n \"en-001\": 1,\r\n \"en-AE\": 6,\r\n \"en-BI\": 1,\r\n \"en-MP\": 1,\r\n \"en-SD\": 6,\r\n eo: 1,\r\n es: 1,\r\n et: 1,\r\n eu: 1,\r\n ewo: 1,\r\n fa: 6,\r\n ff: 1,\r\n \"ff-Adlm\": 1,\r\n fi: 1,\r\n fo: 1,\r\n fr: 1,\r\n \"fr-DJ\": 6,\r\n \"fr-DZ\": 6,\r\n \"fr-SY\": 6,\r\n fur: 1,\r\n fy: 1,\r\n ga: 1,\r\n gd: 1,\r\n gl: 1,\r\n gsw: 1,\r\n gv: 1,\r\n ha: 1,\r\n hr: 1,\r\n hsb: 1,\r\n hu: 1,\r\n hy: 1,\r\n ia: 1,\r\n ig: 1,\r\n is: 1,\r\n it: 1,\r\n jgo: 1,\r\n jmc: 1,\r\n ka: 1,\r\n kab: 6,\r\n kde: 1,\r\n kea: 1,\r\n khq: 1,\r\n kk: 1,\r\n kkj: 1,\r\n kl: 1,\r\n \"ko-KP\": 1,\r\n ksb: 1,\r\n ksf: 1,\r\n ksh: 1,\r\n ku: 1,\r\n kw: 1,\r\n ky: 1,\r\n lag: 1,\r\n lb: 1,\r\n lg: 1,\r\n ln: 1,\r\n lrc: 6,\r\n lt: 1,\r\n lu: 1,\r\n lv: 1,\r\n \"mas-TZ\": 1,\r\n mfe: 1,\r\n mg: 1,\r\n mgo: 1,\r\n mi: 1,\r\n mk: 1,\r\n mn: 1,\r\n ms: 1,\r\n mua: 1,\r\n mzn: 6,\r\n naq: 1,\r\n nds: 1,\r\n nl: 1,\r\n nmg: 1,\r\n nnh: 1,\r\n no: 1,\r\n nus: 1,\r\n nyn: 1,\r\n os: 1,\r\n pcm: 1,\r\n pl: 1,\r\n ps: 6,\r\n \"pt-AO\": 1,\r\n \"pt-CH\": 1,\r\n \"pt-CV\": 1,\r\n \"pt-GQ\": 1,\r\n \"pt-GW\": 1,\r\n \"pt-LU\": 1,\r\n \"pt-ST\": 1,\r\n \"pt-TL\": 1,\r\n \"qu-BO\": 1,\r\n \"qu-EC\": 1,\r\n rm: 1,\r\n rn: 1,\r\n ro: 1,\r\n rof: 1,\r\n ru: 1,\r\n rw: 1,\r\n rwk: 1,\r\n sah: 1,\r\n sbp: 1,\r\n se: 1,\r\n ses: 1,\r\n sg: 1,\r\n shi: 1,\r\n \"shi-Latn\": 1,\r\n si: 1,\r\n sk: 1,\r\n sl: 1,\r\n smn: 1,\r\n so: 1,\r\n \"so-DJ\": 6,\r\n sq: 1,\r\n sr: 1,\r\n \"sr-Latn\": 1,\r\n sv: 1,\r\n sw: 1,\r\n \"ta-LK\": 1,\r\n \"ta-MY\": 1,\r\n teo: 1,\r\n tg: 1,\r\n \"ti-ER\": 1,\r\n tk: 1,\r\n to: 1,\r\n tr: 1,\r\n tt: 1,\r\n twq: 1,\r\n tzm: 1,\r\n uk: 1,\r\n uz: 1,\r\n \"uz-Arab\": 6,\r\n \"uz-Cyrl\": 1,\r\n vai: 1,\r\n \"vai-Latn\": 1,\r\n vi: 1,\r\n vun: 1,\r\n wae: 1,\r\n wo: 1,\r\n xog: 1,\r\n yav: 1,\r\n yi: 1,\r\n yo: 1,\r\n zgh: 1\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/intl/date.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport localizationCoreUtils from \"../core\";\r\nvar SYMBOLS_TO_REMOVE_REGEX = /[\\u200E\\u200F]/g;\r\nvar getIntlFormatter = format => date => {\r\n if (!format.timeZoneName) {\r\n var year = date.getFullYear();\r\n var recognizableAsTwentyCentury = String(year).length < 3;\r\n var temporaryYearValue = recognizableAsTwentyCentury ? year + 400 : year;\r\n var utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));\r\n if (recognizableAsTwentyCentury) {\r\n utcDate.setFullYear(year)\r\n }\r\n var utcFormat = extend({\r\n timeZone: \"UTC\"\r\n }, format);\r\n return formatDateTime(utcDate, utcFormat)\r\n }\r\n return formatDateTime(date, format)\r\n};\r\nvar formattersCache = {};\r\nvar getFormatter = format => {\r\n var key = localizationCoreUtils.locale() + \"/\" + JSON.stringify(format);\r\n if (!formattersCache[key]) {\r\n formattersCache[key] = new Intl.DateTimeFormat(localizationCoreUtils.locale(), format).format\r\n }\r\n return formattersCache[key]\r\n};\r\n\r\nfunction formatDateTime(date, format) {\r\n return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, \"\")\r\n}\r\nvar formatNumber = number => new Intl.NumberFormat(localizationCoreUtils.locale()).format(number);\r\nvar getAlternativeNumeralsMap = (() => {\r\n var numeralsMapCache = {};\r\n return locale => {\r\n if (!(locale in numeralsMapCache)) {\r\n if (\"0\" === formatNumber(0)) {\r\n numeralsMapCache[locale] = false;\r\n return false\r\n }\r\n numeralsMapCache[locale] = {};\r\n for (var i = 0; i < 10; ++i) {\r\n numeralsMapCache[locale][formatNumber(i)] = i\r\n }\r\n }\r\n return numeralsMapCache[locale]\r\n }\r\n})();\r\nvar normalizeNumerals = dateString => {\r\n var alternativeNumeralsMap = getAlternativeNumeralsMap(localizationCoreUtils.locale());\r\n if (!alternativeNumeralsMap) {\r\n return dateString\r\n }\r\n return dateString.split(\"\").map(sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign).join(\"\")\r\n};\r\nvar removeLeadingZeroes = str => str.replace(/(\\D)0+(\\d)/g, \"$1$2\");\r\nvar dateStringEquals = (actual, expected) => removeLeadingZeroes(actual) === removeLeadingZeroes(expected);\r\nvar normalizeMonth = text => text.replace(\"d\\u2019\", \"de \");\r\nvar intlFormats = {\r\n day: {\r\n day: \"numeric\"\r\n },\r\n dayofweek: {\r\n weekday: \"long\"\r\n },\r\n longdate: {\r\n weekday: \"long\",\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\"\r\n },\r\n longdatelongtime: {\r\n weekday: \"long\",\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n second: \"numeric\"\r\n },\r\n longtime: {\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n second: \"numeric\"\r\n },\r\n month: {\r\n month: \"long\"\r\n },\r\n monthandday: {\r\n month: \"long\",\r\n day: \"numeric\"\r\n },\r\n monthandyear: {\r\n year: \"numeric\",\r\n month: \"long\"\r\n },\r\n shortdate: {},\r\n shorttime: {\r\n hour: \"numeric\",\r\n minute: \"numeric\"\r\n },\r\n shortyear: {\r\n year: \"2-digit\"\r\n },\r\n year: {\r\n year: \"numeric\"\r\n }\r\n};\r\nObject.defineProperty(intlFormats, \"shortdateshorttime\", {\r\n get: function() {\r\n var defaultOptions = Intl.DateTimeFormat(localizationCoreUtils.locale()).resolvedOptions();\r\n return {\r\n year: defaultOptions.year,\r\n month: defaultOptions.month,\r\n day: defaultOptions.day,\r\n hour: \"numeric\",\r\n minute: \"numeric\"\r\n }\r\n }\r\n});\r\nvar getIntlFormat = format => \"string\" === typeof format && intlFormats[format.toLowerCase()];\r\nvar monthNameStrategies = {\r\n standalone: function(monthIndex, monthFormat) {\r\n var date = new Date(1999, monthIndex, 13, 1);\r\n var dateString = getIntlFormatter({\r\n month: monthFormat\r\n })(date);\r\n return dateString\r\n },\r\n format: function(monthIndex, monthFormat) {\r\n var date = new Date(0, monthIndex, 13, 1);\r\n var dateString = normalizeMonth(getIntlFormatter({\r\n day: \"numeric\",\r\n month: monthFormat\r\n })(date));\r\n var parts = dateString.split(\" \").filter(part => part.indexOf(\"13\") < 0);\r\n if (1 === parts.length) {\r\n return parts[0]\r\n } else if (2 === parts.length) {\r\n return parts[0].length > parts[1].length ? parts[0] : parts[1]\r\n }\r\n return monthNameStrategies.standalone(monthIndex, monthFormat)\r\n }\r\n};\r\nexport default {\r\n engine: function() {\r\n return \"intl\"\r\n },\r\n getMonthNames: function(format, type) {\r\n var monthFormat = {\r\n wide: \"long\",\r\n abbreviated: \"short\",\r\n narrow: \"narrow\"\r\n } [format || \"wide\"];\r\n type = \"format\" === type ? type : \"standalone\";\r\n return Array.apply(null, new Array(12)).map((_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat))\r\n },\r\n getDayNames: function(format) {\r\n var result = (format => Array.apply(null, new Array(7)).map((_, dayIndex) => getIntlFormatter({\r\n weekday: format\r\n })(new Date(0, 0, dayIndex))))({\r\n wide: \"long\",\r\n abbreviated: \"short\",\r\n short: \"narrow\",\r\n narrow: \"narrow\"\r\n } [format || \"wide\"]);\r\n return result\r\n },\r\n getPeriodNames: function() {\r\n var hour12Formatter = getIntlFormatter({\r\n hour: \"numeric\",\r\n hour12: true\r\n });\r\n return [1, 13].map(hours => {\r\n var hourNumberText = formatNumber(1);\r\n var timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);\r\n if (2 !== timeParts.length) {\r\n return \"\"\r\n }\r\n var biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];\r\n return biggerPart.trim()\r\n })\r\n },\r\n format: function(date, _format) {\r\n if (!date) {\r\n return\r\n }\r\n if (!_format) {\r\n return date\r\n }\r\n if (\"function\" !== typeof _format && !_format.formatter) {\r\n _format = _format.type || _format\r\n }\r\n var intlFormat = getIntlFormat(_format);\r\n if (intlFormat) {\r\n return getIntlFormatter(intlFormat)(date)\r\n }\r\n var formatType = typeof _format;\r\n if (_format.formatter || \"function\" === formatType || \"string\" === formatType) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return getIntlFormatter(_format)(date)\r\n },\r\n parse: function(dateString, format) {\r\n var formatter;\r\n if (format && !format.parser && \"string\" === typeof dateString) {\r\n dateString = normalizeMonth(dateString);\r\n formatter = date => normalizeMonth(this.format(date, format))\r\n }\r\n return this.callBase(dateString, formatter || format)\r\n },\r\n _parseDateBySimpleFormat: function(dateString, format) {\r\n dateString = normalizeNumerals(dateString);\r\n var formatParts = this.getFormatParts(format);\r\n var dateParts = dateString.split(/\\D+/).filter(part => part.length > 0);\r\n if (formatParts.length !== dateParts.length) {\r\n return\r\n }\r\n var dateArgs = this._generateDateArgs(formatParts, dateParts);\r\n var constructValidDate = ampmShift => {\r\n var parsedDate = ((dateArgs, ampmShift) => {\r\n var hoursShift = ampmShift ? 12 : 0;\r\n return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)\r\n })(dateArgs, ampmShift);\r\n if (dateStringEquals(normalizeNumerals(this.format(parsedDate, format)), dateString)) {\r\n return parsedDate\r\n }\r\n };\r\n return constructValidDate(false) || constructValidDate(true)\r\n },\r\n _generateDateArgs: function(formatParts, dateParts) {\r\n var currentDate = new Date;\r\n var dateArgs = {\r\n year: currentDate.getFullYear(),\r\n month: currentDate.getMonth(),\r\n day: currentDate.getDate(),\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0\r\n };\r\n formatParts.forEach((formatPart, index) => {\r\n var datePart = dateParts[index];\r\n var parsed = parseInt(datePart, 10);\r\n if (\"month\" === formatPart) {\r\n parsed -= 1\r\n }\r\n dateArgs[formatPart] = parsed\r\n });\r\n return dateArgs\r\n },\r\n formatUsesMonthName: function(format) {\r\n if (\"object\" === typeof format && !(format.type || format.format)) {\r\n return \"long\" === format.month\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n formatUsesDayName: function(format) {\r\n if (\"object\" === typeof format && !(format.type || format.format)) {\r\n return \"long\" === format.weekday\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getTimeSeparator: function() {\r\n return normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), {\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n hour12: false\r\n })).replace(/\\d/g, \"\")\r\n },\r\n getFormatParts: function(format) {\r\n if (\"string\" === typeof format) {\r\n return this.callBase(format)\r\n }\r\n var intlFormat = extend({}, intlFormats[format.toLowerCase()]);\r\n var date = new Date(2001, 2, 4, 5, 6, 7);\r\n var formattedDate = getIntlFormatter(intlFormat)(date);\r\n formattedDate = normalizeNumerals(formattedDate);\r\n return [{\r\n name: \"year\",\r\n value: 1\r\n }, {\r\n name: \"month\",\r\n value: 3\r\n }, {\r\n name: \"day\",\r\n value: 4\r\n }, {\r\n name: \"hours\",\r\n value: 5\r\n }, {\r\n name: \"minutes\",\r\n value: 6\r\n }, {\r\n name: \"seconds\",\r\n value: 7\r\n }].map(part => ({\r\n name: part.name,\r\n index: formattedDate.indexOf(part.value)\r\n })).filter(part => part.index > -1).sort((a, b) => a.index - b.index).map(part => part.name)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/date.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport {\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n getFormatter as getLDMLDateFormatter\r\n} from \"./ldml/date.formatter\";\r\nimport {\r\n getFormat as getLDMLDateFormat\r\n} from \"./ldml/date.format\";\r\nimport {\r\n getParser as getLDMLDateParser\r\n} from \"./ldml/date.parser\";\r\nimport defaultDateNames from \"./default_date_names\";\r\nimport firstDayOfWeekData from \"./cldr-data/first_day_of_week_data\";\r\nimport localizationCore from \"./core\";\r\nimport numberLocalization from \"./number\";\r\nimport intlDateLocalization from \"./intl/date\";\r\nvar DEFAULT_DAY_OF_WEEK_INDEX = 0;\r\nvar hasIntl = \"undefined\" !== typeof Intl;\r\nvar FORMATS_TO_PATTERN_MAP = {\r\n shortdate: \"M/d/y\",\r\n shorttime: \"h:mm a\",\r\n longdate: \"EEEE, MMMM d, y\",\r\n longtime: \"h:mm:ss a\",\r\n monthandday: \"MMMM d\",\r\n monthandyear: \"MMMM y\",\r\n quarterandyear: \"QQQ y\",\r\n day: \"d\",\r\n year: \"y\",\r\n shortdateshorttime: \"M/d/y, h:mm a\",\r\n longdatelongtime: \"EEEE, MMMM d, y, h:mm:ss a\",\r\n month: \"LLLL\",\r\n shortyear: \"yy\",\r\n dayofweek: \"EEEE\",\r\n quarter: \"QQQ\",\r\n hour: \"HH\",\r\n minute: \"mm\",\r\n second: \"ss\",\r\n millisecond: \"SSS\",\r\n \"datetime-local\": \"yyyy-MM-ddTHH':'mm':'ss\"\r\n};\r\nvar possiblePartPatterns = {\r\n year: [\"y\", \"yy\", \"yyyy\"],\r\n day: [\"d\", \"dd\"],\r\n month: [\"M\", \"MM\", \"MMM\", \"MMMM\"],\r\n hours: [\"H\", \"HH\", \"h\", \"hh\", \"ah\"],\r\n minutes: [\"m\", \"mm\"],\r\n seconds: [\"s\", \"ss\"],\r\n milliseconds: [\"S\", \"SS\", \"SSS\"]\r\n};\r\nvar dateLocalization = dependencyInjector({\r\n engine: function() {\r\n return \"base\"\r\n },\r\n _getPatternByFormat: function(format) {\r\n return FORMATS_TO_PATTERN_MAP[format.toLowerCase()]\r\n },\r\n _expandPattern: function(pattern) {\r\n return this._getPatternByFormat(pattern) || pattern\r\n },\r\n formatUsesMonthName: function(format) {\r\n return -1 !== this._expandPattern(format).indexOf(\"MMMM\")\r\n },\r\n formatUsesDayName: function(format) {\r\n return -1 !== this._expandPattern(format).indexOf(\"EEEE\")\r\n },\r\n getFormatParts: function(format) {\r\n var pattern = this._getPatternByFormat(format) || format;\r\n var result = [];\r\n each(pattern.split(/\\W+/), (_, formatPart) => {\r\n each(possiblePartPatterns, (partName, possiblePatterns) => {\r\n if (inArray(formatPart, possiblePatterns) > -1) {\r\n result.push(partName)\r\n }\r\n })\r\n });\r\n return result\r\n },\r\n getMonthNames: function(format) {\r\n return defaultDateNames.getMonthNames(format)\r\n },\r\n getDayNames: function(format) {\r\n return defaultDateNames.getDayNames(format)\r\n },\r\n getQuarterNames: function(format) {\r\n return defaultDateNames.getQuarterNames(format)\r\n },\r\n getPeriodNames: function(format) {\r\n return defaultDateNames.getPeriodNames(format)\r\n },\r\n getTimeSeparator: function() {\r\n return \":\"\r\n },\r\n is24HourFormat: function(format) {\r\n var amTime = new Date(2017, 0, 20, 11, 0, 0, 0);\r\n var pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);\r\n var amTimeFormatted = this.format(amTime, format);\r\n var pmTimeFormatted = this.format(pmTime, format);\r\n for (var i = 0; i < amTimeFormatted.length; i++) {\r\n if (amTimeFormatted[i] !== pmTimeFormatted[i]) {\r\n return !isNaN(parseInt(amTimeFormatted[i]))\r\n }\r\n }\r\n },\r\n format: function(date, _format) {\r\n if (!date) {\r\n return\r\n }\r\n if (!_format) {\r\n return date\r\n }\r\n var formatter;\r\n if (\"function\" === typeof _format) {\r\n formatter = _format\r\n } else if (_format.formatter) {\r\n formatter = _format.formatter\r\n } else {\r\n _format = _format.type || _format;\r\n if (isString(_format)) {\r\n _format = FORMATS_TO_PATTERN_MAP[_format.toLowerCase()] || _format;\r\n return numberLocalization.convertDigits(getLDMLDateFormatter(_format, this)(date))\r\n }\r\n }\r\n if (!formatter) {\r\n return\r\n }\r\n return formatter(date)\r\n },\r\n parse: function(text, format) {\r\n var that = this;\r\n var ldmlFormat;\r\n var formatter;\r\n if (!text) {\r\n return\r\n }\r\n if (!format) {\r\n return this.parse(text, \"shortdate\")\r\n }\r\n if (format.parser) {\r\n return format.parser(text)\r\n }\r\n if (\"string\" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {\r\n ldmlFormat = format\r\n } else {\r\n formatter = value => {\r\n var text = that.format(value, format);\r\n return numberLocalization.convertDigits(text, true)\r\n };\r\n try {\r\n ldmlFormat = getLDMLDateFormat(formatter)\r\n } catch (e) {}\r\n }\r\n if (ldmlFormat) {\r\n text = numberLocalization.convertDigits(text, true);\r\n return getLDMLDateParser(ldmlFormat, this)(text)\r\n }\r\n errors.log(\"W0012\");\r\n var result = new Date(text);\r\n if (!result || isNaN(result.getTime())) {\r\n return\r\n }\r\n return result\r\n },\r\n firstDayOfWeekIndex: function() {\r\n var index = localizationCore.getValueByClosestLocale(locale => firstDayOfWeekData[locale]);\r\n return void 0 === index ? DEFAULT_DAY_OF_WEEK_INDEX : index\r\n }\r\n});\r\nif (hasIntl) {\r\n dateLocalization.inject(intlDateLocalization)\r\n}\r\nexport default dateLocalization;\r\n","/**\r\n * DevExtreme (esm/core/utils/callbacks.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar Callback = function(options) {\r\n this._options = options || {};\r\n this._list = [];\r\n this._queue = [];\r\n this._firing = false;\r\n this._fired = false;\r\n this._firingIndexes = []\r\n};\r\nCallback.prototype._fireCore = function(context, args) {\r\n var firingIndexes = this._firingIndexes;\r\n var list = this._list;\r\n var stopOnFalse = this._options.stopOnFalse;\r\n var step = firingIndexes.length;\r\n for (firingIndexes[step] = 0; firingIndexes[step] < list.length; firingIndexes[step]++) {\r\n var result = list[firingIndexes[step]].apply(context, args);\r\n if (false === result && stopOnFalse) {\r\n break\r\n }\r\n }\r\n firingIndexes.pop()\r\n};\r\nCallback.prototype.add = function(fn) {\r\n if (\"function\" === typeof fn && (!this._options.unique || !this.has(fn))) {\r\n this._list.push(fn)\r\n }\r\n return this\r\n};\r\nCallback.prototype.remove = function(fn) {\r\n var list = this._list;\r\n var firingIndexes = this._firingIndexes;\r\n var index = list.indexOf(fn);\r\n if (index > -1) {\r\n list.splice(index, 1);\r\n if (this._firing && firingIndexes.length) {\r\n for (var step = 0; step < firingIndexes.length; step++) {\r\n if (index <= firingIndexes[step]) {\r\n firingIndexes[step]--\r\n }\r\n }\r\n }\r\n }\r\n return this\r\n};\r\nCallback.prototype.has = function(fn) {\r\n var list = this._list;\r\n return fn ? list.indexOf(fn) > -1 : !!list.length\r\n};\r\nCallback.prototype.empty = function(fn) {\r\n this._list = [];\r\n return this\r\n};\r\nCallback.prototype.fireWith = function(context, args) {\r\n var queue = this._queue;\r\n args = args || [];\r\n args = args.slice ? args.slice() : args;\r\n if (this._options.syncStrategy) {\r\n this._firing = true;\r\n this._fireCore(context, args)\r\n } else {\r\n queue.push([context, args]);\r\n if (this._firing) {\r\n return\r\n }\r\n this._firing = true;\r\n while (queue.length) {\r\n var memory = queue.shift();\r\n this._fireCore(memory[0], memory[1])\r\n }\r\n }\r\n this._firing = false;\r\n this._fired = true;\r\n return this\r\n};\r\nCallback.prototype.fire = function() {\r\n this.fireWith(this, arguments)\r\n};\r\nCallback.prototype.fired = function() {\r\n return this._fired\r\n};\r\nvar Callbacks = function(options) {\r\n return new Callback(options)\r\n};\r\nexport default Callbacks;\r\n","/**\r\n * DevExtreme (esm/ui/editor/ui.data_expression.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n compileGetter,\r\n toComparable\r\n} from \"../../core/utils/data\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isObject as isObjectType,\r\n isString,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport ArrayStore from \"../../data/array_store\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar DataExpressionMixin = extend({}, DataHelperMixin, {\r\n _dataExpressionDefaultOptions: function() {\r\n return {\r\n items: [],\r\n dataSource: null,\r\n itemTemplate: \"item\",\r\n value: null,\r\n valueExpr: \"this\",\r\n displayExpr: void 0\r\n }\r\n },\r\n _initDataExpressions: function() {\r\n this._compileValueGetter();\r\n this._compileDisplayGetter();\r\n this._initDynamicTemplates();\r\n this._initDataSource();\r\n this._itemsToDataSource()\r\n },\r\n _itemsToDataSource: function() {\r\n if (!this.option(\"dataSource\")) {\r\n this._dataSource = new DataSource({\r\n store: new ArrayStore(this.option(\"items\")),\r\n pageSize: 0\r\n })\r\n }\r\n },\r\n _compileDisplayGetter: function() {\r\n this._displayGetter = compileGetter(this._displayGetterExpr())\r\n },\r\n _displayGetterExpr: function() {\r\n return this.option(\"displayExpr\")\r\n },\r\n _compileValueGetter: function() {\r\n this._valueGetter = compileGetter(this._valueGetterExpr())\r\n },\r\n _valueGetterExpr: function() {\r\n return this.option(\"valueExpr\") || \"this\"\r\n },\r\n _loadValue: function(value) {\r\n var deferred = new Deferred;\r\n value = this._unwrappedValue(value);\r\n if (!isDefined(value)) {\r\n return deferred.reject().promise()\r\n }\r\n this._loadSingle(this._valueGetterExpr(), value).done(function(item) {\r\n this._isValueEquals(this._valueGetter(item), value) ? deferred.resolve(item) : deferred.reject()\r\n }.bind(this)).fail((function() {\r\n deferred.reject()\r\n }));\r\n return deferred.promise()\r\n },\r\n _getCurrentValue: function() {\r\n return this.option(\"value\")\r\n },\r\n _unwrappedValue: function(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this._getCurrentValue();\r\n if (value && this._dataSource && \"this\" === this._valueGetterExpr()) {\r\n value = this._getItemKey(value)\r\n }\r\n return variableWrapper.unwrap(value)\r\n },\r\n _getItemKey: function(value) {\r\n var key = this._dataSource.key();\r\n if (Array.isArray(key)) {\r\n var result = {};\r\n for (var i = 0, n = key.length; i < n; i++) {\r\n result[key[i]] = value[key[i]]\r\n }\r\n return result\r\n }\r\n if (key && \"object\" === typeof value) {\r\n value = value[key]\r\n }\r\n return value\r\n },\r\n _isValueEquals: function(value1, value2) {\r\n var dataSourceKey = this._dataSource && this._dataSource.key();\r\n var result = this._compareValues(value1, value2);\r\n if (!result && dataSourceKey && isDefined(value1) && isDefined(value2)) {\r\n if (Array.isArray(dataSourceKey)) {\r\n result = this._compareByCompositeKey(value1, value2, dataSourceKey)\r\n } else {\r\n result = this._compareByKey(value1, value2, dataSourceKey)\r\n }\r\n }\r\n return result\r\n },\r\n _compareByCompositeKey: function(value1, value2, key) {\r\n var isObject = isObjectType;\r\n if (!isObject(value1) || !isObject(value2)) {\r\n return false\r\n }\r\n for (var i = 0, n = key.length; i < n; i++) {\r\n if (value1[key[i]] !== value2[key[i]]) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _compareByKey: function(value1, value2, key) {\r\n var unwrapObservable = variableWrapper.unwrap;\r\n var valueKey1 = ensureDefined(unwrapObservable(value1[key]), value1);\r\n var valueKey2 = ensureDefined(unwrapObservable(value2[key]), value2);\r\n return this._compareValues(valueKey1, valueKey2)\r\n },\r\n _compareValues: function(value1, value2) {\r\n return toComparable(value1, true) === toComparable(value2, true)\r\n },\r\n _initDynamicTemplates: noop,\r\n _setCollectionWidgetItemTemplate: function() {\r\n this._initDynamicTemplates();\r\n this._setCollectionWidgetOption(\"itemTemplate\", this.option(\"itemTemplate\"))\r\n },\r\n _getCollectionKeyExpr: function() {\r\n var valueExpr = this.option(\"valueExpr\");\r\n var isValueExprField = isString(valueExpr) && \"this\" !== valueExpr || isFunction(valueExpr);\r\n return isValueExprField ? valueExpr : null\r\n },\r\n _dataExpressionOptionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n this._itemsToDataSource();\r\n this._setCollectionWidgetOption(\"items\");\r\n break;\r\n case \"dataSource\":\r\n this._initDataSource();\r\n break;\r\n case \"itemTemplate\":\r\n this._setCollectionWidgetItemTemplate();\r\n break;\r\n case \"valueExpr\":\r\n this._compileValueGetter();\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._initDynamicTemplates();\r\n this._setCollectionWidgetOption(\"displayExpr\")\r\n }\r\n }\r\n});\r\nexport default DataExpressionMixin;\r\n","/**\r\n * DevExtreme (esm/ui/menu/ui.submenu.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport ContextMenu from \"../context_menu\";\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nclass Submenu extends ContextMenu {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n orientation: \"horizontal\",\r\n tabIndex: null,\r\n onHoverStart: noop\r\n })\r\n }\r\n _initDataAdapter() {\r\n this._dataAdapter = this.option(\"_dataAdapter\");\r\n if (!this._dataAdapter) {\r\n super._initDataAdapter()\r\n }\r\n }\r\n _renderContentImpl() {\r\n this._renderContextMenuOverlay();\r\n super._renderContentImpl();\r\n var node = this._dataAdapter.getNodeByKey(this.option(\"_parentKey\"));\r\n node && this._renderItems(this._getChildNodes(node));\r\n this._renderDelimiter()\r\n }\r\n _renderDelimiter() {\r\n this.$contentDelimiter = $(\"
\").appendTo(this._itemContainer()).addClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)\r\n }\r\n _getOverlayOptions() {\r\n return extend(super._getOverlayOptions(), {\r\n onPositioned: this._overlayPositionedActionHandler.bind(this)\r\n })\r\n }\r\n _overlayPositionedActionHandler(arg) {\r\n this._showDelimiter(arg)\r\n }\r\n _hoverEndHandler(e) {\r\n super._hoverEndHandler(e);\r\n this._toggleFocusClass(false, e.currentTarget)\r\n }\r\n _isMenuHorizontal() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n }\r\n _hoverStartHandler(e) {\r\n var hoverStartAction = this.option(\"onHoverStart\");\r\n hoverStartAction(e);\r\n super._hoverStartHandler(e);\r\n this._toggleFocusClass(true, e.currentTarget)\r\n }\r\n _drawSubmenu($rootItem) {\r\n this._actions.onShowing({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n });\r\n super._drawSubmenu($rootItem);\r\n this._actions.onShown({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n })\r\n }\r\n _hideSubmenu($rootItem) {\r\n this._actions.onHiding({\r\n cancel: true,\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n });\r\n super._hideSubmenu($rootItem);\r\n this._actions.onHidden({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: this\r\n })\r\n }\r\n _showDelimiter(arg) {\r\n if (!this.$contentDelimiter) {\r\n return\r\n }\r\n var $submenu = this._itemContainer().children(\".\".concat(DX_SUBMENU_CLASS)).eq(0);\r\n var $rootItem = this.option(\"position\").of;\r\n var position = {\r\n of: $submenu\r\n };\r\n var containerOffset = arg.position;\r\n var vLocation = containerOffset.v.location;\r\n var hLocation = containerOffset.h.location;\r\n var rootOffset = $rootItem.offset();\r\n var offsetLeft = Math.round(rootOffset.left);\r\n var offsetTop = Math.round(rootOffset.top);\r\n var rootWidth = $rootItem.width();\r\n var rootHeight = $rootItem.height();\r\n var submenuWidth = $submenu.width();\r\n var submenuHeight = $submenu.height();\r\n this.$contentDelimiter.css(\"display\", \"block\");\r\n this.$contentDelimiter.width(this._isMenuHorizontal() ? rootWidth < submenuWidth ? rootWidth - 2 : submenuWidth : 2);\r\n this.$contentDelimiter.height(this._isMenuHorizontal() ? 2 : rootHeight < submenuHeight ? rootHeight - 2 : submenuHeight);\r\n if (this._isMenuHorizontal()) {\r\n if (vLocation > offsetTop) {\r\n if (Math.round(hLocation) === offsetLeft) {\r\n position.offset = \"1 -1\";\r\n position.at = position.my = \"left top\"\r\n } else {\r\n position.offset = \"-1 -1\";\r\n position.at = position.my = \"right top\"\r\n }\r\n } else {\r\n this.$contentDelimiter.height(5);\r\n if (Math.round(hLocation) === offsetLeft) {\r\n position.offset = \"1 4\";\r\n position.at = position.my = \"left bottom\"\r\n } else {\r\n position.offset = \"-1 2\";\r\n position.at = position.my = \"right bottom\"\r\n }\r\n }\r\n } else if (hLocation > offsetLeft) {\r\n if (Math.round(vLocation) === offsetTop) {\r\n position.offset = \"-1 1\";\r\n position.at = position.my = \"left top\"\r\n } else {\r\n position.offset = \"-1 -1\";\r\n position.at = position.my = \"left bottom\"\r\n }\r\n } else if (Math.round(vLocation) === offsetTop) {\r\n position.offset = \"1 1\";\r\n position.at = position.my = \"right top\"\r\n } else {\r\n position.offset = \"1 -1\";\r\n position.at = position.my = \"right bottom\"\r\n }\r\n animationPosition.setup(this.$contentDelimiter, position)\r\n }\r\n _getContextMenuPosition() {\r\n return this.option(\"position\")\r\n }\r\n isOverlayVisible() {\r\n return this._overlay.option(\"visible\")\r\n }\r\n getOverlayContent() {\r\n return this._overlay.$content()\r\n }\r\n}\r\nexport default Submenu;\r\n","/**\r\n * DevExtreme (esm/ui/menu/ui.menu.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isPlainObject,\r\n isObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getElementMaxHeightByWindow\r\n} from \"../overlay/utils\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n end as hoverEventEnd\r\n} from \"../../events/hover\";\r\nimport MenuBase from \"../context_menu/ui.menu_base\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport Submenu from \"./ui.submenu\";\r\nimport Button from \"../button\";\r\nimport TreeView from \"../tree_view\";\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_VERTICAL_CLASS = DX_MENU_CLASS + \"-vertical\";\r\nvar DX_MENU_HORIZONTAL_CLASS = DX_MENU_CLASS + \"-horizontal\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS = DX_CONTEXT_MENU_CLASS + \"-container-border\";\r\nvar DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS = \"dx-context-menu-content-delimiter\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar DX_STATE_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DX_ADAPTIVE_MODE_CLASS = DX_MENU_CLASS + \"-adaptive-mode\";\r\nvar DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS = DX_MENU_CLASS + \"-hamburger-button\";\r\nvar DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS = DX_ADAPTIVE_MODE_CLASS + \"-overlay-wrapper\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar SHOW_SUBMENU_OPERATION = \"showSubmenu\";\r\nvar NEXTITEM_OPERATION = \"nextItem\";\r\nvar PREVITEM_OPERATION = \"prevItem\";\r\nvar DEFAULT_DELAY = {\r\n show: 50,\r\n hide: 300\r\n};\r\nvar ACTIONS = [\"onSubmenuShowing\", \"onSubmenuShown\", \"onSubmenuHiding\", \"onSubmenuHidden\", \"onItemContextMenu\", \"onItemClick\", \"onSelectionChanged\", \"onItemRendered\"];\r\nclass Menu extends MenuBase {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n orientation: \"horizontal\",\r\n submenuDirection: \"auto\",\r\n showFirstSubmenuMode: {\r\n name: \"onClick\",\r\n delay: {\r\n show: 50,\r\n hide: 300\r\n }\r\n },\r\n hideSubmenuOnMouseLeave: false,\r\n onSubmenuShowing: null,\r\n onSubmenuShown: null,\r\n onSubmenuHiding: null,\r\n onSubmenuHidden: null,\r\n adaptivityEnabled: false\r\n })\r\n }\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n extend(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n }\r\n _itemElements() {\r\n var rootMenuElements = super._itemElements();\r\n var submenuElements = this._submenuItemElements();\r\n return rootMenuElements.add(submenuElements)\r\n }\r\n _submenuItemElements() {\r\n var elements = [];\r\n var itemSelector = \".\".concat(DX_MENU_ITEM_CLASS);\r\n var currentSubmenu = this._submenus.length && this._submenus[0];\r\n if (currentSubmenu && currentSubmenu.itemsContainer()) {\r\n elements = currentSubmenu.itemsContainer().find(itemSelector)\r\n }\r\n return elements\r\n }\r\n _focusTarget() {\r\n return this.$element()\r\n }\r\n _isMenuHorizontal() {\r\n return \"horizontal\" === this.option(\"orientation\")\r\n }\r\n _moveFocus(location) {\r\n var $items = this._getAvailableItems();\r\n var isMenuHorizontal = this._isMenuHorizontal();\r\n var $activeItem = this._getActiveItem(true);\r\n var argument;\r\n var operation;\r\n var navigationAction;\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_UP:\r\n operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(PREVITEM_OPERATION);\r\n argument = isMenuHorizontal ? $activeItem : $items;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_DOWN:\r\n operation = isMenuHorizontal ? SHOW_SUBMENU_OPERATION : this._getItemsNavigationOperation(NEXTITEM_OPERATION);\r\n argument = isMenuHorizontal ? $activeItem : $items;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_RIGHT:\r\n operation = isMenuHorizontal ? this._getItemsNavigationOperation(NEXTITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n argument = isMenuHorizontal ? $items : $activeItem;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n case FOCUS_LEFT:\r\n operation = isMenuHorizontal ? this._getItemsNavigationOperation(PREVITEM_OPERATION) : SHOW_SUBMENU_OPERATION;\r\n argument = isMenuHorizontal ? $items : $activeItem;\r\n navigationAction = this._getKeyboardNavigationAction(operation, argument);\r\n $newTarget = navigationAction();\r\n break;\r\n default:\r\n return super._moveFocus(location)\r\n }\r\n if ($newTarget && 0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", getPublicElement($newTarget))\r\n }\r\n }\r\n _getItemsNavigationOperation(operation) {\r\n var navOperation = operation;\r\n if (this.option(\"rtlEnabled\")) {\r\n navOperation = operation === PREVITEM_OPERATION ? NEXTITEM_OPERATION : PREVITEM_OPERATION\r\n }\r\n return navOperation\r\n }\r\n _getKeyboardNavigationAction(operation, argument) {\r\n var action = noop;\r\n switch (operation) {\r\n case SHOW_SUBMENU_OPERATION:\r\n if (!argument.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n action = this._showSubmenu.bind(this, argument)\r\n }\r\n break;\r\n case NEXTITEM_OPERATION:\r\n action = this._nextItem.bind(this, argument);\r\n break;\r\n case PREVITEM_OPERATION:\r\n action = this._prevItem.bind(this, argument)\r\n }\r\n return action\r\n }\r\n _clean() {\r\n super._clean();\r\n this.option(\"templatesRenderAsynchronously\") && clearTimeout(this._resizeEventTimer)\r\n }\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n if (!this._menuItemsWidth) {\r\n this._updateItemsWidthCache()\r\n }\r\n this._dimensionChanged()\r\n }\r\n }\r\n _isAdaptivityEnabled() {\r\n return this.option(\"adaptivityEnabled\") && \"horizontal\" === this.option(\"orientation\")\r\n }\r\n _updateItemsWidthCache() {\r\n var $menuItems = this.$element().find(\"ul\").first().children(\"li\").children(\".\".concat(DX_MENU_ITEM_CLASS));\r\n this._menuItemsWidth = this._getSummaryItemsWidth($menuItems, true)\r\n }\r\n _dimensionChanged() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n var containerWidth = this.$element().outerWidth();\r\n this._toggleAdaptiveMode(this._menuItemsWidth > containerWidth)\r\n }\r\n _init() {\r\n super._init();\r\n this._submenus = []\r\n }\r\n _initActions() {\r\n this._actions = {};\r\n each(ACTIONS, (index, action) => {\r\n this._actions[action] = this._createActionByOption(action)\r\n })\r\n }\r\n _initMarkup() {\r\n this._visibleSubmenu = null;\r\n this.$element().addClass(DX_MENU_CLASS);\r\n super._initMarkup();\r\n this.setAria(\"role\", \"menubar\")\r\n }\r\n _render() {\r\n super._render();\r\n this._initAdaptivity()\r\n }\r\n _renderHamburgerButton() {\r\n this._hamburger = new Button($(\"
\").addClass(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS), {\r\n icon: \"menu\",\r\n activeStateEnabled: false,\r\n onClick: this._toggleTreeView.bind(this)\r\n });\r\n return this._hamburger.$element()\r\n }\r\n _toggleTreeView(state) {\r\n if (isPlainObject(state)) {\r\n state = !this._overlay.option(\"visible\")\r\n }\r\n this._overlay.option(\"visible\", state);\r\n this._toggleHamburgerActiveState(state)\r\n }\r\n _toggleHamburgerActiveState(state) {\r\n this._hamburger && this._hamburger.$element().toggleClass(DX_STATE_ACTIVE_CLASS, state)\r\n }\r\n _toggleAdaptiveMode(state) {\r\n var $menuItemsContainer = this.$element().find(\".\".concat(DX_MENU_HORIZONTAL_CLASS));\r\n var $adaptiveElements = this.$element().find(\".\".concat(DX_ADAPTIVE_MODE_CLASS));\r\n if (state) {\r\n this._hideVisibleSubmenu()\r\n } else {\r\n this._treeView && this._treeView.collapseAll();\r\n this._overlay && this._toggleTreeView(state)\r\n }\r\n $menuItemsContainer.toggle(!state);\r\n $adaptiveElements.toggle(state)\r\n }\r\n _removeAdaptivity() {\r\n if (!this._$adaptiveContainer) {\r\n return\r\n }\r\n this._toggleAdaptiveMode(false);\r\n this._$adaptiveContainer.remove();\r\n this._$adaptiveContainer = null;\r\n this._treeView = null;\r\n this._hamburger = null;\r\n this._overlay = null\r\n }\r\n _treeviewItemClickHandler(e) {\r\n this._actions.onItemClick(e);\r\n if (!e.node.children.length) {\r\n this._toggleTreeView(false)\r\n }\r\n }\r\n _getAdaptiveOverlayOptions() {\r\n var rtl = this.option(\"rtlEnabled\");\r\n var position = rtl ? \"right\" : \"left\";\r\n return {\r\n maxHeight: () => getElementMaxHeightByWindow(this.$element()),\r\n deferRendering: false,\r\n shading: false,\r\n animation: false,\r\n closeOnTargetScroll: true,\r\n onHidden: () => {\r\n this._toggleHamburgerActiveState(false)\r\n },\r\n height: \"auto\",\r\n closeOnOutsideClick: e => !$(e.target).closest(\".\".concat(DX_ADAPTIVE_HAMBURGER_BUTTON_CLASS)).length,\r\n position: {\r\n collision: \"flipfit\",\r\n at: \"bottom \" + position,\r\n my: \"top \" + position,\r\n of: this._hamburger.$element()\r\n }\r\n }\r\n }\r\n _getTreeViewOptions() {\r\n var menuOptions = {};\r\n each([\"rtlEnabled\", \"width\", \"accessKey\", \"activeStateEnabled\", \"animation\", \"dataSource\", \"disabled\", \"displayExpr\", \"displayExpr\", \"focusStateEnabled\", \"hint\", \"hoverStateEnabled\", \"itemsExpr\", \"items\", \"itemTemplate\", \"selectedExpr\", \"selectionMode\", \"tabIndex\", \"visible\"], (_, option) => {\r\n menuOptions[option] = this.option(option)\r\n });\r\n each([\"onItemContextMenu\", \"onSelectionChanged\"], (_, actionName) => {\r\n menuOptions[actionName] = e => {\r\n this._actions[actionName](e)\r\n }\r\n });\r\n return extend(menuOptions, {\r\n dataSource: this.getDataSource(),\r\n animationEnabled: !!this.option(\"animation\"),\r\n onItemClick: this._treeviewItemClickHandler.bind(this),\r\n onItemExpanded: e => {\r\n this._overlay.repaint();\r\n this._actions.onSubmenuShown(e)\r\n },\r\n onItemCollapsed: e => {\r\n this._overlay.repaint();\r\n this._actions.onSubmenuHidden(e)\r\n },\r\n selectNodesRecursive: false,\r\n selectByClick: this.option(\"selectByClick\"),\r\n expandEvent: \"click\"\r\n })\r\n }\r\n _initAdaptivity() {\r\n if (!this._isAdaptivityEnabled()) {\r\n return\r\n }\r\n this._$adaptiveContainer = $(\"
\").addClass(DX_ADAPTIVE_MODE_CLASS);\r\n var $hamburger = this._renderHamburgerButton();\r\n this._treeView = this._createComponent($(\"
\"), TreeView, this._getTreeViewOptions());\r\n this._overlay = this._createComponent($(\"
\"), Overlay, this._getAdaptiveOverlayOptions());\r\n this._overlay.$content().append(this._treeView.$element()).addClass(DX_ADAPTIVE_MODE_CLASS).addClass(this.option(\"cssClass\"));\r\n this._overlay.$wrapper().addClass(DX_ADAPTIVE_MODE_OVERLAY_WRAPPER_CLASS);\r\n this._$adaptiveContainer.append($hamburger);\r\n this._$adaptiveContainer.append(this._overlay.$element());\r\n this.$element().append(this._$adaptiveContainer);\r\n this._updateItemsWidthCache();\r\n this._dimensionChanged()\r\n }\r\n _getDelay(delayType) {\r\n var delay = this.option(\"showFirstSubmenuMode\").delay;\r\n if (!isDefined(delay)) {\r\n return DEFAULT_DELAY[delayType]\r\n } else {\r\n return isObject(delay) ? delay[delayType] : delay\r\n }\r\n }\r\n _keyboardHandler(e) {\r\n return super._keyboardHandler(e, !!this._visibleSubmenu)\r\n }\r\n _renderContainer() {\r\n var $wrapper = $(\"
\");\r\n $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? DX_MENU_HORIZONTAL_CLASS : DX_MENU_VERTICAL_CLASS);\r\n return super._renderContainer($wrapper)\r\n }\r\n _renderSubmenuItems(node, $itemFrame) {\r\n var submenu = this._createSubmenu(node, $itemFrame);\r\n this._submenus.push(submenu);\r\n this._renderBorderElement($itemFrame);\r\n return submenu\r\n }\r\n _getKeyboardListeners() {\r\n return super._getKeyboardListeners().concat(this._visibleSubmenu)\r\n }\r\n _createSubmenu(node, $rootItem) {\r\n var $submenuContainer = $(\"
\").addClass(DX_CONTEXT_MENU_CLASS).appendTo($rootItem);\r\n var items = this._getChildNodes(node);\r\n var result = this._createComponent($submenuContainer, Submenu, extend(this._getSubmenuOptions(), {\r\n _dataAdapter: this._dataAdapter,\r\n _parentKey: node.internalFields.key,\r\n items: items,\r\n onHoverStart: this._clearTimeouts.bind(this),\r\n position: this.getSubmenuPosition($rootItem)\r\n }));\r\n this._attachSubmenuHandlers($rootItem, result);\r\n return result\r\n }\r\n _getSubmenuOptions() {\r\n var $submenuTarget = $(\"
\");\r\n var isMenuHorizontal = this._isMenuHorizontal();\r\n return {\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n target: $submenuTarget,\r\n orientation: this.option(\"orientation\"),\r\n selectionMode: this.option(\"selectionMode\"),\r\n cssClass: this.option(\"cssClass\"),\r\n selectByClick: this.option(\"selectByClick\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n animation: this.option(\"animation\"),\r\n showSubmenuMode: this.option(\"showSubmenuMode\"),\r\n displayExpr: this.option(\"displayExpr\"),\r\n disabledExpr: this.option(\"disabledExpr\"),\r\n selectedExpr: this.option(\"selectedExpr\"),\r\n itemsExpr: this.option(\"itemsExpr\"),\r\n onFocusedItemChanged: e => {\r\n if (!e.component.option(\"visible\")) {\r\n return\r\n }\r\n this.option(\"focusedElement\", e.component.option(\"focusedElement\"))\r\n },\r\n onSelectionChanged: this._nestedItemOnSelectionChangedHandler.bind(this),\r\n onItemClick: this._nestedItemOnItemClickHandler.bind(this),\r\n onItemRendered: this._nestedItemOnItemRenderedHandler.bind(this),\r\n onLeftFirstItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, PREVITEM_OPERATION),\r\n onLeftLastItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION),\r\n onCloseRootSubmenu: this._moveMainMenuFocus.bind(this, isMenuHorizontal ? PREVITEM_OPERATION : null),\r\n onExpandLastSubmenu: isMenuHorizontal ? this._moveMainMenuFocus.bind(this, NEXTITEM_OPERATION) : null\r\n }\r\n }\r\n _getShowFirstSubmenuMode() {\r\n if (!this._isDesktopDevice()) {\r\n return \"onClick\"\r\n }\r\n var optionValue = this.option(\"showFirstSubmenuMode\");\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n }\r\n _moveMainMenuFocus(direction) {\r\n var $items = this._getAvailableItems();\r\n var itemCount = $items.length;\r\n var $currentItem = $items.filter(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).eq(0);\r\n var itemIndex = $items.index($currentItem);\r\n this._hideSubmenu(this._visibleSubmenu);\r\n itemIndex += direction === PREVITEM_OPERATION ? -1 : 1;\r\n if (itemIndex >= itemCount) {\r\n itemIndex = 0\r\n } else if (itemIndex < 0) {\r\n itemIndex = itemCount - 1\r\n }\r\n var $newItem = $items.eq(itemIndex);\r\n this.option(\"focusedElement\", getPublicElement($newItem))\r\n }\r\n _nestedItemOnSelectionChangedHandler(args) {\r\n var selectedItem = args.addedItems.length && args.addedItems[0];\r\n var submenu = Submenu.getInstance(args.element);\r\n var onSelectionChanged = this._actions.onSelectionChanged;\r\n onSelectionChanged(args);\r\n selectedItem && this._clearSelectionInSubmenus(selectedItem[0], submenu);\r\n this._clearRootSelection();\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem)\r\n }\r\n _clearSelectionInSubmenus(item, targetSubmenu) {\r\n var cleanAllSubmenus = !arguments.length;\r\n each(this._submenus, (index, submenu) => {\r\n var $submenu = submenu._itemContainer();\r\n var isOtherItem = !$submenu.is(targetSubmenu && targetSubmenu._itemContainer());\r\n var $selectedItem = $submenu.find(\".\".concat(this._selectedItemClass()));\r\n if (isOtherItem && $selectedItem.length || cleanAllSubmenus) {\r\n $selectedItem.removeClass(this._selectedItemClass());\r\n var selectedItemData = this._getItemData($selectedItem);\r\n if (selectedItemData) {\r\n selectedItemData.selected = false\r\n }\r\n submenu._clearSelectedItems()\r\n }\r\n })\r\n }\r\n _clearRootSelection() {\r\n var $prevSelectedItem = this.$element().find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).first().children().children().filter(\".\".concat(this._selectedItemClass()));\r\n if ($prevSelectedItem.length) {\r\n var prevSelectedItemData = this._getItemData($prevSelectedItem);\r\n prevSelectedItemData.selected = false;\r\n $prevSelectedItem.removeClass(this._selectedItemClass())\r\n }\r\n }\r\n _nestedItemOnItemClickHandler(e) {\r\n this._actions.onItemClick(e)\r\n }\r\n _nestedItemOnItemRenderedHandler(e) {\r\n this._actions.onItemRendered(e)\r\n }\r\n _attachSubmenuHandlers($rootItem, submenu) {\r\n var $submenuOverlayContent = submenu.getOverlayContent();\r\n var submenus = $submenuOverlayContent.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var submenuMouseLeaveName = addNamespace(hoverEventEnd, this.NAME + \"_submenu\");\r\n submenu.option({\r\n onShowing: this._submenuOnShowingHandler.bind(this, $rootItem, submenu),\r\n onShown: this._submenuOnShownHandler.bind(this, $rootItem, submenu),\r\n onHiding: this._submenuOnHidingHandler.bind(this, $rootItem, submenu),\r\n onHidden: this._submenuOnHiddenHandler.bind(this, $rootItem, submenu)\r\n });\r\n each(submenus, (index, submenu) => {\r\n eventsEngine.off(submenu, submenuMouseLeaveName);\r\n eventsEngine.on(submenu, submenuMouseLeaveName, null, this._submenuMouseLeaveHandler.bind(this, $rootItem))\r\n })\r\n }\r\n _submenuOnShowingHandler($rootItem, submenu) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n this._actions.onSubmenuShowing({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: submenu\r\n });\r\n $border.show();\r\n $rootItem.addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n _submenuOnShownHandler($rootItem, submenu) {\r\n this._actions.onSubmenuShown({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: submenu\r\n })\r\n }\r\n _submenuOnHidingHandler($rootItem, submenu, eventArgs) {\r\n var $border = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS));\r\n var args = eventArgs;\r\n args.rootItem = getPublicElement($rootItem);\r\n args.submenu = submenu;\r\n this._actions.onSubmenuHiding(args);\r\n eventArgs = args;\r\n if (!eventArgs.cancel) {\r\n if (this._visibleSubmenu === submenu) {\r\n this._visibleSubmenu = null\r\n }\r\n $border.hide();\r\n $rootItem.removeClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n }\r\n _submenuOnHiddenHandler($rootItem, submenu) {\r\n this._actions.onSubmenuHidden({\r\n rootItem: getPublicElement($rootItem),\r\n submenu: submenu\r\n })\r\n }\r\n _submenuMouseLeaveHandler($rootItem, eventArgs) {\r\n var target = $(eventArgs.relatedTarget).parents(\".\".concat(DX_CONTEXT_MENU_CLASS))[0];\r\n var contextMenu = this._getSubmenuByRootElement($rootItem).getOverlayContent()[0];\r\n if (this.option(\"hideSubmenuOnMouseLeave\") && target !== contextMenu) {\r\n this._clearTimeouts();\r\n setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"))\r\n }\r\n }\r\n _hideSubmenuAfterTimeout() {\r\n if (!this._visibleSubmenu) {\r\n return\r\n }\r\n var isRootItemHovered = $(this._visibleSubmenu.$element().context).hasClass(DX_STATE_HOVER_CLASS);\r\n var isSubmenuItemHovered = this._visibleSubmenu.getOverlayContent().find(\".\".concat(DX_STATE_HOVER_CLASS)).length;\r\n var hoveredElementFromSubMenu = this._visibleSubmenu.getOverlayContent().get(0).querySelector(\":hover\");\r\n if (!hoveredElementFromSubMenu && !isSubmenuItemHovered && !isRootItemHovered) {\r\n this._visibleSubmenu.hide()\r\n }\r\n }\r\n _getSubmenuByRootElement($rootItem) {\r\n if (!$rootItem) {\r\n return false\r\n }\r\n var $submenu = $rootItem.children(\".\".concat(DX_CONTEXT_MENU_CLASS));\r\n return $submenu.length && Submenu.getInstance($submenu)\r\n }\r\n getSubmenuPosition($rootItem) {\r\n var isHorizontalMenu = this._isMenuHorizontal();\r\n var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var submenuPosition = {\r\n collision: \"flip\",\r\n of: $rootItem\r\n };\r\n switch (submenuDirection) {\r\n case \"leftortop\":\r\n submenuPosition.at = \"left top\";\r\n submenuPosition.my = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n break;\r\n case \"rightorbottom\":\r\n submenuPosition.at = isHorizontalMenu ? \"left bottom\" : \"right top\";\r\n submenuPosition.my = \"left top\";\r\n break;\r\n default:\r\n if (isHorizontalMenu) {\r\n submenuPosition.at = rtlEnabled ? \"right bottom\" : \"left bottom\";\r\n submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n } else {\r\n submenuPosition.at = rtlEnabled ? \"left top\" : \"right top\";\r\n submenuPosition.my = rtlEnabled ? \"right top\" : \"left top\"\r\n }\r\n }\r\n return submenuPosition\r\n }\r\n _renderBorderElement($item) {\r\n $(\"
\").appendTo($item).addClass(DX_CONTEXT_MENU_CONTAINER_BORDER_CLASS).hide()\r\n }\r\n _itemPointerDownHandler(e) {\r\n var $target = $(e.target);\r\n var $closestItem = $target.closest(this._itemElements());\r\n if ($closestItem.hasClass(\"dx-menu-item-has-submenu\")) {\r\n this.option(\"focusedElement\", null);\r\n return\r\n }\r\n super._itemPointerDownHandler(e)\r\n }\r\n _hoverStartHandler(e) {\r\n var mouseMoveEventName = addNamespace(pointerEvents.move, this.NAME);\r\n var $item = this._getItemElementByEventArgs(e);\r\n var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n var isSelectionActive = isDefined(e.buttons) && 1 === e.buttons || !isDefined(e.buttons) && 1 === e.which;\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n eventsEngine.off($item, mouseMoveEventName);\r\n if (!this._hasChildren(node)) {\r\n this._showSubmenuTimer = setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay(\"hide\"));\r\n return\r\n }\r\n if (\"onHover\" === this._getShowFirstSubmenuMode() && !isSelectionActive) {\r\n var submenu = this._getSubmenuByElement($item);\r\n this._clearTimeouts();\r\n if (!submenu.isOverlayVisible()) {\r\n eventsEngine.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this));\r\n this._showSubmenuTimer = this._getDelay(\"hide\")\r\n }\r\n }\r\n }\r\n _hoverEndHandler(eventArg) {\r\n var $item = this._getItemElementByEventArgs(eventArg);\r\n var relatedTarget = $(eventArg.relatedTarget);\r\n super._hoverEndHandler(eventArg);\r\n this._clearTimeouts();\r\n if (this._isItemDisabled($item)) {\r\n return\r\n }\r\n if (relatedTarget.hasClass(DX_CONTEXT_MENU_CONTENT_DELIMITER_CLASS)) {\r\n return\r\n }\r\n if (this.option(\"hideSubmenuOnMouseLeave\") && !relatedTarget.hasClass(DX_MENU_ITEMS_CONTAINER_CLASS)) {\r\n this._hideSubmenuTimer = setTimeout(() => {\r\n this._hideSubmenuAfterTimeout()\r\n }, this._getDelay(\"hide\"))\r\n }\r\n }\r\n _hideVisibleSubmenu() {\r\n if (!this._visibleSubmenu) {\r\n return false\r\n }\r\n this._hideSubmenu(this._visibleSubmenu);\r\n return true\r\n }\r\n _showSubmenu($itemElement) {\r\n var submenu = this._getSubmenuByElement($itemElement);\r\n if (this._visibleSubmenu !== submenu) {\r\n this._hideVisibleSubmenu()\r\n }\r\n if (submenu) {\r\n this._clearTimeouts();\r\n submenu.show();\r\n this.option(\"focusedElement\", submenu.option(\"focusedElement\"))\r\n }\r\n this._visibleSubmenu = submenu;\r\n this._hoveredRootItem = $itemElement\r\n }\r\n _hideSubmenu(submenu) {\r\n submenu && submenu.hide();\r\n if (this._visibleSubmenu === submenu) {\r\n this._visibleSubmenu = null\r\n }\r\n this._hoveredRootItem = null\r\n }\r\n _itemMouseMoveHandler(e) {\r\n if (e.pointers && e.pointers.length) {\r\n return\r\n }\r\n var $item = $(e.currentTarget);\r\n if (!isDefined(this._showSubmenuTimer)) {\r\n return\r\n }\r\n this._clearTimeouts();\r\n this._showSubmenuTimer = setTimeout(() => {\r\n var submenu = this._getSubmenuByElement($item);\r\n if (submenu && !submenu.isOverlayVisible()) {\r\n this._showSubmenu($item)\r\n }\r\n }, this._getDelay(\"show\"))\r\n }\r\n _clearTimeouts() {\r\n clearTimeout(this._hideSubmenuTimer);\r\n clearTimeout(this._showSubmenuTimer)\r\n }\r\n _getSubmenuByElement($itemElement, itemData) {\r\n var submenu = this._getSubmenuByRootElement($itemElement);\r\n if (submenu) {\r\n return submenu\r\n } else {\r\n itemData = itemData || this._getItemData($itemElement);\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n return this._hasChildren(node) && this._renderSubmenuItems(node, $itemElement)\r\n }\r\n }\r\n _updateSubmenuVisibilityOnClick(actionArgs) {\r\n var args = actionArgs.args.length && actionArgs.args[0];\r\n if (!args || this._disabledGetter(args.itemData)) {\r\n return\r\n }\r\n var $itemElement = $(args.itemElement);\r\n var currentSubmenu = this._getSubmenuByElement($itemElement, args.itemData);\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (this._visibleSubmenu) {\r\n if (this._visibleSubmenu === currentSubmenu) {\r\n if (\"onClick\" === this.option(\"showFirstSubmenuMode\")) {\r\n this._hideSubmenu(this._visibleSubmenu)\r\n }\r\n return\r\n } else {\r\n this._hideSubmenu(this._visibleSubmenu)\r\n }\r\n }\r\n if (!currentSubmenu) {\r\n return\r\n }\r\n if (!currentSubmenu.isOverlayVisible()) {\r\n this._showSubmenu($itemElement);\r\n return\r\n }\r\n }\r\n _optionChanged(args) {\r\n if (ACTIONS.indexOf(args.name) >= 0) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"orientation\":\r\n case \"submenuDirection\":\r\n this._invalidate();\r\n break;\r\n case \"showFirstSubmenuMode\":\r\n case \"hideSubmenuOnMouseLeave\":\r\n break;\r\n case \"showSubmenuMode\":\r\n this._changeSubmenusOption(args.name, args.value);\r\n break;\r\n case \"adaptivityEnabled\":\r\n args.value ? this._initAdaptivity() : this._removeAdaptivity();\r\n break;\r\n case \"width\":\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(args.name, args.value);\r\n this._overlay.option(args.name, args.value)\r\n }\r\n super._optionChanged(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"animation\":\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(\"animationEnabled\", !!args.value)\r\n }\r\n super._optionChanged(args);\r\n break;\r\n default:\r\n if (this._isAdaptivityEnabled()) {\r\n this._treeView.option(args.name, args.value)\r\n }\r\n super._optionChanged(args)\r\n }\r\n }\r\n _changeSubmenusOption(name, value) {\r\n each(this._submenus, (index, submenu) => {\r\n submenu.option(name, value)\r\n })\r\n }\r\n selectItem(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n super.selectItem(itemElement)\r\n }\r\n unselectItem(itemElement) {\r\n this._hideSubmenu(this._visibleSubmenu);\r\n super.selectItem(itemElement)\r\n }\r\n}\r\nregisterComponent(\"dxMenu\", Menu);\r\nexport default Menu;\r\n","/**\r\n * DevExtreme (esm/ui/menu.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Menu from \"./menu/ui.menu\";\r\nexport default Menu;\r\n","/**\r\n * DevExtreme (esm/core/utils/ready_callbacks.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nimport injector from \"./dependency_injector\";\r\nimport {\r\n hasWindow\r\n} from \"./window\";\r\nimport callOnce from \"./call_once\";\r\nvar callbacks = [];\r\nvar isReady = () => \"complete\" === domAdapter.getReadyState() || \"loading\" !== domAdapter.getReadyState() && !domAdapter.getDocumentElement().doScroll;\r\nvar subscribeReady = callOnce(() => {\r\n var removeListener = domAdapter.listen(domAdapter.getDocument(), \"DOMContentLoaded\", () => {\r\n readyCallbacks.fire();\r\n removeListener()\r\n })\r\n});\r\nvar readyCallbacks = {\r\n add: callback => {\r\n var windowExists = hasWindow();\r\n if (windowExists && isReady()) {\r\n callback()\r\n } else {\r\n callbacks.push(callback);\r\n windowExists && subscribeReady()\r\n }\r\n },\r\n fire: () => {\r\n callbacks.forEach(callback => callback());\r\n callbacks = []\r\n }\r\n};\r\nexport default injector(readyCallbacks);\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar getElementWidth = function($element) {\r\n if (hasWindow()) {\r\n return $element.outerWidth()\r\n }\r\n};\r\nvar getSizeValue = function(size) {\r\n if (null === size) {\r\n size = void 0\r\n }\r\n if (\"function\" === typeof size) {\r\n size = size()\r\n }\r\n return size\r\n};\r\nexport {\r\n getElementWidth,\r\n getSizeValue\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/load_panel.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport LoadIndicator from \"./load_indicator\";\r\nimport Overlay from \"./overlay/ui.overlay\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n isMaterial\r\n} from \"./themes\";\r\nvar LOADPANEL_CLASS = \"dx-loadpanel\";\r\nvar LOADPANEL_WRAPPER_CLASS = \"dx-loadpanel-wrapper\";\r\nvar LOADPANEL_INDICATOR_CLASS = \"dx-loadpanel-indicator\";\r\nvar LOADPANEL_MESSAGE_CLASS = \"dx-loadpanel-message\";\r\nvar LOADPANEL_CONTENT_CLASS = \"dx-loadpanel-content\";\r\nvar LOADPANEL_CONTENT_WRAPPER_CLASS = \"dx-loadpanel-content-wrapper\";\r\nvar LOADPANEL_PANE_HIDDEN_CLASS = \"dx-loadpanel-pane-hidden\";\r\nvar LoadPanel = Overlay.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n escape: noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n message: messageLocalization.format(\"Loading\"),\r\n width: 222,\r\n height: 90,\r\n animation: null,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true,\r\n delay: 0,\r\n templatesRenderAsynchronously: false,\r\n hideTopOverlayHandler: null,\r\n resizeEnabled: false,\r\n focusStateEnabled: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n shadingColor: \"transparent\"\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n message: \"\",\r\n width: 60,\r\n height: 60,\r\n maxHeight: 60,\r\n maxWidth: 60\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADPANEL_CLASS);\r\n this.$wrapper().addClass(LOADPANEL_WRAPPER_CLASS)\r\n },\r\n _renderContentImpl: function() {\r\n this.callBase();\r\n this.$content().addClass(LOADPANEL_CONTENT_CLASS);\r\n this._$loadPanelContentWrapper = $(\"
\").addClass(LOADPANEL_CONTENT_WRAPPER_CLASS);\r\n this._$loadPanelContentWrapper.appendTo(this.$content());\r\n this._togglePaneVisible();\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage()\r\n },\r\n _show: function() {\r\n var delay = this.option(\"delay\");\r\n if (!delay) {\r\n return this.callBase()\r\n }\r\n var deferred = new Deferred;\r\n var callBase = this.callBase.bind(this);\r\n this._clearShowTimeout();\r\n this._showTimeout = setTimeout((function() {\r\n callBase().done((function() {\r\n deferred.resolve()\r\n }))\r\n }), delay);\r\n return deferred.promise()\r\n },\r\n _hide: function() {\r\n this._clearShowTimeout();\r\n return this.callBase()\r\n },\r\n _clearShowTimeout: function() {\r\n clearTimeout(this._showTimeout)\r\n },\r\n _renderMessage: function() {\r\n if (!this._$loadPanelContentWrapper) {\r\n return\r\n }\r\n var message = this.option(\"message\");\r\n if (!message) {\r\n return\r\n }\r\n var $message = $(\"
\").addClass(LOADPANEL_MESSAGE_CLASS).text(message);\r\n this._$loadPanelContentWrapper.append($message)\r\n },\r\n _renderLoadIndicator: function() {\r\n if (!this._$loadPanelContentWrapper || !this.option(\"showIndicator\")) {\r\n return\r\n }\r\n if (!this._$indicator) {\r\n this._$indicator = $(\"
\").addClass(LOADPANEL_INDICATOR_CLASS).appendTo(this._$loadPanelContentWrapper)\r\n }\r\n this._createComponent(this._$indicator, LoadIndicator, {\r\n indicatorSrc: this.option(\"indicatorSrc\")\r\n })\r\n },\r\n _cleanPreviousContent: function() {\r\n this.$content().find(\".\" + LOADPANEL_MESSAGE_CLASS).remove();\r\n this.$content().find(\".\" + LOADPANEL_INDICATOR_CLASS).remove();\r\n delete this._$indicator\r\n },\r\n _togglePaneVisible: function() {\r\n this.$content().toggleClass(LOADPANEL_PANE_HIDDEN_CLASS, !this.option(\"showPane\"))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"delay\":\r\n break;\r\n case \"message\":\r\n case \"showIndicator\":\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage();\r\n break;\r\n case \"showPane\":\r\n this._togglePaneVisible();\r\n break;\r\n case \"indicatorSrc\":\r\n this._renderLoadIndicator();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dispose: function() {\r\n this._clearShowTimeout();\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxLoadPanel\", LoadPanel);\r\nexport default LoadPanel;\r\n","/**\r\n * DevExtreme (esm/core/utils/queue.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../errors\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\n\r\nfunction createQueue(discardPendingTasks) {\r\n var _tasks = [];\r\n var _busy = false;\r\n\r\n function exec() {\r\n while (_tasks.length) {\r\n _busy = true;\r\n var task = _tasks.shift();\r\n var result = task();\r\n if (void 0 === result) {\r\n continue\r\n }\r\n if (result.then) {\r\n when(result).always(exec);\r\n return\r\n }\r\n throw errors.Error(\"E0015\")\r\n }\r\n _busy = false\r\n }\r\n return {\r\n add: function(task, removeTaskCallback) {\r\n if (!discardPendingTasks) {\r\n _tasks.push(task)\r\n } else {\r\n if (_tasks[0] && removeTaskCallback) {\r\n removeTaskCallback(_tasks[0])\r\n }\r\n _tasks = [task]\r\n }\r\n if (!_busy) {\r\n exec()\r\n }\r\n },\r\n busy: function() {\r\n return _busy\r\n }\r\n }\r\n}\r\nexport {\r\n createQueue as create\r\n};\r\nexport var enqueue = createQueue().add;\r\n","/**\r\n * DevExtreme (esm/data/data_source/operation_manager.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n CANCELED_TOKEN\r\n} from \"./utils\";\r\nexport default class OperationManager {\r\n constructor() {\r\n this._counter = -1;\r\n this._deferreds = {}\r\n }\r\n add(deferred) {\r\n this._counter++;\r\n this._deferreds[this._counter] = deferred;\r\n return this._counter\r\n }\r\n remove(operationId) {\r\n return delete this._deferreds[operationId]\r\n }\r\n cancel(operationId) {\r\n if (operationId in this._deferreds) {\r\n this._deferreds[operationId].reject(CANCELED_TOKEN);\r\n return true\r\n }\r\n return false\r\n }\r\n cancelAll() {\r\n while (this._counter > -1) {\r\n this.cancel(this._counter);\r\n this._counter--\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/data/data_source/data_source.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n executeAsync\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isString,\r\n isNumeric,\r\n isBoolean,\r\n isDefined,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport dataUtils from \"../utils\";\r\nimport {\r\n applyBatch\r\n} from \"../array_utils\";\r\nimport CustomStore from \"../custom_store\";\r\nimport {\r\n EventsStrategy\r\n} from \"../../core/events_strategy\";\r\nimport {\r\n errors\r\n} from \"../errors\";\r\nimport {\r\n isEmpty\r\n} from \"../../core/utils/array\";\r\nimport {\r\n create\r\n} from \"../../core/utils/queue\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport OperationManager from \"./operation_manager\";\r\nimport {\r\n normalizeDataSourceOptions,\r\n normalizeStoreLoadOptionAccessorArguments,\r\n CANCELED_TOKEN,\r\n isPending,\r\n normalizeLoadResult,\r\n mapDataRespectingGrouping\r\n} from \"./utils\";\r\nexport var DataSource = Class.inherit({\r\n ctor(options) {\r\n var _options$reshapeOnPus;\r\n options = normalizeDataSourceOptions(options);\r\n this._eventsStrategy = new EventsStrategy(this, {\r\n syncStrategy: true\r\n });\r\n this._store = options.store;\r\n this._changedTime = 0;\r\n var needThrottling = 0 !== options.pushAggregationTimeout;\r\n if (needThrottling) {\r\n var throttlingTimeout = void 0 === options.pushAggregationTimeout ? () => 5 * this._changedTime : options.pushAggregationTimeout;\r\n var pushDeferred;\r\n var lastPushWaiters;\r\n var throttlingPushHandler = dataUtils.throttleChanges(changes => {\r\n pushDeferred.resolve();\r\n var storePushPending = when(...lastPushWaiters);\r\n storePushPending.done(() => this._onPush(changes));\r\n lastPushWaiters = void 0;\r\n pushDeferred = void 0\r\n }, throttlingTimeout);\r\n this._onPushHandler = args => {\r\n this._aggregationTimeoutId = throttlingPushHandler(args.changes);\r\n if (!pushDeferred) {\r\n pushDeferred = new Deferred\r\n }\r\n lastPushWaiters = args.waitFor;\r\n args.waitFor.push(pushDeferred.promise())\r\n };\r\n this._store.on(\"beforePush\", this._onPushHandler)\r\n } else {\r\n this._onPushHandler = changes => this._onPush(changes);\r\n this._store.on(\"push\", this._onPushHandler)\r\n }\r\n this._storeLoadOptions = this._extractLoadOptions(options);\r\n this._mapFunc = options.map;\r\n this._postProcessFunc = options.postProcess;\r\n this._pageIndex = void 0 !== options.pageIndex ? options.pageIndex : 0;\r\n this._pageSize = void 0 !== options.pageSize ? options.pageSize : 20;\r\n this._loadingCount = 0;\r\n this._loadQueue = this._createLoadQueue();\r\n this._searchValue = \"searchValue\" in options ? options.searchValue : null;\r\n this._searchOperation = options.searchOperation || \"contains\";\r\n this._searchExpr = options.searchExpr;\r\n this._paginate = options.paginate;\r\n this._reshapeOnPush = null !== (_options$reshapeOnPus = options.reshapeOnPush) && void 0 !== _options$reshapeOnPus ? _options$reshapeOnPus : false;\r\n each([\"onChanged\", \"onLoadError\", \"onLoadingChanged\", \"onCustomizeLoadResult\", \"onCustomizeStoreLoadOptions\"], (_, optionName) => {\r\n if (optionName in options) {\r\n this.on(optionName.substr(2, 1).toLowerCase() + optionName.substr(3), options[optionName])\r\n }\r\n });\r\n this._operationManager = new OperationManager;\r\n this._init()\r\n },\r\n _init() {\r\n this._items = [];\r\n this._userData = {};\r\n this._totalCount = -1;\r\n this._isLoaded = false;\r\n if (!isDefined(this._paginate)) {\r\n this._paginate = !this.group()\r\n }\r\n this._isLastPage = !this._paginate\r\n },\r\n dispose() {\r\n var _this$_delayedLoadTas;\r\n this._store.off(\"beforePush\", this._onPushHandler);\r\n this._store.off(\"push\", this._onPushHandler);\r\n this._eventsStrategy.dispose();\r\n clearTimeout(this._aggregationTimeoutId);\r\n delete this._store;\r\n null === (_this$_delayedLoadTas = this._delayedLoadTask) || void 0 === _this$_delayedLoadTas ? void 0 : _this$_delayedLoadTas.abort();\r\n this._operationManager.cancelAll();\r\n this._disposed = true\r\n },\r\n _extractLoadOptions(options) {\r\n var result = {};\r\n var names = [\"sort\", \"filter\", \"select\", \"group\", \"requireTotalCount\"];\r\n var customNames = this._store._customLoadOptions();\r\n if (customNames) {\r\n names = names.concat(customNames)\r\n }\r\n each(names, (function() {\r\n result[this] = options[this]\r\n }));\r\n return result\r\n },\r\n loadOptions() {\r\n return this._storeLoadOptions\r\n },\r\n items() {\r\n return this._items\r\n },\r\n pageIndex(newIndex) {\r\n if (!isNumeric(newIndex)) {\r\n return this._pageIndex\r\n }\r\n this._pageIndex = newIndex;\r\n this._isLastPage = !this._paginate\r\n },\r\n paginate(value) {\r\n if (!isBoolean(value)) {\r\n return this._paginate\r\n }\r\n if (this._paginate !== value) {\r\n this._paginate = value;\r\n this.pageIndex(0)\r\n }\r\n },\r\n pageSize(value) {\r\n if (!isNumeric(value)) {\r\n return this._pageSize\r\n }\r\n this._pageSize = value\r\n },\r\n isLastPage() {\r\n return this._isLastPage\r\n },\r\n generateStoreLoadOptionAccessor(optionName) {\r\n return args => {\r\n var normalizedArgs = normalizeStoreLoadOptionAccessorArguments(args);\r\n if (void 0 === normalizedArgs) {\r\n return this._storeLoadOptions[optionName]\r\n }\r\n this._storeLoadOptions[optionName] = normalizedArgs\r\n }\r\n },\r\n sort() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n return this.generateStoreLoadOptionAccessor(\"sort\")(args)\r\n },\r\n filter() {\r\n var newFilter = normalizeStoreLoadOptionAccessorArguments(arguments);\r\n if (void 0 === newFilter) {\r\n return this._storeLoadOptions.filter\r\n }\r\n this._storeLoadOptions.filter = newFilter;\r\n this.pageIndex(0)\r\n },\r\n group() {\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2]\r\n }\r\n return this.generateStoreLoadOptionAccessor(\"group\")(args)\r\n },\r\n select() {\r\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\r\n args[_key3] = arguments[_key3]\r\n }\r\n return this.generateStoreLoadOptionAccessor(\"select\")(args)\r\n },\r\n requireTotalCount(value) {\r\n if (!isBoolean(value)) {\r\n return this._storeLoadOptions.requireTotalCount\r\n }\r\n this._storeLoadOptions.requireTotalCount = value\r\n },\r\n searchValue(value) {\r\n if (arguments.length < 1) {\r\n return this._searchValue\r\n }\r\n this._searchValue = value;\r\n this.pageIndex(0)\r\n },\r\n searchOperation(op) {\r\n if (!isString(op)) {\r\n return this._searchOperation\r\n }\r\n this._searchOperation = op;\r\n this.pageIndex(0)\r\n },\r\n searchExpr(expr) {\r\n var argc = arguments.length;\r\n if (0 === argc) {\r\n return this._searchExpr\r\n }\r\n if (argc > 1) {\r\n expr = [].slice.call(arguments)\r\n }\r\n this._searchExpr = expr;\r\n this.pageIndex(0)\r\n },\r\n store() {\r\n return this._store\r\n },\r\n key() {\r\n var _this$_store;\r\n return null === (_this$_store = this._store) || void 0 === _this$_store ? void 0 : _this$_store.key()\r\n },\r\n totalCount() {\r\n return this._totalCount\r\n },\r\n isLoaded() {\r\n return this._isLoaded\r\n },\r\n isLoading() {\r\n return this._loadingCount > 0\r\n },\r\n beginLoading() {\r\n this._changeLoadingCount(1)\r\n },\r\n endLoading() {\r\n this._changeLoadingCount(-1)\r\n },\r\n _createLoadQueue: () => create(),\r\n _changeLoadingCount(increment) {\r\n var oldLoading = this.isLoading();\r\n this._loadingCount += increment;\r\n var newLoading = this.isLoading();\r\n if (oldLoading ^ newLoading) {\r\n this._eventsStrategy.fireEvent(\"loadingChanged\", [newLoading])\r\n }\r\n },\r\n _scheduleLoadCallbacks(deferred) {\r\n this.beginLoading();\r\n deferred.always(() => {\r\n this.endLoading()\r\n })\r\n },\r\n _scheduleFailCallbacks(deferred) {\r\n var _this = this;\r\n deferred.fail((function() {\r\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\r\n args[_key4] = arguments[_key4]\r\n }\r\n if (args[0] === CANCELED_TOKEN) {\r\n return\r\n }\r\n _this._eventsStrategy.fireEvent(\"loadError\", args)\r\n }))\r\n },\r\n _fireChanged(args) {\r\n var date = new Date;\r\n this._eventsStrategy.fireEvent(\"changed\", args);\r\n this._changedTime = new Date - date\r\n },\r\n _scheduleChangedCallbacks(deferred) {\r\n deferred.done(() => this._fireChanged())\r\n },\r\n loadSingle(propName, propValue) {\r\n var d = new Deferred;\r\n var key = this.key();\r\n var store = this._store;\r\n var options = this._createStoreLoadOptions();\r\n this._scheduleFailCallbacks(d);\r\n if (arguments.length < 2) {\r\n propValue = propName;\r\n propName = key\r\n }\r\n delete options.skip;\r\n delete options.group;\r\n delete options.refresh;\r\n delete options.pageIndex;\r\n delete options.searchString;\r\n (() => {\r\n if (propName === key || store instanceof CustomStore && !store._byKeyViaLoad()) {\r\n return store.byKey(propValue, options)\r\n }\r\n options.take = 1;\r\n options.filter = options.filter ? [options.filter, [propName, propValue]] : [propName, propValue];\r\n return store.load(options)\r\n })().fail(d.reject).done(data => {\r\n if (!isDefined(data) || isEmpty(data)) {\r\n d.reject(new errors.Error(\"E4009\"))\r\n } else {\r\n if (!Array.isArray(data)) {\r\n data = [data]\r\n }\r\n d.resolve(this._applyMapFunction(data)[0])\r\n }\r\n });\r\n return d.promise()\r\n },\r\n load() {\r\n var d = new Deferred;\r\n var loadTask = () => {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (!isPending(d)) {\r\n return\r\n }\r\n return this._loadFromStore(loadOperation, d)\r\n };\r\n this._scheduleLoadCallbacks(d);\r\n this._scheduleFailCallbacks(d);\r\n this._scheduleChangedCallbacks(d);\r\n var loadOperation = this._createLoadOperation(d);\r\n this._eventsStrategy.fireEvent(\"customizeStoreLoadOptions\", [loadOperation]);\r\n this._loadQueue.add(() => {\r\n if (\"number\" === typeof loadOperation.delay) {\r\n this._delayedLoadTask = executeAsync(loadTask, loadOperation.delay)\r\n } else {\r\n loadTask()\r\n }\r\n return d.promise()\r\n });\r\n return d.promise({\r\n operationId: loadOperation.operationId\r\n })\r\n },\r\n _onPush(changes) {\r\n if (this._reshapeOnPush) {\r\n this.load()\r\n } else {\r\n this._eventsStrategy.fireEvent(\"changing\", [{\r\n changes: changes\r\n }]);\r\n var group = this.group();\r\n var items = this.items();\r\n var groupLevel = 0;\r\n var dataSourceChanges = this.paginate() || group ? changes.filter(item => \"update\" === item.type) : changes;\r\n if (group) {\r\n groupLevel = Array.isArray(group) ? group.length : 1\r\n }\r\n if (this._mapFunc) {\r\n dataSourceChanges.forEach(item => {\r\n if (\"insert\" === item.type) {\r\n item.data = this._mapFunc(item.data)\r\n }\r\n })\r\n }\r\n applyBatch({\r\n keyInfo: this.store(),\r\n data: items,\r\n changes: dataSourceChanges,\r\n groupCount: groupLevel,\r\n useInsertIndex: true\r\n });\r\n this._fireChanged([{\r\n changes: changes\r\n }])\r\n }\r\n },\r\n _createLoadOperation(deferred) {\r\n var operationId = this._operationManager.add(deferred);\r\n var storeLoadOptions = this._createStoreLoadOptions();\r\n deferred.always(() => this._operationManager.remove(operationId));\r\n return {\r\n operationId: operationId,\r\n storeLoadOptions: storeLoadOptions\r\n }\r\n },\r\n reload() {\r\n var store = this.store();\r\n if (store instanceof CustomStore) {\r\n store.clearRawDataCache()\r\n }\r\n this._init();\r\n return this.load()\r\n },\r\n cancel(operationId) {\r\n return this._operationManager.cancel(operationId)\r\n },\r\n cancelAll() {\r\n return this._operationManager.cancelAll()\r\n },\r\n _addSearchOptions(storeLoadOptions) {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (this.store()._useDefaultSearch) {\r\n this._addSearchFilter(storeLoadOptions)\r\n } else {\r\n storeLoadOptions.searchOperation = this._searchOperation;\r\n storeLoadOptions.searchValue = this._searchValue;\r\n storeLoadOptions.searchExpr = this._searchExpr\r\n }\r\n },\r\n _createStoreLoadOptions() {\r\n var result = extend({}, this._storeLoadOptions);\r\n this._addSearchOptions(result);\r\n if (this._paginate) {\r\n if (this._pageSize) {\r\n result.skip = this._pageIndex * this._pageSize;\r\n result.take = this._pageSize\r\n }\r\n }\r\n result.userData = this._userData;\r\n return result\r\n },\r\n _addSearchFilter(storeLoadOptions) {\r\n var value = this._searchValue;\r\n var op = this._searchOperation;\r\n var selector = this._searchExpr;\r\n var searchFilter = [];\r\n if (!value) {\r\n return\r\n }\r\n if (!selector) {\r\n selector = \"this\"\r\n }\r\n if (!Array.isArray(selector)) {\r\n selector = [selector]\r\n }\r\n each(selector, (function(i, item) {\r\n if (searchFilter.length) {\r\n searchFilter.push(\"or\")\r\n }\r\n searchFilter.push([item, op, value])\r\n }));\r\n if (storeLoadOptions.filter) {\r\n storeLoadOptions.filter = [searchFilter, storeLoadOptions.filter]\r\n } else {\r\n storeLoadOptions.filter = searchFilter\r\n }\r\n },\r\n _loadFromStore(loadOptions, pendingDeferred) {\r\n var handleSuccess = (data, extra) => {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (!isPending(pendingDeferred)) {\r\n return\r\n }\r\n var loadResult = extend(normalizeLoadResult(data, extra), loadOptions);\r\n this._eventsStrategy.fireEvent(\"customizeLoadResult\", [loadResult]);\r\n when(loadResult.data).done(data => {\r\n loadResult.data = data;\r\n this._processStoreLoadResult(loadResult, pendingDeferred)\r\n }).fail(pendingDeferred.reject)\r\n };\r\n if (loadOptions.data) {\r\n return (new Deferred).resolve(loadOptions.data).done(handleSuccess)\r\n }\r\n return this.store().load(loadOptions.storeLoadOptions).done(handleSuccess).fail(pendingDeferred.reject)\r\n },\r\n _processStoreLoadResult(loadResult, pendingDeferred) {\r\n var data = loadResult.data;\r\n var extra = loadResult.extra;\r\n var storeLoadOptions = loadResult.storeLoadOptions;\r\n var resolvePendingDeferred = () => {\r\n this._isLoaded = true;\r\n this._totalCount = isFinite(extra.totalCount) ? extra.totalCount : -1;\r\n return pendingDeferred.resolve(data, extra)\r\n };\r\n if (this._disposed) {\r\n return\r\n }\r\n data = this._applyPostProcessFunction(this._applyMapFunction(data));\r\n if (!isPlainObject(extra)) {\r\n extra = {}\r\n }\r\n this._items = data;\r\n if (!data.length || !this._paginate || this._pageSize && data.length < this._pageSize) {\r\n this._isLastPage = true\r\n }\r\n if (storeLoadOptions.requireTotalCount && !isFinite(extra.totalCount)) {\r\n (() => {\r\n this.store().totalCount(storeLoadOptions).done((function(count) {\r\n extra.totalCount = count;\r\n resolvePendingDeferred()\r\n })).fail(pendingDeferred.reject)\r\n })()\r\n } else {\r\n resolvePendingDeferred()\r\n }\r\n },\r\n _applyMapFunction(data) {\r\n if (this._mapFunc) {\r\n return mapDataRespectingGrouping(data, this._mapFunc, this.group())\r\n }\r\n return data\r\n },\r\n _applyPostProcessFunction(data) {\r\n if (this._postProcessFunc) {\r\n return this._postProcessFunc(data)\r\n }\r\n return data\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/icon.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nvar ICON_CLASS = \"dx-icon\";\r\nvar SVG_ICON_CLASS = \"dx-svg-icon\";\r\nexport var getImageSourceType = source => {\r\n if (!source || \"string\" !== typeof source) {\r\n return false\r\n }\r\n if (/^\\s*]*>(.|\\r?\\n)*?<\\/svg>\\s*$/i.test(source)) {\r\n return \"svg\"\r\n }\r\n if (/data:.*base64|\\.|[^<\\s]\\//.test(source)) {\r\n return \"image\"\r\n }\r\n if (/^[\\w-_]+$/.test(source)) {\r\n return \"dxIcon\"\r\n }\r\n if (/^\\s?([\\w-_]\\s?)+$/.test(source)) {\r\n return \"fontIcon\"\r\n }\r\n return false\r\n};\r\nexport var getImageContainer = source => {\r\n switch (getImageSourceType(source)) {\r\n case \"image\":\r\n return $(\"\").attr(\"src\", source).addClass(ICON_CLASS);\r\n case \"fontIcon\":\r\n return $(\"\").addClass(\"\".concat(ICON_CLASS, \" \").concat(source));\r\n case \"dxIcon\":\r\n return $(\"\").addClass(\"\".concat(ICON_CLASS, \" \").concat(ICON_CLASS, \"-\").concat(source));\r\n case \"svg\":\r\n return $(\"\").addClass(\"\".concat(ICON_CLASS, \" \").concat(SVG_ICON_CLASS)).append(source);\r\n default:\r\n return null\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/html_parser.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n merge\r\n} from \"./array\";\r\nimport domAdapter from \"../dom_adapter\";\r\nvar isTagName = /<([a-z][^/\\0>\\x20\\t\\r\\n\\f]+)/i;\r\nvar tagWrappers = {\r\n default: {\r\n tagsCount: 0,\r\n startTags: \"\",\r\n endTags: \"\"\r\n },\r\n thead: {\r\n tagsCount: 1,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n },\r\n td: {\r\n tagsCount: 3,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n },\r\n col: {\r\n tagsCount: 2,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n },\r\n tr: {\r\n tagsCount: 2,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n }\r\n};\r\ntagWrappers.tbody = tagWrappers.colgroup = tagWrappers.caption = tagWrappers.tfoot = tagWrappers.thead;\r\ntagWrappers.th = tagWrappers.td;\r\nexport var parseHTML = function(html) {\r\n if (\"string\" !== typeof html) {\r\n return null\r\n }\r\n var fragment = domAdapter.createDocumentFragment();\r\n var container = fragment.appendChild(domAdapter.createElement(\"div\"));\r\n var tags = isTagName.exec(html);\r\n var firstRootTag = tags && tags[1].toLowerCase();\r\n var tagWrapper = tagWrappers[firstRootTag] || tagWrappers.default;\r\n container.innerHTML = tagWrapper.startTags + html + tagWrapper.endTags;\r\n for (var i = 0; i < tagWrapper.tagsCount; i++) {\r\n container = container.lastChild\r\n }\r\n return merge([], container.childNodes)\r\n};\r\nexport var isTablePart = function(html) {\r\n var tags = isTagName.exec(html);\r\n return tags && tags[1] in tagWrappers\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getImageContainer\r\n} from \"../../core/utils/icon\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n end as swipeEventEnd\r\n} from \"../../events/swipe\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport devices from \"../../core/devices\";\r\nimport ListItem from \"./item\";\r\nimport Button from \"../button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n current,\r\n isMaterial\r\n} from \"../themes\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport ScrollView from \"../scroll_view\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"../scroll_view/ui.scrollable.device\";\r\nimport CollectionWidget from \"../collection/ui.collection_widget.live_update\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport DataConverterMixin from \"../shared/grouped_data_converter_mixin\";\r\nvar LIST_CLASS = \"dx-list\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTOR = \".\" + LIST_ITEM_CLASS;\r\nvar LIST_ITEM_ICON_CONTAINER_CLASS = \"dx-list-item-icon-container\";\r\nvar LIST_ITEM_ICON_CLASS = \"dx-list-item-icon\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar LIST_GROUP_HEADER_CLASS = \"dx-list-group-header\";\r\nvar LIST_GROUP_BODY_CLASS = \"dx-list-group-body\";\r\nvar LIST_COLLAPSIBLE_GROUPS_CLASS = \"dx-list-collapsible-groups\";\r\nvar LIST_GROUP_COLLAPSED_CLASS = \"dx-list-group-collapsed\";\r\nvar LIST_GROUP_HEADER_INDICATOR_CLASS = \"dx-list-group-header-indicator\";\r\nvar LIST_HAS_NEXT_CLASS = \"dx-has-next\";\r\nvar LIST_NEXT_BUTTON_CLASS = \"dx-list-next-button\";\r\nvar WRAP_ITEM_TEXT_CLASS = \"dx-wrap-item-text\";\r\nvar SELECT_ALL_ITEM_SELECTOR = \".dx-list-select-all\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar LIST_FEEDBACK_SHOW_TIMEOUT = 70;\r\nvar groupItemsGetter = compileGetter(\"items\");\r\nvar _scrollView;\r\nexport var ListBase = CollectionWidget.inherit({\r\n _activeStateUnit: [LIST_ITEM_SELECTOR, SELECT_ALL_ITEM_SELECTOR].join(\",\"),\r\n _supportedKeys: function() {\r\n var that = this;\r\n var moveFocusPerPage = function(direction) {\r\n var $item = getEdgeVisibleItem(direction);\r\n var isFocusedItem = $item.is(that.option(\"focusedElement\"));\r\n if (isFocusedItem) {\r\n ! function($item, direction) {\r\n var resultPosition = $item.position().top;\r\n if (\"prev\" === direction) {\r\n resultPosition = $item.position().top - that.$element().height() + $item.outerHeight()\r\n }\r\n that.scrollTo(resultPosition)\r\n }($item, direction);\r\n $item = getEdgeVisibleItem(direction)\r\n }\r\n that.option(\"focusedElement\", getPublicElement($item));\r\n that.scrollToItem($item)\r\n };\r\n\r\n function getEdgeVisibleItem(direction) {\r\n var scrollTop = that.scrollTop();\r\n var containerHeight = that.$element().height();\r\n var $item = $(that.option(\"focusedElement\"));\r\n var isItemVisible = true;\r\n if (!$item.length) {\r\n return $()\r\n }\r\n while (isItemVisible) {\r\n var $nextItem = $item[direction]();\r\n if (!$nextItem.length) {\r\n break\r\n }\r\n var nextItemLocation = $nextItem.position().top + $nextItem.outerHeight() / 2;\r\n isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop;\r\n if (isItemVisible) {\r\n $item = $nextItem\r\n }\r\n }\r\n return $item\r\n }\r\n return extend(this.callBase(), {\r\n leftArrow: noop,\r\n rightArrow: noop,\r\n pageUp: function() {\r\n moveFocusPerPage(\"prev\");\r\n return false\r\n },\r\n pageDown: function() {\r\n moveFocusPerPage(\"next\");\r\n return false\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n pullRefreshEnabled: false,\r\n scrollingEnabled: true,\r\n showScrollbar: \"onScroll\",\r\n useNativeScrolling: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n pullingDownText: messageLocalization.format(\"dxList-pullingDownText\"),\r\n pulledDownText: messageLocalization.format(\"dxList-pulledDownText\"),\r\n refreshingText: messageLocalization.format(\"dxList-refreshingText\"),\r\n pageLoadingText: messageLocalization.format(\"dxList-pageLoadingText\"),\r\n onScroll: null,\r\n onPullRefresh: null,\r\n onPageLoading: null,\r\n pageLoadMode: \"scrollBottom\",\r\n nextButtonText: messageLocalization.format(\"dxList-nextButtonText\"),\r\n onItemSwipe: null,\r\n grouped: false,\r\n onGroupRendered: null,\r\n collapsibleGroups: false,\r\n groupTemplate: \"group\",\r\n indicateLoading: true,\r\n activeStateEnabled: true,\r\n _itemAttributes: {\r\n role: \"option\"\r\n },\r\n _listAttributes: {\r\n role: \"listbox\"\r\n },\r\n useInkRipple: false,\r\n wrapItemText: false,\r\n _swipeEnabled: true,\r\n _revertPageOnEmptyLoad: false,\r\n showChevronExpr: function(data) {\r\n return data ? data.showChevron : void 0\r\n },\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = current();\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNativeScrolling: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !nativeScrolling && !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n showScrollbar: \"onHover\",\r\n pageLoadMode: \"nextButton\"\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n pageLoadingText: \"\",\r\n useInkRipple: true\r\n }\r\n }])\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateLoadingState(true)\r\n }\r\n },\r\n _itemClass: function() {\r\n return LIST_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return LIST_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$container\r\n },\r\n _saveSelectionChangeEvent: function(e) {\r\n this._selectionChangeEventInstance = e\r\n },\r\n _getSelectionChangeEvent: function() {\r\n return this._selectionChangeEventInstance\r\n },\r\n _refreshItemElements: function() {\r\n if (!this.option(\"grouped\")) {\r\n this._itemElementsCache = this._itemContainer().children(this._itemSelector())\r\n } else {\r\n this._itemElementsCache = this._itemContainer().children(\".\" + LIST_GROUP_CLASS).children(\".\" + LIST_GROUP_BODY_CLASS).children(this._itemSelector())\r\n }\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var promise = this.callBase(itemElement, toItemElement);\r\n return promise.done((function() {\r\n this._refreshItemElements()\r\n }))\r\n },\r\n deleteItem: function(itemElement) {\r\n var promise = this.callBase(itemElement);\r\n return promise.done((function() {\r\n this._refreshItemElements()\r\n }))\r\n },\r\n _itemElements: function() {\r\n return this._itemElementsCache\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return true\r\n },\r\n _resetDataSourcePageIndex: function() {\r\n var currentDataSource = this.getDataSource();\r\n if (currentDataSource && 0 !== currentDataSource.pageIndex()) {\r\n currentDataSource.pageIndex(0);\r\n currentDataSource.load()\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._resetDataSourcePageIndex();\r\n this._$container = this.$element();\r\n this._initScrollView();\r\n this._feedbackShowTimeout = LIST_FEEDBACK_SHOW_TIMEOUT;\r\n this._createGroupRenderAction()\r\n },\r\n _scrollBottomMode: function() {\r\n return \"scrollBottom\" === this.option(\"pageLoadMode\")\r\n },\r\n _nextButtonMode: function() {\r\n return \"nextButton\" === this.option(\"pageLoadMode\")\r\n },\r\n _dataSourceOptions: function() {\r\n var scrollBottom = this._scrollBottomMode();\r\n var nextButton = this._nextButtonMode();\r\n return extend(this.callBase(), {\r\n paginate: ensureDefined(scrollBottom || nextButton, true)\r\n })\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _getGroupContainerByIndex: function(groupIndex) {\r\n return this._itemContainer().find(\".\".concat(LIST_GROUP_CLASS)).eq(groupIndex).find(\".\".concat(LIST_GROUP_BODY_CLASS))\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _initScrollView: function() {\r\n var scrollingEnabled = this.option(\"scrollingEnabled\");\r\n var pullRefreshEnabled = scrollingEnabled && this.option(\"pullRefreshEnabled\");\r\n var autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataSource;\r\n this._scrollView = this._createComponent(this.$element(), getScrollView(), {\r\n disabled: this.option(\"disabled\") || !scrollingEnabled,\r\n onScroll: this._scrollHandler.bind(this),\r\n onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null,\r\n onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null,\r\n showScrollbar: this.option(\"showScrollbar\"),\r\n useNative: this.option(\"useNativeScrolling\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n pullingDownText: this.option(\"pullingDownText\"),\r\n pulledDownText: this.option(\"pulledDownText\"),\r\n refreshingText: this.option(\"refreshingText\"),\r\n reachBottomText: this.option(\"pageLoadingText\"),\r\n useKeyboard: false\r\n });\r\n this._$container = $(this._scrollView.content());\r\n if (this.option(\"wrapItemText\")) {\r\n this._$container.addClass(WRAP_ITEM_TEXT_CLASS)\r\n }\r\n this._createScrollViewActions()\r\n },\r\n _createScrollViewActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\");\r\n this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n },\r\n _scrollHandler: function(e) {\r\n this._scrollAction && this._scrollAction(e)\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n group: new BindableTemplate((function($container, data) {\r\n if (isPlainObject(data)) {\r\n if (data.key) {\r\n $container.text(data.key)\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n }), [\"key\"], this.option(\"integrationOptions.watchMethod\"))\r\n });\r\n this.callBase()\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n this.callBase(data, $container);\r\n if (data.icon) {\r\n var $icon = getImageContainer(data.icon).addClass(LIST_ITEM_ICON_CLASS);\r\n var $iconContainer = $(\"
\").addClass(LIST_ITEM_ICON_CONTAINER_CLASS);\r\n $iconContainer.append($icon);\r\n $container.prepend($iconContainer)\r\n }\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\", \"icon\"]\r\n },\r\n _updateLoadingState: function(tryLoadMore) {\r\n var isDataLoaded = !tryLoadMore || this._isLastPage();\r\n var scrollBottomMode = this._scrollBottomMode();\r\n var stopLoading = isDataLoaded || !scrollBottomMode;\r\n var hideLoadIndicator = stopLoading && !this._isDataSourceLoading();\r\n if (stopLoading || this._scrollViewIsFull()) {\r\n this._scrollView.release(hideLoadIndicator);\r\n this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());\r\n this._loadIndicationSuppressed(false)\r\n } else {\r\n this._infiniteDataLoading()\r\n }\r\n },\r\n _shouldRenderNextButton: function() {\r\n return this._nextButtonMode() && this._dataSource && this._dataSource.isLoaded()\r\n },\r\n _isDataSourceFirstLoadCompleted: function(newValue) {\r\n if (isDefined(newValue)) {\r\n this._isFirstLoadCompleted = newValue\r\n }\r\n return this._isFirstLoadCompleted\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n if (this._loadIndicationSuppressed()) {\r\n return\r\n }\r\n if (isLoading && this.option(\"indicateLoading\")) {\r\n this._showLoadingIndicatorTimer = setTimeout(function() {\r\n var isEmpty = !this._itemElements().length;\r\n var shouldIndicateLoading = !isEmpty || this._isDataSourceFirstLoadCompleted();\r\n if (shouldIndicateLoading) {\r\n var _this$_scrollView;\r\n null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView ? void 0 : _this$_scrollView.startLoading()\r\n }\r\n }.bind(this))\r\n } else {\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this._scrollView && this._scrollView.finishLoading()\r\n }\r\n if (!isLoading) {\r\n this._isDataSourceFirstLoadCompleted(false)\r\n }\r\n },\r\n _dataSourceChangedHandler: function() {\r\n if (!this._shouldAppendItems() && hasWindow()) {\r\n this._scrollView && this._scrollView.scrollTo(0)\r\n }\r\n this.callBase.apply(this, arguments);\r\n this._isDataSourceFirstLoadCompleted(true)\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._fireContentReadyAction()\r\n },\r\n _hideLoadingIfLoadIndicationOff: function() {\r\n if (!this.option(\"indicateLoading\")) {\r\n this._dataSourceLoadingChangedHandler(false)\r\n }\r\n },\r\n _loadIndicationSuppressed: function(value) {\r\n if (!arguments.length) {\r\n return this._isLoadIndicationSuppressed\r\n }\r\n this._isLoadIndicationSuppressed = value\r\n },\r\n _scrollViewIsFull: function() {\r\n return !this._scrollView || this._scrollView.isFull()\r\n },\r\n _pullDownHandler: function(e) {\r\n this._pullRefreshAction(e);\r\n if (this._dataSource && !this._isDataSourceLoading()) {\r\n this._clearSelectedItems();\r\n this._dataSource.pageIndex(0);\r\n this._dataSource.reload()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _infiniteDataLoading: function() {\r\n var isElementVisible = this.$element().is(\":visible\");\r\n if (isElementVisible && !this._scrollViewIsFull() && !this._isDataSourceLoading() && !this._isLastPage()) {\r\n clearTimeout(this._loadNextPageTimer);\r\n this._loadNextPageTimer = setTimeout(() => {\r\n this._loadNextPage().done(this._setPreviousPageIfNewIsEmpty.bind(this))\r\n })\r\n }\r\n },\r\n _setPreviousPageIfNewIsEmpty: function(result) {\r\n if (this.option(\"_revertPageOnEmptyLoad\")) {\r\n var dataSource = this.getDataSource();\r\n var pageIndex = null === dataSource || void 0 === dataSource ? void 0 : dataSource.pageIndex();\r\n if (0 === (null === result || void 0 === result ? void 0 : result.length) && pageIndex > 0) {\r\n this._fireContentReadyAction();\r\n dataSource.pageIndex(pageIndex - 1)\r\n }\r\n }\r\n },\r\n _scrollBottomHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n if (!this._isDataSourceLoading() && !this._isLastPage()) {\r\n this._loadNextPage()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (this.option(\"grouped\")) {\r\n each(items, this._renderGroup.bind(this));\r\n this._attachGroupCollapseEvent();\r\n this._renderEmptyMessage();\r\n if (isMaterial()) {\r\n this.attachGroupHeaderInkRippleEvents()\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n _attachGroupCollapseEvent: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n var collapsibleGroups = this.option(\"collapsibleGroups\");\r\n $element.toggleClass(LIST_COLLAPSIBLE_GROUPS_CLASS, collapsibleGroups);\r\n eventsEngine.off($element, eventName, selector);\r\n if (collapsibleGroups) {\r\n eventsEngine.on($element, eventName, selector, function(e) {\r\n this._createAction(function(e) {\r\n var $group = $(e.event.currentTarget).parent();\r\n this._collapseGroupHandler($group);\r\n if (this.option(\"focusStateEnabled\")) {\r\n this.option(\"focusedElement\", getPublicElement($group.find(\".\" + LIST_ITEM_CLASS).eq(0)))\r\n }\r\n }.bind(this), {\r\n validatingTargetName: \"element\"\r\n })({\r\n event: e\r\n })\r\n }.bind(this))\r\n }\r\n },\r\n _collapseGroupHandler: function($group, toggle) {\r\n var deferred = new Deferred;\r\n if ($group.hasClass(LIST_GROUP_COLLAPSED_CLASS) === toggle) {\r\n return deferred.resolve()\r\n }\r\n var $groupBody = $group.children(\".\" + LIST_GROUP_BODY_CLASS);\r\n var startHeight = $groupBody.outerHeight();\r\n var endHeight = 0 === startHeight ? $groupBody.height(\"auto\").outerHeight() : 0;\r\n $group.toggleClass(LIST_GROUP_COLLAPSED_CLASS, toggle);\r\n fx.animate($groupBody, {\r\n type: \"custom\",\r\n from: {\r\n height: startHeight\r\n },\r\n to: {\r\n height: endHeight\r\n },\r\n duration: 200,\r\n complete: function() {\r\n this.updateDimensions();\r\n this._updateLoadingState();\r\n deferred.resolve()\r\n }.bind(this)\r\n });\r\n return deferred.promise()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n if (this._initialized) {\r\n this._renderEmptyMessage();\r\n this._updateLoadingState()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._itemElementsCache = $();\r\n this.$element().addClass(LIST_CLASS);\r\n this.callBase();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.setAria(\"role\", this.option(\"_listAttributes\").role)\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render()\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n var that = this;\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n if (isMaterial()) {\r\n this._inkRippleTimer = setTimeout((function() {\r\n that._inkRipple.showWave(config)\r\n }), LIST_FEEDBACK_SHOW_TIMEOUT / 2)\r\n } else {\r\n that._inkRipple.showWave(config)\r\n }\r\n } else {\r\n clearTimeout(this._inkRippleTimer);\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this._refreshItemElements();\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"_swipeEnabled\")) {\r\n this._attachSwipeEvent($(args.itemElement))\r\n }\r\n },\r\n _attachSwipeEvent: function($itemElement) {\r\n var endEventName = addNamespace(swipeEventEnd, this.NAME);\r\n eventsEngine.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n this._itemDXEventHandler(e, \"onItemSwipe\", {\r\n direction: e.offset < 0 ? \"left\" : \"right\"\r\n })\r\n },\r\n _nextButtonHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n var source = this._dataSource;\r\n if (source && !source.isLoading()) {\r\n this._scrollView.toggleLoading(true);\r\n this._$nextButton.detach();\r\n this._loadIndicationSuppressed(true);\r\n this._loadNextPage()\r\n }\r\n },\r\n _renderGroup: function(index, group) {\r\n var $groupElement = $(\"
\").addClass(LIST_GROUP_CLASS).appendTo(this._itemContainer());\r\n var $groupHeaderElement = $(\"
\").addClass(LIST_GROUP_HEADER_CLASS).appendTo($groupElement);\r\n var groupTemplateName = this.option(\"groupTemplate\");\r\n var groupTemplate = this._getTemplate(group.template || groupTemplateName, group, index, $groupHeaderElement);\r\n var renderArgs = {\r\n index: index,\r\n itemData: group,\r\n container: getPublicElement($groupHeaderElement)\r\n };\r\n this._createItemByTemplate(groupTemplate, renderArgs);\r\n if (isMaterial()) {\r\n $(\"
\").addClass(LIST_GROUP_HEADER_INDICATOR_CLASS).prependTo($groupHeaderElement)\r\n }\r\n this._renderingGroupIndex = index;\r\n var $groupBody = $(\"
\").addClass(LIST_GROUP_BODY_CLASS).appendTo($groupElement);\r\n each(groupItemsGetter(group) || [], function(index, item) {\r\n this._renderItem(index, item, $groupBody)\r\n }.bind(this));\r\n this._groupRenderAction({\r\n groupElement: getPublicElement($groupElement),\r\n groupIndex: index,\r\n groupData: group\r\n })\r\n },\r\n downInkRippleHandler: function(e) {\r\n this._toggleActiveState($(e.currentTarget), true, e)\r\n },\r\n upInkRippleHandler: function(e) {\r\n this._toggleActiveState($(e.currentTarget), false)\r\n },\r\n attachGroupHeaderInkRippleEvents: function() {\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this);\r\n this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this);\r\n var downArguments = [$element, \"dxpointerdown\", selector, this._downInkRippleHandler];\r\n var upArguments = [$element, \"dxpointerup dxpointerout\", selector, this._upInkRippleHandler];\r\n eventsEngine.off(...downArguments);\r\n eventsEngine.on(...downArguments);\r\n eventsEngine.off(...upArguments);\r\n eventsEngine.on(...upArguments)\r\n },\r\n _createGroupRenderAction: function() {\r\n this._groupRenderAction = this._createActionByOption(\"onGroupRendered\")\r\n },\r\n _clean: function() {\r\n clearTimeout(this._inkRippleTimer);\r\n if (this._$nextButton) {\r\n this._$nextButton.remove();\r\n this._$nextButton = null\r\n }\r\n delete this._inkRipple;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _dispose: function() {\r\n this._isDataSourceFirstLoadCompleted(false);\r\n clearTimeout(this._holdTimer);\r\n clearTimeout(this._loadNextPageTimer);\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this.callBase()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(value);\r\n this._scrollView.option(\"disabled\", value || !this.option(\"scrollingEnabled\"))\r\n },\r\n _toggleNextButton: function(value) {\r\n var dataSource = this._dataSource;\r\n var $nextButton = this._getNextButton();\r\n this.$element().toggleClass(LIST_HAS_NEXT_CLASS, value);\r\n if (value && dataSource && dataSource.isLoaded()) {\r\n $nextButton.appendTo(this._itemContainer())\r\n }\r\n if (!value) {\r\n $nextButton.detach()\r\n }\r\n },\r\n _getNextButton: function() {\r\n if (!this._$nextButton) {\r\n this._$nextButton = this._createNextButton()\r\n }\r\n return this._$nextButton\r\n },\r\n _createNextButton: function() {\r\n var $result = $(\"
\").addClass(LIST_NEXT_BUTTON_CLASS);\r\n var $button = $(\"
\").appendTo($result);\r\n this._createComponent($button, Button, {\r\n text: this.option(\"nextButtonText\"),\r\n onClick: this._nextButtonHandler.bind(this),\r\n type: isMaterial() ? \"default\" : void 0,\r\n integrationOptions: {}\r\n });\r\n return $result\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _refresh: function() {\r\n if (!hasWindow()) {\r\n this.callBase()\r\n } else {\r\n var scrollTop = this._scrollView.scrollTop();\r\n this.callBase();\r\n scrollTop && this._scrollView.scrollTo(scrollTop)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"pageLoadMode\":\r\n this._toggleNextButton(args.value);\r\n this._initScrollView();\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initScrollView();\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"items\":\r\n this.callBase(args);\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"pageLoadingText\":\r\n case \"showScrollbar\":\r\n case \"bounceEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"useNativeScrolling\":\r\n case \"scrollingEnabled\":\r\n case \"pullRefreshEnabled\":\r\n this._initScrollView();\r\n this._updateLoadingState();\r\n break;\r\n case \"nextButtonText\":\r\n case \"onItemSwipe\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"onScroll\":\r\n case \"onPullRefresh\":\r\n case \"onPageLoading\":\r\n this._createScrollViewActions();\r\n break;\r\n case \"grouped\":\r\n case \"collapsibleGroups\":\r\n case \"groupTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"wrapItemText\":\r\n this._$container.toggleClass(WRAP_ITEM_TEXT_CLASS, args.value);\r\n break;\r\n case \"onGroupRendered\":\r\n this._createGroupRenderAction();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"indicateLoading\":\r\n this._hideLoadingIfLoadIndicationOff();\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"rtlEnabled\":\r\n this._initScrollView();\r\n this.callBase(args);\r\n break;\r\n case \"showChevronExpr\":\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n case \"_swipeEnabled\":\r\n case \"_revertPageOnEmptyLoad\":\r\n case \"_listAttributes\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n if (!this.option(\"grouped\")) {\r\n return this.callBase($itemElement)\r\n }\r\n var $group = $itemElement.closest(\".\" + LIST_GROUP_CLASS);\r\n var $item = $group.find(\".\" + LIST_ITEM_CLASS);\r\n return extend(this.callBase($itemElement), {\r\n itemIndex: {\r\n group: $group.index(),\r\n item: $item.index($itemElement)\r\n }\r\n })\r\n },\r\n expandGroup: function(groupIndex) {\r\n var deferred = new Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, false).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n collapseGroup: function(groupIndex) {\r\n var deferred = new Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, true).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred\r\n },\r\n updateDimensions: function() {\r\n var that = this;\r\n var deferred = new Deferred;\r\n if (that._scrollView) {\r\n that._scrollView.update().done((function() {\r\n !that._scrollViewIsFull() && that._updateLoadingState(true);\r\n deferred.resolveWith(that)\r\n }))\r\n } else {\r\n deferred.resolveWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reload: function() {\r\n this.callBase();\r\n this.scrollTo(0);\r\n this._pullDownHandler()\r\n },\r\n repaint: function() {\r\n this.scrollTo(0);\r\n this.callBase()\r\n },\r\n scrollTop: function() {\r\n return this._scrollView.scrollOffset().top\r\n },\r\n clientHeight: function() {\r\n return this._scrollView.clientHeight()\r\n },\r\n scrollHeight: function() {\r\n return this._scrollView.scrollHeight()\r\n },\r\n scrollBy: function(distance) {\r\n this._scrollView.scrollBy(distance)\r\n },\r\n scrollTo: function(location) {\r\n this._scrollView.scrollTo(location)\r\n },\r\n scrollToItem: function(itemElement) {\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n this._scrollView.scrollToElement($item)\r\n }\r\n}).include(DataConverterMixin);\r\nListBase.ItemClass = ListItem;\r\n\r\nfunction getScrollView() {\r\n return _scrollView || ScrollView\r\n}\r\nexport function setScrollView(value) {\r\n _scrollView = value\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/item.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nvar LIST_ITEM_BADGE_CONTAINER_CLASS = \"dx-list-item-badge-container\";\r\nvar LIST_ITEM_BADGE_CLASS = \"dx-list-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar LIST_ITEM_CHEVRON_CONTAINER_CLASS = \"dx-list-item-chevron-container\";\r\nvar LIST_ITEM_CHEVRON_CLASS = \"dx-list-item-chevron\";\r\nvar ListItem = CollectionWidgetItem.inherit({\r\n _renderWatchers: function() {\r\n this.callBase();\r\n this._startWatcher(\"badge\", this._renderBadge.bind(this));\r\n this._startWatcher(\"showChevron\", this._renderShowChevron.bind(this))\r\n },\r\n _renderBadge: function(badge) {\r\n this._$element.children(\".\" + LIST_ITEM_BADGE_CONTAINER_CLASS).remove();\r\n if (!badge) {\r\n return\r\n }\r\n var $badge = $(\"
\").addClass(LIST_ITEM_BADGE_CONTAINER_CLASS).append($(\"
\").addClass(LIST_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge));\r\n var $chevron = this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).first();\r\n $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element)\r\n },\r\n _renderShowChevron: function(showChevron) {\r\n this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).remove();\r\n if (!showChevron) {\r\n return\r\n }\r\n var $chevronContainer = $(\"
\").addClass(LIST_ITEM_CHEVRON_CONTAINER_CLASS);\r\n var $chevron = $(\"
\").addClass(LIST_ITEM_CHEVRON_CLASS);\r\n $chevronContainer.append($chevron).appendTo(this._$element)\r\n }\r\n});\r\nexport default ListItem;\r\n","/**\r\n * DevExtreme (esm/ui/themes.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../core/devices\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport Promise from \"../core/polyfills/promise\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n parseHTML\r\n} from \"../core/utils/html_parser\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport readyCallbacks from \"../core/utils/ready_callbacks\";\r\nimport {\r\n value as viewPortValue,\r\n changeCallback,\r\n originalViewPort\r\n} from \"../core/utils/view_port\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n themeReadyCallback\r\n} from \"./themes_callback\";\r\nimport errors from \"./widget/ui.errors\";\r\nvar window = getWindow();\r\nvar ready = readyCallbacks.add;\r\nvar viewPort = viewPortValue;\r\nvar viewPortChanged = changeCallback;\r\nvar initDeferred = new Deferred;\r\nvar DX_LINK_SELECTOR = \"link[rel=dx-theme]\";\r\nvar THEME_ATTR = \"data-theme\";\r\nvar ACTIVE_ATTR = \"data-active\";\r\nvar DX_HAIRLINES_CLASS = \"dx-hairlines\";\r\nvar ANY_THEME = \"any\";\r\nvar context;\r\nvar $activeThemeLink;\r\nvar knownThemes;\r\nvar currentThemeName;\r\nvar pendingThemeName;\r\nvar defaultTimeout = 15e3;\r\nvar THEME_MARKER_PREFIX = \"dx.\";\r\n\r\nfunction readThemeMarker() {\r\n if (!hasWindow()) {\r\n return null\r\n }\r\n var element = $(\"
\", context).addClass(\"dx-theme-marker\").appendTo(context.documentElement);\r\n var result;\r\n try {\r\n result = window.getComputedStyle(element.get(0)).fontFamily;\r\n if (!result) {\r\n return null\r\n }\r\n result = result.replace(/[\"']/g, \"\");\r\n if (result.substr(0, THEME_MARKER_PREFIX.length) !== THEME_MARKER_PREFIX) {\r\n return null\r\n }\r\n return result.substr(THEME_MARKER_PREFIX.length)\r\n } finally {\r\n element.remove()\r\n }\r\n}\r\nexport function waitForThemeLoad(themeName) {\r\n var waitStartTime;\r\n var timerId;\r\n var intervalCleared = true;\r\n pendingThemeName = themeName;\r\n\r\n function handleLoaded() {\r\n pendingThemeName = null;\r\n clearInterval(timerId);\r\n intervalCleared = true;\r\n themeReadyCallback.fire();\r\n themeReadyCallback.empty();\r\n initDeferred.resolve()\r\n }\r\n if (isPendingThemeLoaded() || !defaultTimeout) {\r\n handleLoaded()\r\n } else {\r\n if (!intervalCleared) {\r\n if (pendingThemeName) {\r\n pendingThemeName = themeName\r\n }\r\n return\r\n }\r\n waitStartTime = Date.now();\r\n intervalCleared = false;\r\n timerId = setInterval((function() {\r\n var isLoaded = isPendingThemeLoaded();\r\n var isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout;\r\n if (isTimeout) {\r\n errors.log(\"W0004\", pendingThemeName)\r\n }\r\n if (isLoaded || isTimeout) {\r\n handleLoaded()\r\n }\r\n }), 10)\r\n }\r\n}\r\nexport function isPendingThemeLoaded() {\r\n if (!pendingThemeName) {\r\n return true\r\n }\r\n var anyThemePending = pendingThemeName === ANY_THEME;\r\n if (\"resolved\" === initDeferred.state() && anyThemePending) {\r\n return true\r\n }\r\n var themeMarker = readThemeMarker();\r\n if (themeMarker && anyThemePending) {\r\n return true\r\n }\r\n return themeMarker === pendingThemeName\r\n}\r\n\r\nfunction processMarkup() {\r\n var $allThemeLinks = $(DX_LINK_SELECTOR, context);\r\n if (!$allThemeLinks.length) {\r\n return\r\n }\r\n knownThemes = {};\r\n $activeThemeLink = $(parseHTML(\"\"), context);\r\n $allThemeLinks.each((function() {\r\n var link = $(this, context);\r\n var fullThemeName = link.attr(THEME_ATTR);\r\n var url = link.attr(\"href\");\r\n var isActive = \"true\" === link.attr(ACTIVE_ATTR);\r\n knownThemes[fullThemeName] = {\r\n url: url,\r\n isActive: isActive\r\n }\r\n }));\r\n $allThemeLinks.last().after($activeThemeLink);\r\n $allThemeLinks.remove()\r\n}\r\n\r\nfunction resolveFullThemeName(desiredThemeName) {\r\n var desiredThemeParts = desiredThemeName ? desiredThemeName.split(\".\") : [];\r\n var result = null;\r\n if (knownThemes) {\r\n if (desiredThemeName in knownThemes) {\r\n return desiredThemeName\r\n }\r\n each(knownThemes, (function(knownThemeName, themeData) {\r\n var knownThemeParts = knownThemeName.split(\".\");\r\n if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) {\r\n return\r\n }\r\n if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) {\r\n return\r\n }\r\n if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) {\r\n return\r\n }\r\n if (!result || themeData.isActive) {\r\n result = knownThemeName\r\n }\r\n if (themeData.isActive) {\r\n return false\r\n }\r\n }))\r\n }\r\n return result\r\n}\r\n\r\nfunction initContext(newContext) {\r\n try {\r\n if (newContext !== context) {\r\n knownThemes = null\r\n }\r\n } catch (x) {\r\n knownThemes = null\r\n }\r\n context = newContext\r\n}\r\nexport function init(options) {\r\n options = options || {};\r\n initContext(options.context || domAdapter.getDocument());\r\n if (!context) {\r\n return\r\n }\r\n processMarkup();\r\n currentThemeName = void 0;\r\n current(options)\r\n}\r\nexport function current(options) {\r\n if (!arguments.length) {\r\n currentThemeName = currentThemeName || readThemeMarker();\r\n return currentThemeName\r\n }\r\n detachCssClasses(viewPort());\r\n options = options || {};\r\n if (\"string\" === typeof options) {\r\n options = {\r\n theme: options\r\n }\r\n }\r\n var isAutoInit = options._autoInit;\r\n var loadCallback = options.loadCallback;\r\n var currentThemeData;\r\n currentThemeName = resolveFullThemeName(options.theme || currentThemeName);\r\n if (currentThemeName) {\r\n currentThemeData = knownThemes[currentThemeName]\r\n }\r\n if (loadCallback) {\r\n themeReadyCallback.add(loadCallback)\r\n }\r\n if (currentThemeData) {\r\n $activeThemeLink.attr(\"href\", knownThemes[currentThemeName].url);\r\n if (themeReadyCallback.has() || \"resolved\" !== initDeferred.state() || options._forceTimeout) {\r\n waitForThemeLoad(currentThemeName)\r\n }\r\n } else if (isAutoInit) {\r\n if (hasWindow()) {\r\n waitForThemeLoad(ANY_THEME)\r\n }\r\n themeReadyCallback.fire();\r\n themeReadyCallback.empty()\r\n } else {\r\n throw errors.Error(\"E0021\", currentThemeName)\r\n }\r\n initDeferred.done(() => attachCssClasses(originalViewPort(), currentThemeName))\r\n}\r\n\r\nfunction getCssClasses(themeName) {\r\n themeName = themeName || current();\r\n var result = [];\r\n var themeNameParts = themeName && themeName.split(\".\");\r\n if (themeNameParts) {\r\n result.push(\"dx-theme-\" + themeNameParts[0], \"dx-theme-\" + themeNameParts[0] + \"-typography\");\r\n if (themeNameParts.length > 1) {\r\n result.push(\"dx-color-scheme-\" + themeNameParts[1] + (isMaterial(themeName) ? \"-\" + themeNameParts[2] : \"\"))\r\n }\r\n }\r\n return result\r\n}\r\nvar themeClasses;\r\nexport function attachCssClasses(element, themeName) {\r\n themeClasses = getCssClasses(themeName).join(\" \");\r\n $(element).addClass(themeClasses);\r\n ! function() {\r\n var pixelRatio = hasWindow() && window.devicePixelRatio;\r\n if (!pixelRatio || pixelRatio < 2) {\r\n return\r\n }\r\n var $tester = $(\"
\");\r\n $tester.css(\"border\", \".5px solid transparent\");\r\n $(\"body\").append($tester);\r\n if (1 === $tester.outerHeight()) {\r\n $(element).addClass(DX_HAIRLINES_CLASS);\r\n themeClasses += \" \" + DX_HAIRLINES_CLASS\r\n }\r\n $tester.remove()\r\n }()\r\n}\r\nexport function detachCssClasses(element) {\r\n $(element).removeClass(themeClasses)\r\n}\r\n\r\nfunction themeReady(callback) {\r\n themeReadyCallback.add(callback)\r\n}\r\n\r\nfunction isTheme(themeRegExp, themeName) {\r\n if (!themeName) {\r\n themeName = currentThemeName || readThemeMarker()\r\n }\r\n return new RegExp(themeRegExp).test(themeName)\r\n}\r\nexport function isMaterial(themeName) {\r\n return isTheme(\"material\", themeName)\r\n}\r\nexport function isGeneric(themeName) {\r\n return isTheme(\"generic\", themeName)\r\n}\r\nexport function isDark(themeName) {\r\n return isTheme(\"dark\", themeName)\r\n}\r\nexport function isWebFontLoaded(text, fontWeight) {\r\n var document = domAdapter.getDocument();\r\n var testElement = document.createElement(\"span\");\r\n testElement.style.position = \"absolute\";\r\n testElement.style.top = \"-9999px\";\r\n testElement.style.left = \"-9999px\";\r\n testElement.style.visibility = \"hidden\";\r\n testElement.style.fontFamily = \"Arial\";\r\n testElement.style.fontSize = \"250px\";\r\n testElement.style.fontWeight = fontWeight;\r\n testElement.innerHTML = text;\r\n document.body.appendChild(testElement);\r\n var etalonFontWidth = testElement.offsetWidth;\r\n testElement.style.fontFamily = \"Roboto, RobotoFallback, Arial\";\r\n var testedFontWidth = testElement.offsetWidth;\r\n testElement.parentNode.removeChild(testElement);\r\n return etalonFontWidth !== testedFontWidth\r\n}\r\nexport function waitWebFont(text, fontWeight) {\r\n return new Promise(resolve => {\r\n var clear = () => {\r\n clearInterval(intervalId);\r\n clearTimeout(timeoutId);\r\n resolve()\r\n };\r\n var intervalId = setInterval(() => {\r\n if (isWebFontLoaded(text, fontWeight)) {\r\n clear()\r\n }\r\n }, 15);\r\n var timeoutId = setTimeout(clear, 2e3)\r\n })\r\n}\r\n\r\nfunction autoInit() {\r\n init({\r\n _autoInit: true,\r\n _forceTimeout: true\r\n });\r\n if ($(DX_LINK_SELECTOR, context).length) {\r\n throw errors.Error(\"E0022\")\r\n }\r\n}\r\nif (hasWindow()) {\r\n autoInit()\r\n} else {\r\n ready(autoInit)\r\n}\r\nviewPortChanged.add((function(viewPort, prevViewPort) {\r\n initDeferred.done((function() {\r\n detachCssClasses(prevViewPort);\r\n attachCssClasses(viewPort)\r\n }))\r\n}));\r\ndevices.changed.add((function() {\r\n init({\r\n _autoInit: true\r\n })\r\n}));\r\nexport {\r\n themeReady as ready\r\n};\r\nexport function resetTheme() {\r\n $activeThemeLink && $activeThemeLink.attr(\"href\", \"about:blank\");\r\n currentThemeName = null;\r\n pendingThemeName = null;\r\n initDeferred = new Deferred\r\n}\r\nexport function initialized(callback) {\r\n initDeferred.done(callback)\r\n}\r\nexport function setDefaultTimeout(timeout) {\r\n defaultTimeout = timeout\r\n}\r\nexport default {\r\n setDefaultTimeout: setDefaultTimeout,\r\n initialized: initialized,\r\n resetTheme: resetTheme,\r\n ready: themeReady,\r\n waitWebFont: waitWebFont,\r\n isWebFontLoaded: isWebFontLoaded,\r\n isDark: isDark,\r\n isGeneric: isGeneric,\r\n isMaterial: isMaterial,\r\n detachCssClasses: detachCssClasses,\r\n attachCssClasses: attachCssClasses,\r\n current: current,\r\n waitForThemeLoad: waitForThemeLoad,\r\n isPendingThemeLoaded: isPendingThemeLoaded\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/themes_callback.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Callbacks from \"../core/utils/callbacks\";\r\nexport var themeReadyCallback = new Callbacks;\r\n","/**\r\n * DevExtreme (esm/ui/box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n dasherize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n normalizeStyleProp,\r\n styleProp,\r\n stylePropPrefix\r\n} from \"../core/utils/style\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport browser from \"../core/utils/browser\";\r\nimport CollectionWidgetItem from \"./collection/item\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nvar BOX_CLASS = \"dx-box\";\r\nvar BOX_SELECTOR = \".dx-box\";\r\nvar BOX_ITEM_CLASS = \"dx-box-item\";\r\nvar BOX_ITEM_DATA_KEY = \"dxBoxItemData\";\r\nvar MINSIZE_MAP = {\r\n row: \"minWidth\",\r\n col: \"minHeight\"\r\n};\r\nvar MAXSIZE_MAP = {\r\n row: \"maxWidth\",\r\n col: \"maxHeight\"\r\n};\r\nvar SHRINK = 1;\r\nvar FLEX_JUSTIFY_CONTENT_MAP = {\r\n start: \"flex-start\",\r\n end: \"flex-end\",\r\n center: \"center\",\r\n \"space-between\": \"space-between\",\r\n \"space-around\": \"space-around\"\r\n};\r\nvar FLEX_ALIGN_ITEMS_MAP = {\r\n start: \"flex-start\",\r\n end: \"flex-end\",\r\n center: \"center\",\r\n stretch: \"stretch\"\r\n};\r\nvar FLEX_DIRECTION_MAP = {\r\n row: \"row\",\r\n col: \"column\"\r\n};\r\nvar setFlexProp = (element, prop, value) => {\r\n value = normalizeStyleProp(prop, value);\r\n element.style[styleProp(prop)] = value;\r\n if (!hasWindow()) {\r\n if (\"\" === value || !isDefined(value)) {\r\n return\r\n }\r\n var cssName = dasherize(prop);\r\n var styleExpr = cssName + \": \" + value + \";\";\r\n if (!element.attributes.style) {\r\n element.setAttribute(\"style\", styleExpr)\r\n } else if (element.attributes.style.value.indexOf(styleExpr) < 0) {\r\n element.attributes.style.value += \" \" + styleExpr\r\n }\r\n }\r\n};\r\nvar BOX_EVENTNAMESPACE = \"dxBox\";\r\nvar UPDATE_EVENT = \"dxupdate.\" + BOX_EVENTNAMESPACE;\r\nvar FALLBACK_BOX_ITEM = \"dx-box-fallback-item\";\r\nvar FALLBACK_WRAP_MAP = {\r\n row: \"nowrap\",\r\n col: \"normal\"\r\n};\r\nvar FALLBACK_MAIN_SIZE_MAP = {\r\n row: \"width\",\r\n col: \"height\"\r\n};\r\nvar FALLBACK_CROSS_SIZE_MAP = {\r\n row: \"height\",\r\n col: \"width\"\r\n};\r\nvar FALLBACK_PRE_MARGIN_MAP = {\r\n row: \"marginLeft\",\r\n col: \"marginTop\"\r\n};\r\nvar FALLBACK_POST_MARGIN_MAP = {\r\n row: \"marginRight\",\r\n col: \"marginBottom\"\r\n};\r\nvar FALLBACK_CROSS_PRE_MARGIN_MAP = {\r\n row: \"marginTop\",\r\n col: \"marginLeft\"\r\n};\r\nvar FALLBACK_CROSS_POST_MARGIN_MAP = {\r\n row: \"marginBottom\",\r\n col: \"marginRight\"\r\n};\r\nvar MARGINS_RTL_FLIP_MAP = {\r\n marginLeft: \"marginRight\",\r\n marginRight: \"marginLeft\"\r\n};\r\nclass BoxItem extends CollectionWidgetItem {\r\n _renderVisible(value, oldValue) {\r\n super._renderVisible(value);\r\n if (isDefined(oldValue)) {\r\n this._options.fireItemStateChangedAction({\r\n name: \"visible\",\r\n state: value,\r\n oldState: oldValue\r\n })\r\n }\r\n }\r\n}\r\nclass FlexLayoutStrategy {\r\n constructor($element, option) {\r\n this._$element = $element;\r\n this._option = option;\r\n this.initSize = noop;\r\n this.update = noop\r\n }\r\n renderBox() {\r\n this._$element.css({\r\n display: stylePropPrefix(\"flexDirection\") + \"flex\"\r\n });\r\n setFlexProp(this._$element.get(0), \"flexDirection\", FLEX_DIRECTION_MAP[this._option(\"direction\")])\r\n }\r\n renderAlign() {\r\n this._$element.css({\r\n justifyContent: this._normalizedAlign()\r\n })\r\n }\r\n _normalizedAlign() {\r\n var align = this._option(\"align\");\r\n return align in FLEX_JUSTIFY_CONTENT_MAP ? FLEX_JUSTIFY_CONTENT_MAP[align] : align\r\n }\r\n renderCrossAlign() {\r\n this._$element.css({\r\n alignItems: this._normalizedCrossAlign()\r\n })\r\n }\r\n _normalizedCrossAlign() {\r\n var crossAlign = this._option(\"crossAlign\");\r\n return crossAlign in FLEX_ALIGN_ITEMS_MAP ? FLEX_ALIGN_ITEMS_MAP[crossAlign] : crossAlign\r\n }\r\n renderItems($items) {\r\n var flexPropPrefix = stylePropPrefix(\"flexDirection\");\r\n var direction = this._option(\"direction\");\r\n each($items, (function() {\r\n var $item = $(this);\r\n var item = $item.data(BOX_ITEM_DATA_KEY);\r\n $item.css({\r\n display: flexPropPrefix + \"flex\"\r\n }).css(MAXSIZE_MAP[direction], item.maxSize || \"none\").css(MINSIZE_MAP[direction], item.minSize || \"0\");\r\n setFlexProp($item.get(0), \"flexBasis\", item.baseSize || 0);\r\n setFlexProp($item.get(0), \"flexGrow\", item.ratio);\r\n setFlexProp($item.get(0), \"flexShrink\", isDefined(item.shrink) ? item.shrink : SHRINK);\r\n $item.children().each((_, itemContent) => {\r\n $(itemContent).css({\r\n width: \"auto\",\r\n height: \"auto\",\r\n display: stylePropPrefix(\"flexDirection\") + \"flex\",\r\n flexBasis: 0\r\n });\r\n setFlexProp(itemContent, \"flexGrow\", 1);\r\n setFlexProp(itemContent, \"flexDirection\", $(itemContent)[0].style.flexDirection || \"column\")\r\n })\r\n }))\r\n }\r\n}\r\nclass FallbackLayoutStrategy {\r\n constructor($element, option) {\r\n this._$element = $element;\r\n this._option = option\r\n }\r\n renderBox() {\r\n this._$element.css({\r\n fontSize: 0,\r\n whiteSpace: FALLBACK_WRAP_MAP[this._option(\"direction\")],\r\n verticalAlign: \"top\"\r\n });\r\n eventsEngine.off(this._$element, UPDATE_EVENT);\r\n eventsEngine.on(this._$element, UPDATE_EVENT, this.update.bind(this))\r\n }\r\n renderAlign() {\r\n var $items = this._$items;\r\n if (!$items) {\r\n return\r\n }\r\n var align = this._option(\"align\");\r\n var totalItemSize = this.totalItemSize;\r\n var direction = this._option(\"direction\");\r\n var boxSize = this._$element[FALLBACK_MAIN_SIZE_MAP[direction]]();\r\n var freeSpace = boxSize - totalItemSize;\r\n var shift = 0;\r\n this._setItemsMargins($items, direction, 0);\r\n switch (align) {\r\n case \"start\":\r\n break;\r\n case \"end\":\r\n shift = freeSpace;\r\n $items.first().css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), shift);\r\n break;\r\n case \"center\":\r\n shift = .5 * freeSpace;\r\n $items.first().css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), shift);\r\n $items.last().css(this._chooseMarginSide(FALLBACK_POST_MARGIN_MAP[direction]), shift);\r\n break;\r\n case \"space-between\":\r\n shift = .5 * freeSpace / ($items.length - 1);\r\n this._setItemsMargins($items, direction, shift);\r\n $items.first().css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), 0);\r\n $items.last().css(this._chooseMarginSide(FALLBACK_POST_MARGIN_MAP[direction]), 0);\r\n break;\r\n case \"space-around\":\r\n shift = .5 * freeSpace / $items.length;\r\n this._setItemsMargins($items, direction, shift)\r\n }\r\n }\r\n _setItemsMargins($items, direction, shift) {\r\n $items.css(this._chooseMarginSide(FALLBACK_PRE_MARGIN_MAP[direction]), shift).css(this._chooseMarginSide(FALLBACK_POST_MARGIN_MAP[direction]), shift)\r\n }\r\n renderCrossAlign() {\r\n var $items = this._$items;\r\n if (!$items) {\r\n return\r\n }\r\n var crossAlign = this._option(\"crossAlign\");\r\n var direction = this._option(\"direction\");\r\n var size = this._$element[FALLBACK_CROSS_SIZE_MAP[direction]]();\r\n var that = this;\r\n switch (crossAlign) {\r\n case \"start\":\r\n break;\r\n case \"end\":\r\n each($items, (function() {\r\n var $item = $(this);\r\n var itemSize = $item[FALLBACK_CROSS_SIZE_MAP[direction]]();\r\n var shift = size - itemSize;\r\n $item.css(that._chooseMarginSide(FALLBACK_CROSS_PRE_MARGIN_MAP[direction]), shift)\r\n }));\r\n break;\r\n case \"center\":\r\n each($items, (function() {\r\n var $item = $(this);\r\n var itemSize = $item[FALLBACK_CROSS_SIZE_MAP[direction]]();\r\n var shift = .5 * (size - itemSize);\r\n $item.css(that._chooseMarginSide(FALLBACK_CROSS_PRE_MARGIN_MAP[direction]), shift).css(that._chooseMarginSide(FALLBACK_CROSS_POST_MARGIN_MAP[direction]), shift)\r\n }));\r\n break;\r\n case \"stretch\":\r\n $items.css(that._chooseMarginSide(FALLBACK_CROSS_PRE_MARGIN_MAP[direction]), 0).css(that._chooseMarginSide(FALLBACK_CROSS_POST_MARGIN_MAP[direction]), 0).css(FALLBACK_CROSS_SIZE_MAP[direction], \"100%\")\r\n }\r\n }\r\n _chooseMarginSide(value) {\r\n if (!this._option(\"rtlEnabled\")) {\r\n return value\r\n }\r\n return MARGINS_RTL_FLIP_MAP[value] || value\r\n }\r\n renderItems($items) {\r\n this._$items = $items;\r\n var direction = this._option(\"direction\");\r\n var totalRatio = 0;\r\n var totalWeightedShrink = 0;\r\n var totalBaseSize = 0;\r\n each($items, (_, item) => {\r\n var $item = $(item);\r\n $item.css({\r\n display: \"inline-block\",\r\n verticalAlign: \"top\"\r\n });\r\n $item[FALLBACK_MAIN_SIZE_MAP[direction]](\"auto\");\r\n $item.removeClass(FALLBACK_BOX_ITEM);\r\n var itemData = $item.data(BOX_ITEM_DATA_KEY);\r\n var ratio = itemData.ratio || 0;\r\n var size = this._baseSize($item);\r\n var shrink = isDefined(itemData.shrink) ? itemData.shrink : SHRINK;\r\n totalRatio += ratio;\r\n totalWeightedShrink += shrink * size;\r\n totalBaseSize += size\r\n });\r\n var freeSpaceSize = this._boxSize() - totalBaseSize;\r\n var itemSize = $item => {\r\n var itemData = $item.data(BOX_ITEM_DATA_KEY);\r\n var size = this._baseSize($item);\r\n var factor = freeSpaceSize >= 0 ? itemData.ratio || 0 : (isDefined(itemData.shrink) ? itemData.shrink : SHRINK) * size;\r\n var totalFactor = freeSpaceSize >= 0 ? totalRatio : totalWeightedShrink;\r\n var shift = totalFactor ? Math.round(freeSpaceSize * factor / totalFactor) : 0;\r\n return size + shift\r\n };\r\n var totalItemSize = 0;\r\n each($items, (_, item) => {\r\n var $item = $(item);\r\n var itemData = $(item).data(BOX_ITEM_DATA_KEY);\r\n var size = itemSize($item);\r\n totalItemSize += size;\r\n $item.css(MAXSIZE_MAP[direction], itemData.maxSize || \"none\").css(MINSIZE_MAP[direction], itemData.minSize || \"0\").css(FALLBACK_MAIN_SIZE_MAP[direction], size);\r\n $item.addClass(FALLBACK_BOX_ITEM)\r\n });\r\n this.totalItemSize = totalItemSize\r\n }\r\n _baseSize(item) {\r\n var itemData = $(item).data(BOX_ITEM_DATA_KEY);\r\n return null == itemData.baseSize ? 0 : \"auto\" === itemData.baseSize ? this._contentSize(item) : this._parseSize(itemData.baseSize)\r\n }\r\n _contentSize(item) {\r\n return $(item)[FALLBACK_MAIN_SIZE_MAP[this._option(\"direction\")]]()\r\n }\r\n _parseSize(size) {\r\n return String(size).match(/.+%$/) ? .01 * parseFloat(size) * this._boxSizeValue : size\r\n }\r\n _boxSize(value) {\r\n if (!arguments.length) {\r\n this._boxSizeValue = this._boxSizeValue || this._totalBaseSize();\r\n return this._boxSizeValue\r\n }\r\n this._boxSizeValue = value\r\n }\r\n _totalBaseSize() {\r\n var result = 0;\r\n each(this._$items, (_, item) => {\r\n result += this._baseSize(item)\r\n });\r\n return result\r\n }\r\n initSize() {\r\n this._boxSize(this._$element[FALLBACK_MAIN_SIZE_MAP[this._option(\"direction\")]]())\r\n }\r\n update() {\r\n if (!this._$items || this._$element.is(\":hidden\")) {\r\n return\r\n }\r\n this._$items.detach();\r\n this.initSize();\r\n this._$element.append(this._$items);\r\n this.renderItems(this._$items);\r\n this.renderAlign();\r\n this.renderCrossAlign();\r\n var element = this._$element.get(0);\r\n this._$items.find(BOX_SELECTOR).each((function() {\r\n if (element === $(this).parent().closest(BOX_SELECTOR).get(0)) {\r\n eventsEngine.triggerHandler(this, UPDATE_EVENT)\r\n }\r\n }))\r\n }\r\n}\r\nclass Box extends CollectionWidget {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n direction: \"row\",\r\n align: \"start\",\r\n crossAlign: \"stretch\",\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n onItemStateChanged: void 0,\r\n _layoutStrategy: \"flex\",\r\n _queue: void 0\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: function() {\r\n return browser.msie\r\n },\r\n options: {\r\n _layoutStrategy: \"fallback\"\r\n }\r\n }])\r\n }\r\n _itemClass() {\r\n return BOX_ITEM_CLASS\r\n }\r\n _itemDataKey() {\r\n return BOX_ITEM_DATA_KEY\r\n }\r\n _itemElements() {\r\n return this._itemContainer().children(this._itemSelector())\r\n }\r\n _init() {\r\n super._init();\r\n this.$element().addClass(\"\".concat(BOX_CLASS, \"-\").concat(this.option(\"_layoutStrategy\")));\r\n this._initLayout();\r\n this._initBoxQueue()\r\n }\r\n _initLayout() {\r\n this._layout = \"fallback\" === this.option(\"_layoutStrategy\") ? new FallbackLayoutStrategy(this.$element(), this.option.bind(this)) : new FlexLayoutStrategy(this.$element(), this.option.bind(this))\r\n }\r\n _initBoxQueue() {\r\n this._queue = this.option(\"_queue\") || []\r\n }\r\n _queueIsNotEmpty() {\r\n return this.option(\"_queue\") ? false : !!this._queue.length\r\n }\r\n _pushItemToQueue($item, config) {\r\n this._queue.push({\r\n $item: $item,\r\n config: config\r\n })\r\n }\r\n _shiftItemFromQueue() {\r\n return this._queue.shift()\r\n }\r\n _initMarkup() {\r\n this.$element().addClass(BOX_CLASS);\r\n this._layout.renderBox();\r\n super._initMarkup();\r\n this._renderAlign();\r\n this._renderActions()\r\n }\r\n _renderActions() {\r\n this._onItemStateChanged = this._createActionByOption(\"onItemStateChanged\")\r\n }\r\n _renderAlign() {\r\n this._layout.renderAlign();\r\n this._layout.renderCrossAlign()\r\n }\r\n _renderItems(items) {\r\n this._layout.initSize();\r\n super._renderItems(items);\r\n while (this._queueIsNotEmpty()) {\r\n var item = this._shiftItemFromQueue();\r\n this._createComponent(item.$item, Box, extend({\r\n _layoutStrategy: this.option(\"_layoutStrategy\"),\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n onItemHold: this.option(\"onItemHold\"),\r\n onItemClick: this.option(\"onItemClick\"),\r\n onItemContextMenu: this.option(\"onItemContextMenu\"),\r\n onItemRendered: this.option(\"onItemRendered\"),\r\n _queue: this._queue\r\n }, item.config))\r\n }\r\n this._layout.renderItems(this._itemElements());\r\n clearTimeout(this._updateTimer);\r\n this._updateTimer = setTimeout(() => {\r\n if (!this._isUpdated) {\r\n this._layout.update()\r\n }\r\n this._isUpdated = false;\r\n this._updateTimer = null\r\n })\r\n }\r\n _renderItemContent(args) {\r\n var $itemNode = args.itemData && args.itemData.node;\r\n if ($itemNode) {\r\n return this._renderItemContentByNode(args, $itemNode)\r\n }\r\n return super._renderItemContent(args)\r\n }\r\n _postprocessRenderItem(args) {\r\n var boxConfig = args.itemData.box;\r\n if (!boxConfig) {\r\n return\r\n }\r\n this._pushItemToQueue(args.itemContent, boxConfig)\r\n }\r\n _createItemByTemplate(itemTemplate, args) {\r\n if (args.itemData.box) {\r\n return itemTemplate.source ? itemTemplate.source() : $()\r\n }\r\n return super._createItemByTemplate(itemTemplate, args)\r\n }\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n }\r\n _dimensionChanged() {\r\n if (this._updateTimer) {\r\n return\r\n }\r\n this._isUpdated = true;\r\n this._layout.update()\r\n }\r\n _dispose() {\r\n clearTimeout(this._updateTimer);\r\n super._dispose.apply(this, arguments)\r\n }\r\n _itemOptionChanged(item, property, value, oldValue) {\r\n if (\"visible\" === property) {\r\n this._onItemStateChanged({\r\n name: property,\r\n state: value,\r\n oldState: false !== oldValue\r\n })\r\n }\r\n super._itemOptionChanged(item, property, value)\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"_layoutStrategy\":\r\n case \"_queue\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"align\":\r\n this._layout.renderAlign();\r\n break;\r\n case \"crossAlign\":\r\n this._layout.renderCrossAlign();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _itemOptions() {\r\n var options = super._itemOptions();\r\n options.fireItemStateChangedAction = e => {\r\n this._onItemStateChanged(e)\r\n };\r\n return options\r\n }\r\n repaint() {\r\n this._dimensionChanged()\r\n }\r\n}\r\nBox.ItemClass = BoxItem;\r\nregisterComponent(\"dxBox\", Box);\r\nexport default Box;\r\n","/**\r\n * DevExtreme (esm/ui/validation_summary.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nvar ITEM_CLASS = VALIDATION_SUMMARY_CLASS + \"-item\";\r\nvar ITEM_DATA_KEY = VALIDATION_SUMMARY_CLASS + \"-item-data\";\r\nvar ValidationSummary = CollectionWidget.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n focusStateEnabled: false,\r\n noDataText: null\r\n })\r\n },\r\n _setOptionsByReference() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n validationGroup: true\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initGroupRegistration()\r\n },\r\n _initGroupRegistration() {\r\n var $element = this.$element();\r\n var group = this.option(\"validationGroup\") || ValidationEngine.findGroup($element, this._modelByElement($element));\r\n var groupConfig = ValidationEngine.addGroup(group);\r\n this._unsubscribeGroup();\r\n this._groupWasInit = true;\r\n this._validationGroup = group;\r\n this.groupSubscription = this._groupValidationHandler.bind(this);\r\n groupConfig.on(\"validated\", this.groupSubscription)\r\n },\r\n _unsubscribeGroup() {\r\n var groupConfig = ValidationEngine.getGroupConfig(this._validationGroup);\r\n groupConfig && groupConfig.off(\"validated\", this.groupSubscription)\r\n },\r\n _getOrderedItems(validators, items) {\r\n var orderedItems = [];\r\n each(validators, (function(_, validator) {\r\n var foundItems = grep(items, (function(item) {\r\n if (item.validator === validator) {\r\n return true\r\n }\r\n }));\r\n if (foundItems.length) {\r\n orderedItems = orderedItems.concat(foundItems)\r\n }\r\n }));\r\n return orderedItems\r\n },\r\n _groupValidationHandler(params) {\r\n var items = this._getOrderedItems(params.validators, map(params.brokenRules, (function(rule) {\r\n return {\r\n text: rule.message,\r\n validator: rule.validator,\r\n index: rule.index\r\n }\r\n })));\r\n this.validators = params.validators;\r\n each(this.validators, (_, validator) => {\r\n if (validator._validationSummary !== this) {\r\n var handler = this._itemValidationHandler.bind(this);\r\n validator.on(\"validated\", handler);\r\n validator.on(\"disposing\", (function() {\r\n validator.off(\"validated\", handler);\r\n validator._validationSummary = null;\r\n handler = null\r\n }));\r\n validator._validationSummary = this\r\n }\r\n });\r\n this.option(\"items\", items)\r\n },\r\n _itemValidationHandler(_ref) {\r\n var {\r\n isValid: isValid,\r\n validator: validator,\r\n brokenRules: brokenRules\r\n } = _ref;\r\n var items = this.option(\"items\");\r\n var itemsChanged = false;\r\n var itemIndex = 0;\r\n var _loop = function() {\r\n var item = items[itemIndex];\r\n if (item.validator === validator) {\r\n var foundRule = grep(brokenRules || [], (function(rule) {\r\n return rule.index === item.index\r\n }))[0];\r\n if (isValid || !foundRule) {\r\n items.splice(itemIndex, 1);\r\n itemsChanged = true;\r\n return \"continue\"\r\n }\r\n if (foundRule.message !== item.text) {\r\n item.text = foundRule.message;\r\n itemsChanged = true\r\n }\r\n }\r\n itemIndex++\r\n };\r\n while (itemIndex < items.length) {\r\n var _ret = _loop();\r\n if (\"continue\" === _ret) {\r\n continue\r\n }\r\n }\r\n each(brokenRules, (function(_, rule) {\r\n var foundItem = grep(items, (function(item) {\r\n return item.validator === validator && item.index === rule.index\r\n }))[0];\r\n if (!foundItem) {\r\n items.push({\r\n text: rule.message,\r\n validator: validator,\r\n index: rule.index\r\n });\r\n itemsChanged = true\r\n }\r\n }));\r\n if (itemsChanged) {\r\n items = this._getOrderedItems(this.validators, items);\r\n this.option(\"items\", items)\r\n }\r\n },\r\n _initMarkup() {\r\n this.$element().addClass(VALIDATION_SUMMARY_CLASS);\r\n this.callBase()\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"validationGroup\":\r\n this._initGroupRegistration();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _itemClass: () => ITEM_CLASS,\r\n _itemDataKey: () => ITEM_DATA_KEY,\r\n _postprocessRenderItem(params) {\r\n eventsEngine.on(params.itemElement, \"click\", (function() {\r\n params.itemData.validator && params.itemData.validator.focus && params.itemData.validator.focus()\r\n }))\r\n },\r\n _dispose() {\r\n this.callBase();\r\n this._unsubscribeGroup()\r\n }\r\n});\r\nregisterComponent(\"dxValidationSummary\", ValidationSummary);\r\nexport default ValidationSummary;\r\n","/**\r\n * DevExtreme (esm/ui/popover.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n noop,\r\n pairToObject\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n move\r\n} from \"../animation/translator\";\r\nimport positionUtils from \"../animation/position\";\r\nimport {\r\n isObject,\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n fitIntoRange\r\n} from \"../core/utils/math\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport Popup from \"./popup\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n left: \"right\",\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n};\r\nvar WEIGHT_OF_SIDES = {\r\n left: -1,\r\n top: -1,\r\n center: 0,\r\n right: 1,\r\n bottom: 1\r\n};\r\nvar POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit flip\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit flip\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"flip fit\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"flip fit\"\r\n }\r\n};\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return isObject(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n var target = that.option(\"target\");\r\n var isSelector = isString(target);\r\n var event = getEventName(that, name + \"Event\");\r\n if (!event || that.option(\"disabled\")) {\r\n return\r\n }\r\n var eventName = addNamespace(event, that.NAME);\r\n var action = that._createAction(function() {\r\n var delay = getEventDelay(that, name + \"Event\");\r\n this._clearEventsTimeouts();\r\n if (delay) {\r\n this._timeouts[name] = setTimeout((function() {\r\n that[name]()\r\n }), delay)\r\n } else {\r\n that[name]()\r\n }\r\n }.bind(that), {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n action({\r\n event: e,\r\n target: $(e.currentTarget)\r\n })\r\n };\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (isSelector) {\r\n that[EVENT_HANDLER_NAME] = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, handler)\r\n } else {\r\n var targetElement = getPublicElement($(target));\r\n that[EVENT_HANDLER_NAME] = void 0;\r\n eventsEngine.on(targetElement, eventName, handler)\r\n }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n var eventName = event || getEventName(that, name + \"Event\");\r\n if (!eventName) {\r\n return\r\n }\r\n eventName = addNamespace(eventName, that.NAME);\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (that[EVENT_HANDLER_NAME]) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n } else {\r\n eventsEngine.off(getPublicElement($(target)), eventName)\r\n }\r\n};\r\nvar Popover = Popup.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n target: window,\r\n shading: false,\r\n position: \"bottom\",\r\n closeOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n to: 0\r\n }\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n fullScreen: false,\r\n closeOnTargetScroll: true,\r\n arrowPosition: \"\",\r\n arrowOffset: 0,\r\n boundaryOffset: {\r\n h: 10,\r\n v: 10\r\n },\r\n _fixedPosition: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return [{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n arrowPosition: {\r\n boundaryOffset: {\r\n h: 20,\r\n v: -10\r\n },\r\n collision: \"fit\"\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }]\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderArrow();\r\n this._timeouts = {};\r\n this.$element().addClass(POPOVER_CLASS);\r\n this.$wrapper().addClass(POPOVER_WRAPPER_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._detachEvents(this.option(\"target\"));\r\n this._attachEvents()\r\n },\r\n _detachEvents: function(target) {\r\n detachEvent(this, target, \"show\");\r\n detachEvent(this, target, \"hide\")\r\n },\r\n _attachEvents: function() {\r\n attachEvent(this, \"show\");\r\n attachEvent(this, \"hide\")\r\n },\r\n _renderArrow: function() {\r\n this._$arrow = $(\"
\").addClass(POPOVER_ARROW_CLASS).prependTo(this.$overlayContent())\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._isOutsideClick(e)) {\r\n return this.callBase(e)\r\n }\r\n return true\r\n },\r\n _isOutsideClick: function(e) {\r\n return !$(e.target).closest(this.option(\"target\")).length\r\n },\r\n _animate: function(animation) {\r\n if (animation && animation.to && \"object\" === typeof animation.to) {\r\n extend(animation.to, {\r\n position: this._getContainerPosition()\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _stopAnimation: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderTitle: function() {\r\n this.$wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n this.callBase()\r\n },\r\n _renderPosition: function() {\r\n this.callBase();\r\n this._renderOverlayPosition()\r\n },\r\n _renderOverlayBoundaryOffset: noop,\r\n _renderOverlayPosition: function() {\r\n this._resetOverlayPosition();\r\n this._updateContentSize();\r\n var contentPosition = this._getContainerPosition();\r\n var resultLocation = positionUtils.setup(this.$overlayContent(), contentPosition);\r\n var positionSide = this._getSideByLocation(resultLocation);\r\n this._togglePositionClass(\"dx-position-\" + positionSide);\r\n this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n if (isArrowVisible) {\r\n this._renderArrowPosition(positionSide)\r\n }\r\n },\r\n _resetOverlayPosition: function() {\r\n this._setContentHeight(true);\r\n this._togglePositionClass(\"dx-position-\" + this._positionSide);\r\n move(this.$overlayContent(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._$arrow.css({\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n left: \"auto\"\r\n })\r\n },\r\n _updateContentSize: function() {\r\n if (!this.$content()) {\r\n return\r\n }\r\n var containerLocation = positionUtils.calculate(this.$overlayContent(), this._getContainerPosition());\r\n if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n var newContainerWidth = this.$overlayContent().width() - containerLocation.h.oversize;\r\n this.$overlayContent().width(newContainerWidth)\r\n }\r\n if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n var newOverlayContentHeight = this.$overlayContent().height() - containerLocation.v.oversize;\r\n var newPopupContentHeight = this.$content().height() - containerLocation.v.oversize;\r\n this.$overlayContent().height(newOverlayContentHeight);\r\n this.$content().height(newPopupContentHeight)\r\n }\r\n },\r\n _getContainerPosition: function() {\r\n var offset = pairToObject(this._position.offset || \"\");\r\n var hOffset = offset.h;\r\n var vOffset = offset.v;\r\n var isVerticalSide = this._isVerticalSide();\r\n var isHorizontalSide = this._isHorizontalSide();\r\n if (isVerticalSide || isHorizontalSide) {\r\n var isPopoverInside = this._isPopoverInside();\r\n var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n var arrowSize = isVerticalSide ? this._$arrow.height() : this._$arrow.width();\r\n var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n }\r\n return extend({}, this._position, {\r\n offset: hOffset + \" \" + vOffset\r\n })\r\n },\r\n _getContentBorderWidth: function(side) {\r\n var borderWidth = this.$overlayContent().css(SIDE_BORDER_WIDTH_STYLES[side]);\r\n return parseInt(borderWidth) || 0\r\n },\r\n _getSideByLocation: function(location) {\r\n var isFlippedByVertical = location.v.flip;\r\n var isFlippedByHorizontal = location.h.flip;\r\n return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionSide] : this._positionSide\r\n },\r\n _togglePositionClass: function(positionClass) {\r\n this.$wrapper().removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n },\r\n _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n this.$wrapper().toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n },\r\n _renderArrowPosition: function(side) {\r\n var arrowRect = getBoundingRect(this._$arrow.get(0));\r\n var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n var $target = $(this._position.of);\r\n var targetOffset = positionUtils.offset($target) || {\r\n top: 0,\r\n left: 0\r\n };\r\n var contentOffset = positionUtils.offset(this.$overlayContent());\r\n var arrowSize = arrowRect[sizeProperty];\r\n var contentLocation = contentOffset[axis];\r\n var contentSize = getBoundingRect(this.$overlayContent().get(0))[sizeProperty];\r\n var targetLocation = targetOffset[axis];\r\n var targetSize = $target.get(0).preventDefault ? 0 : getBoundingRect($target.get(0))[sizeProperty];\r\n var min = Math.max(contentLocation, targetLocation);\r\n var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n var arrowLocation;\r\n if (\"start\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = min - contentLocation\r\n } else if (\"end\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = max - contentLocation - arrowSize\r\n } else {\r\n arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n }\r\n var borderWidth = this._getContentBorderWidth(side);\r\n var finalArrowLocation = fitIntoRange(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n this._$arrow.css(axis, finalArrowLocation)\r\n },\r\n _isPopoverInside: function() {\r\n var position = this._transformStringPosition(this.option(\"position\"), POSITION_ALIASES);\r\n var my = positionUtils.setup.normalizeAlign(position.my);\r\n var at = positionUtils.setup.normalizeAlign(position.at);\r\n return my.h === at.h && my.v === at.v\r\n },\r\n _setContentHeight: function(fullUpdate) {\r\n if (fullUpdate) {\r\n this.callBase()\r\n }\r\n },\r\n _renderWrapperPosition: function() {\r\n if (this.option(\"shading\")) {\r\n this.$wrapper().css({\r\n top: 0,\r\n left: 0\r\n })\r\n }\r\n },\r\n _renderWrapperDimensions: function() {\r\n if (this.option(\"shading\")) {\r\n this.$wrapper().css({\r\n width: \"100%\",\r\n height: \"100%\"\r\n })\r\n }\r\n },\r\n _normalizePosition: function() {\r\n var position = extend({}, this._transformStringPosition(this.option(\"position\"), POSITION_ALIASES));\r\n if (!position.of) {\r\n position.of = this.option(\"target\")\r\n }\r\n if (!position.collision) {\r\n position.collision = \"flip\"\r\n }\r\n if (!position.boundaryOffset) {\r\n position.boundaryOffset = this.option(\"boundaryOffset\")\r\n }\r\n this._positionSide = this._getDisplaySide(position);\r\n this._position = position\r\n },\r\n _getDisplaySide: function(position) {\r\n var my = positionUtils.setup.normalizeAlign(position.my);\r\n var at = positionUtils.setup.normalizeAlign(position.at);\r\n var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n return horizontalWeight > verticalWeight ? at.h : at.v\r\n },\r\n _isVerticalSide: function(side) {\r\n side = side || this._positionSide;\r\n return \"top\" === side || \"bottom\" === side\r\n },\r\n _isHorizontalSide: function(side) {\r\n side = side || this._positionSide;\r\n return \"left\" === side || \"right\" === side\r\n },\r\n _clearEventTimeout: function(name) {\r\n clearTimeout(this._timeouts[name])\r\n },\r\n _clearEventsTimeouts: function() {\r\n this._clearEventTimeout(\"show\");\r\n this._clearEventTimeout(\"hide\")\r\n },\r\n _clean: function() {\r\n this._detachEvents(this.option(\"target\"));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"boundaryOffset\":\r\n case \"arrowPosition\":\r\n case \"arrowOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"fullScreen\":\r\n if (args.value) {\r\n this.option(\"fullScreen\", false)\r\n }\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachEvents(args.previousValue);\r\n this.callBase(args);\r\n break;\r\n case \"showEvent\":\r\n case \"hideEvent\":\r\n var name = args.name.substring(0, 4);\r\n var event = getEventNameByOption(args.previousValue);\r\n this.hide();\r\n detachEvent(this, this.option(\"target\"), name, event);\r\n attachEvent(this, name);\r\n break;\r\n case \"visible\":\r\n this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n show: function(target) {\r\n if (target) {\r\n this.option(\"target\", target)\r\n }\r\n return this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxPopover\", Popover);\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/events/drag.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n data as elementData,\r\n removeData\r\n} from \"../core/element_data\";\r\nimport {\r\n wrapToArray,\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport * as iteratorUtils from \"../core/utils/iterator\";\r\nimport {\r\n contains\r\n} from \"../core/utils/dom\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n eventData as eData,\r\n fireEvent\r\n} from \"./utils/index\";\r\nimport GestureEmitter from \"./gesture/emitter.gesture\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar DRAG_START_EVENT = \"dxdragstart\";\r\nvar DRAG_EVENT = \"dxdrag\";\r\nvar DRAG_END_EVENT = \"dxdragend\";\r\nvar DRAG_ENTER_EVENT = \"dxdragenter\";\r\nvar DRAG_LEAVE_EVENT = \"dxdragleave\";\r\nvar DROP_EVENT = \"dxdrop\";\r\nvar DX_DRAG_EVENTS_COUNT_KEY = \"dxDragEventsCount\";\r\nvar knownDropTargets = [];\r\nvar knownDropTargetSelectors = [];\r\nvar knownDropTargetConfigs = [];\r\nvar dropTargetRegistration = {\r\n setup: function(element, data) {\r\n var knownDropTarget = -1 !== inArray(element, knownDropTargets);\r\n if (!knownDropTarget) {\r\n knownDropTargets.push(element);\r\n knownDropTargetSelectors.push([]);\r\n knownDropTargetConfigs.push(data || {})\r\n }\r\n },\r\n add: function(element, handleObj) {\r\n var index = inArray(element, knownDropTargets);\r\n this.updateEventsCounter(element, handleObj.type, 1);\r\n var selector = handleObj.selector;\r\n if (-1 === inArray(selector, knownDropTargetSelectors[index])) {\r\n knownDropTargetSelectors[index].push(selector)\r\n }\r\n },\r\n updateEventsCounter: function(element, event, value) {\r\n if ([DRAG_ENTER_EVENT, DRAG_LEAVE_EVENT, DROP_EVENT].indexOf(event) > -1) {\r\n var eventsCount = elementData(element, DX_DRAG_EVENTS_COUNT_KEY) || 0;\r\n elementData(element, DX_DRAG_EVENTS_COUNT_KEY, Math.max(0, eventsCount + value))\r\n }\r\n },\r\n remove: function(element, handleObj) {\r\n this.updateEventsCounter(element, handleObj.type, -1)\r\n },\r\n teardown: function(element) {\r\n var handlersCount = elementData(element, DX_DRAG_EVENTS_COUNT_KEY);\r\n if (!handlersCount) {\r\n var index = inArray(element, knownDropTargets);\r\n knownDropTargets.splice(index, 1);\r\n knownDropTargetSelectors.splice(index, 1);\r\n knownDropTargetConfigs.splice(index, 1);\r\n removeData(element, DX_DRAG_EVENTS_COUNT_KEY)\r\n }\r\n }\r\n};\r\nregisterEvent(DRAG_ENTER_EVENT, dropTargetRegistration);\r\nregisterEvent(DRAG_LEAVE_EVENT, dropTargetRegistration);\r\nregisterEvent(DROP_EVENT, dropTargetRegistration);\r\nvar getItemDelegatedTargets = function($element) {\r\n var dropTargetIndex = inArray($element.get(0), knownDropTargets);\r\n var dropTargetSelectors = knownDropTargetSelectors[dropTargetIndex].filter(selector => selector);\r\n var $delegatedTargets = $element.find(dropTargetSelectors.join(\", \"));\r\n if (-1 !== inArray(void 0, knownDropTargetSelectors[dropTargetIndex])) {\r\n $delegatedTargets = $delegatedTargets.add($element)\r\n }\r\n return $delegatedTargets\r\n};\r\nvar getItemConfig = function($element) {\r\n var dropTargetIndex = inArray($element.get(0), knownDropTargets);\r\n return knownDropTargetConfigs[dropTargetIndex]\r\n};\r\nvar getItemPosition = function(dropTargetConfig, $element) {\r\n if (dropTargetConfig.itemPositionFunc) {\r\n return dropTargetConfig.itemPositionFunc($element)\r\n } else {\r\n return $element.offset()\r\n }\r\n};\r\nvar getItemSize = function(dropTargetConfig, $element) {\r\n if (dropTargetConfig.itemSizeFunc) {\r\n return dropTargetConfig.itemSizeFunc($element)\r\n }\r\n return {\r\n width: $element.get(0).getBoundingClientRect().width,\r\n height: $element.get(0).getBoundingClientRect().height\r\n }\r\n};\r\nvar DragEmitter = GestureEmitter.inherit({\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this.direction = \"both\"\r\n },\r\n _init: function(e) {\r\n this._initEvent = e\r\n },\r\n _start: function(e) {\r\n e = this._fireEvent(DRAG_START_EVENT, this._initEvent);\r\n this._maxLeftOffset = e.maxLeftOffset;\r\n this._maxRightOffset = e.maxRightOffset;\r\n this._maxTopOffset = e.maxTopOffset;\r\n this._maxBottomOffset = e.maxBottomOffset;\r\n var dropTargets = wrapToArray(e.targetElements || (null === e.targetElements ? [] : knownDropTargets));\r\n this._dropTargets = iteratorUtils.map(dropTargets, (function(element) {\r\n return $(element).get(0)\r\n }))\r\n },\r\n _move: function(e) {\r\n var eventData = eData(e);\r\n var dragOffset = this._calculateOffset(eventData);\r\n e = this._fireEvent(DRAG_EVENT, e, {\r\n offset: dragOffset\r\n });\r\n this._processDropTargets(e);\r\n if (!e._cancelPreventDefault) {\r\n e.preventDefault()\r\n }\r\n },\r\n _calculateOffset: function(eventData) {\r\n return {\r\n x: this._calculateXOffset(eventData),\r\n y: this._calculateYOffset(eventData)\r\n }\r\n },\r\n _calculateXOffset: function(eventData) {\r\n if (\"vertical\" !== this.direction) {\r\n var offset = eventData.x - this._startEventData.x;\r\n return this._fitOffset(offset, this._maxLeftOffset, this._maxRightOffset)\r\n }\r\n return 0\r\n },\r\n _calculateYOffset: function(eventData) {\r\n if (\"horizontal\" !== this.direction) {\r\n var offset = eventData.y - this._startEventData.y;\r\n return this._fitOffset(offset, this._maxTopOffset, this._maxBottomOffset)\r\n }\r\n return 0\r\n },\r\n _fitOffset: function(offset, minOffset, maxOffset) {\r\n if (null != minOffset) {\r\n offset = Math.max(offset, -minOffset)\r\n }\r\n if (null != maxOffset) {\r\n offset = Math.min(offset, maxOffset)\r\n }\r\n return offset\r\n },\r\n _processDropTargets: function(e) {\r\n var target = this._findDropTarget(e);\r\n var sameTarget = target === this._currentDropTarget;\r\n if (!sameTarget) {\r\n this._fireDropTargetEvent(e, DRAG_LEAVE_EVENT);\r\n this._currentDropTarget = target;\r\n this._fireDropTargetEvent(e, DRAG_ENTER_EVENT)\r\n }\r\n },\r\n _fireDropTargetEvent: function(event, eventName) {\r\n if (!this._currentDropTarget) {\r\n return\r\n }\r\n var eventData = {\r\n type: eventName,\r\n originalEvent: event,\r\n draggingElement: this._$element.get(0),\r\n target: this._currentDropTarget\r\n };\r\n fireEvent(eventData)\r\n },\r\n _findDropTarget: function(e) {\r\n var that = this;\r\n var result;\r\n iteratorUtils.each(knownDropTargets, (function(_, target) {\r\n if (!that._checkDropTargetActive(target)) {\r\n return\r\n }\r\n var $target = $(target);\r\n iteratorUtils.each(getItemDelegatedTargets($target), (function(_, delegatedTarget) {\r\n var $delegatedTarget = $(delegatedTarget);\r\n if (that._checkDropTarget(getItemConfig($target), $delegatedTarget, $(result), e)) {\r\n result = delegatedTarget\r\n }\r\n }))\r\n }));\r\n return result\r\n },\r\n _checkDropTargetActive: function(target) {\r\n var active = false;\r\n iteratorUtils.each(this._dropTargets, (function(_, activeTarget) {\r\n active = active || activeTarget === target || contains(activeTarget, target);\r\n return !active\r\n }));\r\n return active\r\n },\r\n _checkDropTarget: function(config, $target, $prevTarget, e) {\r\n var isDraggingElement = $target.get(0) === $(e.target).get(0);\r\n if (isDraggingElement) {\r\n return false\r\n }\r\n var targetPosition = getItemPosition(config, $target);\r\n if (e.pageX < targetPosition.left) {\r\n return false\r\n }\r\n if (e.pageY < targetPosition.top) {\r\n return false\r\n }\r\n var targetSize = getItemSize(config, $target);\r\n if (e.pageX > targetPosition.left + targetSize.width) {\r\n return false\r\n }\r\n if (e.pageY > targetPosition.top + targetSize.height) {\r\n return false\r\n }\r\n if ($prevTarget.length && $prevTarget.closest($target).length) {\r\n return false\r\n }\r\n if (config.checkDropTarget && !config.checkDropTarget($target, e)) {\r\n return false\r\n }\r\n return $target\r\n },\r\n _end: function(e) {\r\n var eventData = eData(e);\r\n this._fireEvent(DRAG_END_EVENT, e, {\r\n offset: this._calculateOffset(eventData)\r\n });\r\n this._fireDropTargetEvent(e, DROP_EVENT);\r\n delete this._currentDropTarget\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: DragEmitter,\r\n events: [DRAG_START_EVENT, DRAG_EVENT, DRAG_END_EVENT]\r\n});\r\nexport {\r\n DRAG_EVENT as move, DRAG_START_EVENT as start, DRAG_END_EVENT as end, DRAG_ENTER_EVENT as enter, DRAG_LEAVE_EVENT as leave, DROP_EVENT as drop\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/validation_message.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Overlay from \"./overlay/ui.overlay\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n encodeHtml\r\n} from \"../core/utils/string\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../core/utils/position\";\r\nvar INVALID_MESSAGE = \"dx-invalid-message\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar INVALID_MESSAGE_ALWAYS = \"dx-invalid-message-always\";\r\nvar INVALID_MESSAGE_CONTENT = \"dx-invalid-message-content\";\r\nvar VALIDATION_MESSAGE_MIN_WIDTH = 100;\r\nvar ValidationMessage = Overlay.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n integrationOptions: {},\r\n templatesRenderAsynchronously: false,\r\n shading: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n animation: null,\r\n visible: true,\r\n propagateOutsideClick: true,\r\n _checkParentVisibility: false,\r\n rtlEnabled: false,\r\n contentTemplate: this._renderInnerHtml,\r\n maxWidth: \"100%\",\r\n mode: \"auto\",\r\n validationErrors: void 0,\r\n positionRequest: void 0,\r\n describedElement: void 0,\r\n boundary: void 0,\r\n offset: {\r\n h: 0,\r\n v: 0\r\n }\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this.updateMaxWidth();\r\n this._updatePosition()\r\n },\r\n _initMarkup() {\r\n this.callBase();\r\n this.$element().addClass(INVALID_MESSAGE);\r\n this.$wrapper().addClass(INVALID_MESSAGE);\r\n this._toggleModeClass();\r\n this._updateContentId()\r\n },\r\n _updateContentId() {\r\n var describedElement = this.option(\"describedElement\") || this.option(\"container\");\r\n var contentId = $(describedElement).attr(\"aria-describedby\");\r\n this.$content().addClass(INVALID_MESSAGE_CONTENT).attr(\"id\", contentId)\r\n },\r\n _renderInnerHtml(element) {\r\n var $element = element && $(element);\r\n var validationErrors = this.option(\"validationErrors\") || [];\r\n var validationErrorMessage = \"\";\r\n validationErrors.forEach(err => {\r\n var separator = validationErrorMessage ? \"
\" : \"\";\r\n validationErrorMessage += separator + encodeHtml((null === err || void 0 === err ? void 0 : err.message) || \"\")\r\n });\r\n null === $element || void 0 === $element ? void 0 : $element.html(validationErrorMessage)\r\n },\r\n _toggleModeClass() {\r\n var mode = this.option(\"mode\");\r\n this.$wrapper().toggleClass(INVALID_MESSAGE_AUTO, \"auto\" === mode).toggleClass(INVALID_MESSAGE_ALWAYS, \"always\" === mode)\r\n },\r\n updateMaxWidth() {\r\n var _target$outerWidth;\r\n var target = this.option(\"target\");\r\n var targetWidth = (null === target || void 0 === target ? void 0 : null === (_target$outerWidth = target.outerWidth) || void 0 === _target$outerWidth ? void 0 : _target$outerWidth.call(target)) || $(target).outerWidth();\r\n var maxWidth = \"100%\";\r\n if (targetWidth) {\r\n maxWidth = Math.max(targetWidth, VALIDATION_MESSAGE_MIN_WIDTH)\r\n }\r\n this.option({\r\n maxWidth: maxWidth\r\n })\r\n },\r\n _updatePosition: function() {\r\n var {\r\n positionRequest: positionRequest,\r\n rtlEnabled: rtlEnabled,\r\n offset: offset,\r\n boundary: boundary\r\n } = this.option();\r\n var positionSide = getDefaultAlignment(rtlEnabled);\r\n var verticalPositions = \"below\" === positionRequest ? [\" top\", \" bottom\"] : [\" bottom\", \" top\"];\r\n if (rtlEnabled) {\r\n offset.h = -offset.h\r\n }\r\n if (\"below\" !== positionRequest) {\r\n offset.v = -offset.v\r\n }\r\n this.option(\"position\", {\r\n offset: offset,\r\n boundary: boundary,\r\n my: positionSide + verticalPositions[0],\r\n at: positionSide + verticalPositions[1],\r\n collision: \"none flip\"\r\n })\r\n },\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"target\":\r\n this.updateMaxWidth();\r\n this.callBase(args);\r\n break;\r\n case \"boundary\":\r\n this.option(\"position.boundary\", value);\r\n break;\r\n case \"mode\":\r\n this._toggleModeClass(value);\r\n break;\r\n case \"rtlEnabled\":\r\n case \"offset\":\r\n case \"positionRequest\":\r\n this._updatePosition();\r\n break;\r\n case \"validationErrors\":\r\n this._renderInnerHtml(this.$content());\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxValidationMessage\", ValidationMessage);\r\nexport default ValidationMessage;\r\n","/**\r\n * DevExtreme (esm/ui/editor/editor.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n data\r\n} from \"../../core/element_data\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport ValidationEngine from \"../validation_engine\";\r\nimport EventsEngine from \"../../events/core/events_engine\";\r\nimport ValidationMessage from \"../validation_message\";\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n resetActiveElement\r\n} from \"../../core/utils/dom\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar READONLY_STATE_CLASS = \"dx-state-readonly\";\r\nvar INVALID_CLASS = \"dx-invalid\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar VALIDATION_TARGET = \"dx-validation-target\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar READONLY_NAMESPACE = \"editorReadOnly\";\r\nvar ALLOWED_STYLING_MODES = [\"outlined\", \"filled\", \"underlined\"];\r\nvar VALIDATION_MESSAGE_KEYS_MAP = {\r\n validationMessageMode: \"mode\",\r\n validationMessageOffset: \"offset\",\r\n validationBoundary: \"boundary\"\r\n};\r\nvar Editor = Widget.inherit({\r\n ctor: function() {\r\n this.showValidationMessageTimeout = null;\r\n this.validationRequest = Callbacks();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _createElement: function(element) {\r\n this.callBase(element);\r\n var $element = this.$element();\r\n if ($element) {\r\n data($element[0], VALIDATION_TARGET, this)\r\n }\r\n },\r\n _initOptions: function(options) {\r\n this.callBase.apply(this, arguments);\r\n this.option(ValidationEngine.initValidationOptions(options))\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._options.cache(\"validationTooltipOptions\", this.option(\"validationTooltipOptions\"));\r\n var $element = this.$element();\r\n $element.addClass(DX_INVALID_BADGE_CLASS)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: null,\r\n name: \"\",\r\n onValueChanged: null,\r\n readOnly: false,\r\n isValid: true,\r\n validationError: null,\r\n validationErrors: null,\r\n validationStatus: VALIDATION_STATUS_VALID,\r\n validationMessageMode: \"auto\",\r\n validationBoundary: void 0,\r\n validationMessageOffset: {\r\n h: 0,\r\n v: 0\r\n },\r\n validationTooltipOptions: {}\r\n })\r\n },\r\n _attachKeyboardEvents: function() {\r\n if (!this.option(\"readOnly\")) {\r\n this.callBase()\r\n }\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n validationError: true\r\n })\r\n },\r\n _createValueChangeAction: function() {\r\n this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _suppressValueChangeAction: function() {\r\n this._valueChangeActionSuppressed = true\r\n },\r\n _resumeValueChangeAction: function() {\r\n this._valueChangeActionSuppressed = false\r\n },\r\n _initMarkup: function() {\r\n this._toggleReadOnlyState();\r\n this._setSubmitElementName(this.option(\"name\"));\r\n this.callBase();\r\n this._renderValidationState()\r\n },\r\n _raiseValueChangeAction: function(value, previousValue) {\r\n if (!this._valueChangeAction) {\r\n this._createValueChangeAction()\r\n }\r\n this._valueChangeAction(this._valueChangeArgs(value, previousValue))\r\n },\r\n _valueChangeArgs: function(value, previousValue) {\r\n return {\r\n value: value,\r\n previousValue: previousValue,\r\n event: this._valueChangeEventInstance\r\n }\r\n },\r\n _saveValueChangeEvent: function(e) {\r\n this._valueChangeEventInstance = e\r\n },\r\n _focusInHandler: function(e) {\r\n var isValidationMessageShownOnFocus = \"auto\" === this.option(\"validationMessageMode\");\r\n if (this._canValueBeChangedByClick() && isValidationMessageShownOnFocus) {\r\n var _this$_validationMess;\r\n var $validationMessageWrapper = null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.$wrapper();\r\n null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass(INVALID_MESSAGE_AUTO);\r\n clearTimeout(this.showValidationMessageTimeout);\r\n this.showValidationMessageTimeout = setTimeout(() => null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass(INVALID_MESSAGE_AUTO), 150)\r\n }\r\n return this.callBase(e)\r\n },\r\n _canValueBeChangedByClick: function() {\r\n return false\r\n },\r\n _getStylingModePrefix: function() {\r\n return \"dx-editor-\"\r\n },\r\n _renderStylingMode: function() {\r\n var optionValue = this.option(\"stylingMode\");\r\n var prefix = this._getStylingModePrefix();\r\n var allowedStylingClasses = ALLOWED_STYLING_MODES.map(mode => prefix + mode);\r\n allowedStylingClasses.forEach(className => this.$element().removeClass(className));\r\n var stylingModeClass = prefix + optionValue;\r\n if (-1 === allowedStylingClasses.indexOf(stylingModeClass)) {\r\n var defaultOptionValue = this._getDefaultOptions().stylingMode;\r\n var platformOptionValue = this._convertRulesToOptions(this._defaultOptionsRules()).stylingMode;\r\n stylingModeClass = prefix + (platformOptionValue || defaultOptionValue)\r\n }\r\n this.$element().addClass(stylingModeClass)\r\n },\r\n _getValidationErrors: function() {\r\n var validationErrors = this.option(\"validationErrors\");\r\n if (!validationErrors && this.option(\"validationError\")) {\r\n validationErrors = [this.option(\"validationError\")]\r\n }\r\n return validationErrors\r\n },\r\n _disposeValidationMessage: function() {\r\n if (this._$validationMessage) {\r\n this._$validationMessage.remove();\r\n this.setAria(\"describedby\", null);\r\n this._$validationMessage = void 0;\r\n this._validationMessage = void 0\r\n }\r\n },\r\n _toggleValidationClasses: function(isInvalid) {\r\n this.$element().toggleClass(INVALID_CLASS, isInvalid);\r\n this.setAria(VALIDATION_STATUS_INVALID, isInvalid || void 0)\r\n },\r\n _renderValidationState: function() {\r\n var isValid = this.option(\"isValid\") && this.option(\"validationStatus\") !== VALIDATION_STATUS_INVALID;\r\n var validationErrors = this._getValidationErrors();\r\n var $element = this.$element();\r\n this._toggleValidationClasses(!isValid);\r\n if (!hasWindow()) {\r\n return\r\n }\r\n this._disposeValidationMessage();\r\n if (!isValid && validationErrors) {\r\n var {\r\n validationMessageMode: validationMessageMode,\r\n validationMessageOffset: validationMessageOffset,\r\n validationBoundary: validationBoundary,\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n this._$validationMessage = $(\"
\").appendTo($element);\r\n this.setAria(\"describedby\", \"dx-\" + new Guid);\r\n this._validationMessage = new ValidationMessage(this._$validationMessage, extend({\r\n validationErrors: validationErrors,\r\n rtlEnabled: rtlEnabled,\r\n target: this._getValidationMessageTarget(),\r\n container: $element,\r\n mode: validationMessageMode,\r\n positionRequest: \"below\",\r\n offset: validationMessageOffset,\r\n boundary: validationBoundary,\r\n describedElement: this._focusTarget()\r\n }, this._options.cache(\"validationTooltipOptions\")));\r\n this._bindInnerWidgetOptions(this._validationMessage, \"validationTooltipOptions\")\r\n }\r\n },\r\n _getValidationMessageTarget: function() {\r\n return this.$element()\r\n },\r\n _toggleReadOnlyState: function() {\r\n var readOnly = this.option(\"readOnly\");\r\n this._toggleBackspaceHandler(readOnly);\r\n this.$element().toggleClass(READONLY_STATE_CLASS, !!readOnly);\r\n this.setAria(\"readonly\", readOnly || void 0)\r\n },\r\n _toggleBackspaceHandler: function(isReadOnly) {\r\n var $eventTarget = this._keyboardEventBindingTarget();\r\n var eventName = addNamespace(\"keydown\", READONLY_NAMESPACE);\r\n EventsEngine.off($eventTarget, eventName);\r\n if (isReadOnly) {\r\n EventsEngine.on($eventTarget, eventName, e => {\r\n if (\"backspace\" === normalizeKeyName(e)) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n },\r\n _dispose: function() {\r\n var element = this.$element()[0];\r\n data(element, VALIDATION_TARGET, null);\r\n clearTimeout(this.showValidationMessageTimeout);\r\n this._disposeValidationMessage();\r\n this.callBase()\r\n },\r\n _setSubmitElementName: function(name) {\r\n var $submitElement = this._getSubmitElement();\r\n if (!$submitElement) {\r\n return\r\n }\r\n if (name.length > 0) {\r\n $submitElement.attr(\"name\", name)\r\n } else {\r\n $submitElement.removeAttr(\"name\")\r\n }\r\n },\r\n _getSubmitElement: function() {\r\n return null\r\n },\r\n _setValidationMessageOption: function(_ref) {\r\n var _this$_validationMess2;\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n var optionKey = VALIDATION_MESSAGE_KEYS_MAP[name] ? VALIDATION_MESSAGE_KEYS_MAP[name] : name;\r\n null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(optionKey, value)\r\n },\r\n _hasActiveElement: noop,\r\n _optionChanged: function(args) {\r\n var _this$_validationMess3;\r\n switch (args.name) {\r\n case \"onValueChanged\":\r\n this._createValueChangeAction();\r\n break;\r\n case \"readOnly\":\r\n this._toggleReadOnlyState();\r\n this._refreshFocusState();\r\n break;\r\n case \"value\":\r\n if (args.value != args.previousValue) {\r\n this.validationRequest.fire({\r\n value: args.value,\r\n editor: this\r\n })\r\n }\r\n if (!this._valueChangeActionSuppressed) {\r\n this._raiseValueChangeAction(args.value, args.previousValue);\r\n this._saveValueChangeEvent(void 0)\r\n }\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n null === (_this$_validationMess3 = this._validationMessage) || void 0 === _this$_validationMess3 ? void 0 : _this$_validationMess3.updateMaxWidth();\r\n break;\r\n case \"name\":\r\n this._setSubmitElementName(args.value);\r\n break;\r\n case \"isValid\":\r\n case \"validationError\":\r\n case \"validationErrors\":\r\n case \"validationStatus\":\r\n this.option(ValidationEngine.synchronizeValidationOptions(args, this.option()));\r\n this._renderValidationState();\r\n break;\r\n case \"validationBoundary\":\r\n case \"validationMessageMode\":\r\n case \"validationMessageOffset\":\r\n this._setValidationMessageOption(args);\r\n break;\r\n case \"rtlEnabled\":\r\n this._setValidationMessageOption(args);\r\n this.callBase(args);\r\n break;\r\n case \"validationTooltipOptions\":\r\n this._innerWidgetOptionChanged(this._validationMessage, args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n blur: function() {\r\n if (this._hasActiveElement()) {\r\n resetActiveElement()\r\n }\r\n },\r\n reset: function() {\r\n var defaultOptions = this._getDefaultOptions();\r\n this.option(\"value\", defaultOptions.value)\r\n }\r\n});\r\nEditor.isEditor = instance => instance instanceof Editor;\r\nexport default Editor;\r\n","/**\r\n * DevExtreme (esm/core/utils/version.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function compare(x, y, maxLevel) {\r\n function normalizeArg(value) {\r\n if (\"string\" === typeof value) {\r\n return value.split(\".\")\r\n }\r\n if (\"number\" === typeof value) {\r\n return [value]\r\n }\r\n return value\r\n }\r\n x = normalizeArg(x);\r\n y = normalizeArg(y);\r\n var length = Math.max(x.length, y.length);\r\n if (isFinite(maxLevel)) {\r\n length = Math.min(length, maxLevel)\r\n }\r\n for (var i = 0; i < length; i++) {\r\n var xItem = parseInt(x[i] || 0, 10);\r\n var yItem = parseInt(y[i] || 0, 10);\r\n if (xItem < yItem) {\r\n return -1\r\n }\r\n if (xItem > yItem) {\r\n return 1\r\n }\r\n }\r\n return 0\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.strategy.grouped.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport storeHelper from \"../../data/store_helper\";\r\nimport query from \"../../data/query\";\r\nimport EditStrategy from \"../collection/ui.collection_widget.edit.strategy.plain\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar SELECTION_SHIFT = 20;\r\nvar SELECTION_MASK = (1 << SELECTION_SHIFT) - 1;\r\nvar combineIndex = function(indices) {\r\n return (indices.group << SELECTION_SHIFT) + indices.item\r\n};\r\nvar splitIndex = function(combinedIndex) {\r\n return {\r\n group: combinedIndex >> SELECTION_SHIFT,\r\n item: combinedIndex & SELECTION_MASK\r\n }\r\n};\r\nvar GroupedEditStrategy = EditStrategy.inherit({\r\n _groupElements: function() {\r\n return this._collectionWidget._itemContainer().find(\".\" + LIST_GROUP_CLASS)\r\n },\r\n _groupItemElements: function($group) {\r\n return $group.find(\".\" + LIST_ITEM_CLASS)\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var groups = this._collectionWidget.option(\"items\");\r\n var index = false;\r\n if (!itemData) {\r\n return false\r\n }\r\n if (itemData.items && itemData.items.length) {\r\n itemData = itemData.items[0]\r\n }\r\n each(groups, (function(groupIndex, group) {\r\n if (!group.items) {\r\n return false\r\n }\r\n each(group.items, (function(itemIndex, item) {\r\n if (item !== itemData) {\r\n return true\r\n }\r\n index = {\r\n group: groupIndex,\r\n item: itemIndex\r\n };\r\n return false\r\n }));\r\n if (index) {\r\n return false\r\n }\r\n }));\r\n return index\r\n },\r\n getItemDataByIndex: function(index) {\r\n var items = this._collectionWidget.option(\"items\");\r\n if (isNumeric(index)) {\r\n return this.itemsGetter()[index]\r\n }\r\n return index && items[index.group] && items[index.group].items[index.item] || null\r\n },\r\n itemsGetter: function() {\r\n var resultItems = [];\r\n var items = this._collectionWidget.option(\"items\");\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n resultItems = resultItems.concat(items[i].items)\r\n } else {\r\n resultItems.push(items[i])\r\n }\r\n }\r\n return resultItems\r\n },\r\n deleteItemAtIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var itemGroup = this._collectionWidget.option(\"items\")[indices.group].items;\r\n itemGroup.splice(indices.item, 1)\r\n },\r\n getKeysByItems: function(items) {\r\n var plainItems = [];\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n var result = [];\r\n for (i = 0; i < plainItems.length; i++) {\r\n result.push(this._collectionWidget.keyOf(plainItems[i]))\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key, items) {\r\n var groups = items || this._collectionWidget.option(\"items\");\r\n var index = -1;\r\n var that = this;\r\n each(groups, (function(groupIndex, group) {\r\n if (!group.items) {\r\n return\r\n }\r\n var keys = that.getKeysByItems(group.items);\r\n each(keys, (function(keyIndex, itemKey) {\r\n if (that._equalKeys(itemKey, key)) {\r\n index = {\r\n group: groupIndex,\r\n item: keyIndex\r\n };\r\n return false\r\n }\r\n }));\r\n if (-1 !== index) {\r\n return false\r\n }\r\n }));\r\n return index\r\n },\r\n _getGroups: function(items) {\r\n var dataSource = this._collectionWidget.getDataSource();\r\n var group = dataSource && dataSource.group();\r\n if (group) {\r\n return storeHelper.queryByOptions(query(items), {\r\n group: group\r\n }).toArray()\r\n }\r\n return this._collectionWidget.option(\"items\")\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n var result = [];\r\n each(keys, function(_, key) {\r\n var getItemMeta = function(groups) {\r\n var index = this.getIndexByKey(key, groups);\r\n var group = index && groups[index.group];\r\n if (!group) {\r\n return\r\n }\r\n return {\r\n groupKey: group.key,\r\n item: group.items[index.item]\r\n }\r\n }.bind(this);\r\n var itemMeta = getItemMeta(this._getGroups(items));\r\n if (!itemMeta) {\r\n return\r\n }\r\n var groupKey = itemMeta.groupKey;\r\n var item = itemMeta.item;\r\n var selectedGroup;\r\n each(result, (function(_, item) {\r\n if (item.key === groupKey) {\r\n selectedGroup = item;\r\n return false\r\n }\r\n }));\r\n if (!selectedGroup) {\r\n selectedGroup = {\r\n key: groupKey,\r\n items: []\r\n };\r\n result.push(selectedGroup)\r\n }\r\n selectedGroup.items.push(item)\r\n }.bind(this));\r\n return result\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._collectionWidget.option(\"items\");\r\n var movingIndices = splitIndex(movingIndex);\r\n var destinationIndices = splitIndex(destinationIndex);\r\n var movingItemGroup = items[movingIndices.group].items;\r\n var destinationItemGroup = items[destinationIndices.group].items;\r\n var movedItemData = movingItemGroup[movingIndices.item];\r\n movingItemGroup.splice(movingIndices.item, 1);\r\n destinationItemGroup.splice(destinationIndices.item, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return index && isNumeric(index.group) && isNumeric(index.item)\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n var $item = $(itemElement);\r\n var $group = $item.closest(\".\" + LIST_GROUP_CLASS);\r\n if (!$group.length) {\r\n return -1\r\n }\r\n return combineIndex({\r\n group: this._groupElements().index($group),\r\n item: this._groupItemElements($group).index($item)\r\n })\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return combineIndex(index)\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return splitIndex(index)\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var $group = this._groupElements().eq(indices.group);\r\n return this._groupItemElements($group).eq(indices.item)\r\n },\r\n _itemsFromSameParent: function(firstIndex, secondIndex) {\r\n return splitIndex(firstIndex).group === splitIndex(secondIndex).group\r\n }\r\n});\r\nexport default GroupedEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator_registry.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport var registry = {};\r\nexport function register(option, type, decoratorClass) {\r\n var decoratorsRegistry = registry;\r\n var decoratorConfig = {};\r\n decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {};\r\n decoratorConfig[option][type] = decoratorClass;\r\n extend(decoratorsRegistry, decoratorConfig)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../../events/swipe\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar SWIPE_START_EVENT_NAME = addNamespace(swipeEventStart, LIST_EDIT_DECORATOR);\r\nvar SWIPE_UPDATE_EVENT_NAME = addNamespace(swipeEventSwipe, LIST_EDIT_DECORATOR);\r\nvar SWIPE_END_EVENT_NAME = addNamespace(swipeEventEnd, LIST_EDIT_DECORATOR);\r\nvar EditDecorator = Class.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._init()\r\n },\r\n _init: noop,\r\n _shouldHandleSwipe: false,\r\n _attachSwipeEvent: function(config) {\r\n var swipeConfig = {\r\n itemSizeFunc: function() {\r\n if (this._clearSwipeCache) {\r\n this._itemWidthCache = this._list.$element().width();\r\n this._clearSwipeCache = false\r\n }\r\n return this._itemWidthCache\r\n }.bind(this)\r\n };\r\n eventsEngine.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this));\r\n eventsEngine.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this));\r\n eventsEngine.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeStartHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n clearTimeout(this._list._inkRippleTimer);\r\n this._swipeStartHandler($itemElement, e)\r\n },\r\n _itemSwipeUpdateHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n this._swipeUpdateHandler($itemElement, e)\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n this._swipeEndHandler($itemElement, e);\r\n this._clearSwipeCache = true\r\n },\r\n beforeBag: noop,\r\n afterBag: noop,\r\n _commonOptions: function() {\r\n return {\r\n activeStateEnabled: this._list.option(\"activeStateEnabled\"),\r\n hoverStateEnabled: this._list.option(\"hoverStateEnabled\"),\r\n focusStateEnabled: this._list.option(\"focusStateEnabled\")\r\n }\r\n },\r\n modifyElement: function(config) {\r\n if (this._shouldHandleSwipe) {\r\n this._attachSwipeEvent(config);\r\n this._clearSwipeCache = true\r\n }\r\n },\r\n afterRender: noop,\r\n handleClick: noop,\r\n handleKeyboardEvents: noop,\r\n handleEnterPressing: noop,\r\n handleContextMenu: noop,\r\n _swipeStartHandler: noop,\r\n _swipeUpdateHandler: noop,\r\n _swipeEndHandler: noop,\r\n visibilityChange: noop,\r\n getExcludedSelectors: noop,\r\n dispose: noop\r\n});\r\nexport default EditDecorator;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.static.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Button from \"../button\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nvar STATIC_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-static-delete-button-container\";\r\nvar STATIC_DELETE_BUTTON_CLASS = \"dx-list-static-delete-button\";\r\nregisterDecorator(\"delete\", \"static\", EditDecorator.inherit({\r\n afterBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container;\r\n var $button = $(\"
\").addClass(STATIC_DELETE_BUTTON_CLASS);\r\n this._list._createComponent($button, Button, {\r\n icon: \"remove\",\r\n onClick: function(args) {\r\n args.event.stopPropagation();\r\n this._deleteItem($itemElement)\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $container.addClass(STATIC_DELETE_BUTTON_CONTAINER_CLASS).append($button)\r\n },\r\n _deleteItem: function($itemElement) {\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n this._list.deleteItem($itemElement)\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.switchable.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nvar abstract = EditDecorator.abstract;\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n active\r\n} from \"../../events/core/emitter.feedback\";\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar POINTER_DOWN_EVENT_NAME = addNamespace(pointerEvents.down, LIST_EDIT_DECORATOR);\r\nvar ACTIVE_EVENT_NAME = addNamespace(active, LIST_EDIT_DECORATOR);\r\nvar LIST_ITEM_CONTENT_CLASS = \"dx-list-item-content\";\r\nvar SWITCHABLE_DELETE_READY_CLASS = \"dx-list-switchable-delete-ready\";\r\nvar SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS = \"dx-list-switchable-menu-shield-positioning\";\r\nvar SWITCHABLE_DELETE_TOP_SHIELD_CLASS = \"dx-list-switchable-delete-top-shield\";\r\nvar SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS = \"dx-list-switchable-delete-bottom-shield\";\r\nvar SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS = \"dx-list-switchable-menu-item-shield-positioning\";\r\nvar SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS = \"dx-list-switchable-delete-item-content-shield\";\r\nvar SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-switchable-delete-button-container\";\r\nvar SwitchableEditDecorator = EditDecorator.inherit({\r\n _init: function() {\r\n this._$topShield = $(\"
\").addClass(SWITCHABLE_DELETE_TOP_SHIELD_CLASS);\r\n this._$bottomShield = $(\"
\").addClass(SWITCHABLE_DELETE_BOTTOM_SHIELD_CLASS);\r\n this._$itemContentShield = $(\"
\").addClass(SWITCHABLE_DELETE_ITEM_CONTENT_SHIELD_CLASS);\r\n eventsEngine.on(this._$topShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));\r\n eventsEngine.on(this._$bottomShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));\r\n this._list.$element().append(this._$topShield.toggle(false)).append(this._$bottomShield.toggle(false))\r\n },\r\n handleClick: function() {\r\n return this._cancelDeleteReadyItem()\r\n },\r\n _cancelDeleteReadyItem: function() {\r\n if (!this._$readyToDeleteItem) {\r\n return false\r\n }\r\n this._cancelDelete(this._$readyToDeleteItem);\r\n return true\r\n },\r\n _cancelDelete: function($itemElement) {\r\n this._toggleDeleteReady($itemElement, false)\r\n },\r\n _toggleDeleteReady: function($itemElement, readyToDelete) {\r\n if (void 0 === readyToDelete) {\r\n readyToDelete = !this._isReadyToDelete($itemElement)\r\n }\r\n this._toggleShields($itemElement, readyToDelete);\r\n this._toggleScrolling(readyToDelete);\r\n this._cacheReadyToDeleteItem($itemElement, readyToDelete);\r\n this._animateToggleDelete($itemElement, readyToDelete)\r\n },\r\n _isReadyToDelete: function($itemElement) {\r\n return $itemElement.hasClass(SWITCHABLE_DELETE_READY_CLASS)\r\n },\r\n _toggleShields: function($itemElement, enabled) {\r\n this._list.$element().toggleClass(SWITCHABLE_MENU_SHIELD_POSITIONING_CLASS, enabled);\r\n this._$topShield.toggle(enabled);\r\n this._$bottomShield.toggle(enabled);\r\n if (enabled) {\r\n this._updateShieldsHeight($itemElement)\r\n }\r\n this._toggleContentShield($itemElement, enabled)\r\n },\r\n _updateShieldsHeight: function($itemElement) {\r\n var $list = this._list.$element();\r\n var listTopOffset = $list.offset().top;\r\n var listHeight = $list.outerHeight();\r\n var itemTopOffset = $itemElement.offset().top;\r\n var itemHeight = $itemElement.outerHeight();\r\n var dirtyTopShieldHeight = itemTopOffset - listTopOffset;\r\n var dirtyBottomShieldHeight = listHeight - itemHeight - dirtyTopShieldHeight;\r\n this._$topShield.height(Math.max(dirtyTopShieldHeight, 0));\r\n this._$bottomShield.height(Math.max(dirtyBottomShieldHeight, 0))\r\n },\r\n _toggleContentShield: function($itemElement, enabled) {\r\n if (enabled) {\r\n $itemElement.find(\".\" + LIST_ITEM_CONTENT_CLASS).first().append(this._$itemContentShield)\r\n } else {\r\n this._$itemContentShield.detach()\r\n }\r\n },\r\n _toggleScrolling: function(readyToDelete) {\r\n var scrollView = this._list.$element().dxScrollView(\"instance\");\r\n if (readyToDelete) {\r\n scrollView.on(\"start\", this._cancelScrolling)\r\n } else {\r\n scrollView.off(\"start\", this._cancelScrolling)\r\n }\r\n },\r\n _cancelScrolling: function(args) {\r\n args.event.cancel = true\r\n },\r\n _cacheReadyToDeleteItem: function($itemElement, cache) {\r\n if (cache) {\r\n this._$readyToDeleteItem = $itemElement\r\n } else {\r\n delete this._$readyToDeleteItem\r\n }\r\n },\r\n _animateToggleDelete: function($itemElement, readyToDelete) {\r\n if (readyToDelete) {\r\n this._enablePositioning($itemElement);\r\n this._prepareDeleteReady($itemElement);\r\n this._animatePrepareDeleteReady($itemElement);\r\n eventsEngine.off($itemElement, pointerEvents.up)\r\n } else {\r\n this._forgetDeleteReady($itemElement);\r\n this._animateForgetDeleteReady($itemElement).done(this._disablePositioning.bind(this, $itemElement))\r\n }\r\n },\r\n _enablePositioning: function($itemElement) {\r\n $itemElement.addClass(SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS);\r\n eventsEngine.on($itemElement, ACTIVE_EVENT_NAME, noop);\r\n eventsEngine.one($itemElement, pointerEvents.up, this._disablePositioning.bind(this, $itemElement))\r\n },\r\n _disablePositioning: function($itemElement) {\r\n $itemElement.removeClass(SWITCHABLE_MENU_ITEM_SHIELD_POSITIONING_CLASS);\r\n eventsEngine.off($itemElement, ACTIVE_EVENT_NAME)\r\n },\r\n _prepareDeleteReady: function($itemElement) {\r\n $itemElement.addClass(SWITCHABLE_DELETE_READY_CLASS)\r\n },\r\n _forgetDeleteReady: function($itemElement) {\r\n $itemElement.removeClass(SWITCHABLE_DELETE_READY_CLASS)\r\n },\r\n _animatePrepareDeleteReady: abstract,\r\n _animateForgetDeleteReady: abstract,\r\n _getDeleteButtonContainer: function($itemElement) {\r\n $itemElement = $itemElement || this._$readyToDeleteItem;\r\n return $itemElement.children(\".\" + SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS)\r\n },\r\n _deleteItem: function($itemElement) {\r\n $itemElement = $itemElement || this._$readyToDeleteItem;\r\n this._getDeleteButtonContainer($itemElement).detach();\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n this._list.deleteItem($itemElement).always(this._cancelDelete.bind(this, $itemElement))\r\n },\r\n _isRtlEnabled: function() {\r\n return this._list.option(\"rtlEnabled\")\r\n },\r\n dispose: function() {\r\n if (this._$topShield) {\r\n this._$topShield.remove()\r\n }\r\n if (this._$bottomShield) {\r\n this._$bottomShield.remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n});\r\nexport default SwitchableEditDecorator;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.switchable.button.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport fx from \"../../animation/fx\";\r\nimport Button from \"../button\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport SwitchableEditDecorator from \"./ui.list.edit.decorator.switchable\";\r\nvar SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS = \"dx-list-switchable-delete-button-container\";\r\nvar SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS = \"dx-list-switchable-delete-button-wrapper\";\r\nvar SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS = \"dx-list-switchable-delete-button-inner-wrapper\";\r\nvar SWITCHABLE_DELETE_BUTTON_CLASS = \"dx-list-switchable-delete-button\";\r\nvar SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION = 200;\r\nvar SwitchableButtonEditDecorator = SwitchableEditDecorator.inherit({\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var $buttonContainer = $(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_CONTAINER_CLASS);\r\n var $buttonWrapper = $(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_WRAPPER_CLASS);\r\n var $buttonInnerWrapper = $(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_INNER_WRAPPER_CLASS);\r\n var $button = $(\"
\").addClass(SWITCHABLE_DELETE_BUTTON_CLASS);\r\n this._list._createComponent($button, Button, {\r\n text: messageLocalization.format(\"dxListEditDecorator-delete\"),\r\n type: \"danger\",\r\n onClick: function(e) {\r\n this._deleteItem();\r\n e.event.stopPropagation()\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $buttonContainer.append($buttonWrapper);\r\n $buttonWrapper.append($buttonInnerWrapper);\r\n $buttonInnerWrapper.append($button);\r\n this._$buttonContainer = $buttonContainer\r\n },\r\n _enablePositioning: function($itemElement) {\r\n this.callBase.apply(this, arguments);\r\n fx.stop(this._$buttonContainer, true);\r\n this._$buttonContainer.appendTo($itemElement)\r\n },\r\n _disablePositioning: function() {\r\n this.callBase.apply(this, arguments);\r\n this._$buttonContainer.detach()\r\n },\r\n _animatePrepareDeleteReady: function() {\r\n var rtl = this._isRtlEnabled();\r\n var listWidth = this._list.$element().width();\r\n var buttonWidth = this._buttonWidth();\r\n var fromValue = rtl ? listWidth : -buttonWidth;\r\n var toValue = rtl ? listWidth - buttonWidth : 0;\r\n return fx.animate(this._$buttonContainer, {\r\n type: \"custom\",\r\n duration: SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION,\r\n from: {\r\n right: fromValue\r\n },\r\n to: {\r\n right: toValue\r\n }\r\n })\r\n },\r\n _animateForgetDeleteReady: function() {\r\n var rtl = this._isRtlEnabled();\r\n var listWidth = this._list.$element().width();\r\n var buttonWidth = this._buttonWidth();\r\n var fromValue = rtl ? listWidth - buttonWidth : 0;\r\n var toValue = rtl ? listWidth : -buttonWidth;\r\n return fx.animate(this._$buttonContainer, {\r\n type: \"custom\",\r\n duration: SWITCHABLE_DELETE_BUTTON_ANIMATION_DURATION,\r\n from: {\r\n right: fromValue\r\n },\r\n to: {\r\n right: toValue\r\n }\r\n })\r\n },\r\n _buttonWidth: function() {\r\n if (!this._buttonContainerWidth) {\r\n this._buttonContainerWidth = this._$buttonContainer.outerWidth()\r\n }\r\n return this._buttonContainerWidth\r\n },\r\n dispose: function() {\r\n if (this._$buttonContainer) {\r\n this._$buttonContainer.remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n});\r\nvar TOGGLE_DELETE_SWITCH_CONTAINER_CLASS = \"dx-list-toggle-delete-switch-container\";\r\nvar TOGGLE_DELETE_SWITCH_CLASS = \"dx-list-toggle-delete-switch\";\r\nregisterDecorator(\"delete\", \"toggle\", SwitchableButtonEditDecorator.inherit({\r\n beforeBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container;\r\n var $toggle = $(\"
\").addClass(TOGGLE_DELETE_SWITCH_CLASS);\r\n this._list._createComponent($toggle, Button, {\r\n icon: \"toggle-delete\",\r\n onClick: function(e) {\r\n fx.stop(this._$buttonContainer, false);\r\n this._toggleDeleteReady($itemElement);\r\n e.event.stopPropagation()\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $container.addClass(TOGGLE_DELETE_SWITCH_CONTAINER_CLASS);\r\n $container.append($toggle)\r\n }\r\n}));\r\nregisterDecorator(\"delete\", \"slideButton\", SwitchableButtonEditDecorator.inherit({\r\n _shouldHandleSwipe: true,\r\n _swipeEndHandler: function($itemElement, args) {\r\n if (0 !== args.targetOffset) {\r\n fx.stop(this._$buttonContainer, false);\r\n this._toggleDeleteReady($itemElement)\r\n }\r\n return true\r\n }\r\n}));\r\nexport default SwitchableButtonEditDecorator;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator_menu_helper.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar EditDecoratorMenuHelperMixin = {\r\n _menuEnabled: function() {\r\n return !!this._menuItems().length\r\n },\r\n _menuItems: function() {\r\n return this._list.option(\"menuItems\")\r\n },\r\n _deleteEnabled: function() {\r\n return this._list.option(\"allowItemDeleting\")\r\n },\r\n _fireMenuAction: function($itemElement, action) {\r\n this._list._itemEventHandlerByHandler($itemElement, action, {}, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }\r\n};\r\nexport default EditDecoratorMenuHelperMixin;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.switchable.slide.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../../animation/translator\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n active\r\n} from \"../../events/core/emitter.feedback\";\r\nimport EditDecoratorMenuHelperMixin from \"./ui.list.edit.decorator_menu_helper\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport SwitchableEditDecorator from \"./ui.list.edit.decorator.switchable\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n isMaterial\r\n} from \"../themes\";\r\nimport ActionSheet from \"../action_sheet\";\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar CLICK_EVENT_NAME = addNamespace(clickEventName, LIST_EDIT_DECORATOR);\r\nvar ACTIVE_EVENT_NAME = addNamespace(active, LIST_EDIT_DECORATOR);\r\nvar SLIDE_MENU_CLASS = \"dx-list-slide-menu\";\r\nvar SLIDE_MENU_WRAPPER_CLASS = \"dx-list-slide-menu-wrapper\";\r\nvar SLIDE_MENU_CONTENT_CLASS = \"dx-list-slide-menu-content\";\r\nvar SLIDE_MENU_BUTTONS_CONTAINER_CLASS = \"dx-list-slide-menu-buttons-container\";\r\nvar SLIDE_MENU_BUTTONS_CLASS = \"dx-list-slide-menu-buttons\";\r\nvar SLIDE_MENU_BUTTON_CLASS = \"dx-list-slide-menu-button\";\r\nvar SLIDE_MENU_BUTTON_MENU_CLASS = \"dx-list-slide-menu-button-menu\";\r\nvar SLIDE_MENU_BUTTON_DELETE_CLASS = \"dx-list-slide-menu-button-delete\";\r\nvar SLIDE_MENU_ANIMATION_DURATION = 400;\r\nvar SLIDE_MENU_ANIMATION_EASING = \"cubic-bezier(0.075, 0.82, 0.165, 1)\";\r\nregisterDecorator(\"menu\", \"slide\", SwitchableEditDecorator.inherit({\r\n _shouldHandleSwipe: true,\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._$buttonsContainer = $(\"
\").addClass(SLIDE_MENU_BUTTONS_CONTAINER_CLASS);\r\n eventsEngine.on(this._$buttonsContainer, ACTIVE_EVENT_NAME, noop);\r\n this._$buttons = $(\"
\").addClass(SLIDE_MENU_BUTTONS_CLASS).appendTo(this._$buttonsContainer);\r\n this._renderMenu();\r\n this._renderDeleteButton()\r\n },\r\n _renderMenu: function() {\r\n if (!this._menuEnabled()) {\r\n return\r\n }\r\n var menuItems = this._menuItems();\r\n if (1 === menuItems.length) {\r\n var menuItem = menuItems[0];\r\n this._renderMenuButton(menuItem.text, function(e) {\r\n e.stopPropagation();\r\n this._fireAction(menuItem)\r\n }.bind(this))\r\n } else {\r\n var $menu = $(\"
\").addClass(SLIDE_MENU_CLASS);\r\n this._menu = this._list._createComponent($menu, ActionSheet, {\r\n showTitle: false,\r\n items: menuItems,\r\n onItemClick: function(args) {\r\n this._fireAction(args.itemData)\r\n }.bind(this),\r\n integrationOptions: {}\r\n });\r\n $menu.appendTo(this._list.$element());\r\n var $menuButton = this._renderMenuButton(messageLocalization.format(\"dxListEditDecorator-more\"), function(e) {\r\n e.stopPropagation();\r\n this._menu.show()\r\n }.bind(this));\r\n this._menu.option(\"target\", $menuButton)\r\n }\r\n },\r\n _renderMenuButton: function(text, action) {\r\n var $menuButton = $(\"
\").addClass(SLIDE_MENU_BUTTON_CLASS).addClass(SLIDE_MENU_BUTTON_MENU_CLASS).text(text);\r\n this._$buttons.append($menuButton);\r\n eventsEngine.on($menuButton, CLICK_EVENT_NAME, action);\r\n return $menuButton\r\n },\r\n _renderDeleteButton: function() {\r\n if (!this._deleteEnabled()) {\r\n return\r\n }\r\n var $deleteButton = $(\"
\").addClass(SLIDE_MENU_BUTTON_CLASS).addClass(SLIDE_MENU_BUTTON_DELETE_CLASS).text(isMaterial() ? \"\" : messageLocalization.format(\"dxListEditDecorator-delete\"));\r\n eventsEngine.on($deleteButton, CLICK_EVENT_NAME, function(e) {\r\n e.stopPropagation();\r\n this._deleteItem()\r\n }.bind(this));\r\n this._$buttons.append($deleteButton)\r\n },\r\n _fireAction: function(menuItem) {\r\n this._fireMenuAction($(this._cachedNode), menuItem.action);\r\n this._cancelDeleteReadyItem()\r\n },\r\n modifyElement: function(config) {\r\n this.callBase.apply(this, arguments);\r\n var $itemElement = config.$itemElement;\r\n $itemElement.addClass(SLIDE_MENU_WRAPPER_CLASS);\r\n var $slideMenuContent = $(\"
\").addClass(SLIDE_MENU_CONTENT_CLASS);\r\n $itemElement.wrapInner($slideMenuContent)\r\n },\r\n _getDeleteButtonContainer: function() {\r\n return this._$buttonsContainer\r\n },\r\n handleClick: function(_, e) {\r\n if ($(e.target).closest(\".\" + SLIDE_MENU_CONTENT_CLASS).length) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return false\r\n },\r\n _swipeStartHandler: function($itemElement) {\r\n this._enablePositioning($itemElement);\r\n this._cacheItemData($itemElement);\r\n this._setPositions(this._getPositions(0))\r\n },\r\n _swipeUpdateHandler: function($itemElement, args) {\r\n var rtl = this._isRtlEnabled();\r\n var signCorrection = rtl ? -1 : 1;\r\n var isItemReadyToDelete = this._isReadyToDelete($itemElement);\r\n var moveJustStarted = this._getCurrentPositions().content === this._getStartPositions().content;\r\n if (moveJustStarted && !isItemReadyToDelete && args.offset * signCorrection > 0) {\r\n args.cancel = true;\r\n return\r\n }\r\n var offset = this._cachedItemWidth * args.offset;\r\n var startOffset = isItemReadyToDelete ? -this._cachedButtonWidth * signCorrection : 0;\r\n var correctedOffset = (offset + startOffset) * signCorrection;\r\n var percent = correctedOffset < 0 ? Math.abs((offset + startOffset) / this._cachedButtonWidth) : 0;\r\n this._setPositions(this._getPositions(percent));\r\n return true\r\n },\r\n _getStartPositions: function() {\r\n var rtl = this._isRtlEnabled();\r\n var signCorrection = rtl ? -1 : 1;\r\n return {\r\n content: 0,\r\n buttonsContainer: rtl ? -this._cachedButtonWidth : this._cachedItemWidth,\r\n buttons: -this._cachedButtonWidth * signCorrection\r\n }\r\n },\r\n _getPositions: function(percent) {\r\n var rtl = this._isRtlEnabled();\r\n var signCorrection = rtl ? -1 : 1;\r\n var startPositions = this._getStartPositions();\r\n return {\r\n content: startPositions.content - percent * this._cachedButtonWidth * signCorrection,\r\n buttonsContainer: startPositions.buttonsContainer - Math.min(percent, 1) * this._cachedButtonWidth * signCorrection,\r\n buttons: startPositions.buttons + Math.min(percent, 1) * this._cachedButtonWidth * signCorrection\r\n }\r\n },\r\n _getCurrentPositions: function() {\r\n return {\r\n content: locate(this._$cachedContent).left,\r\n buttonsContainer: locate(this._$buttonsContainer).left,\r\n buttons: locate(this._$buttons).left\r\n }\r\n },\r\n _setPositions: function(positions) {\r\n move(this._$cachedContent, {\r\n left: positions.content\r\n });\r\n move(this._$buttonsContainer, {\r\n left: positions.buttonsContainer\r\n });\r\n move(this._$buttons, {\r\n left: positions.buttons\r\n })\r\n },\r\n _cacheItemData: function($itemElement) {\r\n if ($itemElement[0] === this._cachedNode) {\r\n return\r\n }\r\n this._$cachedContent = $itemElement.find(\".\" + SLIDE_MENU_CONTENT_CLASS);\r\n this._cachedItemWidth = $itemElement.outerWidth();\r\n this._cachedButtonWidth = this._cachedButtonWidth || this._$buttons.outerWidth();\r\n this._$buttonsContainer.width(this._cachedButtonWidth);\r\n if (this._$cachedContent.length) {\r\n this._cachedNode = $itemElement[0]\r\n }\r\n },\r\n _minButtonContainerLeftOffset: function() {\r\n return this._cachedItemWidth - this._cachedButtonWidth\r\n },\r\n _swipeEndHandler: function($itemElement, args) {\r\n this._cacheItemData($itemElement);\r\n var signCorrection = this._isRtlEnabled() ? 1 : -1;\r\n var offset = this._cachedItemWidth * args.offset;\r\n var endedAtReadyToDelete = !this._isReadyToDelete($itemElement) && offset * signCorrection > .2 * this._cachedButtonWidth;\r\n var readyToDelete = args.targetOffset === signCorrection && endedAtReadyToDelete;\r\n this._toggleDeleteReady($itemElement, readyToDelete);\r\n return true\r\n },\r\n _enablePositioning: function($itemElement) {\r\n fx.stop(this._$cachedContent, true);\r\n this.callBase.apply(this, arguments);\r\n this._$buttonsContainer.appendTo($itemElement)\r\n },\r\n _disablePositioning: function() {\r\n this.callBase.apply(this, arguments);\r\n this._$buttonsContainer.detach()\r\n },\r\n _animatePrepareDeleteReady: function() {\r\n return this._animateToPositions(this._getPositions(1))\r\n },\r\n _animateForgetDeleteReady: function($itemElement) {\r\n this._cacheItemData($itemElement);\r\n return this._animateToPositions(this._getPositions(0))\r\n },\r\n _animateToPositions: function(positions) {\r\n var that = this;\r\n var currentPosition = this._getCurrentPositions();\r\n var durationTimePart = Math.min(Math.abs(currentPosition.content - positions.content) / this._cachedButtonWidth, 1);\r\n return fx.animate(this._$cachedContent, {\r\n from: currentPosition,\r\n to: positions,\r\n easing: SLIDE_MENU_ANIMATION_EASING,\r\n duration: SLIDE_MENU_ANIMATION_DURATION * durationTimePart,\r\n strategy: \"frame\",\r\n draw: function(positions) {\r\n that._setPositions(positions)\r\n }\r\n })\r\n },\r\n dispose: function() {\r\n if (this._menu) {\r\n this._menu.$element().remove()\r\n }\r\n if (this._$buttonsContainer) {\r\n this._$buttonsContainer.remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n}).include(EditDecoratorMenuHelperMixin));\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.swipe.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nregisterDecorator(\"delete\", \"swipe\", EditDecorator.inherit({\r\n _shouldHandleSwipe: true,\r\n _renderItemPosition: function($itemElement, offset, animate) {\r\n var deferred = new Deferred;\r\n var itemOffset = offset * this._itemElementWidth;\r\n if (animate) {\r\n fx.animate($itemElement, {\r\n to: {\r\n left: itemOffset\r\n },\r\n type: \"slide\",\r\n complete: function() {\r\n deferred.resolve($itemElement, offset)\r\n }\r\n })\r\n } else {\r\n move($itemElement, {\r\n left: itemOffset\r\n });\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n },\r\n _swipeStartHandler: function($itemElement) {\r\n this._itemElementWidth = $itemElement.width();\r\n return true\r\n },\r\n _swipeUpdateHandler: function($itemElement, args) {\r\n this._renderItemPosition($itemElement, args.offset);\r\n return true\r\n },\r\n _swipeEndHandler: function($itemElement, args) {\r\n var offset = args.targetOffset;\r\n this._renderItemPosition($itemElement, offset, true).done(function($itemElement, offset) {\r\n if (Math.abs(offset)) {\r\n this._list.deleteItem($itemElement).fail(function() {\r\n this._renderItemPosition($itemElement, 0, true)\r\n }.bind(this))\r\n }\r\n }.bind(this));\r\n return true\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.context.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport EditDecoratorMenuHelperMixin from \"./ui.list.edit.decorator_menu_helper\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport {\r\n ListBase\r\n} from \"./ui.list.base\";\r\nvar CONTEXTMENU_CLASS = \"dx-list-context-menu\";\r\nvar CONTEXTMENU_MENUCONTENT_CLASS = \"dx-list-context-menucontent\";\r\nregisterDecorator(\"menu\", \"context\", EditDecorator.inherit({\r\n _init: function() {\r\n var $menu = $(\"
\").addClass(CONTEXTMENU_CLASS);\r\n this._list.$element().append($menu);\r\n this._menu = this._renderOverlay($menu)\r\n },\r\n _renderOverlay: function($element) {\r\n return this._list._createComponent($element, Overlay, {\r\n shading: false,\r\n deferRendering: true,\r\n closeOnTargetScroll: true,\r\n closeOnOutsideClick: function(e) {\r\n return !$(e.target).closest(\".\" + CONTEXTMENU_CLASS).length\r\n },\r\n animation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n height: 0,\r\n opacity: 1\r\n },\r\n to: {\r\n height: function() {\r\n return this._$menuList.outerHeight()\r\n }.bind(this),\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 0,\r\n from: {\r\n opacity: 1\r\n },\r\n to: {\r\n opacity: 0\r\n }\r\n }\r\n },\r\n height: function() {\r\n return this._$menuList ? this._$menuList.outerHeight() : 0\r\n }.bind(this),\r\n width: function() {\r\n return this._list.$element().outerWidth()\r\n }.bind(this),\r\n onContentReady: this._renderMenuContent.bind(this)\r\n })\r\n },\r\n _renderMenuContent: function(e) {\r\n var $overlayContent = e.component.$content();\r\n var items = this._menuItems().slice();\r\n if (this._deleteEnabled()) {\r\n items.push({\r\n text: messageLocalization.format(\"dxListEditDecorator-delete\"),\r\n action: this._deleteItem.bind(this)\r\n })\r\n }\r\n this._$menuList = $(\"
\");\r\n this._list._createComponent(this._$menuList, ListBase, {\r\n items: items,\r\n onItemClick: this._menuItemClickHandler.bind(this),\r\n height: \"auto\",\r\n integrationOptions: {}\r\n });\r\n $overlayContent.addClass(CONTEXTMENU_MENUCONTENT_CLASS);\r\n $overlayContent.append(this._$menuList)\r\n },\r\n _menuItemClickHandler: function(args) {\r\n this._menu.hide();\r\n this._fireMenuAction(this._$itemWithMenu, args.itemData.action)\r\n },\r\n _deleteItem: function() {\r\n this._list.deleteItem(this._$itemWithMenu)\r\n },\r\n handleContextMenu: function($itemElement) {\r\n this._$itemWithMenu = $itemElement;\r\n this._menu.option({\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: $itemElement,\r\n collision: \"flip\"\r\n }\r\n });\r\n this._menu.show();\r\n return true\r\n },\r\n dispose: function() {\r\n if (this._menu) {\r\n this._menu.$element().remove()\r\n }\r\n this.callBase.apply(this, arguments)\r\n }\r\n}).include(EditDecoratorMenuHelperMixin));\r\n","/**\r\n * DevExtreme (esm/ui/radio_group/radio_button.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nvar RADIO_BUTTON_CLASS = \"dx-radiobutton\";\r\nvar RADIO_BUTTON_ICON_CLASS = \"dx-radiobutton-icon\";\r\nvar RADIO_BUTTON_ICON_DOT_CLASS = \"dx-radiobutton-icon-dot\";\r\nvar RADIO_BUTTON_CHECKED_CLASS = \"dx-radiobutton-checked\";\r\nvar RADIO_BUTTON_ICON_CHECKED_CLASS = \"dx-radiobutton-icon-checked\";\r\nvar RadioButton = Editor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n this._clickAction({\r\n event: e\r\n })\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n value: false,\r\n useInkRipple: false\r\n })\r\n },\r\n _canValueBeChangedByClick: function() {\r\n return true\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(RADIO_BUTTON_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderIcon();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this._renderCheckedState(this.option(\"value\"));\r\n this._renderClick();\r\n this.setAria(\"role\", \"radio\")\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render({\r\n waveSizeCoefficient: 3.3,\r\n useHoldAnimation: false,\r\n wavesNumber: 2,\r\n isCentered: true\r\n })\r\n },\r\n _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: element,\r\n event: dxEvent,\r\n wave: waveIndex\r\n };\r\n if (doRender) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _updateFocusState: function(e, value) {\r\n this.callBase.apply(this, arguments);\r\n this._renderInkWave(this._$icon, e, value, 0)\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n this._renderInkWave(this._$icon, e, value, 1)\r\n },\r\n _renderIcon: function() {\r\n this._$icon = $(\"
\").addClass(RADIO_BUTTON_ICON_CLASS);\r\n $(\"
\").addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo(this._$icon);\r\n this.$element().append(this._$icon)\r\n },\r\n _renderCheckedState: function(checked) {\r\n this.$element().toggleClass(RADIO_BUTTON_CHECKED_CLASS, checked).find(\".\" + RADIO_BUTTON_ICON_CLASS).toggleClass(RADIO_BUTTON_ICON_CHECKED_CLASS, checked);\r\n this.setAria(\"checked\", checked)\r\n },\r\n _renderClick: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n this._clickAction = this._createAction(function(args) {\r\n this._clickHandler(args.event)\r\n }.bind(this));\r\n eventsEngine.off(this.$element(), eventName);\r\n eventsEngine.on(this.$element(), eventName, function(e) {\r\n this._clickAction({\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _clickHandler: function(e) {\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"value\":\r\n this._renderCheckedState(args.value);\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n delete this._inkRipple;\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxRadioButton\", RadioButton);\r\nexport default RadioButton;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.selection.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport CheckBox from \"../check_box\";\r\nimport RadioButton from \"../radio_group/radio_button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nvar SELECT_DECORATOR_ENABLED_CLASS = \"dx-list-select-decorator-enabled\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CLASS = \"dx-list-select-all\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS = \"dx-list-select-all-checkbox\";\r\nvar SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS = \"dx-list-select-all-label\";\r\nvar SELECT_CHECKBOX_CONTAINER_CLASS = \"dx-list-select-checkbox-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-list-select-checkbox\";\r\nvar SELECT_RADIO_BUTTON_CONTAINER_CLASS = \"dx-list-select-radiobutton-container\";\r\nvar SELECT_RADIO_BUTTON_CLASS = \"dx-list-select-radiobutton\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar CLICK_EVENT_NAME = addNamespace(clickEventName, \"dxListEditDecorator\");\r\nregisterDecorator(\"selection\", \"default\", EditDecorator.inherit({\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectionMode = this._list.option(\"selectionMode\");\r\n this._singleStrategy = \"single\" === selectionMode;\r\n this._containerClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CONTAINER_CLASS : SELECT_CHECKBOX_CONTAINER_CLASS;\r\n this._controlClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CLASS : SELECT_CHECKBOX_CLASS;\r\n this._controlWidget = this._singleStrategy ? RadioButton : CheckBox;\r\n this._list.$element().addClass(SELECT_DECORATOR_ENABLED_CLASS)\r\n },\r\n beforeBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container.addClass(this._containerClass);\r\n var $control = $(\"
\").addClass(this._controlClass).appendTo($container);\r\n new this._controlWidget($control, extend(this._commonOptions(), {\r\n value: this._isSelected($itemElement),\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n onValueChanged: function(e) {\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n this._processCheckedState($itemElement, e.value);\r\n e.event && e.event.stopPropagation()\r\n }.bind(this)\r\n }))\r\n },\r\n modifyElement: function(config) {\r\n this.callBase.apply(this, arguments);\r\n var $itemElement = config.$itemElement;\r\n var control = this._controlWidget.getInstance($itemElement.find(\".\" + this._controlClass));\r\n eventsEngine.on($itemElement, \"stateChanged\", function(e, state) {\r\n control.option(\"value\", state)\r\n }.bind(this))\r\n },\r\n _updateSelectAllState: function() {\r\n if (!this._$selectAll) {\r\n return\r\n }\r\n this._selectAllCheckBox.option(\"value\", this._list.isSelectAll())\r\n },\r\n afterRender: function() {\r\n if (\"all\" !== this._list.option(\"selectionMode\")) {\r\n return\r\n }\r\n if (!this._$selectAll) {\r\n this._renderSelectAll()\r\n } else {\r\n this._updateSelectAllState()\r\n }\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n var moveFocusDown = !moveFocusUp;\r\n var list = this._list;\r\n var $selectAll = this._$selectAll;\r\n var lastItemIndex = list._getLastItemIndex();\r\n var isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex;\r\n var hasSelectAllItem = !!$selectAll;\r\n if (hasSelectAllItem && isFocusOutOfList) {\r\n list.option(\"focusedElement\", $selectAll);\r\n list.scrollToItem(list.option(\"focusedElement\"));\r\n return true\r\n }\r\n return false\r\n },\r\n handleEnterPressing: function(e) {\r\n if (this._$selectAll && this._$selectAll.hasClass(FOCUSED_STATE_CLASS)) {\r\n e.target = this._$selectAll.get(0);\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"));\r\n return true\r\n }\r\n },\r\n _renderSelectAll: function() {\r\n var $selectAll = this._$selectAll = $(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_CLASS);\r\n var list = this._list;\r\n var downArrowHandler = list._supportedKeys().downArrow.bind(list);\r\n this._selectAllCheckBox = list._createComponent($(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS).appendTo($selectAll), CheckBox, {\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false\r\n });\r\n this._selectAllCheckBox.registerKeyHandler(\"downArrow\", downArrowHandler);\r\n $(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS).text(this._list.option(\"selectAllText\")).appendTo($selectAll);\r\n this._list.itemsContainer().prepend($selectAll);\r\n this._updateSelectAllState();\r\n this._attachSelectAllHandler()\r\n },\r\n _attachSelectAllHandler: function() {\r\n this._selectAllCheckBox.option(\"onValueChanged\", this._selectAllHandler.bind(this));\r\n eventsEngine.off(this._$selectAll, CLICK_EVENT_NAME);\r\n eventsEngine.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllClickHandler.bind(this))\r\n },\r\n _selectAllHandler: function(e) {\r\n e.event && e.event.stopPropagation();\r\n var isSelectedAll = this._selectAllCheckBox.option(\"value\");\r\n var result = this._list._createActionByOption(\"onSelectAllValueChanged\")({\r\n value: isSelectedAll\r\n });\r\n if (false === result) {\r\n return\r\n }\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n if (true === isSelectedAll) {\r\n this._selectAllItems()\r\n } else if (false === isSelectedAll) {\r\n this._unselectAllItems()\r\n }\r\n },\r\n _checkSelectAllCapability: function() {\r\n var list = this._list;\r\n var dataSource = list.getDataSource();\r\n if (\"allPages\" === list.option(\"selectAllMode\") && list.option(\"grouped\") && (!dataSource || !dataSource.group())) {\r\n errors.log(\"W1010\");\r\n return false\r\n }\r\n return true\r\n },\r\n _selectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.selectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _unselectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.deselectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _selectAllClickHandler: function(e) {\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"))\r\n },\r\n _isSelected: function($itemElement) {\r\n return this._list.isItemSelected($itemElement)\r\n },\r\n _processCheckedState: function($itemElement, checked) {\r\n if (checked) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n },\r\n dispose: function() {\r\n this._disposeSelectAll();\r\n this._list.$element().removeClass(SELECT_DECORATOR_ENABLED_CLASS);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _disposeSelectAll: function() {\r\n if (this._$selectAll) {\r\n this._$selectAll.remove();\r\n this._$selectAll = null\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.reorder.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isMouseEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nimport Sortable from \"../sortable\";\r\nvar REORDER_HANDLE_CONTAINER_CLASS = \"dx-list-reorder-handle-container\";\r\nvar REORDER_HANDLE_CLASS = \"dx-list-reorder-handle\";\r\nvar REORDERING_ITEM_GHOST_CLASS = \"dx-list-item-ghost-reordering\";\r\nvar STATE_HOVER_CLASS = \"dx-state-hover\";\r\nregisterDecorator(\"reorder\", \"default\", EditDecorator.inherit({\r\n _init: function() {\r\n var list = this._list;\r\n this._groupedEnabled = this._list.option(\"grouped\");\r\n this._lockedDrag = false;\r\n var filter = this._groupedEnabled ? \"> .dx-list-group > .dx-list-group-body > .dx-list-item\" : \"> .dx-list-item\";\r\n this._sortable = list._createComponent(list._scrollView.content(), Sortable, extend({\r\n component: list,\r\n contentTemplate: null,\r\n allowReordering: false,\r\n filter: filter,\r\n container: list.$element(),\r\n dragDirection: list.option(\"itemDragging.group\") ? \"both\" : \"vertical\",\r\n handle: \".\".concat(REORDER_HANDLE_CLASS),\r\n dragTemplate: this._dragTemplate,\r\n onDragStart: this._dragStartHandler.bind(this),\r\n onDragChange: this._dragChangeHandler.bind(this),\r\n onReorder: this._reorderHandler.bind(this)\r\n }, list.option(\"itemDragging\")))\r\n },\r\n afterRender: function() {\r\n this._sortable.update()\r\n },\r\n _dragTemplate: function(e) {\r\n return $(e.itemElement).clone().width($(e.itemElement).width()).addClass(REORDERING_ITEM_GHOST_CLASS).addClass(STATE_HOVER_CLASS)\r\n },\r\n _dragStartHandler: function(e) {\r\n if (this._lockedDrag) {\r\n e.cancel = true;\r\n return\r\n }\r\n },\r\n _dragChangeHandler: function(e) {\r\n if (this._groupedEnabled && !this._sameParent(e.fromIndex, e.toIndex)) {\r\n e.cancel = true;\r\n return\r\n }\r\n },\r\n _sameParent: function(fromIndex, toIndex) {\r\n var $dragging = this._list.getItemElementByFlatIndex(fromIndex);\r\n var $over = this._list.getItemElementByFlatIndex(toIndex);\r\n return $over.parent().get(0) === $dragging.parent().get(0)\r\n },\r\n _reorderHandler: function(e) {\r\n var $targetElement = this._list.getItemElementByFlatIndex(e.toIndex);\r\n this._list.reorderItem($(e.itemElement), $targetElement)\r\n },\r\n afterBag: function(config) {\r\n var $handle = $(\"
\").addClass(REORDER_HANDLE_CLASS);\r\n eventsEngine.on($handle, \"dxpointerdown\", e => {\r\n this._lockedDrag = !isMouseEvent(e)\r\n });\r\n eventsEngine.on($handle, \"dxhold\", {\r\n timeout: 30\r\n }, e => {\r\n e.cancel = true;\r\n this._lockedDrag = false\r\n });\r\n config.$container.addClass(REORDER_HANDLE_CONTAINER_CLASS).append($handle)\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.provider.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n registry\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport \"./ui.list.edit.decorator.static\";\r\nimport \"./ui.list.edit.decorator.switchable.button\";\r\nimport \"./ui.list.edit.decorator.switchable.slide\";\r\nimport \"./ui.list.edit.decorator.swipe\";\r\nimport \"./ui.list.edit.decorator.context\";\r\nimport \"./ui.list.edit.decorator.selection\";\r\nimport \"./ui.list.edit.decorator.reorder\";\r\nvar editOptionsRegistry = [];\r\nvar registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) {\r\n editOptionsRegistry.push({\r\n enabled: enabledFunc,\r\n decoratorType: decoratorTypeFunc,\r\n decoratorSubType: decoratorSubTypeFunc\r\n })\r\n};\r\nregisterOption((function() {\r\n return this.option(\"menuItems\").length\r\n}), (function() {\r\n return \"menu\"\r\n}), (function() {\r\n return this.option(\"menuMode\")\r\n}));\r\nregisterOption((function() {\r\n return !this.option(\"menuItems\").length && this.option(\"allowItemDeleting\")\r\n}), (function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n return \"toggle\" === mode || \"slideButton\" === mode || \"swipe\" === mode || \"static\" === mode ? \"delete\" : \"menu\"\r\n}), (function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n if (\"slideItem\" === mode) {\r\n mode = \"slide\"\r\n }\r\n if (\"hold\" === mode) {\r\n mode = \"context\"\r\n }\r\n return mode\r\n}));\r\nregisterOption((function() {\r\n return \"none\" !== this.option(\"selectionMode\") && this.option(\"showSelectionControls\")\r\n}), (function() {\r\n return \"selection\"\r\n}), (function() {\r\n return \"default\"\r\n}));\r\nregisterOption((function() {\r\n return this.option(\"itemDragging.allowReordering\") || this.option(\"itemDragging.allowDropInsideItem\") || this.option(\"itemDragging.group\")\r\n}), (function() {\r\n return \"reorder\"\r\n}), (function() {\r\n return \"default\"\r\n}));\r\nvar LIST_ITEM_BEFORE_BAG_CLASS = \"dx-list-item-before-bag\";\r\nvar LIST_ITEM_AFTER_BAG_CLASS = \"dx-list-item-after-bag\";\r\nvar DECORATOR_BEFORE_BAG_CREATE_METHOD = \"beforeBag\";\r\nvar DECORATOR_AFTER_BAG_CREATE_METHOD = \"afterBag\";\r\nvar DECORATOR_MODIFY_ELEMENT_METHOD = \"modifyElement\";\r\nvar DECORATOR_AFTER_RENDER_METHOD = \"afterRender\";\r\nvar DECORATOR_GET_EXCLUDED_SELECTORS_METHOD = \"getExcludedSelectors\";\r\nvar EditProvider = Class.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._fetchRequiredDecorators()\r\n },\r\n dispose: function() {\r\n if (this._decorators && this._decorators.length) {\r\n each(this._decorators, (function(_, decorator) {\r\n decorator.dispose()\r\n }))\r\n }\r\n },\r\n _fetchRequiredDecorators: function() {\r\n this._decorators = [];\r\n each(editOptionsRegistry, function(_, option) {\r\n var optionEnabled = option.enabled.call(this._list);\r\n if (optionEnabled) {\r\n var decoratorType = option.decoratorType.call(this._list);\r\n var decoratorSubType = option.decoratorSubType.call(this._list);\r\n var decorator = this._createDecorator(decoratorType, decoratorSubType);\r\n this._decorators.push(decorator)\r\n }\r\n }.bind(this))\r\n },\r\n _createDecorator: function(type, subType) {\r\n var decoratorClass = this._findDecorator(type, subType);\r\n return new decoratorClass(this._list)\r\n },\r\n _findDecorator: function(type, subType) {\r\n var foundDecorator = registry[type][subType];\r\n if (!foundDecorator) {\r\n throw errors.Error(\"E1012\", type, subType)\r\n }\r\n return foundDecorator\r\n },\r\n modifyItemElement: function(args) {\r\n var $itemElement = $(args.itemElement);\r\n var config = {\r\n $itemElement: $itemElement\r\n };\r\n this._prependBeforeBags($itemElement, config);\r\n this._appendAfterBags($itemElement, config);\r\n this._applyDecorators(DECORATOR_MODIFY_ELEMENT_METHOD, config)\r\n },\r\n afterItemsRendered: function() {\r\n this._applyDecorators(DECORATOR_AFTER_RENDER_METHOD)\r\n },\r\n _prependBeforeBags: function($itemElement, config) {\r\n var $beforeBags = this._collectDecoratorsMarkup(DECORATOR_BEFORE_BAG_CREATE_METHOD, config, LIST_ITEM_BEFORE_BAG_CLASS);\r\n $itemElement.prepend($beforeBags)\r\n },\r\n _appendAfterBags: function($itemElement, config) {\r\n var $afterBags = this._collectDecoratorsMarkup(DECORATOR_AFTER_BAG_CREATE_METHOD, config, LIST_ITEM_AFTER_BAG_CLASS);\r\n $itemElement.append($afterBags)\r\n },\r\n _collectDecoratorsMarkup: function(method, config, containerClass) {\r\n var $collector = $(\"
\");\r\n each(this._decorators, (function() {\r\n var $container = $(\"
\").addClass(containerClass);\r\n this[method](extend({\r\n $container: $container\r\n }, config));\r\n if ($container.children().length) {\r\n $collector.append($container)\r\n }\r\n }));\r\n return $collector.children()\r\n },\r\n _applyDecorators: function(method, config) {\r\n each(this._decorators, (function() {\r\n this[method](config)\r\n }))\r\n },\r\n _handlerExists: function(name) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n if (decorators[i][name] !== noop) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _eventHandler: function(name, $itemElement, e) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var response = false;\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n response = decorators[i][name]($itemElement, e);\r\n if (response) {\r\n break\r\n }\r\n }\r\n return response\r\n },\r\n handleClick: function($itemElement, e) {\r\n return this._eventHandler(\"handleClick\", $itemElement, e)\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n return this._eventHandler(\"handleKeyboardEvents\", currentFocusedIndex, moveFocusUp)\r\n },\r\n handleEnterPressing: function(e) {\r\n return this._eventHandler(\"handleEnterPressing\", e)\r\n },\r\n contextMenuHandlerExists: function() {\r\n return this._handlerExists(\"handleContextMenu\")\r\n },\r\n handleContextMenu: function($itemElement, e) {\r\n return this._eventHandler(\"handleContextMenu\", $itemElement, e)\r\n },\r\n getExcludedItemSelectors: function() {\r\n var excludedSelectors = [];\r\n this._applyDecorators(DECORATOR_GET_EXCLUDED_SELECTORS_METHOD, excludedSelectors);\r\n return excludedSelectors.join(\",\")\r\n }\r\n});\r\nexport default EditProvider;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isTouchEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport GroupedEditStrategy from \"./ui.list.edit.strategy.grouped\";\r\nimport localizationMessage from \"../../localization/message\";\r\nimport EditProvider from \"./ui.list.edit.provider\";\r\nimport {\r\n ListBase\r\n} from \"./ui.list.base\";\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar LIST_ITEM_RESPONSE_WAIT_CLASS = \"dx-list-item-response-wait\";\r\nvar ListEdit = ListBase.inherit({\r\n _supportedKeys() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var moveFocusedItem = (e, moveUp) => {\r\n var editStrategy = this._editStrategy;\r\n var focusedElement = this.option(\"focusedElement\");\r\n var focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement);\r\n var isLastIndexFocused = focusedItemIndex === this._getLastItemIndex();\r\n if (isLastIndexFocused && this._isDataSourceLoading()) {\r\n return\r\n }\r\n if (e.shiftKey && that.option(\"itemDragging.allowReordering\")) {\r\n var nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1);\r\n var $nextItem = editStrategy.getItemElement(nextItemIndex);\r\n this.reorderItem(focusedElement, $nextItem);\r\n this.scrollToItem(focusedElement);\r\n e.preventDefault()\r\n } else {\r\n var editProvider = this._editProvider;\r\n var isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp);\r\n if (!isInternalMoving) {\r\n moveUp ? parent.upArrow(e) : parent.downArrow(e)\r\n }\r\n }\r\n };\r\n return extend({}, parent, {\r\n del: e => {\r\n if (that.option(\"allowItemDeleting\")) {\r\n e.preventDefault();\r\n that.deleteItem(that.option(\"focusedElement\"))\r\n }\r\n },\r\n upArrow: e => moveFocusedItem(e, true),\r\n downArrow: e => moveFocusedItem(e),\r\n enter: function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.enter.apply(this, arguments)\r\n }\r\n },\r\n space: function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.space.apply(this, arguments)\r\n }\r\n }\r\n })\r\n },\r\n _updateSelection() {\r\n this._editProvider.afterItemsRendered();\r\n this.callBase()\r\n },\r\n _getLastItemIndex() {\r\n return this._itemElements().length - 1\r\n },\r\n _refreshItemElements() {\r\n this.callBase();\r\n var excludedSelectors = this._editProvider.getExcludedItemSelectors();\r\n if (excludedSelectors.length) {\r\n this._itemElementsCache = this._itemElementsCache.not(excludedSelectors)\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n var privateKey = item1 && item1.__dx_key__;\r\n if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) {\r\n return false\r\n }\r\n return this.callBase(item1, item2)\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n showSelectionControls: false,\r\n selectionMode: \"none\",\r\n selectAllMode: \"page\",\r\n onSelectAllValueChanged: null,\r\n selectAllText: localizationMessage.format(\"dxList-selectAll\"),\r\n menuItems: [],\r\n menuMode: \"context\",\r\n allowItemDeleting: false,\r\n itemDeleteMode: \"static\",\r\n itemDragging: {}\r\n })\r\n },\r\n _defaultOptionsRules() {\r\n return this.callBase().concat([{\r\n device: _device => \"ios\" === _device.platform,\r\n options: {\r\n menuMode: \"slide\",\r\n itemDeleteMode: \"slideItem\"\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n itemDeleteMode: \"swipe\"\r\n }\r\n }])\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initEditProvider()\r\n },\r\n _initDataSource() {\r\n this.callBase();\r\n if (!this._isPageSelectAll()) {\r\n this._dataSource && this._dataSource.requireTotalCount(true)\r\n }\r\n },\r\n _isPageSelectAll() {\r\n return \"page\" === this.option(\"selectAllMode\")\r\n },\r\n _initEditProvider() {\r\n this._editProvider = new EditProvider(this)\r\n },\r\n _disposeEditProvider() {\r\n if (this._editProvider) {\r\n this._editProvider.dispose()\r\n }\r\n },\r\n _refreshEditProvider() {\r\n this._disposeEditProvider();\r\n this._initEditProvider()\r\n },\r\n _initEditStrategy() {\r\n if (this.option(\"grouped\")) {\r\n this._editStrategy = new GroupedEditStrategy(this)\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _initMarkup() {\r\n this._refreshEditProvider();\r\n this.callBase()\r\n },\r\n _renderItems() {\r\n this.callBase(...arguments);\r\n this._editProvider.afterItemsRendered()\r\n },\r\n _selectedItemClass: () => LIST_ITEM_SELECTED_CLASS,\r\n _itemResponseWaitClass: () => LIST_ITEM_RESPONSE_WAIT_CLASS,\r\n _itemClickHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = this._editProvider.handleClick($itemElement, e);\r\n if (handledByEditProvider) {\r\n return\r\n }\r\n this._saveSelectionChangeEvent(e);\r\n this.callBase(...arguments)\r\n },\r\n _shouldFireContextMenuEvent() {\r\n return this.callBase(...arguments) || this._editProvider.contextMenuHandlerExists()\r\n },\r\n _itemHoldHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = isTouchEvent(e) && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.handledByEditProvider = true;\r\n return\r\n }\r\n this.callBase(...arguments)\r\n },\r\n _getItemContainer: function(changeData) {\r\n if (this.option(\"grouped\")) {\r\n var _this$_editStrategy$g;\r\n var groupIndex = null === (_this$_editStrategy$g = this._editStrategy.getIndexByItemData(changeData)) || void 0 === _this$_editStrategy$g ? void 0 : _this$_editStrategy$g.group;\r\n return this._getGroupContainerByIndex(groupIndex)\r\n } else {\r\n return this.callBase(changeData)\r\n }\r\n },\r\n _itemContextMenuHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.preventDefault();\r\n return\r\n }\r\n this.callBase(...arguments)\r\n },\r\n _postprocessRenderItem(args) {\r\n this.callBase(...arguments);\r\n this._editProvider.modifyItemElement(args)\r\n },\r\n _clean() {\r\n this._disposeEditProvider();\r\n this.callBase()\r\n },\r\n focusListItem(index) {\r\n var $item = this._editStrategy.getItemElement(index);\r\n this.option(\"focusedElement\", $item);\r\n this.focus();\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"selectAllMode\":\r\n this._initDataSource();\r\n this._dataSource.pageIndex(0);\r\n this._dataSource.load();\r\n break;\r\n case \"grouped\":\r\n this._clearSelectedItems();\r\n delete this._renderingGroupIndex;\r\n this._initEditStrategy();\r\n this.callBase(args);\r\n break;\r\n case \"showSelectionControls\":\r\n case \"menuItems\":\r\n case \"menuMode\":\r\n case \"allowItemDeleting\":\r\n case \"itemDeleteMode\":\r\n case \"itemDragging\":\r\n case \"selectAllText\":\r\n this._invalidate();\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n selectAll() {\r\n return this._selection.selectAll(this._isPageSelectAll())\r\n },\r\n unselectAll() {\r\n return this._selection.deselectAll(this._isPageSelectAll())\r\n },\r\n isSelectAll() {\r\n return this._selection.getSelectAllState(this._isPageSelectAll())\r\n },\r\n getFlatIndexByItemElement(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n },\r\n getItemElementByFlatIndex(flatIndex) {\r\n var $itemElements = this._itemElements();\r\n if (flatIndex < 0 || flatIndex >= $itemElements.length) {\r\n return $()\r\n }\r\n return $itemElements.eq(flatIndex)\r\n },\r\n getItemByIndex(index) {\r\n return this._editStrategy.getItemDataByIndex(index)\r\n }\r\n});\r\nexport default ListEdit;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.search.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ListEdit from \"./ui.list.edit\";\r\nimport searchBoxMixin from \"../widget/ui.search_box_mixin\";\r\nvar ListSearch = ListEdit.inherit(searchBoxMixin).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"dx-list-\" + className\r\n },\r\n _getCombinedFilter: function() {\r\n var filter;\r\n var storeLoadOptions;\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n storeLoadOptions = {\r\n filter: dataSource.filter()\r\n };\r\n dataSource._addSearchFilter(storeLoadOptions);\r\n filter = storeLoadOptions.filter\r\n }\r\n return filter\r\n },\r\n _initDataSource: function() {\r\n var value = this.option(\"searchValue\");\r\n var expr = this.option(\"searchExpr\");\r\n var mode = this.option(\"searchMode\");\r\n this.callBase();\r\n if (this._dataSource) {\r\n value && value.length && this._dataSource.searchValue(value);\r\n mode.length && this._dataSource.searchOperation(searchBoxMixin.getOperationBySearchMode(mode));\r\n expr && this._dataSource.searchExpr(expr)\r\n }\r\n }\r\n});\r\nexport default ListSearch;\r\n","/**\r\n * DevExtreme (esm/ui/list.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ListEdit from \"./list/ui.list.edit.search\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nregisterComponent(\"dxList\", ListEdit);\r\nexport default ListEdit;\r\n","/**\r\n * DevExtreme (esm/core/utils/resize_callbacks.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"./window\";\r\nimport domAdapter from \"../dom_adapter\";\r\nimport Callbacks from \"./callbacks\";\r\nimport readyCallbacks from \"./ready_callbacks\";\r\nimport callOnce from \"./call_once\";\r\nvar resizeCallbacks = function() {\r\n var prevSize;\r\n var callbacks = Callbacks();\r\n var originalCallbacksAdd = callbacks.add;\r\n var originalCallbacksRemove = callbacks.remove;\r\n if (!hasWindow()) {\r\n return callbacks\r\n }\r\n var formatSize = function() {\r\n var window = getWindow();\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n }\r\n };\r\n var handleResize = function() {\r\n var now = formatSize();\r\n if (now.width === prevSize.width && now.height === prevSize.height) {\r\n return\r\n }\r\n var changedDimension;\r\n if (now.width === prevSize.width) {\r\n changedDimension = \"height\"\r\n }\r\n if (now.height === prevSize.height) {\r\n changedDimension = \"width\"\r\n }\r\n prevSize = now;\r\n callbacks.fire(changedDimension)\r\n };\r\n var setPrevSize = callOnce((function() {\r\n prevSize = formatSize()\r\n }));\r\n var removeListener;\r\n callbacks.add = function() {\r\n var result = originalCallbacksAdd.apply(callbacks, arguments);\r\n setPrevSize();\r\n readyCallbacks.add((function() {\r\n if (!removeListener && callbacks.has()) {\r\n removeListener = domAdapter.listen(getWindow(), \"resize\", handleResize)\r\n }\r\n }));\r\n return result\r\n };\r\n callbacks.remove = function() {\r\n var result = originalCallbacksRemove.apply(callbacks, arguments);\r\n if (!callbacks.has() && removeListener) {\r\n removeListener();\r\n removeListener = void 0\r\n }\r\n return result\r\n };\r\n return callbacks\r\n}();\r\nexport default resizeCallbacks;\r\n","/**\r\n * DevExtreme (esm/core/config.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport errors from \"./errors\";\r\nvar config = {\r\n rtlEnabled: false,\r\n defaultCurrency: \"USD\",\r\n oDataFilterToLower: true,\r\n serverDecimalSeparator: \".\",\r\n decimalSeparator: \".\",\r\n thousandsSeparator: \",\",\r\n forceIsoDateParsing: true,\r\n wrapActionsBeforeExecute: true,\r\n useLegacyStoreResult: false,\r\n useJQuery: void 0,\r\n editorStylingMode: void 0,\r\n useLegacyVisibleIndex: false,\r\n floatingActionButtonConfig: {\r\n icon: \"add\",\r\n closeIcon: \"close\",\r\n label: \"\",\r\n position: {\r\n at: \"right bottom\",\r\n my: \"right bottom\",\r\n offset: {\r\n x: -16,\r\n y: -16\r\n }\r\n },\r\n maxSpeedDialActionCount: 5,\r\n shading: false,\r\n direction: \"auto\"\r\n },\r\n optionsParser: optionsString => {\r\n if (\"{\" !== optionsString.trim().charAt(0)) {\r\n optionsString = \"{\" + optionsString + \"}\"\r\n }\r\n try {\r\n return new Function(\"return \" + optionsString)()\r\n } catch (ex) {\r\n throw errors.Error(\"E3018\", ex, optionsString)\r\n }\r\n }\r\n};\r\nvar deprecatedFields = [\"decimalSeparator\", \"thousandsSeparator\"];\r\nvar configMethod = function() {\r\n if (!arguments.length) {\r\n return config\r\n }\r\n var newConfig = arguments.length <= 0 ? void 0 : arguments[0];\r\n deprecatedFields.forEach(deprecatedField => {\r\n if (newConfig[deprecatedField]) {\r\n var message = \"Now, the \".concat(deprecatedField, \" is selected based on the specified locale.\");\r\n errors.log(\"W0003\", \"config\", deprecatedField, \"19.2\", message)\r\n }\r\n });\r\n extend(config, newConfig)\r\n};\r\nif (\"undefined\" !== typeof DevExpress && DevExpress.config) {\r\n configMethod(DevExpress.config)\r\n}\r\nexport default configMethod;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n deferUpdate,\r\n deferRender,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport devices from \"../../core/devices\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n focusable\r\n} from \"../widget/selectors\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport scrollEvents from \"./ui.events.emitter.gesture.scroll\";\r\nimport {\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"./ui.scrollable.device\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLABLE = \"dxScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_CLASS = \"dx-scrollable\";\r\nvar SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nvar SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar BOTH = \"both\";\r\nvar Scrollable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n disabled: false,\r\n onScroll: null,\r\n direction: VERTICAL,\r\n showScrollbar: \"onScroll\",\r\n useNative: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n onUpdated: null,\r\n onStart: null,\r\n onEnd: null,\r\n onBounce: null,\r\n useSimulatedScrollbar: false,\r\n useKeyboard: true,\r\n inertiaEnabled: true,\r\n updateManually: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return nativeScrolling && \"android\" === devices.real().platform && !browser.mozilla\r\n },\r\n options: {\r\n useSimulatedScrollbar: true\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this.callBase(options);\r\n if (!(\"useSimulatedScrollbar\" in options)) {\r\n this._setUseSimulatedScrollbar()\r\n }\r\n },\r\n _setUseSimulatedScrollbar: function() {\r\n if (!this.initialOption(\"useSimulatedScrollbar\")) {\r\n this.option(\"useSimulatedScrollbar\", !this.option(\"useNative\"))\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initScrollableMarkup();\r\n this._locked = false\r\n },\r\n _getWindowDevicePixelRatio: function() {\r\n return hasWindow() ? getWindow().devicePixelRatio : 1\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.update();\r\n this._updateRtlPosition();\r\n this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);\r\n delete this._savedScrollOffset\r\n } else {\r\n this._savedScrollOffset = this.scrollOffset()\r\n }\r\n },\r\n _initScrollableMarkup: function() {\r\n var $element = this.$element().addClass(SCROLLABLE_CLASS);\r\n var $container = this._$container = $(\"
\").addClass(SCROLLABLE_CONTAINER_CLASS);\r\n var $wrapper = this._$wrapper = $(\"
\").addClass(SCROLLABLE_WRAPPER_CLASS);\r\n var $content = this._$content = $(\"
\").addClass(SCROLLABLE_CONTENT_CLASS);\r\n if (domAdapter.hasDocumentProperty(\"onbeforeactivate\") && browser.msie && browser.version < 12) {\r\n eventsEngine.on($element, addNamespace(\"beforeactivate\", SCROLLABLE), (function(e) {\r\n if (!$(e.target).is(focusable)) {\r\n e.preventDefault()\r\n }\r\n }))\r\n }\r\n $content.append($element.contents()).appendTo($container);\r\n $container.appendTo($wrapper);\r\n $wrapper.appendTo($element)\r\n },\r\n _dimensionChanged: function() {\r\n this.update();\r\n this._updateRtlPosition()\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderDirection()\r\n },\r\n _render: function() {\r\n this._renderStrategy();\r\n this._attachEventHandlers();\r\n this._renderDisabledState();\r\n this._createActions();\r\n this.update();\r\n this.callBase();\r\n this._rtlConfig = {\r\n scrollRight: 0,\r\n clientWidth: this._container().get(0).clientWidth,\r\n windowPixelRatio: this._getWindowDevicePixelRatio()\r\n };\r\n this._updateRtlPosition()\r\n },\r\n _isHorizontalAndRtlEnabled: function() {\r\n return this.option(\"rtlEnabled\") && this.option(\"direction\") !== VERTICAL\r\n },\r\n _updateRtlPosition: function() {\r\n this._updateBounds();\r\n if (this._isHorizontalAndRtlEnabled()) {\r\n deferUpdate(() => {\r\n var scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight;\r\n if (scrollLeft <= 0) {\r\n scrollLeft = 0;\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left\r\n }\r\n deferRender(() => {\r\n if (this.scrollLeft() !== scrollLeft) {\r\n this._rtlConfig.skipUpdating = true;\r\n this.scrollTo({\r\n left: scrollLeft\r\n });\r\n this._rtlConfig.skipUpdating = false\r\n }\r\n })\r\n })\r\n }\r\n },\r\n _getMaxOffset: function() {\r\n var {\r\n scrollWidth: scrollWidth,\r\n clientWidth: clientWidth,\r\n scrollHeight: scrollHeight,\r\n clientHeight: clientHeight\r\n } = this._container().get(0);\r\n return {\r\n left: scrollWidth - clientWidth,\r\n top: scrollHeight - clientHeight\r\n }\r\n },\r\n _updateBounds: function() {\r\n this._strategy.updateBounds()\r\n },\r\n _attachEventHandlers: function() {\r\n var strategy = this._strategy;\r\n var initEventData = {\r\n getDirection: strategy.getDirection.bind(strategy),\r\n validate: this._validate.bind(this),\r\n isNative: this.option(\"useNative\"),\r\n scrollTarget: this._$container\r\n };\r\n eventsEngine.off(this._$wrapper, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.init, SCROLLABLE), initEventData, this._initHandler.bind(this));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.start, SCROLLABLE), strategy.handleStart.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.move, SCROLLABLE), strategy.handleMove.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.end, SCROLLABLE), strategy.handleEnd.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.stop, SCROLLABLE), strategy.handleStop.bind(strategy));\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$container, addNamespace(\"scroll\", SCROLLABLE), strategy.handleScroll.bind(strategy))\r\n },\r\n _updateRtlConfig: function() {\r\n if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {\r\n var {\r\n clientWidth: clientWidth,\r\n scrollLeft: scrollLeft\r\n } = this._container().get(0);\r\n var windowPixelRatio = this._getWindowDevicePixelRatio();\r\n if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft\r\n }\r\n this._rtlConfig.clientWidth = clientWidth;\r\n this._rtlConfig.windowPixelRatio = windowPixelRatio\r\n }\r\n },\r\n _validate: function(e) {\r\n if (this._isLocked()) {\r\n return false\r\n }\r\n this._updateIfNeed();\r\n return this._strategy.validate(e)\r\n },\r\n _initHandler: function() {\r\n var strategy = this._strategy;\r\n strategy.handleInit.apply(strategy, arguments)\r\n },\r\n _renderDisabledState: function() {\r\n this.$element().toggleClass(SCROLLABLE_DISABLED_CLASS, this.option(\"disabled\"));\r\n if (this.option(\"disabled\")) {\r\n this._lock()\r\n } else {\r\n this._unlock()\r\n }\r\n },\r\n _renderDirection: function() {\r\n this.$element().removeClass(\"dx-scrollable-\" + HORIZONTAL).removeClass(\"dx-scrollable-\" + VERTICAL).removeClass(\"dx-scrollable-\" + BOTH).addClass(\"dx-scrollable-\" + this.option(\"direction\"))\r\n },\r\n _renderStrategy: function() {\r\n this._createStrategy();\r\n this._strategy.render();\r\n this.$element().data(SCROLLABLE_STRATEGY, this._strategy)\r\n },\r\n _createStrategy: function() {\r\n this._strategy = this.option(\"useNative\") ? new NativeStrategy(this) : new SimulatedStrategy(this)\r\n },\r\n _createActions: function() {\r\n this._strategy && this._strategy.createActions()\r\n },\r\n _clean: function() {\r\n this._strategy && this._strategy.dispose()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onStart\":\r\n case \"onEnd\":\r\n case \"onUpdated\":\r\n case \"onScroll\":\r\n case \"onBounce\":\r\n this._createActions();\r\n break;\r\n case \"direction\":\r\n this._resetInactiveDirection();\r\n this._invalidate();\r\n break;\r\n case \"useNative\":\r\n this._setUseSimulatedScrollbar();\r\n this._invalidate();\r\n break;\r\n case \"inertiaEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"bounceEnabled\":\r\n case \"useKeyboard\":\r\n case \"showScrollbar\":\r\n case \"useSimulatedScrollbar\":\r\n this._invalidate();\r\n break;\r\n case \"disabled\":\r\n this._renderDisabledState();\r\n this._strategy && this._strategy.disabledChanged();\r\n break;\r\n case \"updateManually\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._updateRtlPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _resetInactiveDirection: function() {\r\n var inactiveProp = this._getInactiveProp();\r\n if (!inactiveProp || !hasWindow()) {\r\n return\r\n }\r\n var scrollOffset = this.scrollOffset();\r\n scrollOffset[inactiveProp] = 0;\r\n this.scrollTo(scrollOffset)\r\n },\r\n _getInactiveProp: function() {\r\n var direction = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return \"left\"\r\n }\r\n if (direction === HORIZONTAL) {\r\n return \"top\"\r\n }\r\n },\r\n _location: function() {\r\n return this._strategy.location()\r\n },\r\n _normalizeLocation: function(location) {\r\n if (isPlainObject(location)) {\r\n var left = ensureDefined(location.left, location.x);\r\n var top = ensureDefined(location.top, location.y);\r\n return {\r\n left: isDefined(left) ? -left : void 0,\r\n top: isDefined(top) ? -top : void 0\r\n }\r\n } else {\r\n var direction = this.option(\"direction\");\r\n return {\r\n left: direction !== VERTICAL ? -location : void 0,\r\n top: direction !== HORIZONTAL ? -location : void 0\r\n }\r\n }\r\n },\r\n _isLocked: function() {\r\n return this._locked\r\n },\r\n _lock: function() {\r\n this._locked = true\r\n },\r\n _unlock: function() {\r\n if (!this.option(\"disabled\")) {\r\n this._locked = false\r\n }\r\n },\r\n _isDirection: function(direction) {\r\n var current = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return current !== HORIZONTAL\r\n }\r\n if (direction === HORIZONTAL) {\r\n return current !== VERTICAL\r\n }\r\n return current === direction\r\n },\r\n _updateAllowedDirection: function() {\r\n var allowedDirections = this._strategy._allowedDirections();\r\n if (this._isDirection(BOTH) && allowedDirections.vertical && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = BOTH\r\n } else if (this._isDirection(HORIZONTAL) && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = HORIZONTAL\r\n } else if (this._isDirection(VERTICAL) && allowedDirections.vertical) {\r\n this._allowedDirectionValue = VERTICAL\r\n } else {\r\n this._allowedDirectionValue = null\r\n }\r\n },\r\n _allowedDirection: function() {\r\n return this._allowedDirectionValue\r\n },\r\n _container: function() {\r\n return this._$container\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content)\r\n },\r\n scrollOffset: function() {\r\n return this._getScrollOffset()\r\n },\r\n _getScrollOffset() {\r\n return {\r\n top: -this._location().top,\r\n left: -this._location().left\r\n }\r\n },\r\n scrollTop: function() {\r\n return this.scrollOffset().top\r\n },\r\n scrollLeft: function() {\r\n return this.scrollOffset().left\r\n },\r\n clientHeight: function() {\r\n return this._$container.height()\r\n },\r\n scrollHeight: function() {\r\n return this.$content().outerHeight()\r\n },\r\n clientWidth: function() {\r\n return this._$container.width()\r\n },\r\n scrollWidth: function() {\r\n return this.$content().outerWidth()\r\n },\r\n update: function() {\r\n if (!this._strategy) {\r\n return\r\n }\r\n return when(this._strategy.update()).done(function() {\r\n this._updateAllowedDirection()\r\n }.bind(this))\r\n },\r\n scrollBy: function(distance) {\r\n distance = this._normalizeLocation(distance);\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._updateIfNeed();\r\n this._strategy.scrollBy(distance);\r\n this._updateRtlConfig()\r\n },\r\n scrollTo: function(targetLocation) {\r\n targetLocation = this._normalizeLocation(targetLocation);\r\n this._updateIfNeed();\r\n var location = this._location();\r\n if (!this.option(\"useNative\")) {\r\n targetLocation = this._strategy._applyScaleRatio(targetLocation);\r\n location = this._strategy._applyScaleRatio(location)\r\n }\r\n var distance = this._normalizeLocation({\r\n left: location.left - ensureDefined(targetLocation.left, location.left),\r\n top: location.top - ensureDefined(targetLocation.top, location.top)\r\n });\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._strategy.scrollBy(distance);\r\n this._updateRtlConfig()\r\n },\r\n scrollToElement: function(element, offset) {\r\n var $element = $(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n scrollPosition.left = this.getScrollElementPosition($element, HORIZONTAL, offset)\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this.getScrollElementPosition($element, VERTICAL, offset)\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n scrollToElementTopLeft: function(element) {\r\n var $element = $(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n var leftPosition = this._elementPositionRelativeToContent($element, \"left\");\r\n scrollPosition.left = true === this.option(\"rtlEnabled\") ? leftPosition + $element.width() - this.clientWidth() : leftPosition\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this._elementPositionRelativeToContent($element, \"top\")\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n getScrollElementPosition: function($element, direction, offset) {\r\n offset = offset || {};\r\n var isVertical = direction === VERTICAL;\r\n var startOffset = (isVertical ? offset.top : offset.left) || 0;\r\n var endOffset = (isVertical ? offset.bottom : offset.right) || 0;\r\n var elementPositionRelativeToContent = this._elementPositionRelativeToContent($element, isVertical ? \"top\" : \"left\");\r\n var elementPosition = elementPositionRelativeToContent;\r\n var elementSize = $element[isVertical ? \"outerHeight\" : \"outerWidth\"]();\r\n var scrollLocation = isVertical ? this.scrollTop() : this.scrollLeft();\r\n var clientSize = this._container().get(0)[isVertical ? \"clientHeight\" : \"clientWidth\"];\r\n var startDistance = scrollLocation - elementPosition + startOffset;\r\n var endDistance = scrollLocation - elementPosition - elementSize + clientSize - endOffset;\r\n if (startDistance <= 0 && endDistance >= 0) {\r\n return scrollLocation\r\n }\r\n return scrollLocation - (Math.abs(startDistance) > Math.abs(endDistance) ? endDistance : startDistance)\r\n },\r\n _elementPositionRelativeToContent: function($element, prop) {\r\n var result = 0;\r\n while (this._hasScrollContent($element)) {\r\n result += $element.position()[prop];\r\n $element = $element.offsetParent()\r\n }\r\n return result\r\n },\r\n _hasScrollContent: function($element) {\r\n var $content = this.$content();\r\n return $element.closest($content).length && !$element.is($content)\r\n },\r\n _updateIfNeed: function() {\r\n if (!this.option(\"updateManually\")) {\r\n this.update()\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nregisterComponent(SCROLLABLE, Scrollable);\r\nexport default Scrollable;\r\n","/**\r\n * DevExtreme (esm/core/utils/variable_wrapper.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n logger\r\n} from \"./console\";\r\nimport dependencyInjector from \"./dependency_injector\";\r\nexport default dependencyInjector({\r\n isWrapped: function() {\r\n return false\r\n },\r\n isWritableWrapped: function() {\r\n return false\r\n },\r\n wrap: function(value) {\r\n return value\r\n },\r\n unwrap: function(value) {\r\n return value\r\n },\r\n assign: function() {\r\n logger.error(\"Method 'assign' should not be used for not wrapped variables. Use 'isWrapped' method for ensuring.\")\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_button.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport TextEditorButton from \"../text_box/texteditor_button_collection/button\";\r\nimport Button from \"../button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_CLASS = \"dx-dropdowneditor-button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_VISIBLE = \"dx-dropdowneditor-button-visible\";\r\nvar BUTTON_MESSAGE = \"dxDropDownEditor-selectLabel\";\r\nexport default class DropDownButton extends TextEditorButton {\r\n constructor(name, editor, options) {\r\n super(name, editor, options);\r\n this.currentTemplate = null\r\n }\r\n _attachEvents(instance) {\r\n var {\r\n editor: editor\r\n } = this;\r\n instance.option(\"onClick\", e => {\r\n !editor.option(\"openOnFieldClick\") && editor._openHandler(e)\r\n });\r\n eventsEngine.on(instance.$element(), \"mousedown\", e => {\r\n if (editor.$element().is(\".dx-state-focused\")) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $element = $(\"
\");\r\n var options = this._getOptions();\r\n this._addToContainer($element);\r\n var instance = editor._createComponent($element, Button, extend({}, options, {\r\n elementAttr: {\r\n \"aria-label\": messageLocalization.format(BUTTON_MESSAGE)\r\n }\r\n }));\r\n this._legacyRender(editor.$element(), $element, options.visible);\r\n return {\r\n $element: $element,\r\n instance: instance\r\n }\r\n }\r\n _getOptions() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var visible = this._isVisible();\r\n var isReadOnly = editor.option(\"readOnly\");\r\n var options = {\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n activeStateEnabled: false,\r\n useInkRipple: false,\r\n disabled: isReadOnly,\r\n visible: visible\r\n };\r\n this._addTemplate(options);\r\n return options\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return super._isVisible() && editor.option(\"showDropDownButton\")\r\n }\r\n _legacyRender($editor, $element, isVisible) {\r\n $editor.toggleClass(DROP_DOWN_EDITOR_BUTTON_VISIBLE, isVisible);\r\n if ($element) {\r\n $element.removeClass(\"dx-button\").addClass(DROP_DOWN_EDITOR_BUTTON_CLASS)\r\n }\r\n }\r\n _isSameTemplate() {\r\n return this.editor.option(\"dropDownButtonTemplate\") === this.currentTemplate\r\n }\r\n _addTemplate(options) {\r\n if (!this._isSameTemplate()) {\r\n options.template = this.editor._getTemplateByOption(\"dropDownButtonTemplate\");\r\n this.currentTemplate = this.editor.option(\"dropDownButtonTemplate\")\r\n }\r\n }\r\n update() {\r\n var shouldUpdate = super.update();\r\n if (shouldUpdate) {\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var options = this._getOptions();\r\n null === instance || void 0 === instance ? void 0 : instance.option(options);\r\n this._legacyRender($editor, null === instance || void 0 === instance ? void 0 : instance.$element(), options.visible)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_editor.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../../core/utils/common\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport DropDownButton from \"./ui.drop_down_button\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport TextBox from \"../text_box\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../core/templates/function_template\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getElementWidth,\r\n getSizeValue\r\n} from \"./utils\";\r\nvar DROP_DOWN_EDITOR_CLASS = \"dx-dropdowneditor\";\r\nvar DROP_DOWN_EDITOR_INPUT_WRAPPER = \"dx-dropdowneditor-input-wrapper\";\r\nvar DROP_DOWN_EDITOR_BUTTON_ICON = \"dx-dropdowneditor-icon\";\r\nvar DROP_DOWN_EDITOR_OVERLAY = \"dx-dropdowneditor-overlay\";\r\nvar DROP_DOWN_EDITOR_OVERLAY_FLIPPED = \"dx-dropdowneditor-overlay-flipped\";\r\nvar DROP_DOWN_EDITOR_ACTIVE = \"dx-dropdowneditor-active\";\r\nvar DROP_DOWN_EDITOR_FIELD_CLICKABLE = \"dx-dropdowneditor-field-clickable\";\r\nvar DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER = \"dx-dropdowneditor-field-template-wrapper\";\r\nvar isIOs = \"ios\" === devices.current().platform;\r\nvar DropDownEditor = TextBox.inherit({\r\n _supportedKeys: function() {\r\n return extend({}, this.callBase(), {\r\n tab: function(e) {\r\n if (!this.option(\"opened\")) {\r\n return\r\n }\r\n if (\"instantly\" === this.option(\"applyValueMode\")) {\r\n this.close();\r\n return\r\n }\r\n var $focusableElement = e.shiftKey ? this._getLastPopupElement() : this._getFirstPopupElement();\r\n $focusableElement && eventsEngine.trigger($focusableElement, \"focus\");\r\n e.preventDefault()\r\n },\r\n escape: function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault()\r\n }\r\n this.close();\r\n return true\r\n },\r\n upArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.altKey) {\r\n this.close();\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n downArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.altKey) {\r\n this._validatedOpening();\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n enter: function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault();\r\n this._valueChangeEventHandler(e)\r\n }\r\n return true\r\n }\r\n })\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"dropDown\",\r\n Ctor: DropDownButton\r\n }])\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: null,\r\n onOpened: null,\r\n onClosed: null,\r\n opened: false,\r\n acceptCustomValue: true,\r\n applyValueMode: \"instantly\",\r\n deferRendering: true,\r\n activeStateEnabled: true,\r\n dropDownButtonTemplate: \"dropDownButton\",\r\n fieldTemplate: null,\r\n openOnFieldClick: false,\r\n showDropDownButton: true,\r\n buttons: void 0,\r\n dropDownOptions: {\r\n showTitle: false\r\n },\r\n popupPosition: this._getDefaultPopupPosition(),\r\n onPopupInitialized: null,\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n cancelButtonText: messageLocalization.format(\"Cancel\"),\r\n buttonsLocation: \"default\",\r\n useHiddenSubmitElement: false\r\n })\r\n },\r\n _useTemplates: function() {\r\n return true\r\n },\r\n _getDefaultPopupPosition: function(isRtlEnabled) {\r\n var position = getDefaultAlignment(isRtlEnabled);\r\n return {\r\n offset: {\r\n h: 0,\r\n v: -1\r\n },\r\n my: position + \" top\",\r\n at: position + \" bottom\",\r\n collision: \"flip flip\"\r\n }\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n var isGeneric = \"generic\" === _device.platform;\r\n return isGeneric\r\n },\r\n options: {\r\n popupPosition: {\r\n offset: {\r\n v: 0\r\n }\r\n }\r\n }\r\n }])\r\n },\r\n _inputWrapper: function() {\r\n return this.$element().find(\".\" + DROP_DOWN_EDITOR_INPUT_WRAPPER).first()\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initVisibilityActions();\r\n this._initPopupInitializedAction();\r\n this._updatePopupPosition(this.option(\"rtlEnabled\"));\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"))\r\n },\r\n _updatePopupPosition: function(isRtlEnabled) {\r\n var {\r\n my: my,\r\n at: at\r\n } = this._getDefaultPopupPosition(isRtlEnabled);\r\n var currentPosition = this.option(\"popupPosition\");\r\n this.option(\"popupPosition\", extend({}, currentPosition, {\r\n my: my,\r\n at: at\r\n }))\r\n },\r\n _initVisibilityActions: function() {\r\n this._openAction = this._createActionByOption(\"onOpened\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this._closeAction = this._createActionByOption(\"onClosed\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initPopupInitializedAction: function() {\r\n this._popupInitializedAction = this._createActionByOption(\"onPopupInitialized\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.callBase();\r\n this.$element().addClass(DROP_DOWN_EDITOR_CLASS);\r\n this.setAria(\"role\", \"combobox\")\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderOpenHandler();\r\n this._attachFocusOutHandler();\r\n this._renderOpenedState()\r\n },\r\n _renderContentImpl: function() {\r\n if (!this.option(\"deferRendering\")) {\r\n this._createPopup()\r\n }\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._wrapInput();\r\n this._setDefaultAria()\r\n },\r\n _wrapInput: function() {\r\n this._$container = this.$element().wrapInner($(\"
\").addClass(DROP_DOWN_EDITOR_INPUT_WRAPPER)).children().eq(0)\r\n },\r\n _setDefaultAria: function() {\r\n this.setAria({\r\n haspopup: \"true\",\r\n autocomplete: \"list\"\r\n })\r\n },\r\n _readOnlyPropValue: function() {\r\n return !this._isEditable() || this.callBase()\r\n },\r\n _cleanFocusState: function() {\r\n this.callBase();\r\n if (this.option(\"fieldTemplate\")) {\r\n this._detachFocusEvents()\r\n }\r\n },\r\n _getFieldTemplate: function() {\r\n return this.option(\"fieldTemplate\") && this._getTemplateByOption(\"fieldTemplate\")\r\n },\r\n _renderMask: function() {\r\n if (this.option(\"fieldTemplate\")) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _renderField: function() {\r\n var fieldTemplate = this._getFieldTemplate();\r\n fieldTemplate && this._renderTemplatedField(fieldTemplate, this._fieldRenderData())\r\n },\r\n _renderPlaceholder: function() {\r\n var hasFieldTemplate = !!this._getFieldTemplate();\r\n if (!hasFieldTemplate) {\r\n this.callBase()\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._setSubmitValue()\r\n }\r\n var promise = this.callBase();\r\n promise.always(this._renderField.bind(this))\r\n },\r\n _renderTemplatedField: function(fieldTemplate, data) {\r\n var isFocused = focused(this._input());\r\n var $container = this._$container;\r\n this._detachKeyboardEvents();\r\n this._refreshButtonsContainer();\r\n this._detachWrapperContent();\r\n this._detachFocusEvents();\r\n $container.empty();\r\n var $templateWrapper = $(\"
\").addClass(DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER).appendTo($container);\r\n fieldTemplate.render({\r\n model: data,\r\n container: getPublicElement($templateWrapper),\r\n onRendered: () => {\r\n var $input = this._input();\r\n if (!$input.length) {\r\n throw errors.Error(\"E1010\")\r\n }\r\n this._integrateInput();\r\n isFocused && eventsEngine.trigger($input, \"focus\")\r\n }\r\n });\r\n this._attachWrapperContent($container)\r\n },\r\n _detachWrapperContent() {\r\n var _this$_$submitElement, _this$_$beforeButtons, _this$_$afterButtonsC;\r\n var useHiddenSubmitElement = this.option(\"useHiddenSubmitElement\");\r\n useHiddenSubmitElement && (null === (_this$_$submitElement = this._$submitElement) || void 0 === _this$_$submitElement ? void 0 : _this$_$submitElement.detach());\r\n var beforeButtonsContainerParent = null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons[0].parentNode;\r\n var afterButtonsContainerParent = null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC[0].parentNode;\r\n null === beforeButtonsContainerParent || void 0 === beforeButtonsContainerParent ? void 0 : beforeButtonsContainerParent.removeChild(this._$beforeButtonsContainer[0]);\r\n null === afterButtonsContainerParent || void 0 === afterButtonsContainerParent ? void 0 : afterButtonsContainerParent.removeChild(this._$afterButtonsContainer[0])\r\n },\r\n _attachWrapperContent($container) {\r\n var _this$_$submitElement2;\r\n var useHiddenSubmitElement = this.option(\"useHiddenSubmitElement\");\r\n $container.prepend(this._$beforeButtonsContainer);\r\n useHiddenSubmitElement && (null === (_this$_$submitElement2 = this._$submitElement) || void 0 === _this$_$submitElement2 ? void 0 : _this$_$submitElement2.appendTo($container));\r\n $container.append(this._$afterButtonsContainer)\r\n },\r\n _refreshButtonsContainer() {\r\n this._$buttonsContainer = this.$element().children().eq(0)\r\n },\r\n _integrateInput: function() {\r\n this._refreshEvents();\r\n this._refreshValueChangeEvent();\r\n this._renderFocusState();\r\n this._refreshEmptinessEvent()\r\n },\r\n _refreshEmptinessEvent: function() {\r\n eventsEngine.off(this._input(), \"input blur\", this._toggleEmptinessEventHandler);\r\n this._renderEmptinessEvent()\r\n },\r\n _fieldRenderData: function() {\r\n return this.option(\"value\")\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n dropDownButton: new FunctionTemplate((function(options) {\r\n var $icon = $(\"
\").addClass(DROP_DOWN_EDITOR_BUTTON_ICON);\r\n $(options.container).append($icon)\r\n }))\r\n });\r\n this.callBase()\r\n },\r\n _renderOpenHandler: function() {\r\n var $inputWrapper = this._inputWrapper();\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var openOnFieldClick = this.option(\"openOnFieldClick\");\r\n eventsEngine.off($inputWrapper, eventName);\r\n eventsEngine.on($inputWrapper, eventName, this._getInputClickHandler(openOnFieldClick));\r\n this.$element().toggleClass(DROP_DOWN_EDITOR_FIELD_CLICKABLE, openOnFieldClick);\r\n if (openOnFieldClick) {\r\n this._openOnFieldClickAction = this._createAction(this._openHandler.bind(this))\r\n }\r\n },\r\n _attachFocusOutHandler: function() {\r\n if (isIOs) {\r\n this._detachFocusOutEvents();\r\n eventsEngine.on(this._inputWrapper(), addNamespace(\"focusout\", this.NAME), event => {\r\n var newTarget = event.relatedTarget;\r\n var popupWrapper = this.content ? $(this.content()).closest(\".\" + DROP_DOWN_EDITOR_OVERLAY) : this._$popup;\r\n if (newTarget && this.option(\"opened\")) {\r\n var isNewTargetOutside = 0 === $(newTarget).closest(\".\" + DROP_DOWN_EDITOR_OVERLAY, popupWrapper).length;\r\n if (isNewTargetOutside) {\r\n this.close()\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _detachFocusOutEvents: function() {\r\n isIOs && eventsEngine.off(this._inputWrapper(), addNamespace(\"focusout\", this.NAME))\r\n },\r\n _getInputClickHandler: function(openOnFieldClick) {\r\n return openOnFieldClick ? e => {\r\n this._executeOpenAction(e)\r\n } : e => {\r\n this._focusInput()\r\n }\r\n },\r\n _openHandler: function() {\r\n this._toggleOpenState()\r\n },\r\n _executeOpenAction: function(e) {\r\n this._openOnFieldClickAction({\r\n event: e\r\n })\r\n },\r\n _keyboardEventBindingTarget: function() {\r\n return this._input()\r\n },\r\n _focusInput: function() {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"focusStateEnabled\") && !focused(this._input())) {\r\n this._resetCaretPosition();\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n }\r\n return true\r\n },\r\n _resetCaretPosition: function() {\r\n var ignoreEditable = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n var inputElement = this._input().get(0);\r\n if (inputElement) {\r\n var {\r\n value: value\r\n } = inputElement;\r\n var caretPosition = isDefined(value) && (ignoreEditable || this._isEditable()) ? value.length : 0;\r\n this._caret({\r\n start: caretPosition,\r\n end: caretPosition\r\n }, true)\r\n }\r\n },\r\n _isEditable: function() {\r\n return this.option(\"acceptCustomValue\")\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (!this._focusInput()) {\r\n return\r\n }\r\n if (!this.option(\"readOnly\")) {\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n this.option(\"opened\", isVisible)\r\n }\r\n },\r\n _renderOpenedState: function() {\r\n var opened = this.option(\"opened\");\r\n if (opened) {\r\n this._createPopup()\r\n }\r\n this.$element().toggleClass(DROP_DOWN_EDITOR_ACTIVE, opened);\r\n this._setPopupOption(\"visible\", opened);\r\n this.setAria({\r\n expanded: opened\r\n });\r\n this.setAria(\"owns\", opened ? this._popupContentId : void 0, this.$element())\r\n },\r\n _createPopup: function() {\r\n if (this._$popup) {\r\n return\r\n }\r\n this._$popup = $(\"
\").addClass(DROP_DOWN_EDITOR_OVERLAY).appendTo(this.$element());\r\n this._renderPopup();\r\n this._renderPopupContent()\r\n },\r\n _renderPopupContent: noop,\r\n _renderPopup: function() {\r\n var popupConfig = extend(this._popupConfig(), this._options.cache(\"dropDownOptions\"));\r\n this._popup = this._createComponent(this._$popup, Popup, popupConfig);\r\n this._popup.on({\r\n showing: this._popupShowingHandler.bind(this),\r\n shown: this._popupShownHandler.bind(this),\r\n hiding: this._popupHidingHandler.bind(this),\r\n hidden: this._popupHiddenHandler.bind(this),\r\n contentReady: this._contentReadyHandler.bind(this)\r\n });\r\n this._contentReadyHandler();\r\n this._setPopupContentId(this._popup.$content());\r\n this._bindInnerWidgetOptions(this._popup, \"dropDownOptions\")\r\n },\r\n _setPopupContentId($popupContent) {\r\n this._popupContentId = \"dx-\" + new Guid;\r\n this.setAria(\"id\", this._popupContentId, $popupContent)\r\n },\r\n _contentReadyHandler: noop,\r\n _popupConfig: function() {\r\n return {\r\n onInitialized: this._popupInitializedHandler(),\r\n position: extend(this.option(\"popupPosition\"), {\r\n of: this.$element()\r\n }),\r\n showTitle: this.option(\"dropDownOptions.showTitle\"),\r\n width: () => getElementWidth(this.$element()),\r\n height: \"auto\",\r\n shading: false,\r\n closeOnTargetScroll: true,\r\n closeOnOutsideClick: this._closeOutsideDropDownHandler.bind(this),\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n duration: 0,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n deferRendering: false,\r\n focusStateEnabled: false,\r\n showCloseButton: false,\r\n dragEnabled: false,\r\n toolbarItems: this._getPopupToolbarItems(),\r\n onPositioned: this._popupPositionedHandler.bind(this),\r\n fullScreen: false,\r\n contentTemplate: null\r\n }\r\n },\r\n _popupInitializedHandler: function() {\r\n if (!this.option(\"onPopupInitialized\")) {\r\n return null\r\n }\r\n return e => {\r\n this._popupInitializedAction({\r\n popup: e.component\r\n })\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n var popupWidth = getSizeValue(this.option(\"dropDownOptions.width\"));\r\n if (void 0 === popupWidth) {\r\n this._setPopupOption(\"width\", () => getElementWidth(this.$element()))\r\n }\r\n },\r\n _popupPositionedHandler: function(e) {\r\n e.position && this._popup.$overlayContent().toggleClass(DROP_DOWN_EDITOR_OVERLAY_FLIPPED, e.position.v.flip)\r\n },\r\n _popupShowingHandler: noop,\r\n _popupHidingHandler: function() {\r\n this.option(\"opened\", false)\r\n },\r\n _popupShownHandler: function() {\r\n var _this$_validationMess;\r\n this._openAction();\r\n null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n },\r\n _popupHiddenHandler: function() {\r\n var _this$_validationMess2;\r\n this._closeAction();\r\n null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n },\r\n _getValidationMessagePositionRequest: function() {\r\n var positionRequest = \"below\";\r\n if (this._popup && this._popup.option(\"visible\")) {\r\n var {\r\n top: myTop\r\n } = animationPosition.setup(this.$element());\r\n var {\r\n top: popupTop\r\n } = animationPosition.setup(this._popup.$content());\r\n positionRequest = myTop + this.option(\"popupPosition\").offset.v > popupTop ? \"below\" : \"above\"\r\n }\r\n return positionRequest\r\n },\r\n _closeOutsideDropDownHandler: function(_ref) {\r\n var {\r\n target: target\r\n } = _ref;\r\n var $target = $(target);\r\n var dropDownButton = this.getButton(\"dropDown\");\r\n var $dropDownButton = dropDownButton && dropDownButton.$element();\r\n var isInputClicked = !!$target.closest(this.$element()).length;\r\n var isDropDownButtonClicked = !!$target.closest($dropDownButton).length;\r\n var isOutsideClick = !isInputClicked && !isDropDownButtonClicked;\r\n return isOutsideClick\r\n },\r\n _clean: function() {\r\n delete this._openOnFieldClickAction;\r\n if (this._$popup) {\r\n this._$popup.remove();\r\n delete this._$popup;\r\n delete this._popup\r\n }\r\n this.callBase()\r\n },\r\n _setPopupOption: function(optionName, value) {\r\n this._setWidgetOption(\"_popup\", arguments)\r\n },\r\n _validatedOpening: function() {\r\n if (!this.option(\"readOnly\")) {\r\n this._toggleOpenState(true)\r\n }\r\n },\r\n _getPopupToolbarItems: function() {\r\n return \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : []\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-done.dx-button\")\r\n },\r\n _getLastPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-cancel.dx-button\")\r\n },\r\n _popupElementTabHandler: function(e) {\r\n var $element = $(e.currentTarget);\r\n if (e.shiftKey && $element.is(this._getFirstPopupElement()) || !e.shiftKey && $element.is(this._getLastPopupElement())) {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n e.preventDefault()\r\n }\r\n },\r\n _popupElementEscHandler: function() {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n this.close()\r\n },\r\n _popupButtonInitializedHandler: function(e) {\r\n e.component.registerKeyHandler(\"tab\", this._popupElementTabHandler.bind(this));\r\n e.component.registerKeyHandler(\"escape\", this._popupElementEscHandler.bind(this))\r\n },\r\n _popupToolbarItemsConfig: function() {\r\n var buttonsConfig = [{\r\n shortcut: \"done\",\r\n options: {\r\n onClick: this._applyButtonHandler.bind(this),\r\n text: this.option(\"applyButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }, {\r\n shortcut: \"cancel\",\r\n options: {\r\n onClick: this._cancelButtonHandler.bind(this),\r\n text: this.option(\"cancelButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }];\r\n return this._applyButtonsLocation(buttonsConfig)\r\n },\r\n _applyButtonsLocation: function(buttonsConfig) {\r\n var buttonsLocation = this.option(\"buttonsLocation\");\r\n var resultConfig = buttonsConfig;\r\n if (\"default\" !== buttonsLocation) {\r\n var position = splitPair(buttonsLocation);\r\n each(resultConfig, (function(_, element) {\r\n extend(element, {\r\n toolbar: position[0],\r\n location: position[1]\r\n })\r\n }))\r\n }\r\n return resultConfig\r\n },\r\n _applyButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _cancelButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _popupOptionChanged: function(args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n this._setPopupOption(options);\r\n var optionsKeys = Object.keys(options);\r\n if (-1 !== optionsKeys.indexOf(\"width\") || -1 !== optionsKeys.indexOf(\"height\")) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _renderSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n }\r\n },\r\n _setSubmitValue: function() {\r\n this._getSubmitElement().val(this.option(\"value\"))\r\n },\r\n _getSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n return this._$submitElement\r\n } else {\r\n return this.callBase()\r\n }\r\n },\r\n _dispose: function() {\r\n this._detachFocusOutEvents();\r\n this.callBase()\r\n },\r\n _setDeprecatedOptions: function() {\r\n this.callBase();\r\n extend(this._deprecatedOptions, {\r\n showPopupTitle: {\r\n since: \"20.1\",\r\n alias: \"dropDownOptions.showTitle\"\r\n }\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var _this$_popup;\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();\r\n break;\r\n case \"opened\":\r\n this._renderOpenedState();\r\n break;\r\n case \"onOpened\":\r\n case \"onClosed\":\r\n this._initVisibilityActions();\r\n break;\r\n case \"onPopupInitialized\":\r\n this._initPopupInitializedAction();\r\n break;\r\n case \"fieldTemplate\":\r\n if (isDefined(args.value)) {\r\n this._renderField()\r\n } else {\r\n this._invalidate()\r\n }\r\n break;\r\n case \"acceptCustomValue\":\r\n case \"openOnFieldClick\":\r\n this._invalidate();\r\n break;\r\n case \"dropDownButtonTemplate\":\r\n case \"showDropDownButton\":\r\n this._updateButtons([\"dropDown\"]);\r\n break;\r\n case \"dropDownOptions\":\r\n this._popupOptionChanged(args);\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"));\r\n break;\r\n case \"popupPosition\":\r\n break;\r\n case \"deferRendering\":\r\n if (hasWindow()) {\r\n this._createPopup()\r\n }\r\n break;\r\n case \"applyValueMode\":\r\n case \"applyButtonText\":\r\n case \"cancelButtonText\":\r\n case \"buttonsLocation\":\r\n this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n break;\r\n case \"showPopupTitle\":\r\n this._setPopupOption(\"showTitle\", args.value);\r\n break;\r\n case \"useHiddenSubmitElement\":\r\n if (this._$submitElement) {\r\n this._$submitElement.remove();\r\n this._$submitElement = void 0\r\n }\r\n this._renderSubmitElement();\r\n break;\r\n case \"rtlEnabled\":\r\n this._updatePopupPosition(args.value);\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n open: function() {\r\n this.option(\"opened\", true)\r\n },\r\n close: function() {\r\n this.option(\"opened\", false)\r\n },\r\n field: function() {\r\n return getPublicElement(this._input())\r\n },\r\n content: function() {\r\n return this._popup ? this._popup.content() : null\r\n }\r\n});\r\nregisterComponent(\"dxDropDownEditor\", DropDownEditor);\r\nexport default DropDownEditor;\r\n","/**\r\n * DevExtreme (esm/core/http_request.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"./utils/window\";\r\nvar window = getWindow();\r\nimport injector from \"./utils/dependency_injector\";\r\nvar nativeXMLHttpRequest = {\r\n getXhr: function() {\r\n return new window.XMLHttpRequest\r\n }\r\n};\r\nexport default injector(nativeXMLHttpRequest);\r\n","/**\r\n * DevExtreme (esm/core/utils/ajax.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred\r\n} from \"./deferred\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport httpRequest from \"../../core/http_request\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n extendFromObject\r\n} from \"./extend\";\r\nimport {\r\n isDefined\r\n} from \"./type\";\r\nimport Promise from \"../polyfills/promise\";\r\nimport injector from \"./dependency_injector\";\r\nvar SUCCESS = \"success\";\r\nvar ERROR = \"error\";\r\nvar TIMEOUT = \"timeout\";\r\nvar NO_CONTENT = \"nocontent\";\r\nvar PARSER_ERROR = \"parsererror\";\r\nvar isStatusSuccess = function(status) {\r\n return 200 <= status && status < 300\r\n};\r\nvar hasContent = function(status) {\r\n return 204 !== status\r\n};\r\nvar paramsConvert = function(params) {\r\n var result = [];\r\n for (var name in params) {\r\n var value = params[name];\r\n if (void 0 === value) {\r\n continue\r\n }\r\n if (null === value) {\r\n value = \"\"\r\n }\r\n if (\"function\" === typeof value) {\r\n value = value()\r\n }\r\n result.push(encodeURIComponent(name) + \"=\" + encodeURIComponent(value))\r\n }\r\n return result.join(\"&\")\r\n};\r\nvar createScript = function(options) {\r\n var script = domAdapter.createElement(\"script\");\r\n for (var name in options) {\r\n script[name] = options[name]\r\n }\r\n return script\r\n};\r\nvar removeScript = function(scriptNode) {\r\n scriptNode.parentNode.removeChild(scriptNode)\r\n};\r\nvar appendToHead = function(element) {\r\n return domAdapter.getHead().appendChild(element)\r\n};\r\nvar evalScript = function(code) {\r\n var script = createScript({\r\n text: code\r\n });\r\n appendToHead(script);\r\n removeScript(script)\r\n};\r\nvar evalCrossDomainScript = function(url) {\r\n var script = createScript({\r\n src: url\r\n });\r\n return new Promise((function(resolve, reject) {\r\n var events = {\r\n load: resolve,\r\n error: reject\r\n };\r\n var loadHandler = function(e) {\r\n events[e.type]();\r\n removeScript(script)\r\n };\r\n for (var event in events) {\r\n domAdapter.listen(script, event, loadHandler)\r\n }\r\n appendToHead(script)\r\n }))\r\n};\r\nvar getAcceptHeader = function(options) {\r\n var dataType = options.dataType || \"*\";\r\n var scriptAccept = \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\";\r\n var accepts = {\r\n \"*\": \"*/*\",\r\n text: \"text/plain\",\r\n html: \"text/html\",\r\n xml: \"application/xml, text/xml\",\r\n json: \"application/json, text/javascript\",\r\n jsonp: scriptAccept,\r\n script: scriptAccept\r\n };\r\n extendFromObject(accepts, options.accepts, true);\r\n return accepts[dataType] ? accepts[dataType] + (\"*\" !== dataType ? \", */*; q=0.01\" : \"\") : accepts[\"*\"]\r\n};\r\nvar getContentTypeHeader = function(options) {\r\n var defaultContentType;\r\n if (options.data && !options.upload && \"GET\" !== getMethod(options)) {\r\n defaultContentType = \"application/x-www-form-urlencoded;charset=utf-8\"\r\n }\r\n return options.contentType || defaultContentType\r\n};\r\nvar getDataFromResponse = function(xhr) {\r\n return xhr.responseType && \"text\" !== xhr.responseType || \"string\" !== typeof xhr.responseText ? xhr.response : xhr.responseText\r\n};\r\nvar postProcess = function(deferred, xhr, dataType) {\r\n var data = getDataFromResponse(xhr);\r\n switch (dataType) {\r\n case \"jsonp\":\r\n evalScript(data);\r\n break;\r\n case \"script\":\r\n evalScript(data);\r\n deferred.resolve(data, SUCCESS, xhr);\r\n break;\r\n case \"json\":\r\n try {\r\n deferred.resolve(JSON.parse(data), SUCCESS, xhr)\r\n } catch (e) {\r\n deferred.reject(xhr, PARSER_ERROR, e)\r\n }\r\n break;\r\n default:\r\n deferred.resolve(data, SUCCESS, xhr)\r\n }\r\n};\r\nvar isCrossDomain = function(url) {\r\n if (!hasWindow()) {\r\n return true\r\n }\r\n var crossDomain = false;\r\n var originAnchor = domAdapter.createElement(\"a\");\r\n var urlAnchor = domAdapter.createElement(\"a\");\r\n originAnchor.href = window.location.href;\r\n try {\r\n urlAnchor.href = url;\r\n urlAnchor.href = urlAnchor.href;\r\n crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host\r\n } catch (e) {\r\n crossDomain = true\r\n }\r\n return crossDomain\r\n};\r\nvar setHttpTimeout = function(timeout, xhr) {\r\n return timeout && setTimeout((function() {\r\n xhr.customStatus = TIMEOUT;\r\n xhr.abort()\r\n }), timeout)\r\n};\r\nvar getJsonpOptions = function(options) {\r\n if (\"jsonp\" === options.dataType) {\r\n var random = Math.random().toString().replace(/\\D/g, \"\");\r\n var callbackName = options.jsonpCallback || \"dxCallback\" + Date.now() + \"_\" + random;\r\n var callbackParameter = options.jsonp || \"callback\";\r\n options.data = options.data || {};\r\n options.data[callbackParameter] = callbackName;\r\n return callbackName\r\n }\r\n};\r\nvar getRequestOptions = function(options, headers) {\r\n var params = options.data;\r\n var paramsAlreadyString = \"string\" === typeof params;\r\n var url = options.url || window.location.href;\r\n if (!paramsAlreadyString && !options.cache) {\r\n params = params || {};\r\n params._ = Date.now()\r\n }\r\n if (params && !options.upload) {\r\n if (!paramsAlreadyString) {\r\n params = paramsConvert(params)\r\n }\r\n if (\"GET\" === getMethod(options)) {\r\n if (\"\" !== params) {\r\n url += (url.indexOf(\"?\") > -1 ? \"&\" : \"?\") + params\r\n }\r\n params = null\r\n } else if (headers[\"Content-Type\"] && headers[\"Content-Type\"].indexOf(\"application/x-www-form-urlencoded\") > -1) {\r\n params = params.replace(/%20/g, \"+\")\r\n }\r\n }\r\n return {\r\n url: url,\r\n parameters: params\r\n }\r\n};\r\n\r\nfunction getMethod(options) {\r\n return (options.method || \"GET\").toUpperCase()\r\n}\r\nvar getRequestHeaders = function(options) {\r\n var headers = options.headers || {};\r\n headers[\"Content-Type\"] = headers[\"Content-Type\"] || getContentTypeHeader(options);\r\n headers.Accept = headers.Accept || getAcceptHeader(options);\r\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\r\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\"\r\n }\r\n return headers\r\n};\r\nvar sendRequest = function(options) {\r\n var xhr = httpRequest.getXhr();\r\n var d = new Deferred;\r\n var result = d.promise();\r\n var async = isDefined(options.async) ? options.async : true;\r\n var dataType = options.dataType;\r\n var timeout = options.timeout || 0;\r\n var timeoutId;\r\n options.crossDomain = isCrossDomain(options.url);\r\n var needScriptEvaluation = \"jsonp\" === dataType || \"script\" === dataType;\r\n if (void 0 === options.cache) {\r\n options.cache = !needScriptEvaluation\r\n }\r\n var callbackName = getJsonpOptions(options);\r\n var headers = getRequestHeaders(options);\r\n var requestOptions = getRequestOptions(options, headers);\r\n var url = requestOptions.url;\r\n var parameters = requestOptions.parameters;\r\n if (callbackName) {\r\n window[callbackName] = function(data) {\r\n d.resolve(data, SUCCESS, xhr)\r\n }\r\n }\r\n if (options.crossDomain && needScriptEvaluation) {\r\n evalCrossDomainScript(url).then((function() {\r\n if (\"jsonp\" === dataType) {\r\n return\r\n }\r\n d.resolve(null, SUCCESS, xhr)\r\n }), (function() {\r\n d.reject(xhr, ERROR)\r\n }));\r\n return result\r\n }\r\n if (options.crossDomain && !(\"withCredentials\" in xhr)) {\r\n d.reject(xhr, ERROR);\r\n return result\r\n }\r\n xhr.open(getMethod(options), url, async, options.username, options.password);\r\n if (async) {\r\n xhr.timeout = timeout;\r\n timeoutId = setHttpTimeout(timeout, xhr, d)\r\n }\r\n xhr.onreadystatechange = function(e) {\r\n if (4 === xhr.readyState) {\r\n clearTimeout(timeoutId);\r\n if (isStatusSuccess(xhr.status)) {\r\n if (hasContent(xhr.status)) {\r\n postProcess(d, xhr, dataType)\r\n } else {\r\n d.resolve(null, NO_CONTENT, xhr)\r\n }\r\n } else {\r\n d.reject(xhr, xhr.customStatus || ERROR)\r\n }\r\n }\r\n };\r\n if (options.upload) {\r\n xhr.upload.onprogress = options.upload.onprogress;\r\n xhr.upload.onloadstart = options.upload.onloadstart;\r\n xhr.upload.onabort = options.upload.onabort\r\n }\r\n if (options.xhrFields) {\r\n for (var field in options.xhrFields) {\r\n xhr[field] = options.xhrFields[field]\r\n }\r\n }\r\n if (\"arraybuffer\" === options.responseType) {\r\n xhr.responseType = options.responseType\r\n }\r\n for (var name in headers) {\r\n if (Object.prototype.hasOwnProperty.call(headers, name) && isDefined(headers[name])) {\r\n xhr.setRequestHeader(name, headers[name])\r\n }\r\n }\r\n if (options.beforeSend) {\r\n options.beforeSend(xhr)\r\n }\r\n xhr.send(parameters);\r\n result.abort = function() {\r\n xhr.abort()\r\n };\r\n return result\r\n};\r\nexport default injector({\r\n sendRequest: sendRequest\r\n});\r\n","/**\r\n * DevExtreme (esm/events/core/keyboard_processor.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nvar COMPOSITION_START_EVENT = \"compositionstart\";\r\nvar COMPOSITION_END_EVENT = \"compositionend\";\r\nvar KEYDOWN_EVENT = \"keydown\";\r\nvar NAMESPACE = \"KeyboardProcessor\";\r\nvar KeyboardProcessor = Class.inherit({\r\n _keydown: addNamespace(KEYDOWN_EVENT, NAMESPACE),\r\n _compositionStart: addNamespace(COMPOSITION_START_EVENT, NAMESPACE),\r\n _compositionEnd: addNamespace(COMPOSITION_END_EVENT, NAMESPACE),\r\n ctor: function(options) {\r\n options = options || {};\r\n if (options.element) {\r\n this._element = $(options.element)\r\n }\r\n if (options.focusTarget) {\r\n this._focusTarget = options.focusTarget\r\n }\r\n this._handler = options.handler;\r\n if (this._element) {\r\n this._processFunction = e => {\r\n var isNotFocusTarget = this._focusTarget && this._focusTarget !== e.target && inArray(e.target, $(this._focusTarget)) < 0;\r\n var shouldSkipProcessing = this._isComposingJustFinished && 229 === e.which || this._isComposing || isNotFocusTarget;\r\n this._isComposingJustFinished = false;\r\n if (!shouldSkipProcessing) {\r\n this.process(e)\r\n }\r\n };\r\n this._toggleProcessingWithContext = this.toggleProcessing.bind(this);\r\n eventsEngine.on(this._element, this._keydown, this._processFunction);\r\n eventsEngine.on(this._element, this._compositionStart, this._toggleProcessingWithContext);\r\n eventsEngine.on(this._element, this._compositionEnd, this._toggleProcessingWithContext)\r\n }\r\n },\r\n dispose: function() {\r\n if (this._element) {\r\n eventsEngine.off(this._element, this._keydown, this._processFunction);\r\n eventsEngine.off(this._element, this._compositionStart, this._toggleProcessingWithContext);\r\n eventsEngine.off(this._element, this._compositionEnd, this._toggleProcessingWithContext)\r\n }\r\n this._element = void 0;\r\n this._handler = void 0\r\n },\r\n process: function(e) {\r\n this._handler({\r\n keyName: normalizeKeyName(e),\r\n key: e.key,\r\n code: e.code,\r\n ctrl: e.ctrlKey,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n shift: e.shiftKey,\r\n alt: e.altKey,\r\n which: e.which,\r\n originalEvent: e\r\n })\r\n },\r\n toggleProcessing: function(_ref) {\r\n var {\r\n type: type\r\n } = _ref;\r\n this._isComposing = type === COMPOSITION_START_EVENT;\r\n this._isComposingJustFinished = !this._isComposing\r\n }\r\n});\r\nexport default KeyboardProcessor;\r\n","/**\r\n * DevExtreme (esm/events/short.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport eventsEngine from \"./core/events_engine\";\r\nimport KeyboardProcessor from \"./core/keyboard_processor\";\r\nimport {\r\n addNamespace as pureAddNamespace\r\n} from \"./utils/index\";\r\nimport pointerEvents from \"./pointer\";\r\n\r\nfunction addNamespace(event, namespace) {\r\n return namespace ? pureAddNamespace(event, namespace) : event\r\n}\r\n\r\nfunction executeAction(action, args) {\r\n return \"function\" === typeof action ? action(args) : action.execute(args)\r\n}\r\nexport var active = {\r\n on: ($el, active, inactive, opts) => {\r\n var {\r\n selector: selector,\r\n showTimeout: showTimeout,\r\n hideTimeout: hideTimeout,\r\n namespace: namespace\r\n } = opts;\r\n eventsEngine.on($el, addNamespace(\"dxactive\", namespace), selector, {\r\n timeout: showTimeout\r\n }, event => executeAction(active, {\r\n event: event,\r\n element: event.currentTarget\r\n }));\r\n eventsEngine.on($el, addNamespace(\"dxinactive\", namespace), selector, {\r\n timeout: hideTimeout\r\n }, event => executeAction(inactive, {\r\n event: event,\r\n element: event.currentTarget\r\n }))\r\n },\r\n off: ($el, _ref) => {\r\n var {\r\n namespace: namespace,\r\n selector: selector\r\n } = _ref;\r\n eventsEngine.off($el, addNamespace(\"dxactive\", namespace), selector);\r\n eventsEngine.off($el, addNamespace(\"dxinactive\", namespace), selector)\r\n }\r\n};\r\nexport var resize = {\r\n on: function($el, resize) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxresize\", namespace), resize)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxresize\", namespace))\r\n }\r\n};\r\nexport var hover = {\r\n on: ($el, start, end, _ref2) => {\r\n var {\r\n selector: selector,\r\n namespace: namespace\r\n } = _ref2;\r\n eventsEngine.on($el, addNamespace(\"dxhoverend\", namespace), selector, event => end(event));\r\n eventsEngine.on($el, addNamespace(\"dxhoverstart\", namespace), selector, event => executeAction(start, {\r\n element: event.target,\r\n event: event\r\n }))\r\n },\r\n off: ($el, _ref3) => {\r\n var {\r\n selector: selector,\r\n namespace: namespace\r\n } = _ref3;\r\n eventsEngine.off($el, addNamespace(\"dxhoverstart\", namespace), selector);\r\n eventsEngine.off($el, addNamespace(\"dxhoverend\", namespace), selector)\r\n }\r\n};\r\nexport var visibility = {\r\n on: ($el, shown, hiding, _ref4) => {\r\n var {\r\n namespace: namespace\r\n } = _ref4;\r\n eventsEngine.on($el, addNamespace(\"dxhiding\", namespace), hiding);\r\n eventsEngine.on($el, addNamespace(\"dxshown\", namespace), shown)\r\n },\r\n off: ($el, _ref5) => {\r\n var {\r\n namespace: namespace\r\n } = _ref5;\r\n eventsEngine.off($el, addNamespace(\"dxhiding\", namespace));\r\n eventsEngine.off($el, addNamespace(\"dxshown\", namespace))\r\n }\r\n};\r\nexport var focus = {\r\n on: ($el, focusIn, focusOut, _ref6) => {\r\n var {\r\n namespace: namespace,\r\n isFocusable: isFocusable\r\n } = _ref6;\r\n eventsEngine.on($el, addNamespace(\"focusin\", namespace), focusIn);\r\n eventsEngine.on($el, addNamespace(\"focusout\", namespace), focusOut);\r\n if (domAdapter.hasDocumentProperty(\"onbeforeactivate\")) {\r\n eventsEngine.on($el, addNamespace(\"beforeactivate\", namespace), e => isFocusable(null, e.target) || e.preventDefault())\r\n }\r\n },\r\n off: ($el, _ref7) => {\r\n var {\r\n namespace: namespace\r\n } = _ref7;\r\n eventsEngine.off($el, addNamespace(\"focusin\", namespace));\r\n eventsEngine.off($el, addNamespace(\"focusout\", namespace));\r\n if (domAdapter.hasDocumentProperty(\"onbeforeactivate\")) {\r\n eventsEngine.off($el, addNamespace(\"beforeactivate\", namespace))\r\n }\r\n },\r\n trigger: $el => eventsEngine.trigger($el, \"focus\")\r\n};\r\nexport var dxClick = {\r\n on: function($el, click) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxclick\", namespace), click)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxclick\", namespace))\r\n }\r\n};\r\nexport var click = {\r\n on: function($el, click) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"click\", namespace), click)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"click\", namespace))\r\n }\r\n};\r\nexport var dxScrollInit = {\r\n on: function($el, onInit, eventData) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};\r\n eventsEngine.on($el, addNamespace(\"dxscrollinit\", namespace), eventData, onInit)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxscrollinit\", namespace))\r\n }\r\n};\r\nexport var dxScrollStart = {\r\n on: function($el, onStart) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxscrollstart\", namespace), onStart)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxscrollstart\", namespace))\r\n }\r\n};\r\nexport var dxScrollMove = {\r\n on: function($el, onScroll) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxscroll\", namespace), onScroll)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxscroll\", namespace))\r\n }\r\n};\r\nexport var dxScrollEnd = {\r\n on: function($el, onEnd) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxscrollend\", namespace), onEnd)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxscrollend\", namespace))\r\n }\r\n};\r\nexport var dxScrollStop = {\r\n on: function($el, onStop) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxscrollstop\", namespace), onStop)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxscrollstop\", namespace))\r\n }\r\n};\r\nexport var dxScrollCancel = {\r\n on: function($el, onCancel) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxscrollcancel\", namespace), onCancel)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxscrollcancel\", namespace))\r\n }\r\n};\r\nexport var dxPointerDown = {\r\n on: function($el, onPointerDown) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(pointerEvents.down, namespace), onPointerDown)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(pointerEvents.down, namespace))\r\n }\r\n};\r\nexport var dxPointerUp = {\r\n on: function($el, onPointerUp) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(pointerEvents.up, namespace), onPointerUp)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(pointerEvents.up, namespace))\r\n }\r\n};\r\nvar index = 0;\r\nvar keyboardProcessors = {};\r\nvar generateListenerId = () => \"keyboardProcessorId\".concat(index++);\r\nexport var keyboard = {\r\n on: (element, focusTarget, handler) => {\r\n var listenerId = generateListenerId();\r\n keyboardProcessors[listenerId] = new KeyboardProcessor({\r\n element: element,\r\n focusTarget: focusTarget,\r\n handler: handler\r\n });\r\n return listenerId\r\n },\r\n off: listenerId => {\r\n if (listenerId && keyboardProcessors[listenerId]) {\r\n keyboardProcessors[listenerId].dispose();\r\n delete keyboardProcessors[listenerId]\r\n }\r\n },\r\n _getProcessor: listenerId => keyboardProcessors[listenerId]\r\n};\r\n","/**\r\n * DevExtreme (esm/core/action.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport {\r\n getWindow\r\n} from \"./utils/window\";\r\nimport {\r\n isPlainObject,\r\n isFunction\r\n} from \"./utils/type\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nexport default class Action {\r\n constructor(action, config) {\r\n config = config || {};\r\n this._action = action;\r\n this._context = config.context || getWindow();\r\n this._beforeExecute = config.beforeExecute;\r\n this._afterExecute = config.afterExecute;\r\n this._component = config.component;\r\n this._validatingTargetName = config.validatingTargetName;\r\n var excludeValidators = this._excludeValidators = {};\r\n if (config.excludeValidators) {\r\n for (var i = 0; i < config.excludeValidators.length; i++) {\r\n excludeValidators[config.excludeValidators[i]] = true\r\n }\r\n }\r\n }\r\n execute() {\r\n var e = {\r\n action: this._action,\r\n args: Array.prototype.slice.call(arguments),\r\n context: this._context,\r\n component: this._component,\r\n validatingTargetName: this._validatingTargetName,\r\n cancel: false,\r\n handled: false\r\n };\r\n var beforeExecute = this._beforeExecute;\r\n var afterExecute = this._afterExecute;\r\n var argsBag = e.args[0] || {};\r\n if (!this._validateAction(e)) {\r\n return\r\n }\r\n null === beforeExecute || void 0 === beforeExecute ? void 0 : beforeExecute.call(this._context, e);\r\n if (e.cancel) {\r\n return\r\n }\r\n var result = this._executeAction(e);\r\n if (argsBag.cancel) {\r\n return\r\n }\r\n null === afterExecute || void 0 === afterExecute ? void 0 : afterExecute.call(this._context, e);\r\n return result\r\n }\r\n _validateAction(e) {\r\n var excludeValidators = this._excludeValidators;\r\n var {\r\n executors: executors\r\n } = Action;\r\n for (var name in executors) {\r\n if (!excludeValidators[name]) {\r\n var _executor$validate;\r\n var executor = executors[name];\r\n null === (_executor$validate = executor.validate) || void 0 === _executor$validate ? void 0 : _executor$validate.call(executor, e);\r\n if (e.cancel) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n }\r\n _executeAction(e) {\r\n var result;\r\n var {\r\n executors: executors\r\n } = Action;\r\n for (var name in executors) {\r\n var _executor$execute;\r\n var executor = executors[name];\r\n null === (_executor$execute = executor.execute) || void 0 === _executor$execute ? void 0 : _executor$execute.call(executor, e);\r\n if (e.handled) {\r\n result = e.result;\r\n break\r\n }\r\n }\r\n return result\r\n }\r\n static registerExecutor(name, executor) {\r\n if (isPlainObject(name)) {\r\n each(name, Action.registerExecutor);\r\n return\r\n }\r\n Action.executors[name] = executor\r\n }\r\n static unregisterExecutor() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n each(args, (function() {\r\n delete Action.executors[this]\r\n }))\r\n }\r\n}\r\nAction.executors = {};\r\nvar createValidatorByTargetElement = condition => e => {\r\n if (!e.args.length) {\r\n return\r\n }\r\n var args = e.args[0];\r\n var element = args[e.validatingTargetName] || args.element;\r\n if (element && condition($(element))) {\r\n e.cancel = true\r\n }\r\n};\r\nAction.registerExecutor({\r\n disabled: {\r\n validate: createValidatorByTargetElement($target => $target.is(\".dx-state-disabled, .dx-state-disabled *\"))\r\n },\r\n readOnly: {\r\n validate: createValidatorByTargetElement($target => $target.is(\".dx-state-readonly, .dx-state-readonly *:not(.dx-state-independent)\"))\r\n },\r\n undefined: {\r\n execute: e => {\r\n if (!e.action) {\r\n e.result = void 0;\r\n e.handled = true\r\n }\r\n }\r\n },\r\n func: {\r\n execute: e => {\r\n if (isFunction(e.action)) {\r\n e.result = e.action.call(e.context, e.args[0]);\r\n e.handled = true\r\n }\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/data/errors.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"../core/utils/error\";\r\nimport coreErrors from \"../core/errors\";\r\nexport var errors = errorUtils(coreErrors.ERROR_MESSAGES, {\r\n E4000: \"[DevExpress.data]: {0}\",\r\n E4001: \"Unknown aggregating function is detected: '{0}'\",\r\n E4002: \"Unsupported OData protocol version is used\",\r\n E4003: \"Unknown filter operation is used: {0}\",\r\n E4004: \"The thenby() method is called before the sortby() method\",\r\n E4005: \"Store requires a key expression for this operation\",\r\n E4006: \"ArrayStore 'data' option must be an array\",\r\n E4007: \"Compound keys cannot be auto-generated\",\r\n E4008: \"Attempt to insert an item with a duplicated key\",\r\n E4009: \"Data item cannot be found\",\r\n E4010: \"CustomStore does not support creating queries\",\r\n E4011: \"Custom Store method is not implemented or is not a function: {0}\",\r\n E4012: \"Custom Store method returns an invalid value: {0}\",\r\n E4013: \"Local Store requires the 'name' configuration option is specified\",\r\n E4014: \"Unknown data type is specified for ODataStore: {0}\",\r\n E4015: \"Unknown entity name or alias is used: {0}\",\r\n E4016: \"The compileSetter(expr) method is called with 'self' passed as a parameter\",\r\n E4017: \"Keys cannot be modified\",\r\n E4018: \"The server has returned a non-numeric value in a response to an item count request\",\r\n E4019: \"Mixing of group operators inside a single group of filter expression is not allowed\",\r\n E4020: \"Unknown store type is detected: {0}\",\r\n E4021: \"The server response does not provide the totalCount value\",\r\n E4022: \"The server response does not provide the groupCount value\",\r\n E4023: \"Could not parse the following XML: {0}\",\r\n E4024: \"String function {0} cannot be used with the data field {1} of type {2}.\",\r\n W4000: \"Data returned from the server has an incorrect structure\",\r\n W4001: 'The {0} field is listed in both \"keyType\" and \"fieldTypes\". The value of \"fieldTypes\" is used.',\r\n W4002: \"Data loading has failed for some cells due to the following error: {0}\"\r\n});\r\nexport var errorHandler = null;\r\nexport var handleError = function(error) {\r\n var _errorHandler;\r\n null === (_errorHandler = errorHandler) || void 0 === _errorHandler ? void 0 : _errorHandler(error)\r\n};\r\nexport var setErrorHandler = handler => errorHandler = handler;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/utils.support.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport devices from \"../../core/devices\";\r\n\r\nfunction isModernAndroidDevice() {\r\n var {\r\n android: android,\r\n version: version\r\n } = devices.real();\r\n return android && version[0] > 4\r\n}\r\nexport function isInputEventsL2Supported() {\r\n return \"onbeforeinput\" in domAdapter.createElement(\"input\") || isModernAndroidDevice()\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.rule.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar EMPTY_CHAR = \" \";\r\nvar BaseMaskRule = Class.inherit({\r\n ctor: function(config) {\r\n this._value = EMPTY_CHAR;\r\n extend(this, config)\r\n },\r\n next: function(rule) {\r\n if (!arguments.length) {\r\n return this._next\r\n }\r\n this._next = rule\r\n },\r\n text: noop,\r\n value: noop,\r\n rawValue: noop,\r\n handle: noop,\r\n _prepareHandlingArgs: function(args, config) {\r\n var _config$str, _config$start, _config$length;\r\n config = config || {};\r\n var handlingProperty = Object.prototype.hasOwnProperty.call(args, \"value\") ? \"value\" : \"text\";\r\n args[handlingProperty] = null !== (_config$str = config.str) && void 0 !== _config$str ? _config$str : args[handlingProperty];\r\n args.start = null !== (_config$start = config.start) && void 0 !== _config$start ? _config$start : args.start;\r\n args.length = null !== (_config$length = config.length) && void 0 !== _config$length ? _config$length : args.length;\r\n args.index = args.index + 1;\r\n return args\r\n },\r\n reset: noop,\r\n clear: noop,\r\n first: function(index) {\r\n index = index || 0;\r\n return this.next().first(index + 1)\r\n },\r\n isAccepted: function() {\r\n return false\r\n },\r\n adjustedCaret: function(caret, isForwardDirection, char) {\r\n return isForwardDirection ? this._adjustedForward(caret, 0, char) : this._adjustedBackward(caret, 0, char)\r\n },\r\n _adjustedForward: noop,\r\n _adjustedBackward: noop,\r\n isValid: noop\r\n});\r\nexport var EmptyMaskRule = BaseMaskRule.inherit({\r\n next: noop,\r\n handle: function() {\r\n return 0\r\n },\r\n text: function() {\r\n return \"\"\r\n },\r\n value: function() {\r\n return \"\"\r\n },\r\n first: function() {\r\n return 0\r\n },\r\n rawValue: function() {\r\n return \"\"\r\n },\r\n adjustedCaret: function() {\r\n return 0\r\n },\r\n isValid: function() {\r\n return true\r\n }\r\n});\r\nexport var MaskRule = BaseMaskRule.inherit({\r\n text: function() {\r\n return (this._value !== EMPTY_CHAR ? this._value : this.maskChar) + this.next().text()\r\n },\r\n value: function() {\r\n return this._value + this.next().value()\r\n },\r\n rawValue: function() {\r\n return this._value + this.next().rawValue()\r\n },\r\n handle: function(args) {\r\n var str = Object.prototype.hasOwnProperty.call(args, \"value\") ? args.value : args.text;\r\n if (!str || !str.length || !args.length) {\r\n return 0\r\n }\r\n if (args.start) {\r\n return this.next().handle(this._prepareHandlingArgs(args, {\r\n start: args.start - 1\r\n }))\r\n }\r\n var char = str[0];\r\n var rest = str.substring(1);\r\n this._tryAcceptChar(char, args);\r\n return this._accepted() ? this.next().handle(this._prepareHandlingArgs(args, {\r\n str: rest,\r\n length: args.length - 1\r\n })) + 1 : this.handle(this._prepareHandlingArgs(args, {\r\n str: rest,\r\n length: args.length - 1\r\n }))\r\n },\r\n clear: function(args) {\r\n this._tryAcceptChar(EMPTY_CHAR, args);\r\n this.next().clear(this._prepareHandlingArgs(args))\r\n },\r\n reset: function() {\r\n this._accepted(false);\r\n this.next().reset()\r\n },\r\n _tryAcceptChar: function(char, args) {\r\n this._accepted(false);\r\n if (!this._isAllowed(char, args)) {\r\n return\r\n }\r\n var acceptedChar = char === EMPTY_CHAR ? this.maskChar : char;\r\n args.fullText = args.fullText.substring(0, args.index) + acceptedChar + args.fullText.substring(args.index + 1);\r\n this._accepted(true);\r\n this._value = char\r\n },\r\n _accepted: function(value) {\r\n if (!arguments.length) {\r\n return !!this._isAccepted\r\n }\r\n this._isAccepted = !!value\r\n },\r\n first: function(index) {\r\n return this._value === EMPTY_CHAR ? index || 0 : this.callBase(index)\r\n },\r\n _isAllowed: function(char, args) {\r\n if (char === EMPTY_CHAR) {\r\n return true\r\n }\r\n return this._isValid(char, args)\r\n },\r\n _isValid: function(char, args) {\r\n var allowedChars = this.allowedChars;\r\n if (allowedChars instanceof RegExp) {\r\n return allowedChars.test(char)\r\n }\r\n if (isFunction(allowedChars)) {\r\n return allowedChars(char, args.index, args.fullText)\r\n }\r\n if (Array.isArray(allowedChars)) {\r\n return inArray(char, allowedChars) > -1\r\n }\r\n return allowedChars === char\r\n },\r\n isAccepted: function(caret) {\r\n return 0 === caret ? this._accepted() : this.next().isAccepted(caret - 1)\r\n },\r\n _adjustedForward: function(caret, index, char) {\r\n if (index >= caret) {\r\n return index\r\n }\r\n return this.next()._adjustedForward(caret, index + 1, char) || index + 1\r\n },\r\n _adjustedBackward: function(caret, index) {\r\n if (index >= caret - 1) {\r\n return caret\r\n }\r\n return this.next()._adjustedBackward(caret, index + 1) || index + 1\r\n },\r\n isValid: function(args) {\r\n return this._isValid(this._value, args) && this.next().isValid(this._prepareHandlingArgs(args))\r\n }\r\n});\r\nexport var StubMaskRule = MaskRule.inherit({\r\n value: function() {\r\n return this.next().value()\r\n },\r\n handle: function(args) {\r\n var hasValueProperty = Object.prototype.hasOwnProperty.call(args, \"value\");\r\n var str = hasValueProperty ? args.value : args.text;\r\n if (!str.length || !args.length) {\r\n return 0\r\n }\r\n if (args.start || hasValueProperty) {\r\n return this.next().handle(this._prepareHandlingArgs(args, {\r\n start: args.start && args.start - 1\r\n }))\r\n }\r\n var char = str[0];\r\n var rest = str.substring(1);\r\n this._tryAcceptChar(char);\r\n var nextArgs = this._isAllowed(char) ? this._prepareHandlingArgs(args, {\r\n str: rest,\r\n length: args.length - 1\r\n }) : args;\r\n return this.next().handle(nextArgs) + 1\r\n },\r\n clear: function(args) {\r\n this._accepted(false);\r\n this.next().clear(this._prepareHandlingArgs(args))\r\n },\r\n _tryAcceptChar: function(char) {\r\n this._accepted(this._isValid(char))\r\n },\r\n _isValid: function(char) {\r\n return char === this.maskChar\r\n },\r\n first: function(index) {\r\n index = index || 0;\r\n return this.next().first(index + 1)\r\n },\r\n _adjustedForward: function(caret, index, char) {\r\n if (index >= caret && char === this.maskChar) {\r\n return index\r\n }\r\n if (caret === index + 1 && this._accepted()) {\r\n return caret\r\n }\r\n return this.next()._adjustedForward(caret, index + 1, char)\r\n },\r\n _adjustedBackward: function(caret, index) {\r\n if (index >= caret - 1) {\r\n return 0\r\n }\r\n return this.next()._adjustedBackward(caret, index + 1)\r\n },\r\n isValid: function(args) {\r\n return this.next().isValid(this._prepareHandlingArgs(args))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.clear.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport TextEditorButton from \"./texteditor_button_collection/button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointer from \"../../events/pointer\";\r\nimport {\r\n name as click\r\n} from \"../../events/click\";\r\nvar pointerDown = pointer.down;\r\nvar STATE_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar TEXTEDITOR_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar TEXTEDITOR_CLEAR_ICON_CLASS = \"dx-icon-clear\";\r\nvar TEXTEDITOR_ICON_CLASS = \"dx-icon\";\r\nvar TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS = \"dx-show-clear-button\";\r\nexport default class ClearButton extends TextEditorButton {\r\n _create() {\r\n var $element = $(\"\").addClass(TEXTEDITOR_CLEAR_BUTTON_CLASS).append($(\"\").addClass(TEXTEDITOR_ICON_CLASS).addClass(TEXTEDITOR_CLEAR_ICON_CLASS));\r\n this._addToContainer($element);\r\n this.update(true);\r\n return {\r\n instance: $element,\r\n $element: $element\r\n }\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return editor._isClearButtonVisible()\r\n }\r\n _attachEvents(instance, $button) {\r\n var {\r\n editor: editor\r\n } = this;\r\n var editorName = editor.NAME;\r\n eventsEngine.on($button, addNamespace(pointerDown, editorName), e => {\r\n e.preventDefault();\r\n if (\"mouse\" !== e.pointerType) {\r\n editor._clearValueHandler(e)\r\n }\r\n });\r\n eventsEngine.on($button, addNamespace(click, editorName), e => editor._clearValueHandler(e))\r\n }\r\n _legacyRender($editor, isVisible) {\r\n $editor.toggleClass(TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS, isVisible)\r\n }\r\n update() {\r\n var rendered = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n !rendered && super.update();\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var isVisible = this._isVisible();\r\n instance && instance.toggleClass(STATE_INVISIBLE_CLASS, !isVisible);\r\n this._legacyRender($editor, isVisible)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/texteditor_button_collection/custom.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport TextEditorButton from \"./button\";\r\nimport Button from \"../../button\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport {\r\n start,\r\n end\r\n} from \"../../../events/hover\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../../events/click\";\r\nvar CUSTOM_BUTTON_HOVERED_CLASS = \"dx-custom-button-hovered\";\r\nexport default class CustomButton extends TextEditorButton {\r\n _attachEvents(instance, $element) {\r\n var {\r\n editor: editor\r\n } = this;\r\n eventsEngine.on($element, start, () => {\r\n editor.$element().addClass(CUSTOM_BUTTON_HOVERED_CLASS)\r\n });\r\n eventsEngine.on($element, end, () => {\r\n editor.$element().removeClass(CUSTOM_BUTTON_HOVERED_CLASS)\r\n });\r\n eventsEngine.on($element, clickEventName, e => {\r\n e.stopPropagation()\r\n })\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $element = $(\"
\");\r\n this._addToContainer($element);\r\n var instance = editor._createComponent($element, Button, extend({}, this.options, {\r\n ignoreParentReadOnly: true,\r\n disabled: this._isDisabled(),\r\n integrationOptions: this._prepareIntegrationOptions(editor)\r\n }));\r\n return {\r\n $element: $element,\r\n instance: instance\r\n }\r\n }\r\n _prepareIntegrationOptions(editor) {\r\n return extend({}, editor.option(\"integrationOptions\"), {\r\n skipTemplates: [\"content\"]\r\n })\r\n }\r\n update() {\r\n var isUpdated = super.update();\r\n if (this.instance) {\r\n this.instance.option(\"disabled\", this._isDisabled())\r\n }\r\n return isUpdated\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return editor.option(\"visible\")\r\n }\r\n _isDisabled() {\r\n var isDefinedByUser = void 0 !== this.options.disabled;\r\n if (isDefinedByUser) {\r\n return this.instance ? this.instance.option(\"disabled\") : this.options.disabled\r\n } else {\r\n return this.editor.option(\"readOnly\")\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/texteditor_button_collection/index.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport CustomButton from \"./custom\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n find\r\n} from \"../../../core/utils/array\";\r\nimport errors from \"../../widget/ui.errors\";\r\nvar TEXTEDITOR_BUTTONS_CONTAINER_CLASS = \"dx-texteditor-buttons-container\";\r\n\r\nfunction checkButtonInfo(buttonInfo) {\r\n (() => {\r\n if (!buttonInfo || \"object\" !== typeof buttonInfo || Array.isArray(buttonInfo)) {\r\n throw errors.Error(\"E1053\")\r\n }\r\n })();\r\n (() => {\r\n if (!(\"name\" in buttonInfo)) {\r\n throw errors.Error(\"E1054\")\r\n }\r\n })();\r\n (() => {\r\n var {\r\n name: name\r\n } = buttonInfo;\r\n if (\"string\" !== typeof name) {\r\n throw errors.Error(\"E1055\")\r\n }\r\n })();\r\n (() => {\r\n var {\r\n location: location\r\n } = buttonInfo;\r\n if (\"location\" in buttonInfo && \"after\" !== location && \"before\" !== location) {\r\n buttonInfo.location = \"after\"\r\n }\r\n })()\r\n}\r\n\r\nfunction checkNamesUniqueness(existingNames, newName) {\r\n if (-1 !== existingNames.indexOf(newName)) {\r\n throw errors.Error(\"E1055\", newName)\r\n }\r\n existingNames.push(newName)\r\n}\r\n\r\nfunction isPredefinedButtonName(name, predefinedButtonsInfo) {\r\n return !!find(predefinedButtonsInfo, info => info.name === name)\r\n}\r\nexport default class TextEditorButtonCollection {\r\n constructor(editor, defaultButtonsInfo) {\r\n this.buttons = [];\r\n this.defaultButtonsInfo = defaultButtonsInfo;\r\n this.editor = editor\r\n }\r\n _compileButtonInfo(buttons) {\r\n var names = [];\r\n return buttons.map(button => {\r\n var isStringButton = \"string\" === typeof button;\r\n if (!isStringButton) {\r\n checkButtonInfo(button)\r\n }\r\n var isDefaultButton = isStringButton || isPredefinedButtonName(button.name, this.defaultButtonsInfo);\r\n if (isDefaultButton) {\r\n var defaultButtonInfo = find(this.defaultButtonsInfo, _ref => {\r\n var {\r\n name: name\r\n } = _ref;\r\n return name === button || name === button.name\r\n });\r\n if (!defaultButtonInfo) {\r\n throw errors.Error(\"E1056\", this.editor.NAME, button)\r\n }\r\n checkNamesUniqueness(names, button);\r\n return defaultButtonInfo\r\n } else {\r\n var {\r\n name: name\r\n } = button;\r\n checkNamesUniqueness(names, name);\r\n return extend(button, {\r\n Ctor: CustomButton\r\n })\r\n }\r\n })\r\n }\r\n _createButton(buttonsInfo) {\r\n var {\r\n Ctor: Ctor,\r\n options: options,\r\n name: name\r\n } = buttonsInfo;\r\n var button = new Ctor(name, this.editor, options);\r\n this.buttons.push(button);\r\n return button\r\n }\r\n _renderButtons(buttons, $container, targetLocation) {\r\n var $buttonsContainer = null;\r\n var buttonsInfo = buttons ? this._compileButtonInfo(buttons) : this.defaultButtonsInfo;\r\n buttonsInfo.forEach(buttonsInfo => {\r\n var {\r\n location: location = \"after\"\r\n } = buttonsInfo;\r\n if (location === targetLocation) {\r\n this._createButton(buttonsInfo).render((() => {\r\n $buttonsContainer = $buttonsContainer || $(\"
\").addClass(TEXTEDITOR_BUTTONS_CONTAINER_CLASS);\r\n \"before\" === targetLocation ? $container.prepend($buttonsContainer) : $container.append($buttonsContainer);\r\n return $buttonsContainer\r\n })())\r\n }\r\n });\r\n return $buttonsContainer\r\n }\r\n clean() {\r\n this.buttons.forEach(button => button.dispose());\r\n this.buttons = []\r\n }\r\n getButton(buttonName) {\r\n var button = find(this.buttons, _ref2 => {\r\n var {\r\n name: name\r\n } = _ref2;\r\n return name === buttonName\r\n });\r\n return button && button.instance\r\n }\r\n renderAfterButtons(buttons, $container) {\r\n return this._renderButtons(buttons, $container, \"after\")\r\n }\r\n renderBeforeButtons(buttons, $container) {\r\n return this._renderButtons(buttons, $container, \"before\")\r\n }\r\n updateButtons(names) {\r\n this.buttons.forEach(button => {\r\n if (!names || -1 !== names.indexOf(button.name)) {\r\n button.update()\r\n }\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n current,\r\n isMaterial\r\n} from \"../themes\";\r\nimport devices from \"../../core/devices\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport ClearButton from \"./ui.text_editor.clear\";\r\nimport TextEditorButtonCollection from \"./texteditor_button_collection/index\";\r\nimport config from \"../../core/config\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nvar TEXTEDITOR_CLASS = \"dx-texteditor\";\r\nvar TEXTEDITOR_INPUT_CONTAINER_CLASS = \"dx-texteditor-input-container\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar TEXTEDITOR_INPUT_SELECTOR = \".\" + TEXTEDITOR_INPUT_CLASS;\r\nvar TEXTEDITOR_CONTAINER_CLASS = \"dx-texteditor-container\";\r\nvar TEXTEDITOR_BUTTONS_CONTAINER_CLASS = \"dx-texteditor-buttons-container\";\r\nvar TEXTEDITOR_PLACEHOLDER_CLASS = \"dx-placeholder\";\r\nvar TEXTEDITOR_EMPTY_INPUT_CLASS = \"dx-texteditor-empty\";\r\nvar STATE_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar TEXTEDITOR_PENDING_INDICATOR_CLASS = \"dx-pending-indicator\";\r\nvar TEXTEDITOR_VALIDATION_PENDING_CLASS = \"dx-validation-pending\";\r\nvar TEXTEDITOR_VALID_CLASS = \"dx-valid\";\r\nvar EVENTS_LIST = [\"KeyDown\", \"KeyPress\", \"KeyUp\", \"Change\", \"Cut\", \"Copy\", \"Paste\", \"Input\"];\r\nvar CONTROL_KEYS = [\"tab\", \"enter\", \"shift\", \"control\", \"alt\", \"escape\", \"pageUp\", \"pageDown\", \"end\", \"home\", \"leftArrow\", \"upArrow\", \"rightArrow\", \"downArrow\"];\r\n\r\nfunction checkButtonsOptionType(buttons) {\r\n if (isDefined(buttons) && !Array.isArray(buttons)) {\r\n throw errors.Error(\"E1053\")\r\n }\r\n}\r\nvar TextEditorBase = Editor.inherit({\r\n ctor: function(_, options) {\r\n if (options) {\r\n checkButtonsOptionType(options.buttons)\r\n }\r\n this._buttonCollection = new TextEditorButtonCollection(this, this._getDefaultButtons());\r\n this._$beforeButtonsContainer = null;\r\n this._$afterButtonsContainer = null;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n buttons: void 0,\r\n value: \"\",\r\n spellcheck: false,\r\n showClearButton: false,\r\n valueChangeEvent: \"change\",\r\n placeholder: \"\",\r\n inputAttr: {},\r\n onFocusIn: null,\r\n onFocusOut: null,\r\n onKeyDown: null,\r\n onKeyPress: null,\r\n onKeyUp: null,\r\n onChange: null,\r\n onInput: null,\r\n onCut: null,\r\n onCopy: null,\r\n onPaste: null,\r\n onEnterKey: null,\r\n mode: \"text\",\r\n hoverStateEnabled: true,\r\n focusStateEnabled: true,\r\n text: void 0,\r\n displayValueFormatter: function(value) {\r\n return isDefined(value) && false !== value ? value : \"\"\r\n },\r\n stylingMode: config().editorStylingMode || \"outlined\",\r\n showValidationMark: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = current();\r\n return this.callBase().concat([{\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n stylingMode: config().editorStylingMode || \"underlined\"\r\n }\r\n }])\r\n },\r\n _setDeprecatedOptions: function() {\r\n this.callBase();\r\n extend(this._deprecatedOptions, {\r\n onKeyPress: {\r\n since: \"20.1\",\r\n message: \"This event is removed from the web standards and will be deprecated in modern browsers soon.\"\r\n }\r\n })\r\n },\r\n _getDefaultButtons: function() {\r\n return [{\r\n name: \"clear\",\r\n Ctor: ClearButton\r\n }]\r\n },\r\n _isClearButtonVisible: function() {\r\n return this.option(\"showClearButton\") && !this.option(\"readOnly\")\r\n },\r\n _input: function() {\r\n return this.$element().find(TEXTEDITOR_INPUT_SELECTOR).first()\r\n },\r\n _isFocused: function() {\r\n return focused(this._input()) || this.callBase()\r\n },\r\n _inputWrapper: function() {\r\n return this.$element()\r\n },\r\n _buttonsContainer: function() {\r\n return this._inputWrapper().find(\".\" + TEXTEDITOR_BUTTONS_CONTAINER_CLASS).eq(0)\r\n },\r\n _isControlKey: function(key) {\r\n return -1 !== CONTROL_KEYS.indexOf(key)\r\n },\r\n _renderStylingMode: function() {\r\n this.callBase();\r\n this._updateButtonsStyling(this.option(\"stylingMode\"))\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TEXTEDITOR_CLASS);\r\n this._renderInput();\r\n this._renderStylingMode();\r\n this._renderInputType();\r\n this._renderPlaceholder();\r\n this._renderProps();\r\n this.callBase();\r\n this._renderValue()\r\n },\r\n _render: function() {\r\n this._renderPlaceholder();\r\n this._refreshValueChangeEvent();\r\n this._renderEvents();\r\n this._renderEnterKeyAction();\r\n this._renderEmptinessEvent();\r\n this.callBase()\r\n },\r\n _renderInput: function() {\r\n this._$buttonsContainer = this._$textEditorContainer = $(\"
\").addClass(TEXTEDITOR_CONTAINER_CLASS).appendTo(this.$element());\r\n this._$textEditorInputContainer = $(\"
\").addClass(TEXTEDITOR_INPUT_CONTAINER_CLASS).appendTo(this._$textEditorContainer);\r\n this._$textEditorInputContainer.append(this._createInput());\r\n this._renderButtonContainers()\r\n },\r\n _getInputContainer() {\r\n return this._$textEditorInputContainer\r\n },\r\n _renderPendingIndicator: function() {\r\n this.$element().addClass(TEXTEDITOR_VALIDATION_PENDING_CLASS);\r\n var $inputContainer = this._getInputContainer();\r\n var $indicatorElement = $(\"
\").addClass(TEXTEDITOR_PENDING_INDICATOR_CLASS).appendTo($inputContainer);\r\n this._pendingIndicator = this._createComponent($indicatorElement, LoadIndicator)\r\n },\r\n _disposePendingIndicator: function() {\r\n if (!this._pendingIndicator) {\r\n return\r\n }\r\n this._pendingIndicator.dispose();\r\n this._pendingIndicator.$element().remove();\r\n this._pendingIndicator = null;\r\n this.$element().removeClass(TEXTEDITOR_VALIDATION_PENDING_CLASS)\r\n },\r\n _renderValidationState: function() {\r\n this.callBase();\r\n var isPending = \"pending\" === this.option(\"validationStatus\");\r\n var $element = this.$element();\r\n if (isPending) {\r\n !this._pendingIndicator && this._renderPendingIndicator();\r\n this._showValidMark = false\r\n } else {\r\n if (\"invalid\" === this.option(\"validationStatus\")) {\r\n this._showValidMark = false\r\n }\r\n if (!this._showValidMark && true === this.option(\"showValidationMark\")) {\r\n this._showValidMark = \"valid\" === this.option(\"validationStatus\") && !!this._pendingIndicator\r\n }\r\n this._disposePendingIndicator()\r\n }\r\n $element.toggleClass(TEXTEDITOR_VALID_CLASS, !!this._showValidMark)\r\n },\r\n _renderButtonContainers: function() {\r\n var buttons = this.option(\"buttons\");\r\n this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, this._$buttonsContainer);\r\n this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, this._$buttonsContainer)\r\n },\r\n _cleanButtonContainers: function() {\r\n var _this$_$beforeButtons, _this$_$afterButtonsC;\r\n null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons.remove();\r\n null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC.remove();\r\n this._buttonCollection.clean()\r\n },\r\n _clean() {\r\n this._buttonCollection.clean();\r\n this._disposePendingIndicator();\r\n this._$beforeButtonsContainer = null;\r\n this._$afterButtonsContainer = null;\r\n this._$textEditorContainer = null;\r\n this._$buttonsContainer = null;\r\n this.callBase()\r\n },\r\n _createInput: function() {\r\n var $input = $(\"\");\r\n this._applyInputAttributes($input, this.option(\"inputAttr\"));\r\n return $input\r\n },\r\n _setSubmitElementName: function(name) {\r\n var inputAttrName = this.option(\"inputAttr.name\");\r\n return this.callBase(name || inputAttrName || \"\")\r\n },\r\n _applyInputAttributes: function($input, customAttributes) {\r\n var inputAttributes = extend(this._getDefaultAttributes(), customAttributes);\r\n $input.attr(inputAttributes).addClass(TEXTEDITOR_INPUT_CLASS).css(\"minHeight\", this.option(\"height\") ? \"0\" : \"\")\r\n },\r\n _getDefaultAttributes: function() {\r\n var defaultAttributes = {\r\n autocomplete: \"off\"\r\n };\r\n var {\r\n ios: ios,\r\n mac: mac\r\n } = devices.real();\r\n if (ios || mac) {\r\n defaultAttributes.placeholder = \" \"\r\n }\r\n return defaultAttributes\r\n },\r\n _updateButtons: function(names) {\r\n this._buttonCollection.updateButtons(names)\r\n },\r\n _updateButtonsStyling: function(editorStylingMode) {\r\n each(this.option(\"buttons\"), (_, _ref) => {\r\n var {\r\n options: options,\r\n name: buttonName\r\n } = _ref;\r\n if (options && !options.stylingMode && this.option(\"visible\")) {\r\n var buttonInstance = this.getButton(buttonName);\r\n buttonInstance.option && buttonInstance.option(\"stylingMode\", \"underlined\" === editorStylingMode ? \"text\" : \"contained\")\r\n }\r\n })\r\n },\r\n _renderValue: function() {\r\n var renderInputPromise = this._renderInputValue();\r\n return renderInputPromise.promise()\r\n },\r\n _renderInputValue: function(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this.option(\"value\");\r\n var text = this.option(\"text\");\r\n var displayValue = this.option(\"displayValue\");\r\n var displayValueFormatter = this.option(\"displayValueFormatter\");\r\n if (void 0 !== displayValue && null !== value) {\r\n text = displayValueFormatter(displayValue)\r\n } else if (!isDefined(text)) {\r\n text = displayValueFormatter(value)\r\n }\r\n this.option(\"text\", text);\r\n if (this._input().val() !== (isDefined(text) ? text : \"\")) {\r\n this._renderDisplayText(text)\r\n } else {\r\n this._toggleEmptinessEventHandler()\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n _renderDisplayText: function(text) {\r\n this._input().val(text);\r\n this._toggleEmptinessEventHandler()\r\n },\r\n _isValueValid: function() {\r\n if (this._input().length) {\r\n var validity = this._input().get(0).validity;\r\n if (validity) {\r\n return validity.valid\r\n }\r\n }\r\n return true\r\n },\r\n _toggleEmptiness: function(isEmpty) {\r\n this.$element().toggleClass(TEXTEDITOR_EMPTY_INPUT_CLASS, isEmpty);\r\n this._togglePlaceholder(isEmpty)\r\n },\r\n _togglePlaceholder: function(isEmpty) {\r\n this.$element().find(\".\".concat(TEXTEDITOR_PLACEHOLDER_CLASS)).eq(0).toggleClass(STATE_INVISIBLE_CLASS, !isEmpty)\r\n },\r\n _renderProps: function() {\r\n this._toggleReadOnlyState();\r\n this._toggleSpellcheckState();\r\n this._toggleTabIndex()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase.apply(this, arguments);\r\n var $input = this._input();\r\n $input.prop(\"disabled\", value)\r\n },\r\n _toggleTabIndex: function() {\r\n var $input = this._input();\r\n var disabled = this.option(\"disabled\");\r\n var focusStateEnabled = this.option(\"focusStateEnabled\");\r\n if (disabled || !focusStateEnabled) {\r\n $input.attr(\"tabIndex\", -1)\r\n } else {\r\n $input.removeAttr(\"tabIndex\")\r\n }\r\n },\r\n _toggleReadOnlyState: function() {\r\n this._input().prop(\"readOnly\", this._readOnlyPropValue());\r\n this.callBase()\r\n },\r\n _readOnlyPropValue: function() {\r\n return this.option(\"readOnly\")\r\n },\r\n _toggleSpellcheckState: function() {\r\n this._input().prop(\"spellcheck\", this.option(\"spellcheck\"))\r\n },\r\n _renderPlaceholder: function() {\r\n this._renderPlaceholderMarkup();\r\n this._attachPlaceholderEvents()\r\n },\r\n _renderPlaceholderMarkup: function() {\r\n if (this._$placeholder) {\r\n this._$placeholder.remove();\r\n this._$placeholder = null\r\n }\r\n var $input = this._input();\r\n var placeholderText = this.option(\"placeholder\");\r\n var $placeholder = this._$placeholder = $(\"
\").attr(\"data-dx_placeholder\", placeholderText);\r\n $placeholder.insertAfter($input);\r\n $placeholder.addClass(TEXTEDITOR_PLACEHOLDER_CLASS)\r\n },\r\n _attachPlaceholderEvents: function() {\r\n var startEvent = addNamespace(pointerEvents.up, this.NAME);\r\n eventsEngine.on(this._$placeholder, startEvent, () => {\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n });\r\n this._toggleEmptinessEventHandler()\r\n },\r\n _placeholder: function() {\r\n return this._$placeholder || $()\r\n },\r\n _clearValueHandler: function(e) {\r\n var $input = this._input();\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e);\r\n this._clearValue();\r\n !this._isFocused() && eventsEngine.trigger($input, \"focus\");\r\n eventsEngine.trigger($input, \"input\")\r\n },\r\n _clearValue: function() {\r\n this.reset()\r\n },\r\n _renderEvents: function() {\r\n var $input = this._input();\r\n each(EVENTS_LIST, (_, event) => {\r\n if (this.hasActionSubscription(\"on\" + event)) {\r\n var action = this._createActionByOption(\"on\" + event, {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n eventsEngine.on($input, addNamespace(event.toLowerCase(), this.NAME), e => {\r\n if (this._disposed) {\r\n return\r\n }\r\n action({\r\n event: e\r\n })\r\n })\r\n }\r\n })\r\n },\r\n _refreshEvents: function() {\r\n var $input = this._input();\r\n each(EVENTS_LIST, (_, event) => {\r\n eventsEngine.off($input, addNamespace(event.toLowerCase(), this.NAME))\r\n });\r\n this._renderEvents()\r\n },\r\n _keyPressHandler: function() {\r\n this.option(\"text\", this._input().val())\r\n },\r\n _keyDownHandler: function(e) {\r\n var $input = this._input();\r\n var isCtrlEnter = e.ctrlKey && \"enter\" === normalizeKeyName(e);\r\n var isNewValue = $input.val() !== this.option(\"value\");\r\n if (isCtrlEnter && isNewValue) {\r\n eventsEngine.trigger($input, \"change\")\r\n }\r\n },\r\n _renderValueChangeEvent: function() {\r\n var keyPressEvent = addNamespace(this._renderValueEventName(), \"\".concat(this.NAME, \"TextChange\"));\r\n var valueChangeEvent = addNamespace(this.option(\"valueChangeEvent\"), \"\".concat(this.NAME, \"ValueChange\"));\r\n var keyDownEvent = addNamespace(\"keydown\", \"\".concat(this.NAME, \"TextChange\"));\r\n var $input = this._input();\r\n eventsEngine.on($input, keyPressEvent, this._keyPressHandler.bind(this));\r\n eventsEngine.on($input, valueChangeEvent, this._valueChangeEventHandler.bind(this));\r\n eventsEngine.on($input, keyDownEvent, this._keyDownHandler.bind(this))\r\n },\r\n _cleanValueChangeEvent: function() {\r\n var valueChangeNamespace = \".\".concat(this.NAME, \"ValueChange\");\r\n var textChangeNamespace = \".\".concat(this.NAME, \"TextChange\");\r\n eventsEngine.off(this._input(), valueChangeNamespace);\r\n eventsEngine.off(this._input(), textChangeNamespace)\r\n },\r\n _refreshValueChangeEvent: function() {\r\n this._cleanValueChangeEvent();\r\n this._renderValueChangeEvent()\r\n },\r\n _renderValueEventName: function() {\r\n return \"input change keypress\"\r\n },\r\n _focusTarget: function() {\r\n return this._input()\r\n },\r\n _focusEventTarget: function() {\r\n return this.element()\r\n },\r\n _isInput: function(element) {\r\n return element === this._input().get(0)\r\n },\r\n _preventNestedFocusEvent: function(event) {\r\n if (event.isDefaultPrevented()) {\r\n return true\r\n }\r\n var result = this._isNestedTarget(event.relatedTarget);\r\n if (\"focusin\" === event.type) {\r\n result = result && this._isNestedTarget(event.target) && !this._isInput(event.target)\r\n }\r\n result && event.preventDefault();\r\n return result\r\n },\r\n _isNestedTarget: function(target) {\r\n return !!this.$element().find(target).length\r\n },\r\n _focusClassTarget: function() {\r\n return this.$element()\r\n },\r\n _focusInHandler: function(event) {\r\n this._preventNestedFocusEvent(event);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _focusOutHandler: function(event) {\r\n this._preventNestedFocusEvent(event);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _toggleFocusClass: function(isFocused, $element) {\r\n this.callBase(isFocused, this._focusClassTarget($element))\r\n },\r\n _hasFocusClass: function(element) {\r\n return this.callBase($(element || this.$element()))\r\n },\r\n _renderEmptinessEvent: function() {\r\n var $input = this._input();\r\n eventsEngine.on($input, \"input blur\", this._toggleEmptinessEventHandler.bind(this))\r\n },\r\n _toggleEmptinessEventHandler: function() {\r\n var text = this._input().val();\r\n var isEmpty = (\"\" === text || null === text) && this._isValueValid();\r\n this._toggleEmptiness(isEmpty)\r\n },\r\n _valueChangeEventHandler: function(e, formattedValue) {\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", arguments.length > 1 ? formattedValue : this._input().val());\r\n this._saveValueChangeEvent(void 0)\r\n },\r\n _renderEnterKeyAction: function() {\r\n this._enterKeyAction = this._createActionByOption(\"onEnterKey\", {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n eventsEngine.off(this._input(), \"keyup.onEnterKey.dxTextEditor\");\r\n eventsEngine.on(this._input(), \"keyup.onEnterKey.dxTextEditor\", this._enterKeyHandlerUp.bind(this))\r\n },\r\n _enterKeyHandlerUp: function(e) {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (\"enter\" === normalizeKeyName(e)) {\r\n this._enterKeyAction({\r\n event: e\r\n })\r\n }\r\n },\r\n _updateValue: function() {\r\n this._options.silent(\"text\", null);\r\n this._renderValue()\r\n },\r\n _dispose: function() {\r\n this._enterKeyAction = void 0;\r\n this.callBase()\r\n },\r\n _getSubmitElement: function() {\r\n return this._input()\r\n },\r\n _hasActiveElement: function() {\r\n return this._input().is(domAdapter.getActiveElement())\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n fullName: fullName,\r\n value: value\r\n } = args;\r\n if (inArray(name.replace(\"on\", \"\"), EVENTS_LIST) > -1) {\r\n this._refreshEvents();\r\n return\r\n }\r\n switch (name) {\r\n case \"valueChangeEvent\":\r\n this._refreshValueChangeEvent();\r\n this._refreshFocusEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"onValueChanged\":\r\n this._createValueChangeAction();\r\n break;\r\n case \"focusStateEnabled\":\r\n this.callBase(args);\r\n this._toggleTabIndex();\r\n break;\r\n case \"spellcheck\":\r\n this._toggleSpellcheckState();\r\n break;\r\n case \"mode\":\r\n this._renderInputType();\r\n break;\r\n case \"onEnterKey\":\r\n this._renderEnterKeyAction();\r\n break;\r\n case \"placeholder\":\r\n this._renderPlaceholder();\r\n break;\r\n case \"readOnly\":\r\n case \"disabled\":\r\n this._updateButtons();\r\n this.callBase(args);\r\n break;\r\n case \"showClearButton\":\r\n this._updateButtons([\"clear\"]);\r\n break;\r\n case \"text\":\r\n break;\r\n case \"value\":\r\n this._updateValue();\r\n this.callBase(args);\r\n break;\r\n case \"inputAttr\":\r\n this._applyInputAttributes(this._input(), this.option(name));\r\n break;\r\n case \"stylingMode\":\r\n this._renderStylingMode();\r\n break;\r\n case \"buttons\":\r\n if (fullName === name) {\r\n checkButtonsOptionType(value)\r\n }\r\n this._cleanButtonContainers();\r\n this._renderButtonContainers();\r\n this._updateButtonsStyling(this.option(\"stylingMode\"));\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n if (value && this.option(\"buttons\")) {\r\n this._cleanButtonContainers();\r\n this._renderButtonContainers();\r\n this._updateButtonsStyling(this.option(\"stylingMode\"))\r\n }\r\n break;\r\n case \"displayValueFormatter\":\r\n this._invalidate();\r\n break;\r\n case \"showValidationMark\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _renderInputType: function() {\r\n this._setInputType(this.option(\"mode\"))\r\n },\r\n _setInputType: function(type) {\r\n var input = this._input();\r\n if (\"search\" === type) {\r\n type = \"text\"\r\n }\r\n try {\r\n input.prop(\"type\", type)\r\n } catch (e) {\r\n input.prop(\"type\", \"text\")\r\n }\r\n },\r\n getButton(name) {\r\n return this._buttonCollection.getButton(name)\r\n },\r\n focus: function() {\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n },\r\n reset: function() {\r\n if (this._showValidMark) {\r\n this._showValidMark = false;\r\n this._renderValidationState()\r\n }\r\n var defaultOptions = this._getDefaultOptions();\r\n if (this.option(\"value\") === defaultOptions.value) {\r\n this._options.silent(\"text\", \"\");\r\n this._renderValue()\r\n } else {\r\n this.option(\"value\", defaultOptions.value)\r\n }\r\n },\r\n on: function(eventName, eventHandler) {\r\n var result = this.callBase(eventName, eventHandler);\r\n var event = eventName.charAt(0).toUpperCase() + eventName.substr(1);\r\n if (EVENTS_LIST.indexOf(event) >= 0) {\r\n this._refreshEvents()\r\n }\r\n return result\r\n }\r\n});\r\nexport default TextEditorBase;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.strategy.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport EventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n clipboardText as getClipboardText\r\n} from \"../../core/utils/dom\";\r\nvar MASK_EVENT_NAMESPACE = \"dxMask\";\r\nvar BLUR_EVENT = \"blur beforedeactivate\";\r\nvar EMPTY_CHAR = \" \";\r\nexport default class BaseMaskStrategy {\r\n constructor(editor) {\r\n this.editor = editor;\r\n this.DIRECTION = {\r\n FORWARD: \"forward\",\r\n BACKWARD: \"backward\"\r\n };\r\n this.NAME = this._getStrategyName()\r\n }\r\n _getStrategyName() {\r\n return \"base\"\r\n }\r\n editorOption() {\r\n return this.editor.option(...arguments)\r\n }\r\n editorInput() {\r\n return this.editor._input()\r\n }\r\n editorCaret(newCaret) {\r\n if (!newCaret) {\r\n return this.editor._caret()\r\n }\r\n this.editor._caret(newCaret)\r\n }\r\n getHandler(handlerName) {\r\n var handler = this[\"_\".concat(handlerName, \"Handler\")] || function() {};\r\n return handler.bind(this)\r\n }\r\n attachEvents() {\r\n var $input = this.editorInput();\r\n this.getHandleEventNames().forEach(eventName => {\r\n var subscriptionName = addNamespace(eventName.toLowerCase(), MASK_EVENT_NAMESPACE);\r\n EventsEngine.on($input, subscriptionName, this.getEventHandler(eventName))\r\n });\r\n this._attachChangeEventHandlers()\r\n }\r\n getHandleEventNames() {\r\n return [\"focusIn\", \"focusOut\", \"keyDown\", \"input\", \"paste\", \"cut\", \"drop\"]\r\n }\r\n getEventHandler(eventName) {\r\n return this[\"_\".concat(eventName, \"Handler\")].bind(this)\r\n }\r\n detachEvents() {\r\n EventsEngine.off(this.editorInput(), \".\".concat(MASK_EVENT_NAMESPACE))\r\n }\r\n _attachChangeEventHandlers() {\r\n if (-1 === inArray(\"change\", this.editorOption(\"valueChangeEvent\").split(\" \"))) {\r\n return\r\n }\r\n EventsEngine.on(this.editorInput(), addNamespace(BLUR_EVENT, MASK_EVENT_NAMESPACE), function(e) {\r\n this._suppressCaretChanging(this._changeHandler, [e]);\r\n this._changeHandler(e)\r\n }.bind(this.editor))\r\n }\r\n _focusInHandler() {\r\n this.editor._showMaskPlaceholder();\r\n this.editor._direction(this.DIRECTION.FORWARD);\r\n if (!this.editor._isValueEmpty() && this.editorOption(\"isValid\")) {\r\n this.editor._adjustCaret()\r\n } else {\r\n var caret = this.editor._maskRulesChain.first();\r\n this._caretTimeout = setTimeout(function() {\r\n this._caret({\r\n start: caret,\r\n end: caret\r\n })\r\n }.bind(this.editor), 0)\r\n }\r\n }\r\n _focusOutHandler(event) {\r\n this.editor._changeHandler(event);\r\n if (\"onFocus\" === this.editorOption(\"showMaskMode\") && this.editor._isValueEmpty()) {\r\n this.editorOption(\"text\", \"\");\r\n this.editor._renderDisplayText(\"\")\r\n }\r\n }\r\n _cutHandler(event) {\r\n var caret = this.editorCaret();\r\n var selectedText = this.editorInput().val().substring(caret.start, caret.end);\r\n this.editor._maskKeyHandler(event, () => getClipboardText(event, selectedText))\r\n }\r\n _dropHandler() {\r\n this._clearDragTimer();\r\n this._dragTimer = setTimeout(function() {\r\n this.option(\"value\", this._convertToValue(this._input().val()))\r\n }.bind(this.editor))\r\n }\r\n _clearDragTimer() {\r\n clearTimeout(this._dragTimer)\r\n }\r\n _keyDownHandler() {\r\n this._keyPressHandled = false\r\n }\r\n _pasteHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n this._keyPressHandled = true;\r\n var caret = this.editorCaret();\r\n editor._maskKeyHandler(event, () => {\r\n var pastedText = getClipboardText(event);\r\n var restText = editor._maskRulesChain.text().substring(caret.end);\r\n var accepted = editor._handleChain({\r\n text: pastedText,\r\n start: caret.start,\r\n length: pastedText.length\r\n });\r\n var newCaret = caret.start + accepted;\r\n editor._handleChain({\r\n text: restText,\r\n start: newCaret,\r\n length: restText.length\r\n });\r\n editor._caret({\r\n start: newCaret,\r\n end: newCaret\r\n })\r\n })\r\n }\r\n _autoFillHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n var inputVal = this.editorInput().val();\r\n this._inputHandlerTimer = setTimeout(() => {\r\n this._keyPressHandled = true;\r\n if (this._isAutoFill()) {\r\n this._keyPressHandled = true;\r\n editor._maskKeyHandler(event, () => {\r\n editor._handleChain({\r\n text: inputVal,\r\n start: 0,\r\n length: inputVal.length\r\n })\r\n });\r\n editor._validateMask()\r\n }\r\n })\r\n }\r\n _isAutoFill() {\r\n var $input = this.editor._input();\r\n var result = false;\r\n if (browser.msie && browser.version > 11) {\r\n result = $input.hasClass(\"edge-autofilled\")\r\n } else if (browser.webkit) {\r\n var input = $input.get(0);\r\n result = input && input.matches(\":-webkit-autofill\")\r\n }\r\n return result\r\n }\r\n runWithoutEventProcessing(action) {\r\n var keyPressHandled = this._keyPressHandled;\r\n this._keyPressHandled = true;\r\n action();\r\n this._keyPressHandled = keyPressHandled\r\n }\r\n _backspaceHandler() {}\r\n _delHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n this._keyPressHandled = true;\r\n editor._maskKeyHandler(event, () => !editor._hasSelection() && editor._handleKey(EMPTY_CHAR))\r\n }\r\n clean() {\r\n this._clearDragTimer();\r\n clearTimeout(this._backspaceHandlerTimeout);\r\n clearTimeout(this._caretTimeout);\r\n clearTimeout(this._inputHandlerTimer)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.strategy.default.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport BaseMaskStrategy from \"./ui.text_editor.mask.strategy.base\";\r\nimport {\r\n getChar\r\n} from \"../../events/utils/index\";\r\nimport Promise from \"../../core/polyfills/promise\";\r\nvar BACKSPACE_INPUT_TYPE = \"deleteContentBackward\";\r\nvar EMPTY_CHAR = \" \";\r\nclass DefaultMaskStrategy extends BaseMaskStrategy {\r\n _getStrategyName() {\r\n return \"default\"\r\n }\r\n getHandleEventNames() {\r\n return [...super.getHandleEventNames(), \"keyPress\"]\r\n }\r\n _keyPressHandler(event) {\r\n if (this._keyPressHandled) {\r\n return\r\n }\r\n this._keyPressHandled = true;\r\n if (this.editor._isControlKeyFired(event)) {\r\n return\r\n }\r\n var {\r\n editor: editor\r\n } = this;\r\n editor._maskKeyHandler(event, () => editor._handleKey(getChar(event)))\r\n }\r\n _inputHandler(event) {\r\n if (this._backspaceInputHandled(event.originalEvent && event.originalEvent.inputType)) {\r\n this._handleBackspaceInput(event)\r\n }\r\n if (event.originalEvent) {\r\n this._autoFillHandler(event)\r\n }\r\n if (this._keyPressHandled) {\r\n return\r\n }\r\n this._keyPressHandled = true;\r\n var inputValue = this.editorInput().val();\r\n var caret = this.editorCaret();\r\n if (!caret.end) {\r\n return\r\n }\r\n caret.start = caret.end - 1;\r\n var oldValue = inputValue.substring(0, caret.start) + inputValue.substring(caret.end);\r\n var char = inputValue[caret.start];\r\n var {\r\n editor: editor\r\n } = this;\r\n this.editorInput().val(oldValue);\r\n editor._caret({\r\n start: caret.start,\r\n end: caret.start\r\n });\r\n editor._maskKeyHandler(event, () => editor._handleKey(char))\r\n }\r\n _backspaceHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n this._keyPressHandled = true;\r\n var afterBackspaceHandler = (needAdjustCaret, callBack) => {\r\n if (needAdjustCaret) {\r\n editor._direction(this.DIRECTION.FORWARD);\r\n editor._adjustCaret()\r\n }\r\n var currentCaret = this.editorCaret();\r\n return new Promise(resolve => {\r\n clearTimeout(this._backspaceHandlerTimeout);\r\n this._backspaceHandlerTimeout = setTimeout((function() {\r\n callBack(currentCaret);\r\n resolve()\r\n }))\r\n })\r\n };\r\n editor._maskKeyHandler(event, () => {\r\n if (editor._hasSelection()) {\r\n return afterBackspaceHandler(true, currentCaret => {\r\n editor._displayMask(currentCaret);\r\n editor._maskRulesChain.reset()\r\n })\r\n }\r\n if (editor._tryMoveCaretBackward()) {\r\n return afterBackspaceHandler(false, currentCaret => {\r\n this.editorCaret(currentCaret)\r\n })\r\n }\r\n editor._handleKey(EMPTY_CHAR, this.DIRECTION.BACKWARD);\r\n return afterBackspaceHandler(true, currentCaret => {\r\n editor._displayMask(currentCaret);\r\n editor._maskRulesChain.reset()\r\n })\r\n })\r\n }\r\n _backspaceInputHandled(inputType) {\r\n return inputType === BACKSPACE_INPUT_TYPE && !this._keyPressHandled\r\n }\r\n _handleBackspaceInput(event) {\r\n var {\r\n start: start,\r\n end: end\r\n } = this.editorCaret();\r\n this.editorCaret({\r\n start: start + 1,\r\n end: end + 1\r\n });\r\n this._backspaceHandler(event)\r\n }\r\n}\r\nexport default DefaultMaskStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.strategy.input_events.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport BaseMaskStrategy from \"./ui.text_editor.mask.strategy.base\";\r\nvar DELETE_INPUT_TYPE = \"deleteContentBackward\";\r\nclass InputEventsMaskStrategy extends BaseMaskStrategy {\r\n _getStrategyName() {\r\n return \"inputEvents\"\r\n }\r\n getHandleEventNames() {\r\n return [...super.getHandleEventNames(), \"beforeInput\"]\r\n }\r\n _beforeInputHandler() {\r\n this._prevCaret = this.editorCaret()\r\n }\r\n _inputHandler(_ref) {\r\n var {\r\n originalEvent: originalEvent\r\n } = _ref;\r\n if (!originalEvent) {\r\n return\r\n }\r\n var {\r\n inputType: inputType,\r\n data: data\r\n } = originalEvent;\r\n var currentCaret = this.editorCaret();\r\n if (inputType === DELETE_INPUT_TYPE) {\r\n var length = this._prevCaret.end - this._prevCaret.start || 1;\r\n this.editor.setBackwardDirection();\r\n this._updateEditorMask({\r\n start: currentCaret.start,\r\n length: length,\r\n text: this._getEmptyString(length)\r\n })\r\n } else {\r\n var _this$_prevCaret, _this$_prevCaret2, _this$_prevCaret3;\r\n if (!currentCaret.end) {\r\n return\r\n }\r\n this._autoFillHandler(originalEvent);\r\n this.editorCaret(currentCaret);\r\n var _length = (null === (_this$_prevCaret = this._prevCaret) || void 0 === _this$_prevCaret ? void 0 : _this$_prevCaret.end) - (null === (_this$_prevCaret2 = this._prevCaret) || void 0 === _this$_prevCaret2 ? void 0 : _this$_prevCaret2.start);\r\n var newData = data + (_length ? this._getEmptyString(_length - data.length) : \"\");\r\n this.editor.setForwardDirection();\r\n var hasValidChars = this._updateEditorMask({\r\n start: null === (_this$_prevCaret3 = this._prevCaret) || void 0 === _this$_prevCaret3 ? void 0 : _this$_prevCaret3.start,\r\n length: _length || newData.length,\r\n text: newData\r\n });\r\n if (!hasValidChars) {\r\n this.editorCaret(this._prevCaret)\r\n }\r\n }\r\n }\r\n _getEmptyString(length) {\r\n return Array(length + 1).join(\" \")\r\n }\r\n _updateEditorMask(args) {\r\n var textLength = args.text.length;\r\n var updatedCharsCount = this.editor._handleChain(args);\r\n if (this.editor.isForwardDirection()) {\r\n var {\r\n start: start,\r\n end: end\r\n } = this.editorCaret();\r\n var correction = updatedCharsCount - textLength;\r\n if (start <= updatedCharsCount && updatedCharsCount > 1) {\r\n this.editorCaret({\r\n start: start + correction,\r\n end: end + correction\r\n })\r\n }\r\n this.editor.isForwardDirection() && this.editor._adjustCaret()\r\n }\r\n this.editor._displayMask();\r\n return !!updatedCharsCount\r\n }\r\n}\r\nexport default InputEventsMaskStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport caretUtils from \"./utils.caret\";\r\nimport {\r\n isInputEventsL2Supported\r\n} from \"./utils.support\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace,\r\n createEvent,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isEmpty\r\n} from \"../../core/utils/string\";\r\nimport {\r\n name as wheelEventName\r\n} from \"../../events/core/wheel\";\r\nimport {\r\n EmptyMaskRule,\r\n StubMaskRule,\r\n MaskRule\r\n} from \"./ui.text_editor.mask.rule\";\r\nimport TextEditorBase from \"./ui.text_editor.base\";\r\nimport DefaultMaskStrategy from \"./ui.text_editor.mask.strategy.default\";\r\nimport InputEventsMaskStrategy from \"./ui.text_editor.mask.strategy.input_events\";\r\nvar stubCaret = function() {\r\n return {}\r\n};\r\nvar caret = caretUtils;\r\nvar EMPTY_CHAR = \" \";\r\nvar ESCAPED_CHAR = \"\\\\\";\r\nvar TEXTEDITOR_MASKED_CLASS = \"dx-texteditor-masked\";\r\nvar FORWARD_DIRECTION = \"forward\";\r\nvar BACKWARD_DIRECTION = \"backward\";\r\nvar buildInMaskRules = {\r\n 0: /[0-9]/,\r\n 9: /[0-9\\s]/,\r\n \"#\": /[-+0-9\\s]/,\r\n L: function(char) {\r\n return isLiteralChar(char)\r\n },\r\n l: function(char) {\r\n return isLiteralChar(char) || isSpaceChar(char)\r\n },\r\n C: /\\S/,\r\n c: /./,\r\n A: function(char) {\r\n return isLiteralChar(char) || isNumericChar(char)\r\n },\r\n a: function(char) {\r\n return isLiteralChar(char) || isNumericChar(char) || isSpaceChar(char)\r\n }\r\n};\r\n\r\nfunction isNumericChar(char) {\r\n return /[0-9]/.test(char)\r\n}\r\n\r\nfunction isLiteralChar(char) {\r\n var code = char.charCodeAt();\r\n return 64 < code && code < 91 || 96 < code && code < 123 || code > 127\r\n}\r\n\r\nfunction isSpaceChar(char) {\r\n return \" \" === char\r\n}\r\nvar TextEditorMask = TextEditorBase.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n mask: \"\",\r\n maskChar: \"_\",\r\n maskRules: {},\r\n maskInvalidMessage: messageLocalization.format(\"validation-mask\"),\r\n useMaskedValue: false,\r\n showMaskMode: \"always\"\r\n })\r\n },\r\n _supportedKeys: function() {\r\n var that = this;\r\n var keyHandlerMap = {\r\n backspace: that._maskStrategy.getHandler(\"backspace\"),\r\n del: that._maskStrategy.getHandler(\"del\"),\r\n enter: that._changeHandler\r\n };\r\n var result = that.callBase();\r\n each(keyHandlerMap, (function(key, callback) {\r\n var parentHandler = result[key];\r\n result[key] = function(e) {\r\n that.option(\"mask\") && callback.call(that, e);\r\n parentHandler && parentHandler(e)\r\n }\r\n }));\r\n return result\r\n },\r\n _getSubmitElement: function() {\r\n return !this.option(\"mask\") ? this.callBase() : this._$hiddenElement\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initMaskStrategy()\r\n },\r\n _initMaskStrategy: function() {\r\n this._maskStrategy = isInputEventsL2Supported() ? new InputEventsMaskStrategy(this) : new DefaultMaskStrategy(this)\r\n },\r\n _initMarkup: function() {\r\n this._renderHiddenElement();\r\n this.callBase()\r\n },\r\n _attachMouseWheelEventHandlers: function() {\r\n var hasMouseWheelHandler = this._onMouseWheel !== noop;\r\n if (!hasMouseWheelHandler) {\r\n return\r\n }\r\n var input = this._input();\r\n var eventName = addNamespace(wheelEventName, this.NAME);\r\n var mouseWheelAction = this._createAction(function(e) {\r\n var {\r\n event: event\r\n } = e;\r\n if (focused(input) && !isCommandKeyPressed(event)) {\r\n this._onMouseWheel(event);\r\n event.preventDefault();\r\n event.stopPropagation()\r\n }\r\n }.bind(this));\r\n eventsEngine.off(input, eventName);\r\n eventsEngine.on(input, eventName, (function(e) {\r\n mouseWheelAction({\r\n event: e\r\n })\r\n }))\r\n },\r\n _onMouseWheel: noop,\r\n _render: function() {\r\n this._renderMask();\r\n this.callBase();\r\n this._attachMouseWheelEventHandlers()\r\n },\r\n _renderHiddenElement: function() {\r\n if (this.option(\"mask\")) {\r\n this._$hiddenElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this._inputWrapper())\r\n }\r\n },\r\n _removeHiddenElement: function() {\r\n this._$hiddenElement && this._$hiddenElement.remove()\r\n },\r\n _renderMask: function() {\r\n this.$element().removeClass(TEXTEDITOR_MASKED_CLASS);\r\n this._maskRulesChain = null;\r\n this._maskStrategy.detachEvents();\r\n if (!this.option(\"mask\")) {\r\n return\r\n }\r\n this.$element().addClass(TEXTEDITOR_MASKED_CLASS);\r\n this._maskStrategy.attachEvents();\r\n this._parseMask();\r\n this._renderMaskedValue()\r\n },\r\n _suppressCaretChanging: function(callback, args) {\r\n caret = stubCaret;\r\n try {\r\n callback.apply(this, args)\r\n } finally {\r\n caret = caretUtils\r\n }\r\n },\r\n _changeHandler: function(e) {\r\n var $input = this._input();\r\n var inputValue = $input.val();\r\n if (inputValue === this._changedValue) {\r\n return\r\n }\r\n this._changedValue = inputValue;\r\n var changeEvent = createEvent(e, {\r\n type: \"change\"\r\n });\r\n eventsEngine.trigger($input, changeEvent)\r\n },\r\n _parseMask: function() {\r\n this._maskRules = extend({}, buildInMaskRules, this.option(\"maskRules\"));\r\n this._maskRulesChain = this._parseMaskRule(0)\r\n },\r\n _parseMaskRule: function(index) {\r\n var mask = this.option(\"mask\");\r\n if (index >= mask.length) {\r\n return new EmptyMaskRule\r\n }\r\n var currentMaskChar = mask[index];\r\n var isEscapedChar = currentMaskChar === ESCAPED_CHAR;\r\n var result = isEscapedChar ? new StubMaskRule({\r\n maskChar: mask[index + 1]\r\n }) : this._getMaskRule(currentMaskChar);\r\n result.next(this._parseMaskRule(index + 1 + isEscapedChar));\r\n return result\r\n },\r\n _getMaskRule: function(pattern) {\r\n var ruleConfig;\r\n each(this._maskRules, (function(rulePattern, allowedChars) {\r\n if (rulePattern === pattern) {\r\n ruleConfig = {\r\n pattern: rulePattern,\r\n allowedChars: allowedChars\r\n };\r\n return false\r\n }\r\n }));\r\n return isDefined(ruleConfig) ? new MaskRule(extend({\r\n maskChar: this.option(\"maskChar\")\r\n }, ruleConfig)) : new StubMaskRule({\r\n maskChar: pattern\r\n })\r\n },\r\n _renderMaskedValue: function() {\r\n if (!this._maskRulesChain) {\r\n return\r\n }\r\n var value = this.option(\"value\") || \"\";\r\n this._maskRulesChain.clear(this._normalizeChainArguments());\r\n var chainArgs = {\r\n length: value.length\r\n };\r\n chainArgs[this._isMaskedValueMode() ? \"text\" : \"value\"] = value;\r\n this._handleChain(chainArgs);\r\n this._displayMask()\r\n },\r\n _replaceSelectedText: function(text, selection, char) {\r\n if (void 0 === char) {\r\n return text\r\n }\r\n var textBefore = text.slice(0, selection.start);\r\n var textAfter = text.slice(selection.end);\r\n var edited = textBefore + char + textAfter;\r\n return edited\r\n },\r\n _isMaskedValueMode: function() {\r\n return this.option(\"useMaskedValue\")\r\n },\r\n _displayMask: function(caret) {\r\n caret = caret || this._caret();\r\n this._renderValue();\r\n this._caret(caret)\r\n },\r\n _isValueEmpty: function() {\r\n return isEmpty(this._value)\r\n },\r\n _shouldShowMask: function() {\r\n var showMaskMode = this.option(\"showMaskMode\");\r\n if (\"onFocus\" === showMaskMode) {\r\n return focused(this._input()) || !this._isValueEmpty()\r\n }\r\n return true\r\n },\r\n _showMaskPlaceholder: function() {\r\n if (this._shouldShowMask()) {\r\n var text = this._maskRulesChain.text();\r\n this.option(\"text\", text);\r\n if (\"onFocus\" === this.option(\"showMaskMode\")) {\r\n this._renderDisplayText(text)\r\n }\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this._maskRulesChain) {\r\n this._showMaskPlaceholder();\r\n if (this._$hiddenElement) {\r\n var value = this._maskRulesChain.value();\r\n var submitElementValue = !isEmpty(value) ? this._getPreparedValue() : \"\";\r\n this._$hiddenElement.val(submitElementValue)\r\n }\r\n }\r\n return this.callBase()\r\n },\r\n _getPreparedValue: function() {\r\n return this._convertToValue().replace(/\\s+$/, \"\")\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (!this._maskRulesChain) {\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", this._getPreparedValue())\r\n },\r\n _isControlKeyFired: function(e) {\r\n return this._isControlKey(normalizeKeyName(e)) || isCommandKeyPressed(e)\r\n },\r\n _handleChain: function(args) {\r\n var handledCount = this._maskRulesChain.handle(this._normalizeChainArguments(args));\r\n this._value = this._maskRulesChain.value();\r\n this._textValue = this._maskRulesChain.text();\r\n return handledCount\r\n },\r\n _normalizeChainArguments: function(args) {\r\n args = args || {};\r\n args.index = 0;\r\n args.fullText = this._maskRulesChain.text();\r\n return args\r\n },\r\n _convertToValue: function(text) {\r\n if (this._isMaskedValueMode()) {\r\n text = this._replaceMaskCharWithEmpty(text || this._textValue || \"\")\r\n } else {\r\n text = text || this._value || \"\"\r\n }\r\n return text\r\n },\r\n _replaceMaskCharWithEmpty: function(text) {\r\n return text.replace(new RegExp(this.option(\"maskChar\"), \"g\"), EMPTY_CHAR)\r\n },\r\n _maskKeyHandler: function(e, keyHandler) {\r\n if (this.option(\"readOnly\")) {\r\n return\r\n }\r\n this.setForwardDirection();\r\n e.preventDefault();\r\n this._handleSelection();\r\n var previousText = this._input().val();\r\n var raiseInputEvent = () => {\r\n if (previousText !== this._input().val()) {\r\n this._maskStrategy.runWithoutEventProcessing(() => eventsEngine.trigger(this._input(), \"input\"))\r\n }\r\n };\r\n var handled = keyHandler();\r\n if (handled) {\r\n handled.then(raiseInputEvent)\r\n } else {\r\n this.setForwardDirection();\r\n this._adjustCaret();\r\n this._displayMask();\r\n this._maskRulesChain.reset();\r\n raiseInputEvent()\r\n }\r\n },\r\n _handleKey: function(key, direction) {\r\n this._direction(direction || FORWARD_DIRECTION);\r\n this._adjustCaret(key);\r\n this._handleKeyChain(key);\r\n this._moveCaret()\r\n },\r\n _handleSelection: function() {\r\n if (!this._hasSelection()) {\r\n return\r\n }\r\n var caret = this._caret();\r\n var emptyChars = new Array(caret.end - caret.start + 1).join(EMPTY_CHAR);\r\n this._handleKeyChain(emptyChars)\r\n },\r\n _handleKeyChain: function(chars) {\r\n var caret = this._caret();\r\n var start = this.isForwardDirection() ? caret.start : caret.start - 1;\r\n var end = this.isForwardDirection() ? caret.end : caret.end - 1;\r\n var length = start === end ? 1 : end - start;\r\n this._handleChain({\r\n text: chars,\r\n start: start,\r\n length: length\r\n })\r\n },\r\n _tryMoveCaretBackward: function() {\r\n this.setBackwardDirection();\r\n var currentCaret = this._caret().start;\r\n this._adjustCaret();\r\n return !currentCaret || currentCaret !== this._caret().start\r\n },\r\n _adjustCaret: function(char) {\r\n var caret = this._maskRulesChain.adjustedCaret(this._caret().start, this.isForwardDirection(), char);\r\n this._caret({\r\n start: caret,\r\n end: caret\r\n })\r\n },\r\n _moveCaret: function() {\r\n var currentCaret = this._caret().start;\r\n var maskRuleIndex = currentCaret + (this.isForwardDirection() ? 0 : -1);\r\n var caret = this._maskRulesChain.isAccepted(maskRuleIndex) ? currentCaret + (this.isForwardDirection() ? 1 : -1) : currentCaret;\r\n this._caret({\r\n start: caret,\r\n end: caret\r\n })\r\n },\r\n _caret: function(position, force) {\r\n var $input = this._input();\r\n if (!$input.length) {\r\n return\r\n }\r\n if (!arguments.length) {\r\n return caret($input)\r\n }\r\n caret($input, position, force)\r\n },\r\n _hasSelection: function() {\r\n var caret = this._caret();\r\n return caret.start !== caret.end\r\n },\r\n _direction: function(direction) {\r\n if (!arguments.length) {\r\n return this._typingDirection\r\n }\r\n this._typingDirection = direction\r\n },\r\n setForwardDirection: function() {\r\n this._direction(FORWARD_DIRECTION)\r\n },\r\n setBackwardDirection: function() {\r\n this._direction(BACKWARD_DIRECTION)\r\n },\r\n isForwardDirection: function() {\r\n return this._direction() === FORWARD_DIRECTION\r\n },\r\n _clean: function() {\r\n this._maskStrategy && this._maskStrategy.clean();\r\n this.callBase()\r\n },\r\n _validateMask: function() {\r\n if (!this._maskRulesChain) {\r\n return\r\n }\r\n var isValid = isEmpty(this.option(\"value\")) || this._maskRulesChain.isValid(this._normalizeChainArguments());\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: this.option(\"maskInvalidMessage\")\r\n }\r\n })\r\n },\r\n _updateHiddenElement: function() {\r\n this._removeHiddenElement();\r\n if (this.option(\"mask\")) {\r\n this._input().removeAttr(\"name\");\r\n this._renderHiddenElement()\r\n }\r\n this._setSubmitElementName(this.option(\"name\"))\r\n },\r\n _updateMaskOption: function() {\r\n this._updateHiddenElement();\r\n this._renderMask();\r\n this._validateMask()\r\n },\r\n _processEmptyMask: function(mask) {\r\n if (mask) {\r\n return\r\n }\r\n var value = this.option(\"value\");\r\n this.option({\r\n text: value,\r\n isValid: true\r\n });\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n });\r\n this._renderValue()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"mask\":\r\n this._updateMaskOption();\r\n this._processEmptyMask(args.value);\r\n break;\r\n case \"maskChar\":\r\n case \"maskRules\":\r\n case \"useMaskedValue\":\r\n this._updateMaskOption();\r\n break;\r\n case \"value\":\r\n this._renderMaskedValue();\r\n this._validateMask();\r\n this.callBase(args);\r\n this._changedValue = this._input().val();\r\n break;\r\n case \"maskInvalidMessage\":\r\n break;\r\n case \"showMaskMode\":\r\n this.option(\"text\", \"\");\r\n this._renderValue();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default TextEditorMask;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport TextEditorMask from \"./ui.text_editor.mask\";\r\nregisterComponent(\"dxTextEditor\", TextEditorMask);\r\nexport default TextEditorMask;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.live_update.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidget from \"./ui.collection_widget.edit\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n update,\r\n insert,\r\n indexByKey\r\n} from \"../../data/array_utils\";\r\nimport dataUtils from \"../../data/utils\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n findChanges\r\n} from \"../../core/utils/array_compare\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar PRIVATE_KEY_FIELD = \"__dx_key__\";\r\nexport default CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n repaintChangesOnly: false\r\n })\r\n },\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n this._customizeStoreLoadOptions = e => {\r\n var dataSource = this._dataSource;\r\n if (dataSource && !dataSource.isLoaded()) {\r\n this._correctionIndex = 0\r\n }\r\n if (this._correctionIndex && e.storeLoadOptions) {\r\n e.storeLoadOptions.skip += this._correctionIndex\r\n }\r\n }, this._dataSource && this._dataSource.on(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions)\r\n },\r\n reload: function() {\r\n this._correctionIndex = 0\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._refreshItemsCache();\r\n this._correctionIndex = 0\r\n },\r\n _findItemElementByKey: function(key) {\r\n var result = $();\r\n var keyExpr = this.key();\r\n this.itemElements().each((_, item) => {\r\n var $item = $(item);\r\n var itemData = this._getItemData($item);\r\n if (keyExpr ? dataUtils.keysEqual(keyExpr, this.keyOf(itemData), key) : this._isItemEquals(itemData, key)) {\r\n result = $item;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n _dataSourceChangedHandler: function(newItems, e) {\r\n if (null !== e && void 0 !== e && e.changes) {\r\n this._modifyByChanges(e.changes)\r\n } else {\r\n this.callBase(newItems, e);\r\n this._refreshItemsCache()\r\n }\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (item1 && item1[PRIVATE_KEY_FIELD]) {\r\n item1 = item1.data\r\n }\r\n try {\r\n return JSON.stringify(item1) === JSON.stringify(item2)\r\n } catch (e) {\r\n return item1 === item2\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n return this._isItemEquals(item1, item2)\r\n },\r\n _shouldAddNewGroup: function(changes, items) {\r\n var result = false;\r\n if (this.option(\"grouped\")) {\r\n each(changes, (i, change) => {\r\n if (\"insert\" === change.type) {\r\n result = true;\r\n each(items, (_, item) => {\r\n if (change.data.key === item.key) {\r\n result = false;\r\n return false\r\n }\r\n })\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n _partialRefresh: function() {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var result = findChanges(this._itemsCache, this._editStrategy.itemsGetter(), data => {\r\n if (data && void 0 !== data[PRIVATE_KEY_FIELD]) {\r\n return data[PRIVATE_KEY_FIELD]\r\n }\r\n return this.keyOf(data)\r\n }, this._isItemStrictEquals.bind(this));\r\n if (result && this._itemsCache.length && !this._shouldAddNewGroup(result, this._itemsCache)) {\r\n this._modifyByChanges(result, true);\r\n this._renderEmptyMessage();\r\n return true\r\n } else {\r\n this._refreshItemsCache()\r\n }\r\n }\r\n return false\r\n },\r\n _refreshItemsCache: function() {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var items = this._editStrategy.itemsGetter();\r\n try {\r\n this._itemsCache = extend(true, [], items);\r\n if (!this.key()) {\r\n this._itemsCache = this._itemsCache.map((itemCache, index) => ({\r\n [PRIVATE_KEY_FIELD]: items[index],\r\n data: itemCache\r\n }))\r\n }\r\n } catch (e) {\r\n this._itemsCache = extend([], items)\r\n }\r\n }\r\n },\r\n _dispose: function() {\r\n this._dataSource && this._dataSource.off(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions);\r\n this.callBase()\r\n },\r\n _updateByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n if (isPartialRefresh) {\r\n this._renderItem(change.index, change.data, null, this._findItemElementByKey(change.key))\r\n } else {\r\n var changedItem = items[indexByKey(keyInfo, items, change.key)];\r\n if (changedItem) {\r\n update(keyInfo, items, change.key, change.data).done(() => {\r\n this._renderItem(items.indexOf(changedItem), changedItem, null, this._findItemElementByKey(change.key))\r\n })\r\n }\r\n }\r\n },\r\n _insertByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n when(isPartialRefresh || insert(keyInfo, items, change.data, change.index)).done(() => {\r\n var _change$index;\r\n this._beforeItemElementInserted(change);\r\n var $itemContainer = this._getItemContainer(change.data);\r\n this._renderItem(null !== (_change$index = change.index) && void 0 !== _change$index ? _change$index : items.length, change.data, $itemContainer);\r\n this._afterItemElementInserted();\r\n this._correctionIndex++\r\n })\r\n },\r\n _getItemContainer: function(changeData) {\r\n return this._itemContainer()\r\n },\r\n _updateSelectionAfterRemoveByChange: function(removeIndex) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (selectedIndex > removeIndex) {\r\n this.option(\"selectedIndex\", selectedIndex - 1)\r\n } else if (selectedIndex === removeIndex && 1 === this.option(\"selectedItems\").length) {\r\n this.option(\"selectedItems\", [])\r\n } else {\r\n this._normalizeSelectedItems()\r\n }\r\n },\r\n _beforeItemElementInserted: function(change) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (change.index <= selectedIndex) {\r\n this.option(\"selectedIndex\", selectedIndex + 1)\r\n }\r\n },\r\n _afterItemElementInserted: noop,\r\n _removeByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n var index = isPartialRefresh ? change.index : indexByKey(keyInfo, items, change.key);\r\n var removedItem = isPartialRefresh ? change.oldItem : items[index];\r\n if (removedItem) {\r\n var $removedItemElement = this._findItemElementByKey(change.key);\r\n var deletedActionArgs = this._extendActionArgs($removedItemElement);\r\n this._waitDeletingPrepare($removedItemElement).done(() => {\r\n if (isPartialRefresh) {\r\n this._updateIndicesAfterIndex(index - 1);\r\n this._afterItemElementDeleted($removedItemElement, deletedActionArgs);\r\n this._updateSelectionAfterRemoveByChange(index)\r\n } else {\r\n this._deleteItemElementByIndex(index);\r\n this._afterItemElementDeleted($removedItemElement, deletedActionArgs)\r\n }\r\n });\r\n this._correctionIndex--\r\n }\r\n },\r\n _modifyByChanges: function(changes, isPartialRefresh) {\r\n var items = this._editStrategy.itemsGetter();\r\n var keyInfo = {\r\n key: this.key.bind(this),\r\n keyOf: this.keyOf.bind(this)\r\n };\r\n var dataSource = this._dataSource;\r\n var paginate = dataSource && dataSource.paginate();\r\n var group = dataSource && dataSource.group();\r\n if (paginate || group) {\r\n changes = changes.filter(item => \"insert\" !== item.type || void 0 !== item.index)\r\n }\r\n changes.forEach(change => this[\"_\".concat(change.type, \"ByChange\")](keyInfo, items, change, isPartialRefresh));\r\n this._renderedItemsCount = items.length;\r\n this._refreshItemsCache();\r\n this._fireContentReadyAction()\r\n },\r\n _appendItemToContainer: function($container, $itemFrame, index) {\r\n var nextSiblingElement = $container.children(this._itemSelector()).get(index);\r\n domAdapter.insertElement($container.get(0), $itemFrame.get(0), nextSiblingElement)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n var isItemsUpdated = this._partialRefresh(args.value);\r\n if (!isItemsUpdated) {\r\n this.callBase(args)\r\n }\r\n break;\r\n case \"dataSource\":\r\n if (!this.option(\"repaintChangesOnly\") || !args.value) {\r\n this.option(\"items\", [])\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"repaintChangesOnly\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/selection_filter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash,\r\n equalByValue\r\n} from \"./common\";\r\nimport {\r\n isString,\r\n isObject\r\n} from \"./type\";\r\nexport var SelectionFilterCreator = function(selectedItemKeys, isSelectAll) {\r\n this.getLocalFilter = function(keyGetter, equalKeys, equalByReference, keyExpr) {\r\n equalKeys = void 0 === equalKeys ? equalByValue : equalKeys;\r\n return functionFilter.bind(this, equalKeys, keyGetter, equalByReference, keyExpr)\r\n };\r\n this.getExpr = function(keyExpr) {\r\n if (!keyExpr) {\r\n return\r\n }\r\n var filterExpr;\r\n selectedItemKeys.forEach((function(key, index) {\r\n filterExpr = filterExpr || [];\r\n var filterExprPart;\r\n if (index > 0) {\r\n filterExpr.push(isSelectAll ? \"and\" : \"or\")\r\n }\r\n if (isString(keyExpr)) {\r\n filterExprPart = getFilterForPlainKey(keyExpr, key)\r\n } else {\r\n filterExprPart = function(keyExpr, itemKeyValue) {\r\n var filterExpr = [];\r\n for (var i = 0, length = keyExpr.length; i < length; i++) {\r\n var currentKeyExpr = keyExpr[i];\r\n var currentKeyValue = itemKeyValue && itemKeyValue[currentKeyExpr];\r\n var filterExprPart = getFilterForPlainKey(currentKeyExpr, currentKeyValue);\r\n if (!filterExprPart) {\r\n break\r\n }\r\n if (i > 0) {\r\n filterExpr.push(isSelectAll ? \"or\" : \"and\")\r\n }\r\n filterExpr.push(filterExprPart)\r\n }\r\n return filterExpr\r\n }(keyExpr, key)\r\n }\r\n filterExpr.push(filterExprPart)\r\n }));\r\n if (filterExpr && 1 === filterExpr.length) {\r\n filterExpr = filterExpr[0]\r\n }\r\n return filterExpr\r\n };\r\n this.getCombinedFilter = function(keyExpr, dataSourceFilter) {\r\n var filterExpr = this.getExpr(keyExpr);\r\n var combinedFilter = filterExpr;\r\n if (isSelectAll && dataSourceFilter) {\r\n if (filterExpr) {\r\n combinedFilter = [];\r\n combinedFilter.push(filterExpr);\r\n combinedFilter.push(dataSourceFilter)\r\n } else {\r\n combinedFilter = dataSourceFilter\r\n }\r\n }\r\n return combinedFilter\r\n };\r\n var selectedItemKeyHashesMap;\r\n\r\n function functionFilter(equalKeys, keyOf, equalByReference, keyExpr, item) {\r\n var key = keyOf(item);\r\n var keyHash;\r\n var i;\r\n if (!equalByReference) {\r\n keyHash = getKeyHash(key);\r\n if (!isObject(keyHash)) {\r\n var selectedKeyHashesMap = function(selectedItemKeys) {\r\n if (!selectedItemKeyHashesMap) {\r\n selectedItemKeyHashesMap = {};\r\n for (var i = 0; i < selectedItemKeys.length; i++) {\r\n selectedItemKeyHashesMap[getKeyHash(selectedItemKeys[i])] = true\r\n }\r\n }\r\n return selectedItemKeyHashesMap\r\n }(function(keys, keyOf, keyExpr) {\r\n return Array.isArray(keyExpr) ? keys.map(key => keyOf(key)) : keys\r\n }(selectedItemKeys, keyOf, keyExpr));\r\n if (selectedKeyHashesMap[keyHash]) {\r\n return !isSelectAll\r\n }\r\n return !!isSelectAll\r\n }\r\n }\r\n for (i = 0; i < selectedItemKeys.length; i++) {\r\n if (equalKeys(selectedItemKeys[i], key)) {\r\n return !isSelectAll\r\n }\r\n }\r\n return !!isSelectAll\r\n }\r\n\r\n function getFilterForPlainKey(keyExpr, keyValue) {\r\n if (void 0 === keyValue) {\r\n return\r\n }\r\n return [keyExpr, isSelectAll ? \"<>\" : \"=\", keyValue]\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.strategy.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isRenderer\r\n} from \"../../core/utils/type\";\r\nvar abstract = Class.abstract;\r\nvar EditStrategy = Class.inherit({\r\n ctor: function(collectionWidget) {\r\n this._collectionWidget = collectionWidget\r\n },\r\n getIndexByItemData: abstract,\r\n getItemDataByIndex: abstract,\r\n getKeysByItems: abstract,\r\n getItemsByKeys: abstract,\r\n itemsGetter: abstract,\r\n getKeyByIndex: function(index) {\r\n var resultIndex = this._denormalizeItemIndex(index);\r\n return this.getKeysByItems([this.getItemDataByIndex(resultIndex)])[0]\r\n },\r\n _equalKeys: function(key1, key2) {\r\n if (this._collectionWidget._isKeySpecified()) {\r\n return equalByValue(key1, key2)\r\n } else {\r\n return key1 === key2\r\n }\r\n },\r\n beginCache: function() {\r\n this._cache = {}\r\n },\r\n endCache: function() {\r\n this._cache = null\r\n },\r\n getIndexByKey: abstract,\r\n getNormalizedIndex: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return value\r\n }\r\n if (this._isItemIndex(value)) {\r\n return this._normalizeItemIndex(value)\r\n }\r\n if (this._isNode(value)) {\r\n return this._getNormalizedItemIndex(value)\r\n }\r\n return this._normalizeItemIndex(this.getIndexByItemData(value))\r\n },\r\n getIndex: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return this._denormalizeItemIndex(value)\r\n }\r\n if (this._isItemIndex(value)) {\r\n return value\r\n }\r\n if (this._isNode(value)) {\r\n return this._denormalizeItemIndex(this._getNormalizedItemIndex(value))\r\n }\r\n return this.getIndexByItemData(value)\r\n },\r\n getItemElement: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return this._getItemByNormalizedIndex(value)\r\n }\r\n if (this._isItemIndex(value)) {\r\n return this._getItemByNormalizedIndex(this._normalizeItemIndex(value))\r\n }\r\n if (this._isNode(value)) {\r\n return $(value)\r\n }\r\n var normalizedItemIndex = this._normalizeItemIndex(this.getIndexByItemData(value));\r\n return this._getItemByNormalizedIndex(normalizedItemIndex)\r\n },\r\n _isNode: el => domAdapter.isNode(el && isRenderer(el) ? el.get(0) : el),\r\n deleteItemAtIndex: abstract,\r\n itemPlacementFunc: function(movingIndex, destinationIndex) {\r\n return this._itemsFromSameParent(movingIndex, destinationIndex) && movingIndex < destinationIndex ? \"after\" : \"before\"\r\n },\r\n moveItemAtIndexToIndex: abstract,\r\n _isNormalizedItemIndex: function(index) {\r\n return \"number\" === typeof index && Math.round(index) === index\r\n },\r\n _isItemIndex: abstract,\r\n _getNormalizedItemIndex: abstract,\r\n _normalizeItemIndex: abstract,\r\n _denormalizeItemIndex: abstract,\r\n _getItemByNormalizedIndex: abstract,\r\n _itemsFromSameParent: abstract\r\n});\r\nexport default EditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.strategy.plain.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport EditStrategy from \"./ui.collection_widget.edit.strategy\";\r\nvar PlainEditStrategy = EditStrategy.inherit({\r\n _getPlainItems: function() {\r\n return this._collectionWidget.option(\"items\") || []\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n if (keyOf) {\r\n return this.getIndexByKey(keyOf(itemData))\r\n } else {\r\n return inArray(itemData, this._getPlainItems())\r\n }\r\n },\r\n getItemDataByIndex: function(index) {\r\n return this._getPlainItems()[index]\r\n },\r\n deleteItemAtIndex: function(index) {\r\n this._getPlainItems().splice(index, 1)\r\n },\r\n itemsGetter: function() {\r\n return this._getPlainItems()\r\n },\r\n getKeysByItems: function(items) {\r\n var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n var result = items;\r\n if (keyOf) {\r\n result = [];\r\n for (var i = 0; i < items.length; i++) {\r\n result.push(keyOf(items[i]))\r\n }\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key) {\r\n var cache = this._cache;\r\n var keys = cache && cache.keys || this.getKeysByItems(this._getPlainItems());\r\n if (cache && !cache.keys) {\r\n cache.keys = keys\r\n }\r\n if (\"object\" === typeof key) {\r\n for (var i = 0, length = keys.length; i < length; i++) {\r\n if (this._equalKeys(key, keys[i])) {\r\n return i\r\n }\r\n }\r\n } else {\r\n return keys.indexOf(key)\r\n }\r\n return -1\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n return (items || keys).slice()\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._getPlainItems();\r\n var movedItemData = items[movingIndex];\r\n items.splice(movingIndex, 1);\r\n items.splice(destinationIndex, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return \"number\" === typeof index && Math.round(index) === index\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n return this._collectionWidget._itemElements().index(itemElement)\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return index\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return index\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n return index > -1 ? this._collectionWidget._itemElements().eq(index) : null\r\n },\r\n _itemsFromSameParent: function() {\r\n return true\r\n }\r\n});\r\nexport default PlainEditStrategy;\r\n","/**\r\n * DevExtreme (esm/events/core/emitter_registrator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport registerEvent from \"./event_registrator\";\r\nimport {\r\n addNamespace,\r\n isMouseEvent\r\n} from \"../utils/index\";\r\nimport pointerEvents from \"../pointer\";\r\nimport {\r\n name as wheelEventName\r\n} from \"./wheel\";\r\nvar MANAGER_EVENT = \"dxEventManager\";\r\nvar EMITTER_DATA = \"dxEmitter\";\r\nvar EventManager = Class.inherit({\r\n ctor: function() {\r\n this._attachHandlers();\r\n this.reset();\r\n this._proxiedCancelHandler = this._cancelHandler.bind(this);\r\n this._proxiedAcceptHandler = this._acceptHandler.bind(this)\r\n },\r\n _attachHandlers: function() {\r\n readyCallbacks.add(function() {\r\n var document = domAdapter.getDocument();\r\n eventsEngine.subscribeGlobal(document, addNamespace(pointerEvents.down, MANAGER_EVENT), this._pointerDownHandler.bind(this));\r\n eventsEngine.subscribeGlobal(document, addNamespace(pointerEvents.move, MANAGER_EVENT), this._pointerMoveHandler.bind(this));\r\n eventsEngine.subscribeGlobal(document, addNamespace([pointerEvents.up, pointerEvents.cancel].join(\" \"), MANAGER_EVENT), this._pointerUpHandler.bind(this));\r\n eventsEngine.subscribeGlobal(document, addNamespace(wheelEventName, MANAGER_EVENT), this._mouseWheelHandler.bind(this))\r\n }.bind(this))\r\n },\r\n _eachEmitter: function(callback) {\r\n var activeEmitters = this._activeEmitters || [];\r\n var i = 0;\r\n while (activeEmitters.length > i) {\r\n var emitter = activeEmitters[i];\r\n if (false === callback(emitter)) {\r\n break\r\n }\r\n if (activeEmitters[i] === emitter) {\r\n i++\r\n }\r\n }\r\n },\r\n _applyToEmitters: function(method, arg) {\r\n this._eachEmitter((function(emitter) {\r\n emitter[method].call(emitter, arg)\r\n }))\r\n },\r\n reset: function() {\r\n this._eachEmitter(this._proxiedCancelHandler);\r\n this._activeEmitters = []\r\n },\r\n resetEmitter: function(emitter) {\r\n this._proxiedCancelHandler(emitter)\r\n },\r\n _pointerDownHandler: function(e) {\r\n if (isMouseEvent(e) && e.which > 1) {\r\n return\r\n }\r\n this._updateEmitters(e)\r\n },\r\n _updateEmitters: function(e) {\r\n if (!this._isSetChanged(e)) {\r\n return\r\n }\r\n this._cleanEmitters(e);\r\n this._fetchEmitters(e)\r\n },\r\n _isSetChanged: function(e) {\r\n var currentSet = this._closestEmitter(e);\r\n var previousSet = this._emittersSet || [];\r\n var setChanged = currentSet.length !== previousSet.length;\r\n each(currentSet, (function(index, emitter) {\r\n setChanged = setChanged || previousSet[index] !== emitter;\r\n return !setChanged\r\n }));\r\n this._emittersSet = currentSet;\r\n return setChanged\r\n },\r\n _closestEmitter: function(e) {\r\n var that = this;\r\n var result = [];\r\n var $element = $(e.target);\r\n\r\n function handleEmitter(_, emitter) {\r\n if (!!emitter && emitter.validatePointers(e) && emitter.validate(e)) {\r\n emitter.addCancelCallback(that._proxiedCancelHandler);\r\n emitter.addAcceptCallback(that._proxiedAcceptHandler);\r\n result.push(emitter)\r\n }\r\n }\r\n while ($element.length) {\r\n var emitters = elementData($element.get(0), EMITTER_DATA) || [];\r\n each(emitters, handleEmitter);\r\n $element = $element.parent()\r\n }\r\n return result\r\n },\r\n _acceptHandler: function(acceptedEmitter, e) {\r\n var that = this;\r\n this._eachEmitter((function(emitter) {\r\n if (emitter !== acceptedEmitter) {\r\n that._cancelEmitter(emitter, e)\r\n }\r\n }))\r\n },\r\n _cancelHandler: function(canceledEmitter, e) {\r\n this._cancelEmitter(canceledEmitter, e)\r\n },\r\n _cancelEmitter: function(emitter, e) {\r\n var activeEmitters = this._activeEmitters;\r\n if (e) {\r\n emitter.cancel(e)\r\n } else {\r\n emitter.reset()\r\n }\r\n emitter.removeCancelCallback();\r\n emitter.removeAcceptCallback();\r\n var emitterIndex = inArray(emitter, activeEmitters);\r\n if (emitterIndex > -1) {\r\n activeEmitters.splice(emitterIndex, 1)\r\n }\r\n },\r\n _cleanEmitters: function(e) {\r\n this._applyToEmitters(\"end\", e);\r\n this.reset(e)\r\n },\r\n _fetchEmitters: function(e) {\r\n this._activeEmitters = this._emittersSet.slice();\r\n this._applyToEmitters(\"start\", e)\r\n },\r\n _pointerMoveHandler: function(e) {\r\n this._applyToEmitters(\"move\", e)\r\n },\r\n _pointerUpHandler: function(e) {\r\n this._updateEmitters(e)\r\n },\r\n _mouseWheelHandler: function(e) {\r\n if (!this._allowInterruptionByMouseWheel()) {\r\n return\r\n }\r\n e.pointers = [null];\r\n this._pointerDownHandler(e);\r\n this._adjustWheelEvent(e);\r\n this._pointerMoveHandler(e);\r\n e.pointers = [];\r\n this._pointerUpHandler(e)\r\n },\r\n _allowInterruptionByMouseWheel: function() {\r\n var allowInterruption = true;\r\n this._eachEmitter((function(emitter) {\r\n allowInterruption = emitter.allowInterruptionByMouseWheel() && allowInterruption;\r\n return allowInterruption\r\n }));\r\n return allowInterruption\r\n },\r\n _adjustWheelEvent: function(e) {\r\n var closestGestureEmitter = null;\r\n this._eachEmitter((function(emitter) {\r\n if (!emitter.gesture) {\r\n return\r\n }\r\n var direction = emitter.getDirection(e);\r\n if (\"horizontal\" !== direction && !e.shiftKey || \"vertical\" !== direction && e.shiftKey) {\r\n closestGestureEmitter = emitter;\r\n return false\r\n }\r\n }));\r\n if (!closestGestureEmitter) {\r\n return\r\n }\r\n var direction = closestGestureEmitter.getDirection(e);\r\n var verticalGestureDirection = \"both\" === direction && !e.shiftKey || \"vertical\" === direction;\r\n var prop = verticalGestureDirection ? \"pageY\" : \"pageX\";\r\n e[prop] += e.delta\r\n },\r\n isActive: function(element) {\r\n var result = false;\r\n this._eachEmitter((function(emitter) {\r\n result = result || emitter.getElement().is(element)\r\n }));\r\n return result\r\n }\r\n});\r\nvar eventManager = new EventManager;\r\nvar EMITTER_SUBSCRIPTION_DATA = \"dxEmitterSubscription\";\r\nvar registerEmitter = function(emitterConfig) {\r\n var emitterClass = emitterConfig.emitter;\r\n var emitterName = emitterConfig.events[0];\r\n var emitterEvents = emitterConfig.events;\r\n each(emitterEvents, (function(_, eventName) {\r\n registerEvent(eventName, {\r\n noBubble: !emitterConfig.bubble,\r\n setup: function(element) {\r\n var subscriptions = elementData(element, EMITTER_SUBSCRIPTION_DATA) || {};\r\n var emitters = elementData(element, EMITTER_DATA) || {};\r\n var emitter = emitters[emitterName] || new emitterClass(element);\r\n subscriptions[eventName] = true;\r\n emitters[emitterName] = emitter;\r\n elementData(element, EMITTER_DATA, emitters);\r\n elementData(element, EMITTER_SUBSCRIPTION_DATA, subscriptions)\r\n },\r\n add: function(element, handleObj) {\r\n var emitters = elementData(element, EMITTER_DATA);\r\n var emitter = emitters[emitterName];\r\n emitter.configure(extend({\r\n delegateSelector: handleObj.selector\r\n }, handleObj.data), handleObj.type)\r\n },\r\n teardown: function(element) {\r\n var subscriptions = elementData(element, EMITTER_SUBSCRIPTION_DATA);\r\n var emitters = elementData(element, EMITTER_DATA);\r\n var emitter = emitters[emitterName];\r\n delete subscriptions[eventName];\r\n var disposeEmitter = true;\r\n each(emitterEvents, (function(_, eventName) {\r\n disposeEmitter = disposeEmitter && !subscriptions[eventName];\r\n return disposeEmitter\r\n }));\r\n if (disposeEmitter) {\r\n if (eventManager.isActive(element)) {\r\n eventManager.resetEmitter(emitter)\r\n }\r\n emitter && emitter.dispose();\r\n delete emitters[emitterName]\r\n }\r\n }\r\n })\r\n }))\r\n};\r\nexport default registerEmitter;\r\n","/**\r\n * DevExtreme (esm/core/utils/window.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nvar hasWindowValue = \"undefined\" !== typeof window;\r\nvar hasWindow = () => hasWindowValue;\r\nvar windowObject = hasWindow() ? window : void 0;\r\nif (!windowObject) {\r\n windowObject = {};\r\n windowObject.window = windowObject\r\n}\r\nvar getWindow = () => windowObject;\r\nvar setWindow = (newWindowObject, hasWindow) => {\r\n if (void 0 === hasWindow) {\r\n hasWindowValue = \"undefined\" !== typeof window && window === newWindowObject\r\n } else {\r\n hasWindowValue = hasWindow\r\n }\r\n windowObject = newWindowObject\r\n};\r\nvar hasProperty = prop => hasWindow() && prop in windowObject;\r\nvar defaultScreenFactorFunc = width => {\r\n if (width < 768) {\r\n return \"xs\"\r\n } else if (width < 992) {\r\n return \"sm\"\r\n } else if (width < 1200) {\r\n return \"md\"\r\n } else {\r\n return \"lg\"\r\n }\r\n};\r\nvar getCurrentScreenFactor = screenFactorCallback => {\r\n var screenFactorFunc = screenFactorCallback || defaultScreenFactorFunc;\r\n var windowWidth = domAdapter.getDocumentElement().clientWidth;\r\n return screenFactorFunc(windowWidth)\r\n};\r\nvar getNavigator = () => hasWindow() ? windowObject.navigator : {\r\n userAgent: \"\"\r\n};\r\nexport {\r\n hasWindow,\r\n getWindow,\r\n setWindow,\r\n hasProperty,\r\n defaultScreenFactorFunc,\r\n getCurrentScreenFactor,\r\n getNavigator\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/text_box/utils.caret.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport devices from \"../../core/devices\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nvar {\r\n ios: ios,\r\n mac: mac\r\n} = devices.real();\r\nvar isFocusingOnCaretChange = browser.msie || ios || mac;\r\nvar getCaret = function(input) {\r\n var range;\r\n try {\r\n range = {\r\n start: input.selectionStart,\r\n end: input.selectionEnd\r\n }\r\n } catch (e) {\r\n range = {\r\n start: 0,\r\n end: 0\r\n }\r\n }\r\n return range\r\n};\r\nvar setCaret = function(input, position) {\r\n if (!domAdapter.getBody().contains(input)) {\r\n return\r\n }\r\n try {\r\n input.selectionStart = position.start;\r\n input.selectionEnd = position.end\r\n } catch (e) {}\r\n};\r\nvar caret = function(input, position) {\r\n var force = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n input = $(input).get(0);\r\n if (!isDefined(position)) {\r\n return getCaret(input)\r\n }\r\n if (!force && isFocusingOnCaretChange && domAdapter.getActiveElement() !== input) {\r\n return\r\n }\r\n setCaret(input, position)\r\n};\r\nexport default caret;\r\n","/**\r\n * DevExtreme (esm/events/core/event_registrator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport callbacks from \"./event_registrator_callbacks\";\r\nvar registerEvent = function(name, eventObject) {\r\n var strategy = {};\r\n if (\"noBubble\" in eventObject) {\r\n strategy.noBubble = eventObject.noBubble\r\n }\r\n if (\"bindType\" in eventObject) {\r\n strategy.bindType = eventObject.bindType\r\n }\r\n if (\"delegateType\" in eventObject) {\r\n strategy.delegateType = eventObject.delegateType\r\n }\r\n each([\"setup\", \"teardown\", \"add\", \"remove\", \"trigger\", \"handle\", \"_default\", \"dispose\"], (function(_, methodName) {\r\n if (!eventObject[methodName]) {\r\n return\r\n }\r\n strategy[methodName] = function() {\r\n var args = [].slice.call(arguments);\r\n args.unshift(this);\r\n return eventObject[methodName].apply(eventObject, args)\r\n }\r\n }));\r\n callbacks.fire(name, strategy)\r\n};\r\nregisterEvent.callbacks = callbacks;\r\nexport default registerEvent;\r\n","/**\r\n * DevExtreme (esm/core/templates/template_base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport domAdapter from \"../dom_adapter\";\r\nimport Callbacks from \"../utils/callbacks\";\r\nimport {\r\n contains\r\n} from \"../utils/dom\";\r\nimport {\r\n triggerShownEvent\r\n} from \"../../events/visibility_change\";\r\nimport errors from \"../errors\";\r\nexport var renderedCallbacks = Callbacks({\r\n syncStrategy: true\r\n});\r\nexport class TemplateBase {\r\n render(options) {\r\n options = options || {};\r\n var onRendered = options.onRendered;\r\n delete options.onRendered;\r\n var $result = this._renderCore(options);\r\n this._ensureResultInContainer($result, options.container);\r\n renderedCallbacks.fire($result, options.container);\r\n onRendered && onRendered();\r\n return $result\r\n }\r\n _ensureResultInContainer($result, container) {\r\n if (!container) {\r\n return\r\n }\r\n var $container = $(container);\r\n var resultInContainer = contains($container.get(0), $result.get(0));\r\n $container.append($result);\r\n if (resultInContainer) {\r\n return\r\n }\r\n var resultInBody = domAdapter.getBody().contains($container.get(0));\r\n if (!resultInBody) {\r\n return\r\n }\r\n triggerShownEvent($result)\r\n }\r\n _renderCore() {\r\n throw errors.Error(\"E0001\")\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/animation/easing.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nvar CSS_TRANSITION_EASING_REGEX = /cubic-bezier\\((\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\)/;\r\nvar TransitionTimingFuncMap = {\r\n linear: \"cubic-bezier(0, 0, 1, 1)\",\r\n swing: \"cubic-bezier(0.445, 0.05, 0.55, 0.95)\",\r\n ease: \"cubic-bezier(0.25, 0.1, 0.25, 1)\",\r\n \"ease-in\": \"cubic-bezier(0.42, 0, 1, 1)\",\r\n \"ease-out\": \"cubic-bezier(0, 0, 0.58, 1)\",\r\n \"ease-in-out\": \"cubic-bezier(0.42, 0, 0.58, 1)\"\r\n};\r\nvar polynomBezier = function(x1, y1, x2, y2) {\r\n var Cx = 3 * x1;\r\n var Bx = 3 * (x2 - x1) - Cx;\r\n var Ax = 1 - Cx - Bx;\r\n var Cy = 3 * y1;\r\n var By = 3 * (y2 - y1) - Cy;\r\n var Ay = 1 - Cy - By;\r\n var bezierX = function(t) {\r\n return t * (Cx + t * (Bx + t * Ax))\r\n };\r\n var derivativeX = function(t) {\r\n return Cx + t * (2 * Bx + 3 * t * Ax)\r\n };\r\n return function(t) {\r\n return function(t) {\r\n return t * (Cy + t * (By + t * Ay))\r\n }(function(t) {\r\n var x = t;\r\n var i = 0;\r\n var z;\r\n while (i < 14) {\r\n z = bezierX(x) - t;\r\n if (Math.abs(z) < .001) {\r\n break\r\n }\r\n x -= z / derivativeX(x);\r\n i++\r\n }\r\n return x\r\n }(t))\r\n }\r\n};\r\nvar easing = {};\r\nexport var convertTransitionTimingFuncToEasing = function(cssTransitionEasing) {\r\n cssTransitionEasing = TransitionTimingFuncMap[cssTransitionEasing] || cssTransitionEasing;\r\n var coeffs = cssTransitionEasing.match(CSS_TRANSITION_EASING_REGEX);\r\n var forceName;\r\n if (!coeffs) {\r\n forceName = \"linear\";\r\n coeffs = TransitionTimingFuncMap[forceName].match(CSS_TRANSITION_EASING_REGEX)\r\n }\r\n coeffs = coeffs.slice(1, 5);\r\n for (var i = 0; i < coeffs.length; i++) {\r\n coeffs[i] = parseFloat(coeffs[i])\r\n }\r\n var easingName = forceName || \"cubicbezier_\" + coeffs.join(\"_\").replace(/\\./g, \"p\");\r\n if (!isFunction(easing[easingName])) {\r\n easing[easingName] = function(x, t, b, c, d) {\r\n return c * polynomBezier(coeffs[0], coeffs[1], coeffs[2], coeffs[3])(t / d) + b\r\n }\r\n }\r\n return easingName\r\n};\r\nexport function setEasing(value) {\r\n easing = value\r\n}\r\nexport function getEasing(name) {\r\n return easing[name]\r\n}\r\n","/**\r\n * DevExtreme (esm/animation/fx.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isFunction,\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getTranslateCss,\r\n parseTranslate,\r\n clearCache,\r\n locate,\r\n getTranslate\r\n} from \"./translator\";\r\nimport {\r\n convertTransitionTimingFuncToEasing,\r\n getEasing\r\n} from \"./easing\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"./frame\";\r\nimport {\r\n transitionEndEventName,\r\n transition\r\n} from \"../core/utils/support\";\r\nimport positionUtils from \"./position\";\r\nimport {\r\n removeEvent\r\n} from \"../core/remove_event\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar removeEventName = addNamespace(removeEvent, \"dxFX\");\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nvar RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i;\r\nvar ANIM_DATA_KEY = \"dxAnimData\";\r\nvar ANIM_QUEUE_KEY = \"dxAnimQueue\";\r\nvar TRANSFORM_PROP = \"transform\";\r\nvar TransitionAnimationStrategy = {\r\n initAnimation: function($element, config) {\r\n $element.css({\r\n transitionProperty: \"none\"\r\n });\r\n if (\"string\" === typeof config.from) {\r\n $element.addClass(config.from)\r\n } else {\r\n setProps($element, config.from)\r\n }\r\n var that = this;\r\n var deferred = new Deferred;\r\n var cleanupWhen = config.cleanupWhen;\r\n config.transitionAnimation = {\r\n deferred: deferred,\r\n finish: function() {\r\n that._finishTransition($element);\r\n if (cleanupWhen) {\r\n when(deferred, cleanupWhen).always((function() {\r\n that._cleanup($element, config)\r\n }))\r\n } else {\r\n that._cleanup($element, config)\r\n }\r\n deferred.resolveWith($element, [config, $element])\r\n }\r\n };\r\n this._completeAnimationCallback($element, config).done((function() {\r\n config.transitionAnimation.finish()\r\n })).fail((function() {\r\n deferred.rejectWith($element, [config, $element])\r\n }));\r\n if (!config.duration) {\r\n config.transitionAnimation.finish()\r\n }\r\n $element.css(\"transform\")\r\n },\r\n animate: function($element, config) {\r\n this._startAnimation($element, config);\r\n return config.transitionAnimation.deferred.promise()\r\n },\r\n _completeAnimationCallback: function($element, config) {\r\n var that = this;\r\n var startTime = Date.now() + config.delay;\r\n var deferred = new Deferred;\r\n var transitionEndFired = new Deferred;\r\n var simulatedTransitionEndFired = new Deferred;\r\n var simulatedEndEventTimer;\r\n var transitionEndEventFullName = transitionEndEventName() + \".dxFX\";\r\n config.transitionAnimation.cleanup = function() {\r\n clearTimeout(simulatedEndEventTimer);\r\n clearTimeout(waitForJSCompleteTimer);\r\n eventsEngine.off($element, transitionEndEventFullName);\r\n eventsEngine.off($element, removeEventName)\r\n };\r\n eventsEngine.one($element, transitionEndEventFullName, (function() {\r\n if (Date.now() - startTime >= config.duration) {\r\n transitionEndFired.reject()\r\n }\r\n }));\r\n eventsEngine.off($element, removeEventName);\r\n eventsEngine.on($element, removeEventName, (function() {\r\n that.stop($element, config);\r\n deferred.reject()\r\n }));\r\n var waitForJSCompleteTimer = setTimeout((function() {\r\n simulatedEndEventTimer = setTimeout((function() {\r\n simulatedTransitionEndFired.reject()\r\n }), config.duration + config.delay + fx._simulatedTransitionEndDelay);\r\n when(transitionEndFired, simulatedTransitionEndFired).fail(function() {\r\n deferred.resolve()\r\n }.bind(this))\r\n }));\r\n return deferred.promise()\r\n },\r\n _startAnimation: function($element, config) {\r\n $element.css({\r\n transitionProperty: \"all\",\r\n transitionDelay: config.delay + \"ms\",\r\n transitionDuration: config.duration + \"ms\",\r\n transitionTimingFunction: config.easing\r\n });\r\n if (\"string\" === typeof config.to) {\r\n $element[0].className += \" \" + config.to\r\n } else if (config.to) {\r\n setProps($element, config.to)\r\n }\r\n },\r\n _finishTransition: function($element) {\r\n $element.css(\"transition\", \"none\")\r\n },\r\n _cleanup: function($element, config) {\r\n config.transitionAnimation.cleanup();\r\n if (\"string\" === typeof config.from) {\r\n $element.removeClass(config.from);\r\n $element.removeClass(config.to)\r\n }\r\n },\r\n stop: function($element, config, jumpToEnd) {\r\n if (!config) {\r\n return\r\n }\r\n if (jumpToEnd) {\r\n config.transitionAnimation.finish()\r\n } else {\r\n if (isPlainObject(config.to)) {\r\n each(config.to, (function(key) {\r\n $element.css(key, $element.css(key))\r\n }))\r\n }\r\n this._finishTransition($element);\r\n this._cleanup($element, config)\r\n }\r\n }\r\n};\r\nvar FrameAnimationStrategy = {\r\n initAnimation: function($element, config) {\r\n setProps($element, config.from)\r\n },\r\n animate: function($element, config) {\r\n var deferred = new Deferred;\r\n var that = this;\r\n if (!config) {\r\n return deferred.reject().promise()\r\n }\r\n each(config.to, (function(prop) {\r\n if (void 0 === config.from[prop]) {\r\n config.from[prop] = that._normalizeValue($element.css(prop))\r\n }\r\n }));\r\n if (config.to[TRANSFORM_PROP]) {\r\n config.from[TRANSFORM_PROP] = that._parseTransform(config.from[TRANSFORM_PROP]);\r\n config.to[TRANSFORM_PROP] = that._parseTransform(config.to[TRANSFORM_PROP])\r\n }\r\n config.frameAnimation = {\r\n to: config.to,\r\n from: config.from,\r\n currentValue: config.from,\r\n easing: convertTransitionTimingFuncToEasing(config.easing),\r\n duration: config.duration,\r\n startTime: (new Date).valueOf(),\r\n finish: function() {\r\n this.currentValue = this.to;\r\n this.draw();\r\n cancelAnimationFrame(config.frameAnimation.animationFrameId);\r\n deferred.resolve()\r\n },\r\n draw: function() {\r\n if (config.draw) {\r\n config.draw(this.currentValue);\r\n return\r\n }\r\n var currentValue = extend({}, this.currentValue);\r\n if (currentValue[TRANSFORM_PROP]) {\r\n currentValue[TRANSFORM_PROP] = map(currentValue[TRANSFORM_PROP], (function(value, prop) {\r\n if (\"translate\" === prop) {\r\n return getTranslateCss(value)\r\n } else if (\"scale\" === prop) {\r\n return \"scale(\" + value + \")\"\r\n } else if (\"rotate\" === prop.substr(0, prop.length - 1)) {\r\n return prop + \"(\" + value + \"deg)\"\r\n }\r\n })).join(\" \")\r\n }\r\n $element.css(currentValue)\r\n }\r\n };\r\n if (config.delay) {\r\n config.frameAnimation.startTime += config.delay;\r\n config.frameAnimation.delayTimeout = setTimeout((function() {\r\n that._startAnimation($element, config)\r\n }), config.delay)\r\n } else {\r\n that._startAnimation($element, config)\r\n }\r\n return deferred.promise()\r\n },\r\n _startAnimation: function($element, config) {\r\n eventsEngine.off($element, removeEventName);\r\n eventsEngine.on($element, removeEventName, (function() {\r\n if (config.frameAnimation) {\r\n cancelAnimationFrame(config.frameAnimation.animationFrameId)\r\n }\r\n }));\r\n this._animationStep($element, config)\r\n },\r\n _parseTransform: function(transformString) {\r\n var result = {};\r\n each(transformString.match(/\\w+\\d*\\w*\\([^)]*\\)\\s*/g), (function(i, part) {\r\n var translateData = parseTranslate(part);\r\n var scaleData = part.match(/scale\\((.+?)\\)/);\r\n var rotateData = part.match(/(rotate.)\\((.+)deg\\)/);\r\n if (translateData) {\r\n result.translate = translateData\r\n }\r\n if (scaleData && scaleData[1]) {\r\n result.scale = parseFloat(scaleData[1])\r\n }\r\n if (rotateData && rotateData[1]) {\r\n result[rotateData[1]] = parseFloat(rotateData[2])\r\n }\r\n }));\r\n return result\r\n },\r\n stop: function($element, config, jumpToEnd) {\r\n var frameAnimation = config && config.frameAnimation;\r\n if (!frameAnimation) {\r\n return\r\n }\r\n cancelAnimationFrame(frameAnimation.animationFrameId);\r\n clearTimeout(frameAnimation.delayTimeout);\r\n if (jumpToEnd) {\r\n frameAnimation.finish()\r\n }\r\n delete config.frameAnimation\r\n },\r\n _animationStep: function($element, config) {\r\n var frameAnimation = config && config.frameAnimation;\r\n if (!frameAnimation) {\r\n return\r\n }\r\n var now = (new Date).valueOf();\r\n if (now >= frameAnimation.startTime + frameAnimation.duration) {\r\n frameAnimation.finish();\r\n return\r\n }\r\n frameAnimation.currentValue = this._calcStepValue(frameAnimation, now - frameAnimation.startTime);\r\n frameAnimation.draw();\r\n var that = this;\r\n frameAnimation.animationFrameId = requestAnimationFrame((function() {\r\n that._animationStep($element, config)\r\n }))\r\n },\r\n _calcStepValue: function(frameAnimation, currentDuration) {\r\n return function calcValueRecursively(from, to) {\r\n var result = Array.isArray(to) ? [] : {};\r\n each(to, (function(propName, endPropValue) {\r\n if (\"string\" === typeof endPropValue && false === parseFloat(endPropValue, 10)) {\r\n return true\r\n }\r\n result[propName] = \"object\" === typeof endPropValue ? calcValueRecursively(from[propName], endPropValue) : function(propName) {\r\n var x = currentDuration / frameAnimation.duration;\r\n var t = currentDuration;\r\n var b = 1 * from[propName];\r\n var c = to[propName] - from[propName];\r\n var d = frameAnimation.duration;\r\n return getEasing(frameAnimation.easing)(x, t, b, c, d)\r\n }(propName)\r\n }));\r\n return result\r\n }(frameAnimation.from, frameAnimation.to)\r\n },\r\n _normalizeValue: function(value) {\r\n var numericValue = parseFloat(value, 10);\r\n if (false === numericValue) {\r\n return value\r\n }\r\n return numericValue\r\n }\r\n};\r\nvar FallbackToNoAnimationStrategy = {\r\n initAnimation: function() {},\r\n animate: function() {\r\n return (new Deferred).resolve().promise()\r\n },\r\n stop: noop,\r\n isSynchronous: true\r\n};\r\nvar getAnimationStrategy = function(config) {\r\n config = config || {};\r\n var animationStrategies = {\r\n transition: transition() ? TransitionAnimationStrategy : FrameAnimationStrategy,\r\n frame: FrameAnimationStrategy,\r\n noAnimation: FallbackToNoAnimationStrategy\r\n };\r\n var strategy = config.strategy || \"transition\";\r\n if (\"css\" === config.type && !transition()) {\r\n strategy = \"noAnimation\"\r\n }\r\n return animationStrategies[strategy]\r\n};\r\nvar baseConfigValidator = function(config, animationType, validate, typeMessage) {\r\n each([\"from\", \"to\"], (function() {\r\n if (!validate(config[this])) {\r\n throw errors.Error(\"E0010\", animationType, this, typeMessage)\r\n }\r\n }))\r\n};\r\nvar isObjectConfigValidator = function(config, animationType) {\r\n return baseConfigValidator(config, animationType, (function(target) {\r\n return isPlainObject(target)\r\n }), \"a plain object\")\r\n};\r\nvar isStringConfigValidator = function(config, animationType) {\r\n return baseConfigValidator(config, animationType, (function(target) {\r\n return \"string\" === typeof target\r\n }), \"a string\")\r\n};\r\nvar CustomAnimationConfigurator = {\r\n setup: function() {}\r\n};\r\nvar CssAnimationConfigurator = {\r\n validateConfig: function(config) {\r\n isStringConfigValidator(config, \"css\")\r\n },\r\n setup: function() {}\r\n};\r\nvar positionAliases = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\"\r\n }\r\n};\r\nvar SlideAnimationConfigurator = {\r\n validateConfig: function(config) {\r\n isObjectConfigValidator(config, \"slide\")\r\n },\r\n setup: function($element, config) {\r\n var location = locate($element);\r\n if (\"slide\" !== config.type) {\r\n var positioningConfig = \"slideIn\" === config.type ? config.from : config.to;\r\n positioningConfig.position = extend({\r\n of: window\r\n }, positionAliases[config.direction]);\r\n setupPosition($element, positioningConfig)\r\n }\r\n this._setUpConfig(location, config.from);\r\n this._setUpConfig(location, config.to);\r\n clearCache($element)\r\n },\r\n _setUpConfig: function(location, config) {\r\n config.left = \"left\" in config ? config.left : \"+=0\";\r\n config.top = \"top\" in config ? config.top : \"+=0\";\r\n this._initNewPosition(location, config)\r\n },\r\n _initNewPosition: function(location, config) {\r\n var position = {\r\n left: config.left,\r\n top: config.top\r\n };\r\n delete config.left;\r\n delete config.top;\r\n var relativeValue = this._getRelativeValue(position.left);\r\n if (void 0 !== relativeValue) {\r\n position.left = relativeValue + location.left\r\n } else {\r\n config.left = 0\r\n }\r\n relativeValue = this._getRelativeValue(position.top);\r\n if (void 0 !== relativeValue) {\r\n position.top = relativeValue + location.top\r\n } else {\r\n config.top = 0\r\n }\r\n config[TRANSFORM_PROP] = getTranslateCss({\r\n x: position.left,\r\n y: position.top\r\n })\r\n },\r\n _getRelativeValue: function(value) {\r\n var relativeValue;\r\n if (\"string\" === typeof value && (relativeValue = RELATIVE_VALUE_REGEX.exec(value))) {\r\n return parseInt(relativeValue[1] + \"1\") * relativeValue[2]\r\n }\r\n }\r\n};\r\nvar FadeAnimationConfigurator = {\r\n setup: function($element, config) {\r\n var from = config.from;\r\n var fromOpacity = isPlainObject(from) ? config.skipElementInitialStyles ? 0 : $element.css(\"opacity\") : String(from);\r\n var toOpacity;\r\n switch (config.type) {\r\n case \"fadeIn\":\r\n toOpacity = 1;\r\n break;\r\n case \"fadeOut\":\r\n toOpacity = 0;\r\n break;\r\n default:\r\n toOpacity = String(config.to)\r\n }\r\n config.from = {\r\n visibility: \"visible\",\r\n opacity: fromOpacity\r\n };\r\n config.to = {\r\n opacity: toOpacity\r\n }\r\n }\r\n};\r\nvar PopAnimationConfigurator = {\r\n validateConfig: function(config) {\r\n isObjectConfigValidator(config, \"pop\")\r\n },\r\n setup: function($element, config) {\r\n var from = config.from;\r\n var to = config.to;\r\n var fromOpacity = \"opacity\" in from ? from.opacity : $element.css(\"opacity\");\r\n var toOpacity = \"opacity\" in to ? to.opacity : 1;\r\n var fromScale = \"scale\" in from ? from.scale : 0;\r\n var toScale = \"scale\" in to ? to.scale : 1;\r\n config.from = {\r\n opacity: fromOpacity\r\n };\r\n var translate = getTranslate($element);\r\n config.from[TRANSFORM_PROP] = this._getCssTransform(translate, fromScale);\r\n config.to = {\r\n opacity: toOpacity\r\n };\r\n config.to[TRANSFORM_PROP] = this._getCssTransform(translate, toScale)\r\n },\r\n _getCssTransform: function(translate, scale) {\r\n return getTranslateCss(translate) + \"scale(\" + scale + \")\"\r\n }\r\n};\r\nvar animationConfigurators = {\r\n custom: CustomAnimationConfigurator,\r\n slide: SlideAnimationConfigurator,\r\n slideIn: SlideAnimationConfigurator,\r\n slideOut: SlideAnimationConfigurator,\r\n fade: FadeAnimationConfigurator,\r\n fadeIn: FadeAnimationConfigurator,\r\n fadeOut: FadeAnimationConfigurator,\r\n pop: PopAnimationConfigurator,\r\n css: CssAnimationConfigurator\r\n};\r\nvar getAnimationConfigurator = function(config) {\r\n var result = animationConfigurators[config.type];\r\n if (!result) {\r\n throw errors.Error(\"E0011\", config.type)\r\n }\r\n return result\r\n};\r\nvar defaultJSConfig = {\r\n type: \"custom\",\r\n from: {},\r\n to: {},\r\n duration: 400,\r\n start: noop,\r\n complete: noop,\r\n easing: \"ease\",\r\n delay: 0\r\n};\r\nvar defaultCssConfig = {\r\n duration: 400,\r\n easing: \"ease\",\r\n delay: 0\r\n};\r\n\r\nfunction setupAnimationOnElement() {\r\n var $element = this.element;\r\n var config = this.config;\r\n setupPosition($element, config.from);\r\n setupPosition($element, config.to);\r\n this.configurator.setup($element, config);\r\n $element.data(ANIM_DATA_KEY, this);\r\n if (fx.off) {\r\n config.duration = 0;\r\n config.delay = 0\r\n }\r\n this.strategy.initAnimation($element, config);\r\n if (config.start) {\r\n var element = getPublicElement($element);\r\n config.start.apply(this, [element, config])\r\n }\r\n}\r\nvar onElementAnimationComplete = function(animation) {\r\n var $element = animation.element;\r\n var config = animation.config;\r\n $element.removeData(ANIM_DATA_KEY);\r\n if (config.complete) {\r\n var element = getPublicElement($element);\r\n config.complete.apply(this, [element, config])\r\n }\r\n animation.deferred.resolveWith(this, [$element, config])\r\n};\r\nvar startAnimationOnElement = function() {\r\n var animation = this;\r\n var $element = animation.element;\r\n var config = animation.config;\r\n animation.isStarted = true;\r\n return animation.strategy.animate($element, config).done((function() {\r\n onElementAnimationComplete(animation)\r\n })).fail((function() {\r\n animation.deferred.rejectWith(this, [$element, config])\r\n }))\r\n};\r\nvar stopAnimationOnElement = function(jumpToEnd) {\r\n var $element = this.element;\r\n var config = this.config;\r\n clearTimeout(this.startTimeout);\r\n if (!this.isStarted) {\r\n this.start()\r\n }\r\n this.strategy.stop($element, config, jumpToEnd)\r\n};\r\nvar scopedRemoveEvent = addNamespace(removeEvent, \"dxFXStartAnimation\");\r\nvar subscribeToRemoveEvent = function(animation) {\r\n eventsEngine.off(animation.element, scopedRemoveEvent);\r\n eventsEngine.on(animation.element, scopedRemoveEvent, (function() {\r\n fx.stop(animation.element)\r\n }));\r\n animation.deferred.always((function() {\r\n eventsEngine.off(animation.element, scopedRemoveEvent)\r\n }))\r\n};\r\nvar createAnimation = function(element, initialConfig) {\r\n var defaultConfig = \"css\" === initialConfig.type ? defaultCssConfig : defaultJSConfig;\r\n var config = extend(true, {}, defaultConfig, initialConfig);\r\n var configurator = getAnimationConfigurator(config);\r\n var strategy = getAnimationStrategy(config);\r\n var animation = {\r\n element: $(element),\r\n config: config,\r\n configurator: configurator,\r\n strategy: strategy,\r\n isSynchronous: strategy.isSynchronous,\r\n setup: setupAnimationOnElement,\r\n start: startAnimationOnElement,\r\n stop: stopAnimationOnElement,\r\n deferred: new Deferred\r\n };\r\n if (isFunction(configurator.validateConfig)) {\r\n configurator.validateConfig(config)\r\n }\r\n subscribeToRemoveEvent(animation);\r\n return animation\r\n};\r\nvar animate = function(element, config) {\r\n var $element = $(element);\r\n if (!$element.length) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n var animation = createAnimation($element, config);\r\n pushInAnimationQueue($element, animation);\r\n return animation.deferred.promise()\r\n};\r\n\r\nfunction pushInAnimationQueue($element, animation) {\r\n var queueData = getAnimQueueData($element);\r\n writeAnimQueueData($element, queueData);\r\n queueData.push(animation);\r\n if (!isAnimating($element)) {\r\n shiftFromAnimationQueue($element, queueData)\r\n }\r\n}\r\n\r\nfunction getAnimQueueData($element) {\r\n return $element.data(ANIM_QUEUE_KEY) || []\r\n}\r\n\r\nfunction writeAnimQueueData($element, queueData) {\r\n $element.data(ANIM_QUEUE_KEY, queueData)\r\n}\r\nvar destroyAnimQueueData = function($element) {\r\n $element.removeData(ANIM_QUEUE_KEY)\r\n};\r\n\r\nfunction isAnimating($element) {\r\n return !!$element.data(ANIM_DATA_KEY)\r\n}\r\n\r\nfunction shiftFromAnimationQueue($element, queueData) {\r\n queueData = getAnimQueueData($element);\r\n if (!queueData.length) {\r\n return\r\n }\r\n var animation = queueData.shift();\r\n if (0 === queueData.length) {\r\n destroyAnimQueueData($element)\r\n }\r\n executeAnimation(animation).done((function() {\r\n if (!isAnimating($element)) {\r\n shiftFromAnimationQueue($element)\r\n }\r\n }))\r\n}\r\n\r\nfunction executeAnimation(animation) {\r\n animation.setup();\r\n if (fx.off || animation.isSynchronous) {\r\n animation.start()\r\n } else {\r\n animation.startTimeout = setTimeout((function() {\r\n animation.start()\r\n }))\r\n }\r\n return animation.deferred.promise()\r\n}\r\n\r\nfunction setupPosition($element, config) {\r\n if (!config || !config.position) {\r\n return\r\n }\r\n var win = $(window);\r\n var left = 0;\r\n var top = 0;\r\n var position = positionUtils.calculate($element, config.position);\r\n var offset = $element.offset();\r\n var currentPosition = $element.position();\r\n if (currentPosition.top > offset.top) {\r\n top = win.scrollTop()\r\n }\r\n if (currentPosition.left > offset.left) {\r\n left = win.scrollLeft()\r\n }\r\n extend(config, {\r\n left: position.h.location - offset.left + currentPosition.left - left,\r\n top: position.v.location - offset.top + currentPosition.top - top\r\n });\r\n delete config.position\r\n}\r\n\r\nfunction setProps($element, props) {\r\n each(props, (function(key, value) {\r\n try {\r\n $element.css(key, isFunction(value) ? value() : value)\r\n } catch (e) {}\r\n }))\r\n}\r\nvar stop = function(element, jumpToEnd) {\r\n var $element = $(element);\r\n var queueData = getAnimQueueData($element);\r\n each(queueData, (function(_, animation) {\r\n animation.config.delay = 0;\r\n animation.config.duration = 0;\r\n animation.isSynchronous = true\r\n }));\r\n if (!isAnimating($element)) {\r\n shiftFromAnimationQueue($element, queueData)\r\n }\r\n var animation = $element.data(ANIM_DATA_KEY);\r\n if (animation) {\r\n animation.stop(jumpToEnd)\r\n }\r\n $element.removeData(ANIM_DATA_KEY);\r\n destroyAnimQueueData($element)\r\n};\r\nvar fx = {\r\n off: false,\r\n animationTypes: animationConfigurators,\r\n animate: animate,\r\n createAnimation: createAnimation,\r\n isAnimating: isAnimating,\r\n stop: stop,\r\n _simulatedTransitionEndDelay: 100\r\n};\r\nexport default fx;\r\n","/**\r\n * DevExtreme (esm/core/memorized_callbacks.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport Callbacks from \"./utils/callbacks\";\r\nexport default class MemorizedCallbacks {\r\n constructor() {\r\n this.memory = [];\r\n this.callbacks = Callbacks()\r\n }\r\n add(fn) {\r\n each(this.memory, (_, item) => fn.apply(fn, item));\r\n this.callbacks.add(fn)\r\n }\r\n remove(fn) {\r\n this.callbacks.remove(fn)\r\n }\r\n fire() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n this.memory.push(args);\r\n this.callbacks.fire.apply(this.callbacks, args)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/widget/selectors.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nvar focusableFn = function(element, tabIndex) {\r\n if (!visible(element)) {\r\n return false\r\n }\r\n var nodeName = element.nodeName.toLowerCase();\r\n var isTabIndexNotNaN = !isNaN(tabIndex);\r\n var isDisabled = element.disabled;\r\n var isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName);\r\n var isHyperlink = \"a\" === nodeName;\r\n var isFocusable = true;\r\n var isContentEditable = element.isContentEditable;\r\n if (isDefaultFocus || isContentEditable) {\r\n isFocusable = !isDisabled\r\n } else if (isHyperlink) {\r\n isFocusable = element.href || isTabIndexNotNaN\r\n } else {\r\n isFocusable = isTabIndexNotNaN\r\n }\r\n return isFocusable\r\n};\r\n\r\nfunction visible(element) {\r\n var $element = $(element);\r\n return $element.is(\":visible\") && \"hidden\" !== $element.css(\"visibility\") && \"hidden\" !== $element.parents().css(\"visibility\")\r\n}\r\nexport var focusable = function(index, element) {\r\n return focusableFn(element, $(element).attr(\"tabIndex\"))\r\n};\r\nexport var tabbable = function(index, element) {\r\n var tabIndex = $(element).attr(\"tabIndex\");\r\n return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex)\r\n};\r\nexport var focused = function($element) {\r\n var element = $($element).get(0);\r\n return domAdapter.getActiveElement() === element\r\n};\r\n","/**\r\n * DevExtreme (esm/core/devices.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow,\r\n getNavigator,\r\n hasWindow\r\n} from \"./utils/window\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n isPlainObject\r\n} from \"./utils/type\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nimport errors from \"./errors\";\r\nimport Callbacks from \"./utils/callbacks\";\r\nimport readyCallbacks from \"./utils/ready_callbacks\";\r\nimport resizeCallbacks from \"./utils/resize_callbacks\";\r\nimport {\r\n EventsStrategy\r\n} from \"./events_strategy\";\r\nimport {\r\n sessionStorage as SessionStorage\r\n} from \"./utils/storage\";\r\nimport {\r\n changeCallback\r\n} from \"./utils/view_port\";\r\nimport Config from \"./config\";\r\nvar navigator = getNavigator();\r\nvar window = getWindow();\r\nvar KNOWN_UA_TABLE = {\r\n iPhone: \"iPhone\",\r\n iPhone5: \"iPhone\",\r\n iPhone6: \"iPhone\",\r\n iPhone6plus: \"iPhone\",\r\n iPad: \"iPad\",\r\n iPadMini: \"iPad Mini\",\r\n androidPhone: \"Android Mobile\",\r\n androidTablet: \"Android\",\r\n msSurface: \"Windows ARM Tablet PC\",\r\n desktop: \"desktop\"\r\n};\r\nvar DEFAULT_DEVICE = {\r\n deviceType: \"desktop\",\r\n platform: \"generic\",\r\n version: [],\r\n phone: false,\r\n tablet: false,\r\n android: false,\r\n ios: false,\r\n generic: true,\r\n grade: \"A\",\r\n mac: false\r\n};\r\nvar uaParsers = {\r\n generic(userAgent) {\r\n var isPhone = /windows phone/i.test(userAgent) || userAgent.match(/WPDesktop/);\r\n var isTablet = !isPhone && /Windows(.*)arm(.*)Tablet PC/i.test(userAgent);\r\n var isDesktop = !isPhone && !isTablet && /msapphost/i.test(userAgent);\r\n var isMac = /((intel|ppc) mac os x)/.test(userAgent.toLowerCase());\r\n if (!(isPhone || isTablet || isDesktop || isMac)) {\r\n return\r\n }\r\n return {\r\n deviceType: isPhone ? \"phone\" : isTablet ? \"tablet\" : \"desktop\",\r\n platform: \"generic\",\r\n version: [],\r\n grade: \"A\",\r\n mac: isMac\r\n }\r\n },\r\n ios(userAgent) {\r\n if (!/ip(hone|od|ad)/i.test(userAgent)) {\r\n return\r\n }\r\n var isPhone = /ip(hone|od)/i.test(userAgent);\r\n var matches = userAgent.match(/os (\\d+)_(\\d+)_?(\\d+)?/i);\r\n var version = matches ? [parseInt(matches[1], 10), parseInt(matches[2], 10), parseInt(matches[3] || 0, 10)] : [];\r\n var isIPhone4 = 480 === window.screen.height;\r\n var grade = isIPhone4 ? \"B\" : \"A\";\r\n return {\r\n deviceType: isPhone ? \"phone\" : \"tablet\",\r\n platform: \"ios\",\r\n version: version,\r\n grade: grade\r\n }\r\n },\r\n android(userAgent) {\r\n if (!/android|htc_|silk/i.test(userAgent)) {\r\n return\r\n }\r\n var isPhone = /mobile/i.test(userAgent);\r\n var matches = userAgent.match(/android (\\d+)\\.?(\\d+)?\\.?(\\d+)?/i);\r\n var version = matches ? [parseInt(matches[1], 10), parseInt(matches[2] || 0, 10), parseInt(matches[3] || 0, 10)] : [];\r\n var worseThan4_4 = version.length > 1 && (version[0] < 4 || 4 === version[0] && version[1] < 4);\r\n var grade = worseThan4_4 ? \"B\" : \"A\";\r\n return {\r\n deviceType: isPhone ? \"phone\" : \"tablet\",\r\n platform: \"android\",\r\n version: version,\r\n grade: grade\r\n }\r\n }\r\n};\r\nclass Devices {\r\n constructor(options) {\r\n this._window = (null === options || void 0 === options ? void 0 : options.window) || window;\r\n this._realDevice = this._getDevice();\r\n this._currentDevice = void 0;\r\n this._currentOrientation = void 0;\r\n this._eventsStrategy = new EventsStrategy(this);\r\n this.changed = Callbacks();\r\n if (hasWindow()) {\r\n readyCallbacks.add(this._recalculateOrientation.bind(this));\r\n resizeCallbacks.add(this._recalculateOrientation.bind(this))\r\n }\r\n }\r\n current(deviceOrName) {\r\n if (deviceOrName) {\r\n this._currentDevice = this._getDevice(deviceOrName);\r\n this._forced = true;\r\n this.changed.fire();\r\n return\r\n }\r\n if (!this._currentDevice) {\r\n deviceOrName = void 0;\r\n try {\r\n deviceOrName = this._getDeviceOrNameFromWindowScope()\r\n } catch (e) {\r\n deviceOrName = this._getDeviceNameFromSessionStorage()\r\n } finally {\r\n if (!deviceOrName) {\r\n deviceOrName = this._getDeviceNameFromSessionStorage()\r\n }\r\n if (deviceOrName) {\r\n this._forced = true\r\n }\r\n }\r\n this._currentDevice = this._getDevice(deviceOrName)\r\n }\r\n return this._currentDevice\r\n }\r\n real(forceDevice) {\r\n return extend({}, this._realDevice)\r\n }\r\n orientation() {\r\n return this._currentOrientation\r\n }\r\n isForced() {\r\n return this._forced\r\n }\r\n isRippleEmulator() {\r\n return !!this._window.tinyHippos\r\n }\r\n _getCssClasses(device) {\r\n var result = [];\r\n var realDevice = this._realDevice;\r\n device = device || this.current();\r\n if (device.deviceType) {\r\n result.push(\"dx-device-\".concat(device.deviceType));\r\n if (\"desktop\" !== device.deviceType) {\r\n result.push(\"dx-device-mobile\")\r\n }\r\n }\r\n result.push(\"dx-device-\".concat(realDevice.platform));\r\n if (realDevice.version && realDevice.version.length) {\r\n result.push(\"dx-device-\".concat(realDevice.platform, \"-\").concat(realDevice.version[0]))\r\n }\r\n if (this.isSimulator()) {\r\n result.push(\"dx-simulator\")\r\n }\r\n if (Config().rtlEnabled) {\r\n result.push(\"dx-rtl\")\r\n }\r\n return result\r\n }\r\n attachCssClasses(element, device) {\r\n this._deviceClasses = this._getCssClasses(device).join(\" \");\r\n $(element).addClass(this._deviceClasses)\r\n }\r\n detachCssClasses(element) {\r\n $(element).removeClass(this._deviceClasses)\r\n }\r\n isSimulator() {\r\n try {\r\n return this._isSimulator || hasWindow() && this._window.top !== this._window.self && this._window.top[\"dx-force-device\"] || this.isRippleEmulator()\r\n } catch (e) {\r\n return false\r\n }\r\n }\r\n forceSimulator() {\r\n this._isSimulator = true\r\n }\r\n _getDevice(deviceName) {\r\n if (\"genericPhone\" === deviceName) {\r\n deviceName = {\r\n deviceType: \"phone\",\r\n platform: \"generic\",\r\n generic: true\r\n }\r\n }\r\n if (isPlainObject(deviceName)) {\r\n return this._fromConfig(deviceName)\r\n } else {\r\n var ua;\r\n if (deviceName) {\r\n ua = KNOWN_UA_TABLE[deviceName];\r\n if (!ua) {\r\n throw errors.Error(\"E0005\")\r\n }\r\n } else {\r\n ua = navigator.userAgent\r\n }\r\n return this._fromUA(ua)\r\n }\r\n }\r\n _getDeviceOrNameFromWindowScope() {\r\n var result;\r\n if (hasWindow() && (this._window.top[\"dx-force-device-object\"] || this._window.top[\"dx-force-device\"])) {\r\n result = this._window.top[\"dx-force-device-object\"] || this._window.top[\"dx-force-device\"]\r\n }\r\n return result\r\n }\r\n _getDeviceNameFromSessionStorage() {\r\n var sessionStorage = SessionStorage();\r\n if (!sessionStorage) {\r\n return\r\n }\r\n var deviceOrName = sessionStorage.getItem(\"dx-force-device\");\r\n try {\r\n return JSON.parse(deviceOrName)\r\n } catch (ex) {\r\n return deviceOrName\r\n }\r\n }\r\n _fromConfig(config) {\r\n var result = extend({}, DEFAULT_DEVICE, this._currentDevice, config);\r\n var shortcuts = {\r\n phone: \"phone\" === result.deviceType,\r\n tablet: \"tablet\" === result.deviceType,\r\n android: \"android\" === result.platform,\r\n ios: \"ios\" === result.platform,\r\n generic: \"generic\" === result.platform\r\n };\r\n return extend(result, shortcuts)\r\n }\r\n _fromUA(ua) {\r\n var config;\r\n each(uaParsers, (platform, parser) => {\r\n config = parser(ua);\r\n return !config\r\n });\r\n if (config) {\r\n return this._fromConfig(config)\r\n }\r\n return DEFAULT_DEVICE\r\n }\r\n _changeOrientation() {\r\n var $window = $(this._window);\r\n var orientation = $window.height() > $window.width() ? \"portrait\" : \"landscape\";\r\n if (this._currentOrientation === orientation) {\r\n return\r\n }\r\n this._currentOrientation = orientation;\r\n this._eventsStrategy.fireEvent(\"orientationChanged\", [{\r\n orientation: orientation\r\n }])\r\n }\r\n _recalculateOrientation() {\r\n var windowWidth = $(this._window).width();\r\n if (this._currentWidth === windowWidth) {\r\n return\r\n }\r\n this._currentWidth = windowWidth;\r\n this._changeOrientation()\r\n }\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n }\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n}\r\nvar devices = new Devices;\r\nchangeCallback.add((viewPort, prevViewport) => {\r\n devices.detachCssClasses(prevViewport);\r\n devices.attachCssClasses(viewPort)\r\n});\r\nexport default devices;\r\n","/**\r\n * DevExtreme (esm/animation/frame.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = hasWindow() ? getWindow() : {};\r\nimport callOnce from \"../core/utils/call_once\";\r\nvar FRAME_ANIMATION_STEP_TIME = 1e3 / 60;\r\nvar request = function(callback) {\r\n return setTimeout(callback, FRAME_ANIMATION_STEP_TIME)\r\n};\r\nvar cancel = function(requestID) {\r\n clearTimeout(requestID)\r\n};\r\nvar setAnimationFrameMethods = callOnce((function() {\r\n var nativeRequest = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;\r\n var nativeCancel = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame;\r\n if (nativeRequest && nativeCancel) {\r\n request = nativeRequest;\r\n cancel = nativeCancel\r\n }\r\n if (nativeRequest && !nativeCancel) {\r\n var canceledRequests = {};\r\n request = function(callback) {\r\n var requestId = nativeRequest.call(window, (function() {\r\n try {\r\n if (requestId in canceledRequests) {\r\n return\r\n }\r\n callback.apply(this, arguments)\r\n } finally {\r\n delete canceledRequests[requestId]\r\n }\r\n }));\r\n return requestId\r\n };\r\n cancel = function(requestId) {\r\n canceledRequests[requestId] = true\r\n }\r\n }\r\n}));\r\nexport function requestAnimationFrame() {\r\n setAnimationFrameMethods();\r\n return request.apply(window, arguments)\r\n}\r\nexport function cancelAnimationFrame() {\r\n setAnimationFrameMethods();\r\n cancel.apply(window, arguments)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/validation_engine.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n EventsStrategy\r\n} from \"../core/events_strategy\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isDate,\r\n isBoolean,\r\n isObject,\r\n isFunction,\r\n isPromise,\r\n isNumeric\r\n} from \"../core/utils/type\";\r\nimport numberLocalization from \"../localization/number\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport Promise from \"../core/polyfills/promise\";\r\nimport {\r\n fromPromise,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar STATUS = {\r\n valid: \"valid\",\r\n invalid: \"invalid\",\r\n pending: \"pending\"\r\n};\r\nclass BaseRuleValidator {\r\n constructor() {\r\n this.NAME = \"base\"\r\n }\r\n defaultMessage(value) {\r\n return messageLocalization.getFormatter(\"validation-\".concat(this.NAME))(value)\r\n }\r\n defaultFormattedMessage(value) {\r\n return messageLocalization.getFormatter(\"validation-\".concat(this.NAME, \"-formatted\"))(value)\r\n }\r\n _isValueEmpty(value) {\r\n return !rulesValidators.required.validate(value, {})\r\n }\r\n validate(value, rule) {\r\n var valueArray = Array.isArray(value) ? value : [value];\r\n var result = true;\r\n if (valueArray.length) {\r\n valueArray.every(itemValue => {\r\n result = this._validate(itemValue, rule);\r\n return result\r\n })\r\n } else {\r\n result = this._validate(null, rule)\r\n }\r\n return result\r\n }\r\n}\r\nclass RequiredRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"required\"\r\n }\r\n _validate(value, rule) {\r\n if (!isDefined(value)) {\r\n return false\r\n }\r\n if (false === value) {\r\n return false\r\n }\r\n value = String(value);\r\n if (rule.trim || !isDefined(rule.trim)) {\r\n value = value.trim()\r\n }\r\n return \"\" !== value\r\n }\r\n}\r\nclass NumericRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"numeric\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n if (rule.useCultureSettings && isString(value)) {\r\n return !isNaN(numberLocalization.parse(value))\r\n } else {\r\n return isNumeric(value)\r\n }\r\n }\r\n}\r\nclass RangeRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"range\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validNumber = rulesValidators.numeric.validate(value, rule);\r\n var validValue = isDefined(value) && \"\" !== value;\r\n var number = validNumber ? parseFloat(value) : validValue && value.valueOf();\r\n var min = rule.min;\r\n var max = rule.max;\r\n if (!(validNumber || isDate(value)) && !validValue) {\r\n return false\r\n }\r\n if (isDefined(min)) {\r\n if (isDefined(max)) {\r\n return number >= min && number <= max\r\n }\r\n return number >= min\r\n } else if (isDefined(max)) {\r\n return number <= max\r\n } else {\r\n throw errors.Error(\"E0101\")\r\n }\r\n }\r\n}\r\nclass StringLengthRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"stringLength\"\r\n }\r\n _validate(value, rule) {\r\n var _value;\r\n value = String(null !== (_value = value) && void 0 !== _value ? _value : \"\");\r\n if (rule.trim || !isDefined(rule.trim)) {\r\n value = value.trim()\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.range.validate(value.length, extend({}, rule))\r\n }\r\n}\r\nclass CustomRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"custom\"\r\n }\r\n validate(value, rule) {\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && isFunction(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = isFunction(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n extend(params, extraParams)\r\n }\r\n return rule.validationCallback(params)\r\n }\r\n}\r\nclass AsyncRuleValidator extends CustomRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"async\"\r\n }\r\n validate(value, rule) {\r\n if (!isDefined(rule.reevaluate)) {\r\n extend(rule, {\r\n reevaluate: true\r\n })\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && isFunction(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = isFunction(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n extend(params, extraParams)\r\n }\r\n var callbackResult = rule.validationCallback(params);\r\n if (!isPromise(callbackResult)) {\r\n throw errors.Error(\"E0103\")\r\n }\r\n return this._getWrappedPromise(fromPromise(callbackResult).promise())\r\n }\r\n _getWrappedPromise(promise) {\r\n var deferred = new Deferred;\r\n promise.then((function(res) {\r\n deferred.resolve(res)\r\n }), (function(err) {\r\n var res = {\r\n isValid: false\r\n };\r\n if (isDefined(err)) {\r\n if (isString(err)) {\r\n res.message = err\r\n } else if (isObject(err) && isDefined(err.message) && isString(err.message)) {\r\n res.message = err.message\r\n }\r\n }\r\n deferred.resolve(res)\r\n }));\r\n return deferred.promise()\r\n }\r\n}\r\nclass CompareRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"compare\"\r\n }\r\n _validate(value, rule) {\r\n if (!rule.comparisonTarget) {\r\n throw errors.Error(\"E0102\")\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n extend(rule, {\r\n reevaluate: true\r\n });\r\n var otherValue = rule.comparisonTarget();\r\n var type = rule.comparisonType || \"==\";\r\n switch (type) {\r\n case \"==\":\r\n return value == otherValue;\r\n case \"!=\":\r\n return value != otherValue;\r\n case \"===\":\r\n return value === otherValue;\r\n case \"!==\":\r\n return value !== otherValue;\r\n case \">\":\r\n return value > otherValue;\r\n case \">=\":\r\n return value >= otherValue;\r\n case \"<\":\r\n return value < otherValue;\r\n case \"<=\":\r\n return value <= otherValue\r\n }\r\n }\r\n}\r\nclass PatternRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"pattern\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var pattern = rule.pattern;\r\n if (isString(pattern)) {\r\n pattern = new RegExp(pattern)\r\n }\r\n return pattern.test(value)\r\n }\r\n}\r\nclass EmailRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"email\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.pattern.validate(value, extend({}, rule, {\r\n pattern: /^[\\d\\w._-]+@[\\d\\w._-]+\\.[\\w]+$/i\r\n }))\r\n }\r\n}\r\nvar rulesValidators = {\r\n required: new RequiredRuleValidator,\r\n numeric: new NumericRuleValidator,\r\n range: new RangeRuleValidator,\r\n stringLength: new StringLengthRuleValidator,\r\n custom: new CustomRuleValidator,\r\n async: new AsyncRuleValidator,\r\n compare: new CompareRuleValidator,\r\n pattern: new PatternRuleValidator,\r\n email: new EmailRuleValidator\r\n};\r\nvar GroupConfig = Class.inherit({\r\n ctor(group) {\r\n this.group = group;\r\n this.validators = [];\r\n this._pendingValidators = [];\r\n this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);\r\n this._resetValidationInfo();\r\n this._eventsStrategy = new EventsStrategy(this)\r\n },\r\n validate() {\r\n var result = {\r\n isValid: true,\r\n brokenRules: [],\r\n validators: [],\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n this._unsubscribeFromAllChangeEvents();\r\n this._pendingValidators = [];\r\n this._resetValidationInfo();\r\n each(this.validators, (_, validator) => {\r\n var validatorResult = validator.validate();\r\n result.isValid = result.isValid && validatorResult.isValid;\r\n if (validatorResult.brokenRules) {\r\n result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)\r\n }\r\n result.validators.push(validator);\r\n if (validatorResult.status === STATUS.pending) {\r\n this._addPendingValidator(validator)\r\n }\r\n this._subscribeToChangeEvents(validator)\r\n });\r\n if (this._pendingValidators.length) {\r\n result.status = STATUS.pending\r\n } else {\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n this._unsubscribeFromAllChangeEvents();\r\n this._raiseValidatedEvent(result)\r\n }\r\n this._updateValidationInfo(result);\r\n return extend({}, this._validationInfo.result)\r\n },\r\n _subscribeToChangeEvents(validator) {\r\n validator.on(\"validating\", this._onValidatorStatusChanged);\r\n validator.on(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromChangeEvents(validator) {\r\n validator.off(\"validating\", this._onValidatorStatusChanged);\r\n validator.off(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromAllChangeEvents() {\r\n each(this.validators, (_, validator) => {\r\n this._unsubscribeFromChangeEvents(validator)\r\n })\r\n },\r\n _updateValidationInfo(result) {\r\n this._validationInfo.result = result;\r\n if (result.status !== STATUS.pending) {\r\n return\r\n }\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n },\r\n _addPendingValidator(validator) {\r\n var foundValidator = grep(this._pendingValidators, (function(val) {\r\n return val === validator\r\n }))[0];\r\n if (!foundValidator) {\r\n this._pendingValidators.push(validator)\r\n }\r\n },\r\n _removePendingValidator(validator) {\r\n var index = inArray(validator, this._pendingValidators);\r\n if (index >= 0) {\r\n this._pendingValidators.splice(index, 1)\r\n }\r\n },\r\n _orderBrokenRules(brokenRules) {\r\n var orderedRules = [];\r\n each(this.validators, (function(_, validator) {\r\n var foundRules = grep(brokenRules, (function(rule) {\r\n return rule.validator === validator\r\n }));\r\n if (foundRules.length) {\r\n orderedRules = orderedRules.concat(foundRules)\r\n }\r\n }));\r\n return orderedRules\r\n },\r\n _updateBrokenRules(result) {\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n var brokenRules = this._validationInfo.result.brokenRules;\r\n var rules = grep(brokenRules, (function(rule) {\r\n return rule.validator !== result.validator\r\n }));\r\n if (result.brokenRules) {\r\n brokenRules = rules.concat(result.brokenRules)\r\n }\r\n this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)\r\n },\r\n _onValidatorStatusChanged(result) {\r\n if (result.status === STATUS.pending) {\r\n this._addPendingValidator(result.validator);\r\n return\r\n }\r\n this._resolveIfComplete(result)\r\n },\r\n _resolveIfComplete(result) {\r\n this._removePendingValidator(result.validator);\r\n this._updateBrokenRules(result);\r\n if (!this._pendingValidators.length) {\r\n this._unsubscribeFromAllChangeEvents();\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS.valid : STATUS.invalid;\r\n this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS.valid;\r\n var res = extend({}, this._validationInfo.result, {\r\n complete: null\r\n });\r\n var deferred = this._validationInfo.deferred;\r\n this._resetValidationInfo();\r\n this._raiseValidatedEvent(res);\r\n deferred && setTimeout(() => {\r\n deferred.resolve(res)\r\n })\r\n }\r\n },\r\n _raiseValidatedEvent(result) {\r\n this._eventsStrategy.fireEvent(\"validated\", [result])\r\n },\r\n _resetValidationInfo() {\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null\r\n }\r\n },\r\n _synchronizeValidationInfo() {\r\n if (this._validationInfo.result) {\r\n this._validationInfo.result.validators = this.validators\r\n }\r\n },\r\n removeRegisteredValidator(validator) {\r\n var index = inArray(validator, this.validators);\r\n if (index > -1) {\r\n this.validators.splice(index, 1);\r\n this._synchronizeValidationInfo();\r\n this._resolveIfComplete({\r\n validator: validator\r\n })\r\n }\r\n },\r\n registerValidator(validator) {\r\n if (inArray(validator, this.validators) < 0) {\r\n this.validators.push(validator);\r\n this._synchronizeValidationInfo()\r\n }\r\n },\r\n reset() {\r\n each(this.validators, (function(_, validator) {\r\n validator.reset()\r\n }));\r\n this._pendingValidators = [];\r\n this._resetValidationInfo()\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\nvar ValidationEngine = {\r\n groups: [],\r\n getGroupConfig(group) {\r\n var result = grep(this.groups, (function(config) {\r\n return config.group === group\r\n }));\r\n if (result.length) {\r\n return result[0]\r\n }\r\n },\r\n findGroup($element, model) {\r\n var $dxGroup = $element.parents(\".dx-validationgroup\").first();\r\n if ($dxGroup.length) {\r\n return $dxGroup.dxValidationGroup(\"instance\")\r\n }\r\n return model\r\n },\r\n initGroups() {\r\n this.groups = [];\r\n this.addGroup()\r\n },\r\n addGroup(group) {\r\n var config = this.getGroupConfig(group);\r\n if (!config) {\r\n config = new GroupConfig(group);\r\n this.groups.push(config)\r\n }\r\n return config\r\n },\r\n removeGroup(group) {\r\n var config = this.getGroupConfig(group);\r\n var index = inArray(config, this.groups);\r\n if (index > -1) {\r\n this.groups.splice(index, 1)\r\n }\r\n return config\r\n },\r\n _setDefaultMessage(info) {\r\n var {\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n } = info;\r\n if (!isDefined(rule.message)) {\r\n if (validator.defaultFormattedMessage && isDefined(name)) {\r\n rule.message = validator.defaultFormattedMessage(name)\r\n } else {\r\n rule.message = validator.defaultMessage()\r\n }\r\n }\r\n },\r\n _addBrokenRule(info) {\r\n var {\r\n result: result,\r\n rule: rule\r\n } = info;\r\n if (!result.brokenRule) {\r\n result.brokenRule = rule\r\n }\r\n if (!result.brokenRules) {\r\n result.brokenRules = []\r\n }\r\n result.brokenRules.push(rule)\r\n },\r\n validate(value, rules, name) {\r\n var result = {\r\n name: name,\r\n value: value,\r\n brokenRule: null,\r\n brokenRules: null,\r\n isValid: true,\r\n validationRules: rules,\r\n pendingRules: null,\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n var asyncRuleItems = [];\r\n each(rules || [], (_, rule) => {\r\n var ruleValidator = rulesValidators[rule.type];\r\n var ruleValidationResult;\r\n if (ruleValidator) {\r\n if (isDefined(rule.isValid) && rule.value === value && !rule.reevaluate) {\r\n if (!rule.isValid) {\r\n result.isValid = false;\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n });\r\n return false\r\n }\r\n return true\r\n }\r\n rule.value = value;\r\n if (\"async\" === rule.type) {\r\n asyncRuleItems.push({\r\n rule: rule,\r\n ruleValidator: ruleValidator\r\n });\r\n return true\r\n }\r\n ruleValidationResult = ruleValidator.validate(value, rule);\r\n rule.isValid = ruleValidationResult;\r\n if (!ruleValidationResult) {\r\n result.isValid = false;\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: ruleValidator,\r\n name: name\r\n });\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n if (!rule.isValid) {\r\n return false\r\n }\r\n } else {\r\n throw errors.Error(\"E0100\")\r\n }\r\n });\r\n if (result.isValid && !result.brokenRules && asyncRuleItems.length) {\r\n result = this._validateAsyncRules({\r\n value: value,\r\n items: asyncRuleItems,\r\n result: result,\r\n name: name\r\n })\r\n }\r\n result.status = result.pendingRules ? STATUS.pending : result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n _validateAsyncRules(_ref) {\r\n var {\r\n result: result,\r\n value: value,\r\n items: items,\r\n name: name\r\n } = _ref;\r\n var asyncResults = [];\r\n each(items, (_, item) => {\r\n var validateResult = item.ruleValidator.validate(value, item.rule);\r\n if (!isPromise(validateResult)) {\r\n this._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: this._getPatchedRuleResult(validateResult),\r\n validator: item.ruleValidator,\r\n name: name\r\n })\r\n } else {\r\n if (!result.pendingRules) {\r\n result.pendingRules = []\r\n }\r\n result.pendingRules.push(item.rule);\r\n var asyncResult = validateResult.then(res => {\r\n var ruleResult = this._getPatchedRuleResult(res);\r\n this._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: ruleResult,\r\n validator: item.ruleValidator,\r\n name: name\r\n });\r\n return ruleResult\r\n });\r\n asyncResults.push(asyncResult)\r\n }\r\n });\r\n if (asyncResults.length) {\r\n result.complete = Promise.all(asyncResults).then(values => this._getAsyncRulesResult({\r\n result: result,\r\n values: values\r\n }))\r\n }\r\n return result\r\n },\r\n _updateRuleConfig(_ref2) {\r\n var {\r\n rule: rule,\r\n ruleResult: ruleResult,\r\n validator: validator,\r\n name: name\r\n } = _ref2;\r\n rule.isValid = ruleResult.isValid;\r\n if (!ruleResult.isValid) {\r\n if (isDefined(ruleResult.message) && isString(ruleResult.message) && ruleResult.message.length) {\r\n rule.message = ruleResult.message\r\n } else {\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n })\r\n }\r\n }\r\n },\r\n _getPatchedRuleResult(ruleResult) {\r\n var result;\r\n if (isObject(ruleResult)) {\r\n result = extend({}, ruleResult);\r\n if (!isDefined(result.isValid)) {\r\n result.isValid = true\r\n }\r\n } else {\r\n result = {\r\n isValid: isBoolean(ruleResult) ? ruleResult : true\r\n }\r\n }\r\n return result\r\n },\r\n _getAsyncRulesResult(_ref3) {\r\n var {\r\n values: values,\r\n result: result\r\n } = _ref3;\r\n each(values, (index, val) => {\r\n if (false === val.isValid) {\r\n result.isValid = val.isValid;\r\n var rule = result.pendingRules[index];\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n });\r\n result.pendingRules = null;\r\n result.complete = null;\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n registerValidatorInGroup(group, validator) {\r\n var groupConfig = ValidationEngine.addGroup(group);\r\n groupConfig.registerValidator.call(groupConfig, validator)\r\n },\r\n _shouldRemoveGroup(group, validatorsInGroup) {\r\n var isDefaultGroup = void 0 === group;\r\n var isValidationGroupInstance = group && \"dxValidationGroup\" === group.NAME;\r\n return !isDefaultGroup && !isValidationGroupInstance && !validatorsInGroup.length\r\n },\r\n removeRegisteredValidator(group, validator) {\r\n var config = ValidationEngine.getGroupConfig(group);\r\n if (config) {\r\n config.removeRegisteredValidator.call(config, validator);\r\n var validatorsInGroup = config.validators;\r\n if (this._shouldRemoveGroup(group, validatorsInGroup)) {\r\n this.removeGroup(group)\r\n }\r\n }\r\n },\r\n initValidationOptions(options) {\r\n var initedOptions = {};\r\n if (options) {\r\n [\"isValid\", \"validationStatus\", \"validationError\", \"validationErrors\"].forEach(prop => {\r\n if (prop in options) {\r\n extend(initedOptions, this.synchronizeValidationOptions({\r\n name: prop,\r\n value: options[prop]\r\n }, options))\r\n }\r\n })\r\n }\r\n return initedOptions\r\n },\r\n synchronizeValidationOptions(_ref4, options) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref4;\r\n switch (name) {\r\n case \"validationStatus\":\r\n var isValid = value === STATUS.valid || value === STATUS.pending;\r\n return options.isValid !== isValid ? {\r\n isValid: isValid\r\n } : {};\r\n case \"isValid\":\r\n var {\r\n validationStatus: validationStatus\r\n } = options;\r\n var newStatus = validationStatus;\r\n if (value && validationStatus === STATUS.invalid) {\r\n newStatus = STATUS.valid\r\n } else if (!value && validationStatus !== STATUS.invalid) {\r\n newStatus = STATUS.invalid\r\n }\r\n return newStatus !== validationStatus ? {\r\n validationStatus: newStatus\r\n } : {};\r\n case \"validationErrors\":\r\n var validationError = !value || !value.length ? null : value[0];\r\n return options.validationError !== validationError ? {\r\n validationError: validationError\r\n } : {};\r\n case \"validationError\":\r\n var {\r\n validationErrors: validationErrors\r\n } = options;\r\n if (!value && validationErrors) {\r\n return {\r\n validationErrors: null\r\n }\r\n } else if (value && !validationErrors) {\r\n return {\r\n validationErrors: [value]\r\n }\r\n } else if (value && validationErrors && value !== validationErrors[0]) {\r\n validationErrors[0] = value;\r\n return {\r\n validationErrors: validationErrors.slice()\r\n }\r\n }\r\n }\r\n return {}\r\n },\r\n validateGroup(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw errors.Error(\"E0110\")\r\n }\r\n return groupConfig.validate()\r\n },\r\n resetGroup(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw errors.Error(\"E0110\")\r\n }\r\n return groupConfig.reset()\r\n }\r\n};\r\nValidationEngine.initGroups();\r\nexport default ValidationEngine;\r\n","/**\r\n * DevExtreme (esm/data/data_source/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"items\"];\r\nimport ajaxUtils from \"../../core/utils/ajax\";\r\nimport Store from \"../abstract_store\";\r\nimport ArrayStore from \"../array_store\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport CustomStore from \"../custom_store\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport dataUtils from \"../utils\";\r\nexport var CANCELED_TOKEN = \"canceled\";\r\nexport var isPending = deferred => \"pending\" === deferred.state();\r\nexport var normalizeStoreLoadOptionAccessorArguments = originalArguments => {\r\n switch (originalArguments.length) {\r\n case 0:\r\n return;\r\n case 1:\r\n return originalArguments[0]\r\n }\r\n return [].slice.call(originalArguments)\r\n};\r\nvar mapGroup = (group, level, mapper) => map(group, item => {\r\n var restItem = _objectWithoutPropertiesLoose(item, _excluded);\r\n return _extends({}, restItem, {\r\n items: mapRecursive(item.items, level - 1, mapper)\r\n })\r\n});\r\nvar mapRecursive = (items, level, mapper) => {\r\n if (!Array.isArray(items)) {\r\n return items\r\n }\r\n return level ? mapGroup(items, level, mapper) : map(items, mapper)\r\n};\r\nexport var mapDataRespectingGrouping = (items, mapper, groupInfo) => {\r\n var level = groupInfo ? dataUtils.normalizeSortingInfo(groupInfo).length : 0;\r\n return mapRecursive(items, level, mapper)\r\n};\r\nexport var normalizeLoadResult = (data, extra) => {\r\n var _data;\r\n if (null !== (_data = data) && void 0 !== _data && _data.data) {\r\n extra = data;\r\n data = data.data\r\n }\r\n if (!Array.isArray(data)) {\r\n data = [data]\r\n }\r\n return {\r\n data: data,\r\n extra: extra\r\n }\r\n};\r\nvar createCustomStoreFromLoadFunc = options => {\r\n var storeConfig = {};\r\n each([\"useDefaultSearch\", \"key\", \"load\", \"loadMode\", \"cacheRawData\", \"byKey\", \"lookup\", \"totalCount\", \"insert\", \"update\", \"remove\"], (function() {\r\n storeConfig[this] = options[this];\r\n delete options[this]\r\n }));\r\n return new CustomStore(storeConfig)\r\n};\r\nvar createStoreFromConfig = storeConfig => {\r\n var alias = storeConfig.type;\r\n delete storeConfig.type;\r\n return Store.create(alias, storeConfig)\r\n};\r\nvar createCustomStoreFromUrl = (url, normalizationOptions) => new CustomStore({\r\n load: () => ajaxUtils.sendRequest({\r\n url: url,\r\n dataType: \"json\"\r\n }),\r\n loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode\r\n});\r\nexport var normalizeDataSourceOptions = (options, normalizationOptions) => {\r\n var store;\r\n if (\"string\" === typeof options) {\r\n options = {\r\n paginate: false,\r\n store: createCustomStoreFromUrl(options, normalizationOptions)\r\n }\r\n }\r\n if (void 0 === options) {\r\n options = []\r\n }\r\n if (Array.isArray(options) || options instanceof Store) {\r\n options = {\r\n store: options\r\n }\r\n } else {\r\n options = extend({}, options)\r\n }\r\n if (void 0 === options.store) {\r\n options.store = []\r\n }\r\n store = options.store;\r\n if (\"load\" in options) {\r\n store = createCustomStoreFromLoadFunc(options)\r\n } else if (Array.isArray(store)) {\r\n store = new ArrayStore(store)\r\n } else if (isPlainObject(store)) {\r\n store = createStoreFromConfig(extend({}, store))\r\n }\r\n options.store = store;\r\n return options\r\n};\r\n","/**\r\n * DevExtreme (esm/core/dom_adapter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport injector from \"./utils/dependency_injector\";\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nvar ELEMENT_NODE = 1;\r\nvar TEXT_NODE = 3;\r\nvar DOCUMENT_NODE = 9;\r\nvar nativeDOMAdapterStrategy = {\r\n querySelectorAll: (element, selector) => element.querySelectorAll(selector),\r\n elementMatches(element, selector) {\r\n var matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || (selector => {\r\n var doc = element.document || element.ownerDocument;\r\n if (!doc) {\r\n return false\r\n }\r\n var items = this.querySelectorAll(doc, selector);\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] === element) {\r\n return true\r\n }\r\n }\r\n });\r\n return matches.call(element, selector)\r\n },\r\n createElement(tagName, context) {\r\n context = context || this._document;\r\n return context.createElement(tagName)\r\n },\r\n createElementNS(ns, tagName, context) {\r\n context = context || this._document;\r\n return context.createElementNS(ns, tagName)\r\n },\r\n createTextNode(text, context) {\r\n context = context || this._document;\r\n return context.createTextNode(text)\r\n },\r\n isNode: element => element && \"object\" === typeof element && \"nodeType\" in element && \"nodeName\" in element,\r\n isElementNode: element => element && element.nodeType === ELEMENT_NODE,\r\n isTextNode: element => element && element.nodeType === TEXT_NODE,\r\n isDocument: element => element && element.nodeType === DOCUMENT_NODE,\r\n removeElement(element) {\r\n var parentNode = element && element.parentNode;\r\n if (parentNode) {\r\n parentNode.removeChild(element)\r\n }\r\n },\r\n insertElement(parentElement, newElement, nextSiblingElement) {\r\n if (parentElement && newElement && parentElement !== newElement) {\r\n if (nextSiblingElement) {\r\n parentElement.insertBefore(newElement, nextSiblingElement)\r\n } else {\r\n parentElement.appendChild(newElement)\r\n }\r\n }\r\n },\r\n getAttribute: (element, name) => element.getAttribute(name),\r\n setAttribute(element, name, value) {\r\n element.setAttribute(name, value)\r\n },\r\n removeAttribute(element, name) {\r\n element.removeAttribute(name)\r\n },\r\n setProperty(element, name, value) {\r\n element[name] = value\r\n },\r\n setText(element, text) {\r\n if (element) {\r\n element.textContent = text\r\n }\r\n },\r\n setClass(element, className, isAdd) {\r\n if (1 === element.nodeType && className) {\r\n if (element.classList) {\r\n if (isAdd) {\r\n element.classList.add(className)\r\n } else {\r\n element.classList.remove(className)\r\n }\r\n } else {\r\n var classNameSupported = \"string\" === typeof element.className;\r\n var elementClass = classNameSupported ? element.className : this.getAttribute(element, \"class\") || \"\";\r\n var classNames = elementClass.split(\" \");\r\n var classIndex = classNames.indexOf(className);\r\n var resultClassName;\r\n if (isAdd && classIndex < 0) {\r\n resultClassName = elementClass ? elementClass + \" \" + className : className\r\n }\r\n if (!isAdd && classIndex >= 0) {\r\n classNames.splice(classIndex, 1);\r\n resultClassName = classNames.join(\" \")\r\n }\r\n if (void 0 !== resultClassName) {\r\n if (classNameSupported) {\r\n element.className = resultClassName\r\n } else {\r\n this.setAttribute(element, \"class\", resultClassName)\r\n }\r\n }\r\n }\r\n }\r\n },\r\n setStyle(element, name, value) {\r\n element.style[name] = value || \"\"\r\n },\r\n _document: \"undefined\" === typeof document ? void 0 : document,\r\n getDocument() {\r\n return this._document\r\n },\r\n getActiveElement() {\r\n return this._document.activeElement\r\n },\r\n getBody() {\r\n return this._document.body\r\n },\r\n createDocumentFragment() {\r\n return this._document.createDocumentFragment()\r\n },\r\n getDocumentElement() {\r\n return this._document.documentElement\r\n },\r\n getLocation() {\r\n return this._document.location\r\n },\r\n getSelection() {\r\n return this._document.selection\r\n },\r\n getReadyState() {\r\n return this._document.readyState\r\n },\r\n getHead() {\r\n return this._document.head\r\n },\r\n hasDocumentProperty(property) {\r\n return property in this._document\r\n },\r\n listen(element, event, callback, options) {\r\n if (!element || !(\"addEventListener\" in element)) {\r\n return noop\r\n }\r\n element.addEventListener(event, callback, options);\r\n return () => {\r\n element.removeEventListener(event, callback)\r\n }\r\n }\r\n};\r\nexport default injector(nativeDOMAdapterStrategy);\r\n","/**\r\n * DevExtreme (esm/ui/text_box/text_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getNavigator,\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nvar navigator = getNavigator();\r\nimport browser from \"../../core/utils/browser\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport TextEditor from \"./ui.text_editor\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nvar ua = navigator.userAgent;\r\nvar ignoreKeys = [\"backspace\", \"tab\", \"enter\", \"pageUp\", \"pageDown\", \"end\", \"home\", \"leftArrow\", \"rightArrow\", \"downArrow\", \"upArrow\", \"del\"];\r\nvar TEXTBOX_CLASS = \"dx-textbox\";\r\nvar SEARCHBOX_CLASS = \"dx-searchbox\";\r\nvar ICON_CLASS = \"dx-icon\";\r\nvar SEARCH_ICON_CLASS = \"dx-icon-search\";\r\nvar TextBox = TextEditor.inherit({\r\n ctor: function(element, options) {\r\n if (options) {\r\n this._showClearButton = options.showClearButton\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: \"\",\r\n mode: \"text\",\r\n maxLength: null\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TEXTBOX_CLASS);\r\n this.callBase();\r\n this.setAria(\"role\", \"textbox\")\r\n },\r\n _renderContentImpl: function() {\r\n this._renderMaxLengthHandlers();\r\n this.callBase()\r\n },\r\n _renderInputType: function() {\r\n this.callBase();\r\n this._renderSearchMode()\r\n },\r\n _renderMaxLengthHandlers: function() {\r\n if (this._isAndroidOrIE()) {\r\n eventsEngine.on(this._input(), addNamespace(\"keydown\", this.NAME), this._onKeyDownCutOffHandler.bind(this));\r\n eventsEngine.on(this._input(), addNamespace(\"change\", this.NAME), this._onChangeCutOffHandler.bind(this))\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._toggleMaxLengthProp()\r\n },\r\n _toggleMaxLengthProp: function() {\r\n var maxLength = this._getMaxLength();\r\n if (maxLength && maxLength > 0) {\r\n this._input().attr(\"maxLength\", maxLength)\r\n } else {\r\n this._input().removeAttr(\"maxLength\")\r\n }\r\n },\r\n _renderSearchMode: function() {\r\n var $element = this._$element;\r\n if (\"search\" === this.option(\"mode\")) {\r\n $element.addClass(SEARCHBOX_CLASS);\r\n this._renderSearchIcon();\r\n if (void 0 === this._showClearButton) {\r\n this._showClearButton = this.option(\"showClearButton\");\r\n this.option(\"showClearButton\", true)\r\n }\r\n } else {\r\n $element.removeClass(SEARCHBOX_CLASS);\r\n this._$searchIcon && this._$searchIcon.remove();\r\n this.option(\"showClearButton\", void 0 === this._showClearButton ? this.option(\"showClearButton\") : this._showClearButton);\r\n delete this._showClearButton\r\n }\r\n },\r\n _renderSearchIcon: function() {\r\n var $searchIcon = $(\"
\").addClass(ICON_CLASS).addClass(SEARCH_ICON_CLASS);\r\n $searchIcon.prependTo(this._input().parent());\r\n this._$searchIcon = $searchIcon\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"maxLength\":\r\n this._toggleMaxLengthProp();\r\n this._renderMaxLengthHandlers();\r\n break;\r\n case \"mask\":\r\n this.callBase(args);\r\n this._toggleMaxLengthProp();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _onKeyDownCutOffHandler: function(e) {\r\n var actualMaxLength = this._getMaxLength();\r\n if (actualMaxLength && !e.ctrlKey && !this._hasSelection()) {\r\n var $input = $(e.target);\r\n var key = normalizeKeyName(e);\r\n this._cutOffExtraChar($input);\r\n return $input.val().length < actualMaxLength || -1 !== inArray(key, ignoreKeys) || \"\" !== window.getSelection().toString()\r\n } else {\r\n return true\r\n }\r\n },\r\n _onChangeCutOffHandler: function(e) {\r\n var $input = $(e.target);\r\n if (this.option(\"maxLength\")) {\r\n this._cutOffExtraChar($input)\r\n }\r\n },\r\n _cutOffExtraChar: function($input) {\r\n var actualMaxLength = this._getMaxLength();\r\n var textInput = $input.val();\r\n if (actualMaxLength && textInput.length > actualMaxLength) {\r\n $input.val(textInput.substr(0, actualMaxLength))\r\n }\r\n },\r\n _getMaxLength: function() {\r\n var isMaskSpecified = !!this.option(\"mask\");\r\n return isMaskSpecified ? null : this.option(\"maxLength\")\r\n },\r\n _isAndroidOrIE: function() {\r\n var realDevice = devices.real();\r\n var version = realDevice.version.join(\".\");\r\n return browser.msie || \"android\" === realDevice.platform && version && /^(2\\.|4\\.1)/.test(version) && !/chrome/i.test(ua)\r\n }\r\n});\r\nregisterComponent(\"dxTextBox\", TextBox);\r\nexport default TextBox;\r\n","/**\r\n * DevExtreme (esm/ui/text_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport TextBox from \"./text_box/text_box\";\r\nexport default TextBox;\r\n","/**\r\n * DevExtreme (esm/core/utils/dom.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDefined,\r\n isRenderer,\r\n isWindow\r\n} from \"./type\";\r\nimport {\r\n getWindow\r\n} from \"./window\";\r\nvar window = getWindow();\r\nexport var resetActiveElement = function() {\r\n var activeElement = domAdapter.getActiveElement();\r\n var body = domAdapter.getBody();\r\n if (activeElement && activeElement !== body && activeElement.blur) {\r\n try {\r\n activeElement.blur()\r\n } catch (e) {\r\n body.blur()\r\n }\r\n }\r\n};\r\nexport var clearSelection = function() {\r\n var selection = window.getSelection();\r\n if (!selection) {\r\n return\r\n }\r\n if (\"Caret\" === selection.type) {\r\n return\r\n }\r\n if (selection.empty) {\r\n selection.empty()\r\n } else if (selection.removeAllRanges) {\r\n try {\r\n selection.removeAllRanges()\r\n } catch (e) {}\r\n }\r\n};\r\nexport var closestCommonParent = function(startTarget, endTarget) {\r\n var $startTarget = $(startTarget);\r\n var $endTarget = $(endTarget);\r\n if ($startTarget[0] === $endTarget[0]) {\r\n return $startTarget[0]\r\n }\r\n var $startParents = $startTarget.parents();\r\n var $endParents = $endTarget.parents();\r\n var startingParent = Math.min($startParents.length, $endParents.length);\r\n for (var i = -startingParent; i < 0; i++) {\r\n if ($startParents.get(i) === $endParents.get(i)) {\r\n return $startParents.get(i)\r\n }\r\n }\r\n};\r\nexport var extractTemplateMarkup = function(element) {\r\n element = $(element);\r\n var templateTag = element.length && element.filter((function() {\r\n var $node = $(this);\r\n return $node.is(\"script[type]\") && $node.attr(\"type\").indexOf(\"script\") < 0\r\n }));\r\n if (templateTag.length) {\r\n return templateTag.eq(0).html()\r\n } else {\r\n element = $(\"
\").append(element);\r\n return element.html()\r\n }\r\n};\r\nexport var normalizeTemplateElement = function normalizeTemplateElement(element) {\r\n var $element = isDefined(element) && (element.nodeType || isRenderer(element)) ? $(element) : $(\"
\").html(element).contents();\r\n if (1 === $element.length) {\r\n if ($element.is(\"script\")) {\r\n $element = normalizeTemplateElement($element.html().trim())\r\n } else if ($element.is(\"table\")) {\r\n $element = $element.children(\"tbody\").contents()\r\n }\r\n }\r\n return $element\r\n};\r\nexport var clipboardText = function(event, text) {\r\n var clipboard = event.originalEvent && event.originalEvent.clipboardData || window.clipboardData;\r\n if (1 === arguments.length) {\r\n return clipboard && clipboard.getData(\"Text\")\r\n }\r\n clipboard && clipboard.setData(\"Text\", text)\r\n};\r\nexport var contains = function contains(container, element) {\r\n if (!element) {\r\n return false\r\n }\r\n if (domAdapter.isTextNode(element)) {\r\n element = element.parentNode\r\n }\r\n if (domAdapter.isDocument(container)) {\r\n return container.documentElement.contains(element)\r\n }\r\n if (isWindow(container)) {\r\n return contains(container.document, element)\r\n }\r\n return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)\r\n};\r\nexport var createTextElementHiddenCopy = function(element, text, options) {\r\n var elementStyles = window.getComputedStyle($(element).get(0));\r\n var includePaddings = options && options.includePaddings;\r\n return $(\"
\").text(text).css({\r\n fontStyle: elementStyles.fontStyle,\r\n fontVariant: elementStyles.fontVariant,\r\n fontWeight: elementStyles.fontWeight,\r\n fontSize: elementStyles.fontSize,\r\n fontFamily: elementStyles.fontFamily,\r\n letterSpacing: elementStyles.letterSpacing,\r\n border: elementStyles.border,\r\n paddingTop: includePaddings ? elementStyles.paddingTop : \"\",\r\n paddingRight: includePaddings ? elementStyles.paddingRight : \"\",\r\n paddingBottom: includePaddings ? elementStyles.paddingBottom : \"\",\r\n paddingLeft: includePaddings ? elementStyles.paddingLeft : \"\",\r\n visibility: \"hidden\",\r\n whiteSpace: \"pre\",\r\n position: \"absolute\",\r\n float: \"left\"\r\n })\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.mask.parts.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getPatternSetters\r\n} from \"../../localization/ldml/date.parser\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar monthGetter = date => date.getMonth() + 1;\r\nvar monthSetter = (date, value) => {\r\n var day = date.getDate();\r\n var monthLimits = getLimits(\"M\", date);\r\n var newValue = fitIntoRange(parseInt(value), monthLimits.min, monthLimits.max);\r\n date.setMonth(newValue - 1, 1);\r\n var {\r\n min: min,\r\n max: max\r\n } = getLimits(\"dM\", date);\r\n var newDay = fitIntoRange(day, min, max);\r\n date.setDate(newDay)\r\n};\r\nvar PATTERN_GETTERS = {\r\n a: date => date.getHours() < 12 ? 0 : 1,\r\n E: \"getDay\",\r\n y: \"getFullYear\",\r\n M: monthGetter,\r\n L: monthGetter,\r\n d: \"getDate\",\r\n H: \"getHours\",\r\n h: \"getHours\",\r\n m: \"getMinutes\",\r\n s: \"getSeconds\",\r\n S: \"getMilliseconds\"\r\n};\r\nvar PATTERN_SETTERS = extend({}, getPatternSetters(), {\r\n a: (date, value) => {\r\n var hours = date.getHours();\r\n var current = hours >= 12;\r\n if (current === !!parseInt(value)) {\r\n return\r\n }\r\n date.setHours((hours + 12) % 24)\r\n },\r\n d: (date, value) => {\r\n var lastDayInMonth = getLimits(\"dM\", date).max;\r\n if (value > lastDayInMonth) {\r\n date.setMonth(date.getMonth() + 1)\r\n }\r\n date.setDate(value)\r\n },\r\n h: (date, value) => {\r\n var isPM = date.getHours() >= 12;\r\n date.setHours(+value % 12 + (isPM ? 12 : 0))\r\n },\r\n M: monthSetter,\r\n L: monthSetter,\r\n E: (date, value) => {\r\n if (value < 0) {\r\n return\r\n }\r\n date.setDate(date.getDate() - date.getDay() + parseInt(value))\r\n },\r\n y: (date, value) => {\r\n var currentYear = date.getFullYear();\r\n var valueLength = String(value).length;\r\n var maxLimitLength = String(getLimits(\"y\", date).max).length;\r\n var newValue = parseInt(String(currentYear).substr(0, maxLimitLength - valueLength) + value);\r\n date.setFullYear(newValue)\r\n }\r\n});\r\nvar getPatternGetter = patternChar => PATTERN_GETTERS[patternChar] || (() => patternChar);\r\nexport var renderDateParts = (text, regExpInfo) => {\r\n var result = regExpInfo.regexp.exec(text);\r\n var start = 0;\r\n var end = 0;\r\n var sections = [];\r\n var _loop = function(i) {\r\n start = end;\r\n end = start + result[i].length;\r\n var pattern = regExpInfo.patterns[i - 1].replace(/^'|'$/g, \"\");\r\n var getter = getPatternGetter(pattern[0]);\r\n sections.push({\r\n index: i - 1,\r\n isStub: pattern === result[i],\r\n caret: {\r\n start: start,\r\n end: end\r\n },\r\n pattern: pattern,\r\n text: result[i],\r\n limits: function() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n return getLimits(pattern[0], ...args)\r\n },\r\n setter: PATTERN_SETTERS[pattern[0]] || noop,\r\n getter: getter\r\n })\r\n };\r\n for (var i = 1; i < result.length; i++) {\r\n _loop(i)\r\n }\r\n return sections\r\n};\r\nvar getLimits = (pattern, date, forcedPattern) => {\r\n var limits = {\r\n y: {\r\n min: 0,\r\n max: 9999\r\n },\r\n M: {\r\n min: 1,\r\n max: 12\r\n },\r\n L: {\r\n min: 1,\r\n max: 12\r\n },\r\n d: {\r\n min: 1,\r\n max: 31\r\n },\r\n dM: {\r\n min: 1,\r\n max: new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()\r\n },\r\n E: {\r\n min: 0,\r\n max: 6\r\n },\r\n H: {\r\n min: 0,\r\n max: 23\r\n },\r\n h: {\r\n min: 0,\r\n max: 23\r\n },\r\n m: {\r\n min: 0,\r\n max: 59\r\n },\r\n s: {\r\n min: 0,\r\n max: 59\r\n },\r\n S: {\r\n min: 0,\r\n max: 999\r\n },\r\n a: {\r\n min: 0,\r\n max: 1\r\n }\r\n };\r\n return limits[forcedPattern || pattern] || limits.getAmPm\r\n};\r\nexport var getDatePartIndexByPosition = (dateParts, position) => {\r\n for (var i = 0; i < dateParts.length; i++) {\r\n var caretInGroup = dateParts[i].caret.end >= position;\r\n if (!dateParts[i].isStub && caretInGroup) {\r\n return i\r\n }\r\n }\r\n return null\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n isDate\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport dateLocalization from \"../../localization/date\";\r\nvar DATE_COMPONENTS = [\"year\", \"day\", \"month\", \"day\"];\r\nvar TIME_COMPONENTS = [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\r\nvar ONE_MINUTE = 6e4;\r\nvar ONE_DAY = 60 * ONE_MINUTE * 24;\r\nvar ONE_YEAR = 365 * ONE_DAY;\r\nvar getStringFormat = function(format) {\r\n var formatType = typeof format;\r\n if (\"string\" === formatType) {\r\n return \"format\"\r\n }\r\n if (\"object\" === formatType && void 0 !== format.type) {\r\n return format.type\r\n }\r\n return null\r\n};\r\nvar dateUtils = {\r\n SUPPORTED_FORMATS: [\"date\", \"time\", \"datetime\"],\r\n ONE_MINUTE: ONE_MINUTE,\r\n ONE_DAY: ONE_DAY,\r\n ONE_YEAR: ONE_YEAR,\r\n MIN_DATEVIEW_DEFAULT_DATE: new Date(1900, 0, 1),\r\n MAX_DATEVIEW_DEFAULT_DATE: function() {\r\n var newDate = new Date;\r\n return new Date(newDate.getFullYear() + 50, newDate.getMonth(), newDate.getDate(), 23, 59, 59)\r\n }(),\r\n FORMATS_INFO: {\r\n date: {\r\n getStandardPattern: function() {\r\n return \"yyyy-MM-dd\"\r\n },\r\n components: DATE_COMPONENTS\r\n },\r\n time: {\r\n getStandardPattern: function() {\r\n return \"HH:mm\"\r\n },\r\n components: TIME_COMPONENTS\r\n },\r\n datetime: {\r\n getStandardPattern: function() {\r\n var standardPattern;\r\n ! function() {\r\n var $input = $(\"\").attr(\"type\", \"datetime\");\r\n $input.val(\"2000-01-01T01:01Z\");\r\n if ($input.val()) {\r\n standardPattern = \"yyyy-MM-ddTHH:mmZ\"\r\n }\r\n }();\r\n if (!standardPattern) {\r\n standardPattern = \"yyyy-MM-ddTHH:mm:ssZ\"\r\n }\r\n dateUtils.FORMATS_INFO.datetime.getStandardPattern = function() {\r\n return standardPattern\r\n };\r\n return standardPattern\r\n },\r\n components: [...DATE_COMPONENTS, ...TIME_COMPONENTS]\r\n },\r\n \"datetime-local\": {\r\n getStandardPattern: function() {\r\n return \"yyyy-MM-ddTHH:mm:ss\"\r\n },\r\n components: [...DATE_COMPONENTS, \"hours\", \"minutes\", \"seconds\"]\r\n }\r\n },\r\n FORMATS_MAP: {\r\n date: \"shortdate\",\r\n time: \"shorttime\",\r\n datetime: \"shortdateshorttime\"\r\n },\r\n SUBMIT_FORMATS_MAP: {\r\n date: \"date\",\r\n time: \"time\",\r\n datetime: \"datetime-local\"\r\n },\r\n toStandardDateFormat: function(date, type) {\r\n var pattern = dateUtils.FORMATS_INFO[type].getStandardPattern();\r\n return dateSerialization.serializeDate(date, pattern)\r\n },\r\n fromStandardDateFormat: function(text) {\r\n var date = dateSerialization.dateParser(text);\r\n return isDate(date) ? date : void 0\r\n },\r\n getMaxMonthDay: function(year, month) {\r\n return new Date(year, month + 1, 0).getDate()\r\n },\r\n mergeDates: function(oldValue, newValue, format) {\r\n if (!newValue) {\r\n return newValue || null\r\n }\r\n if (!oldValue || isNaN(oldValue.getTime())) {\r\n var now = new Date(null);\r\n oldValue = new Date(now.getFullYear(), now.getMonth(), now.getDate())\r\n }\r\n var result = new Date(oldValue.valueOf());\r\n var formatInfo = dateUtils.FORMATS_INFO[format];\r\n each(formatInfo.components, (function() {\r\n var componentInfo = dateUtils.DATE_COMPONENTS_INFO[this];\r\n result[componentInfo.setter](newValue[componentInfo.getter]())\r\n }));\r\n return result\r\n },\r\n getLongestCaptionIndex: function(captionArray) {\r\n var longestIndex = 0;\r\n var longestCaptionLength = 0;\r\n var i;\r\n for (i = 0; i < captionArray.length; ++i) {\r\n if (captionArray[i].length > longestCaptionLength) {\r\n longestIndex = i;\r\n longestCaptionLength = captionArray[i].length\r\n }\r\n }\r\n return longestIndex\r\n },\r\n formatUsesMonthName: function(format) {\r\n return dateLocalization.formatUsesMonthName(format)\r\n },\r\n formatUsesDayName: function(format) {\r\n return dateLocalization.formatUsesDayName(format)\r\n },\r\n getLongestDate: function(format, monthNames, dayNames) {\r\n var stringFormat = getStringFormat(format);\r\n var month = 9;\r\n if (!stringFormat || dateUtils.formatUsesMonthName(stringFormat)) {\r\n month = dateUtils.getLongestCaptionIndex(monthNames)\r\n }\r\n var longestDate = new Date(1888, month, 21, 23, 59, 59, 999);\r\n if (!stringFormat || dateUtils.formatUsesDayName(stringFormat)) {\r\n var date = longestDate.getDate() - longestDate.getDay() + dateUtils.getLongestCaptionIndex(dayNames);\r\n longestDate.setDate(date)\r\n }\r\n return longestDate\r\n },\r\n normalizeTime: function(date) {\r\n date.setSeconds(0);\r\n date.setMilliseconds(0)\r\n }\r\n};\r\ndateUtils.DATE_COMPONENTS_INFO = {\r\n year: {\r\n getter: \"getFullYear\",\r\n setter: \"setFullYear\",\r\n formatter: function(value, date) {\r\n var formatDate = new Date(date.getTime());\r\n formatDate.setFullYear(value);\r\n return dateLocalization.format(formatDate, \"yyyy\")\r\n },\r\n startValue: void 0,\r\n endValue: void 0\r\n },\r\n day: {\r\n getter: \"getDate\",\r\n setter: \"setDate\",\r\n formatter: function(value, date) {\r\n var formatDate = new Date(date.getTime());\r\n formatDate.setDate(value);\r\n return dateLocalization.format(formatDate, \"d\")\r\n },\r\n startValue: 1,\r\n endValue: void 0\r\n },\r\n month: {\r\n getter: \"getMonth\",\r\n setter: \"setMonth\",\r\n formatter: function(value) {\r\n return dateLocalization.getMonthNames()[value]\r\n },\r\n startValue: 0,\r\n endValue: 11\r\n },\r\n hours: {\r\n getter: \"getHours\",\r\n setter: \"setHours\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, value), \"hour\")\r\n },\r\n startValue: 0,\r\n endValue: 23\r\n },\r\n minutes: {\r\n getter: \"getMinutes\",\r\n setter: \"setMinutes\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, 0, value), \"minute\")\r\n },\r\n startValue: 0,\r\n endValue: 59\r\n },\r\n seconds: {\r\n getter: \"getSeconds\",\r\n setter: \"setSeconds\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, 0, 0, value), \"second\")\r\n },\r\n startValue: 0,\r\n endValue: 59\r\n },\r\n milliseconds: {\r\n getter: \"getMilliseconds\",\r\n setter: \"setMilliseconds\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, 0, 0, 0, value), \"millisecond\")\r\n },\r\n startValue: 0,\r\n endValue: 999\r\n }\r\n};\r\nexport default dateUtils;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.navigator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport Button from \"../button\";\r\nvar CALENDAR_NAVIGATOR_CLASS = \"dx-calendar-navigator\";\r\nvar CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS = \"dx-calendar-navigator-previous-month\";\r\nvar CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS = \"dx-calendar-navigator-next-month\";\r\nvar CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS = \"dx-calendar-navigator-previous-view\";\r\nvar CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS = \"dx-calendar-navigator-next-view\";\r\nvar CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS = \"dx-calendar-disabled-navigator-link\";\r\nvar CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS = \"dx-calendar-caption-button\";\r\nvar Navigator = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n onClick: null,\r\n onCaptionClick: null,\r\n text: \"\"\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initActions()\r\n },\r\n _initActions: function() {\r\n this._clickAction = this._createActionByOption(\"onClick\");\r\n this._captionClickAction = this._createActionByOption(\"onCaptionClick\")\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(CALENDAR_NAVIGATOR_CLASS);\r\n this._renderButtons();\r\n this._renderCaption()\r\n },\r\n _renderButtons: function() {\r\n var that = this;\r\n var direction = this.option(\"rtlEnabled\") ? -1 : 1;\r\n this._prevButton = this._createComponent($(\"\"), Button, {\r\n focusStateEnabled: false,\r\n icon: \"chevronleft\",\r\n onClick: function(e) {\r\n that._clickAction({\r\n direction: -direction,\r\n event: e\r\n })\r\n },\r\n integrationOptions: {}\r\n });\r\n var $prevButton = this._prevButton.$element().addClass(CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS).addClass(CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS);\r\n this._nextButton = this._createComponent($(\"\"), Button, {\r\n focusStateEnabled: false,\r\n icon: \"chevronright\",\r\n onClick: function(e) {\r\n that._clickAction({\r\n direction: direction,\r\n event: e\r\n })\r\n },\r\n integrationOptions: {}\r\n });\r\n var $nextButton = this._nextButton.$element().addClass(CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS).addClass(CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS);\r\n this._caption = this._createComponent($(\"\").addClass(CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS), Button, {\r\n focusStateEnabled: false,\r\n onClick: function(e) {\r\n that._captionClickAction({\r\n event: e\r\n })\r\n },\r\n integrationOptions: {}\r\n });\r\n var $caption = this._caption.$element();\r\n this.$element().append($prevButton, $caption, $nextButton)\r\n },\r\n _renderCaption: function() {\r\n this._caption.option(\"text\", this.option(\"text\"))\r\n },\r\n toggleButton: function(buttonPrefix, value) {\r\n var buttonName = \"_\" + buttonPrefix + \"Button\";\r\n var button = this[buttonName];\r\n if (button) {\r\n button.option(\"disabled\", value);\r\n button.$element().toggleClass(CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS, value)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"text\":\r\n this._renderCaption();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default Navigator;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.base_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport coreDateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nvar {\r\n abstract: abstract\r\n} = Widget;\r\nvar CALENDAR_OTHER_VIEW_CLASS = \"dx-calendar-other-view\";\r\nvar CALENDAR_CELL_CLASS = \"dx-calendar-cell\";\r\nvar CALENDAR_EMPTY_CELL_CLASS = \"dx-calendar-empty-cell\";\r\nvar CALENDAR_TODAY_CLASS = \"dx-calendar-today\";\r\nvar CALENDAR_SELECTED_DATE_CLASS = \"dx-calendar-selected-date\";\r\nvar CALENDAR_CONTOURED_DATE_CLASS = \"dx-calendar-contoured-date\";\r\nvar CALENDAR_DXCLICK_EVENT_NAME = addNamespace(clickEventName, \"dxCalendar\");\r\nvar CALENDAR_DATE_VALUE_KEY = \"dxDateValueKey\";\r\nvar BaseView = Widget.inherit({\r\n _getViewName: function() {\r\n return \"base\"\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n date: new Date,\r\n focusStateEnabled: false,\r\n cellTemplate: null,\r\n disabledDates: null,\r\n onCellClick: null,\r\n rowCount: 3,\r\n colCount: 4,\r\n allowValueSelection: true,\r\n _todayDate: () => new Date\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderImpl()\r\n },\r\n _renderImpl: function() {\r\n this.$element().append(this._createTable());\r\n this._createDisabledDatesHandler();\r\n this._renderBody();\r\n this._renderContouredDate();\r\n this._renderValue();\r\n this._renderEvents()\r\n },\r\n _createTable: function() {\r\n this._$table = $(\"\");\r\n this.setAria({\r\n label: messageLocalization.format(\"dxCalendar-ariaWidgetName\"),\r\n role: \"grid\"\r\n }, this._$table);\r\n return this._$table\r\n },\r\n _renderBody: function() {\r\n this.$body = $(\"\").appendTo(this._$table);\r\n var rowData = {\r\n cellDate: this._getFirstCellData(),\r\n prevCellDate: null\r\n };\r\n for (var rowIndex = 0, rowCount = this.option(\"rowCount\"); rowIndex < rowCount; rowIndex++) {\r\n rowData.row = this._createRow();\r\n for (var colIndex = 0, colCount = this.option(\"colCount\"); colIndex < colCount; colIndex++) {\r\n this._renderCell(rowData, colIndex)\r\n }\r\n }\r\n },\r\n _createRow: function() {\r\n var row = domAdapter.createElement(\"tr\");\r\n this.setAria(\"role\", \"row\", $(row));\r\n this.$body.get(0).appendChild(row);\r\n return row\r\n },\r\n _appendCell: function(row, cell) {\r\n if (!this._appendMethodName) {\r\n this._cacheAppendMethodName()\r\n }\r\n $(row)[this._appendMethodName](cell)\r\n },\r\n _cacheAppendMethodName: function(rtlEnabled) {\r\n this._appendMethodName = (null !== rtlEnabled && void 0 !== rtlEnabled ? rtlEnabled : this.option(\"rtlEnabled\")) ? \"prepend\" : \"append\"\r\n },\r\n _createCell: function(cellDate) {\r\n var cell = domAdapter.createElement(\"td\");\r\n var $cell = $(cell);\r\n cell.className = this._getClassNameByDate(cellDate);\r\n cell.setAttribute(\"data-value\", dateSerialization.serializeDate(cellDate, coreDateUtils.getShortDateFormat()));\r\n elementData(cell, CALENDAR_DATE_VALUE_KEY, cellDate);\r\n this.setAria({\r\n role: \"gridcell\",\r\n label: this.getCellAriaLabel(cellDate)\r\n }, $cell);\r\n return {\r\n cell: cell,\r\n $cell: $cell\r\n }\r\n },\r\n _renderCell: function(params, cellIndex) {\r\n var {\r\n cellDate: cellDate,\r\n prevCellDate: prevCellDate,\r\n row: row\r\n } = params;\r\n if (prevCellDate) {\r\n coreDateUtils.fixTimezoneGap(prevCellDate, cellDate)\r\n }\r\n params.prevCellDate = cellDate;\r\n var {\r\n cell: cell,\r\n $cell: $cell\r\n } = this._createCell(cellDate);\r\n var cellTemplate = this.option(\"cellTemplate\");\r\n this._appendCell(row, cell);\r\n if (cellTemplate) {\r\n cellTemplate.render(this._prepareCellTemplateData(cellDate, cellIndex, $cell))\r\n } else {\r\n cell.innerHTML = this._getCellText(cellDate)\r\n }\r\n params.cellDate = this._getNextCellData(cellDate)\r\n },\r\n _getClassNameByDate: function(cellDate) {\r\n var className = CALENDAR_CELL_CLASS;\r\n if (this._isTodayCell(cellDate)) {\r\n className += \" \".concat(CALENDAR_TODAY_CLASS)\r\n }\r\n if (this._isDateOutOfRange(cellDate) || this.isDateDisabled(cellDate)) {\r\n className += \" \".concat(CALENDAR_EMPTY_CELL_CLASS)\r\n }\r\n if (this._isOtherView(cellDate)) {\r\n className += \" \".concat(CALENDAR_OTHER_VIEW_CLASS)\r\n }\r\n return className\r\n },\r\n _prepareCellTemplateData: function(cellDate, cellIndex, $cell) {\r\n return {\r\n model: {\r\n text: this._getCellText(cellDate),\r\n date: cellDate,\r\n view: this._getViewName()\r\n },\r\n container: getPublicElement($cell),\r\n index: cellIndex\r\n }\r\n },\r\n _renderEvents: function() {\r\n this._createCellClickAction();\r\n eventsEngine.off(this._$table, CALENDAR_DXCLICK_EVENT_NAME);\r\n eventsEngine.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, \"td\", e => {\r\n if (!$(e.currentTarget).hasClass(CALENDAR_EMPTY_CELL_CLASS)) {\r\n this._cellClickAction({\r\n event: e,\r\n value: $(e.currentTarget).data(CALENDAR_DATE_VALUE_KEY)\r\n })\r\n }\r\n })\r\n },\r\n _createCellClickAction: function() {\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\")\r\n },\r\n _createDisabledDatesHandler: function() {\r\n var disabledDates = this.option(\"disabledDates\");\r\n this._disabledDatesHandler = Array.isArray(disabledDates) ? this._getDefaultDisabledDatesHandler(disabledDates) : disabledDates || noop\r\n },\r\n _getDefaultDisabledDatesHandler: function(disabledDates) {\r\n return noop\r\n },\r\n _isTodayCell: abstract,\r\n _isDateOutOfRange: abstract,\r\n isDateDisabled: function(cellDate) {\r\n var dateParts = {\r\n date: cellDate,\r\n view: this._getViewName()\r\n };\r\n return this._disabledDatesHandler(dateParts)\r\n },\r\n _isOtherView: abstract,\r\n _getCellText: abstract,\r\n _getFirstCellData: abstract,\r\n _getNextCellData: abstract,\r\n _renderContouredDate: function(contouredDate) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n contouredDate = contouredDate || this.option(\"contouredDate\");\r\n var $oldContouredCell = this._getContouredCell();\r\n var $newContouredCell = this._getCellByDate(contouredDate);\r\n $oldContouredCell.removeClass(CALENDAR_CONTOURED_DATE_CLASS);\r\n $newContouredCell.addClass(CALENDAR_CONTOURED_DATE_CLASS)\r\n },\r\n _getContouredCell: function() {\r\n return this._$table.find(\".\".concat(CALENDAR_CONTOURED_DATE_CLASS))\r\n },\r\n _changeValue: function(cellDate) {\r\n if (cellDate) {\r\n var value = this.option(\"value\");\r\n var newValue = value ? new Date(value) : new Date;\r\n newValue.setDate(cellDate.getDate());\r\n newValue.setMonth(cellDate.getMonth());\r\n newValue.setFullYear(cellDate.getFullYear());\r\n newValue.setDate(cellDate.getDate());\r\n this.option(\"value\", newValue)\r\n } else {\r\n this.option(\"value\", null)\r\n }\r\n },\r\n _renderValue: function() {\r\n if (!this.option(\"allowValueSelection\")) {\r\n return\r\n }\r\n var value = this.option(\"value\");\r\n var selectedCell = this._getCellByDate(value);\r\n if (this._selectedCell) {\r\n this._selectedCell.removeClass(CALENDAR_SELECTED_DATE_CLASS)\r\n }\r\n selectedCell.addClass(CALENDAR_SELECTED_DATE_CLASS);\r\n this._selectedCell = selectedCell\r\n },\r\n getCellAriaLabel: function(date) {\r\n return this._getCellText(date)\r\n },\r\n _getFirstAvailableDate: function() {\r\n var date = this.option(\"date\");\r\n var min = this.option(\"min\");\r\n date = coreDateUtils.getFirstDateView(this._getViewName(), date);\r\n return new Date(min && date < min ? min : date)\r\n },\r\n _getCellByDate: abstract,\r\n isBoundary: abstract,\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"value\":\r\n this._renderValue();\r\n break;\r\n case \"contouredDate\":\r\n this._renderContouredDate(value);\r\n break;\r\n case \"onCellClick\":\r\n this._createCellClickAction();\r\n break;\r\n case \"disabledDates\":\r\n case \"cellTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"rtlEnabled\":\r\n this._cacheAppendMethodName(value);\r\n this.callBase(args);\r\n break;\r\n case \"_todayDate\":\r\n this._renderBody();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default BaseView;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.views.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport BaseView from \"./ui.calendar.base_view\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nvar CALENDAR_OTHER_MONTH_CLASS = \"dx-calendar-other-month\";\r\nvar CALENDAR_OTHER_VIEW_CLASS = \"dx-calendar-other-view\";\r\nvar Views = {\r\n month: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"month\"\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n firstDayOfWeek: void 0,\r\n rowCount: 6,\r\n colCount: 7\r\n })\r\n },\r\n _renderImpl: function() {\r\n this.callBase();\r\n this._renderHeader()\r\n },\r\n _renderBody: function() {\r\n this.callBase();\r\n this._$table.find(\".\".concat(CALENDAR_OTHER_VIEW_CLASS)).addClass(CALENDAR_OTHER_MONTH_CLASS)\r\n },\r\n _renderFocusTarget: noop,\r\n getCellAriaLabel: function(date) {\r\n return dateLocalization.format(date, \"longdate\")\r\n },\r\n _renderHeader: function() {\r\n var $headerRow = $(\"\");\r\n var $header = $(\"\").append($headerRow);\r\n this._$table.prepend($header);\r\n for (var colIndex = 0, colCount = this.option(\"colCount\"); colIndex < colCount; colIndex++) {\r\n this._renderHeaderCell(colIndex, $headerRow)\r\n }\r\n },\r\n _renderHeaderCell: function(cellIndex, $headerRow) {\r\n var {\r\n full: fullCaption,\r\n abbreviated: abbrCaption\r\n } = this._getDayCaption(this._getFirstDayOfWeek() + cellIndex);\r\n var $cell = $(\"
\").attr({\r\n scope: \"col\",\r\n abbr: fullCaption\r\n }).text(abbrCaption);\r\n this._appendCell($headerRow, $cell)\r\n },\r\n getNavigatorCaption: function() {\r\n return dateLocalization.format(this.option(\"date\"), \"monthandyear\")\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameDate(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n var minDate = this.option(\"min\");\r\n var maxDate = this.option(\"max\");\r\n return !dateUtils.dateInRange(cellDate, minDate, maxDate, \"date\")\r\n },\r\n _isOtherView: function(cellDate) {\r\n return cellDate.getMonth() !== this.option(\"date\").getMonth()\r\n },\r\n _getCellText: function(cellDate) {\r\n return dateLocalization.format(cellDate, \"d\")\r\n },\r\n _getDayCaption: function(day) {\r\n var daysInWeek = this.option(\"colCount\");\r\n var dayIndex = day % daysInWeek;\r\n return {\r\n full: dateLocalization.getDayNames()[dayIndex],\r\n abbreviated: dateLocalization.getDayNames(\"abbreviated\")[dayIndex]\r\n }\r\n },\r\n _getFirstCellData: function() {\r\n var firstDay = dateUtils.getFirstMonthDate(this.option(\"date\"));\r\n var firstMonthDayOffset = this._getFirstDayOfWeek() - firstDay.getDay();\r\n var daysInWeek = this.option(\"colCount\");\r\n if (firstMonthDayOffset >= 0) {\r\n firstMonthDayOffset -= daysInWeek\r\n }\r\n firstDay.setDate(firstDay.getDate() + firstMonthDayOffset);\r\n return firstDay\r\n },\r\n _getNextCellData: function(date) {\r\n date = dateUtils.createDate(date);\r\n date.setDate(date.getDate() + 1);\r\n return date\r\n },\r\n _getFirstDayOfWeek: function() {\r\n return isDefined(this.option(\"firstDayOfWeek\")) ? this.option(\"firstDayOfWeek\") : dateLocalization.firstDayOfWeekIndex()\r\n },\r\n _getCellByDate: function(date) {\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(date, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameMonthAndYear(date, this.option(\"min\")) || dateUtils.sameMonthAndYear(date, this.option(\"max\"))\r\n },\r\n _getDefaultDisabledDatesHandler: function(disabledDates) {\r\n return function(args) {\r\n var isDisabledDate = disabledDates.some((function(item) {\r\n return dateUtils.sameDate(item, args.date)\r\n }));\r\n if (isDisabledDate) {\r\n return true\r\n }\r\n }\r\n }\r\n }),\r\n year: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"year\"\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameMonthAndYear(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n return !dateUtils.dateInRange(cellDate, dateUtils.getFirstMonthDate(this.option(\"min\")), dateUtils.getLastMonthDate(this.option(\"max\")))\r\n },\r\n _isOtherView: function() {\r\n return false\r\n },\r\n _getCellText: function(cellDate) {\r\n return dateLocalization.getMonthNames(\"abbreviated\")[cellDate.getMonth()]\r\n },\r\n _getFirstCellData: function() {\r\n var currentDate = this.option(\"date\");\r\n var data = dateUtils.createDate(currentDate);\r\n data.setDate(1);\r\n data.setMonth(0);\r\n return data\r\n },\r\n _getNextCellData: function(date) {\r\n date = dateUtils.createDate(date);\r\n date.setMonth(date.getMonth() + 1);\r\n return date\r\n },\r\n _getCellByDate: function(date) {\r\n var foundDate = dateUtils.createDate(date);\r\n foundDate.setDate(1);\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(foundDate, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n getCellAriaLabel: function(date) {\r\n return dateLocalization.format(date, \"monthandyear\")\r\n },\r\n getNavigatorCaption: function() {\r\n return dateLocalization.format(this.option(\"date\"), \"yyyy\")\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameYear(date, this.option(\"min\")) || dateUtils.sameYear(date, this.option(\"max\"))\r\n }\r\n }),\r\n decade: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"decade\"\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameYear(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n return !dateUtils.dateInRange(cellDate.getFullYear(), min && min.getFullYear(), max && max.getFullYear())\r\n },\r\n _isOtherView: function(cellDate) {\r\n var date = dateUtils.createDate(cellDate);\r\n date.setMonth(1);\r\n return !dateUtils.sameDecade(date, this.option(\"date\"))\r\n },\r\n _getCellText: function(cellDate) {\r\n return dateLocalization.format(cellDate, \"yyyy\")\r\n },\r\n _getFirstCellData: function() {\r\n var year = dateUtils.getFirstYearInDecade(this.option(\"date\")) - 1;\r\n return dateUtils.createDateWithFullYear(year, 0, 1)\r\n },\r\n _getNextCellData: function(date) {\r\n date = dateUtils.createDate(date);\r\n date.setFullYear(date.getFullYear() + 1);\r\n return date\r\n },\r\n getNavigatorCaption: function() {\r\n var currentDate = this.option(\"date\");\r\n var firstYearInDecade = dateUtils.getFirstYearInDecade(currentDate);\r\n var startDate = dateUtils.createDate(currentDate);\r\n var endDate = dateUtils.createDate(currentDate);\r\n startDate.setFullYear(firstYearInDecade);\r\n endDate.setFullYear(firstYearInDecade + 9);\r\n return dateLocalization.format(startDate, \"yyyy\") + \"-\" + dateLocalization.format(endDate, \"yyyy\")\r\n },\r\n _isValueOnCurrentView: function(currentDate, value) {\r\n return dateUtils.sameDecade(currentDate, value)\r\n },\r\n _getCellByDate: function(date) {\r\n var foundDate = dateUtils.createDate(date);\r\n foundDate.setDate(1);\r\n foundDate.setMonth(0);\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(foundDate, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameDecade(date, this.option(\"min\")) || dateUtils.sameDecade(date, this.option(\"max\"))\r\n }\r\n }),\r\n century: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"century\"\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameDecade(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n var decade = dateUtils.getFirstYearInDecade(cellDate);\r\n var minDecade = dateUtils.getFirstYearInDecade(this.option(\"min\"));\r\n var maxDecade = dateUtils.getFirstYearInDecade(this.option(\"max\"));\r\n return !dateUtils.dateInRange(decade, minDecade, maxDecade)\r\n },\r\n _isOtherView: function(cellDate) {\r\n var date = dateUtils.createDate(cellDate);\r\n date.setMonth(1);\r\n return !dateUtils.sameCentury(date, this.option(\"date\"))\r\n },\r\n _getCellText: function(cellDate) {\r\n var startDate = dateLocalization.format(cellDate, \"yyyy\");\r\n var endDate = dateUtils.createDate(cellDate);\r\n endDate.setFullYear(endDate.getFullYear() + 9);\r\n return startDate + \" - \" + dateLocalization.format(endDate, \"yyyy\")\r\n },\r\n _getFirstCellData: function() {\r\n var decade = dateUtils.getFirstDecadeInCentury(this.option(\"date\")) - 10;\r\n return dateUtils.createDateWithFullYear(decade, 0, 1)\r\n },\r\n _getNextCellData: function(date) {\r\n date = dateUtils.createDate(date);\r\n date.setFullYear(date.getFullYear() + 10);\r\n return date\r\n },\r\n _getCellByDate: function(date) {\r\n var foundDate = dateUtils.createDate(date);\r\n foundDate.setDate(1);\r\n foundDate.setMonth(0);\r\n foundDate.setFullYear(dateUtils.getFirstYearInDecade(foundDate));\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(foundDate, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n getNavigatorCaption: function() {\r\n var currentDate = this.option(\"date\");\r\n var firstDecadeInCentury = dateUtils.getFirstDecadeInCentury(currentDate);\r\n var startDate = dateUtils.createDate(currentDate);\r\n var endDate = dateUtils.createDate(currentDate);\r\n startDate.setFullYear(firstDecadeInCentury);\r\n endDate.setFullYear(firstDecadeInCentury + 99);\r\n return dateLocalization.format(startDate, \"yyyy\") + \"-\" + dateLocalization.format(endDate, \"yyyy\")\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameCentury(date, this.option(\"min\")) || dateUtils.sameCentury(date, this.option(\"max\"))\r\n }\r\n })\r\n};\r\nexport default Views;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isNumeric,\r\n isString,\r\n isFunction,\r\n isDefined,\r\n isDate\r\n} from \"../../core/utils/type\";\r\nimport {\r\n inRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Button from \"../button\";\r\nimport Editor from \"../editor/editor\";\r\nimport Swipeable from \"../../events/gesture/swipeable\";\r\nimport Navigator from \"./ui.calendar.navigator\";\r\nimport Views from \"./ui.calendar.views\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport devices from \"../../core/devices\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../core/templates/function_template\";\r\nimport {\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nvar CALENDAR_CLASS = \"dx-calendar\";\r\nvar CALENDAR_BODY_CLASS = \"dx-calendar-body\";\r\nvar CALENDAR_CELL_CLASS = \"dx-calendar-cell\";\r\nvar CALENDAR_FOOTER_CLASS = \"dx-calendar-footer\";\r\nvar CALENDAR_TODAY_BUTTON_CLASS = \"dx-calendar-today-button\";\r\nvar CALENDAR_HAS_FOOTER_CLASS = \"dx-calendar-with-footer\";\r\nvar CALENDAR_VIEWS_WRAPPER_CLASS = \"dx-calendar-views-wrapper\";\r\nvar CALENDAR_VIEW_CLASS = \"dx-calendar-view\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar ANIMATION_DURATION_SHOW_VIEW = 250;\r\nvar POP_ANIMATION_FROM = .6;\r\nvar POP_ANIMATION_TO = 1;\r\nvar CALENDAR_INPUT_STANDARD_PATTERN = \"yyyy-MM-dd\";\r\nvar CALENDAR_DATE_VALUE_KEY = \"dxDateValueKey\";\r\nvar LEVEL_COMPARE_MAP = {\r\n month: 3,\r\n year: 2,\r\n decade: 1,\r\n century: 0\r\n};\r\nvar ZOOM_LEVEL = {\r\n MONTH: \"month\",\r\n YEAR: \"year\",\r\n DECADE: \"decade\",\r\n CENTURY: \"century\"\r\n};\r\nvar isIE11 = browser.msie && parseInt(browser.version) <= 11;\r\nvar Calendar = Editor.inherit({\r\n _activeStateUnit: \".\" + CALENDAR_CELL_CLASS,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n currentDate: new Date,\r\n value: null,\r\n dateSerializationFormat: void 0,\r\n min: new Date(1e3, 0),\r\n max: new Date(3e3, 0),\r\n firstDayOfWeek: void 0,\r\n zoomLevel: ZOOM_LEVEL.MONTH,\r\n maxZoomLevel: ZOOM_LEVEL.MONTH,\r\n minZoomLevel: ZOOM_LEVEL.CENTURY,\r\n showTodayButton: false,\r\n cellTemplate: \"cell\",\r\n disabledDates: null,\r\n onCellClick: null,\r\n onContouredChanged: null,\r\n hasFocus: function(element) {\r\n return element.hasClass(FOCUSED_STATE_CLASS)\r\n },\r\n _todayDate: () => new Date\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n rightArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._waitRenderView(1)\r\n } else {\r\n this._moveCurrentDateByOffset(1 * this._getRtlCorrection())\r\n }\r\n },\r\n leftArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._waitRenderView(-1)\r\n } else {\r\n this._moveCurrentDateByOffset(-1 * this._getRtlCorrection())\r\n }\r\n },\r\n upArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._navigateUp()\r\n } else {\r\n if (fx.isAnimating(this._view.$element())) {\r\n return\r\n }\r\n this._moveCurrentDateByOffset(-1 * this._view.option(\"colCount\"))\r\n }\r\n },\r\n downArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._navigateDown()\r\n } else {\r\n if (fx.isAnimating(this._view.$element())) {\r\n return\r\n }\r\n this._moveCurrentDateByOffset(1 * this._view.option(\"colCount\"))\r\n }\r\n },\r\n home: function(e) {\r\n e.preventDefault();\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var currentDate = this.option(\"currentDate\");\r\n var min = this._dateOption(\"min\");\r\n if (this._view.isDateDisabled(currentDate)) {\r\n return\r\n }\r\n var date = dateUtils.sameView(zoomLevel, currentDate, min) ? min : dateUtils.getViewFirstCellDate(zoomLevel, currentDate);\r\n this._moveToClosestAvailableDate(date)\r\n },\r\n end: function(e) {\r\n e.preventDefault();\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var currentDate = this.option(\"currentDate\");\r\n var max = this._dateOption(\"max\");\r\n if (this._view.isDateDisabled(currentDate)) {\r\n return\r\n }\r\n var date = dateUtils.sameView(zoomLevel, currentDate, max) ? max : dateUtils.getViewLastCellDate(zoomLevel, currentDate);\r\n this._moveToClosestAvailableDate(date)\r\n },\r\n pageUp: function(e) {\r\n e.preventDefault();\r\n this._waitRenderView(-1 * this._getRtlCorrection())\r\n },\r\n pageDown: function(e) {\r\n e.preventDefault();\r\n this._waitRenderView(1 * this._getRtlCorrection())\r\n },\r\n tab: noop,\r\n enter: function(e) {\r\n if (!this._isMaxZoomLevel()) {\r\n this._navigateDown()\r\n } else if (!this._view.isDateDisabled(this.option(\"currentDate\"))) {\r\n var value = this._updateTimeComponent(this.option(\"currentDate\"));\r\n this._dateValue(value, e)\r\n }\r\n }\r\n })\r\n },\r\n _getSerializationFormat: function(optionName) {\r\n var value = this.option(optionName || \"value\");\r\n if (this.option(\"dateSerializationFormat\")) {\r\n return this.option(\"dateSerializationFormat\")\r\n }\r\n if (isNumeric(value)) {\r\n return \"number\"\r\n }\r\n if (!isString(value)) {\r\n return\r\n }\r\n return dateSerialization.getDateSerializationFormat(value)\r\n },\r\n _convertToDate: function(value, optionName) {\r\n return dateSerialization.deserializeDate(value)\r\n },\r\n _dateValue: function(value, event) {\r\n if (event) {\r\n if (\"keydown\" === event.type) {\r\n var cellElement = this._view._getContouredCell().get(0);\r\n event.target = cellElement\r\n }\r\n this._saveValueChangeEvent(event)\r\n }\r\n this._dateOption(\"value\", value)\r\n },\r\n _dateOption: function(optionName, optionValue) {\r\n if (1 === arguments.length) {\r\n return this._convertToDate(this.option(optionName), optionName)\r\n }\r\n var serializationFormat = this._getSerializationFormat(optionName);\r\n this.option(optionName, dateSerialization.serializeDate(optionValue, serializationFormat))\r\n },\r\n _shiftDate: function(zoomLevel, date, offset, reverse) {\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.MONTH:\r\n date.setDate(date.getDate() + offset * reverse);\r\n break;\r\n case ZOOM_LEVEL.YEAR:\r\n date.setMonth(date.getMonth() + offset * reverse);\r\n break;\r\n case ZOOM_LEVEL.DECADE:\r\n date.setFullYear(date.getFullYear() + offset * reverse);\r\n break;\r\n case ZOOM_LEVEL.CENTURY:\r\n date.setFullYear(date.getFullYear() + 10 * offset * reverse)\r\n }\r\n },\r\n _moveCurrentDateByOffset: function(offset) {\r\n var baseDate = this.option(\"currentDate\");\r\n var currentDate = new Date(baseDate);\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n this._shiftDate(zoomLevel, currentDate, offset, 1);\r\n var maxDate = this._getMaxDate();\r\n var minDate = this._getMinDate();\r\n var isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, currentDate, baseDate);\r\n var isDateForwardInRange = inRange(currentDate, minDate, maxDate) && isDateForwardInNeighborView;\r\n var dateForward = new Date(currentDate);\r\n while (isDateForwardInRange) {\r\n if (!this._view.isDateDisabled(dateForward)) {\r\n currentDate = dateForward;\r\n break\r\n }\r\n this._shiftDate(zoomLevel, dateForward, offset, 1);\r\n isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, dateForward, baseDate);\r\n isDateForwardInRange = inRange(dateForward, minDate, maxDate) && isDateForwardInNeighborView\r\n }\r\n if (this._view.isDateDisabled(baseDate) || this._view.isDateDisabled(currentDate)) {\r\n this._waitRenderView(offset > 0 ? 1 : -1)\r\n } else {\r\n this.option(\"currentDate\", currentDate)\r\n }\r\n },\r\n _areDatesInSameView(zoomLevel, date1, date2) {\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.MONTH:\r\n return date1.getMonth() === date2.getMonth();\r\n case ZOOM_LEVEL.YEAR:\r\n return date1.getYear() === date2.getYear();\r\n case ZOOM_LEVEL.DECADE:\r\n return parseInt(date1.getYear() / 10) === parseInt(date2.getYear() / 10);\r\n case ZOOM_LEVEL.CENTURY:\r\n return parseInt(date1.getYear() / 100) === parseInt(date2.getYear() / 100)\r\n }\r\n },\r\n _areDatesInNeighborView(zoomLevel, date1, date2) {\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.MONTH:\r\n return (a = date1.getMonth(), b = date2.getMonth(), abs = Math.abs(a - b), Math.min(abs, 12 - abs)) <= 1;\r\n case ZOOM_LEVEL.YEAR:\r\n return Math.abs(date1.getYear() - date2.getYear()) <= 1;\r\n case ZOOM_LEVEL.DECADE:\r\n return Math.abs(date1.getYear() - date2.getYear()) <= 10;\r\n case ZOOM_LEVEL.CENTURY:\r\n return Math.abs(date1.getYear() - date2.getYear()) <= 100\r\n }\r\n var a, b, abs\r\n },\r\n _moveToClosestAvailableDate: function() {\r\n var baseDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option(\"currentDate\");\r\n var currentDate = dateUtils.createDate(baseDate);\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var isCurrentDateAvailable = !this._isDateNotAvailable(currentDate);\r\n var isDateForwardAvailable = isCurrentDateAvailable;\r\n var isDateBackwardAvailable = isCurrentDateAvailable;\r\n var isDateForwardInStartView;\r\n var isDateBackwardInStartView;\r\n var dateForward = dateUtils.createDate(currentDate);\r\n var dateBackward = dateUtils.createDate(currentDate);\r\n do {\r\n if (isDateForwardAvailable) {\r\n currentDate = dateForward;\r\n break\r\n }\r\n if (isDateBackwardAvailable) {\r\n currentDate = dateBackward;\r\n break\r\n }\r\n this._shiftDate(zoomLevel, dateForward, 1, 1);\r\n this._shiftDate(zoomLevel, dateBackward, 1, -1);\r\n isDateForwardInStartView = this._areDatesInSameView(zoomLevel, dateForward, baseDate);\r\n isDateBackwardInStartView = this._areDatesInSameView(zoomLevel, dateBackward, baseDate);\r\n isDateForwardAvailable = isDateForwardInStartView && !this._isDateNotAvailable(dateForward);\r\n isDateBackwardAvailable = isDateBackwardInStartView && !this._isDateNotAvailable(dateBackward)\r\n } while (isDateForwardInStartView || isDateBackwardInStartView);\r\n this.option(\"currentDate\", currentDate)\r\n },\r\n _isDateNotAvailable: function(date) {\r\n var maxDate = this._getMaxDate();\r\n var minDate = this._getMinDate();\r\n return !inRange(date, minDate, maxDate) || this._view.isDateDisabled(date)\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._correctZoomLevel();\r\n this._initCurrentDate();\r\n this._initActions()\r\n },\r\n _correctZoomLevel: function() {\r\n var minZoomLevel = this.option(\"minZoomLevel\");\r\n var maxZoomLevel = this.option(\"maxZoomLevel\");\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n if (LEVEL_COMPARE_MAP[maxZoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {\r\n return\r\n }\r\n if (LEVEL_COMPARE_MAP[zoomLevel] > LEVEL_COMPARE_MAP[maxZoomLevel]) {\r\n this.option(\"zoomLevel\", maxZoomLevel)\r\n } else if (LEVEL_COMPARE_MAP[zoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {\r\n this.option(\"zoomLevel\", minZoomLevel)\r\n }\r\n },\r\n _initCurrentDate: function() {\r\n var currentDate = this._getNormalizedDate(this._dateOption(\"value\")) || this._getNormalizedDate(this.option(\"currentDate\"));\r\n this.option(\"currentDate\", currentDate)\r\n },\r\n _getNormalizedDate: function(date) {\r\n date = dateUtils.normalizeDate(date, this._getMinDate(), this._getMaxDate());\r\n return isDefined(date) ? this._getDate(date) : date\r\n },\r\n _initActions: function() {\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\");\r\n this._onContouredChanged = this._createActionByOption(\"onContouredChanged\")\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n cell: new FunctionTemplate((function(options) {\r\n var data = options.model;\r\n $(options.container).append($(\"\").text(data && data.text || String(data)))\r\n }))\r\n });\r\n this.callBase()\r\n },\r\n _updateCurrentDate: function(date) {\r\n if (fx.isAnimating(this._$viewsWrapper)) {\r\n fx.stop(this._$viewsWrapper, true)\r\n }\r\n var min = this._getMinDate();\r\n var max = this._getMaxDate();\r\n if (min > max) {\r\n this.option(\"currentDate\", new Date);\r\n return\r\n }\r\n var normalizedDate = this._getNormalizedDate(date);\r\n if (date.getTime() !== normalizedDate.getTime()) {\r\n this.option(\"currentDate\", dateUtils.createDate(normalizedDate));\r\n return\r\n }\r\n var offset = this._getViewsOffset(this._view.option(\"date\"), normalizedDate);\r\n if (0 !== offset && !this._isMaxZoomLevel() && this._isOtherViewCellClicked) {\r\n offset = 0\r\n }\r\n if (this._view && 0 !== offset && !this._suppressNavigation) {\r\n this._navigate(offset, normalizedDate)\r\n } else {\r\n this._renderNavigator();\r\n this._setViewContoured(normalizedDate);\r\n this._updateAriaId(normalizedDate)\r\n }\r\n },\r\n _setViewContoured: function(date) {\r\n if (this.option(\"hasFocus\")(this._focusTarget())) {\r\n this._view.option(\"contouredDate\", date)\r\n }\r\n },\r\n _getMinDate: function() {\r\n if (this.min) {\r\n return this.min\r\n }\r\n this.min = this._dateOption(\"min\") || new Date(1e3, 0);\r\n return this.min\r\n },\r\n _getMaxDate: function() {\r\n if (this.max) {\r\n return this.max\r\n }\r\n this.max = this._dateOption(\"max\") || new Date(3e3, 0);\r\n return this.max\r\n },\r\n _getViewsOffset: function(startDate, endDate) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n if (zoomLevel === ZOOM_LEVEL.MONTH) {\r\n return this._getMonthsOffset(startDate, endDate)\r\n }\r\n var zoomCorrection;\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.CENTURY:\r\n zoomCorrection = 100;\r\n break;\r\n case ZOOM_LEVEL.DECADE:\r\n zoomCorrection = 10;\r\n break;\r\n default:\r\n zoomCorrection = 1\r\n }\r\n return parseInt(endDate.getFullYear() / zoomCorrection) - parseInt(startDate.getFullYear() / zoomCorrection)\r\n },\r\n _getMonthsOffset: function(startDate, endDate) {\r\n var yearOffset = endDate.getFullYear() - startDate.getFullYear();\r\n var monthOffset = endDate.getMonth() - startDate.getMonth();\r\n return 12 * yearOffset + monthOffset\r\n },\r\n _waitRenderView: function(offset) {\r\n if (this._alreadyViewRender) {\r\n return\r\n }\r\n this._alreadyViewRender = true;\r\n var date = this._getDateByOffset(offset * this._getRtlCorrection());\r\n this._moveToClosestAvailableDate(date);\r\n this._waitRenderViewTimeout = setTimeout(() => {\r\n this._alreadyViewRender = false\r\n })\r\n },\r\n _getRtlCorrection: function() {\r\n return this.option(\"rtlEnabled\") ? -1 : 1\r\n },\r\n _getDateByOffset: function(offset, date) {\r\n var _date;\r\n date = this._getDate(null !== (_date = date) && void 0 !== _date ? _date : this.option(\"currentDate\"));\r\n var currentDay = date.getDate();\r\n var difference = dateUtils.getDifferenceInMonth(this.option(\"zoomLevel\")) * offset;\r\n date.setDate(1);\r\n date.setMonth(date.getMonth() + difference);\r\n var lastDay = dateUtils.getLastMonthDate(date).getDate();\r\n date.setDate(currentDay > lastDay ? lastDay : currentDay);\r\n return date\r\n },\r\n _focusTarget: function() {\r\n return this.$element()\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.callBase();\r\n var $element = this.$element();\r\n $element.addClass(CALENDAR_CLASS);\r\n this._renderBody();\r\n $element.append(this.$body);\r\n this._renderViews();\r\n this._renderNavigator();\r\n $element.append(this._navigator.$element());\r\n this._renderSwipeable();\r\n this._renderFooter();\r\n this._updateAriaSelected();\r\n this._updateAriaId();\r\n this._moveToClosestAvailableDate()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._setViewContoured(this.option(\"currentDate\"))\r\n },\r\n _renderBody: function() {\r\n if (!this._$viewsWrapper) {\r\n this.$body = $(\"
\").addClass(CALENDAR_BODY_CLASS);\r\n this._$viewsWrapper = $(\"
\").addClass(CALENDAR_VIEWS_WRAPPER_CLASS);\r\n this.$body.append(this._$viewsWrapper)\r\n }\r\n },\r\n _getKeyboardListeners() {\r\n return this.callBase().concat([this._view])\r\n },\r\n _renderViews: function() {\r\n this.$element().addClass(CALENDAR_VIEW_CLASS + \"-\" + this.option(\"zoomLevel\"));\r\n var currentDate = this.option(\"currentDate\");\r\n this._view = this._renderSpecificView(currentDate);\r\n if (hasWindow()) {\r\n var beforeDate = this._getDateByOffset(-1, currentDate);\r\n this._beforeView = this._isViewAvailable(beforeDate) ? this._renderSpecificView(beforeDate) : null;\r\n var afterDate = this._getDateByOffset(1, currentDate);\r\n afterDate.setDate(1);\r\n this._afterView = this._isViewAvailable(afterDate) ? this._renderSpecificView(afterDate) : null\r\n }\r\n this._translateViews()\r\n },\r\n _renderSpecificView: function(date) {\r\n var specificView = Views[this.option(\"zoomLevel\")];\r\n var $view = $(\"
\").appendTo(this._$viewsWrapper);\r\n var config = this._viewConfig(date);\r\n return this._createComponent($view, specificView, config)\r\n },\r\n _viewConfig: function(date) {\r\n var disabledDates = this.option(\"disabledDates\");\r\n disabledDates = isFunction(disabledDates) ? this._injectComponent(disabledDates.bind(this)) : disabledDates;\r\n return {\r\n date: date,\r\n min: this._getMinDate(),\r\n max: this._getMaxDate(),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n value: this._dateOption(\"value\"),\r\n tabIndex: void 0,\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n disabledDates: disabledDates,\r\n onCellClick: this._cellClickHandler.bind(this),\r\n cellTemplate: this._getTemplateByOption(\"cellTemplate\"),\r\n allowValueSelection: this._isMaxZoomLevel(),\r\n _todayDate: this.option(\"_todayDate\")\r\n }\r\n },\r\n _injectComponent: function(func) {\r\n var that = this;\r\n return function(params) {\r\n extend(params, {\r\n component: that\r\n });\r\n return func(params)\r\n }\r\n },\r\n _isViewAvailable: function(date) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var min = dateUtils.getViewMinBoundaryDate(zoomLevel, this._getMinDate());\r\n var max = dateUtils.getViewMaxBoundaryDate(zoomLevel, this._getMaxDate());\r\n return dateUtils.dateInRange(date, min, max)\r\n },\r\n _translateViews: function() {\r\n move(this._view.$element(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._beforeView && move(this._beforeView.$element(), {\r\n left: this._getViewPosition(-1),\r\n top: 0\r\n });\r\n this._afterView && move(this._afterView.$element(), {\r\n left: this._getViewPosition(1),\r\n top: 0\r\n })\r\n },\r\n _getViewPosition: function(coefficient) {\r\n var rtlCorrection = this.option(\"rtlEnabled\") && !browser.msie ? -1 : 1;\r\n return 100 * coefficient * rtlCorrection + \"%\"\r\n },\r\n _cellClickHandler: function(e) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var nextView = dateUtils.getViewDown(zoomLevel);\r\n var isMaxZoomLevel = this._isMaxZoomLevel();\r\n if (nextView && !isMaxZoomLevel) {\r\n this._navigateDown(e.event.currentTarget)\r\n } else {\r\n var newValue = this._updateTimeComponent(e.value);\r\n this._dateValue(newValue, e.event);\r\n this._cellClickAction(e)\r\n }\r\n },\r\n _updateTimeComponent: function(date) {\r\n var result = dateUtils.createDate(date);\r\n var currentValue = this._dateOption(\"value\");\r\n if (currentValue) {\r\n result.setHours(currentValue.getHours());\r\n result.setMinutes(currentValue.getMinutes());\r\n result.setSeconds(currentValue.getSeconds());\r\n result.setMilliseconds(currentValue.getMilliseconds())\r\n }\r\n return result\r\n },\r\n _isMaxZoomLevel: function() {\r\n return this.option(\"zoomLevel\") === this.option(\"maxZoomLevel\")\r\n },\r\n _navigateDown: function(cell) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n if (this._isMaxZoomLevel()) {\r\n return\r\n }\r\n var nextView = dateUtils.getViewDown(zoomLevel);\r\n if (!nextView) {\r\n return\r\n }\r\n var newCurrentDate = this._view.option(\"contouredDate\") || this._view.option(\"date\");\r\n if (cell) {\r\n newCurrentDate = $(cell).data(CALENDAR_DATE_VALUE_KEY)\r\n }\r\n this._isOtherViewCellClicked = true;\r\n this.option(\"currentDate\", newCurrentDate);\r\n this.option(\"zoomLevel\", nextView);\r\n this._isOtherViewCellClicked = false;\r\n this._renderNavigator();\r\n this._animateShowView();\r\n this._moveToClosestAvailableDate();\r\n this._setViewContoured(this._getNormalizedDate(this.option(\"currentDate\")))\r\n },\r\n _renderNavigator: function() {\r\n if (!this._navigator) {\r\n this._navigator = new Navigator($(\"
\"), this._navigatorConfig())\r\n }\r\n this._navigator.option(\"text\", this._view.getNavigatorCaption());\r\n this._updateButtonsVisibility()\r\n },\r\n _navigatorConfig: function() {\r\n return {\r\n text: this._view.getNavigatorCaption(),\r\n onClick: this._navigatorClickHandler.bind(this),\r\n onCaptionClick: this._navigateUp.bind(this),\r\n rtlEnabled: this.option(\"rtlEnabled\")\r\n }\r\n },\r\n _navigatorClickHandler: function(e) {\r\n var currentDate = this._getDateByOffset(e.direction, this.option(\"currentDate\"));\r\n this._moveToClosestAvailableDate(currentDate)\r\n },\r\n _navigateUp: function() {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var nextView = dateUtils.getViewUp(zoomLevel);\r\n if (!nextView || this._isMinZoomLevel(zoomLevel)) {\r\n return\r\n }\r\n this.option(\"zoomLevel\", nextView);\r\n this._renderNavigator();\r\n this._animateShowView();\r\n this._moveToClosestAvailableDate();\r\n this._setViewContoured(this._getNormalizedDate(this.option(\"currentDate\")))\r\n },\r\n _isMinZoomLevel: function(zoomLevel) {\r\n var min = this._getMinDate();\r\n var max = this._getMaxDate();\r\n return dateUtils.sameView(zoomLevel, min, max) || this.option(\"minZoomLevel\") === zoomLevel\r\n },\r\n _updateButtonsVisibility: function() {\r\n this._navigator.toggleButton(\"next\", !isDefined(this._getRequiredView(\"next\")));\r\n this._navigator.toggleButton(\"prev\", !isDefined(this._getRequiredView(\"prev\")))\r\n },\r\n _renderSwipeable: function() {\r\n if (!this._swipeable) {\r\n this._swipeable = this._createComponent(this.$element(), Swipeable, {\r\n onStart: this._swipeStartHandler.bind(this),\r\n onUpdated: this._swipeUpdateHandler.bind(this),\r\n onEnd: this._swipeEndHandler.bind(this),\r\n itemSizeFunc: this._viewWidth.bind(this)\r\n })\r\n }\r\n },\r\n _swipeStartHandler: function(e) {\r\n fx.stop(this._$viewsWrapper, true);\r\n e.event.maxLeftOffset = this._getRequiredView(\"next\") ? 1 : 0;\r\n e.event.maxRightOffset = this._getRequiredView(\"prev\") ? 1 : 0\r\n },\r\n _getRequiredView: function(name) {\r\n var view;\r\n var isRtl = this.option(\"rtlEnabled\");\r\n if (\"next\" === name) {\r\n view = isRtl ? this._beforeView : this._afterView\r\n } else if (\"prev\" === name) {\r\n view = isRtl ? this._afterView : this._beforeView\r\n }\r\n return view\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n var offset = e.event.offset;\r\n move(this._$viewsWrapper, {\r\n left: offset * this._viewWidth(),\r\n top: 0\r\n });\r\n this._updateNavigatorCaption(offset)\r\n },\r\n _swipeEndHandler: function(e) {\r\n var targetOffset = e.event.targetOffset;\r\n var moveOffset = !targetOffset ? 0 : targetOffset / Math.abs(targetOffset);\r\n if (0 === moveOffset) {\r\n this._animateWrapper(0, ANIMATION_DURATION_SHOW_VIEW);\r\n return\r\n }\r\n var date = this._getDateByOffset(-moveOffset * this._getRtlCorrection());\r\n if (this._isDateInInvalidRange(date)) {\r\n if (moveOffset >= 0) {\r\n date = new Date(this._getMinDate())\r\n } else {\r\n date = new Date(this._getMaxDate())\r\n }\r\n }\r\n this.option(\"currentDate\", date)\r\n },\r\n _viewWidth: function() {\r\n if (!this._viewWidthValue) {\r\n this._viewWidthValue = this.$element().width()\r\n }\r\n return this._viewWidthValue\r\n },\r\n _updateNavigatorCaption: function(offset) {\r\n offset *= this._getRtlCorrection();\r\n var view = this._view;\r\n if (offset > .5 && this._beforeView) {\r\n view = this._beforeView\r\n } else if (offset < -.5 && this._afterView) {\r\n view = this._afterView\r\n }\r\n this._navigator.option(\"text\", view.getNavigatorCaption())\r\n },\r\n _isDateInInvalidRange: function(date) {\r\n if (this._view.isBoundary(date)) {\r\n return\r\n }\r\n var min = this._getMinDate();\r\n var max = this._getMaxDate();\r\n var normalizedDate = dateUtils.normalizeDate(date, min, max);\r\n return normalizedDate === min || normalizedDate === max\r\n },\r\n _renderFooter: function() {\r\n var showTodayButton = this.option(\"showTodayButton\");\r\n if (showTodayButton) {\r\n var $todayButton = this._createComponent($(\"\"), Button, {\r\n focusStateEnabled: false,\r\n text: messageLocalization.format(\"dxCalendar-todayButtonText\"),\r\n onClick: function(args) {\r\n this._toTodayView(args)\r\n }.bind(this),\r\n integrationOptions: {}\r\n }).$element().addClass(CALENDAR_TODAY_BUTTON_CLASS);\r\n this._$footer = $(\"
\").addClass(CALENDAR_FOOTER_CLASS).append($todayButton);\r\n this.$element().append(this._$footer)\r\n }\r\n this.$element().toggleClass(CALENDAR_HAS_FOOTER_CLASS, showTodayButton)\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue(this.option(\"value\"))\r\n },\r\n _setSubmitValue: function(value) {\r\n var dateValue = this._convertToDate(value);\r\n this._getSubmitElement().val(dateSerialization.serializeDate(dateValue, CALENDAR_INPUT_STANDARD_PATTERN))\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _animateShowView: function() {\r\n fx.stop(this._view.$element(), true);\r\n return this._popAnimationView(this._view, POP_ANIMATION_FROM, POP_ANIMATION_TO, ANIMATION_DURATION_SHOW_VIEW).promise()\r\n },\r\n _popAnimationView: function(view, from, to, duration) {\r\n return fx.animate(view.$element(), {\r\n type: \"pop\",\r\n from: {\r\n scale: from,\r\n opacity: from\r\n },\r\n to: {\r\n scale: to,\r\n opacity: to\r\n },\r\n duration: duration\r\n })\r\n },\r\n _navigate: function(offset, value) {\r\n if (0 !== offset && 1 !== Math.abs(offset) && this._isViewAvailable(value)) {\r\n var newView = this._renderSpecificView(value);\r\n if (offset > 0) {\r\n this._afterView && this._afterView.$element().remove();\r\n this._afterView = newView\r\n } else {\r\n this._beforeView && this._beforeView.$element().remove();\r\n this._beforeView = newView\r\n }\r\n this._translateViews()\r\n }\r\n var rtlCorrection = this._getRtlCorrection();\r\n var offsetSign = offset > 0 ? 1 : offset < 0 ? -1 : 0;\r\n var endPosition = -rtlCorrection * offsetSign * this._viewWidth();\r\n var viewsWrapperPosition = this._$viewsWrapper.position().left;\r\n if (viewsWrapperPosition !== endPosition) {\r\n if (this._preventViewChangeAnimation) {\r\n this._wrapperAnimationEndHandler(offset, value)\r\n } else {\r\n this._animateWrapper(endPosition, ANIMATION_DURATION_SHOW_VIEW).done(this._wrapperAnimationEndHandler.bind(this, offset, value))\r\n }\r\n }\r\n },\r\n _animateWrapper: function(to, duration) {\r\n return fx.animate(this._$viewsWrapper, {\r\n type: \"slide\",\r\n from: {\r\n left: this._$viewsWrapper.position().left\r\n },\r\n to: {\r\n left: to\r\n },\r\n duration: duration\r\n })\r\n },\r\n _getDate(value) {\r\n var result = dateUtils.createDate(value);\r\n if (isIE11 && isDate(value)) {\r\n result.setMilliseconds(0)\r\n }\r\n return result\r\n },\r\n _toTodayView: function(args) {\r\n this._saveValueChangeEvent(args.event);\r\n var today = new Date;\r\n if (this._isMaxZoomLevel()) {\r\n this._dateOption(\"value\", today);\r\n return\r\n }\r\n this._preventViewChangeAnimation = true;\r\n this.option(\"zoomLevel\", this.option(\"maxZoomLevel\"));\r\n this._dateOption(\"value\", today);\r\n this._animateShowView();\r\n this._preventViewChangeAnimation = false\r\n },\r\n _wrapperAnimationEndHandler: function(offset, newDate) {\r\n this._rearrangeViews(offset);\r\n this._translateViews();\r\n this._resetLocation();\r\n this._renderNavigator();\r\n this._setViewContoured(newDate);\r\n this._updateAriaId(newDate)\r\n },\r\n _rearrangeViews: function(offset) {\r\n if (0 === offset) {\r\n return\r\n }\r\n var viewOffset;\r\n var viewToCreateKey;\r\n var viewToRemoveKey;\r\n if (offset < 0) {\r\n viewOffset = 1;\r\n viewToCreateKey = \"_beforeView\";\r\n viewToRemoveKey = \"_afterView\"\r\n } else {\r\n viewOffset = -1;\r\n viewToCreateKey = \"_afterView\";\r\n viewToRemoveKey = \"_beforeView\"\r\n }\r\n if (!this[viewToCreateKey]) {\r\n return\r\n }\r\n var destinationDate = this[viewToCreateKey].option(\"date\");\r\n if (this[viewToRemoveKey]) {\r\n this[viewToRemoveKey].$element().remove()\r\n }\r\n if (offset === viewOffset) {\r\n this[viewToRemoveKey] = this._view\r\n } else {\r\n this[viewToRemoveKey] = this._renderSpecificView(this._getDateByOffset(viewOffset, destinationDate));\r\n this._view.$element().remove()\r\n }\r\n this._view = this[viewToCreateKey];\r\n var dateByOffset = this._getDateByOffset(-viewOffset, destinationDate);\r\n this[viewToCreateKey] = this._isViewAvailable(dateByOffset) ? this._renderSpecificView(dateByOffset) : null\r\n },\r\n _resetLocation: function() {\r\n move(this._$viewsWrapper, {\r\n left: 0,\r\n top: 0\r\n })\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._clearViewWidthCache();\r\n delete this._$viewsWrapper;\r\n delete this._navigator;\r\n delete this._$footer\r\n },\r\n _clearViewWidthCache: function() {\r\n delete this._viewWidthValue\r\n },\r\n _disposeViews: function() {\r\n this._view.$element().remove();\r\n this._beforeView && this._beforeView.$element().remove();\r\n this._afterView && this._afterView.$element().remove();\r\n delete this._view;\r\n delete this._beforeView;\r\n delete this._afterView\r\n },\r\n _dispose: function() {\r\n clearTimeout(this._waitRenderViewTimeout);\r\n this.callBase()\r\n },\r\n _refreshViews: function() {\r\n this._disposeViews();\r\n this._renderViews()\r\n },\r\n _visibilityChanged: function() {\r\n this._translateViews()\r\n },\r\n _focusInHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n this._view.option(\"contouredDate\", this.option(\"currentDate\"))\r\n },\r\n _focusOutHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n this._view.option(\"contouredDate\", null)\r\n },\r\n _updateViewsValue: function(value) {\r\n var newValue = value ? new Date(value) : null;\r\n this._view.option(\"value\", newValue);\r\n this._beforeView && this._beforeView.option(\"value\", newValue);\r\n this._afterView && this._afterView.option(\"value\", newValue)\r\n },\r\n _updateAriaSelected: function(value, previousValue) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this._dateOption(\"value\");\r\n var $prevSelectedCell = this._view._getCellByDate(previousValue);\r\n var $selectedCell = this._view._getCellByDate(value);\r\n this.setAria(\"selected\", void 0, $prevSelectedCell);\r\n this.setAria(\"selected\", true, $selectedCell);\r\n if (value && this.option(\"currentDate\").getTime() === value.getTime()) {\r\n this._updateAriaId(value)\r\n }\r\n },\r\n _updateAriaId: function(value) {\r\n var _value2;\r\n value = null !== (_value2 = value) && void 0 !== _value2 ? _value2 : this.option(\"currentDate\");\r\n var ariaId = \"dx-\" + new Guid;\r\n var $newCell = this._view._getCellByDate(value);\r\n this.setAria(\"id\", ariaId, $newCell);\r\n this.setAria(\"activedescendant\", ariaId);\r\n this._onContouredChanged(ariaId)\r\n },\r\n _suppressingNavigation: function(callback, args) {\r\n this._suppressNavigation = true;\r\n callback.apply(this, args);\r\n delete this._suppressNavigation\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n var previousValue = args.previousValue;\r\n switch (args.name) {\r\n case \"width\":\r\n this.callBase(args);\r\n this._clearViewWidthCache();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this.min = void 0;\r\n this.max = void 0;\r\n this._suppressingNavigation(this._updateCurrentDate, [this.option(\"currentDate\")]);\r\n this._refreshViews();\r\n this._renderNavigator();\r\n break;\r\n case \"firstDayOfWeek\":\r\n this._refreshViews();\r\n this._updateButtonsVisibility();\r\n break;\r\n case \"currentDate\":\r\n this.setAria(\"id\", void 0, this._view._getCellByDate(previousValue));\r\n this._updateCurrentDate(value);\r\n break;\r\n case \"zoomLevel\":\r\n this.$element().removeClass(CALENDAR_VIEW_CLASS + \"-\" + previousValue);\r\n this._correctZoomLevel();\r\n this._refreshViews();\r\n this._renderNavigator();\r\n this._updateAriaId();\r\n break;\r\n case \"minZoomLevel\":\r\n case \"maxZoomLevel\":\r\n this._correctZoomLevel();\r\n this._updateButtonsVisibility();\r\n break;\r\n case \"value\":\r\n value = this._convertToDate(value);\r\n previousValue = this._convertToDate(previousValue);\r\n this._updateAriaSelected(value, previousValue);\r\n this.option(\"currentDate\", isDefined(value) ? dateUtils.createDate(value) : new Date);\r\n this._updateViewsValue(value);\r\n this._setSubmitValue(value);\r\n this.callBase(args);\r\n break;\r\n case \"onCellClick\":\r\n this._view.option(\"onCellClick\", value);\r\n break;\r\n case \"onContouredChanged\":\r\n this._onContouredChanged = this._createActionByOption(\"onContouredChanged\");\r\n break;\r\n case \"disabledDates\":\r\n case \"dateSerializationFormat\":\r\n case \"cellTemplate\":\r\n case \"showTodayButton\":\r\n this._invalidate();\r\n break;\r\n case \"hasFocus\":\r\n break;\r\n case \"_todayDate\":\r\n this._refreshViews();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxCalendar\", Calendar);\r\nexport default Calendar;\r\n","/**\r\n * DevExtreme (esm/ui/calendar.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Calendar from \"./calendar/ui.calendar\";\r\nexport default Calendar;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport dateLocalization from \"../../localization/date\";\r\nvar abstract = Class.abstract;\r\nvar DateBoxStrategy = Class.inherit({\r\n ctor: function(dateBox) {\r\n this.dateBox = dateBox\r\n },\r\n widgetOption: function() {\r\n return this._widget && this._widget.option.apply(this._widget, arguments)\r\n },\r\n _renderWidget: function(element) {\r\n element = element || $(\"
\");\r\n this._widget = this._createWidget(element);\r\n this._widget.$element().appendTo(this._getWidgetContainer())\r\n },\r\n _createWidget: function(element) {\r\n var widgetName = this._getWidgetName();\r\n var widgetOptions = this._getWidgetOptions();\r\n return this.dateBox._createComponent(element, widgetName, widgetOptions)\r\n },\r\n _getWidgetOptions: abstract,\r\n _getWidgetName: abstract,\r\n getDefaultOptions: function() {\r\n return {\r\n mode: \"text\"\r\n }\r\n },\r\n getDisplayFormat: abstract,\r\n supportedKeys: noop,\r\n getKeyboardListener: noop,\r\n customizeButtons: noop,\r\n getParsedText: function(text, format) {\r\n var value = dateLocalization.parse(text, format);\r\n return value ? value : dateLocalization.parse(text)\r\n },\r\n renderInputMinMax: noop,\r\n renderOpenedState: function() {\r\n this._updateValue()\r\n },\r\n popupConfig: abstract,\r\n _dimensionChanged: function() {\r\n var _this$_getPopup;\r\n null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup ? void 0 : _this$_getPopup.repaint()\r\n },\r\n renderPopupContent: function() {\r\n var popup = this._getPopup();\r\n this._renderWidget();\r\n var $popupContent = popup.$content().parent();\r\n eventsEngine.off($popupContent, \"mousedown\");\r\n eventsEngine.on($popupContent, \"mousedown\", this._preventFocusOnPopup.bind(this))\r\n },\r\n getFirstPopupElement: noop,\r\n getLastPopupElement: noop,\r\n _preventFocusOnPopup: function(e) {\r\n e.preventDefault()\r\n },\r\n _getWidgetContainer: function() {\r\n return this._getPopup().$content()\r\n },\r\n _getPopup: function() {\r\n return this.dateBox._popup\r\n },\r\n popupShowingHandler: noop,\r\n popupHiddenHandler: noop,\r\n _updateValue: function() {\r\n this._widget && this._widget.option(\"value\", this.dateBoxValue())\r\n },\r\n useCurrentDateByDefault: noop,\r\n getDefaultDate: function() {\r\n return new Date\r\n },\r\n textChangedHandler: noop,\r\n renderValue: function() {\r\n if (this.dateBox.option(\"opened\")) {\r\n this._updateValue()\r\n }\r\n },\r\n getValue: function() {\r\n return this._widget.option(\"value\")\r\n },\r\n isAdaptivityChanged: function() {\r\n return false\r\n },\r\n dispose: function() {\r\n var popup = this._getPopup();\r\n if (popup) {\r\n popup.$content().empty()\r\n }\r\n },\r\n dateBoxValue: function() {\r\n if (arguments.length) {\r\n return this.dateBox.dateValue.apply(this.dateBox, arguments)\r\n } else {\r\n return this.dateBox.dateOption.apply(this.dateBox, [\"value\"])\r\n }\r\n }\r\n});\r\nexport default DateBoxStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.calendar.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Calendar from \"../calendar\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n splitPair\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isFunction,\r\n isEmptyObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar CalendarStrategy = DateBoxStrategy.inherit({\r\n NAME: \"Calendar\",\r\n supportedKeys: function() {\r\n var homeEndHandler = function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault();\r\n return true\r\n }\r\n return false\r\n };\r\n return {\r\n rightArrow: function() {\r\n if (this.option(\"opened\")) {\r\n return true\r\n }\r\n },\r\n leftArrow: function() {\r\n if (this.option(\"opened\")) {\r\n return true\r\n }\r\n },\r\n enter: function(e) {\r\n if (this.dateBox.option(\"opened\")) {\r\n e.preventDefault();\r\n if (this._widget.option(\"zoomLevel\") === this._widget.option(\"maxZoomLevel\")) {\r\n var viewValue = this._getContouredValue();\r\n var lastActionElement = this._lastActionElement;\r\n var shouldCloseDropDown = this._closeDropDownByEnter();\r\n if (shouldCloseDropDown && viewValue && \"calendar\" === lastActionElement) {\r\n this.dateBoxValue(viewValue, e)\r\n }\r\n shouldCloseDropDown && this.dateBox.close();\r\n this.dateBox._valueChangeEventHandler(e);\r\n return !shouldCloseDropDown\r\n } else {\r\n return true\r\n }\r\n } else {\r\n this.dateBox._valueChangeEventHandler(e)\r\n }\r\n }.bind(this),\r\n home: homeEndHandler,\r\n end: homeEndHandler\r\n }\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shortdate\"\r\n },\r\n _closeDropDownByEnter: () => true,\r\n _getWidgetName: function() {\r\n return Calendar\r\n },\r\n _getContouredValue: function() {\r\n return this._widget._view.option(\"contouredDate\")\r\n },\r\n getKeyboardListener() {\r\n return this._widget\r\n },\r\n _getWidgetOptions: function() {\r\n var disabledDates = this.dateBox.option(\"disabledDates\");\r\n return extend(this.dateBox.option(\"calendarOptions\"), {\r\n value: this.dateBoxValue() || null,\r\n dateSerializationFormat: null,\r\n min: this.dateBox.dateOption(\"min\"),\r\n max: this.dateBox.dateOption(\"max\"),\r\n onValueChanged: this._valueChangedHandler.bind(this),\r\n onCellClick: this._cellClickHandler.bind(this),\r\n tabIndex: null,\r\n disabledDates: isFunction(disabledDates) ? this._injectComponent(disabledDates.bind(this.dateBox)) : disabledDates,\r\n onContouredChanged: this._refreshActiveDescendant.bind(this),\r\n hasFocus: function() {\r\n return true\r\n }\r\n })\r\n },\r\n _injectComponent: function(func) {\r\n var that = this;\r\n return function(params) {\r\n extend(params, {\r\n component: that.dateBox\r\n });\r\n return func(params)\r\n }\r\n },\r\n _refreshActiveDescendant: function(e) {\r\n this._lastActionElement = \"calendar\";\r\n this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n },\r\n popupConfig: function(_popupConfig) {\r\n var toolbarItems = _popupConfig.toolbarItems;\r\n var buttonsLocation = this.dateBox.option(\"buttonsLocation\");\r\n var position = [];\r\n if (\"default\" !== buttonsLocation) {\r\n position = splitPair(buttonsLocation)\r\n } else {\r\n position = [\"bottom\", \"center\"]\r\n }\r\n if (\"useButtons\" === this.dateBox.option(\"applyValueMode\") && this._isCalendarVisible()) {\r\n toolbarItems.unshift({\r\n widget: \"dxButton\",\r\n toolbar: position[0],\r\n location: \"after\" === position[1] ? \"before\" : position[1],\r\n options: {\r\n onInitialized: function(e) {\r\n e.component.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n }.bind(this),\r\n onClick: args => {\r\n this._widget._toTodayView(args)\r\n },\r\n text: messageLocalization.format(\"dxCalendar-todayButtonText\"),\r\n type: \"today\"\r\n }\r\n })\r\n }\r\n return extend(true, _popupConfig, {\r\n toolbarItems: toolbarItems,\r\n position: {\r\n collision: \"flipfit flip\"\r\n },\r\n width: \"auto\"\r\n })\r\n },\r\n _isCalendarVisible: function() {\r\n return isEmptyObject(this.dateBox.option(\"calendarOptions\")) || false !== this.dateBox.option(\"calendarOptions.visible\")\r\n },\r\n _escapeHandler: function() {\r\n this.dateBox.close();\r\n this.dateBox.focus()\r\n },\r\n _valueChangedHandler: function(e) {\r\n var dateBox = this.dateBox;\r\n var value = e.value;\r\n var prevValue = e.previousValue;\r\n if (dateUtils.sameDate(value, prevValue)) {\r\n return\r\n }\r\n if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n this.dateBoxValue(this.getValue(), e.event)\r\n }\r\n },\r\n _updateValue: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._widget.option(\"value\", this.dateBoxValue())\r\n },\r\n textChangedHandler: function() {\r\n this._lastActionElement = \"input\";\r\n if (this.dateBox.option(\"opened\") && this._widget) {\r\n this._updateValue(true)\r\n }\r\n },\r\n _cellClickHandler: function(e) {\r\n var dateBox = this.dateBox;\r\n if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n dateBox.option(\"opened\", false);\r\n this.dateBoxValue(this.getValue(), e.event)\r\n }\r\n }\r\n});\r\nexport default CalendarStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_view_roller.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable\";\r\nimport devices from \"../../core/devices\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n resetPosition\r\n} from \"../../animation/translator\";\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar DATEVIEW_ROLLER_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DATEVIEW_ROLLER_CURRENT_CLASS = \"dx-dateviewroller-current\";\r\nvar DATEVIEW_ROLLER_ITEM_CLASS = \"dx-dateview-item\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_CLASS = \"dx-dateview-item-selected\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS = \"dx-dateview-item-selected-frame\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS = \"dx-dateview-item-selected-border\";\r\nvar DateViewRoller = Scrollable.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n showScrollbar: false,\r\n useNative: false,\r\n selectedIndex: 0,\r\n bounceEnabled: false,\r\n items: [],\r\n showOnClick: false,\r\n onClick: null,\r\n onSelectedIndexChanged: null\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n scrollByContent: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderSelectedItemFrame()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(DATEVIEW_ROLLER_CLASS);\r\n this._renderContainerClick();\r\n this._renderItems();\r\n this._renderSelectedValue();\r\n this._renderItemsClick();\r\n this._renderWheelEvent();\r\n this._wrapAction(\"_endAction\", this._endActionHandler.bind(this));\r\n this._renderSelectedIndexChanged()\r\n },\r\n _renderSelectedIndexChanged: function() {\r\n this._selectedIndexChanged = this._createActionByOption(\"onSelectedIndexChanged\")\r\n },\r\n _renderWheelEvent: function() {\r\n eventsEngine.on(this._$container, \"dxmousewheel\", e => {\r\n this._isWheelScrolled = true\r\n })\r\n },\r\n _renderContainerClick: function() {\r\n if (!this.option(\"showOnClick\")) {\r\n return\r\n }\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var clickAction = this._createActionByOption(\"onClick\");\r\n eventsEngine.off(this._$container, eventName);\r\n eventsEngine.on(this._$container, eventName, (function(e) {\r\n clickAction({\r\n event: e\r\n })\r\n }))\r\n },\r\n _wrapAction: function(actionName, callback) {\r\n var strategy = this._strategy;\r\n var originalAction = strategy[actionName];\r\n strategy[actionName] = function() {\r\n callback.apply(this, arguments);\r\n return originalAction.apply(this, arguments)\r\n }\r\n },\r\n _renderItems: function() {\r\n var items = this.option(\"items\") || [];\r\n var $items = $();\r\n this._$content.empty();\r\n items.forEach((function(item) {\r\n $items = $items.add($(\"
\").addClass(DATEVIEW_ROLLER_ITEM_CLASS).append(item))\r\n }));\r\n this._$content.append($items);\r\n this._$items = $items;\r\n this.update()\r\n },\r\n _renderSelectedItemFrame: function() {\r\n $(\"
\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS).append($(\"
\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS)).appendTo(this._$container)\r\n },\r\n _renderSelectedValue: function(selectedIndex) {\r\n var index = this._fitIndex(null !== selectedIndex && void 0 !== selectedIndex ? selectedIndex : this.option(\"selectedIndex\"));\r\n this._moveTo({\r\n top: this._getItemPosition(index)\r\n });\r\n this._renderActiveStateItem()\r\n },\r\n _fitIndex: function(index) {\r\n var items = this.option(\"items\") || [];\r\n var itemCount = items.length;\r\n if (index >= itemCount) {\r\n return itemCount - 1\r\n }\r\n if (index < 0) {\r\n return 0\r\n }\r\n return index\r\n },\r\n _getItemPosition: function(index) {\r\n return Math.round(this._itemHeight() * index)\r\n },\r\n _renderItemsClick: function() {\r\n var itemSelector = this._getItemSelector();\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n eventsEngine.off(this.$element(), eventName, itemSelector);\r\n eventsEngine.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this))\r\n },\r\n _getItemSelector: function() {\r\n return \".\" + DATEVIEW_ROLLER_ITEM_CLASS\r\n },\r\n _itemClickHandler: function(e) {\r\n this.option(\"selectedIndex\", this._itemElementIndex(e.currentTarget))\r\n },\r\n _itemElementIndex: function(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n },\r\n _itemElements: function() {\r\n return this.$element().find(this._getItemSelector())\r\n },\r\n _renderActiveStateItem: function() {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n each(this._$items, (function(index) {\r\n $(this).toggleClass(DATEVIEW_ROLLER_ITEM_SELECTED_CLASS, selectedIndex === index)\r\n }))\r\n },\r\n _shouldScrollToNeighborItem: function() {\r\n return \"desktop\" === devices.real().deviceType && this._isWheelScrolled\r\n },\r\n _moveTo: function(targetLocation) {\r\n targetLocation = this._normalizeLocation(targetLocation);\r\n var location = this._location();\r\n var delta = {\r\n x: -(location.left - targetLocation.left),\r\n y: -(location.top - targetLocation.top)\r\n };\r\n if (this._isVisible() && (delta.x || delta.y)) {\r\n this._strategy._prepareDirections(true);\r\n if (this._animation && !this._shouldScrollToNeighborItem()) {\r\n var that = this;\r\n fx.stop(this._$content);\r\n fx.animate(this._$content, {\r\n duration: 200,\r\n type: \"slide\",\r\n to: {\r\n top: Math.floor(delta.y)\r\n },\r\n complete: function() {\r\n resetPosition(that._$content);\r\n that._strategy.handleMove({\r\n delta: delta\r\n })\r\n }\r\n });\r\n delete this._animation\r\n } else {\r\n this._strategy.handleMove({\r\n delta: delta\r\n })\r\n }\r\n }\r\n },\r\n _validate: function(e) {\r\n return this._strategy.validate(e)\r\n },\r\n _fitSelectedIndexInRange: function(index) {\r\n var itemsCount = this.option(\"items\").length;\r\n return Math.max(Math.min(index, itemsCount - 1), 0)\r\n },\r\n _isInNullNeighborhood: function(x) {\r\n return -.1 <= x && x <= .1\r\n },\r\n _getSelectedIndexAfterScroll: function(currentSelectedIndex) {\r\n var locationTop = -this._location().top;\r\n var currentSelectedIndexPosition = currentSelectedIndex * this._itemHeight();\r\n var dy = locationTop - currentSelectedIndexPosition;\r\n if (this._isInNullNeighborhood(dy)) {\r\n return currentSelectedIndex\r\n }\r\n var direction = dy > 0 ? 1 : -1;\r\n var newSelectedIndex = this._fitSelectedIndexInRange(currentSelectedIndex + direction);\r\n return newSelectedIndex\r\n },\r\n _getNewSelectedIndex: function(currentSelectedIndex) {\r\n if (this._shouldScrollToNeighborItem()) {\r\n return this._getSelectedIndexAfterScroll(currentSelectedIndex)\r\n }\r\n this._animation = true;\r\n var ratio = -this._location().top / this._itemHeight();\r\n return Math.round(ratio)\r\n },\r\n _endActionHandler: function() {\r\n var currentSelectedIndex = this.option(\"selectedIndex\");\r\n var newSelectedIndex = this._getNewSelectedIndex(currentSelectedIndex);\r\n if (newSelectedIndex === currentSelectedIndex) {\r\n this._renderSelectedValue(newSelectedIndex)\r\n } else {\r\n this.option(\"selectedIndex\", newSelectedIndex)\r\n }\r\n this._isWheelScrolled = false\r\n },\r\n _itemHeight: function() {\r\n var $item = this._$items.first();\r\n return $item.height()\r\n },\r\n _toggleActive: function(state) {\r\n this.$element().toggleClass(DATEVIEW_ROLLER_ACTIVE_CLASS, state)\r\n },\r\n _isVisible: function() {\r\n return this._$container.is(\":visible\")\r\n },\r\n _fireSelectedIndexChanged: function(value, previousValue) {\r\n this._selectedIndexChanged({\r\n value: value,\r\n previousValue: previousValue,\r\n event: void 0\r\n })\r\n },\r\n _visibilityChanged: function(visible) {\r\n this.callBase(visible);\r\n if (visible) {\r\n this._renderSelectedValue(this.option(\"selectedIndex\"))\r\n }\r\n this.toggleActiveState(false)\r\n },\r\n toggleActiveState: function(state) {\r\n this.$element().toggleClass(DATEVIEW_ROLLER_CURRENT_CLASS, state)\r\n },\r\n _refreshSelectedIndex: function() {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var fitIndex = this._fitIndex(selectedIndex);\r\n if (fitIndex === selectedIndex) {\r\n this._renderActiveStateItem()\r\n } else {\r\n this.option(\"selectedIndex\", fitIndex)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"selectedIndex\":\r\n this._fireSelectedIndexChanged(args.value, args.previousValue);\r\n this._renderSelectedValue(args.value);\r\n break;\r\n case \"items\":\r\n this._renderItems();\r\n this._refreshSelectedIndex();\r\n break;\r\n case \"onClick\":\r\n case \"showOnClick\":\r\n this._renderContainerClick();\r\n break;\r\n case \"onSelectedIndexChanged\":\r\n this._renderSelectedIndexChanged();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxDateViewRoller\", DateViewRoller);\r\nexport default DateViewRoller;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Editor from \"../editor/editor\";\r\nimport DateViewRoller from \"./ui.date_view_roller\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport uiDateUtils from \"./ui.date_utils\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport dateLocalization from \"../../localization/date\";\r\nvar DATEVIEW_CLASS = \"dx-dateview\";\r\nvar DATEVIEW_COMPACT_CLASS = \"dx-dateview-compact\";\r\nvar DATEVIEW_WRAPPER_CLASS = \"dx-dateview-wrapper\";\r\nvar DATEVIEW_ROLLER_CONTAINER_CLASS = \"dx-dateview-rollers\";\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar TYPE = {\r\n date: \"date\",\r\n datetime: \"datetime\",\r\n time: \"time\"\r\n};\r\nvar ROLLER_TYPE = {\r\n year: \"year\",\r\n month: \"month\",\r\n day: \"day\",\r\n hours: \"hours\"\r\n};\r\nvar DateView = Editor.inherit({\r\n _valueOption: function() {\r\n var value = this.option(\"value\");\r\n var date = new Date(value);\r\n return !value || isNaN(date) ? this._getDefaultDate() : date\r\n },\r\n _getDefaultDate: function() {\r\n var date = new Date;\r\n if (this.option(\"type\") === TYPE.date) {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\r\n }\r\n return date\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n minDate: uiDateUtils.MIN_DATEVIEW_DEFAULT_DATE,\r\n maxDate: uiDateUtils.MAX_DATEVIEW_DEFAULT_DATE,\r\n type: TYPE.date,\r\n value: new Date,\r\n applyCompactClass: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n return \"desktop\" !== _device.deviceType\r\n },\r\n options: {\r\n applyCompactClass: true\r\n }\r\n }])\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(DATEVIEW_CLASS);\r\n this._toggleFormatClasses(this.option(\"type\"));\r\n this._toggleCompactClass()\r\n },\r\n _toggleFormatClasses: function(currentFormat, previousFormat) {\r\n this.$element().addClass(DATEVIEW_CLASS + \"-\" + currentFormat);\r\n previousFormat && this.$element().removeClass(DATEVIEW_CLASS + \"-\" + previousFormat)\r\n },\r\n _toggleCompactClass: function() {\r\n this.$element().toggleClass(DATEVIEW_COMPACT_CLASS, this.option(\"applyCompactClass\"))\r\n },\r\n _wrapper: function() {\r\n return this._$wrapper\r\n },\r\n _renderContentImpl: function() {\r\n this._$wrapper = $(\"
\").addClass(DATEVIEW_WRAPPER_CLASS);\r\n this._renderRollers();\r\n this._$wrapper.appendTo(this.$element())\r\n },\r\n _renderRollers: function() {\r\n if (!this._$rollersContainer) {\r\n this._$rollersContainer = $(\"
\").addClass(DATEVIEW_ROLLER_CONTAINER_CLASS)\r\n }\r\n this._$rollersContainer.empty();\r\n this._createRollerConfigs();\r\n this._rollers = {};\r\n var that = this;\r\n each(that._rollerConfigs, (function(name) {\r\n var $roller = $(\"
\").appendTo(that._$rollersContainer).addClass(DATEVIEW_ROLLER_CLASS + \"-\" + that._rollerConfigs[name].type);\r\n that._rollers[that._rollerConfigs[name].type] = that._createComponent($roller, DateViewRoller, {\r\n items: that._rollerConfigs[name].displayItems,\r\n selectedIndex: that._rollerConfigs[name].selectedIndex,\r\n showScrollbar: false,\r\n onStart: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(true);\r\n that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n },\r\n onEnd: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(false)\r\n },\r\n onClick: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(true);\r\n that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n roller._toggleActive(false)\r\n },\r\n onSelectedIndexChanged: function(e) {\r\n var roller = e.component;\r\n that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n }\r\n })\r\n }));\r\n that._$rollersContainer.appendTo(that._wrapper())\r\n },\r\n _createRollerConfigs: function(type) {\r\n var that = this;\r\n type = type || that.option(\"type\");\r\n that._rollerConfigs = {};\r\n dateLocalization.getFormatParts(uiDateUtils.FORMATS_MAP[type]).forEach((function(partName) {\r\n that._createRollerConfig(partName)\r\n }))\r\n },\r\n _createRollerConfig: function(componentName) {\r\n var componentInfo = uiDateUtils.DATE_COMPONENTS_INFO[componentName];\r\n var valueRange = this._calculateRollerConfigValueRange(componentName);\r\n var startValue = valueRange.startValue;\r\n var endValue = valueRange.endValue;\r\n var formatter = componentInfo.formatter;\r\n var curDate = this._getCurrentDate();\r\n var config = {\r\n type: componentName,\r\n setValue: componentInfo.setter,\r\n valueItems: [],\r\n displayItems: [],\r\n getIndex: function(value) {\r\n return value[componentInfo.getter]() - startValue\r\n }\r\n };\r\n for (var i = startValue; i <= endValue; i++) {\r\n config.valueItems.push(i);\r\n config.displayItems.push(formatter(i, curDate))\r\n }\r\n config.selectedIndex = config.getIndex(curDate);\r\n this._rollerConfigs[componentName] = config\r\n },\r\n _setActiveRoller: function(currentRoller) {\r\n var activeRoller = currentRoller && this._rollers[currentRoller.type];\r\n each(this._rollers, (function() {\r\n this.toggleActiveState(this === activeRoller)\r\n }))\r\n },\r\n _updateRollersPosition: function() {\r\n var that = this;\r\n each(this._rollers, (function(type) {\r\n var correctIndex = that._rollerConfigs[type].getIndex(that._getCurrentDate());\r\n this.option(\"selectedIndex\", correctIndex)\r\n }))\r\n },\r\n _setRollerState: function(roller, selectedIndex) {\r\n if (selectedIndex !== roller.selectedIndex) {\r\n var rollerValue = roller.valueItems[selectedIndex];\r\n var setValue = roller.setValue;\r\n var currentValue = new Date(this._getCurrentDate());\r\n var currentDate = currentValue.getDate();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n if (roller.type === ROLLER_TYPE.month) {\r\n currentDate = Math.min(currentDate, uiDateUtils.getMaxMonthDay(currentValue.getFullYear(), rollerValue))\r\n } else if (roller.type === ROLLER_TYPE.year) {\r\n currentDate = Math.min(currentDate, uiDateUtils.getMaxMonthDay(rollerValue, currentValue.getMonth()))\r\n }\r\n currentValue.setDate(currentDate);\r\n currentValue[setValue](rollerValue);\r\n var normalizedDate = dateUtils.normalizeDate(currentValue, minDate, maxDate);\r\n currentValue = uiDateUtils.mergeDates(normalizedDate, currentValue, \"time\");\r\n currentValue = dateUtils.normalizeDate(currentValue, minDate, maxDate);\r\n this.option(\"value\", currentValue);\r\n roller.selectedIndex = selectedIndex\r\n }\r\n if (roller.type === ROLLER_TYPE.year) {\r\n this._refreshRollers()\r\n }\r\n if (roller.type === ROLLER_TYPE.month) {\r\n this._refreshRoller(ROLLER_TYPE.day);\r\n this._refreshRoller(ROLLER_TYPE.hours)\r\n }\r\n },\r\n _refreshRoller: function(rollerType) {\r\n var roller = this._rollers[rollerType];\r\n if (roller) {\r\n this._createRollerConfig(rollerType);\r\n var rollerConfig = this._rollerConfigs[rollerType];\r\n if (rollerType === ROLLER_TYPE.day || rollerConfig.displayItems.toString() !== roller.option(\"items\").toString()) {\r\n roller.option({\r\n items: rollerConfig.displayItems,\r\n selectedIndex: rollerConfig.selectedIndex\r\n })\r\n }\r\n }\r\n },\r\n _getCurrentDate: function() {\r\n var curDate = this._valueOption();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n return dateUtils.normalizeDate(curDate, minDate, maxDate)\r\n },\r\n _calculateRollerConfigValueRange: function(componentName) {\r\n var curDate = this._getCurrentDate();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n var minYear = dateUtils.sameYear(curDate, minDate);\r\n var minMonth = minYear && curDate.getMonth() === minDate.getMonth();\r\n var maxYear = dateUtils.sameYear(curDate, maxDate);\r\n var maxMonth = maxYear && curDate.getMonth() === maxDate.getMonth();\r\n var minHour = minMonth && curDate.getDate() === minDate.getDate();\r\n var maxHour = maxMonth && curDate.getDate() === maxDate.getDate();\r\n var componentInfo = uiDateUtils.DATE_COMPONENTS_INFO[componentName];\r\n var startValue = componentInfo.startValue;\r\n var endValue = componentInfo.endValue;\r\n if (componentName === ROLLER_TYPE.year) {\r\n startValue = minDate.getFullYear();\r\n endValue = maxDate.getFullYear()\r\n }\r\n if (componentName === ROLLER_TYPE.month) {\r\n if (minYear) {\r\n startValue = minDate.getMonth()\r\n }\r\n if (maxYear) {\r\n endValue = maxDate.getMonth()\r\n }\r\n }\r\n if (componentName === ROLLER_TYPE.day) {\r\n endValue = uiDateUtils.getMaxMonthDay(curDate.getFullYear(), curDate.getMonth());\r\n if (minYear && minMonth) {\r\n startValue = minDate.getDate()\r\n }\r\n if (maxYear && maxMonth) {\r\n endValue = maxDate.getDate()\r\n }\r\n }\r\n if (componentName === ROLLER_TYPE.hours) {\r\n startValue = minHour ? minDate.getHours() : startValue;\r\n endValue = maxHour ? maxDate.getHours() : endValue\r\n }\r\n return {\r\n startValue: startValue,\r\n endValue: endValue\r\n }\r\n },\r\n _refreshRollers: function() {\r\n this._refreshRoller(ROLLER_TYPE.month);\r\n this._refreshRoller(ROLLER_TYPE.day);\r\n this._refreshRoller(ROLLER_TYPE.hours)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"minDate\":\r\n case \"maxDate\":\r\n case \"type\":\r\n this._renderRollers();\r\n this._toggleFormatClasses(args.value, args.previousValue);\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n if (args.value) {\r\n this._renderRollers()\r\n }\r\n break;\r\n case \"value\":\r\n this.option(\"value\", this._valueOption());\r\n this._refreshRollers();\r\n this._updateRollersPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n delete this._$rollersContainer\r\n }\r\n});\r\nregisterComponent(\"dxDateView\", DateView);\r\nexport default DateView;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.date_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport DateView from \"./ui.date_view\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport {\r\n inputType\r\n} from \"../../core/utils/support\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar DateViewStrategy = DateBoxStrategy.inherit({\r\n NAME: \"DateView\",\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n openOnFieldClick: true,\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n \"dropDownOptions.showTitle\": true\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || dateUtils.FORMATS_MAP[this.dateBox.option(\"type\")]\r\n },\r\n popupConfig: function(config) {\r\n return {\r\n toolbarItems: this.dateBox._popupToolbarItemsConfig(),\r\n onInitialized: config.onInitialized,\r\n defaultOptionsRules: [{\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n width: 333,\r\n height: 331\r\n }\r\n }, {\r\n device: function(_device) {\r\n var platform = _device.platform;\r\n return \"generic\" === platform || \"ios\" === platform\r\n },\r\n options: {\r\n width: \"auto\",\r\n height: \"auto\"\r\n }\r\n }, {\r\n device: function(_device2) {\r\n var platform = _device2.platform;\r\n var phone = _device2.phone;\r\n return \"generic\" === platform && phone\r\n },\r\n options: {\r\n width: 333,\r\n maxWidth: \"100%\",\r\n maxHeight: \"100%\",\r\n height: \"auto\",\r\n position: {\r\n collision: \"flipfit flip\"\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"ios\",\r\n phone: true\r\n },\r\n options: {\r\n width: \"100%\",\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n }]\r\n }\r\n },\r\n _renderWidget: function() {\r\n if (inputType(this.dateBox.option(\"mode\")) && this.dateBox._isNativeType() || this.dateBox.option(\"readOnly\")) {\r\n if (this._widget) {\r\n this._widget.$element().remove();\r\n this._widget = null\r\n }\r\n return\r\n }\r\n var popup = this._getPopup();\r\n if (this._widget) {\r\n this._widget.option(this._getWidgetOptions())\r\n } else {\r\n var element = $(\"
\").appendTo(popup.$content());\r\n this._widget = this._createWidget(element)\r\n }\r\n this._widget.$element().appendTo(this._getWidgetContainer())\r\n },\r\n _getWidgetName: function() {\r\n return DateView\r\n },\r\n renderOpenedState: function() {\r\n this.callBase();\r\n if (this._widget) {\r\n this._widget.option(\"value\", this._widget._getCurrentDate())\r\n }\r\n },\r\n _getWidgetOptions: function() {\r\n return {\r\n value: this.dateBoxValue() || new Date,\r\n type: this.dateBox.option(\"type\"),\r\n minDate: this.dateBox.dateOption(\"min\") || new Date(1900, 0, 1),\r\n maxDate: this.dateBox.dateOption(\"max\") || new Date(Date.now() + 50 * dateUtils.ONE_YEAR),\r\n onDisposing: function() {\r\n this._widget = null\r\n }.bind(this)\r\n }\r\n }\r\n});\r\nexport default DateViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.native.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport {\r\n inputType\r\n} from \"../../core/utils/support\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport devices from \"../../core/devices\";\r\nvar NativeStrategy = DateBoxStrategy.inherit({\r\n NAME: \"Native\",\r\n popupConfig: function(_popupConfig) {\r\n return extend({}, _popupConfig, {\r\n width: \"auto\"\r\n })\r\n },\r\n getParsedText: function(text, format) {\r\n if (!text) {\r\n return null\r\n }\r\n if (\"datetime\" === this.dateBox.option(\"type\")) {\r\n return new Date(text.replace(/-/g, \"/\").replace(\"T\", \" \").split(\".\")[0])\r\n }\r\n if (this._isTextInput()) {\r\n return this.callBase(text, format)\r\n } else {\r\n return dateUtils.fromStandardDateFormat(text)\r\n }\r\n },\r\n _isTextInput: function() {\r\n return \"text\" === this.dateBox._input().prop(\"type\")\r\n },\r\n renderPopupContent: noop,\r\n _getWidgetName: noop,\r\n _getWidgetOptions: noop,\r\n _getDateBoxType: function() {\r\n var type = this.dateBox.option(\"type\");\r\n if (-1 === inArray(type, dateUtils.SUPPORTED_FORMATS)) {\r\n type = \"date\"\r\n } else if (\"datetime\" === type && !inputType(type)) {\r\n type = \"datetime-local\"\r\n }\r\n return type\r\n },\r\n customizeButtons: function() {\r\n var dropDownButton = this.dateBox.getButton(\"dropDown\");\r\n if (devices.real().android && dropDownButton) {\r\n dropDownButton.on(\"click\", function() {\r\n this.dateBox._input().get(0).click()\r\n }.bind(this))\r\n }\r\n },\r\n getDefaultOptions: function() {\r\n return {\r\n mode: this._getDateBoxType()\r\n }\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n var type = this._getDateBoxType();\r\n return displayFormat || dateUtils.FORMATS_MAP[type]\r\n },\r\n renderInputMinMax: function($input) {\r\n $input.attr({\r\n min: dateSerialization.serializeDate(this.dateBox.dateOption(\"min\"), \"yyyy-MM-dd\"),\r\n max: dateSerialization.serializeDate(this.dateBox.dateOption(\"max\"), \"yyyy-MM-dd\")\r\n })\r\n }\r\n});\r\nexport default NativeStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.time_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Editor from \"../editor/editor\";\r\nimport NumberBox from \"../number_box\";\r\nimport SelectBox from \"../select_box\";\r\nimport Box from \"../box\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nvar TIMEVIEW_CLASS = \"dx-timeview\";\r\nvar TIMEVIEW_CLOCK_CLASS = \"dx-timeview-clock\";\r\nvar TIMEVIEW_FIELD_CLASS = \"dx-timeview-field\";\r\nvar TIMEVIEW_HOURARROW_CLASS = \"dx-timeview-hourarrow\";\r\nvar TIMEVIEW_TIME_SEPARATOR_CLASS = \"dx-timeview-time-separator\";\r\nvar TIMEVIEW_FORMAT12_CLASS = \"dx-timeview-format12\";\r\nvar TIMEVIEW_FORMAT12_AM = -1;\r\nvar TIMEVIEW_FORMAT12_PM = 1;\r\nvar TIMEVIEW_MINUTEARROW_CLASS = \"dx-timeview-minutearrow\";\r\nvar rotateArrow = function($arrow, angle, offset) {\r\n cssRotate($arrow, angle, offset)\r\n};\r\nvar cssRotate = function($arrow, angle, offset) {\r\n $arrow.css(\"transform\", \"rotate(\" + angle + \"deg) translate(0,\" + offset + \"px)\")\r\n};\r\nvar TimeView = Editor.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: new Date(Date.now()),\r\n use24HourFormat: true,\r\n _showClock: true,\r\n _arrowOffset: 0,\r\n stylingMode: void 0\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n _arrowOffset: 15\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n _arrowOffset: 5\r\n }\r\n }])\r\n },\r\n _getValue: function() {\r\n return this.option(\"value\") || new Date\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(TIMEVIEW_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderBox();\r\n this._updateTime()\r\n },\r\n _renderBox: function() {\r\n var $box = $(\"
\").appendTo(this.$element());\r\n var items = [];\r\n if (this.option(\"_showClock\")) {\r\n items.push({\r\n ratio: 1,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: this._renderClock.bind(this)\r\n })\r\n }\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: 50,\r\n template: this._renderField.bind(this)\r\n });\r\n this._createComponent($box, Box, {\r\n height: \"100%\",\r\n width: \"100%\",\r\n direction: \"col\",\r\n items: items\r\n })\r\n },\r\n _renderClock: function(_, __, container) {\r\n this._$hourArrow = $(\"
\").addClass(TIMEVIEW_HOURARROW_CLASS);\r\n this._$minuteArrow = $(\"
\").addClass(TIMEVIEW_MINUTEARROW_CLASS);\r\n var $container = $(container);\r\n $container.addClass(TIMEVIEW_CLOCK_CLASS).append(this._$hourArrow).append(this._$minuteArrow);\r\n this.setAria(\"role\", \"presentation\", $container)\r\n },\r\n _updateClock: function() {\r\n var time = this._getValue();\r\n var hourArrowAngle = time.getHours() / 12 * 360 + time.getMinutes() / 60 * 30;\r\n var minuteArrowAngle = time.getMinutes() / 60 * 360;\r\n rotateArrow(this._$hourArrow, hourArrowAngle, this.option(\"_arrowOffset\"));\r\n rotateArrow(this._$minuteArrow, minuteArrowAngle, this.option(\"_arrowOffset\"))\r\n },\r\n _getBoxItems: function(is12HourFormat) {\r\n var items = [{\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: () => this._hourBox.$element()\r\n }, {\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: $(\"
\").addClass(TIMEVIEW_TIME_SEPARATOR_CLASS).text(dateLocalization.getTimeSeparator())\r\n }, {\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: () => this._minuteBox.$element()\r\n }];\r\n if (is12HourFormat) {\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: () => this._format12.$element()\r\n })\r\n }\r\n return items\r\n },\r\n _renderField: function() {\r\n var is12HourFormat = !this.option(\"use24HourFormat\");\r\n this._createHourBox(is12HourFormat);\r\n this._createMinuteBox();\r\n if (is12HourFormat) {\r\n this._createFormat12Box()\r\n }\r\n return this._createComponent($(\"
\").addClass(TIMEVIEW_FIELD_CLASS), Box, {\r\n direction: \"row\",\r\n align: \"center\",\r\n crossAlign: \"center\",\r\n items: this._getBoxItems(is12HourFormat)\r\n }).$element()\r\n },\r\n _createHourBox: function(is12HourFormat) {\r\n var editor = this._hourBox = this._createComponent($(\"
\"), NumberBox, extend({\r\n min: -1,\r\n max: is12HourFormat ? 13 : 24,\r\n value: this._getValue().getHours(),\r\n onValueChanged: this._onHourBoxValueChanged.bind(this),\r\n onKeyboardHandled: opts => this._keyboardHandler(opts)\r\n }, this._getNumberBoxConfig()));\r\n editor.setAria(\"label\", \"hours\")\r\n },\r\n _isPM: function() {\r\n return !this.option(\"use24HourFormat\") && 1 === this._format12.option(\"value\")\r\n },\r\n _onHourBoxValueChanged: function(_ref) {\r\n var {\r\n value: value,\r\n component: component\r\n } = _ref;\r\n var currentValue = this._getValue();\r\n var newValue = new Date(currentValue);\r\n var newHours = this._convertMaxHourToMin(value);\r\n component.option(\"value\", newHours);\r\n if (this._isPM()) {\r\n newHours += 12\r\n }\r\n newValue.setHours(newHours);\r\n dateUtils.normalizeTime(newValue);\r\n this.option(\"value\", newValue)\r\n },\r\n _convertMaxHourToMin: function(hours) {\r\n var maxHoursValue = this.option(\"use24HourFormat\") ? 24 : 12;\r\n return (maxHoursValue + hours) % maxHoursValue\r\n },\r\n _createMinuteBox: function() {\r\n var editor = this._minuteBox = this._createComponent($(\"
\"), NumberBox, extend({\r\n min: -1,\r\n max: 60,\r\n value: this._getValue().getMinutes(),\r\n onKeyboardHandled: opts => this._keyboardHandler(opts),\r\n onValueChanged: _ref2 => {\r\n var {\r\n value: value,\r\n component: component\r\n } = _ref2;\r\n var newMinutes = (60 + value) % 60;\r\n component.option(\"value\", newMinutes);\r\n var time = new Date(this._getValue());\r\n time.setMinutes(newMinutes);\r\n dateUtils.normalizeTime(time);\r\n this.option(\"value\", time)\r\n }\r\n }, this._getNumberBoxConfig()));\r\n editor.setAria(\"label\", \"minutes\")\r\n },\r\n _createFormat12Box: function() {\r\n var periodNames = dateLocalization.getPeriodNames();\r\n var editor = this._format12 = this._createComponent($(\"
\").addClass(TIMEVIEW_FORMAT12_CLASS), SelectBox, {\r\n items: [{\r\n value: TIMEVIEW_FORMAT12_AM,\r\n text: periodNames[0]\r\n }, {\r\n value: TIMEVIEW_FORMAT12_PM,\r\n text: periodNames[1]\r\n }],\r\n valueExpr: \"value\",\r\n displayExpr: \"text\",\r\n onKeyboardHandled: opts => this._keyboardHandler(opts),\r\n onValueChanged: _ref3 => {\r\n var {\r\n value: value\r\n } = _ref3;\r\n var hours = this._getValue().getHours();\r\n var time = new Date(this._getValue());\r\n var newHours = (hours + 12 * value) % 24;\r\n time.setHours(newHours);\r\n this.option(\"value\", time)\r\n },\r\n value: this._getValue().getHours() >= 12 ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM,\r\n stylingMode: this.option(\"stylingMode\")\r\n });\r\n editor.setAria(\"label\", \"type\")\r\n },\r\n _refreshFormat12: function() {\r\n if (this.option(\"use24HourFormat\")) {\r\n return\r\n }\r\n var value = this._getValue();\r\n var hours = value.getHours();\r\n var isPM = hours >= 12;\r\n var newValue = isPM ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM;\r\n this._silentEditorValueUpdate(this._format12, newValue)\r\n },\r\n _silentEditorValueUpdate: function(editor, value) {\r\n if (editor) {\r\n editor._suppressValueChangeAction();\r\n editor.option(\"value\", value);\r\n editor._resumeValueChangeAction()\r\n }\r\n },\r\n _getNumberBoxConfig: function() {\r\n return {\r\n showSpinButtons: true,\r\n displayValueFormatter: function(value) {\r\n return (value < 10 ? \"0\" : \"\") + value\r\n },\r\n stylingMode: this.option(\"stylingMode\")\r\n }\r\n },\r\n _normalizeHours: function(hours) {\r\n return this.option(\"use24HourFormat\") ? hours : hours % 12 || 12\r\n },\r\n _updateField: function() {\r\n var hours = this._normalizeHours(this._getValue().getHours());\r\n this._silentEditorValueUpdate(this._hourBox, hours);\r\n this._silentEditorValueUpdate(this._minuteBox, this._getValue().getMinutes());\r\n this._refreshFormat12()\r\n },\r\n _updateTime: function() {\r\n if (this.option(\"_showClock\")) {\r\n this._updateClock()\r\n }\r\n this._updateField()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateTime()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._updateTime();\r\n this.callBase(args);\r\n break;\r\n case \"_arrowOffset\":\r\n break;\r\n case \"use24HourFormat\":\r\n case \"_showClock\":\r\n case \"stylingMode\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxTimeView\", TimeView);\r\nexport default TimeView;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.calendar_with_time.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport CalendarStrategy from \"./ui.date_box.strategy.calendar\";\r\nimport TimeView from \"./ui.time_view\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport Box from \"../box\";\r\nimport uiDateUtils from \"./ui.date_utils\";\r\nvar SHRINK_VIEW_SCREEN_WIDTH = 573;\r\nvar DATEBOX_ADAPTIVITY_MODE_CLASS = \"dx-datebox-adaptivity-mode\";\r\nvar CalendarWithTimeStrategy = CalendarStrategy.inherit({\r\n NAME: \"CalendarWithTime\",\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n applyValueMode: \"useButtons\",\r\n buttonsLocation: \"bottom after\",\r\n \"dropDownOptions.showTitle\": false\r\n })\r\n },\r\n _closeDropDownByEnter: function() {\r\n return dateUtils.sameDate(this._getContouredValue(), this.widgetOption(\"value\"))\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shortdateshorttime\"\r\n },\r\n _is24HourFormat: function() {\r\n return dateLocalization.is24HourFormat(this.getDisplayFormat(this.dateBox.option(\"displayFormat\")))\r\n },\r\n _getContouredValue: function() {\r\n var viewDate = this.callBase();\r\n return this._updateDateTime(viewDate)\r\n },\r\n _renderWidget: function() {\r\n this.callBase();\r\n this._timeView = this.dateBox._createComponent($(\"
\"), TimeView, {\r\n value: this.dateBoxValue(),\r\n _showClock: !this._isShrinkView(),\r\n use24HourFormat: this._is24HourFormat(),\r\n onValueChanged: this._valueChangedHandler.bind(this),\r\n stylingMode: this.dateBox.option(\"stylingMode\")\r\n });\r\n this._timeView.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n },\r\n renderOpenedState: function() {\r\n this.callBase();\r\n var popup = this._getPopup();\r\n if (popup) {\r\n popup.$wrapper().toggleClass(DATEBOX_ADAPTIVITY_MODE_CLASS, this._isSmallScreen())\r\n }\r\n clearTimeout(this._repaintTimer);\r\n this._repaintTimer = setTimeout(function() {\r\n this._getPopup() && this._getPopup().repaint()\r\n }.bind(this), 0)\r\n },\r\n isAdaptivityChanged: function() {\r\n var isAdaptiveMode = this._isShrinkView();\r\n var currentAdaptiveMode = this._currentAdaptiveMode;\r\n if (isAdaptiveMode !== currentAdaptiveMode) {\r\n this._currentAdaptiveMode = isAdaptiveMode;\r\n return void 0 !== currentAdaptiveMode\r\n }\r\n return this.callBase()\r\n },\r\n _updateValue: function(preventDefaultValue) {\r\n var date = this.dateBoxValue();\r\n if (!date && !preventDefaultValue) {\r\n date = new Date;\r\n uiDateUtils.normalizeTime(date)\r\n }\r\n this.callBase();\r\n if (this._timeView) {\r\n date && this._timeView.option(\"value\", date);\r\n this._timeView.option(\"use24HourFormat\", this._is24HourFormat())\r\n }\r\n },\r\n _isSmallScreen: function() {\r\n return $(window).width() <= SHRINK_VIEW_SCREEN_WIDTH\r\n },\r\n _isShrinkView: function() {\r\n return !this.dateBox.option(\"showAnalogClock\") || this.dateBox.option(\"adaptivityEnabled\") && this._isSmallScreen()\r\n },\r\n _getBoxItems: function() {\r\n var items = [{\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n name: \"calendar\"\r\n }];\r\n if (!this._isShrinkView()) {\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n name: \"time\"\r\n })\r\n }\r\n return items\r\n },\r\n renderPopupContent: function() {\r\n this.callBase();\r\n this._currentAdaptiveMode = this._isShrinkView();\r\n var $popupContent = this._getPopup().$content();\r\n this._box = this.dateBox._createComponent($(\"
\").appendTo($popupContent), Box, {\r\n direction: \"row\",\r\n crossAlign: \"start\",\r\n items: this._getBoxItems(),\r\n itemTemplate: function(data) {\r\n var $container = $(\"
\");\r\n switch (data.name) {\r\n case \"calendar\":\r\n $container.append(this._widget.$element());\r\n if (this._isShrinkView()) {\r\n $container.append(this._timeView.$element())\r\n }\r\n break;\r\n case \"time\":\r\n $container.append(this._timeView.$element())\r\n }\r\n return $container\r\n }.bind(this)\r\n });\r\n this._attachTabHandler()\r\n },\r\n popupConfig: function(_popupConfig) {\r\n var calendarPopupConfig = this.callBase(_popupConfig);\r\n var result = extend(calendarPopupConfig, {\r\n width: \"auto\",\r\n onShowing: function() {\r\n if (\"fallback\" === this._box.option(\"_layoutStrategy\")) {\r\n var clockMinWidth = this._getPopup().$content().find(\".dx-timeview-clock\").css(\"minWidth\");\r\n this._timeView.$element().css(\"maxWidth\", clockMinWidth)\r\n }\r\n }.bind(this)\r\n });\r\n return result\r\n },\r\n getFirstPopupElement: function() {\r\n return this._timeView._hourBox.$element().find(\"input\")\r\n },\r\n _attachTabHandler: function() {\r\n var dateBox = this.dateBox;\r\n this._timeView._hourBox.registerKeyHandler(\"tab\", (function(e) {\r\n if (e.shiftKey) {\r\n e.preventDefault();\r\n dateBox.focus()\r\n }\r\n }))\r\n },\r\n _preventFocusOnPopup: function(e) {\r\n if (!$(e.target).hasClass(\"dx-texteditor-input\")) {\r\n this.callBase.apply(this, arguments);\r\n if (!this.dateBox._hasFocusClass()) {\r\n this.dateBox.focus()\r\n }\r\n }\r\n },\r\n _updateDateTime: function(date) {\r\n var time = this._timeView.option(\"value\");\r\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\r\n return date\r\n },\r\n getValue: function() {\r\n var date = this._widget.option(\"value\");\r\n date = date ? new Date(date) : new Date;\r\n return this._updateDateTime(date)\r\n },\r\n dispose: function() {\r\n clearTimeout(this._removeMinWidthTimer);\r\n clearTimeout(this._repaintTimer);\r\n this.callBase()\r\n }\r\n});\r\nexport default CalendarWithTimeStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.list.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport List from \"../list\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDate\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n getSizeValue\r\n} from \"../drop_down_editor/utils\";\r\nvar DATE_FORMAT = \"date\";\r\nvar BOUNDARY_VALUES = {\r\n min: new Date(0, 0, 0, 0, 0),\r\n max: new Date(0, 0, 0, 23, 59)\r\n};\r\nvar ListStrategy = DateBoxStrategy.inherit({\r\n NAME: \"List\",\r\n supportedKeys: function() {\r\n return {\r\n tab: function() {\r\n if (this.option(\"opened\")) {\r\n this.close()\r\n }\r\n },\r\n space: noop,\r\n home: noop,\r\n end: noop\r\n }\r\n },\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n applyValueMode: \"instantly\"\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shorttime\"\r\n },\r\n popupConfig: function(_popupConfig) {\r\n return _popupConfig\r\n },\r\n useCurrentDateByDefault: function() {\r\n return true\r\n },\r\n getDefaultDate: function() {\r\n return new Date(null)\r\n },\r\n popupShowingHandler: function() {\r\n this.dateBox._dimensionChanged()\r\n },\r\n _renderWidget: function() {\r\n this.callBase();\r\n this._refreshItems()\r\n },\r\n _getWidgetName: function() {\r\n return List\r\n },\r\n _getWidgetOptions: function() {\r\n return {\r\n itemTemplate: this._timeListItemTemplate.bind(this),\r\n onItemClick: this._listItemClickHandler.bind(this),\r\n tabIndex: -1,\r\n onFocusedItemChanged: this._refreshActiveDescendant.bind(this),\r\n selectionMode: \"single\"\r\n }\r\n },\r\n _refreshActiveDescendant: function(e) {\r\n this.dateBox.setAria(\"activedescendant\", \"\");\r\n this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n },\r\n _refreshItems: function() {\r\n this._widgetItems = this._getTimeListItems();\r\n this._widget.option(\"items\", this._widgetItems)\r\n },\r\n renderOpenedState: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._widget.option(\"focusedElement\", null);\r\n this._setSelectedItemsByValue();\r\n if (this._widget.option(\"templatesRenderAsynchronously\")) {\r\n this._asyncScrollTimeout = setTimeout(this._scrollToSelectedItem.bind(this))\r\n } else {\r\n this._scrollToSelectedItem()\r\n }\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._asyncScrollTimeout)\r\n },\r\n _updateValue: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._refreshItems();\r\n this._setSelectedItemsByValue();\r\n this._scrollToSelectedItem()\r\n },\r\n _setSelectedItemsByValue: function() {\r\n var value = this.dateBoxValue();\r\n var dateIndex = this._getDateIndex(value);\r\n if (-1 === dateIndex) {\r\n this._widget.option(\"selectedItems\", [])\r\n } else {\r\n this._widget.option(\"selectedIndex\", dateIndex)\r\n }\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._widget.scrollToItem(this._widget.option(\"selectedIndex\"))\r\n },\r\n _getDateIndex: function(date) {\r\n var result = -1;\r\n for (var i = 0, n = this._widgetItems.length; i < n; i++) {\r\n if (this._areDatesEqual(date, this._widgetItems[i])) {\r\n result = i;\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _areDatesEqual: function(first, second) {\r\n return isDate(first) && isDate(second) && first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes()\r\n },\r\n _getTimeListItems: function() {\r\n var min = this.dateBox.dateOption(\"min\") || this._getBoundaryDate(\"min\");\r\n var max = this.dateBox.dateOption(\"max\") || this._getBoundaryDate(\"max\");\r\n var value = this.dateBox.dateOption(\"value\") || null;\r\n var delta = max - min;\r\n var minutes = min.getMinutes() % this.dateBox.option(\"interval\");\r\n if (delta < 0) {\r\n return []\r\n }\r\n if (delta > dateUtils.ONE_DAY) {\r\n delta = dateUtils.ONE_DAY\r\n }\r\n if (value - min < dateUtils.ONE_DAY) {\r\n return this._getRangeItems(min, new Date(min), delta)\r\n }\r\n min = this._getBoundaryDate(\"min\");\r\n min.setMinutes(minutes);\r\n if (value && Math.abs(value - max) < dateUtils.ONE_DAY) {\r\n delta = (60 * max.getHours() + Math.abs(max.getMinutes() - minutes)) * dateUtils.ONE_MINUTE\r\n }\r\n return this._getRangeItems(min, new Date(min), delta)\r\n },\r\n _getRangeItems: function(startValue, currentValue, rangeDuration) {\r\n var rangeItems = [];\r\n var interval = this.dateBox.option(\"interval\");\r\n while (currentValue - startValue <= rangeDuration) {\r\n rangeItems.push(new Date(currentValue));\r\n currentValue.setMinutes(currentValue.getMinutes() + interval)\r\n }\r\n return rangeItems\r\n },\r\n _getBoundaryDate: function(boundary) {\r\n var boundaryValue = BOUNDARY_VALUES[boundary];\r\n var currentValue = new Date(ensureDefined(this.dateBox.dateOption(\"value\"), 0));\r\n return new Date(currentValue.getFullYear(), currentValue.getMonth(), currentValue.getDate(), boundaryValue.getHours(), boundaryValue.getMinutes())\r\n },\r\n _timeListItemTemplate: function(itemData) {\r\n var displayFormat = this.dateBox.option(\"displayFormat\");\r\n return dateLocalization.format(itemData, this.getDisplayFormat(displayFormat))\r\n },\r\n _listItemClickHandler: function(e) {\r\n this.dateBox.option(\"opened\", false);\r\n var date = this.dateBox.option(\"value\");\r\n var {\r\n itemData: itemData\r\n } = e;\r\n var hours = itemData.getHours();\r\n var minutes = itemData.getMinutes();\r\n var seconds = itemData.getSeconds();\r\n var year = itemData.getFullYear();\r\n var month = itemData.getMonth();\r\n var day = itemData.getDate();\r\n if (date) {\r\n if (this.dateBox.option(\"dateSerializationFormat\")) {\r\n date = dateSerialization.deserializeDate(date)\r\n } else {\r\n date = new Date(date)\r\n }\r\n date.setHours(hours);\r\n date.setMinutes(minutes);\r\n date.setSeconds(seconds);\r\n date.setFullYear(year);\r\n date.setMonth(month);\r\n date.setDate(day)\r\n } else {\r\n date = new Date(year, month, day, hours, minutes, 0, 0)\r\n }\r\n this.dateBoxValue(date, e.event)\r\n },\r\n getKeyboardListener() {\r\n return this._widget\r\n },\r\n _updatePopupHeight: function() {\r\n var dropDownOptionsHeight = getSizeValue(this.dateBox.option(\"dropDownOptions.height\"));\r\n if (void 0 === dropDownOptionsHeight || \"auto\" === dropDownOptionsHeight) {\r\n this.dateBox._setPopupOption(\"height\", \"auto\");\r\n var popupHeight = this._widget.$element().outerHeight();\r\n var maxHeight = .45 * $(window).height();\r\n this.dateBox._setPopupOption(\"height\", Math.min(popupHeight, maxHeight))\r\n }\r\n this.dateBox._timeList && this.dateBox._timeList.updateDimensions()\r\n },\r\n getParsedText: function(text, format) {\r\n var value = this.callBase(text, format);\r\n if (value) {\r\n value = dateUtils.mergeDates(value, new Date(null), DATE_FORMAT)\r\n }\r\n return value\r\n }\r\n});\r\nexport default ListStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n isDate as isDateType,\r\n isString,\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n createTextElementHiddenCopy\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../../core/utils/version\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inputType\r\n} from \"../../core/utils/support\";\r\nimport devices from \"../../core/devices\";\r\nimport config from \"../../core/config\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport uiDateUtils from \"./ui.date_utils\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport DropDownEditor from \"../drop_down_editor/ui.drop_down_editor\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Calendar from \"./ui.date_box.strategy.calendar\";\r\nimport DateView from \"./ui.date_box.strategy.date_view\";\r\nimport Native from \"./ui.date_box.strategy.native\";\r\nimport CalendarWithTime from \"./ui.date_box.strategy.calendar_with_time\";\r\nimport List from \"./ui.date_box.strategy.list\";\r\nvar DATEBOX_CLASS = \"dx-datebox\";\r\nvar DX_AUTO_WIDTH_CLASS = \"dx-auto-width\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar DX_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar DATEBOX_WRAPPER_CLASS = \"dx-datebox-wrapper\";\r\nvar PICKER_TYPE = {\r\n calendar: \"calendar\",\r\n rollers: \"rollers\",\r\n list: \"list\",\r\n native: \"native\"\r\n};\r\nvar TYPE = {\r\n date: \"date\",\r\n datetime: \"datetime\",\r\n time: \"time\"\r\n};\r\nvar STRATEGY_NAME = {\r\n calendar: \"Calendar\",\r\n dateView: \"DateView\",\r\n native: \"Native\",\r\n calendarWithTime: \"CalendarWithTime\",\r\n list: \"List\"\r\n};\r\nvar STRATEGY_CLASSES = {\r\n Calendar: Calendar,\r\n DateView: DateView,\r\n Native: Native,\r\n CalendarWithTime: CalendarWithTime,\r\n List: List\r\n};\r\nvar DateBox = DropDownEditor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), this._strategy.supportedKeys())\r\n },\r\n _renderButtonContainers: function() {\r\n this.callBase.apply(this, arguments);\r\n this._strategy.customizeButtons()\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n type: \"date\",\r\n showAnalogClock: true,\r\n value: null,\r\n dateSerializationFormat: void 0,\r\n min: void 0,\r\n max: void 0,\r\n displayFormat: null,\r\n interval: 30,\r\n disabledDates: null,\r\n pickerType: PICKER_TYPE.calendar,\r\n invalidDateMessage: messageLocalization.format(\"dxDateBox-validation-datetime\"),\r\n dateOutOfRangeMessage: messageLocalization.format(\"validation-range\"),\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n adaptivityEnabled: false,\r\n calendarOptions: {},\r\n useHiddenSubmitElement: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n \"dropDownOptions.showTitle\": true\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom after\"\r\n }\r\n }, {\r\n device: function() {\r\n var realDevice = devices.real();\r\n var platform = realDevice.platform;\r\n return \"ios\" === platform || \"android\" === platform\r\n },\r\n options: {\r\n pickerType: PICKER_TYPE.native\r\n }\r\n }, {\r\n device: function(currentDevice) {\r\n var realDevice = devices.real();\r\n var platform = realDevice.platform;\r\n var version = realDevice.version;\r\n return \"generic\" === platform && \"desktop\" !== currentDevice.deviceType || \"android\" === platform && compareVersions(version, [4, 4]) < 0\r\n },\r\n options: {\r\n pickerType: PICKER_TYPE.rollers\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\",\r\n deviceType: \"desktop\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom after\"\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this._userOptions = extend({}, options);\r\n this.callBase(options);\r\n this._updatePickerOptions()\r\n },\r\n _updatePickerOptions: function() {\r\n var pickerType = this.option(\"pickerType\");\r\n var type = this.option(\"type\");\r\n if (pickerType === PICKER_TYPE.list && (type === TYPE.datetime || type === TYPE.date)) {\r\n pickerType = PICKER_TYPE.calendar\r\n }\r\n if (type === TYPE.time && pickerType === PICKER_TYPE.calendar) {\r\n pickerType = PICKER_TYPE.list\r\n }\r\n this.option(\"showDropDownButton\", \"generic\" !== devices.real().platform || pickerType !== PICKER_TYPE.native);\r\n this._pickerType = pickerType\r\n },\r\n _init: function() {\r\n this._initStrategy();\r\n this.option(extend({}, this._strategy.getDefaultOptions(), this._userOptions));\r\n delete this._userOptions;\r\n this.callBase()\r\n },\r\n _toLowerCaseFirstLetter: function(string) {\r\n return string.charAt(0).toLowerCase() + string.substr(1)\r\n },\r\n _initStrategy: function() {\r\n var strategyName = this._getStrategyName(this._getFormatType());\r\n var strategy = STRATEGY_CLASSES[strategyName];\r\n if (!(this._strategy && this._strategy.NAME === strategyName)) {\r\n this._strategy = new strategy(this)\r\n }\r\n },\r\n _getFormatType: function() {\r\n var currentType = this.option(\"type\");\r\n var isTime = /h|m|s/g.test(currentType);\r\n var isDate = /d|M|Y/g.test(currentType);\r\n var type = \"\";\r\n if (isDate) {\r\n type += TYPE.date\r\n }\r\n if (isTime) {\r\n type += TYPE.time\r\n }\r\n return type\r\n },\r\n _getStrategyName: function(type) {\r\n var pickerType = this._pickerType;\r\n if (pickerType === PICKER_TYPE.rollers) {\r\n return STRATEGY_NAME.dateView\r\n } else if (pickerType === PICKER_TYPE.native) {\r\n return STRATEGY_NAME.native\r\n }\r\n if (type === TYPE.date) {\r\n return STRATEGY_NAME.calendar\r\n }\r\n if (type === TYPE.datetime) {\r\n return STRATEGY_NAME.calendarWithTime\r\n }\r\n return STRATEGY_NAME.list\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(DATEBOX_CLASS);\r\n this.callBase();\r\n this._refreshFormatClass();\r\n this._refreshPickerTypeClass();\r\n this._strategy.renderInputMinMax(this._input())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._formatValidationIcon()\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this.$element().toggleClass(DX_AUTO_WIDTH_CLASS, !this.option(\"width\"));\r\n this._dimensionChanged()\r\n },\r\n _dimensionChanged: function() {\r\n this.callBase(arguments);\r\n if (this._popup) {\r\n var _this$_strategy$_upda, _this$_strategy;\r\n null === (_this$_strategy$_upda = (_this$_strategy = this._strategy)._updatePopupHeight) || void 0 === _this$_strategy$_upda ? void 0 : _this$_strategy$_upda.call(_this$_strategy)\r\n }\r\n },\r\n _refreshFormatClass: function() {\r\n var $element = this.$element();\r\n each(TYPE, (function(_, item) {\r\n $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n }));\r\n $element.addClass(DATEBOX_CLASS + \"-\" + this.option(\"type\"))\r\n },\r\n _refreshPickerTypeClass: function() {\r\n var $element = this.$element();\r\n each(PICKER_TYPE, (function(_, item) {\r\n $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n }));\r\n $element.addClass(DATEBOX_CLASS + \"-\" + this._pickerType)\r\n },\r\n _formatValidationIcon: function() {\r\n if (!hasWindow()) {\r\n return\r\n }\r\n var inputElement = this._input().get(0);\r\n var isRtlEnabled = this.option(\"rtlEnabled\");\r\n var clearButtonWidth = this._getClearButtonWidth();\r\n var longestElementDimensions = this._getLongestElementDimensions();\r\n var curWidth = parseFloat(window.getComputedStyle(inputElement).width) - clearButtonWidth;\r\n var shouldHideValidationIcon = longestElementDimensions.width > curWidth;\r\n var style = inputElement.style;\r\n this.$element().toggleClass(DX_INVALID_BADGE_CLASS, !shouldHideValidationIcon);\r\n if (shouldHideValidationIcon) {\r\n if (void 0 === this._storedPadding) {\r\n this._storedPadding = isRtlEnabled ? longestElementDimensions.leftPadding : longestElementDimensions.rightPadding\r\n }\r\n isRtlEnabled ? style.paddingLeft = 0 : style.paddingRight = 0\r\n } else {\r\n isRtlEnabled ? style.paddingLeft = this._storedPadding + \"px\" : style.paddingRight = this._storedPadding + \"px\"\r\n }\r\n },\r\n _getClearButtonWidth: function() {\r\n var clearButtonWidth = 0;\r\n if (this._isClearButtonVisible() && \"\" === this._input().val()) {\r\n var clearButtonElement = this.$element().find(\".\" + DX_CLEAR_BUTTON_CLASS).get(0);\r\n clearButtonWidth = parseFloat(window.getComputedStyle(clearButtonElement).width)\r\n }\r\n return clearButtonWidth\r\n },\r\n _getLongestElementDimensions: function() {\r\n var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var longestValue = dateLocalization.format(uiDateUtils.getLongestDate(format, dateLocalization.getMonthNames(), dateLocalization.getDayNames()), format);\r\n var $input = this._input();\r\n var inputElement = $input.get(0);\r\n var $longestValueElement = createTextElementHiddenCopy($input, longestValue);\r\n var isPaddingStored = void 0 !== this._storedPadding;\r\n var storedPadding = !isPaddingStored ? 0 : this._storedPadding;\r\n $longestValueElement.appendTo(this.$element());\r\n var elementWidth = parseFloat(window.getComputedStyle($longestValueElement.get(0)).width);\r\n var rightPadding = parseFloat(window.getComputedStyle(inputElement).paddingRight);\r\n var leftPadding = parseFloat(window.getComputedStyle(inputElement).paddingLeft);\r\n var necessaryWidth = elementWidth + leftPadding + rightPadding + storedPadding;\r\n $longestValueElement.remove();\r\n return {\r\n width: necessaryWidth,\r\n leftPadding: leftPadding,\r\n rightPadding: rightPadding\r\n }\r\n },\r\n _getKeyboardListeners() {\r\n return this.callBase().concat([this._strategy && this._strategy.getKeyboardListener()])\r\n },\r\n _renderPopup: function() {\r\n this.callBase();\r\n this._popup.$wrapper().addClass(DATEBOX_WRAPPER_CLASS);\r\n this._renderPopupWrapper()\r\n },\r\n _popupConfig: function() {\r\n var popupConfig = this.callBase();\r\n return extend(this._strategy.popupConfig(popupConfig), {\r\n title: this._getPopupTitle(),\r\n dragEnabled: false\r\n })\r\n },\r\n _renderPopupWrapper: function() {\r\n if (!this._popup) {\r\n return\r\n }\r\n var $element = this.$element();\r\n var classPostfixes = extend({}, TYPE, PICKER_TYPE);\r\n each(classPostfixes, function(_, item) {\r\n $element.removeClass(DATEBOX_WRAPPER_CLASS + \"-\" + item)\r\n }.bind(this));\r\n this._popup.$wrapper().addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this.option(\"type\")).addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this._pickerType)\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._strategy.renderPopupContent()\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._strategy.getFirstPopupElement() || this.callBase()\r\n },\r\n _getLastPopupElement: function() {\r\n return this._strategy.getLastPopupElement() || this.callBase()\r\n },\r\n _popupShowingHandler: function() {\r\n this.callBase();\r\n this._strategy.popupShowingHandler()\r\n },\r\n _popupShownHandler: function() {\r\n this.callBase();\r\n this._strategy.renderOpenedState()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n this._strategy.renderOpenedState();\r\n this._strategy.popupHiddenHandler()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._formatValidationIcon()\r\n }\r\n },\r\n _clearValueHandler: function(e) {\r\n this.option(\"text\", \"\");\r\n this.callBase(e)\r\n },\r\n _readOnlyPropValue: function() {\r\n if (this._pickerType === PICKER_TYPE.rollers) {\r\n return true\r\n }\r\n var platform = devices.real().platform;\r\n var isCustomValueDisabled = this._isNativeType() && (\"ios\" === platform || \"android\" === platform);\r\n if (isCustomValueDisabled) {\r\n return this.option(\"readOnly\")\r\n }\r\n return this.callBase()\r\n },\r\n _isClearButtonVisible: function() {\r\n return this.callBase() && !this._isNativeType()\r\n },\r\n _renderValue: function() {\r\n var value = this.dateOption(\"value\");\r\n this.option(\"text\", this._getDisplayedText(value));\r\n this._strategy.renderValue();\r\n return this.callBase()\r\n },\r\n _setSubmitValue: function() {\r\n var value = this.dateOption(\"value\");\r\n var dateSerializationFormat = this.option(\"dateSerializationFormat\");\r\n var submitFormat = uiDateUtils.SUBMIT_FORMATS_MAP[this.option(\"type\")];\r\n var submitValue = dateSerializationFormat ? dateSerialization.serializeDate(value, dateSerializationFormat) : uiDateUtils.toStandardDateFormat(value, submitFormat);\r\n this._getSubmitElement().val(submitValue)\r\n },\r\n _getDisplayedText: function(value) {\r\n var mode = this.option(\"mode\");\r\n var displayedText;\r\n if (\"text\" === mode) {\r\n var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n displayedText = dateLocalization.format(value, displayFormat)\r\n } else {\r\n var format = this._getFormatByMode(mode);\r\n if (format) {\r\n displayedText = dateLocalization.format(value, format)\r\n } else {\r\n displayedText = uiDateUtils.toStandardDateFormat(value, mode)\r\n }\r\n }\r\n return displayedText\r\n },\r\n _getFormatByMode: function(mode) {\r\n return inputType(mode) ? null : uiDateUtils.FORMATS_MAP[mode]\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var text = this.option(\"text\");\r\n var currentValue = this.dateOption(\"value\");\r\n if (text === this._getDisplayedText(currentValue)) {\r\n this._applyInternalValidation(currentValue);\r\n return\r\n }\r\n var parsedDate = this._getParsedDate(text);\r\n var value = null !== currentValue && void 0 !== currentValue ? currentValue : this._getDateByDefault();\r\n var type = this.option(\"type\");\r\n var newValue = uiDateUtils.mergeDates(value, parsedDate, type);\r\n var date = parsedDate && \"time\" === type ? newValue : parsedDate;\r\n if (this._applyInternalValidation(date).isValid) {\r\n var displayedText = this._getDisplayedText(newValue);\r\n if (value && newValue && value.getTime() === newValue.getTime() && displayedText !== text) {\r\n this._renderValue()\r\n } else {\r\n this.dateValue(newValue, e)\r\n }\r\n }\r\n },\r\n _getDateByDefault: function() {\r\n return this._strategy.useCurrentDateByDefault() && this._strategy.getDefaultDate()\r\n },\r\n _getParsedDate: function(text) {\r\n var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var parsedText = this._strategy.getParsedText(text, displayFormat);\r\n return null !== parsedText && void 0 !== parsedText ? parsedText : void 0\r\n },\r\n _applyInternalValidation(value) {\r\n var text = this.option(\"text\");\r\n var hasText = !!text && null !== value;\r\n var isDate = !!value && isDateType(value) && !isNaN(value.getTime());\r\n var isDateInRange = isDate && dateUtils.dateInRange(value, this.dateOption(\"min\"), this.dateOption(\"max\"), this.option(\"type\"));\r\n var isValid = !hasText && !value || isDateInRange;\r\n var validationMessage = \"\";\r\n if (!isDate) {\r\n validationMessage = this.option(\"invalidDateMessage\")\r\n } else if (!isDateInRange) {\r\n validationMessage = this.option(\"dateOutOfRangeMessage\")\r\n }\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: validationMessage\r\n }\r\n });\r\n return {\r\n isValid: isValid,\r\n isDate: isDate\r\n }\r\n },\r\n _applyCustomValidation: function(value) {\r\n this.validationRequest.fire({\r\n editor: this,\r\n value: this._serializeDate(value)\r\n })\r\n },\r\n _isValueChanged: function(newValue) {\r\n var oldValue = this.dateOption(\"value\");\r\n var oldTime = oldValue && oldValue.getTime();\r\n var newTime = newValue && newValue.getTime();\r\n return oldTime !== newTime\r\n },\r\n _isTextChanged: function(newValue) {\r\n var oldText = this.option(\"text\");\r\n var newText = newValue && this._getDisplayedText(newValue) || \"\";\r\n return oldText !== newText\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._input().attr(\"autocomplete\", \"off\")\r\n },\r\n _renderOpenedState: function() {\r\n if (!this._isNativeType()) {\r\n this.callBase()\r\n }\r\n if (this._strategy.isAdaptivityChanged()) {\r\n this._refreshStrategy()\r\n }\r\n },\r\n _getPopupTitle: function() {\r\n var placeholder = this.option(\"placeholder\");\r\n if (placeholder) {\r\n return placeholder\r\n }\r\n var type = this.option(\"type\");\r\n if (type === TYPE.time) {\r\n return messageLocalization.format(\"dxDateBox-simulatedDataPickerTitleTime\")\r\n }\r\n if (type === TYPE.date || type === TYPE.datetime) {\r\n return messageLocalization.format(\"dxDateBox-simulatedDataPickerTitleDate\")\r\n }\r\n return \"\"\r\n },\r\n _renderPlaceholder: function() {\r\n this._popup && this._popup.option(\"title\", this._getPopupTitle());\r\n this.callBase()\r\n },\r\n _refreshStrategy: function() {\r\n this._strategy.dispose();\r\n this._initStrategy();\r\n this.option(this._strategy.getDefaultOptions());\r\n this._refresh()\r\n },\r\n _applyButtonHandler: function(e) {\r\n var value = this._strategy.getValue();\r\n var {\r\n isValid: isValid,\r\n isDate: isDate\r\n } = this._applyInternalValidation(value);\r\n if (isValid) {\r\n this.dateValue(value, e.event)\r\n } else if (isDate) {\r\n var displayedText = this._getDisplayedText(value);\r\n this.option(\"text\", displayedText);\r\n this._renderDisplayText(displayedText)\r\n }\r\n this.callBase()\r\n },\r\n _dispose: function() {\r\n var _this$_strategy2;\r\n this.callBase();\r\n null === (_this$_strategy2 = this._strategy) || void 0 === _this$_strategy2 ? void 0 : _this$_strategy2.dispose()\r\n },\r\n _isNativeType: function() {\r\n return this._pickerType === PICKER_TYPE.native\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"showClearButton\":\r\n case \"buttons\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"pickerType\":\r\n this._updatePickerOptions({\r\n pickerType: args.value\r\n });\r\n this._refreshStrategy();\r\n this._refreshPickerTypeClass();\r\n this._invalidate();\r\n break;\r\n case \"type\":\r\n this._updatePickerOptions({\r\n format: args.value\r\n });\r\n this._refreshStrategy();\r\n this._refreshFormatClass();\r\n this._renderPopupWrapper();\r\n this._formatValidationIcon();\r\n this._updateValue();\r\n break;\r\n case \"placeholder\":\r\n this._renderPlaceholder();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n var isValid = this.option(\"isValid\");\r\n this._applyInternalValidation(this.dateOption(\"value\"));\r\n if (!isValid) {\r\n this._applyCustomValidation(this.dateOption(\"value\"))\r\n }\r\n this._invalidate();\r\n break;\r\n case \"dateSerializationFormat\":\r\n case \"interval\":\r\n case \"disabledDates\":\r\n case \"calendarOptions\":\r\n this._invalidate();\r\n break;\r\n case \"displayFormat\":\r\n this.option(\"text\", this._getDisplayedText(this.dateOption(\"value\")));\r\n this._renderInputValue();\r\n break;\r\n case \"text\":\r\n this._strategy.textChangedHandler(args.value);\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"isValid\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"showDropDownButton\":\r\n this._formatValidationIcon();\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"readOnly\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"invalidDateMessage\":\r\n case \"dateOutOfRangeMessage\":\r\n case \"adaptivityEnabled\":\r\n case \"showAnalogClock\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _getSerializationFormat: function() {\r\n var value = this.option(\"value\");\r\n if (this.option(\"dateSerializationFormat\") && config().forceIsoDateParsing) {\r\n return this.option(\"dateSerializationFormat\")\r\n }\r\n if (isNumeric(value)) {\r\n return \"number\"\r\n }\r\n if (!isString(value)) {\r\n return\r\n }\r\n return dateSerialization.getDateSerializationFormat(value)\r\n },\r\n _updateValue: function(value) {\r\n this.callBase();\r\n this._applyInternalValidation(null !== value && void 0 !== value ? value : this.dateOption(\"value\"))\r\n },\r\n dateValue: function(value, dxEvent) {\r\n var isValueChanged = this._isValueChanged(value);\r\n if (isValueChanged && dxEvent) {\r\n this._saveValueChangeEvent(dxEvent)\r\n }\r\n if (!isValueChanged) {\r\n if (this._isTextChanged(value)) {\r\n this._updateValue(value)\r\n } else if (\"\" === this.option(\"text\")) {\r\n this._applyCustomValidation(value)\r\n }\r\n }\r\n return this.dateOption(\"value\", value)\r\n },\r\n dateOption: function(optionName, value) {\r\n if (1 === arguments.length) {\r\n return dateSerialization.deserializeDate(this.option(optionName))\r\n }\r\n this.option(optionName, this._serializeDate(value))\r\n },\r\n _serializeDate: function(date) {\r\n var serializationFormat = this._getSerializationFormat();\r\n return dateSerialization.serializeDate(date, serializationFormat)\r\n },\r\n _clearValue: function() {\r\n var value = this.option(\"value\");\r\n this.callBase();\r\n if (null === value) {\r\n this._applyCustomValidation(null)\r\n }\r\n },\r\n reset: function() {\r\n var value = this.option(\"value\");\r\n this.callBase();\r\n if (null === value) {\r\n this._applyInternalValidation(null)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxDateBox\", DateBox);\r\nexport default DateBox;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.mask.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n addNamespace,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n isFunction,\r\n isString,\r\n isDate,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n clipboardText\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n fitIntoRange,\r\n inRange,\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n getDatePartIndexByPosition,\r\n renderDateParts\r\n} from \"./ui.date_box.mask.parts\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport {\r\n getRegExpInfo\r\n} from \"../../localization/ldml/date.parser\";\r\nimport {\r\n getFormat\r\n} from \"../../localization/ldml/date.format\";\r\nimport DateBoxBase from \"./ui.date_box.base\";\r\nimport numberLocalization from \"../../localization/number\";\r\nimport devices from \"../../core/devices\";\r\nimport browser from \"../../core/utils/browser\";\r\nvar MASK_EVENT_NAMESPACE = \"dateBoxMask\";\r\nvar FORWARD = 1;\r\nvar BACKWARD = -1;\r\nvar DateBoxMask = DateBoxBase.inherit({\r\n _supportedKeys(e) {\r\n var originalHandlers = this.callBase(e);\r\n var callOriginalHandler = e => {\r\n var originalHandler = originalHandlers[normalizeKeyName(e)];\r\n return originalHandler && originalHandler.apply(this, [e])\r\n };\r\n var applyHandler = (e, maskHandler) => {\r\n if (this._shouldUseOriginalHandler(e)) {\r\n return callOriginalHandler.apply(this, [e])\r\n } else {\r\n return maskHandler.apply(this, [e])\r\n }\r\n };\r\n return extend({}, originalHandlers, {\r\n del: e => applyHandler(e, event => {\r\n this._revertPart(FORWARD);\r\n this._isAllSelected() || event.preventDefault()\r\n }),\r\n backspace: e => applyHandler(e, event => {\r\n this._revertPart(BACKWARD);\r\n this._isAllSelected() || event.preventDefault()\r\n }),\r\n home: e => applyHandler(e, event => {\r\n this._selectFirstPart();\r\n event.preventDefault()\r\n }),\r\n end: e => applyHandler(e, event => {\r\n this._selectLastPart();\r\n event.preventDefault()\r\n }),\r\n escape: e => applyHandler(e, event => {\r\n this._revertChanges(event)\r\n }),\r\n enter: e => applyHandler(e, event => {\r\n this._enterHandler(event)\r\n }),\r\n leftArrow: e => applyHandler(e, event => {\r\n this._selectNextPart(BACKWARD);\r\n event.preventDefault()\r\n }),\r\n rightArrow: e => applyHandler(e, event => {\r\n this._selectNextPart(FORWARD);\r\n event.preventDefault()\r\n }),\r\n upArrow: e => applyHandler(e, event => {\r\n this._upDownArrowHandler(FORWARD);\r\n event.preventDefault()\r\n }),\r\n downArrow: e => applyHandler(e, event => {\r\n this._upDownArrowHandler(BACKWARD);\r\n event.preventDefault()\r\n })\r\n })\r\n },\r\n _shouldUseOriginalHandler(e) {\r\n var isNotDeletingInCalendar = this.option(\"opened\") && e && -1 === [\"backspace\", \"del\"].indexOf(normalizeKeyName(e));\r\n return !this._useMaskBehavior() || isNotDeletingInCalendar || e && e.altKey\r\n },\r\n _upDownArrowHandler(step) {\r\n this._setNewDateIfEmpty();\r\n var originalValue = this._getActivePartValue(this._initialMaskValue);\r\n var currentValue = this._getActivePartValue();\r\n var delta = currentValue - originalValue;\r\n this._loadMaskValue(this._initialMaskValue);\r\n this._partIncrease(delta + step, true)\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n useMaskBehavior: false,\r\n emptyDateValue: new Date(2e3, 0, 1, 0, 0, 0)\r\n })\r\n },\r\n _isSingleCharKey(_ref) {\r\n var {\r\n originalEvent: originalEvent,\r\n alt: alt\r\n } = _ref;\r\n var key = originalEvent.data || (\"space\" === normalizeKeyName(originalEvent) ? \" \" : originalEvent.key);\r\n return \"string\" === typeof key && 1 === key.length && !alt && !isCommandKeyPressed(originalEvent)\r\n },\r\n _isSingleDigitKey(e) {\r\n var _e$originalEvent;\r\n var data = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.data;\r\n return 1 === (null === data || void 0 === data ? void 0 : data.length) && parseInt(data, 10)\r\n },\r\n _useBeforeInputEvent: function() {\r\n var device = devices.real();\r\n return device.android && device.version[0] > 4\r\n },\r\n _keyboardHandler(e) {\r\n var key = e.originalEvent.key;\r\n var result = this.callBase(e);\r\n if (!this._useMaskBehavior() || this._useBeforeInputEvent()) {\r\n return result\r\n }\r\n if (browser.chrome && \"Process\" === e.key && 0 === e.code.indexOf(\"Digit\")) {\r\n key = e.code.replace(\"Digit\", \"\");\r\n this._processInputKey(key);\r\n this._maskInputHandler = () => {\r\n this._renderSelectedPart()\r\n }\r\n } else if (this._isSingleCharKey(e)) {\r\n this._processInputKey(key);\r\n e.originalEvent.preventDefault()\r\n }\r\n return result\r\n },\r\n _maskBeforeInputHandler(e) {\r\n this._maskInputHandler = null;\r\n var {\r\n inputType: inputType\r\n } = e.originalEvent;\r\n if (\"insertCompositionText\" === inputType) {\r\n this._maskInputHandler = () => {\r\n this._renderSelectedPart()\r\n }\r\n }\r\n var isBackwardDeletion = \"deleteContentBackward\" === inputType;\r\n var isForwardDeletion = \"deleteContentForward\" === inputType;\r\n if (isBackwardDeletion || isForwardDeletion) {\r\n var direction = isBackwardDeletion ? BACKWARD : FORWARD;\r\n this._maskInputHandler = () => {\r\n this._revertPart();\r\n this._selectNextPart(direction)\r\n }\r\n }\r\n if (!this._useMaskBehavior() || !this._isSingleCharKey(e)) {\r\n return\r\n }\r\n var key = e.originalEvent.data;\r\n this._processInputKey(key);\r\n e.preventDefault();\r\n return true\r\n },\r\n _keyPressHandler(e) {\r\n var {\r\n originalEvent: event\r\n } = e;\r\n if (\"insertCompositionText\" === (null === event || void 0 === event ? void 0 : event.inputType) && this._isSingleDigitKey(e)) {\r\n this._processInputKey(event.data);\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart()\r\n }\r\n this.callBase(e);\r\n if (this._maskInputHandler) {\r\n this._maskInputHandler();\r\n this._maskInputHandler = null\r\n }\r\n },\r\n _processInputKey(key) {\r\n if (this._isAllSelected()) {\r\n this._activePartIndex = 0\r\n }\r\n this._setNewDateIfEmpty();\r\n if (isNaN(parseInt(key))) {\r\n this._searchString(key)\r\n } else {\r\n this._searchNumber(key)\r\n }\r\n },\r\n _isAllSelected() {\r\n var caret = this._caret();\r\n return caret.end - caret.start === this.option(\"text\").length\r\n },\r\n _getFormatPattern() {\r\n if (this._formatPattern) {\r\n return this._formatPattern\r\n }\r\n var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var isLDMLPattern = isString(format) && !dateLocalization._getPatternByFormat(format);\r\n if (isLDMLPattern) {\r\n this._formatPattern = format\r\n } else {\r\n this._formatPattern = getFormat((function(value) {\r\n return dateLocalization.format(value, format)\r\n }))\r\n }\r\n return this._formatPattern\r\n },\r\n _setNewDateIfEmpty() {\r\n if (!this._maskValue) {\r\n var value = \"time\" === this.option(\"type\") ? new Date(null) : new Date;\r\n this._maskValue = value;\r\n this._initialMaskValue = value;\r\n this._renderDateParts()\r\n }\r\n },\r\n _partLimitsReached(max) {\r\n var maxLimitLength = String(max).length;\r\n var formatLength = this._getActivePartProp(\"pattern\").length;\r\n var isShortFormat = 1 === formatLength;\r\n var maxSearchLength = isShortFormat ? maxLimitLength : Math.min(formatLength, maxLimitLength);\r\n var isLengthExceeded = this._searchValue.length === maxSearchLength;\r\n var isValueOverflowed = parseInt(this._searchValue + \"0\") > max;\r\n return isLengthExceeded || isValueOverflowed\r\n },\r\n _searchNumber(char) {\r\n var {\r\n max: max\r\n } = this._getActivePartLimits();\r\n var maxLimitLength = String(max).length;\r\n this._searchValue = (this._searchValue + char).substr(-maxLimitLength);\r\n if (isNaN(this._searchValue)) {\r\n this._searchValue = char\r\n }\r\n this._setActivePartValue(this._searchValue);\r\n if (this._partLimitsReached(max)) {\r\n this._selectNextPart(FORWARD)\r\n }\r\n },\r\n _searchString(char) {\r\n if (!isNaN(parseInt(this._getActivePartProp(\"text\")))) {\r\n return\r\n }\r\n var limits = this._getActivePartProp(\"limits\")(this._maskValue);\r\n var startString = this._searchValue + char.toLowerCase();\r\n var endLimit = limits.max - limits.min;\r\n for (var i = 0; i <= endLimit; i++) {\r\n this._loadMaskValue(this._initialMaskValue);\r\n this._partIncrease(i + 1);\r\n if (0 === this._getActivePartProp(\"text\").toLowerCase().indexOf(startString)) {\r\n this._searchValue = startString;\r\n return\r\n }\r\n }\r\n this._setNewDateIfEmpty();\r\n if (this._searchValue) {\r\n this._clearSearchValue();\r\n this._searchString(char)\r\n }\r\n },\r\n _clearSearchValue() {\r\n this._searchValue = \"\"\r\n },\r\n _revertPart: function(direction) {\r\n if (!this._isAllSelected()) {\r\n var actual = this._getActivePartValue(this.option(\"emptyDateValue\"));\r\n this._setActivePartValue(actual);\r\n this._selectNextPart(direction)\r\n }\r\n this._clearSearchValue()\r\n },\r\n _useMaskBehavior() {\r\n return this.option(\"useMaskBehavior\") && \"text\" === this.option(\"mode\")\r\n },\r\n _prepareRegExpInfo() {\r\n this._regExpInfo = getRegExpInfo(this._getFormatPattern(), dateLocalization);\r\n var regExp = this._regExpInfo.regexp;\r\n var flags = regExp.flags;\r\n var convertedRegExp = numberLocalization.convertDigits(this._regExpInfo.regexp.source, false);\r\n this._regExpInfo.regexp = RegExp(convertedRegExp, flags)\r\n },\r\n _initMaskState() {\r\n this._activePartIndex = 0;\r\n this._formatPattern = null;\r\n this._prepareRegExpInfo();\r\n this._loadMaskValue()\r\n },\r\n _renderMask() {\r\n this.callBase();\r\n this._detachMaskEvents();\r\n this._clearMaskState();\r\n if (this._useMaskBehavior()) {\r\n this._attachMaskEvents();\r\n this._initMaskState();\r\n this._renderDateParts()\r\n }\r\n },\r\n _renderDateParts() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this.option(\"text\") || this._getDisplayedText(this._maskValue);\r\n if (text) {\r\n this._dateParts = renderDateParts(text, this._regExpInfo);\r\n if (!this._input().is(\":hidden\")) {\r\n this._selectNextPart()\r\n }\r\n }\r\n },\r\n _detachMaskEvents() {\r\n eventsEngine.off(this._input(), \".\" + MASK_EVENT_NAMESPACE)\r\n },\r\n _attachMaskEvents() {\r\n eventsEngine.on(this._input(), addNamespace(\"dxclick\", MASK_EVENT_NAMESPACE), this._maskClickHandler.bind(this));\r\n eventsEngine.on(this._input(), addNamespace(\"paste\", MASK_EVENT_NAMESPACE), this._maskPasteHandler.bind(this));\r\n eventsEngine.on(this._input(), addNamespace(\"drop\", MASK_EVENT_NAMESPACE), () => {\r\n this._renderSelectedPart()\r\n });\r\n eventsEngine.on(this._input(), addNamespace(\"compositionend\", MASK_EVENT_NAMESPACE), this._maskCompositionEndHandler.bind(this));\r\n if (this._useBeforeInputEvent()) {\r\n eventsEngine.on(this._input(), addNamespace(\"beforeinput\", MASK_EVENT_NAMESPACE), this._maskBeforeInputHandler.bind(this))\r\n }\r\n },\r\n _renderSelectedPart() {\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart()\r\n },\r\n _selectLastPart() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = this._dateParts.length;\r\n this._selectNextPart(BACKWARD)\r\n }\r\n },\r\n _selectFirstPart() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = -1;\r\n this._selectNextPart(FORWARD)\r\n }\r\n },\r\n _onMouseWheel(e) {\r\n if (this._useMaskBehavior()) {\r\n this._partIncrease(e.delta > 0 ? FORWARD : BACKWARD, e)\r\n }\r\n },\r\n _selectNextPart() {\r\n var step = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\r\n if (!this.option(\"text\") || this._disposed) {\r\n return\r\n }\r\n if (step) {\r\n this._initialMaskValue = new Date(this._maskValue)\r\n }\r\n var index = fitIntoRange(this._activePartIndex + step, 0, this._dateParts.length - 1);\r\n if (this._dateParts[index].isStub) {\r\n var isBoundaryIndex = 0 === index && step < 0 || index === this._dateParts.length - 1 && step > 0;\r\n if (!isBoundaryIndex) {\r\n this._selectNextPart(step >= 0 ? step + 1 : step - 1);\r\n return\r\n } else {\r\n index = this._activePartIndex\r\n }\r\n }\r\n if (this._activePartIndex !== index) {\r\n this._clearSearchValue()\r\n }\r\n this._activePartIndex = index;\r\n this._caret(this._getActivePartProp(\"caret\"))\r\n },\r\n _getRealLimitsPattern() {\r\n if (\"d\" === this._getActivePartProp(\"pattern\")[0]) {\r\n return \"dM\"\r\n }\r\n },\r\n _getActivePartLimits(lockOtherParts) {\r\n var limitFunction = this._getActivePartProp(\"limits\");\r\n return limitFunction(this._maskValue, lockOtherParts && this._getRealLimitsPattern())\r\n },\r\n _getActivePartValue(dateValue) {\r\n dateValue = dateValue || this._maskValue;\r\n var getter = this._getActivePartProp(\"getter\");\r\n return isFunction(getter) ? getter(dateValue) : dateValue[getter]()\r\n },\r\n _addLeadingZeroes(value) {\r\n var zeroes = this._searchValue.match(/^0+/);\r\n var limits = this._getActivePartLimits();\r\n var maxLimitLength = String(limits.max).length;\r\n return ((zeroes && zeroes[0] || \"\") + String(value)).substr(-maxLimitLength)\r\n },\r\n _setActivePartValue(value, dateValue) {\r\n dateValue = dateValue || this._maskValue;\r\n var setter = this._getActivePartProp(\"setter\");\r\n var limits = this._getActivePartLimits();\r\n value = inRange(value, limits.min, limits.max) ? value : value % 10;\r\n value = this._addLeadingZeroes(fitIntoRange(value, limits.min, limits.max));\r\n isFunction(setter) ? setter(dateValue, value) : dateValue[setter](value);\r\n this._renderDisplayText(this._getDisplayedText(dateValue));\r\n this._renderDateParts()\r\n },\r\n _getActivePartProp(property) {\r\n if (!this._dateParts || !this._dateParts[this._activePartIndex]) {\r\n return\r\n }\r\n return this._dateParts[this._activePartIndex][property]\r\n },\r\n _loadMaskValue() {\r\n var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.dateOption(\"value\");\r\n this._maskValue = value && new Date(value);\r\n this._initialMaskValue = value && new Date(value)\r\n },\r\n _saveMaskValue() {\r\n var value = this._maskValue && new Date(this._maskValue);\r\n if (value && \"date\" === this.option(\"type\")) {\r\n value.setHours(0, 0, 0, 0)\r\n }\r\n this._initialMaskValue = new Date(value);\r\n this.dateOption(\"value\", value)\r\n },\r\n _revertChanges() {\r\n this._loadMaskValue();\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._renderDateParts()\r\n },\r\n _renderDisplayText(text) {\r\n this.callBase(text);\r\n if (this._useMaskBehavior()) {\r\n this.option(\"text\", text)\r\n }\r\n },\r\n _partIncrease(step, lockOtherParts) {\r\n this._setNewDateIfEmpty();\r\n var {\r\n max: max,\r\n min: min\r\n } = this._getActivePartLimits(lockOtherParts);\r\n var limitDelta = max - min;\r\n if (1 === limitDelta) {\r\n limitDelta++\r\n }\r\n var newValue = step + this._getActivePartValue();\r\n if (newValue > max) {\r\n newValue = this._applyLimits(newValue, {\r\n limitBase: min,\r\n limitClosest: max,\r\n limitDelta: limitDelta\r\n })\r\n } else if (newValue < min) {\r\n newValue = this._applyLimits(newValue, {\r\n limitBase: max,\r\n limitClosest: min,\r\n limitDelta: limitDelta\r\n })\r\n }\r\n this._setActivePartValue(newValue)\r\n },\r\n _applyLimits(newValue, _ref2) {\r\n var {\r\n limitBase: limitBase,\r\n limitClosest: limitClosest,\r\n limitDelta: limitDelta\r\n } = _ref2;\r\n var delta = (newValue - limitClosest) % limitDelta;\r\n return delta ? limitBase + delta - 1 * sign(delta) : limitClosest\r\n },\r\n _maskClickHandler() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = getDatePartIndexByPosition(this._dateParts, this._caret().start);\r\n if (isDefined(this._activePartIndex)) {\r\n this._caret(this._getActivePartProp(\"caret\"))\r\n } else {\r\n this._selectLastPart()\r\n }\r\n }\r\n },\r\n _maskCompositionEndHandler(e) {\r\n if (browser.msie && this._isSingleDigitKey(e)) {\r\n var key = e.originalEvent.data;\r\n this._processInputKey(key)\r\n } else {\r\n this._input().val(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart();\r\n this._maskInputHandler = () => {\r\n this._renderSelectedPart()\r\n }\r\n }\r\n },\r\n _maskPasteHandler(e) {\r\n var newText = this._replaceSelectedText(this.option(\"text\"), this._caret(), clipboardText(e));\r\n var date = dateLocalization.parse(newText, this._getFormatPattern());\r\n if (date && this._isDateValid(date)) {\r\n this._maskValue = date;\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._renderDateParts();\r\n this._selectNextPart()\r\n }\r\n e.preventDefault()\r\n },\r\n _isDateValid: date => isDate(date) && !isNaN(date),\r\n _isValueDirty() {\r\n var value = this.dateOption(\"value\");\r\n return (this._maskValue && this._maskValue.getTime()) !== (value && value.getTime())\r\n },\r\n _fireChangeEvent() {\r\n this._clearSearchValue();\r\n if (this._isValueDirty()) {\r\n eventsEngine.trigger(this._input(), \"change\")\r\n }\r\n },\r\n _enterHandler(e) {\r\n this._fireChangeEvent();\r\n this._selectNextPart(FORWARD);\r\n e.preventDefault()\r\n },\r\n _focusOutHandler(e) {\r\n this.callBase(e);\r\n if (this._useMaskBehavior() && !e.isDefaultPrevented()) {\r\n this._fireChangeEvent();\r\n this._selectFirstPart(e)\r\n }\r\n },\r\n _valueChangeEventHandler(e) {\r\n var text = this.option(\"text\");\r\n if (this._useMaskBehavior()) {\r\n this._saveValueChangeEvent(e);\r\n if (!text) {\r\n this._maskValue = null\r\n } else if (null === this._maskValue) {\r\n this._loadMaskValue(text)\r\n }\r\n this._saveMaskValue()\r\n } else {\r\n this.callBase(e)\r\n }\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"useMaskBehavior\":\r\n this._renderMask();\r\n break;\r\n case \"displayFormat\":\r\n case \"mode\":\r\n this.callBase(args);\r\n this._renderMask();\r\n break;\r\n case \"value\":\r\n this._loadMaskValue();\r\n this.callBase(args);\r\n this._renderDateParts();\r\n break;\r\n case \"emptyDateValue\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearMaskState() {\r\n this._clearSearchValue();\r\n delete this._dateParts;\r\n delete this._activePartIndex;\r\n delete this._maskValue\r\n },\r\n reset() {\r\n this.callBase();\r\n this._clearMaskState();\r\n this._activePartIndex = 0\r\n },\r\n _clean() {\r\n this.callBase();\r\n this._detachMaskEvents();\r\n this._clearMaskState()\r\n }\r\n});\r\nexport default DateBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport DateBoxMask from \"./ui.date_box.mask\";\r\nregisterComponent(\"dxDateBox\", DateBoxMask);\r\nexport default DateBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/date_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport DateBox from \"./date_box/ui.date_box\";\r\nexport default DateBox;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/animator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nvar Animator = Class.inherit({\r\n ctor: function() {\r\n this._finished = true;\r\n this._stopped = false;\r\n this._proxiedStepCore = this._stepCore.bind(this)\r\n },\r\n start: function() {\r\n this._stopped = false;\r\n this._finished = false;\r\n this._stepCore()\r\n },\r\n stop: function() {\r\n this._stopped = true;\r\n cancelAnimationFrame(this._stepAnimationFrame)\r\n },\r\n _stepCore: function() {\r\n if (this._isStopped()) {\r\n this._stop();\r\n return\r\n }\r\n if (this._isFinished()) {\r\n this._finished = true;\r\n this._complete();\r\n return\r\n }\r\n this._step();\r\n this._stepAnimationFrame = requestAnimationFrame(this._proxiedStepCore)\r\n },\r\n _step: abstract,\r\n _isFinished: noop,\r\n _stop: noop,\r\n _complete: noop,\r\n _isStopped: function() {\r\n return this._stopped\r\n },\r\n inProgress: function() {\r\n return !(this._stopped || this._finished)\r\n }\r\n});\r\nexport default Animator;\r\n","/**\r\n * DevExtreme (esm/color.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar standardColorNames = {\r\n aliceblue: \"f0f8ff\",\r\n antiquewhite: \"faebd7\",\r\n aqua: \"00ffff\",\r\n aquamarine: \"7fffd4\",\r\n azure: \"f0ffff\",\r\n beige: \"f5f5dc\",\r\n bisque: \"ffe4c4\",\r\n black: \"000000\",\r\n blanchedalmond: \"ffebcd\",\r\n blue: \"0000ff\",\r\n blueviolet: \"8a2be2\",\r\n brown: \"a52a2a\",\r\n burlywood: \"deb887\",\r\n cadetblue: \"5f9ea0\",\r\n chartreuse: \"7fff00\",\r\n chocolate: \"d2691e\",\r\n coral: \"ff7f50\",\r\n cornflowerblue: \"6495ed\",\r\n cornsilk: \"fff8dc\",\r\n crimson: \"dc143c\",\r\n cyan: \"00ffff\",\r\n darkblue: \"00008b\",\r\n darkcyan: \"008b8b\",\r\n darkgoldenrod: \"b8860b\",\r\n darkgray: \"a9a9a9\",\r\n darkgreen: \"006400\",\r\n darkkhaki: \"bdb76b\",\r\n darkmagenta: \"8b008b\",\r\n darkolivegreen: \"556b2f\",\r\n darkorange: \"ff8c00\",\r\n darkorchid: \"9932cc\",\r\n darkred: \"8b0000\",\r\n darksalmon: \"e9967a\",\r\n darkseagreen: \"8fbc8f\",\r\n darkslateblue: \"483d8b\",\r\n darkslategray: \"2f4f4f\",\r\n darkturquoise: \"00ced1\",\r\n darkviolet: \"9400d3\",\r\n deeppink: \"ff1493\",\r\n deepskyblue: \"00bfff\",\r\n dimgray: \"696969\",\r\n dodgerblue: \"1e90ff\",\r\n feldspar: \"d19275\",\r\n firebrick: \"b22222\",\r\n floralwhite: \"fffaf0\",\r\n forestgreen: \"228b22\",\r\n fuchsia: \"ff00ff\",\r\n gainsboro: \"dcdcdc\",\r\n ghostwhite: \"f8f8ff\",\r\n gold: \"ffd700\",\r\n goldenrod: \"daa520\",\r\n gray: \"808080\",\r\n green: \"008000\",\r\n greenyellow: \"adff2f\",\r\n honeydew: \"f0fff0\",\r\n hotpink: \"ff69b4\",\r\n indianred: \"cd5c5c\",\r\n indigo: \"4b0082\",\r\n ivory: \"fffff0\",\r\n khaki: \"f0e68c\",\r\n lavender: \"e6e6fa\",\r\n lavenderblush: \"fff0f5\",\r\n lawngreen: \"7cfc00\",\r\n lemonchiffon: \"fffacd\",\r\n lightblue: \"add8e6\",\r\n lightcoral: \"f08080\",\r\n lightcyan: \"e0ffff\",\r\n lightgoldenrodyellow: \"fafad2\",\r\n lightgrey: \"d3d3d3\",\r\n lightgreen: \"90ee90\",\r\n lightpink: \"ffb6c1\",\r\n lightsalmon: \"ffa07a\",\r\n lightseagreen: \"20b2aa\",\r\n lightskyblue: \"87cefa\",\r\n lightslateblue: \"8470ff\",\r\n lightslategray: \"778899\",\r\n lightsteelblue: \"b0c4de\",\r\n lightyellow: \"ffffe0\",\r\n lime: \"00ff00\",\r\n limegreen: \"32cd32\",\r\n linen: \"faf0e6\",\r\n magenta: \"ff00ff\",\r\n maroon: \"800000\",\r\n mediumaquamarine: \"66cdaa\",\r\n mediumblue: \"0000cd\",\r\n mediumorchid: \"ba55d3\",\r\n mediumpurple: \"9370d8\",\r\n mediumseagreen: \"3cb371\",\r\n mediumslateblue: \"7b68ee\",\r\n mediumspringgreen: \"00fa9a\",\r\n mediumturquoise: \"48d1cc\",\r\n mediumvioletred: \"c71585\",\r\n midnightblue: \"191970\",\r\n mintcream: \"f5fffa\",\r\n mistyrose: \"ffe4e1\",\r\n moccasin: \"ffe4b5\",\r\n navajowhite: \"ffdead\",\r\n navy: \"000080\",\r\n oldlace: \"fdf5e6\",\r\n olive: \"808000\",\r\n olivedrab: \"6b8e23\",\r\n orange: \"ffa500\",\r\n orangered: \"ff4500\",\r\n orchid: \"da70d6\",\r\n palegoldenrod: \"eee8aa\",\r\n palegreen: \"98fb98\",\r\n paleturquoise: \"afeeee\",\r\n palevioletred: \"d87093\",\r\n papayawhip: \"ffefd5\",\r\n peachpuff: \"ffdab9\",\r\n peru: \"cd853f\",\r\n pink: \"ffc0cb\",\r\n plum: \"dda0dd\",\r\n powderblue: \"b0e0e6\",\r\n purple: \"800080\",\r\n rebeccapurple: \"663399\",\r\n red: \"ff0000\",\r\n rosybrown: \"bc8f8f\",\r\n royalblue: \"4169e1\",\r\n saddlebrown: \"8b4513\",\r\n salmon: \"fa8072\",\r\n sandybrown: \"f4a460\",\r\n seagreen: \"2e8b57\",\r\n seashell: \"fff5ee\",\r\n sienna: \"a0522d\",\r\n silver: \"c0c0c0\",\r\n skyblue: \"87ceeb\",\r\n slateblue: \"6a5acd\",\r\n slategray: \"708090\",\r\n snow: \"fffafa\",\r\n springgreen: \"00ff7f\",\r\n steelblue: \"4682b4\",\r\n tan: \"d2b48c\",\r\n teal: \"008080\",\r\n thistle: \"d8bfd8\",\r\n tomato: \"ff6347\",\r\n turquoise: \"40e0d0\",\r\n violet: \"ee82ee\",\r\n violetred: \"d02090\",\r\n wheat: \"f5deb3\",\r\n white: \"ffffff\",\r\n whitesmoke: \"f5f5f5\",\r\n yellow: \"ffff00\",\r\n yellowgreen: \"9acd32\"\r\n};\r\nvar standardColorTypes = [{\r\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]\r\n }\r\n}, {\r\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d*\\.*\\d+)\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^hsv\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var v = parseInt(colorString[3], 10);\r\n var rgb = hsvToRgb(h, s, v);\r\n return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]\r\n }\r\n}, {\r\n re: /^hsl\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var l = parseInt(colorString[3], 10);\r\n var rgb = hslToRgb(h, s, l);\r\n return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]\r\n }\r\n}];\r\nvar _round = Math.round;\r\n\r\nfunction Color(value) {\r\n this.baseColor = value;\r\n var color;\r\n if (value) {\r\n color = String(value).toLowerCase().replace(/ /g, \"\");\r\n color = standardColorNames[color] ? \"#\" + standardColorNames[color] : color;\r\n color = parseColor(color)\r\n }\r\n if (!color) {\r\n this.colorIsInvalid = true\r\n }\r\n color = color || {};\r\n this.r = normalize(color[0]);\r\n this.g = normalize(color[1]);\r\n this.b = normalize(color[2]);\r\n this.a = normalize(color[3], 1, 1);\r\n if (color[4]) {\r\n this.hsv = {\r\n h: color[4][0],\r\n s: color[4][1],\r\n v: color[4][2]\r\n }\r\n } else {\r\n this.hsv = toHsvFromRgb(this.r, this.g, this.b)\r\n }\r\n if (color[5]) {\r\n this.hsl = {\r\n h: color[5][0],\r\n s: color[5][1],\r\n l: color[5][2]\r\n }\r\n } else {\r\n this.hsl = toHslFromRgb(this.r, this.g, this.b)\r\n }\r\n}\r\n\r\nfunction parseColor(color) {\r\n if (\"transparent\" === color) {\r\n return [0, 0, 0, 0]\r\n }\r\n var i = 0;\r\n var ii = standardColorTypes.length;\r\n var str;\r\n for (; i < ii; ++i) {\r\n str = standardColorTypes[i].re.exec(color);\r\n if (str) {\r\n return standardColorTypes[i].process(str)\r\n }\r\n }\r\n return null\r\n}\r\n\r\nfunction normalize(colorComponent, def, max) {\r\n def = def || 0;\r\n max = max || 255;\r\n return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent\r\n}\r\n\r\nfunction toHexFromRgb(r, g, b) {\r\n return \"#\" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1)\r\n}\r\n\r\nfunction toHsvFromRgb(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var delta = max - min;\r\n var H;\r\n var S;\r\n var V = max;\r\n S = 0 === max ? 0 : 1 - min / max;\r\n if (max === min) {\r\n H = 0\r\n } else {\r\n switch (max) {\r\n case r:\r\n H = (g - b) / delta * 60;\r\n if (g < b) {\r\n H += 360\r\n }\r\n break;\r\n case g:\r\n H = (b - r) / delta * 60 + 120;\r\n break;\r\n case b:\r\n H = (r - g) / delta * 60 + 240\r\n }\r\n }\r\n S *= 100;\r\n V *= 100 / 255;\r\n return {\r\n h: Math.round(H),\r\n s: Math.round(S),\r\n v: Math.round(V)\r\n }\r\n}\r\n\r\nfunction hsvToRgb(h, s, v) {\r\n var index = Math.floor(h % 360 / 60);\r\n var vMin = (100 - s) * v / 100;\r\n var a = h % 60 / 60 * (v - vMin);\r\n var vInc = vMin + a;\r\n var vDec = v - a;\r\n var r;\r\n var g;\r\n var b;\r\n switch (index) {\r\n case 0:\r\n r = v;\r\n g = vInc;\r\n b = vMin;\r\n break;\r\n case 1:\r\n r = vDec;\r\n g = v;\r\n b = vMin;\r\n break;\r\n case 2:\r\n r = vMin;\r\n g = v;\r\n b = vInc;\r\n break;\r\n case 3:\r\n r = vMin;\r\n g = vDec;\r\n b = v;\r\n break;\r\n case 4:\r\n r = vInc;\r\n g = vMin;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = vMin;\r\n b = vDec\r\n }\r\n return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]\r\n}\r\n\r\nfunction calculateHue(r, g, b, delta) {\r\n var max = Math.max(r, g, b);\r\n switch (max) {\r\n case r:\r\n return (g - b) / delta + (g < b ? 6 : 0);\r\n case g:\r\n return (b - r) / delta + 2;\r\n case b:\r\n return (r - g) / delta + 4\r\n }\r\n}\r\n\r\nfunction toHslFromRgb(r, g, b) {\r\n r = convertTo01Bounds(r, 255);\r\n g = convertTo01Bounds(g, 255);\r\n b = convertTo01Bounds(b, 255);\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var maxMinSum = max + min;\r\n var h;\r\n var s;\r\n var l = maxMinSum / 2;\r\n if (max === min) {\r\n h = s = 0\r\n } else {\r\n var delta = max - min;\r\n if (l > .5) {\r\n s = delta / (2 - maxMinSum)\r\n } else {\r\n s = delta / maxMinSum\r\n }\r\n h = calculateHue(r, g, b, delta);\r\n h /= 6\r\n }\r\n return {\r\n h: _round(360 * h),\r\n s: _round(100 * s),\r\n l: _round(100 * l)\r\n }\r\n}\r\n\r\nfunction makeColorTint(colorPart, h) {\r\n var colorTint = h;\r\n if (\"r\" === colorPart) {\r\n colorTint = h + 1 / 3\r\n }\r\n if (\"b\" === colorPart) {\r\n colorTint = h - 1 / 3\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction modifyColorTint(colorTint) {\r\n if (colorTint < 0) {\r\n colorTint += 1\r\n }\r\n if (colorTint > 1) {\r\n colorTint -= 1\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction hueToRgb(p, q, colorTint) {\r\n colorTint = modifyColorTint(colorTint);\r\n if (colorTint < 1 / 6) {\r\n return p + 6 * (q - p) * colorTint\r\n }\r\n if (colorTint < .5) {\r\n return q\r\n }\r\n if (colorTint < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - colorTint) * 6\r\n }\r\n return p\r\n}\r\n\r\nfunction hslToRgb(h, s, l) {\r\n var r;\r\n var g;\r\n var b;\r\n h = convertTo01Bounds(h, 360);\r\n s = convertTo01Bounds(s, 100);\r\n l = convertTo01Bounds(l, 100);\r\n if (0 === s) {\r\n r = g = b = l\r\n } else {\r\n var q = l < .5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hueToRgb(p, q, makeColorTint(\"r\", h));\r\n g = hueToRgb(p, q, makeColorTint(\"g\", h));\r\n b = hueToRgb(p, q, makeColorTint(\"b\", h))\r\n }\r\n return [_round(255 * r), _round(255 * g), _round(255 * b)]\r\n}\r\n\r\nfunction convertTo01Bounds(n, max) {\r\n n = Math.min(max, Math.max(0, parseFloat(n)));\r\n if (Math.abs(n - max) < 1e-6) {\r\n return 1\r\n }\r\n return n % max / parseFloat(max)\r\n}\r\n\r\nfunction isIntegerBetweenMinAndMax(number, min, max) {\r\n min = min || 0;\r\n max = max || 255;\r\n if (number % 1 !== 0 || number < min || number > max || \"number\" !== typeof number || isNaN(number)) {\r\n return false\r\n }\r\n return true\r\n}\r\nColor.prototype = {\r\n constructor: Color,\r\n highlight: function(step) {\r\n step = step || 10;\r\n return this.alter(step).toHex()\r\n },\r\n darken: function(step) {\r\n step = step || 10;\r\n return this.alter(-step).toHex()\r\n },\r\n alter: function(step) {\r\n var result = new Color;\r\n result.r = normalize(this.r + step);\r\n result.g = normalize(this.g + step);\r\n result.b = normalize(this.b + step);\r\n return result\r\n },\r\n blend: function(blendColor, opacity) {\r\n var other = blendColor instanceof Color ? blendColor : new Color(blendColor);\r\n var result = new Color;\r\n result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));\r\n result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));\r\n result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));\r\n return result\r\n },\r\n toHex: function() {\r\n return toHexFromRgb(this.r, this.g, this.b)\r\n },\r\n getPureColor: function() {\r\n var rgb = hsvToRgb(this.hsv.h, 100, 100);\r\n return new Color(\"rgb(\" + rgb.join(\",\") + \")\")\r\n },\r\n isValidHex: function(hex) {\r\n return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)\r\n },\r\n isValidRGB: function(r, g, b) {\r\n if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {\r\n return false\r\n }\r\n return true\r\n },\r\n isValidAlpha: function(a) {\r\n if (isNaN(a) || a < 0 || a > 1 || \"number\" !== typeof a) {\r\n return false\r\n }\r\n return true\r\n },\r\n colorIsInvalid: false,\r\n fromHSL: function(hsl) {\r\n var color = new Color;\r\n var rgb = hslToRgb(hsl.h, hsl.s, hsl.l);\r\n color.r = rgb[0];\r\n color.g = rgb[1];\r\n color.b = rgb[2];\r\n return color\r\n }\r\n};\r\nexport default Color;\r\n","/**\r\n * DevExtreme (esm/localization/ldml/number.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n toFixed\r\n} from \"../utils\";\r\nvar DEFAULT_CONFIG = {\r\n thousandsSeparator: \",\",\r\n decimalSeparator: \".\"\r\n};\r\nvar ESCAPING_CHAR = \"'\";\r\nvar MAXIMUM_NUMBER_LENGTH = 15;\r\n\r\nfunction getGroupSizes(formatString) {\r\n return formatString.split(\",\").slice(1).map((function(str) {\r\n return str.split(\"\").filter((function(char) {\r\n return \"#\" === char || \"0\" === char\r\n })).length\r\n }))\r\n}\r\n\r\nfunction getSignParts(format) {\r\n var signParts = format.split(\";\");\r\n if (1 === signParts.length) {\r\n signParts.push(\"-\" + signParts[0])\r\n }\r\n return signParts\r\n}\r\n\r\nfunction reverseString(str) {\r\n return str.toString().split(\"\").reverse().join(\"\")\r\n}\r\n\r\nfunction isPercentFormat(format) {\r\n return -1 !== format.indexOf(\"%\") && !format.match(/'[^']*%[^']*'/g)\r\n}\r\n\r\nfunction removeStubs(str) {\r\n return str.replace(/'.+'/g, \"\")\r\n}\r\n\r\nfunction getNonRequiredDigitCount(floatFormat) {\r\n if (!floatFormat) {\r\n return 0\r\n }\r\n var format = removeStubs(floatFormat);\r\n return format.length - format.replace(/[#]/g, \"\").length\r\n}\r\n\r\nfunction getRequiredDigitCount(floatFormat) {\r\n if (!floatFormat) {\r\n return 0\r\n }\r\n var format = removeStubs(floatFormat);\r\n return format.length - format.replace(/[0]/g, \"\").length\r\n}\r\n\r\nfunction normalizeValueString(valuePart, minDigitCount, maxDigitCount) {\r\n if (!valuePart) {\r\n return \"\"\r\n }\r\n if (valuePart.length > maxDigitCount) {\r\n valuePart = valuePart.substr(0, maxDigitCount)\r\n }\r\n while (valuePart.length > minDigitCount && \"0\" === valuePart.slice(-1)) {\r\n valuePart = valuePart.substr(0, valuePart.length - 1)\r\n }\r\n while (valuePart.length < minDigitCount) {\r\n valuePart += \"0\"\r\n }\r\n return valuePart\r\n}\r\n\r\nfunction applyGroups(valueString, groupSizes, thousandsSeparator) {\r\n if (!groupSizes.length) {\r\n return valueString\r\n }\r\n var groups = [];\r\n var index = 0;\r\n while (valueString) {\r\n var groupSize = groupSizes[index];\r\n if (!groupSize) {\r\n break\r\n }\r\n groups.push(valueString.slice(0, groupSize));\r\n valueString = valueString.slice(groupSize);\r\n if (index < groupSizes.length - 1) {\r\n index++\r\n }\r\n }\r\n return groups.join(thousandsSeparator)\r\n}\r\n\r\nfunction formatNumberPart(format, valueString) {\r\n return format.split(ESCAPING_CHAR).map((function(formatPart, escapeIndex) {\r\n var isEscape = escapeIndex % 2;\r\n if (!formatPart && isEscape) {\r\n return ESCAPING_CHAR\r\n }\r\n return isEscape ? formatPart : formatPart.replace(/[,#0]+/, valueString)\r\n })).join(\"\")\r\n}\r\n\r\nfunction getFloatPointIndex(format) {\r\n var isEscape = false;\r\n for (var index = 0; index < format.length; index++) {\r\n if (\"'\" === format[index]) {\r\n isEscape = !isEscape\r\n }\r\n if (\".\" === format[index] && !isEscape) {\r\n return index\r\n }\r\n }\r\n return format.length\r\n}\r\nexport function getFormatter(format, config) {\r\n config = config || DEFAULT_CONFIG;\r\n return function(value) {\r\n if (\"number\" !== typeof value || isNaN(value)) {\r\n return \"\"\r\n }\r\n var signFormatParts = getSignParts(format);\r\n var isPositiveZero = 1 / value === 1 / 0;\r\n var isPositive = value > 0 || isPositiveZero;\r\n var numberFormat = signFormatParts[isPositive ? 0 : 1];\r\n if (isPercentFormat(numberFormat)) {\r\n value *= 100\r\n }\r\n if (!isPositive) {\r\n value = -value\r\n }\r\n var floatPointIndex = getFloatPointIndex(numberFormat);\r\n var floatFormatParts = [numberFormat.substr(0, floatPointIndex), numberFormat.substr(floatPointIndex + 1)];\r\n var minFloatPrecision = getRequiredDigitCount(floatFormatParts[1]);\r\n var maxFloatPrecision = minFloatPrecision + getNonRequiredDigitCount(floatFormatParts[1]);\r\n var minIntegerPrecision = getRequiredDigitCount(floatFormatParts[0]);\r\n var maxIntegerPrecision = getNonRequiredDigitCount(floatFormatParts[0]) || config.unlimitedIntegerDigits ? void 0 : minIntegerPrecision;\r\n var integerLength = Math.floor(value).toString().length;\r\n var floatPrecision = fitIntoRange(maxFloatPrecision, 0, MAXIMUM_NUMBER_LENGTH - integerLength);\r\n var groupSizes = getGroupSizes(floatFormatParts[0]).reverse();\r\n var valueParts = toFixed(value, floatPrecision < 0 ? 0 : floatPrecision).split(\".\");\r\n var valueIntegerPart = normalizeValueString(reverseString(valueParts[0]), minIntegerPrecision, maxIntegerPrecision);\r\n var valueFloatPart = normalizeValueString(valueParts[1], minFloatPrecision, maxFloatPrecision);\r\n valueIntegerPart = applyGroups(valueIntegerPart, groupSizes, config.thousandsSeparator);\r\n var integerString = reverseString(formatNumberPart(reverseString(floatFormatParts[0]), valueIntegerPart));\r\n var floatString = maxFloatPrecision ? formatNumberPart(floatFormatParts[1], valueFloatPart) : \"\";\r\n var result = integerString + (floatString.match(/\\d/) ? config.decimalSeparator : \"\") + floatString;\r\n return result\r\n }\r\n}\r\n\r\nfunction parseValue(text, isPercent, isNegative) {\r\n var value = (isPercent ? .01 : 1) * parseFloat(text) || 0;\r\n return isNegative ? -value : value\r\n}\r\n\r\nfunction prepareValueText(valueText, formatter, isPercent, isIntegerPart) {\r\n var nextValueText = valueText;\r\n var char;\r\n var text;\r\n var nextText;\r\n do {\r\n if (nextText) {\r\n char = text.length === nextText.length ? \"0\" : \"1\";\r\n valueText = isIntegerPart ? char + valueText : valueText + char\r\n }\r\n text = nextText || formatter(parseValue(nextValueText, isPercent));\r\n nextValueText = isIntegerPart ? \"1\" + nextValueText : nextValueText + \"1\";\r\n nextText = formatter(parseValue(nextValueText, isPercent))\r\n } while (text !== nextText && (isIntegerPart ? text.length === nextText.length : text.length <= nextText.length));\r\n if (isIntegerPart && nextText.length > text.length) {\r\n var hasGroups = -1 === formatter(12345).indexOf(\"12345\");\r\n do {\r\n valueText = \"1\" + valueText\r\n } while (hasGroups && parseValue(valueText, isPercent) < 1e5)\r\n }\r\n return valueText\r\n}\r\n\r\nfunction getFormatByValueText(valueText, formatter, isPercent, isNegative) {\r\n var format = formatter(parseValue(valueText, isPercent, isNegative));\r\n var valueTextParts = valueText.split(\".\");\r\n var valueTextWithModifiedFloat = valueTextParts[0] + \".3\" + valueTextParts[1].slice(1);\r\n var valueWithModifiedFloat = parseValue(valueTextWithModifiedFloat, isPercent, isNegative);\r\n var decimalSeparatorIndex = formatter(valueWithModifiedFloat).indexOf(\"3\") - 1;\r\n format = format.replace(/(\\d)\\D(\\d)/g, \"$1,$2\");\r\n if (decimalSeparatorIndex >= 0) {\r\n format = format.slice(0, decimalSeparatorIndex) + \".\" + format.slice(decimalSeparatorIndex + 1)\r\n }\r\n format = format.replace(/1+/, \"1\").replace(/1/g, \"#\");\r\n if (!isPercent) {\r\n format = format.replace(\"%\", \"'%'\")\r\n }\r\n return format\r\n}\r\nexport function getFormat(formatter) {\r\n var valueText = \".\";\r\n var isPercent = formatter(1).indexOf(\"100\") >= 0;\r\n valueText = prepareValueText(valueText, formatter, isPercent, true);\r\n valueText = prepareValueText(valueText, formatter, isPercent, false);\r\n var positiveFormat = getFormatByValueText(valueText, formatter, isPercent, false);\r\n var negativeFormat = getFormatByValueText(valueText, formatter, isPercent, true);\r\n return negativeFormat === \"-\" + positiveFormat ? positiveFormat : positiveFormat + \";\" + negativeFormat\r\n}\r\n","/**\r\n * DevExtreme (esm/core/renderer_base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n cleanDataRecursive,\r\n removeData,\r\n data as elementData\r\n} from \"./element_data\";\r\nimport domAdapter from \"./dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"./utils/window\";\r\nimport {\r\n isObject,\r\n isWindow,\r\n isPlainObject,\r\n isString,\r\n isNumeric,\r\n isDefined,\r\n isFunction,\r\n type\r\n} from \"./utils/type\";\r\nimport {\r\n styleProp,\r\n normalizeStyleProp\r\n} from \"./utils/style\";\r\nimport {\r\n getSize,\r\n getElementBoxParams\r\n} from \"./utils/size\";\r\nimport {\r\n parseHTML,\r\n isTablePart\r\n} from \"./utils/html_parser\";\r\nvar window = getWindow();\r\nvar renderer;\r\nvar initRender = function(selector, context) {\r\n if (!selector) {\r\n this.length = 0;\r\n return this\r\n }\r\n if (\"string\" === typeof selector) {\r\n if (\"body\" === selector) {\r\n this[0] = context ? context.body : domAdapter.getBody();\r\n this.length = 1;\r\n return this\r\n }\r\n context = context || domAdapter.getDocument();\r\n if (\"<\" === selector[0]) {\r\n this[0] = domAdapter.createElement(selector.slice(1, -1), context);\r\n this.length = 1;\r\n return this\r\n } [].push.apply(this, domAdapter.querySelectorAll(context, selector));\r\n return this\r\n } else if (domAdapter.isNode(selector) || isWindow(selector)) {\r\n this[0] = selector;\r\n this.length = 1;\r\n return this\r\n } else if (Array.isArray(selector)) {\r\n [].push.apply(this, selector);\r\n return this\r\n }\r\n return renderer(selector.toArray ? selector.toArray() : [selector])\r\n};\r\nrenderer = function(selector, context) {\r\n return new initRender(selector, context)\r\n};\r\nrenderer.fn = {\r\n dxRenderer: true\r\n};\r\ninitRender.prototype = renderer.fn;\r\nvar repeatMethod = function(methodName, args) {\r\n for (var i = 0; i < this.length; i++) {\r\n var item = renderer(this[i]);\r\n item[methodName].apply(item, args)\r\n }\r\n return this\r\n};\r\nvar setAttributeValue = function(element, attrName, value) {\r\n if (void 0 !== value && null !== value) {\r\n domAdapter.setAttribute(element, attrName, value)\r\n } else {\r\n domAdapter.removeAttribute(element, attrName)\r\n }\r\n};\r\ninitRender.prototype.show = function() {\r\n return this.toggle(true)\r\n};\r\ninitRender.prototype.hide = function() {\r\n return this.toggle(false)\r\n};\r\ninitRender.prototype.toggle = function(value) {\r\n if (this[0]) {\r\n this.toggleClass(\"dx-state-invisible\", !value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.attr = function(attrName, value) {\r\n if (this.length > 1 && arguments.length > 1) {\r\n return repeatMethod.call(this, \"attr\", arguments)\r\n }\r\n if (!this[0]) {\r\n if (isObject(attrName) || void 0 !== value) {\r\n return this\r\n } else {\r\n return\r\n }\r\n }\r\n if (!this[0].getAttribute) {\r\n return this.prop(attrName, value)\r\n }\r\n if (\"string\" === typeof attrName && 1 === arguments.length) {\r\n var result = this[0].getAttribute(attrName);\r\n return null == result ? void 0 : result\r\n } else if (isPlainObject(attrName)) {\r\n for (var key in attrName) {\r\n this.attr(key, attrName[key])\r\n }\r\n } else {\r\n setAttributeValue(this[0], attrName, value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.removeAttr = function(attrName) {\r\n this[0] && domAdapter.removeAttribute(this[0], attrName);\r\n return this\r\n};\r\ninitRender.prototype.prop = function(propName, value) {\r\n if (!this[0]) {\r\n return this\r\n }\r\n if (\"string\" === typeof propName && 1 === arguments.length) {\r\n return this[0][propName]\r\n } else if (isPlainObject(propName)) {\r\n for (var key in propName) {\r\n this.prop(key, propName[key])\r\n }\r\n } else {\r\n domAdapter.setProperty(this[0], propName, value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.addClass = function(className) {\r\n return this.toggleClass(className, true)\r\n};\r\ninitRender.prototype.removeClass = function(className) {\r\n return this.toggleClass(className, false)\r\n};\r\ninitRender.prototype.hasClass = function(className) {\r\n if (!this[0] || void 0 === this[0].className) {\r\n return false\r\n }\r\n var classNames = className.split(\" \");\r\n for (var i = 0; i < classNames.length; i++) {\r\n if (this[0].classList) {\r\n if (this[0].classList.contains(classNames[i])) {\r\n return true\r\n }\r\n } else {\r\n var _className = isString(this[0].className) ? this[0].className : domAdapter.getAttribute(this[0], \"class\");\r\n if ((_className || \"\").split(\" \").indexOf(classNames[i]) >= 0) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n};\r\ninitRender.prototype.toggleClass = function(className, value) {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"toggleClass\", arguments)\r\n }\r\n if (!this[0] || !className) {\r\n return this\r\n }\r\n value = void 0 === value ? !this.hasClass(className) : value;\r\n var classNames = className.split(\" \");\r\n for (var i = 0; i < classNames.length; i++) {\r\n domAdapter.setClass(this[0], classNames[i], value)\r\n }\r\n return this\r\n};\r\n[\"width\", \"height\", \"outerWidth\", \"outerHeight\", \"innerWidth\", \"innerHeight\"].forEach((function(methodName) {\r\n var partialName = methodName.toLowerCase().indexOf(\"width\") >= 0 ? \"Width\" : \"Height\";\r\n var propName = partialName.toLowerCase();\r\n var isOuter = 0 === methodName.indexOf(\"outer\");\r\n var isInner = 0 === methodName.indexOf(\"inner\");\r\n initRender.prototype[methodName] = function(value) {\r\n if (this.length > 1 && arguments.length > 0) {\r\n return repeatMethod.call(this, methodName, arguments)\r\n }\r\n var element = this[0];\r\n if (!element) {\r\n return\r\n }\r\n if (isWindow(element)) {\r\n return isOuter ? element[\"inner\" + partialName] : domAdapter.getDocumentElement()[\"client\" + partialName]\r\n }\r\n if (domAdapter.isDocument(element)) {\r\n var documentElement = domAdapter.getDocumentElement();\r\n var body = domAdapter.getBody();\r\n return Math.max(body[\"scroll\" + partialName], body[\"offset\" + partialName], documentElement[\"scroll\" + partialName], documentElement[\"offset\" + partialName], documentElement[\"client\" + partialName])\r\n }\r\n if (0 === arguments.length || \"boolean\" === typeof value) {\r\n var include = {\r\n paddings: isInner || isOuter,\r\n borders: isOuter,\r\n margins: value\r\n };\r\n return getSize(element, propName, include)\r\n }\r\n if (void 0 === value || null === value) {\r\n return this\r\n }\r\n if (isNumeric(value)) {\r\n var elementStyles = window.getComputedStyle(element);\r\n var sizeAdjustment = getElementBoxParams(propName, elementStyles);\r\n var isBorderBox = \"border-box\" === elementStyles.boxSizing;\r\n value = Number(value);\r\n if (isOuter) {\r\n value -= isBorderBox ? 0 : sizeAdjustment.border + sizeAdjustment.padding\r\n } else if (isInner) {\r\n value += isBorderBox ? sizeAdjustment.border : -sizeAdjustment.padding\r\n } else if (isBorderBox) {\r\n value += sizeAdjustment.border + sizeAdjustment.padding\r\n }\r\n }\r\n value += isNumeric(value) ? \"px\" : \"\";\r\n domAdapter.setStyle(element, propName, value);\r\n return this\r\n }\r\n}));\r\ninitRender.prototype.html = function(value) {\r\n if (!arguments.length) {\r\n return this[0].innerHTML\r\n }\r\n this.empty();\r\n if (\"string\" === typeof value && !isTablePart(value) || \"number\" === typeof value) {\r\n this[0].innerHTML = value;\r\n return this\r\n }\r\n return this.append(parseHTML(value))\r\n};\r\nvar appendElements = function(element, nextSibling) {\r\n if (!this[0] || !element) {\r\n return\r\n }\r\n if (\"string\" === typeof element) {\r\n element = parseHTML(element)\r\n } else if (element.nodeType) {\r\n element = [element]\r\n } else if (isNumeric(element)) {\r\n element = [domAdapter.createTextNode(element)]\r\n }\r\n for (var i = 0; i < element.length; i++) {\r\n var item = element[i];\r\n var container = this[0];\r\n var wrapTR = \"TABLE\" === container.tagName && \"TR\" === item.tagName;\r\n if (wrapTR && container.tBodies && container.tBodies.length) {\r\n container = container.tBodies[0]\r\n }\r\n domAdapter.insertElement(container, item.nodeType ? item : item[0], nextSibling)\r\n }\r\n};\r\nvar setCss = function(name, value) {\r\n if (!this[0] || !this[0].style) {\r\n return\r\n }\r\n if (null === value || \"number\" === typeof value && isNaN(value)) {\r\n return\r\n }\r\n name = styleProp(name);\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].style[name] = normalizeStyleProp(name, value)\r\n }\r\n};\r\ninitRender.prototype.css = function(name, value) {\r\n if (isString(name)) {\r\n if (2 === arguments.length) {\r\n setCss.call(this, name, value)\r\n } else {\r\n if (!this[0]) {\r\n return\r\n }\r\n name = styleProp(name);\r\n var result = window.getComputedStyle(this[0])[name] || this[0].style[name];\r\n return isNumeric(result) ? result.toString() : result\r\n }\r\n } else if (isPlainObject(name)) {\r\n for (var key in name) {\r\n setCss.call(this, key, name[key])\r\n }\r\n }\r\n return this\r\n};\r\ninitRender.prototype.prepend = function(element) {\r\n if (arguments.length > 1) {\r\n for (var i = 0; i < arguments.length; i++) {\r\n this.prepend(arguments[i])\r\n }\r\n return this\r\n }\r\n appendElements.apply(this, [element, this[0].firstChild]);\r\n return this\r\n};\r\ninitRender.prototype.append = function(element) {\r\n if (arguments.length > 1) {\r\n for (var i = 0; i < arguments.length; i++) {\r\n this.append(arguments[i])\r\n }\r\n return this\r\n }\r\n appendElements.apply(this, [element]);\r\n return this\r\n};\r\ninitRender.prototype.prependTo = function(element) {\r\n if (this.length > 1) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n renderer(this[i]).prependTo(element)\r\n }\r\n return this\r\n }\r\n element = renderer(element);\r\n if (element[0]) {\r\n domAdapter.insertElement(element[0], this[0], element[0].firstChild)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.appendTo = function(element) {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"appendTo\", arguments)\r\n }\r\n domAdapter.insertElement(renderer(element)[0], this[0]);\r\n return this\r\n};\r\ninitRender.prototype.insertBefore = function(element) {\r\n if (element && element[0]) {\r\n domAdapter.insertElement(element[0].parentNode, this[0], element[0])\r\n }\r\n return this\r\n};\r\ninitRender.prototype.insertAfter = function(element) {\r\n if (element && element[0]) {\r\n domAdapter.insertElement(element[0].parentNode, this[0], element[0].nextSibling)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.before = function(element) {\r\n if (this[0]) {\r\n domAdapter.insertElement(this[0].parentNode, element[0], this[0])\r\n }\r\n return this\r\n};\r\ninitRender.prototype.after = function(element) {\r\n if (this[0]) {\r\n domAdapter.insertElement(this[0].parentNode, element[0], this[0].nextSibling)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.wrap = function(wrapper) {\r\n if (this[0]) {\r\n var wrap = renderer(wrapper);\r\n wrap.insertBefore(this);\r\n wrap.append(this)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.wrapInner = function(wrapper) {\r\n var contents = this.contents();\r\n if (contents.length) {\r\n contents.wrap(wrapper)\r\n } else {\r\n this.append(wrapper)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.replaceWith = function(element) {\r\n if (!(element && element[0])) {\r\n return\r\n }\r\n if (element.is(this)) {\r\n return this\r\n }\r\n element.insertBefore(this);\r\n this.remove();\r\n return element\r\n};\r\ninitRender.prototype.remove = function() {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"remove\", arguments)\r\n }\r\n cleanDataRecursive(this[0], true);\r\n domAdapter.removeElement(this[0]);\r\n return this\r\n};\r\ninitRender.prototype.detach = function() {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"detach\", arguments)\r\n }\r\n domAdapter.removeElement(this[0]);\r\n return this\r\n};\r\ninitRender.prototype.empty = function() {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"empty\", arguments)\r\n }\r\n cleanDataRecursive(this[0]);\r\n domAdapter.setText(this[0], \"\");\r\n return this\r\n};\r\ninitRender.prototype.clone = function() {\r\n var result = [];\r\n for (var i = 0; i < this.length; i++) {\r\n result.push(this[i].cloneNode(true))\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.text = function(value) {\r\n if (!arguments.length) {\r\n var result = \"\";\r\n for (var i = 0; i < this.length; i++) {\r\n result += this[i] && this[i].textContent || \"\"\r\n }\r\n return result\r\n }\r\n var text = isFunction(value) ? value() : value;\r\n cleanDataRecursive(this[0], false);\r\n domAdapter.setText(this[0], isDefined(text) ? text : \"\");\r\n return this\r\n};\r\ninitRender.prototype.val = function(value) {\r\n if (1 === arguments.length) {\r\n return this.prop(\"value\", isDefined(value) ? value : \"\")\r\n }\r\n return this.prop(\"value\")\r\n};\r\ninitRender.prototype.contents = function() {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var result = [];\r\n result.push.apply(result, this[0].childNodes);\r\n return renderer(result)\r\n};\r\ninitRender.prototype.find = function(selector) {\r\n var result = renderer();\r\n if (!selector) {\r\n return result\r\n }\r\n var nodes = [];\r\n var i;\r\n if (\"string\" === typeof selector) {\r\n selector = selector.trim();\r\n for (i = 0; i < this.length; i++) {\r\n var element = this[i];\r\n if (domAdapter.isElementNode(element)) {\r\n var elementId = element.getAttribute(\"id\");\r\n var queryId = elementId || \"dx-query-children\";\r\n if (!elementId) {\r\n setAttributeValue(element, \"id\", queryId)\r\n }\r\n queryId = \"[id='\" + queryId + \"'] \";\r\n var querySelector = queryId + selector.replace(/([^\\\\])(,)/g, \"$1, \" + queryId);\r\n nodes.push.apply(nodes, domAdapter.querySelectorAll(element, querySelector));\r\n setAttributeValue(element, \"id\", elementId)\r\n } else if (domAdapter.isDocument(element)) {\r\n nodes.push.apply(nodes, domAdapter.querySelectorAll(element, selector))\r\n }\r\n }\r\n } else {\r\n for (i = 0; i < this.length; i++) {\r\n selector = domAdapter.isNode(selector) ? selector : selector[0];\r\n if (this[i] !== selector && this[i].contains(selector)) {\r\n nodes.push(selector)\r\n }\r\n }\r\n }\r\n return result.add(nodes)\r\n};\r\nvar isVisible = function(_, element) {\r\n if (!element.nodeType) {\r\n return true\r\n }\r\n return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length)\r\n};\r\ninitRender.prototype.filter = function(selector) {\r\n if (!selector) {\r\n return renderer()\r\n }\r\n if (\":visible\" === selector) {\r\n return this.filter(isVisible)\r\n } else if (\":hidden\" === selector) {\r\n return this.filter((function(_, element) {\r\n return !isVisible(_, element)\r\n }))\r\n }\r\n var result = [];\r\n for (var i = 0; i < this.length; i++) {\r\n var item = this[i];\r\n if (domAdapter.isElementNode(item) && \"string\" === type(selector)) {\r\n domAdapter.elementMatches(item, selector) && result.push(item)\r\n } else if (domAdapter.isNode(selector) || isWindow(selector)) {\r\n selector === item && result.push(item)\r\n } else if (isFunction(selector)) {\r\n selector.call(item, i, item) && result.push(item)\r\n } else {\r\n for (var j = 0; j < selector.length; j++) {\r\n selector[j] === item && result.push(item)\r\n }\r\n }\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.not = function(selector) {\r\n var result = [];\r\n var nodes = this.filter(selector).toArray();\r\n for (var i = 0; i < this.length; i++) {\r\n if (-1 === nodes.indexOf(this[i])) {\r\n result.push(this[i])\r\n }\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.is = function(selector) {\r\n return !!this.filter(selector).length\r\n};\r\ninitRender.prototype.children = function(selector) {\r\n var result = [];\r\n for (var i = 0; i < this.length; i++) {\r\n var nodes = this[i] ? this[i].childNodes : [];\r\n for (var j = 0; j < nodes.length; j++) {\r\n if (domAdapter.isElementNode(nodes[j])) {\r\n result.push(nodes[j])\r\n }\r\n }\r\n }\r\n result = renderer(result);\r\n return selector ? result.filter(selector) : result\r\n};\r\ninitRender.prototype.siblings = function() {\r\n var element = this[0];\r\n if (!element || !element.parentNode) {\r\n return renderer()\r\n }\r\n var result = [];\r\n var parentChildNodes = element.parentNode.childNodes || [];\r\n for (var i = 0; i < parentChildNodes.length; i++) {\r\n var node = parentChildNodes[i];\r\n if (domAdapter.isElementNode(node) && node !== element) {\r\n result.push(node)\r\n }\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.each = function(callback) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (false === callback.call(this[i], i, this[i])) {\r\n break\r\n }\r\n }\r\n};\r\ninitRender.prototype.index = function(element) {\r\n if (!element) {\r\n return this.parent().children().index(this)\r\n }\r\n element = renderer(element);\r\n return this.toArray().indexOf(element[0])\r\n};\r\ninitRender.prototype.get = function(index) {\r\n return this[index < 0 ? this.length + index : index]\r\n};\r\ninitRender.prototype.eq = function(index) {\r\n index = index < 0 ? this.length + index : index;\r\n return renderer(this[index])\r\n};\r\ninitRender.prototype.first = function() {\r\n return this.eq(0)\r\n};\r\ninitRender.prototype.last = function() {\r\n return this.eq(-1)\r\n};\r\ninitRender.prototype.parent = function(selector) {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var result = renderer(this[0].parentNode);\r\n return !selector || result.is(selector) ? result : renderer()\r\n};\r\ninitRender.prototype.parents = function(selector) {\r\n var result = [];\r\n var parent = this.parent();\r\n while (parent && parent[0] && !domAdapter.isDocument(parent[0])) {\r\n if (domAdapter.isElementNode(parent[0])) {\r\n if (!selector || parent.is(selector)) {\r\n result.push(parent.get(0))\r\n }\r\n }\r\n parent = parent.parent()\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.closest = function(selector) {\r\n if (this.is(selector)) {\r\n return this\r\n }\r\n var parent = this.parent();\r\n while (parent && parent.length) {\r\n if (parent.is(selector)) {\r\n return parent\r\n }\r\n parent = parent.parent()\r\n }\r\n return renderer()\r\n};\r\ninitRender.prototype.next = function(selector) {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var next = renderer(this[0].nextSibling);\r\n if (!arguments.length) {\r\n return next\r\n }\r\n while (next && next.length) {\r\n if (next.is(selector)) {\r\n return next\r\n }\r\n next = next.next()\r\n }\r\n return renderer()\r\n};\r\ninitRender.prototype.prev = function() {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n return renderer(this[0].previousSibling)\r\n};\r\ninitRender.prototype.add = function(selector) {\r\n var targets = renderer(selector);\r\n var result = this.toArray();\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n if (-1 === result.indexOf(target)) {\r\n result.push(target)\r\n }\r\n }\r\n return renderer(result)\r\n};\r\nvar emptyArray = [];\r\ninitRender.prototype.splice = function() {\r\n return renderer(emptyArray.splice.apply(this, arguments))\r\n};\r\ninitRender.prototype.slice = function() {\r\n return renderer(emptyArray.slice.apply(this, arguments))\r\n};\r\ninitRender.prototype.toArray = function() {\r\n return emptyArray.slice.call(this)\r\n};\r\nvar getWindowByElement = function(element) {\r\n return isWindow(element) ? element : element.defaultView\r\n};\r\ninitRender.prototype.offset = function() {\r\n if (!this[0]) {\r\n return\r\n }\r\n if (!this[0].getClientRects().length) {\r\n return {\r\n top: 0,\r\n left: 0\r\n }\r\n }\r\n var rect = this[0].getBoundingClientRect();\r\n var win = getWindowByElement(this[0].ownerDocument);\r\n var docElem = this[0].ownerDocument.documentElement;\r\n return {\r\n top: rect.top + win.pageYOffset - docElem.clientTop,\r\n left: rect.left + win.pageXOffset - docElem.clientLeft\r\n }\r\n};\r\ninitRender.prototype.offsetParent = function() {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var offsetParent = renderer(this[0].offsetParent);\r\n while (offsetParent[0] && \"static\" === offsetParent.css(\"position\")) {\r\n offsetParent = renderer(offsetParent[0].offsetParent)\r\n }\r\n offsetParent = offsetParent[0] ? offsetParent : renderer(domAdapter.getDocumentElement());\r\n return offsetParent\r\n};\r\ninitRender.prototype.position = function() {\r\n if (!this[0]) {\r\n return\r\n }\r\n var offset;\r\n var marginTop = parseFloat(this.css(\"marginTop\"));\r\n var marginLeft = parseFloat(this.css(\"marginLeft\"));\r\n if (\"fixed\" === this.css(\"position\")) {\r\n offset = this[0].getBoundingClientRect();\r\n return {\r\n top: offset.top - marginTop,\r\n left: offset.left - marginLeft\r\n }\r\n }\r\n offset = this.offset();\r\n var offsetParent = this.offsetParent();\r\n var parentOffset = {\r\n top: 0,\r\n left: 0\r\n };\r\n if (\"HTML\" !== offsetParent[0].nodeName) {\r\n parentOffset = offsetParent.offset()\r\n }\r\n parentOffset = {\r\n top: parentOffset.top + parseFloat(offsetParent.css(\"borderTopWidth\")),\r\n left: parentOffset.left + parseFloat(offsetParent.css(\"borderLeftWidth\"))\r\n };\r\n return {\r\n top: offset.top - parentOffset.top - marginTop,\r\n left: offset.left - parentOffset.left - marginLeft\r\n }\r\n};\r\n[{\r\n name: \"scrollLeft\",\r\n offsetProp: \"pageXOffset\",\r\n scrollWindow: function(win, value) {\r\n win.scrollTo(value, win.pageYOffset)\r\n }\r\n}, {\r\n name: \"scrollTop\",\r\n offsetProp: \"pageYOffset\",\r\n scrollWindow: function(win, value) {\r\n win.scrollTo(win.pageXOffset, value)\r\n }\r\n}].forEach((function(directionStrategy) {\r\n var propName = directionStrategy.name;\r\n initRender.prototype[propName] = function(value) {\r\n if (!this[0]) {\r\n return\r\n }\r\n var window = getWindowByElement(this[0]);\r\n if (void 0 === value) {\r\n return window ? window[directionStrategy.offsetProp] : this[0][propName]\r\n }\r\n if (window) {\r\n directionStrategy.scrollWindow(window, value)\r\n } else {\r\n this[0][propName] = value\r\n }\r\n return this\r\n }\r\n}));\r\ninitRender.prototype.data = function(key, value) {\r\n if (!this[0]) {\r\n return\r\n }\r\n if (arguments.length < 2) {\r\n return elementData.call(renderer, this[0], key)\r\n }\r\n elementData.call(renderer, this[0], key, value);\r\n return this\r\n};\r\ninitRender.prototype.removeData = function(key) {\r\n this[0] && removeData(this[0], key);\r\n return this\r\n};\r\nvar rendererWrapper = function() {\r\n return renderer.apply(this, arguments)\r\n};\r\nObject.defineProperty(rendererWrapper, \"fn\", {\r\n enumerable: true,\r\n configurable: true,\r\n get: function() {\r\n return renderer.fn\r\n },\r\n set: function(value) {\r\n renderer.fn = value\r\n }\r\n});\r\nexport default {\r\n set: function(strategy) {\r\n renderer = strategy\r\n },\r\n get: function() {\r\n return rendererWrapper\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/renderer.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport rendererBase from \"./renderer_base\";\r\nexport default rendererBase.get();\r\n","/**\r\n * DevExtreme (esm/core/polyfills/promise.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar promise = hasWindow() ? getWindow().Promise : Promise;\r\nif (!promise) {\r\n promise = function(resolver) {\r\n var d = new Deferred;\r\n resolver(d.resolve.bind(this), d.reject.bind(this));\r\n return d.promise()\r\n };\r\n promise.resolve = function(val) {\r\n return (new Deferred).resolve(val).promise()\r\n };\r\n promise.reject = function(val) {\r\n return (new Deferred).reject(val).promise()\r\n };\r\n promise.all = function(promises) {\r\n return when.apply(this, promises).then((function() {\r\n return [].slice.call(arguments)\r\n }))\r\n }\r\n}\r\nexport default promise;\r\n","/**\r\n * DevExtreme (esm/core/polyfills/weak_map.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n inArray\r\n} from \"../utils/array\";\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"../utils/window\";\r\nvar weakMap = hasWindow() ? getWindow().WeakMap : WeakMap;\r\nif (!weakMap) {\r\n weakMap = function() {\r\n var keys = [];\r\n var values = [];\r\n this.set = function(key, value) {\r\n var index = inArray(key, keys);\r\n if (-1 === index) {\r\n keys.push(key);\r\n values.push(value)\r\n } else {\r\n values[index] = value\r\n }\r\n };\r\n this.get = function(key) {\r\n var index = inArray(key, keys);\r\n if (-1 === index) {\r\n return\r\n }\r\n return values[index]\r\n };\r\n this.has = function(key) {\r\n var index = inArray(key, keys);\r\n if (-1 === index) {\r\n return false\r\n }\r\n return true\r\n };\r\n this.delete = function(key) {\r\n var index = inArray(key, keys);\r\n if (-1 === index) {\r\n return\r\n }\r\n keys.splice(index, 1);\r\n values.splice(index, 1)\r\n }\r\n }\r\n}\r\nexport default weakMap;\r\n","/**\r\n * DevExtreme (esm/core/templates/function_template.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport {\r\n normalizeTemplateElement\r\n} from \"../utils/dom\";\r\nexport class FunctionTemplate extends TemplateBase {\r\n constructor(render) {\r\n super();\r\n this._render = render\r\n }\r\n _renderCore(options) {\r\n return normalizeTemplateElement(this._render(options))\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/math.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isExponential\r\n} from \"./type\";\r\nvar sign = function(value) {\r\n if (0 === value) {\r\n return 0\r\n }\r\n return value / Math.abs(value)\r\n};\r\nvar fitIntoRange = function(value, minValue, maxValue) {\r\n var isMinValueUndefined = !minValue && 0 !== minValue;\r\n var isMaxValueUndefined = !maxValue && 0 !== maxValue;\r\n isMinValueUndefined && (minValue = !isMaxValueUndefined ? Math.min(value, maxValue) : value);\r\n isMaxValueUndefined && (maxValue = !isMinValueUndefined ? Math.max(value, minValue) : value);\r\n return Math.min(Math.max(value, minValue), maxValue)\r\n};\r\nvar inRange = function(value, minValue, maxValue) {\r\n return value >= minValue && value <= maxValue\r\n};\r\n\r\nfunction getExponent(value) {\r\n return Math.abs(parseInt(value.toExponential().split(\"e\")[1]))\r\n}\r\n\r\nfunction _isEdgeBug() {\r\n return \"0.000300\" !== 3e-4.toPrecision(3)\r\n}\r\n\r\nfunction adjust(value, interval) {\r\n var precision = getPrecision(interval || 0) + 2;\r\n var separatedValue = value.toString().split(\".\");\r\n var sourceValue = value;\r\n var absValue = Math.abs(value);\r\n var separatedAdjustedValue;\r\n var isExponentValue = isExponential(value);\r\n var integerPart = absValue > 1 ? 10 : 0;\r\n if (1 === separatedValue.length) {\r\n return value\r\n }\r\n if (!isExponentValue) {\r\n if (isExponential(interval)) {\r\n precision = separatedValue[0].length + getExponent(interval)\r\n }\r\n value = absValue;\r\n value = value - Math.floor(value) + integerPart\r\n }\r\n precision = _isEdgeBug() && getExponent(value) > 6 || precision > 7 ? 15 : 7;\r\n if (!isExponentValue) {\r\n separatedAdjustedValue = parseFloat(value.toPrecision(precision)).toString().split(\".\");\r\n if (separatedAdjustedValue[0] === integerPart.toString()) {\r\n return parseFloat(separatedValue[0] + \".\" + separatedAdjustedValue[1])\r\n }\r\n }\r\n return parseFloat(sourceValue.toPrecision(precision))\r\n}\r\n\r\nfunction getPrecision(value) {\r\n var str = value.toString();\r\n if (str.indexOf(\".\") < 0) {\r\n return 0\r\n }\r\n var mantissa = str.split(\".\");\r\n var positionOfDelimiter = mantissa[1].indexOf(\"e\");\r\n return positionOfDelimiter >= 0 ? positionOfDelimiter : mantissa[1].length\r\n}\r\n\r\nfunction getRoot(x, n) {\r\n if (x < 0 && n % 2 !== 1) {\r\n return NaN\r\n }\r\n var y = Math.pow(Math.abs(x), 1 / n);\r\n return n % 2 === 1 && x < 0 ? -y : y\r\n}\r\n\r\nfunction solveCubicEquation(a, b, c, d) {\r\n if (Math.abs(a) < 1e-8) {\r\n a = b;\r\n b = c;\r\n c = d;\r\n if (Math.abs(a) < 1e-8) {\r\n a = b;\r\n b = c;\r\n if (Math.abs(a) < 1e-8) {\r\n return []\r\n }\r\n return [-b / a]\r\n }\r\n var D2 = b * b - 4 * a * c;\r\n if (Math.abs(D2) < 1e-8) {\r\n return [-b / (2 * a)]\r\n } else if (D2 > 0) {\r\n return [(-b + Math.sqrt(D2)) / (2 * a), (-b - Math.sqrt(D2)) / (2 * a)]\r\n }\r\n return []\r\n }\r\n var p = (3 * a * c - b * b) / (3 * a * a);\r\n var q = (2 * b * b * b - 9 * a * b * c + 27 * a * a * d) / (27 * a * a * a);\r\n var roots;\r\n var u;\r\n if (Math.abs(p) < 1e-8) {\r\n roots = [getRoot(-q, 3)]\r\n } else if (Math.abs(q) < 1e-8) {\r\n roots = [0].concat(p < 0 ? [Math.sqrt(-p), -Math.sqrt(-p)] : [])\r\n } else {\r\n var D3 = q * q / 4 + p * p * p / 27;\r\n if (Math.abs(D3) < 1e-8) {\r\n roots = [-1.5 * q / p, 3 * q / p]\r\n } else if (D3 > 0) {\r\n u = getRoot(-q / 2 - Math.sqrt(D3), 3);\r\n roots = [u - p / (3 * u)]\r\n } else {\r\n u = 2 * Math.sqrt(-p / 3);\r\n var t = Math.acos(3 * q / p / u) / 3;\r\n var k = 2 * Math.PI / 3;\r\n roots = [u * Math.cos(t), u * Math.cos(t - k), u * Math.cos(t - 2 * k)]\r\n }\r\n }\r\n for (var i = 0; i < roots.length; i++) {\r\n roots[i] -= b / (3 * a)\r\n }\r\n return roots\r\n}\r\n\r\nfunction trunc(value) {\r\n return Math.trunc ? Math.trunc(value) : value > 0 ? Math.floor(value) : Math.ceil(value)\r\n}\r\n\r\nfunction getRemainderByDivision(dividend, divider, digitsCount) {\r\n if (divider === parseInt(divider)) {\r\n return dividend % divider\r\n }\r\n var quotient = roundFloatPart(dividend / divider, digitsCount);\r\n return (quotient - parseInt(quotient)) * divider\r\n}\r\n\r\nfunction getExponentLength(value) {\r\n var _valueString$split$;\r\n var valueString = value.toString();\r\n return (null === (_valueString$split$ = valueString.split(\".\")[1]) || void 0 === _valueString$split$ ? void 0 : _valueString$split$.length) || parseInt(valueString.split(\"e-\")[1]) || 0\r\n}\r\n\r\nfunction roundFloatPart(value) {\r\n var digitsCount = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n return parseFloat(value.toFixed(digitsCount))\r\n}\r\nexport {\r\n sign,\r\n fitIntoRange,\r\n inRange,\r\n adjust,\r\n getPrecision,\r\n getExponent,\r\n getRoot,\r\n solveCubicEquation,\r\n trunc,\r\n roundFloatPart,\r\n getExponentLength,\r\n getRemainderByDivision\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/inflector.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n map\r\n} from \"./iterator\";\r\nvar _normalize = function(text) {\r\n if (void 0 === text || null === text) {\r\n return \"\"\r\n }\r\n return String(text)\r\n};\r\nvar _upperCaseFirst = function(text) {\r\n return _normalize(text).charAt(0).toUpperCase() + text.substr(1)\r\n};\r\nvar _chop = function(text) {\r\n return _normalize(text).replace(/([a-z\\d])([A-Z])/g, \"$1 $2\").split(/[\\s_-]+/)\r\n};\r\nexport var dasherize = function(text) {\r\n return map(_chop(text), (function(p) {\r\n return p.toLowerCase()\r\n })).join(\"-\")\r\n};\r\nexport var underscore = function(text) {\r\n return dasherize(text).replace(/-/g, \"_\")\r\n};\r\nexport var camelize = function(text, upperFirst) {\r\n return map(_chop(text), (function(p, i) {\r\n p = p.toLowerCase();\r\n if (upperFirst || i > 0) {\r\n p = _upperCaseFirst(p)\r\n }\r\n return p\r\n })).join(\"\")\r\n};\r\nexport var humanize = function(text) {\r\n return _upperCaseFirst(dasherize(text).replace(/-/g, \" \"))\r\n};\r\nexport var titleize = function(text) {\r\n return map(_chop(text), (function(p) {\r\n return _upperCaseFirst(p.toLowerCase())\r\n })).join(\" \")\r\n};\r\nvar DIGIT_CHARS = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\nexport var captionize = function(name) {\r\n var captionList = [];\r\n var i;\r\n var char;\r\n var isPrevCharNewWord = false;\r\n var isNewWord = false;\r\n for (i = 0; i < name.length; i++) {\r\n char = name.charAt(i);\r\n isNewWord = char === char.toUpperCase() && \"-\" !== char && \")\" !== char && \"/\" !== char || char in DIGIT_CHARS;\r\n if (\"_\" === char || \".\" === char) {\r\n char = \" \";\r\n isNewWord = true\r\n } else if (0 === i) {\r\n char = char.toUpperCase();\r\n isNewWord = true\r\n } else if (!isPrevCharNewWord && isNewWord) {\r\n if (captionList.length > 0) {\r\n captionList.push(\" \")\r\n }\r\n }\r\n captionList.push(char);\r\n isPrevCharNewWord = isNewWord\r\n }\r\n return captionList.join(\"\")\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/ldml/date.formatter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nfunction leftPad(text, length) {\r\n while (text.length < length) {\r\n text = \"0\" + text\r\n }\r\n return text\r\n}\r\nvar FORMAT_TYPES = {\r\n 3: \"abbreviated\",\r\n 4: \"wide\",\r\n 5: \"narrow\"\r\n};\r\nvar LDML_FORMATTERS = {\r\n y: function(date, count, useUtc) {\r\n var year = date[useUtc ? \"getUTCFullYear\" : \"getFullYear\"]();\r\n if (2 === count) {\r\n year %= 100\r\n }\r\n return leftPad(year.toString(), count)\r\n },\r\n M: function(date, count, useUtc, dateParts) {\r\n var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n var formatType = FORMAT_TYPES[count];\r\n if (formatType) {\r\n return dateParts.getMonthNames(formatType, \"format\")[month]\r\n }\r\n return leftPad((month + 1).toString(), Math.min(count, 2))\r\n },\r\n L: function(date, count, useUtc, dateParts) {\r\n var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n var formatType = FORMAT_TYPES[count];\r\n if (formatType) {\r\n return dateParts.getMonthNames(formatType, \"standalone\")[month]\r\n }\r\n return leftPad((month + 1).toString(), Math.min(count, 2))\r\n },\r\n Q: function(date, count, useUtc, dateParts) {\r\n var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n var quarter = Math.floor(month / 3);\r\n var formatType = FORMAT_TYPES[count];\r\n if (formatType) {\r\n return dateParts.getQuarterNames(formatType)[quarter]\r\n }\r\n return leftPad((quarter + 1).toString(), Math.min(count, 2))\r\n },\r\n E: function(date, count, useUtc, dateParts) {\r\n var day = date[useUtc ? \"getUTCDay\" : \"getDay\"]();\r\n var formatType = FORMAT_TYPES[count < 3 ? 3 : count];\r\n return dateParts.getDayNames(formatType)[day]\r\n },\r\n a: function(date, count, useUtc, dateParts) {\r\n var hours = date[useUtc ? \"getUTCHours\" : \"getHours\"]();\r\n var period = hours < 12 ? 0 : 1;\r\n var formatType = FORMAT_TYPES[count];\r\n return dateParts.getPeriodNames(formatType)[period]\r\n },\r\n d: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCDate\" : \"getDate\"]().toString(), Math.min(count, 2))\r\n },\r\n H: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCHours\" : \"getHours\"]().toString(), Math.min(count, 2))\r\n },\r\n h: function(date, count, useUtc) {\r\n var hours = date[useUtc ? \"getUTCHours\" : \"getHours\"]();\r\n return leftPad((hours % 12 || 12).toString(), Math.min(count, 2))\r\n },\r\n m: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCMinutes\" : \"getMinutes\"]().toString(), Math.min(count, 2))\r\n },\r\n s: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCSeconds\" : \"getSeconds\"]().toString(), Math.min(count, 2))\r\n },\r\n S: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCMilliseconds\" : \"getMilliseconds\"]().toString(), 3).substr(0, count)\r\n },\r\n x: function(date, count, useUtc) {\r\n var timezoneOffset = useUtc ? 0 : date.getTimezoneOffset();\r\n var signPart = timezoneOffset > 0 ? \"-\" : \"+\";\r\n var timezoneOffsetAbs = Math.abs(timezoneOffset);\r\n var hours = Math.floor(timezoneOffsetAbs / 60);\r\n var minutes = timezoneOffsetAbs % 60;\r\n var hoursPart = leftPad(hours.toString(), 2);\r\n var minutesPart = leftPad(minutes.toString(), 2);\r\n return signPart + hoursPart + (count >= 3 ? \":\" : \"\") + (count > 1 || minutes ? minutesPart : \"\")\r\n },\r\n X: function(date, count, useUtc) {\r\n if (useUtc || !date.getTimezoneOffset()) {\r\n return \"Z\"\r\n }\r\n return LDML_FORMATTERS.x(date, count, useUtc)\r\n },\r\n Z: function(date, count, useUtc) {\r\n return LDML_FORMATTERS.X(date, count >= 5 ? 3 : 2, useUtc)\r\n }\r\n};\r\nexport var getFormatter = function(format, dateParts) {\r\n return function(date) {\r\n var charIndex;\r\n var formatter;\r\n var char;\r\n var charCount = 0;\r\n var isEscaping = false;\r\n var isCurrentCharEqualsNext;\r\n var result = \"\";\r\n if (!date) {\r\n return null\r\n }\r\n if (!format) {\r\n return date\r\n }\r\n var useUtc = \"Z\" === format[format.length - 1] || \"'Z'\" === format.slice(-3);\r\n for (charIndex = 0; charIndex < format.length; charIndex++) {\r\n char = format[charIndex];\r\n formatter = LDML_FORMATTERS[char];\r\n isCurrentCharEqualsNext = char === format[charIndex + 1];\r\n charCount++;\r\n if (!isCurrentCharEqualsNext) {\r\n if (formatter && !isEscaping) {\r\n result += formatter(date, charCount, useUtc, dateParts)\r\n }\r\n charCount = 0\r\n }\r\n if (\"'\" === char && !isCurrentCharEqualsNext) {\r\n isEscaping = !isEscaping\r\n } else if (isEscaping || !formatter) {\r\n result += char\r\n }\r\n if (\"'\" === char && isCurrentCharEqualsNext) {\r\n charIndex++\r\n }\r\n }\r\n return result\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/events/gesture/swipeable.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../swipe\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace\r\n} from \"../utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n name\r\n} from \"../../core/utils/public_component\";\r\nvar DX_SWIPEABLE = \"dxSwipeable\";\r\nvar SWIPEABLE_CLASS = \"dx-swipeable\";\r\nvar ACTION_TO_EVENT_MAP = {\r\n onStart: swipeEventStart,\r\n onUpdated: swipeEventSwipe,\r\n onEnd: swipeEventEnd,\r\n onCancel: \"dxswipecancel\"\r\n};\r\nvar Swipeable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n elastic: true,\r\n immediate: false,\r\n direction: \"horizontal\",\r\n itemSizeFunc: null,\r\n onStart: null,\r\n onUpdated: null,\r\n onEnd: null,\r\n onCancel: null\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(SWIPEABLE_CLASS);\r\n this._attachEventHandlers()\r\n },\r\n _attachEventHandlers: function() {\r\n this._detachEventHandlers();\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var NAME = this.NAME;\r\n this._createEventData();\r\n each(ACTION_TO_EVENT_MAP, function(actionName, eventName) {\r\n var action = this._createActionByOption(actionName, {\r\n context: this\r\n });\r\n eventName = addNamespace(eventName, NAME);\r\n eventsEngine.on(this.$element(), eventName, this._eventData, (function(e) {\r\n return action({\r\n event: e\r\n })\r\n }))\r\n }.bind(this))\r\n },\r\n _createEventData: function() {\r\n this._eventData = {\r\n elastic: this.option(\"elastic\"),\r\n itemSizeFunc: this.option(\"itemSizeFunc\"),\r\n direction: this.option(\"direction\"),\r\n immediate: this.option(\"immediate\")\r\n }\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this.$element(), \".\" + DX_SWIPEABLE)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n case \"onStart\":\r\n case \"onUpdated\":\r\n case \"onEnd\":\r\n case \"onCancel\":\r\n case \"elastic\":\r\n case \"immediate\":\r\n case \"itemSizeFunc\":\r\n case \"direction\":\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"rtlEnabled\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nname(Swipeable, DX_SWIPEABLE);\r\nexport default Swipeable;\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_list.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop,\r\n ensureDefined,\r\n grep\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isWindow,\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport DropDownEditor from \"./ui.drop_down_editor\";\r\nimport List from \"../list\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport devices from \"../../core/devices\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport DataExpressionMixin from \"../editor/ui.data_expression\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n ChildDefaultTemplate\r\n} from \"../../core/templates/child_default_template\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport DataConverterMixin from \"../shared/grouped_data_converter_mixin\";\r\nvar LIST_ITEM_SELECTOR = \".dx-list-item\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar DROPDOWNLIST_POPUP_WRAPPER_CLASS = \"dx-dropdownlist-popup-wrapper\";\r\nvar SKIP_GESTURE_EVENT_CLASS = \"dx-skip-gesture-event\";\r\nvar SEARCH_EVENT = \"input\";\r\nvar SEARCH_MODES = [\"startswith\", \"contains\", \"endwith\", \"notcontains\"];\r\nvar DropDownList = DropDownEditor.inherit({\r\n _supportedKeys: function() {\r\n var parent = this.callBase();\r\n return extend({}, parent, {\r\n tab: function(e) {\r\n if (this._allowSelectItemByTab()) {\r\n this._saveValueChangeEvent(e);\r\n var $focusedItem = $(this._list.option(\"focusedElement\"));\r\n $focusedItem.length && this._setSelectedElement($focusedItem)\r\n }\r\n parent.tab.apply(this, arguments)\r\n },\r\n space: noop,\r\n home: noop,\r\n end: noop\r\n })\r\n },\r\n _allowSelectItemByTab: function() {\r\n return this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")\r\n },\r\n _setSelectedElement: function($element) {\r\n var value = this._valueGetter(this._list._getItemData($element));\r\n this._setValue(value)\r\n },\r\n _setValue: function(value) {\r\n this.option(\"value\", value)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), extend(DataExpressionMixin._dataExpressionDefaultOptions(), {\r\n displayValue: void 0,\r\n searchEnabled: false,\r\n searchMode: \"contains\",\r\n searchTimeout: 500,\r\n minSearchLength: 0,\r\n searchExpr: null,\r\n valueChangeEvent: \"input change keyup\",\r\n selectedItem: null,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n onSelectionChanged: null,\r\n onItemClick: noop,\r\n showDataBeforeSearch: false,\r\n grouped: false,\r\n groupTemplate: \"group\",\r\n popupPosition: {\r\n my: \"left top\",\r\n at: \"left bottom\",\r\n offset: {\r\n h: 0,\r\n v: 0\r\n },\r\n collision: \"flip\"\r\n },\r\n wrapItemText: false,\r\n useItemTextAsTitle: false\r\n }))\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n popupPosition: {\r\n offset: {\r\n v: -1\r\n }\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom center\"\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n value: true,\r\n selectedItem: true,\r\n displayValue: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initDataExpressions();\r\n this._initActions();\r\n this._setListDataSource();\r\n this._validateSearchMode();\r\n this._clearSelectedItem();\r\n this._initItems()\r\n },\r\n _setListFocusedElementOptionChange: function() {\r\n this._list._updateParentActiveDescendant = this._updateActiveDescendant.bind(this)\r\n },\r\n _initItems: function() {\r\n var items = this.option().items;\r\n if (items && !items.length && this._dataSource) {\r\n this.option().items = this._dataSource.items()\r\n }\r\n },\r\n _initActions: function() {\r\n this._initContentReadyAction();\r\n this._initSelectionChangedAction();\r\n this._initItemClickAction()\r\n },\r\n _initContentReadyAction: function() {\r\n this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initSelectionChangedAction: function() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initItemClickAction: function() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new ChildDefaultTemplate(\"item\")\r\n })\r\n },\r\n _isEditable: function() {\r\n return this.callBase() || this.option(\"searchEnabled\")\r\n },\r\n _saveFocusOnWidget: function(e) {\r\n if (this._list && this._list.initialOption(\"focusStateEnabled\")) {\r\n this._focusInput()\r\n }\r\n },\r\n _fitIntoRange: function(value, start, end) {\r\n if (value > end) {\r\n return start\r\n }\r\n if (value < start) {\r\n return end\r\n }\r\n return value\r\n },\r\n _items: function() {\r\n var items = this._getPlainItems(!this._list && this._dataSource.items());\r\n var availableItems = new dataQuery(items).filter(\"disabled\", \"<>\", true).toArray();\r\n return availableItems\r\n },\r\n _calcNextItem: function(step) {\r\n var items = this._items();\r\n var nextIndex = this._fitIntoRange(this._getSelectedIndex() + step, 0, items.length - 1);\r\n return items[nextIndex]\r\n },\r\n _getSelectedIndex: function() {\r\n var items = this._items();\r\n var selectedItem = this.option(\"selectedItem\");\r\n var result = -1;\r\n each(items, function(index, item) {\r\n if (this._isValueEquals(item, selectedItem)) {\r\n result = index;\r\n return false\r\n }\r\n }.bind(this));\r\n return result\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._updateCustomBoundaryContainer();\r\n this._popup.$wrapper().addClass(this._popupWrapperClass());\r\n var $popupContent = this._popup.$content();\r\n eventsEngine.off($popupContent, \"mouseup\");\r\n eventsEngine.on($popupContent, \"mouseup\", this._saveFocusOnWidget.bind(this));\r\n var that = this;\r\n this._popup.on({\r\n shown: function() {\r\n that.$element().addClass(SKIP_GESTURE_EVENT_CLASS)\r\n },\r\n hidden: function() {\r\n that.$element().removeClass(SKIP_GESTURE_EVENT_CLASS)\r\n }\r\n })\r\n },\r\n _updateCustomBoundaryContainer: function() {\r\n var customContainer = this.option(\"dropDownOptions.container\");\r\n var $container = customContainer && $(customContainer);\r\n if ($container && $container.length && !isWindow($container.get(0))) {\r\n var $containerWithParents = [].slice.call($container.parents());\r\n $containerWithParents.unshift($container.get(0));\r\n each($containerWithParents, function(i, parent) {\r\n if (parent === $(\"body\").get(0)) {\r\n return false\r\n } else if (\"hidden\" === window.getComputedStyle(parent).overflowY) {\r\n this._$customBoundaryContainer = $(parent);\r\n return false\r\n }\r\n }.bind(this))\r\n }\r\n },\r\n _popupWrapperClass: function() {\r\n return DROPDOWNLIST_POPUP_WRAPPER_CLASS\r\n },\r\n _renderInputValue: function() {\r\n var value = this._getCurrentValue();\r\n return this._loadInputValue(value, this._setSelectedItem.bind(this)).always(this.callBase.bind(this, value))\r\n },\r\n _loadInputValue: function(value, callback) {\r\n return this._loadItem(value).always(callback)\r\n },\r\n _getItemFromPlain: function(value, cache) {\r\n var plainItems;\r\n var selectedItem;\r\n if (cache && \"object\" !== typeof value) {\r\n if (!cache.itemByValue) {\r\n cache.itemByValue = {};\r\n plainItems = this._getPlainItems();\r\n plainItems.forEach((function(item) {\r\n cache.itemByValue[this._valueGetter(item)] = item\r\n }), this)\r\n }\r\n selectedItem = cache.itemByValue[value]\r\n }\r\n if (!selectedItem) {\r\n plainItems = this._getPlainItems();\r\n selectedItem = grep(plainItems, function(item) {\r\n return this._isValueEquals(this._valueGetter(item), value)\r\n }.bind(this))[0]\r\n }\r\n return selectedItem\r\n },\r\n _loadItem: function(value, cache) {\r\n var selectedItem = this._getItemFromPlain(value, cache);\r\n return void 0 !== selectedItem ? (new Deferred).resolve(selectedItem).promise() : this._loadValue(value)\r\n },\r\n _getPlainItems: function(items) {\r\n var plainItems = [];\r\n items = items || this.option(\"items\") || this._dataSource.items() || [];\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n return plainItems\r\n },\r\n _updateActiveDescendant() {\r\n var _this$_list;\r\n var opened = this.option(\"opened\");\r\n var listFocusedItemId = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.getFocusedItemId();\r\n var isElementOnDom = $(\"#\".concat(listFocusedItemId)).length > 0;\r\n var activedescendant = opened && isElementOnDom && listFocusedItemId;\r\n this.setAria({\r\n activedescendant: activedescendant || null\r\n })\r\n },\r\n _setSelectedItem: function(item) {\r\n var displayValue = this._displayValue(item);\r\n this.option(\"selectedItem\", ensureDefined(item, null));\r\n this.option(\"displayValue\", displayValue)\r\n },\r\n _displayValue: function(item) {\r\n return this._displayGetter(item)\r\n },\r\n _refreshSelected: function() {\r\n var cache = {};\r\n this._listItemElements().each(function(_, itemElement) {\r\n var $itemElement = $(itemElement);\r\n var itemValue = this._valueGetter($itemElement.data(LIST_ITEM_DATA_KEY));\r\n var isItemSelected = this._isSelectedValue(itemValue, cache);\r\n if (isItemSelected) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n }.bind(this))\r\n },\r\n _popupShownHandler: function() {\r\n this.callBase();\r\n this._setFocusPolicy()\r\n },\r\n _setFocusPolicy: function() {\r\n if (!this.option(\"focusStateEnabled\") || !this._list) {\r\n return\r\n }\r\n this._list.option(\"focusedElement\", null)\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _validateSearchMode: function() {\r\n var searchMode = this.option(\"searchMode\");\r\n var normalizedSearchMode = searchMode.toLowerCase();\r\n if (inArray(normalizedSearchMode, SEARCH_MODES) < 0) {\r\n throw errors.Error(\"E1019\", searchMode)\r\n }\r\n },\r\n _clearSelectedItem: function() {\r\n this.option(\"selectedItem\", null)\r\n },\r\n _processDataSourceChanging: function() {\r\n this._setListDataSource();\r\n this._renderInputValue().fail(function() {\r\n if (this._isCustomValueAllowed()) {\r\n return\r\n }\r\n this._clearSelectedItem()\r\n }.bind(this))\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"displayCustomValue\")\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this._clearFilter();\r\n this._clearSelectedItem();\r\n this._preventFiltering = true\r\n },\r\n _listItemElements: function() {\r\n return this._$list ? this._$list.find(LIST_ITEM_SELECTOR) : $()\r\n },\r\n _popupConfig: function() {\r\n return extend(this.callBase(), {\r\n templatesRenderAsynchronously: false,\r\n autoResizeEnabled: false,\r\n maxHeight: this._getMaxHeight.bind(this)\r\n })\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._renderList()\r\n },\r\n _getKeyboardListeners() {\r\n var canListHaveFocus = this._canListHaveFocus();\r\n return this.callBase().concat([!canListHaveFocus && this._list])\r\n },\r\n _setAriaTargetForList: function() {\r\n this._list._getAriaTarget = this._getAriaTarget.bind(this)\r\n },\r\n _renderList: function() {\r\n this._listId = \"dx-\" + (new Guid)._value;\r\n var $list = this._$list = $(\"
\").attr(\"id\", this._listId).appendTo(this._popup.$content());\r\n this._list = this._createComponent($list, List, this._listConfig());\r\n this._refreshList();\r\n this._setAriaTargetForList();\r\n this._list.option(\"_listAttributes\", {\r\n role: \"combobox\"\r\n });\r\n this._renderPreventBlur(this._$list);\r\n this._setListFocusedElementOptionChange()\r\n },\r\n _renderPreventBlur: function($target) {\r\n var eventName = addNamespace(\"mousedown\", \"dxDropDownList\");\r\n eventsEngine.off($target, eventName);\r\n eventsEngine.on($target, eventName, function(e) {\r\n e.preventDefault()\r\n }.bind(this))\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n this._list && this._updateActiveDescendant();\r\n this.setAria({\r\n controls: this._list && this._listId,\r\n owns: this._popup && this._popupContentId\r\n })\r\n },\r\n _setDefaultAria: function() {\r\n this.setAria({\r\n haspopup: \"listbox\",\r\n autocomplete: \"list\"\r\n })\r\n },\r\n _refreshList: function() {\r\n if (this._list && this._shouldRefreshDataSource()) {\r\n this._setListDataSource()\r\n }\r\n },\r\n _shouldRefreshDataSource: function() {\r\n var dataSourceProvided = !!this._list.option(\"dataSource\");\r\n return dataSourceProvided !== this._needPassDataSourceToList()\r\n },\r\n _isDesktopDevice: function() {\r\n return \"desktop\" === devices.real().deviceType\r\n },\r\n _listConfig: function() {\r\n var options = {\r\n selectionMode: \"single\",\r\n _templates: this.option(\"_templates\"),\r\n templateProvider: this.option(\"templateProvider\"),\r\n noDataText: this.option(\"noDataText\"),\r\n grouped: this.option(\"grouped\"),\r\n wrapItemText: this.option(\"wrapItemText\"),\r\n useItemTextAsTitle: this.option(\"useItemTextAsTitle\"),\r\n onContentReady: this._listContentReadyHandler.bind(this),\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n indicateLoading: false,\r\n keyExpr: this._getCollectionKeyExpr(),\r\n displayExpr: this._displayGetterExpr(),\r\n groupTemplate: this.option(\"groupTemplate\"),\r\n onItemClick: this._listItemClickAction.bind(this),\r\n dataSource: this._getDataSource(),\r\n _revertPageOnEmptyLoad: true,\r\n hoverStateEnabled: this._isDesktopDevice() ? this.option(\"hoverStateEnabled\") : false,\r\n focusStateEnabled: this._isDesktopDevice() ? this.option(\"focusStateEnabled\") : false\r\n };\r\n if (!this._canListHaveFocus()) {\r\n options.tabIndex = null\r\n }\r\n return options\r\n },\r\n _canListHaveFocus: () => false,\r\n _getDataSource: function() {\r\n return this._needPassDataSourceToList() ? this._dataSource : null\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _listContentReadyHandler: function() {\r\n this._list = this._list || this._$list.dxList(\"instance\");\r\n if (!this.option(\"deferRendering\")) {\r\n this._refreshSelected()\r\n }\r\n this._dimensionChanged();\r\n this._contentReadyAction()\r\n },\r\n _setListOption: function(optionName, value) {\r\n this._setWidgetOption(\"_list\", arguments)\r\n },\r\n _listItemClickAction: function(e) {\r\n this._listItemClickHandler(e);\r\n this._itemClickAction(e)\r\n },\r\n _listItemClickHandler: noop,\r\n _setListDataSource: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n this._setListOption(\"dataSource\", this._getDataSource());\r\n if (!this._needPassDataSourceToList()) {\r\n this._setListOption(\"items\", [])\r\n }\r\n },\r\n _needPassDataSourceToList: function() {\r\n return this.option(\"showDataBeforeSearch\") || this._isMinSearchLengthExceeded()\r\n },\r\n _isMinSearchLengthExceeded: function() {\r\n return this._searchValue().toString().length >= this.option(\"minSearchLength\")\r\n },\r\n _needClearFilter: function() {\r\n return this._canKeepDataSource() ? false : this._needPassDataSourceToList()\r\n },\r\n _canKeepDataSource: function() {\r\n var _this$_dataSource;\r\n var isMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n return (null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.isLoaded()) && this.option(\"showDataBeforeSearch\") && this.option(\"minSearchLength\") && !isMinSearchLengthExceeded && !this._isLastMinSearchLengthExceeded\r\n },\r\n _searchValue: function() {\r\n return this._input().val() || \"\"\r\n },\r\n _getSearchEvent: function() {\r\n return addNamespace(SEARCH_EVENT, this.NAME + \"Search\")\r\n },\r\n _getSetFocusPolicyEvent: function() {\r\n return addNamespace(\"input\", this.NAME + \"FocusPolicy\")\r\n },\r\n _renderEvents: function() {\r\n this.callBase();\r\n eventsEngine.on(this._input(), this._getSetFocusPolicyEvent(), this._setFocusPolicy.bind(this));\r\n if (this._shouldRenderSearchEvent()) {\r\n eventsEngine.on(this._input(), this._getSearchEvent(), this._searchHandler.bind(this))\r\n }\r\n },\r\n _shouldRenderSearchEvent: function() {\r\n return this.option(\"searchEnabled\")\r\n },\r\n _refreshEvents: function() {\r\n eventsEngine.off(this._input(), this._getSearchEvent());\r\n eventsEngine.off(this._input(), this._getSetFocusPolicyEvent());\r\n this.callBase()\r\n },\r\n _searchHandler: function() {\r\n if (!this._isMinSearchLengthExceeded()) {\r\n this._searchCanceled();\r\n return\r\n }\r\n var searchTimeout = this.option(\"searchTimeout\");\r\n if (searchTimeout) {\r\n this._clearSearchTimer();\r\n this._searchTimer = setTimeout(this._searchDataSource.bind(this), searchTimeout)\r\n } else {\r\n this._searchDataSource()\r\n }\r\n },\r\n _searchCanceled: function() {\r\n this._clearSearchTimer();\r\n if (this._needClearFilter()) {\r\n this._filterDataSource(null)\r\n }\r\n this._refreshList()\r\n },\r\n _searchDataSource: function() {\r\n this._filterDataSource(this._searchValue())\r\n },\r\n _filterDataSource: function(searchValue) {\r\n this._clearSearchTimer();\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n dataSource.searchExpr(this.option(\"searchExpr\") || this._displayGetterExpr());\r\n dataSource.searchOperation(this.option(\"searchMode\"));\r\n dataSource.searchValue(searchValue);\r\n dataSource.load().done(this._dataSourceFiltered.bind(this, searchValue))\r\n }\r\n },\r\n _clearFilter: function() {\r\n var dataSource = this._dataSource;\r\n dataSource && dataSource.searchValue() && dataSource.searchValue(null)\r\n },\r\n _dataSourceFiltered: function() {\r\n this._isLastMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n this._refreshList();\r\n this._refreshPopupVisibility()\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._hasItemsToShow()\r\n },\r\n _refreshPopupVisibility: function() {\r\n if (this.option(\"readOnly\") || !this._searchValue()) {\r\n return\r\n }\r\n var shouldOpenPopup = this._shouldOpenPopup();\r\n if (shouldOpenPopup && !this._isFocused()) {\r\n return\r\n }\r\n this.option(\"opened\", shouldOpenPopup);\r\n if (shouldOpenPopup) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n if (0 === this._dataSource.pageIndex()) {\r\n this.option().items = newItems\r\n } else {\r\n this.option().items = this.option().items.concat(newItems)\r\n }\r\n },\r\n _hasItemsToShow: function() {\r\n var resultItems = this._dataSource && this._dataSource.items() || [];\r\n var resultAmount = resultItems.length;\r\n var isMinSearchLengthExceeded = this._needPassDataSourceToList();\r\n return !!(isMinSearchLengthExceeded && resultAmount)\r\n },\r\n _clearSearchTimer: function() {\r\n clearTimeout(this._searchTimer);\r\n delete this._searchTimer\r\n },\r\n _popupShowingHandler: function() {\r\n this._dimensionChanged()\r\n },\r\n _dimensionChanged: function() {\r\n this.callBase(arguments);\r\n this._popup && this._updatePopupDimensions()\r\n },\r\n _needPopupRepaint: function() {\r\n if (!this._dataSource) {\r\n return false\r\n }\r\n var currentPageIndex = this._dataSource.pageIndex();\r\n var needRepaint = isDefined(this._pageIndex) && currentPageIndex <= this._pageIndex;\r\n this._pageIndex = currentPageIndex;\r\n return needRepaint\r\n },\r\n _updatePopupDimensions: function() {\r\n if (this._needPopupRepaint()) {\r\n this._popup.repaint()\r\n }\r\n this._list && this._list.updateDimensions()\r\n },\r\n _getMaxHeight: function() {\r\n var $element = this.$element();\r\n var $customBoundaryContainer = this._$customBoundaryContainer;\r\n var offsetTop = $element.offset().top - ($customBoundaryContainer ? $customBoundaryContainer.offset().top : 0);\r\n var windowHeight = $(window).outerHeight();\r\n var containerHeight = $customBoundaryContainer ? Math.min($customBoundaryContainer.outerHeight(), windowHeight) : windowHeight;\r\n var maxHeight = Math.max(offsetTop, containerHeight - offsetTop - $element.outerHeight());\r\n return Math.min(.5 * containerHeight, maxHeight)\r\n },\r\n _clean: function() {\r\n if (this._list) {\r\n delete this._list\r\n }\r\n delete this._isLastMinSearchLengthExceeded;\r\n this.callBase()\r\n },\r\n _dispose: function() {\r\n this._clearSearchTimer();\r\n this.callBase()\r\n },\r\n _setCollectionWidgetOption: function() {\r\n this._setListOption.apply(this, arguments)\r\n },\r\n _setSubmitValue: function() {\r\n var value = this.option(\"value\");\r\n var submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;\r\n this._getSubmitElement().val(submitValue)\r\n },\r\n _shouldUseDisplayValue: function(value) {\r\n return \"this\" === this.option(\"valueExpr\") && isObject(value)\r\n },\r\n _optionChanged: function(args) {\r\n this._dataExpressionOptionChanged(args);\r\n switch (args.name) {\r\n case \"hoverStateEnabled\":\r\n case \"focusStateEnabled\":\r\n this._isDesktopDevice() && this._setListOption(args.name, args.value);\r\n this.callBase(args);\r\n break;\r\n case \"items\":\r\n if (!this.option(\"dataSource\")) {\r\n this._processDataSourceChanging()\r\n }\r\n break;\r\n case \"dataSource\":\r\n this._processDataSourceChanging();\r\n break;\r\n case \"valueExpr\":\r\n this._renderValue();\r\n this._setListOption(\"keyExpr\", this._getCollectionKeyExpr());\r\n break;\r\n case \"displayExpr\":\r\n this._renderValue();\r\n this._setListOption(\"displayExpr\", this._displayGetterExpr());\r\n break;\r\n case \"searchMode\":\r\n this._validateSearchMode();\r\n break;\r\n case \"minSearchLength\":\r\n this._refreshList();\r\n break;\r\n case \"searchEnabled\":\r\n case \"showDataBeforeSearch\":\r\n case \"searchExpr\":\r\n this._invalidate();\r\n break;\r\n case \"onContentReady\":\r\n this._initContentReadyAction();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._initSelectionChangedAction();\r\n break;\r\n case \"onItemClick\":\r\n this._initItemClickAction();\r\n break;\r\n case \"grouped\":\r\n case \"groupTemplate\":\r\n case \"wrapItemText\":\r\n case \"noDataText\":\r\n case \"useItemTextAsTitle\":\r\n this._setListOption(args.name);\r\n break;\r\n case \"displayValue\":\r\n this.option(\"text\", args.value);\r\n break;\r\n case \"itemTemplate\":\r\n case \"searchTimeout\":\r\n break;\r\n case \"selectedItem\":\r\n if (args.previousValue !== args.value) {\r\n this._selectionChangedAction({\r\n selectedItem: args.value\r\n })\r\n }\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n}).include(DataExpressionMixin, DataConverterMixin);\r\nregisterComponent(\"dxDropDownList\", DropDownList);\r\nexport default DropDownList;\r\n","/**\r\n * DevExtreme (esm/ui/select_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPromise\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n Deferred,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport errors from \"../core/errors\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n render\r\n} from \"./widget/utils.ink_ripple\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DropDownList from \"./drop_down_editor/ui.drop_down_list\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../events/utils/index\";\r\nvar DISABLED_STATE_SELECTOR = \".dx-state-disabled\";\r\nvar SELECTBOX_CLASS = \"dx-selectbox\";\r\nvar SELECTBOX_POPUP_CLASS = \"dx-selectbox-popup\";\r\nvar SELECTBOX_CONTAINER_CLASS = \"dx-selectbox-container\";\r\nvar SELECTBOX_POPUP_WRAPPER_CLASS = \"dx-selectbox-popup-wrapper\";\r\nvar SelectBox = DropDownList.inherit({\r\n _supportedKeys: function() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var clearSelectBox = function(e) {\r\n var isEditable = this._isEditable();\r\n if (!isEditable) {\r\n if (this.option(\"showClearButton\")) {\r\n e.preventDefault();\r\n this.reset()\r\n }\r\n } else if (this._valueSubstituted()) {\r\n this._preventFiltering = true\r\n }\r\n this._savedTextRemoveEvent = e;\r\n this._preventSubstitution = true\r\n };\r\n var searchIfNeeded = function() {\r\n if (that.option(\"searchEnabled\") && that._valueSubstituted()) {\r\n that._searchHandler()\r\n }\r\n };\r\n return extend({}, parent, {\r\n tab: function() {\r\n if (this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")) {\r\n this._resetCaretPosition(true)\r\n }\r\n parent.tab && parent.tab.apply(this, arguments);\r\n this._cancelSearchIfNeed()\r\n },\r\n upArrow: function(e) {\r\n if (parent.upArrow && parent.upArrow.apply(this, arguments)) {\r\n if (!this.option(\"opened\")) {\r\n this._setNextValue(e)\r\n }\r\n return true\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (parent.downArrow && parent.downArrow.apply(this, arguments)) {\r\n if (!this.option(\"opened\")) {\r\n this._setNextValue(e)\r\n }\r\n return true\r\n }\r\n },\r\n leftArrow: function() {\r\n searchIfNeeded();\r\n parent.leftArrow && parent.leftArrow.apply(this, arguments)\r\n },\r\n rightArrow: function() {\r\n searchIfNeeded();\r\n parent.rightArrow && parent.rightArrow.apply(this, arguments)\r\n },\r\n home: function() {\r\n searchIfNeeded();\r\n parent.home && parent.home.apply(this, arguments)\r\n },\r\n end: function() {\r\n searchIfNeeded();\r\n parent.end && parent.end.apply(this, arguments)\r\n },\r\n escape: function() {\r\n var result = parent.escape && parent.escape.apply(this, arguments);\r\n this._cancelEditing();\r\n return null !== result && void 0 !== result ? result : true\r\n },\r\n enter: function(e) {\r\n var isOpened = this.option(\"opened\");\r\n var inputText = this._input().val().trim();\r\n var isCustomText = inputText && this._list && !this._list.option(\"focusedElement\");\r\n if (!inputText && isDefined(this.option(\"value\")) && this.option(\"allowClearing\")) {\r\n this._saveValueChangeEvent(e);\r\n this.option({\r\n selectedItem: null,\r\n value: null\r\n });\r\n this.close()\r\n } else {\r\n if (this.option(\"acceptCustomValue\")) {\r\n e.preventDefault();\r\n if (isCustomText) {\r\n if (isOpened) {\r\n this._toggleOpenState()\r\n }\r\n this._valueChangeEventHandler(e)\r\n }\r\n return isOpened\r\n }\r\n if (parent.enter && parent.enter.apply(this, arguments)) {\r\n return isOpened\r\n }\r\n }\r\n },\r\n space: function(e) {\r\n var isOpened = this.option(\"opened\");\r\n var isSearchEnabled = this.option(\"searchEnabled\");\r\n var acceptCustomValue = this.option(\"acceptCustomValue\");\r\n if (!isOpened || isSearchEnabled || acceptCustomValue) {\r\n return\r\n }\r\n e.preventDefault();\r\n this._valueChangeEventHandler(e);\r\n return true\r\n },\r\n backspace: clearSelectBox,\r\n del: clearSelectBox\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n placeholder: messageLocalization.format(\"Select\"),\r\n fieldTemplate: null,\r\n valueChangeEvent: \"change\",\r\n acceptCustomValue: false,\r\n onCustomItemCreating: function(e) {\r\n if (!isDefined(e.customItem)) {\r\n e.customItem = e.text\r\n }\r\n },\r\n showSelectionControls: false,\r\n allowClearing: true,\r\n tooltipEnabled: false,\r\n openOnFieldClick: true,\r\n showDropDownButton: true,\r\n displayCustomValue: false,\r\n useInkRipple: false,\r\n useHiddenSubmitElement: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initCustomItemCreatingAction()\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(SELECTBOX_CLASS);\r\n this._renderTooltip();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.callBase();\r\n this._$container.addClass(SELECTBOX_CONTAINER_CLASS)\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render()\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._inkRipple || this._isEditable()) {\r\n return\r\n }\r\n var config = {\r\n element: this._inputWrapper(),\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._popup.$element().addClass(SELECTBOX_POPUP_CLASS);\r\n this._popup.$overlayContent().attr(\"tabindex\", -1)\r\n },\r\n _popupWrapperClass: function() {\r\n return this.callBase() + \" \" + SELECTBOX_POPUP_WRAPPER_CLASS\r\n },\r\n _cancelEditing: function() {\r\n if (!this.option(\"searchEnabled\") && this._list) {\r\n this._focusListElement(null);\r\n this._updateField(this.option(\"selectedItem\"))\r\n }\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n if (this.option(\"opened\")) {\r\n this._scrollToSelectedItem();\r\n this._focusSelectedElement()\r\n }\r\n },\r\n _focusSelectedElement: function() {\r\n var searchValue = this._searchValue();\r\n if (!searchValue) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var index = inArray(this.option(\"selectedItem\"), this.option(\"items\"));\r\n var focusedElement = index >= 0 && !this._isCustomItemSelected() ? $listItems.eq(index) : null;\r\n this._focusListElement(focusedElement)\r\n },\r\n _renderFocusedElement: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n var searchValue = this._searchValue();\r\n if (!searchValue || this.option(\"acceptCustomValue\")) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var focusedElement = $listItems.not(DISABLED_STATE_SELECTOR).eq(0);\r\n this._focusListElement(focusedElement)\r\n },\r\n _focusListElement: function(element) {\r\n this._preventInputValueRender = true;\r\n this._list.option(\"focusedElement\", getPublicElement(element));\r\n delete this._preventInputValueRender\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._list && this._list.scrollToItem(this._list.option(\"selectedItem\"))\r\n },\r\n _listContentReadyHandler: function() {\r\n this.callBase();\r\n var isPaginate = this._dataSource && this._dataSource.paginate();\r\n if (isPaginate && this._needPopupRepaint()) {\r\n return\r\n }\r\n this._scrollToSelectedItem()\r\n },\r\n _renderValue: function() {\r\n this._renderInputValue();\r\n this._setSubmitValue();\r\n return (new Deferred).resolve()\r\n },\r\n _renderInputValue: function() {\r\n return this.callBase().always(function() {\r\n this._renderInputValueAsync()\r\n }.bind(this))\r\n },\r\n _renderInputValueAsync: function() {\r\n this._renderTooltip();\r\n this._renderInputValueImpl().always(function() {\r\n this._refreshSelected()\r\n }.bind(this))\r\n },\r\n _renderInputValueImpl: function() {\r\n this._renderField();\r\n return (new Deferred).resolve()\r\n },\r\n _setNextItem: function(step) {\r\n var item = this._calcNextItem(step);\r\n var value = this._valueGetter(item);\r\n this._setValue(value)\r\n },\r\n _setNextValue: function(e) {\r\n var dataSourceIsLoaded = this._dataSource.isLoaded() ? (new Deferred).resolve() : this._dataSource.load();\r\n dataSourceIsLoaded.done(function() {\r\n var selectedIndex = this._getSelectedIndex();\r\n var hasPages = this._dataSource.pageSize();\r\n var isLastPage = this._dataSource.isLastPage();\r\n var isLastItem = selectedIndex === this._items().length - 1;\r\n this._saveValueChangeEvent(e);\r\n var step = \"downArrow\" === normalizeKeyName(e) ? 1 : -1;\r\n if (hasPages && !isLastPage && isLastItem && step > 0) {\r\n if (!this._popup) {\r\n this._createPopup()\r\n }\r\n if (!this._dataSource.isLoading()) {\r\n this._list._loadNextPage().done(this._setNextItem.bind(this, step))\r\n }\r\n } else {\r\n this._setNextItem(step)\r\n }\r\n }.bind(this))\r\n },\r\n _setSelectedItem: function(item) {\r\n var isUnknownItem = !this._isCustomValueAllowed() && void 0 === item;\r\n this.callBase(isUnknownItem ? null : item);\r\n if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) {\r\n this._setListOption(\"selectedItem\", this.option(\"selectedItem\"))\r\n }\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"acceptCustomValue\") || this.callBase()\r\n },\r\n _displayValue: function(item) {\r\n item = !isDefined(item) && this._isCustomValueAllowed() ? this.option(\"value\") : item;\r\n return this.callBase(item)\r\n },\r\n _listConfig: function() {\r\n var result = extend(this.callBase(), {\r\n pageLoadMode: \"scrollBottom\",\r\n onSelectionChanged: this._getSelectionChangeHandler(),\r\n selectedItem: this.option(\"selectedItem\"),\r\n onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this)\r\n });\r\n if (this.option(\"showSelectionControls\")) {\r\n extend(result, {\r\n showSelectionControls: true,\r\n selectionByClick: true\r\n })\r\n }\r\n return result\r\n },\r\n _listFocusedItemChangeHandler: function(e) {\r\n if (this._preventInputValueRender) {\r\n return\r\n }\r\n var list = e.component;\r\n var focusedElement = $(list.option(\"focusedElement\"));\r\n var focusedItem = list._getItemData(focusedElement);\r\n this._updateField(focusedItem)\r\n },\r\n _updateField: function(item) {\r\n var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n if (!(fieldTemplate && this.option(\"fieldTemplate\"))) {\r\n var text = this._displayGetter(item);\r\n this.option(\"text\", text);\r\n this._renderDisplayText(text);\r\n return\r\n }\r\n this._renderField()\r\n },\r\n _getSelectionChangeHandler: function() {\r\n return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : noop\r\n },\r\n _selectionChangeHandler: function(e) {\r\n each(e.addedItems || [], function(_, addedItem) {\r\n this._setValue(this._valueGetter(addedItem))\r\n }.bind(this))\r\n },\r\n _getActualSearchValue: function() {\r\n return this._dataSource.searchValue()\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n if (!isVisible && !this._shouldClearFilter()) {\r\n this._restoreInputText(true)\r\n }\r\n if (this._wasSearch() && isVisible) {\r\n this._wasSearch(false);\r\n var showDataImmediately = this.option(\"showDataBeforeSearch\") || 0 === this.option(\"minSearchLength\");\r\n if (showDataImmediately && this._dataSource) {\r\n if (this._searchTimer) {\r\n return\r\n }\r\n var searchValue = this._getActualSearchValue();\r\n searchValue && this._wasSearch(true);\r\n this._filterDataSource(searchValue || null)\r\n } else {\r\n this._setListOption(\"items\", [])\r\n }\r\n }\r\n if (isVisible) {\r\n this._scrollToSelectedItem()\r\n }\r\n this.callBase(isVisible)\r\n },\r\n _renderTooltip: function() {\r\n if (this.option(\"tooltipEnabled\")) {\r\n this.$element().attr(\"title\", this.option(\"displayValue\"))\r\n }\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this._dimensionChanged()\r\n },\r\n _isValueEqualInputText: function() {\r\n var initialSelectedItem = this.option(\"selectedItem\");\r\n if (null === initialSelectedItem) {\r\n return false\r\n }\r\n var value = this._displayGetter(initialSelectedItem);\r\n var displayValue = value ? String(value) : \"\";\r\n var inputText = this._searchValue();\r\n return displayValue === inputText\r\n },\r\n _popupHidingHandler: function() {\r\n if (this._isValueEqualInputText()) {\r\n this._cancelEditing()\r\n }\r\n this.callBase()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n if (this._shouldCancelSearch()) {\r\n this._wasSearch(false);\r\n this._searchCanceled();\r\n this._shouldCancelSearch(false)\r\n }\r\n },\r\n _restoreInputText: function(saveEditingValue) {\r\n if (this.option(\"readOnly\")) {\r\n return\r\n }\r\n this._loadItemDeferred && this._loadItemDeferred.always(function() {\r\n var initialSelectedItem = this.option(\"selectedItem\");\r\n if (this.option(\"acceptCustomValue\")) {\r\n if (!saveEditingValue) {\r\n this._updateField(initialSelectedItem);\r\n this._clearFilter()\r\n }\r\n return\r\n }\r\n if (this.option(\"searchEnabled\")) {\r\n if (!this._searchValue() && this.option(\"allowClearing\")) {\r\n this._clearTextValue();\r\n return\r\n }\r\n }\r\n if (this._isValueEqualInputText()) {\r\n return\r\n }\r\n this._renderInputValue().always(function(selectedItem) {\r\n var newSelectedItem = ensureDefined(selectedItem, initialSelectedItem);\r\n this._setSelectedItem(newSelectedItem);\r\n this._updateField(newSelectedItem);\r\n this._clearFilter()\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n _focusOutHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n var isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget);\r\n if (!isOverlayTarget) {\r\n this._restoreInputText();\r\n this._clearSearchTimer()\r\n }\r\n this._cancelSearchIfNeed(e)\r\n }\r\n e.target = this._input().get(0);\r\n this.callBase(e)\r\n },\r\n _cancelSearchIfNeed: function(e) {\r\n var {\r\n searchEnabled: searchEnabled\r\n } = this.option();\r\n var isOverlayTarget = this._isOverlayNestedTarget(null === e || void 0 === e ? void 0 : e.relatedTarget);\r\n var shouldCancelSearch = this._wasSearch() && searchEnabled && !isOverlayTarget;\r\n if (shouldCancelSearch) {\r\n var _this$_popup;\r\n var isPopupVisible = null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup._hideAnimationProcessing;\r\n if (isPopupVisible) {\r\n this._shouldCancelSearch(true)\r\n } else {\r\n this._wasSearch(false);\r\n this._searchCanceled()\r\n }\r\n }\r\n },\r\n _shouldCancelSearch: function(value) {\r\n if (!arguments.length) {\r\n return this._shouldCancelSearchValue\r\n }\r\n this._shouldCancelSearchValue = value\r\n },\r\n _isOverlayNestedTarget: function(target) {\r\n return !!$(target).closest(\".\".concat(SELECTBOX_POPUP_WRAPPER_CLASS)).length\r\n },\r\n _clearTextValue: function() {\r\n if (this.option(\"selectedItem\")) {\r\n if (this._savedTextRemoveEvent) {\r\n this._saveValueChangeEvent(this._savedTextRemoveEvent)\r\n }\r\n this.option(\"value\", null)\r\n }\r\n delete this._savedTextRemoveEvent\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._needPassDataSourceToList() && this._wasSearch()\r\n },\r\n _isFocused: function() {\r\n var activeElement = domAdapter.getActiveElement();\r\n return this.callBase() && $(activeElement).closest(this._input()).length > 0\r\n },\r\n _renderValueChangeEvent: function() {\r\n if (this._isEditable()) {\r\n this.callBase()\r\n }\r\n },\r\n _fieldRenderData: function() {\r\n var $listFocused = this._list && this.option(\"opened\") && $(this._list.option(\"focusedElement\"));\r\n if ($listFocused && $listFocused.length) {\r\n return this._list._getItemData($listFocused)\r\n }\r\n return this.option(\"selectedItem\")\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _shouldCloseOnItemClick: function() {\r\n return !(this.option(\"showSelectionControls\") && \"single\" !== this.option(\"selectionMode\"))\r\n },\r\n _listItemClickHandler: function(e) {\r\n var previousValue = this._getCurrentValue();\r\n this._focusListElement($(e.itemElement));\r\n this._saveValueChangeEvent(e.event);\r\n this._completeSelection(this._valueGetter(e.itemData));\r\n if (this._shouldCloseOnItemClick()) {\r\n this.option(\"opened\", false)\r\n }\r\n if (this.option(\"searchEnabled\") && previousValue === this._valueGetter(e.itemData)) {\r\n this._updateField(e.itemData)\r\n }\r\n if (this._shouldClearFilter()) {\r\n this._cancelSearchIfNeed()\r\n }\r\n },\r\n _shouldClearFilter: function() {\r\n return this._wasSearch()\r\n },\r\n _completeSelection: function(value) {\r\n this._setValue(value)\r\n },\r\n _loadItem: function(value, cache) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n this.callBase(value, cache).done(function(item) {\r\n deferred.resolve(item)\r\n }.bind(this)).fail(function() {\r\n var selectedItem = that.option(\"selectedItem\");\r\n if (that.option(\"acceptCustomValue\") && value === that._valueGetter(selectedItem)) {\r\n deferred.resolve(selectedItem)\r\n } else {\r\n deferred.reject()\r\n }\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _loadInputValue: function(value, callback) {\r\n this._loadItemDeferred = this._loadItem(value).always(callback);\r\n return this._loadItemDeferred\r\n },\r\n _isCustomItemSelected: function() {\r\n var selectedItem = this.option(\"selectedItem\");\r\n var searchValue = this._searchValue();\r\n var selectedItemText = this._displayGetter(selectedItem);\r\n return !selectedItemText || searchValue !== selectedItemText.toString()\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (this.option(\"acceptCustomValue\") && this._isCustomItemSelected() && !this._isValueChanging) {\r\n this._isValueChanging = true;\r\n this._customItemAddedHandler(e);\r\n this._isValueChanging = false\r\n }\r\n },\r\n _initCustomItemCreatingAction: function() {\r\n this._customItemCreatingAction = this._createActionByOption(\"onCustomItemCreating\")\r\n },\r\n _createCustomItem: function(text) {\r\n var params = {\r\n text: text\r\n };\r\n var actionResult = this._customItemCreatingAction(params);\r\n var item = ensureDefined(actionResult, params.customItem);\r\n if (isDefined(actionResult)) {\r\n errors.log(\"W0015\", \"onCustomItemCreating\", \"customItem\")\r\n }\r\n return item\r\n },\r\n _customItemAddedHandler: function(e) {\r\n var searchValue = this._searchValue();\r\n var item = this._createCustomItem(searchValue);\r\n this._saveValueChangeEvent(e);\r\n if (void 0 === item) {\r\n this._renderValue();\r\n throw errors.Error(\"E0121\")\r\n }\r\n if (isPromise(item)) {\r\n fromPromise(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null))\r\n } else {\r\n this._setCustomItem(item)\r\n }\r\n },\r\n _setCustomItem: function(item) {\r\n if (this._disposed) {\r\n return\r\n }\r\n item = item || null;\r\n this.option(\"selectedItem\", item);\r\n this._cancelSearchIfNeed();\r\n this._setValue(this._valueGetter(item));\r\n this._renderDisplayText(this._displayGetter(item))\r\n },\r\n _clearValueHandler: function(e) {\r\n this.callBase(e);\r\n return false\r\n },\r\n _wasSearch: function(value) {\r\n if (!arguments.length) {\r\n return this._wasSearchValue\r\n }\r\n this._wasSearchValue = value\r\n },\r\n _searchHandler: function(e) {\r\n if (this._preventFiltering) {\r\n delete this._preventFiltering;\r\n return\r\n }\r\n if (this._needPassDataSourceToList()) {\r\n this._wasSearch(true)\r\n }\r\n this.callBase(e)\r\n },\r\n _dataSourceFiltered: function(searchValue) {\r\n this.callBase();\r\n if (null !== searchValue) {\r\n this._renderInputSubstitution();\r\n this._renderFocusedElement()\r\n }\r\n },\r\n _valueSubstituted: function() {\r\n var input = this._input().get(0);\r\n var isAllSelected = 0 === input.selectionStart && input.selectionEnd === this._searchValue().length;\r\n var inputHasSelection = input.selectionStart !== input.selectionEnd;\r\n return this._wasSearch() && inputHasSelection && !isAllSelected\r\n },\r\n _shouldSubstitutionBeRendered: function() {\r\n return !this._preventSubstitution && this.option(\"searchEnabled\") && !this.option(\"acceptCustomValue\") && \"startswith\" === this.option(\"searchMode\")\r\n },\r\n _renderInputSubstitution: function() {\r\n if (!this._shouldSubstitutionBeRendered()) {\r\n delete this._preventSubstitution;\r\n return\r\n }\r\n var item = this._list && this._getPlainItems(this._list.option(\"items\"))[0];\r\n if (!item) {\r\n return\r\n }\r\n var $input = this._input();\r\n var valueLength = $input.val().length;\r\n if (0 === valueLength) {\r\n return\r\n }\r\n var inputElement = $input.get(0);\r\n var displayValue = this._displayGetter(item).toString();\r\n inputElement.value = displayValue;\r\n this._caret({\r\n start: valueLength,\r\n end: displayValue.length\r\n })\r\n },\r\n _dispose: function() {\r\n this._renderInputValueAsync = noop;\r\n delete this._loadItemDeferred;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onCustomItemCreating\":\r\n this._initCustomItemCreatingAction();\r\n break;\r\n case \"tooltipEnabled\":\r\n this._renderTooltip();\r\n break;\r\n case \"displayCustomValue\":\r\n case \"acceptCustomValue\":\r\n case \"showSelectionControls\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"allowClearing\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n delete this._inkRipple;\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxSelectBox\", SelectBox);\r\nexport default SelectBox;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.native.pull_down.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar PULLDOWN_RELEASE_TIME = 400;\r\nvar PullDownNativeScrollViewStrategy = NativeStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._$refreshingText = scrollView._$refreshingText;\r\n this._$scrollViewContent = $(scrollView.content());\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $image = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n var $text = this._$pullDownText = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = $(\"
\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = $(\"
\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = $(\"
\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n each(pullDownTextItems, (function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n }))\r\n },\r\n update: function() {\r\n this.callBase();\r\n this._setTopPocketOffset()\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.height();\r\n this._bottomPocketSize = this._$bottomPocket.height();\r\n if (browser.msie) {\r\n this._scrollOffset = Math.round(100 * (this._$container.height() - this._$content.height())) / 100\r\n } else {\r\n this._scrollOffset = this._$container.height() - this._$content.height()\r\n }\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n _setTopPocketOffset: function() {\r\n this._$topPocket.css({\r\n top: -this._topPocketSize\r\n })\r\n },\r\n handleEnd: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_READY) {\r\n this._setPullDownOffset(this._topPocketSize);\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n this._pullDownRefreshTimeout = setTimeout(function() {\r\n this._pullDownRefreshing()\r\n }.bind(this), 400)\r\n }\r\n },\r\n _setPullDownOffset: function(offset) {\r\n move(this._$topPocket, {\r\n top: offset\r\n });\r\n move(this._$scrollViewContent, {\r\n top: offset\r\n })\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = (this._location || 0) - currentLocation;\r\n this._location = currentLocation;\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= this._topPocketSize\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && this._location - (this._scrollOffset + this._bottomPocketSize) <= .5\r\n },\r\n _reachBottom: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n pullDownEnable: function(enabled) {\r\n if (enabled) {\r\n this._updateDimensions();\r\n this._setTopPocketOffset()\r\n }\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n if (this._state === STATE_LOADING) {\r\n this._state = STATE_RELEASED\r\n }\r\n this._releaseTimeout = setTimeout(function() {\r\n this._setPullDownOffset(0);\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), PULLDOWN_RELEASE_TIME);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nexport default PullDownNativeScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.native.swipe_down.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport {\r\n eventData\r\n} from \"../../events/utils/index\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-refreshing\";\r\nvar PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_TOUCHED = 4;\r\nvar STATE_PULLED = 5;\r\nvar SwipeDownNativeScrollViewStrategy = NativeStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$scrollViewContent = scrollView.content();\r\n this._initCallbacks();\r\n this._location = 0\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n this._$icon = $(\"
\").addClass(PULLDOWN_ICON_CLASS);\r\n this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._releasePullDown();\r\n this._updateDimensions()\r\n },\r\n _releasePullDown: function() {\r\n this._$pullDown.css({\r\n opacity: 0\r\n })\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.height();\r\n this._bottomPocketSize = this._$bottomPocket.height();\r\n this._scrollOffset = this._$container.height() - this._$content.height()\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n handleInit: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_RELEASED && 0 === this._location) {\r\n this._startClientY = eventData(e.originalEvent).y;\r\n this._state = STATE_TOUCHED\r\n }\r\n },\r\n handleMove: function(e) {\r\n this.callBase(e);\r\n this._deltaY = eventData(e.originalEvent).y - this._startClientY;\r\n if (this._state === STATE_TOUCHED) {\r\n if (this._pullDownEnabled && this._deltaY > 0) {\r\n this._state = STATE_PULLED\r\n } else {\r\n this._complete()\r\n }\r\n }\r\n if (this._state === STATE_PULLED) {\r\n e.preventDefault();\r\n this._movePullDown()\r\n }\r\n },\r\n _movePullDown: function() {\r\n var pullDownHeight = this._getPullDownHeight();\r\n var top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());\r\n var angle = 180 * top / pullDownHeight / 3;\r\n this._$pullDown.css({\r\n opacity: 1\r\n }).toggleClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS, top < pullDownHeight);\r\n move(this._$pullDown, {\r\n top: top\r\n });\r\n this._$icon.css({\r\n transform: \"rotate(\" + angle + \"deg)\"\r\n })\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._state === STATE_PULLED && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()\r\n },\r\n _getPullDownHeight: function() {\r\n return Math.round(.05 * this._$element.outerHeight())\r\n },\r\n _getPullDownStartPosition: function() {\r\n return -Math.round(1.5 * this._$pullDown.outerHeight())\r\n },\r\n handleEnd: function() {\r\n if (this._isPullDown()) {\r\n this._pullDownRefreshing()\r\n }\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_TOUCHED || this._state === STATE_PULLED) {\r\n this._releaseState()\r\n }\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = this._location - currentLocation;\r\n this._location = currentLocation;\r\n if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && this._location <= this._scrollOffset + this._bottomPocketSize\r\n },\r\n _reachBottom: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n this._state = STATE_REFRESHING;\r\n this._pullDownRefreshHandler()\r\n },\r\n _pullDownRefreshHandler: function() {\r\n this._refreshPullDown();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _refreshPullDown: function() {\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n move(this._$pullDown, {\r\n top: this._getPullDownHeight()\r\n })\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._$topPocket.toggle(enabled);\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n this._releaseTimeout = setTimeout(function() {\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), 800);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nexport default SwipeDownNativeScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.simulated.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n executeAsync\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar math = Math;\r\nimport {\r\n Scroller,\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar ScrollViewScroller = Scroller.inherit({\r\n ctor: function() {\r\n this._topPocketSize = 0;\r\n this.callBase.apply(this, arguments);\r\n this._initCallbacks();\r\n this._releaseState()\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n each(pullDownTextItems, (function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n }))\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n _updateBounds: function() {\r\n var considerPockets = \"horizontal\" !== this._direction;\r\n this._topPocketSize = considerPockets ? Math.round(this._$topPocket[this._dimension]()) : 0;\r\n this._bottomPocketSize = considerPockets ? Math.round(this._$bottomPocket[this._dimension]()) : 0;\r\n this.callBase();\r\n this._bottomBound = this._minOffset + this._bottomPocketSize\r\n },\r\n _updateScrollbar: function() {\r\n this._scrollbar.option({\r\n containerSize: this._containerSize(),\r\n contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n },\r\n _moveContent: function() {\r\n this.callBase();\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else if (this._isReachBottom()) {\r\n this._reachBottomReady()\r\n } else if (this._state !== STATE_RELEASED) {\r\n this._stateReleased()\r\n }\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._topPocketSize + this._location)\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= 0\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && this._location - this._bottomBound <= .5\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds() && this._state === STATE_READY) {\r\n this._pullDownRefreshing()\r\n } else if (this._inBounds() && this._state === STATE_LOADING) {\r\n this._reachBottomLoading()\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _reachBottomReady: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return -this._topPocketSize\r\n },\r\n _getMinOffset: function() {\r\n return math.min(this.callBase(), -this._topPocketSize)\r\n },\r\n _reachBottomLoading: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._maxOffset = 0;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._releaseState();\r\n this._updateBounds();\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this.releaseCallbacks.fire()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _releaseHandler: function() {\r\n if (this._state === STATE_RELEASED) {\r\n this._moveToBounds()\r\n }\r\n this._update();\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this._releaseTask = executeAsync(this._release.bind(this));\r\n return this._releaseTask.promise\r\n },\r\n _release: function() {\r\n this._stateReleased();\r\n this._scrollComplete()\r\n },\r\n _reachBottomEnablingHandler: function(enabled) {\r\n if (this._reachBottomEnabled === enabled) {\r\n return\r\n }\r\n this._reachBottomEnabled = enabled;\r\n this._updateBounds()\r\n },\r\n _pullDownEnablingHandler: function(enabled) {\r\n if (this._pullDownEnabled === enabled) {\r\n return\r\n }\r\n this._pullDownEnabled = enabled;\r\n this._considerTopPocketChange();\r\n this._updateHandler()\r\n },\r\n _considerTopPocketChange: function() {\r\n this._location -= this._$topPocket.height() || -this._topPocketSize;\r\n this._maxOffset = 0;\r\n this._move()\r\n },\r\n _pendingReleaseHandler: function() {\r\n this._state = STATE_READY\r\n },\r\n dispose: function() {\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this.callBase()\r\n }\r\n});\r\nvar SimulatedScrollViewStrategy = SimulatedStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this._renderPullDown();\r\n this.callBase()\r\n },\r\n _renderPullDown: function() {\r\n var $image = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n var $text = this._$pullDownText = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = $(\"
\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = $(\"
\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = $(\"
\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._eventHandler(\"pullDownEnabling\", enabled)\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._eventHandler(\"reachBottomEnabling\", enabled)\r\n },\r\n _createScroller: function(direction) {\r\n var that = this;\r\n var scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));\r\n scroller.pullDownCallbacks.add((function() {\r\n that.pullDownCallbacks.fire()\r\n }));\r\n scroller.releaseCallbacks.add((function() {\r\n that.releaseCallbacks.fire()\r\n }));\r\n scroller.reachBottomCallbacks.add((function() {\r\n that.reachBottomCallbacks.fire()\r\n }))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return extend(this.callBase(direction), {\r\n $topPocket: this._$topPocket,\r\n $bottomPocket: this._$bottomPocket,\r\n $pullDown: this._$pullDown,\r\n $pullDownText: this._$pullDownText,\r\n $pullingDownText: this._$pullingDownText,\r\n $pulledDownText: this._$pulledDownText,\r\n $refreshingText: this._$refreshingText\r\n })\r\n },\r\n pendingRelease: function() {\r\n this._eventHandler(\"pendingRelease\")\r\n },\r\n release: function() {\r\n return this._eventHandler(\"release\").done(this._updateAction)\r\n },\r\n location: function() {\r\n var location = this.callBase();\r\n location.top += this._$topPocket.height();\r\n return location\r\n },\r\n dispose: function() {\r\n each(this._scrollers, (function() {\r\n this.dispose()\r\n }));\r\n this.callBase()\r\n }\r\n});\r\nexport default SimulatedScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport PullDownStrategy from \"./ui.scroll_view.native.pull_down\";\r\nimport SwipeDownStrategy from \"./ui.scroll_view.native.swipe_down\";\r\nimport SimulatedStrategy from \"./ui.scroll_view.simulated\";\r\nimport Scrollable from \"./ui.scrollable\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n isMaterial\r\n} from \"./../themes\";\r\nimport LoadPanel from \"../load_panel\";\r\nvar SCROLLVIEW_CLASS = \"dx-scrollview\";\r\nvar SCROLLVIEW_CONTENT_CLASS = SCROLLVIEW_CLASS + \"-content\";\r\nvar SCROLLVIEW_TOP_POCKET_CLASS = SCROLLVIEW_CLASS + \"-top-pocket\";\r\nvar SCROLLVIEW_BOTTOM_POCKET_CLASS = SCROLLVIEW_CLASS + \"-bottom-pocket\";\r\nvar SCROLLVIEW_PULLDOWN_CLASS = SCROLLVIEW_CLASS + \"-pull-down\";\r\nvar SCROLLVIEW_REACHBOTTOM_CLASS = SCROLLVIEW_CLASS + \"-scrollbottom\";\r\nvar SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-indicator\";\r\nvar SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-text\";\r\nvar SCROLLVIEW_LOADPANEL = SCROLLVIEW_CLASS + \"-loadpanel\";\r\nvar refreshStrategies = {\r\n pullDown: PullDownStrategy,\r\n swipeDown: SwipeDownStrategy,\r\n simulated: SimulatedStrategy\r\n};\r\nvar isServerSide = !hasWindow();\r\nvar scrollViewServerConfig = {\r\n finishLoading: noop,\r\n release: noop,\r\n refresh: noop,\r\n _optionChanged: function(args) {\r\n if (\"onUpdated\" !== args.name) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n};\r\nvar ScrollView = Scrollable.inherit(isServerSide ? scrollViewServerConfig : {\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n pullingDownText: messageLocalization.format(\"dxScrollView-pullingDownText\"),\r\n pulledDownText: messageLocalization.format(\"dxScrollView-pulledDownText\"),\r\n refreshingText: messageLocalization.format(\"dxScrollView-refreshingText\"),\r\n reachBottomText: messageLocalization.format(\"dxScrollView-reachBottomText\"),\r\n onPullDown: null,\r\n onReachBottom: null,\r\n refreshStrategy: \"pullDown\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = devices.real();\r\n return \"android\" === realDevice.platform\r\n },\r\n options: {\r\n refreshStrategy: \"swipeDown\"\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n reachBottomText: \"\"\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._loadingIndicatorEnabled = true\r\n },\r\n _initScrollableMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(SCROLLVIEW_CLASS);\r\n this._initContent();\r\n this._initTopPocket();\r\n this._initBottomPocket();\r\n this._initLoadPanel()\r\n },\r\n _initContent: function() {\r\n var $content = $(\"
\").addClass(SCROLLVIEW_CONTENT_CLASS);\r\n this._$content.wrapInner($content)\r\n },\r\n _initTopPocket: function() {\r\n var $topPocket = this._$topPocket = $(\"
\").addClass(SCROLLVIEW_TOP_POCKET_CLASS);\r\n var $pullDown = this._$pullDown = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_CLASS);\r\n $topPocket.append($pullDown);\r\n this._$content.prepend($topPocket)\r\n },\r\n _initBottomPocket: function() {\r\n var $bottomPocket = this._$bottomPocket = $(\"
\").addClass(SCROLLVIEW_BOTTOM_POCKET_CLASS);\r\n var $reachBottom = this._$reachBottom = $(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_CLASS);\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n var $text = this._$reachBottomText = $(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_TEXT_CLASS);\r\n this._updateReachBottomText();\r\n $reachBottom.append($loadContainer.append($loadIndicator)).append($text);\r\n $bottomPocket.append($reachBottom);\r\n this._$content.append($bottomPocket)\r\n },\r\n _initLoadPanel: function() {\r\n var $loadPanelElement = $(\"
\").addClass(SCROLLVIEW_LOADPANEL).appendTo(this.$element());\r\n var loadPanelOptions = {\r\n shading: false,\r\n delay: 400,\r\n message: this.option(\"refreshingText\"),\r\n position: {\r\n of: this.$element()\r\n }\r\n };\r\n this._loadPanel = this._createComponent($loadPanelElement, LoadPanel, loadPanelOptions)\r\n },\r\n _updateReachBottomText: function() {\r\n this._$reachBottomText.text(this.option(\"reachBottomText\"))\r\n },\r\n _createStrategy: function() {\r\n var strategyName = this.option(\"useNative\") ? this.option(\"refreshStrategy\") : \"simulated\";\r\n var strategyClass = refreshStrategies[strategyName];\r\n this._strategy = new strategyClass(this);\r\n this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));\r\n this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));\r\n this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))\r\n },\r\n _createActions: function() {\r\n this.callBase();\r\n this._pullDownAction = this._createActionByOption(\"onPullDown\");\r\n this._reachBottomAction = this._createActionByOption(\"onReachBottom\");\r\n this._tryRefreshPocketState()\r\n },\r\n _tryRefreshPocketState: function() {\r\n this._pullDownEnable(this.hasActionSubscription(\"onPullDown\"));\r\n this._reachBottomEnable(this.hasActionSubscription(\"onReachBottom\"))\r\n },\r\n on: function(eventName) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (\"pullDown\" === eventName || \"reachBottom\" === eventName) {\r\n this._tryRefreshPocketState()\r\n }\r\n return result\r\n },\r\n _pullDownEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._pullDownEnabled\r\n }\r\n if (this._$pullDown && this._strategy) {\r\n this._$pullDown.toggle(enabled);\r\n this._strategy.pullDownEnable(enabled);\r\n this._pullDownEnabled = enabled\r\n }\r\n },\r\n _reachBottomEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._reachBottomEnabled\r\n }\r\n if (this._$reachBottom && this._strategy) {\r\n this._$reachBottom.toggle(enabled);\r\n this._strategy.reachBottomEnable(enabled);\r\n this._reachBottomEnabled = enabled\r\n }\r\n },\r\n _pullDownHandler: function() {\r\n this._loadingIndicator(false);\r\n this._pullDownLoading()\r\n },\r\n _loadingIndicator: function(value) {\r\n if (arguments.length < 1) {\r\n return this._loadingIndicatorEnabled\r\n }\r\n this._loadingIndicatorEnabled = value\r\n },\r\n _pullDownLoading: function() {\r\n this.startLoading();\r\n this._pullDownAction()\r\n },\r\n _reachBottomHandler: function() {\r\n this._loadingIndicator(false);\r\n this._reachBottomLoading()\r\n },\r\n _reachBottomLoading: function() {\r\n this.startLoading();\r\n this._reachBottomAction()\r\n },\r\n _releaseHandler: function() {\r\n this.finishLoading();\r\n this._loadingIndicator(true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onPullDown\":\r\n case \"onReachBottom\":\r\n this._createActions();\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"refreshStrategy\":\r\n this._invalidate();\r\n break;\r\n case \"reachBottomText\":\r\n this._updateReachBottomText();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content.children().eq(1))\r\n },\r\n release: function(preventReachBottom) {\r\n if (void 0 !== preventReachBottom) {\r\n this.toggleLoading(!preventReachBottom)\r\n }\r\n return this._strategy.release()\r\n },\r\n toggleLoading: function(showOrHide) {\r\n this._reachBottomEnable(showOrHide)\r\n },\r\n isFull: function() {\r\n return $(this.content()).height() > this._$container.height()\r\n },\r\n refresh: function() {\r\n if (!this.hasActionSubscription(\"onPullDown\")) {\r\n return\r\n }\r\n this._strategy.pendingRelease();\r\n this._pullDownLoading()\r\n },\r\n startLoading: function() {\r\n if (this._loadingIndicator() && this.$element().is(\":visible\")) {\r\n this._loadPanel.show()\r\n }\r\n this._lock()\r\n },\r\n finishLoading: function() {\r\n this._loadPanel.hide();\r\n this._unlock()\r\n },\r\n _dispose: function() {\r\n this._strategy.dispose();\r\n this.callBase();\r\n if (this._loadPanel) {\r\n this._loadPanel.$element().remove()\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxScrollView\", ScrollView);\r\nexport default ScrollView;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ScrollView from \"./scroll_view/ui.scroll_view\";\r\nexport default ScrollView;\r\n","/**\r\n * DevExtreme (esm/data_helper.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n DataSource\r\n} from \"./data/data_source/data_source\";\r\nimport {\r\n extend\r\n} from \"./core/utils/extend\";\r\nimport {\r\n normalizeDataSourceOptions\r\n} from \"./data/data_source/utils\";\r\nvar DATA_SOURCE_OPTIONS_METHOD = \"_dataSourceOptions\";\r\nvar DATA_SOURCE_CHANGED_METHOD = \"_dataSourceChangedHandler\";\r\nvar DATA_SOURCE_LOAD_ERROR_METHOD = \"_dataSourceLoadErrorHandler\";\r\nvar DATA_SOURCE_LOADING_CHANGED_METHOD = \"_dataSourceLoadingChangedHandler\";\r\nvar DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD = \"_dataSourceFromUrlLoadMode\";\r\nvar SPECIFIC_DATA_SOURCE_OPTION = \"_getSpecificDataSourceOption\";\r\nvar NORMALIZE_DATA_SOURCE = \"_normalizeDataSource\";\r\nvar DataHelperMixin = {\r\n postCtor: function() {\r\n this.on(\"disposing\", function() {\r\n this._disposeDataSource()\r\n }.bind(this))\r\n },\r\n _refreshDataSource: function() {\r\n this._initDataSource();\r\n this._loadDataSource()\r\n },\r\n _initDataSource: function() {\r\n var dataSourceOptions = SPECIFIC_DATA_SOURCE_OPTION in this ? this[SPECIFIC_DATA_SOURCE_OPTION]() : this.option(\"dataSource\");\r\n var widgetDataSourceOptions;\r\n var dataSourceType;\r\n this._disposeDataSource();\r\n if (dataSourceOptions) {\r\n if (dataSourceOptions instanceof DataSource) {\r\n this._isSharedDataSource = true;\r\n this._dataSource = dataSourceOptions\r\n } else {\r\n widgetDataSourceOptions = DATA_SOURCE_OPTIONS_METHOD in this ? this[DATA_SOURCE_OPTIONS_METHOD]() : {};\r\n dataSourceType = this._dataSourceType ? this._dataSourceType() : DataSource;\r\n dataSourceOptions = normalizeDataSourceOptions(dataSourceOptions, {\r\n fromUrlLoadMode: DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD in this && this[DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD]()\r\n });\r\n this._dataSource = new dataSourceType(extend(true, {}, widgetDataSourceOptions, dataSourceOptions))\r\n }\r\n if (NORMALIZE_DATA_SOURCE in this) {\r\n this._dataSource = this[NORMALIZE_DATA_SOURCE](this._dataSource)\r\n }\r\n this._addDataSourceHandlers()\r\n }\r\n },\r\n _addDataSourceHandlers: function() {\r\n if (DATA_SOURCE_CHANGED_METHOD in this) {\r\n this._addDataSourceChangeHandler()\r\n }\r\n if (DATA_SOURCE_LOAD_ERROR_METHOD in this) {\r\n this._addDataSourceLoadErrorHandler()\r\n }\r\n if (DATA_SOURCE_LOADING_CHANGED_METHOD in this) {\r\n this._addDataSourceLoadingChangedHandler()\r\n }\r\n this._addReadyWatcher()\r\n },\r\n _addReadyWatcher: function() {\r\n this._dataSource.on(\"loadingChanged\", function(isLoading) {\r\n this._ready && this._ready(!isLoading)\r\n }.bind(this))\r\n },\r\n _addDataSourceChangeHandler: function() {\r\n var dataSource = this._dataSource;\r\n this._proxiedDataSourceChangedHandler = function(e) {\r\n this[DATA_SOURCE_CHANGED_METHOD](dataSource.items(), e)\r\n }.bind(this);\r\n dataSource.on(\"changed\", this._proxiedDataSourceChangedHandler)\r\n },\r\n _addDataSourceLoadErrorHandler: function() {\r\n this._proxiedDataSourceLoadErrorHandler = this[DATA_SOURCE_LOAD_ERROR_METHOD].bind(this);\r\n this._dataSource.on(\"loadError\", this._proxiedDataSourceLoadErrorHandler)\r\n },\r\n _addDataSourceLoadingChangedHandler: function() {\r\n this._proxiedDataSourceLoadingChangedHandler = this[DATA_SOURCE_LOADING_CHANGED_METHOD].bind(this);\r\n this._dataSource.on(\"loadingChanged\", this._proxiedDataSourceLoadingChangedHandler)\r\n },\r\n _loadDataSource: function() {\r\n if (this._dataSource) {\r\n var dataSource = this._dataSource;\r\n if (dataSource.isLoaded()) {\r\n this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler()\r\n } else {\r\n dataSource.load()\r\n }\r\n }\r\n },\r\n _loadSingle: function(key, value) {\r\n key = \"this\" === key ? this._dataSource.key() || \"this\" : key;\r\n return this._dataSource.loadSingle(key, value)\r\n },\r\n _isLastPage: function() {\r\n return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize\r\n },\r\n _isDataSourceLoading: function() {\r\n return this._dataSource && this._dataSource.isLoading()\r\n },\r\n _disposeDataSource: function() {\r\n if (this._dataSource) {\r\n if (this._isSharedDataSource) {\r\n delete this._isSharedDataSource;\r\n this._proxiedDataSourceChangedHandler && this._dataSource.off(\"changed\", this._proxiedDataSourceChangedHandler);\r\n this._proxiedDataSourceLoadErrorHandler && this._dataSource.off(\"loadError\", this._proxiedDataSourceLoadErrorHandler);\r\n this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off(\"loadingChanged\", this._proxiedDataSourceLoadingChangedHandler)\r\n } else {\r\n this._dataSource.dispose()\r\n }\r\n delete this._dataSource;\r\n delete this._proxiedDataSourceChangedHandler;\r\n delete this._proxiedDataSourceLoadErrorHandler;\r\n delete this._proxiedDataSourceLoadingChangedHandler\r\n }\r\n },\r\n getDataSource: function() {\r\n return this._dataSource || null\r\n }\r\n};\r\nexport default DataHelperMixin;\r\n","/**\r\n * DevExtreme (esm/core/utils/style.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n camelize\r\n} from \"./inflector\";\r\nimport callOnce from \"./call_once\";\r\nimport {\r\n isNumeric\r\n} from \"./type\";\r\nimport domAdapter from \"../dom_adapter\";\r\nvar jsPrefixes = [\"\", \"Webkit\", \"Moz\", \"O\", \"Ms\"];\r\nvar cssPrefixes = {\r\n \"\": \"\",\r\n Webkit: \"-webkit-\",\r\n Moz: \"-moz-\",\r\n O: \"-o-\",\r\n ms: \"-ms-\"\r\n};\r\nvar getStyles = callOnce((function() {\r\n return domAdapter.createElement(\"dx\").style\r\n}));\r\nvar forEachPrefixes = function(prop, callBack) {\r\n prop = camelize(prop, true);\r\n var result;\r\n for (var i = 0, cssPrefixesCount = jsPrefixes.length; i < cssPrefixesCount; i++) {\r\n var jsPrefix = jsPrefixes[i];\r\n var prefixedProp = jsPrefix + prop;\r\n var lowerPrefixedProp = camelize(prefixedProp);\r\n result = callBack(lowerPrefixedProp, jsPrefix);\r\n if (void 0 === result) {\r\n result = callBack(prefixedProp, jsPrefix)\r\n }\r\n if (void 0 !== result) {\r\n break\r\n }\r\n }\r\n return result || \"\"\r\n};\r\nvar styleProp = function(name) {\r\n if (name in getStyles()) {\r\n return name\r\n }\r\n var originalName = name;\r\n name = name.charAt(0).toUpperCase() + name.substr(1);\r\n for (var i = 1; i < jsPrefixes.length; i++) {\r\n var prefixedProp = jsPrefixes[i].toLowerCase() + name;\r\n if (prefixedProp in getStyles()) {\r\n return prefixedProp\r\n }\r\n }\r\n return originalName\r\n};\r\nvar stylePropPrefix = function(prop) {\r\n return forEachPrefixes(prop, (function(specific, jsPrefix) {\r\n if (specific in getStyles()) {\r\n return cssPrefixes[jsPrefix]\r\n }\r\n }))\r\n};\r\nvar pxExceptions = [\"fillOpacity\", \"columnCount\", \"flexGrow\", \"flexShrink\", \"fontWeight\", \"lineHeight\", \"opacity\", \"zIndex\", \"zoom\"];\r\nvar normalizeStyleProp = function(prop, value) {\r\n if (isNumeric(value) && -1 === pxExceptions.indexOf(prop)) {\r\n value += \"px\"\r\n }\r\n return value\r\n};\r\nvar setDimensionProperty = function(elements, propertyName, value) {\r\n if (elements) {\r\n value = isNumeric(value) ? value += \"px\" : value;\r\n for (var i = 0; i < elements.length; ++i) {\r\n elements[i].style[propertyName] = value\r\n }\r\n }\r\n};\r\nvar setWidth = function(elements, value) {\r\n setDimensionProperty(elements, \"width\", value)\r\n};\r\nvar setHeight = function(elements, value) {\r\n setDimensionProperty(elements, \"height\", value)\r\n};\r\nexport {\r\n styleProp,\r\n stylePropPrefix,\r\n normalizeStyleProp,\r\n setWidth,\r\n setHeight\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/constants.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var TOOLBAR_CLASS = \"dx-toolbar\";\r\n","/**\r\n * DevExtreme (esm/core/utils/common.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../config\";\r\nimport Guid from \"../guid\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../utils/deferred\";\r\nimport {\r\n toComparable\r\n} from \"./data\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n isDefined,\r\n isFunction,\r\n isString,\r\n isObject,\r\n type\r\n} from \"./type\";\r\nexport var ensureDefined = function(value, defaultValue) {\r\n return isDefined(value) ? value : defaultValue\r\n};\r\nexport var executeAsync = function(action, context) {\r\n var deferred = new Deferred;\r\n var normalizedContext = context || this;\r\n var task = {\r\n promise: deferred.promise(),\r\n abort: function() {\r\n clearTimeout(timerId);\r\n deferred.rejectWith(normalizedContext)\r\n }\r\n };\r\n var callback = function() {\r\n var result = action.call(normalizedContext);\r\n if (result && result.done && isFunction(result.done)) {\r\n result.done((function() {\r\n deferred.resolveWith(normalizedContext)\r\n }))\r\n } else {\r\n deferred.resolveWith(normalizedContext)\r\n }\r\n };\r\n var timerId = (arguments[2] || setTimeout)(callback, \"number\" === typeof context ? context : 0);\r\n return task\r\n};\r\nvar delayedFuncs = [];\r\nvar delayedNames = [];\r\nvar delayedDeferreds = [];\r\nvar executingName;\r\nvar deferExecute = function(name, func, deferred) {\r\n if (executingName && executingName !== name) {\r\n delayedFuncs.push(func);\r\n delayedNames.push(name);\r\n deferred = deferred || new Deferred;\r\n delayedDeferreds.push(deferred);\r\n return deferred\r\n } else {\r\n var oldExecutingName = executingName;\r\n var currentDelayedCount = delayedDeferreds.length;\r\n executingName = name;\r\n var result = func();\r\n if (!result) {\r\n if (delayedDeferreds.length > currentDelayedCount) {\r\n result = when.apply(this, delayedDeferreds.slice(currentDelayedCount))\r\n } else if (deferred) {\r\n deferred.resolve()\r\n }\r\n }\r\n executingName = oldExecutingName;\r\n if (deferred && result && result.done) {\r\n result.done(deferred.resolve).fail(deferred.reject)\r\n }\r\n if (!executingName && delayedFuncs.length) {\r\n (\"render\" === delayedNames.shift() ? deferRender : deferUpdate)(delayedFuncs.shift(), delayedDeferreds.shift())\r\n }\r\n return result || when()\r\n }\r\n};\r\nexport var deferRender = function(func, deferred) {\r\n return deferExecute(\"render\", func, deferred)\r\n};\r\nexport var deferUpdate = function(func, deferred) {\r\n return deferExecute(\"update\", func, deferred)\r\n};\r\nexport var deferRenderer = function(func) {\r\n return function() {\r\n var that = this;\r\n return deferExecute(\"render\", (function() {\r\n return func.call(that)\r\n }))\r\n }\r\n};\r\nexport var deferUpdater = function(func) {\r\n return function() {\r\n var that = this;\r\n return deferExecute(\"update\", (function() {\r\n return func.call(that)\r\n }))\r\n }\r\n};\r\nexport var findBestMatches = function(targetFilter, items, mapFn) {\r\n var bestMatches = [];\r\n var maxMatchCount = 0;\r\n each(items, (index, itemSrc) => {\r\n var matchCount = 0;\r\n var item = mapFn ? mapFn(itemSrc) : itemSrc;\r\n each(targetFilter, (paramName, targetValue) => {\r\n var value = item[paramName];\r\n if (void 0 === value) {\r\n return\r\n }\r\n if (match(value, targetValue)) {\r\n matchCount++;\r\n return\r\n }\r\n matchCount = -1;\r\n return false\r\n });\r\n if (matchCount < maxMatchCount) {\r\n return\r\n }\r\n if (matchCount > maxMatchCount) {\r\n bestMatches.length = 0;\r\n maxMatchCount = matchCount\r\n }\r\n bestMatches.push(itemSrc)\r\n });\r\n return bestMatches\r\n};\r\nvar match = function(value, targetValue) {\r\n if (Array.isArray(value) && Array.isArray(targetValue)) {\r\n var mismatch = false;\r\n each(value, (index, valueItem) => {\r\n if (valueItem !== targetValue[index]) {\r\n mismatch = true;\r\n return false\r\n }\r\n });\r\n if (mismatch) {\r\n return false\r\n }\r\n return true\r\n }\r\n if (value === targetValue) {\r\n return true\r\n }\r\n return false\r\n};\r\nexport var splitPair = function(raw) {\r\n var _raw$x, _raw$y;\r\n switch (type(raw)) {\r\n case \"string\":\r\n return raw.split(/\\s+/, 2);\r\n case \"object\":\r\n return [null !== (_raw$x = raw.x) && void 0 !== _raw$x ? _raw$x : raw.h, null !== (_raw$y = raw.y) && void 0 !== _raw$y ? _raw$y : raw.v];\r\n case \"number\":\r\n return [raw];\r\n case \"array\":\r\n return raw;\r\n default:\r\n return null\r\n }\r\n};\r\nexport var normalizeKey = function(id) {\r\n var key = isString(id) ? id : id.toString();\r\n var arr = key.match(/[^a-zA-Z0-9_]/g);\r\n arr && each(arr, (_, sign) => {\r\n key = key.replace(sign, \"__\" + sign.charCodeAt() + \"__\")\r\n });\r\n return key\r\n};\r\nexport var denormalizeKey = function(key) {\r\n var arr = key.match(/__\\d+__/g);\r\n arr && arr.forEach(char => {\r\n var charCode = parseInt(char.replace(\"__\", \"\"));\r\n key = key.replace(char, String.fromCharCode(charCode))\r\n });\r\n return key\r\n};\r\nexport var pairToObject = function(raw, preventRound) {\r\n var pair = splitPair(raw);\r\n var h = preventRound ? parseFloat(pair && pair[0]) : parseInt(pair && pair[0], 10);\r\n var v = preventRound ? parseFloat(pair && pair[1]) : parseInt(pair && pair[1], 10);\r\n if (!isFinite(h)) {\r\n h = 0\r\n }\r\n if (!isFinite(v)) {\r\n v = h\r\n }\r\n return {\r\n h: h,\r\n v: v\r\n }\r\n};\r\nexport var getKeyHash = function(key) {\r\n if (key instanceof Guid) {\r\n return key.toString()\r\n } else if (isObject(key) || Array.isArray(key)) {\r\n try {\r\n var keyHash = JSON.stringify(key);\r\n return \"{}\" === keyHash ? key : keyHash\r\n } catch (e) {\r\n return key\r\n }\r\n }\r\n return key\r\n};\r\nexport var escapeRegExp = function(string) {\r\n return string.replace(/[[\\]{}\\-()*+?.\\\\^$|\\s]/g, \"\\\\$&\")\r\n};\r\nexport var applyServerDecimalSeparator = function(value) {\r\n var separator = config().serverDecimalSeparator;\r\n if (isDefined(value)) {\r\n value = value.toString().replace(\".\", separator)\r\n }\r\n return value\r\n};\r\nexport var noop = function() {};\r\nexport var asyncNoop = function() {\r\n return (new Deferred).resolve().promise()\r\n};\r\nexport var grep = function(elements, checkFunction, invert) {\r\n var result = [];\r\n var check;\r\n var expectedCheck = !invert;\r\n for (var i = 0; i < elements.length; i++) {\r\n check = !!checkFunction(elements[i], i);\r\n if (check === expectedCheck) {\r\n result.push(elements[i])\r\n }\r\n }\r\n return result\r\n};\r\nvar arraysEqualByValue = function(array1, array2, depth) {\r\n if (array1.length !== array2.length) {\r\n return false\r\n }\r\n for (var i = 0; i < array1.length; i++) {\r\n if (!equalByValue(array1[i], array2[i], depth + 1)) {\r\n return false\r\n }\r\n }\r\n return true\r\n};\r\nvar objectsEqualByValue = function(object1, object2, depth, strict) {\r\n for (var propertyName in object1) {\r\n if (Object.prototype.hasOwnProperty.call(object1, propertyName) && !equalByValue(object1[propertyName], object2[propertyName], depth + 1, strict)) {\r\n return false\r\n }\r\n }\r\n for (var _propertyName in object2) {\r\n if (!(_propertyName in object1)) {\r\n return false\r\n }\r\n }\r\n return true\r\n};\r\nvar maxEqualityDepth = 3;\r\nexport var equalByValue = function(object1, object2) {\r\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;\r\n var strict = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n object1 = toComparable(object1, true);\r\n object2 = toComparable(object2, true);\r\n var comparisonResult = strict ? object1 === object2 : object1 == object2;\r\n if (comparisonResult || depth >= maxEqualityDepth) {\r\n return true\r\n }\r\n if (isObject(object1) && isObject(object2)) {\r\n return objectsEqualByValue(object1, object2, depth, strict)\r\n } else if (Array.isArray(object1) && Array.isArray(object2)) {\r\n return arraysEqualByValue(object1, object2, depth)\r\n }\r\n return false\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/validation/default_adapter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nvar DefaultAdapter = Class.inherit({\r\n ctor(editor, validator) {\r\n this.editor = editor;\r\n this.validator = validator;\r\n this.validationRequestsCallbacks = [];\r\n var handler = args => {\r\n this.validationRequestsCallbacks.forEach(item => item(args))\r\n };\r\n editor.validationRequest.add(handler);\r\n editor.on(\"disposing\", (function() {\r\n editor.validationRequest.remove(handler)\r\n }))\r\n },\r\n getValue() {\r\n return this.editor.option(\"value\")\r\n },\r\n getCurrentValidationError() {\r\n return this.editor.option(\"validationError\")\r\n },\r\n bypass() {\r\n return this.editor.option(\"disabled\")\r\n },\r\n applyValidationResults(params) {\r\n this.editor.option({\r\n validationErrors: params.brokenRules,\r\n validationStatus: params.status\r\n })\r\n },\r\n reset() {\r\n this.editor.reset()\r\n },\r\n focus() {\r\n this.editor.focus()\r\n }\r\n});\r\nexport default DefaultAdapter;\r\n","/**\r\n * DevExtreme (esm/ui/validator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n data as elementData\r\n} from \"../core/element_data\";\r\nimport Callbacks from \"../core/utils/callbacks\";\r\nimport errors from \"./widget/ui.errors\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport DefaultAdapter from \"./validation/default_adapter\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport Guid from \"../core/guid\";\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar VALIDATION_STATUS_PENDING = \"pending\";\r\nvar Validator = DOMComponent.inherit({\r\n _initOptions: function(options) {\r\n this.callBase.apply(this, arguments);\r\n this.option(ValidationEngine.initValidationOptions(options))\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n validationRules: []\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initGroupRegistration();\r\n this.focused = Callbacks();\r\n this._initAdapter();\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null,\r\n skipValidation: false\r\n }\r\n },\r\n _initGroupRegistration() {\r\n var group = this._findGroup();\r\n if (!this._groupWasInit) {\r\n this.on(\"disposing\", (function(args) {\r\n ValidationEngine.removeRegisteredValidator(args.component._validationGroup, args.component)\r\n }))\r\n }\r\n if (!this._groupWasInit || this._validationGroup !== group) {\r\n ValidationEngine.removeRegisteredValidator(this._validationGroup, this);\r\n this._groupWasInit = true;\r\n this._validationGroup = group;\r\n ValidationEngine.registerValidatorInGroup(group, this)\r\n }\r\n },\r\n _setOptionsByReference() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n validationGroup: true\r\n })\r\n },\r\n _initAdapter() {\r\n var element = this.$element()[0];\r\n var dxStandardEditor = elementData(element, \"dx-validation-target\");\r\n var adapter = this.option(\"adapter\");\r\n if (!adapter) {\r\n if (dxStandardEditor) {\r\n adapter = new DefaultAdapter(dxStandardEditor, this);\r\n adapter.validationRequestsCallbacks.push(args => {\r\n if (this._validationInfo.skipValidation) {\r\n return\r\n }\r\n this.validate(args)\r\n });\r\n this.option(\"adapter\", adapter);\r\n return\r\n }\r\n throw errors.Error(\"E0120\")\r\n }\r\n var callbacks = adapter.validationRequestsCallbacks;\r\n if (callbacks) {\r\n callbacks.push(args => {\r\n this.validate(args)\r\n })\r\n }\r\n },\r\n _toggleRTLDirection(isRtl) {\r\n var _this$option$editor$o, _this$option, _this$option$editor;\r\n var rtlEnabled = null !== (_this$option$editor$o = null === (_this$option = this.option(\"adapter\")) || void 0 === _this$option ? void 0 : null === (_this$option$editor = _this$option.editor) || void 0 === _this$option$editor ? void 0 : _this$option$editor.option(\"rtlEnabled\")) && void 0 !== _this$option$editor$o ? _this$option$editor$o : isRtl;\r\n this.callBase(rtlEnabled)\r\n },\r\n _initMarkup() {\r\n this.$element().addClass(VALIDATOR_CLASS);\r\n this.callBase()\r\n },\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n this._initGroupRegistration()\r\n }\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"validationGroup\":\r\n this._initGroupRegistration();\r\n return;\r\n case \"validationRules\":\r\n this._resetValidationRules();\r\n void 0 !== this.option(\"isValid\") && this.validate();\r\n return;\r\n case \"adapter\":\r\n this._initAdapter();\r\n break;\r\n case \"isValid\":\r\n case \"validationStatus\":\r\n this.option(ValidationEngine.synchronizeValidationOptions(args, this.option()));\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getValidationRules() {\r\n if (!this._validationRules) {\r\n this._validationRules = map(this.option(\"validationRules\"), (rule, index) => extend({}, rule, {\r\n validator: this,\r\n index: index\r\n }))\r\n }\r\n return this._validationRules\r\n },\r\n _findGroup() {\r\n var $element = this.$element();\r\n return this.option(\"validationGroup\") || ValidationEngine.findGroup($element, this._modelByElement($element))\r\n },\r\n _resetValidationRules() {\r\n delete this._validationRules\r\n },\r\n validate(args) {\r\n var adapter = this.option(\"adapter\");\r\n var name = this.option(\"name\");\r\n var bypass = adapter.bypass && adapter.bypass();\r\n var value = args && void 0 !== args.value ? args.value : adapter.getValue();\r\n var currentError = adapter.getCurrentValidationError && adapter.getCurrentValidationError();\r\n var rules = this._getValidationRules();\r\n var currentResult = this._validationInfo && this._validationInfo.result;\r\n if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {\r\n return extend({}, currentResult)\r\n }\r\n var result;\r\n if (bypass) {\r\n result = {\r\n isValid: true,\r\n status: VALIDATION_STATUS_VALID\r\n }\r\n } else if (currentError && currentError.editorSpecific) {\r\n currentError.validator = this;\r\n result = {\r\n isValid: false,\r\n status: VALIDATION_STATUS_INVALID,\r\n brokenRule: currentError,\r\n brokenRules: [currentError]\r\n }\r\n } else {\r\n result = ValidationEngine.validate(value, rules, name)\r\n }\r\n result.id = (new Guid).toString();\r\n this._applyValidationResult(result, adapter);\r\n result.complete && result.complete.then(res => {\r\n if (res.id === this._validationInfo.result.id) {\r\n this._applyValidationResult(res, adapter)\r\n }\r\n });\r\n return extend({}, this._validationInfo.result)\r\n },\r\n reset() {\r\n var adapter = this.option(\"adapter\");\r\n var result = {\r\n id: null,\r\n isValid: true,\r\n brokenRule: null,\r\n brokenRules: null,\r\n pendingRules: null,\r\n status: VALIDATION_STATUS_VALID,\r\n complete: null\r\n };\r\n this._validationInfo.skipValidation = true;\r\n adapter.reset();\r\n this._validationInfo.skipValidation = false;\r\n this._resetValidationRules();\r\n this._applyValidationResult(result, adapter)\r\n },\r\n _updateValidationResult(result) {\r\n if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {\r\n var complete = this._validationInfo.deferred && this._validationInfo.result.complete;\r\n this._validationInfo.result = extend({}, result, {\r\n complete: complete\r\n })\r\n } else {\r\n for (var prop in result) {\r\n if (\"id\" !== prop && \"complete\" !== prop) {\r\n this._validationInfo.result[prop] = result[prop]\r\n }\r\n }\r\n }\r\n },\r\n _applyValidationResult(result, adapter) {\r\n var validatedAction = this._createActionByOption(\"onValidated\", {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n result.validator = this;\r\n this._updateValidationResult(result);\r\n adapter.applyValidationResults && adapter.applyValidationResults(this._validationInfo.result);\r\n this.option({\r\n validationStatus: this._validationInfo.result.status\r\n });\r\n if (this._validationInfo.result.status === VALIDATION_STATUS_PENDING) {\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n this._eventsStrategy.fireEvent(\"validating\", [this._validationInfo.result]);\r\n return\r\n }\r\n if (this._validationInfo.result.status !== VALIDATION_STATUS_PENDING) {\r\n validatedAction(result);\r\n if (this._validationInfo.deferred) {\r\n this._validationInfo.deferred.resolve(result);\r\n this._validationInfo.deferred = null\r\n }\r\n }\r\n },\r\n focus() {\r\n var adapter = this.option(\"adapter\");\r\n adapter && adapter.focus && adapter.focus()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nregisterComponent(\"dxValidator\", Validator);\r\nexport default Validator;\r\n","/**\r\n * DevExtreme (esm/ui/shared/grouped_data_converter_mixin.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"../../core/utils/type\";\r\nvar isCorrectStructure = data => Array.isArray(data) && data.every(item => {\r\n var hasTwoFields = 2 === Object.keys(item).length;\r\n var hasCorrectFields = \"key\" in item && \"items\" in item;\r\n return hasTwoFields && hasCorrectFields && Array.isArray(item.items)\r\n});\r\nexport default {\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n var hasSimpleItems = false;\r\n var data = {};\r\n if (this._getGroupedOption() && isCorrectStructure(dataSource)) {\r\n data = dataSource.reduce((accumulator, item) => {\r\n var items = item.items.map(innerItem => {\r\n if (!isObject(innerItem)) {\r\n innerItem = {\r\n text: innerItem\r\n };\r\n hasSimpleItems = true\r\n }\r\n if (!(\"key\" in innerItem)) {\r\n innerItem.key = item.key\r\n }\r\n return innerItem\r\n });\r\n return accumulator.concat(items)\r\n }, []);\r\n dataSource = {\r\n store: {\r\n type: \"array\",\r\n data: data\r\n },\r\n group: {\r\n selector: \"key\",\r\n keepInitialKeyOrder: true\r\n }\r\n };\r\n if (hasSimpleItems) {\r\n dataSource.searchExpr = \"text\"\r\n }\r\n }\r\n return dataSource\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/events/index.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"./core/events_engine\";\r\nexport var on = eventsEngine.on;\r\nexport var one = eventsEngine.one;\r\nexport var off = eventsEngine.off;\r\nexport var trigger = eventsEngine.trigger;\r\nexport var triggerHandler = eventsEngine.triggerHandler;\r\nexport var Event = eventsEngine.Event;\r\n","/**\r\n * DevExtreme (esm/events/contextmenu.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport devices from \"../core/devices\";\r\nimport Class from \"../core/class\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n addNamespace,\r\n fireEvent,\r\n isMouseEvent\r\n} from \"./utils/index\";\r\nimport holdEvent from \"./hold\";\r\nvar CONTEXTMENU_NAMESPACE = \"dxContexMenu\";\r\nvar CONTEXTMENU_NAMESPACED_EVENT_NAME = addNamespace(\"contextmenu\", CONTEXTMENU_NAMESPACE);\r\nvar HOLD_NAMESPACED_EVENT_NAME = addNamespace(holdEvent.name, CONTEXTMENU_NAMESPACE);\r\nvar CONTEXTMENU_EVENT_NAME = \"dxcontextmenu\";\r\nvar ContextMenu = Class.inherit({\r\n setup: function(element) {\r\n var $element = $(element);\r\n eventsEngine.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));\r\n if (touch || devices.isSimulator()) {\r\n eventsEngine.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))\r\n }\r\n },\r\n _holdHandler: function(e) {\r\n if (isMouseEvent(e) && !devices.isSimulator()) {\r\n return\r\n }\r\n this._fireContextMenu(e)\r\n },\r\n _contextMenuHandler: function(e) {\r\n this._fireContextMenu(e)\r\n },\r\n _fireContextMenu: function(e) {\r\n return fireEvent({\r\n type: CONTEXTMENU_EVENT_NAME,\r\n originalEvent: e\r\n })\r\n },\r\n teardown: function(element) {\r\n eventsEngine.off(element, \".\" + CONTEXTMENU_NAMESPACE)\r\n }\r\n});\r\nregisterEvent(CONTEXTMENU_EVENT_NAME, new ContextMenu);\r\nexport var name = CONTEXTMENU_EVENT_NAME;\r\n","/**\r\n * DevExtreme (esm/events/hold.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n eventData,\r\n eventDelta\r\n} from \"./utils/index\";\r\nimport Emitter from \"./core/emitter\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar abs = Math.abs;\r\nvar HOLD_EVENT_NAME = \"dxhold\";\r\nvar HOLD_TIMEOUT = 750;\r\nvar TOUCH_BOUNDARY = 5;\r\nvar HoldEmitter = Emitter.inherit({\r\n start: function(e) {\r\n this._startEventData = eventData(e);\r\n this._startTimer(e)\r\n },\r\n _startTimer: function(e) {\r\n var holdTimeout = \"timeout\" in this ? this.timeout : HOLD_TIMEOUT;\r\n this._holdTimer = setTimeout(function() {\r\n this._requestAccept(e);\r\n this._fireEvent(HOLD_EVENT_NAME, e, {\r\n target: e.target\r\n });\r\n this._forgetAccept()\r\n }.bind(this), holdTimeout)\r\n },\r\n move: function(e) {\r\n if (this._touchWasMoved(e)) {\r\n this._cancel(e)\r\n }\r\n },\r\n _touchWasMoved: function(e) {\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n return abs(delta.x) > TOUCH_BOUNDARY || abs(delta.y) > TOUCH_BOUNDARY\r\n },\r\n end: function() {\r\n this._stopTimer()\r\n },\r\n _stopTimer: function() {\r\n clearTimeout(this._holdTimer)\r\n },\r\n cancel: function() {\r\n this._stopTimer()\r\n },\r\n dispose: function() {\r\n this._stopTimer()\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: HoldEmitter,\r\n bubble: true,\r\n events: [HOLD_EVENT_NAME]\r\n});\r\nexport default {\r\n name: HOLD_EVENT_NAME\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/view_port.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport readyCallbacks from \"./ready_callbacks\";\r\nvar ready = readyCallbacks.add;\r\nimport callbacks from \"./callbacks\";\r\nvar changeCallback = callbacks();\r\nvar $originalViewPort = $();\r\nvar value = function() {\r\n var $current;\r\n return function(element) {\r\n if (!arguments.length) {\r\n return $current\r\n }\r\n var $element = $(element);\r\n $originalViewPort = $element;\r\n var isNewViewportFound = !!$element.length;\r\n var prevViewPort = value();\r\n $current = isNewViewportFound ? $element : $(\"body\");\r\n changeCallback.fire(isNewViewportFound ? value() : $(), prevViewPort)\r\n }\r\n}();\r\nready((function() {\r\n value(\".dx-viewport\")\r\n}));\r\nexport {\r\n value,\r\n changeCallback\r\n};\r\nexport function originalViewPort() {\r\n return $originalViewPort\r\n}\r\n","/**\r\n * DevExtreme (esm/core/template_manager.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport {\r\n isDefined,\r\n isFunction,\r\n isRenderer\r\n} from \"./utils/type\";\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n FunctionTemplate\r\n} from \"./templates/function_template\";\r\nimport {\r\n EmptyTemplate\r\n} from \"./templates/empty_template\";\r\nimport {\r\n findTemplates,\r\n suitableTemplatesByName,\r\n templateKey,\r\n getNormalizedTemplateArgs,\r\n validateTemplateSource,\r\n defaultCreateElement,\r\n acquireTemplate\r\n} from \"./utils/template_manager\";\r\nvar TEXT_NODE = 3;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"template\";\r\nvar TEMPLATE_OPTIONS_NAME = \"dxTemplate\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar DX_POLYMORPH_WIDGET_TEMPLATE = new FunctionTemplate(_ref => {\r\n var {\r\n model: model,\r\n parent: parent\r\n } = _ref;\r\n var widgetName = model.widget;\r\n if (!widgetName) {\r\n return $()\r\n }\r\n var widgetElement = $(\"
\");\r\n var widgetOptions = model.options || {};\r\n if (parent) {\r\n parent._createComponent(widgetElement, widgetName, widgetOptions)\r\n } else {\r\n widgetElement[widgetName](widgetOptions)\r\n }\r\n return widgetElement\r\n});\r\nexport class TemplateManager {\r\n constructor(createElement, anonymousTemplateName) {\r\n this._tempTemplates = [];\r\n this._defaultTemplates = {};\r\n this._anonymousTemplateName = anonymousTemplateName || ANONYMOUS_TEMPLATE_NAME;\r\n this._createElement = createElement || defaultCreateElement;\r\n this._createTemplateIfNeeded = this._createTemplateIfNeeded.bind(this)\r\n }\r\n static createDefaultOptions() {\r\n return {\r\n integrationOptions: {\r\n watchMethod: function(fn, callback) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n if (!options.skipImmediate) {\r\n callback(fn())\r\n }\r\n return noop\r\n },\r\n templates: {\r\n \"dx-polymorph-widget\": DX_POLYMORPH_WIDGET_TEMPLATE\r\n },\r\n useDeferUpdateForTemplates: true\r\n }\r\n }\r\n }\r\n get anonymousTemplateName() {\r\n return this._anonymousTemplateName\r\n }\r\n addDefaultTemplates(templates) {\r\n this._defaultTemplates = extend({}, this._defaultTemplates, templates)\r\n }\r\n dispose() {\r\n this._tempTemplates.forEach(tempTemplate => {\r\n tempTemplate.template.dispose && tempTemplate.template.dispose()\r\n });\r\n this._tempTemplates = []\r\n }\r\n extractTemplates($el) {\r\n var templates = this._extractTemplates($el);\r\n var anonymousTemplateMeta = this._extractAnonymousTemplate($el);\r\n return {\r\n templates: templates,\r\n anonymousTemplateMeta: anonymousTemplateMeta\r\n }\r\n }\r\n _extractTemplates($el) {\r\n var templates = findTemplates($el, TEMPLATE_OPTIONS_NAME);\r\n var suitableTemplates = suitableTemplatesByName(templates);\r\n templates.forEach(_ref2 => {\r\n var {\r\n element: element,\r\n options: {\r\n name: name\r\n }\r\n } = _ref2;\r\n if (element === suitableTemplates[name]) {\r\n $(element).addClass(TEMPLATE_WRAPPER_CLASS).detach()\r\n } else {\r\n $(element).remove()\r\n }\r\n });\r\n return Object.keys(suitableTemplates).map(name => ({\r\n name: name,\r\n template: this._createTemplate(suitableTemplates[name])\r\n }))\r\n }\r\n _extractAnonymousTemplate($el) {\r\n var $anonymousTemplate = $el.contents().detach();\r\n var $notJunkTemplateContent = $anonymousTemplate.filter((_, element) => {\r\n var isTextNode = element.nodeType === TEXT_NODE;\r\n var isEmptyText = $(element).text().trim().length < 1;\r\n return !(isTextNode && isEmptyText)\r\n });\r\n return $notJunkTemplateContent.length > 0 ? {\r\n template: this._createTemplate($anonymousTemplate),\r\n name: this._anonymousTemplateName\r\n } : {}\r\n }\r\n _createTemplateIfNeeded(templateSource) {\r\n var cachedTemplate = this._tempTemplates.filter(tempTemplate => tempTemplate.source === templateKey(templateSource))[0];\r\n if (cachedTemplate) {\r\n return cachedTemplate.template\r\n }\r\n var template = this._createTemplate(templateSource);\r\n this._tempTemplates.push({\r\n template: template,\r\n source: templateKey(templateSource)\r\n });\r\n return template\r\n }\r\n _createTemplate(templateSource) {\r\n return this._createElement(validateTemplateSource(templateSource))\r\n }\r\n getTemplate(templateSource, templates, _ref3, context) {\r\n var {\r\n isAsyncTemplate: isAsyncTemplate,\r\n skipTemplates: skipTemplates\r\n } = _ref3;\r\n if (!isFunction(templateSource)) {\r\n return acquireTemplate(templateSource, this._createTemplateIfNeeded, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates)\r\n }\r\n return new FunctionTemplate(options => {\r\n var templateSourceResult = templateSource.apply(context, getNormalizedTemplateArgs(options));\r\n if (!isDefined(templateSourceResult)) {\r\n return new EmptyTemplate\r\n }\r\n var dispose = false;\r\n var template = acquireTemplate(templateSourceResult, templateSource => {\r\n if (templateSource.nodeType || isRenderer(templateSource) && !$(templateSource).is(\"script\")) {\r\n return new FunctionTemplate(() => templateSource)\r\n }\r\n dispose = true;\r\n return this._createTemplate(templateSource)\r\n }, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates);\r\n var result = template.render(options);\r\n dispose && template.dispose && template.dispose();\r\n return result\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/dom_component.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport config from \"./config\";\r\nimport errors from \"./errors\";\r\nimport windowResizeCallbacks from \"../core/utils/resize_callbacks\";\r\nimport {\r\n Component\r\n} from \"./component\";\r\nimport {\r\n TemplateManager\r\n} from \"./template_manager\";\r\nimport {\r\n attachInstanceToElement,\r\n getInstanceByElement\r\n} from \"./utils/public_component\";\r\nimport {\r\n cleanDataRecursive\r\n} from \"./element_data\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n grep,\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n inArray\r\n} from \"./utils/array\";\r\nimport {\r\n isString,\r\n isDefined\r\n} from \"./utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n resize as resizeEvent,\r\n visibility as visibilityEvents\r\n} from \"../events/short\";\r\nvar {\r\n abstract: abstract\r\n} = Component;\r\nvar DOMComponent = Component.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n width: void 0,\r\n height: void 0,\r\n rtlEnabled: config().rtlEnabled,\r\n elementAttr: {},\r\n disabled: false,\r\n integrationOptions: {}\r\n }, this._useTemplates() ? TemplateManager.createDefaultOptions() : {})\r\n },\r\n ctor(element, options) {\r\n this._customClass = null;\r\n this._createElement(element);\r\n attachInstanceToElement(this._$element, this, this._dispose);\r\n this.callBase(options)\r\n },\r\n _createElement(element) {\r\n this._$element = $(element)\r\n },\r\n _getSynchronizableOptionsForCreateComponent: () => [\"rtlEnabled\", \"disabled\", \"templatesRenderAsynchronously\"],\r\n _visibilityChanged: abstract,\r\n _dimensionChanged: abstract,\r\n _init() {\r\n this.callBase();\r\n this._attachWindowResizeCallback();\r\n this._initTemplateManager()\r\n },\r\n _setOptionsByDevice(instanceCustomRules) {\r\n this.callBase([].concat(this.constructor._classCustomRules || [], instanceCustomRules || []))\r\n },\r\n _isInitialOptionValue(name) {\r\n var isCustomOption = this.constructor._classCustomRules && Object.prototype.hasOwnProperty.call(this._convertRulesToOptions(this.constructor._classCustomRules), name);\r\n return !isCustomOption && this.callBase(name)\r\n },\r\n _attachWindowResizeCallback() {\r\n if (this._isDimensionChangeSupported()) {\r\n var windowResizeCallBack = this._windowResizeCallBack = this._dimensionChanged.bind(this);\r\n windowResizeCallbacks.add(windowResizeCallBack)\r\n }\r\n },\r\n _isDimensionChangeSupported() {\r\n return this._dimensionChanged !== abstract\r\n },\r\n _renderComponent() {\r\n this._initMarkup();\r\n hasWindow() && this._render()\r\n },\r\n _initMarkup() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.option() || {};\r\n this._renderElementAttributes();\r\n this._toggleRTLDirection(rtlEnabled);\r\n this._renderVisibilityChange();\r\n this._renderDimensions()\r\n },\r\n _render() {\r\n this._attachVisibilityChangeHandlers()\r\n },\r\n _renderElementAttributes() {\r\n var {\r\n elementAttr: elementAttr\r\n } = this.option() || {};\r\n var attributes = extend({}, elementAttr);\r\n var classNames = attributes.class;\r\n delete attributes.class;\r\n this.$element().attr(attributes).removeClass(this._customClass).addClass(classNames);\r\n this._customClass = classNames\r\n },\r\n _renderVisibilityChange() {\r\n if (this._isDimensionChangeSupported()) {\r\n this._attachDimensionChangeHandlers()\r\n }\r\n if (this._isVisibilityChangeSupported()) {\r\n var $element = this.$element();\r\n $element.addClass(\"dx-visibility-change-handler\")\r\n }\r\n },\r\n _renderDimensions() {\r\n var $element = this.$element();\r\n var element = $element.get(0);\r\n var width = this._getOptionValue(\"width\", element);\r\n var height = this._getOptionValue(\"height\", element);\r\n if (this._isCssUpdateRequired(element, height, width)) {\r\n $element.css({\r\n width: null === width ? \"\" : width,\r\n height: null === height ? \"\" : height\r\n })\r\n }\r\n },\r\n _isCssUpdateRequired: (element, height, width) => !!(isDefined(width) || isDefined(height) || element.style.width || element.style.height),\r\n _attachDimensionChangeHandlers() {\r\n var $el = this.$element();\r\n var namespace = \"\".concat(this.NAME, \"VisibilityChange\");\r\n resizeEvent.off($el, {\r\n namespace: namespace\r\n });\r\n resizeEvent.on($el, () => this._dimensionChanged(), {\r\n namespace: namespace\r\n })\r\n },\r\n _attachVisibilityChangeHandlers() {\r\n if (this._isVisibilityChangeSupported()) {\r\n var $el = this.$element();\r\n var namespace = \"\".concat(this.NAME, \"VisibilityChange\");\r\n this._isHidden = !this._isVisible();\r\n visibilityEvents.off($el, {\r\n namespace: namespace\r\n });\r\n visibilityEvents.on($el, () => this._checkVisibilityChanged(\"shown\"), () => this._checkVisibilityChanged(\"hiding\"), {\r\n namespace: namespace\r\n })\r\n }\r\n },\r\n _isVisible() {\r\n var $element = this.$element();\r\n return $element.is(\":visible\")\r\n },\r\n _checkVisibilityChanged(action) {\r\n var isVisible = this._isVisible();\r\n if (isVisible) {\r\n if (\"hiding\" === action && !this._isHidden) {\r\n this._visibilityChanged(false);\r\n this._isHidden = true\r\n } else if (\"shown\" === action && this._isHidden) {\r\n this._isHidden = false;\r\n this._visibilityChanged(true)\r\n }\r\n }\r\n },\r\n _isVisibilityChangeSupported() {\r\n return this._visibilityChanged !== abstract && hasWindow()\r\n },\r\n _clean: noop,\r\n _modelByElement() {\r\n var {\r\n modelByElement: modelByElement\r\n } = this.option();\r\n var $element = this.$element();\r\n return modelByElement ? modelByElement($element) : void 0\r\n },\r\n _invalidate() {\r\n if (this._isUpdateAllowed()) {\r\n throw errors.Error(\"E0007\")\r\n }\r\n this._requireRefresh = true\r\n },\r\n _refresh() {\r\n this._clean();\r\n this._renderComponent()\r\n },\r\n _dispose() {\r\n this._templateManager && this._templateManager.dispose();\r\n this.callBase();\r\n this._clean();\r\n this._detachWindowResizeCallback()\r\n },\r\n _detachWindowResizeCallback() {\r\n if (this._isDimensionChangeSupported()) {\r\n windowResizeCallbacks.remove(this._windowResizeCallBack)\r\n }\r\n },\r\n _toggleRTLDirection(rtl) {\r\n var $element = this.$element();\r\n $element.toggleClass(\"dx-rtl\", rtl)\r\n },\r\n _createComponent(element, component) {\r\n var config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var synchronizableOptions = grep(this._getSynchronizableOptionsForCreateComponent(), value => !(value in config));\r\n var {\r\n integrationOptions: integrationOptions\r\n } = this.option();\r\n var {\r\n nestedComponentOptions: nestedComponentOptions\r\n } = this.option();\r\n nestedComponentOptions = nestedComponentOptions || noop;\r\n var nestedComponentConfig = extend({\r\n integrationOptions: integrationOptions\r\n }, nestedComponentOptions(this));\r\n synchronizableOptions.forEach(optionName => nestedComponentConfig[optionName] = this.option(optionName));\r\n this._extendConfig(config, nestedComponentConfig);\r\n var instance = void 0;\r\n if (isString(component)) {\r\n var $element = $(element)[component](config);\r\n instance = $element[component](\"instance\")\r\n } else if (element) {\r\n instance = component.getInstance(element);\r\n if (instance) {\r\n instance.option(config)\r\n } else {\r\n instance = new component(element, config)\r\n }\r\n }\r\n if (instance) {\r\n var optionChangedHandler = _ref => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n if (inArray(name, synchronizableOptions) >= 0) {\r\n instance.option(name, value)\r\n }\r\n };\r\n this.on(\"optionChanged\", optionChangedHandler);\r\n instance.on(\"disposing\", () => this.off(\"optionChanged\", optionChangedHandler))\r\n }\r\n return instance\r\n },\r\n _extendConfig(config, extendConfig) {\r\n each(extendConfig, (key, value) => {\r\n !Object.prototype.hasOwnProperty.call(config, key) && (config[key] = value)\r\n })\r\n },\r\n _defaultActionConfig() {\r\n var $element = this.$element();\r\n var context = this._modelByElement($element);\r\n return extend(this.callBase(), {\r\n context: context\r\n })\r\n },\r\n _defaultActionArgs() {\r\n var $element = this.$element();\r\n var model = this._modelByElement($element);\r\n var element = this.element();\r\n return extend(this.callBase(), {\r\n element: element,\r\n model: model\r\n })\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this._renderDimensions();\r\n break;\r\n case \"rtlEnabled\":\r\n this._invalidate();\r\n break;\r\n case \"elementAttr\":\r\n this._renderElementAttributes();\r\n break;\r\n case \"disabled\":\r\n case \"integrationOptions\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _removeAttributes(element) {\r\n var attrs = element.attributes;\r\n for (var i = attrs.length - 1; i >= 0; i--) {\r\n var attr = attrs[i];\r\n if (attr) {\r\n var {\r\n name: name\r\n } = attr;\r\n if (!name.indexOf(\"aria-\") || -1 !== name.indexOf(\"dx-\") || \"role\" === name || \"style\" === name || \"tabindex\" === name) {\r\n element.removeAttribute(name)\r\n }\r\n }\r\n }\r\n },\r\n _removeClasses(element) {\r\n element.className = element.className.split(\" \").filter(cssClass => 0 !== cssClass.lastIndexOf(\"dx-\", 0)).join(\" \")\r\n },\r\n _updateDOMComponent(renderRequired) {\r\n if (renderRequired) {\r\n this._renderComponent()\r\n } else if (this._requireRefresh) {\r\n this._requireRefresh = false;\r\n this._refresh()\r\n }\r\n },\r\n endUpdate() {\r\n var renderRequired = this._isInitializingRequired();\r\n this.callBase();\r\n this._isUpdateAllowed() && this._updateDOMComponent(renderRequired)\r\n },\r\n $element() {\r\n return this._$element\r\n },\r\n element() {\r\n var $element = this.$element();\r\n return getPublicElement($element)\r\n },\r\n dispose() {\r\n var element = this.$element().get(0);\r\n cleanDataRecursive(element, true);\r\n element.textContent = \"\";\r\n this._removeAttributes(element);\r\n this._removeClasses(element)\r\n },\r\n resetOption(optionName) {\r\n this.callBase(optionName);\r\n if (\"width\" === optionName || \"height\" === optionName) {\r\n var initialOption = this.initialOption(optionName);\r\n !isDefined(initialOption) && this.$element().css(optionName, \"\")\r\n }\r\n },\r\n _getAnonymousTemplateName() {\r\n return\r\n },\r\n _initTemplateManager() {\r\n if (this._templateManager || !this._useTemplates()) {\r\n return\r\n }\r\n var {\r\n integrationOptions: integrationOptions = {}\r\n } = this.option();\r\n var {\r\n createTemplate: createTemplate\r\n } = integrationOptions;\r\n this._templateManager = new TemplateManager(createTemplate, this._getAnonymousTemplateName());\r\n this._initTemplates()\r\n },\r\n _initTemplates() {\r\n var {\r\n templates: templates,\r\n anonymousTemplateMeta: anonymousTemplateMeta\r\n } = this._templateManager.extractTemplates(this.$element());\r\n var anonymousTemplate = this.option(\"integrationOptions.templates.\".concat(anonymousTemplateMeta.name));\r\n templates.forEach(_ref2 => {\r\n var {\r\n name: name,\r\n template: template\r\n } = _ref2;\r\n this._options.silent(\"integrationOptions.templates.\".concat(name), template)\r\n });\r\n if (anonymousTemplateMeta.name && !anonymousTemplate) {\r\n this._options.silent(\"integrationOptions.templates.\".concat(anonymousTemplateMeta.name), anonymousTemplateMeta.template);\r\n this._options.silent(\"_hasAnonymousTemplateContent\", true)\r\n }\r\n },\r\n _getTemplateByOption(optionName) {\r\n return this._getTemplate(this.option(optionName))\r\n },\r\n _getTemplate(templateSource) {\r\n var templates = this.option(\"integrationOptions.templates\");\r\n var isAsyncTemplate = this.option(\"templatesRenderAsynchronously\");\r\n var skipTemplates = this.option(\"integrationOptions.skipTemplates\");\r\n return this._templateManager.getTemplate(templateSource, templates, {\r\n isAsyncTemplate: isAsyncTemplate,\r\n skipTemplates: skipTemplates\r\n }, this)\r\n },\r\n _saveTemplate(name, template) {\r\n this._setOptionWithoutOptionChange(\"integrationOptions.templates.\" + name, this._templateManager._createTemplate(template))\r\n },\r\n _useTemplates: () => true\r\n});\r\nDOMComponent.getInstance = function(element) {\r\n return getInstanceByElement($(element), this)\r\n};\r\nDOMComponent.defaultOptions = function(rule) {\r\n this._classCustomRules = this._classCustomRules || [];\r\n this._classCustomRules.push(rule)\r\n};\r\nexport default DOMComponent;\r\n","/**\r\n * DevExtreme (esm/core/utils/position.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../config\";\r\nimport domAdapter from \"../dom_adapter\";\r\nimport browser from \"../utils/browser\";\r\nimport {\r\n isWindow\r\n} from \"../utils/type\";\r\nvar getDefaultAlignment = isRtlEnabled => {\r\n var rtlEnabled = null !== isRtlEnabled && void 0 !== isRtlEnabled ? isRtlEnabled : config().rtlEnabled;\r\n return rtlEnabled ? \"right\" : \"left\"\r\n};\r\nvar getElementsFromPoint = (x, y) => {\r\n var document = domAdapter.getDocument();\r\n if (browser.msie) {\r\n var result = document.msElementsFromPoint(x, y);\r\n if (result) {\r\n return Array.prototype.slice.call(result)\r\n }\r\n return []\r\n }\r\n return document.elementsFromPoint(x, y)\r\n};\r\nvar getBoundingRect = element => {\r\n if (isWindow(element)) {\r\n return {\r\n width: element.outerWidth,\r\n height: element.outerHeight\r\n }\r\n }\r\n var rect;\r\n try {\r\n rect = element.getBoundingClientRect()\r\n } catch (e) {\r\n rect = {\r\n width: 0,\r\n height: 0,\r\n bottom: 0,\r\n top: 0,\r\n left: 0,\r\n right: 0\r\n }\r\n }\r\n return rect\r\n};\r\nexport {\r\n getBoundingRect,\r\n getDefaultAlignment,\r\n getElementsFromPoint\r\n};\r\n","/**\r\n * DevExtreme (esm/events/double_click.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n closestCommonParent\r\n} from \"../core/utils/dom\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport Class from \"../core/class\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n name as clickEventName\r\n} from \"./click\";\r\nimport {\r\n addNamespace,\r\n fireEvent\r\n} from \"./utils/index\";\r\nvar DBLCLICK_EVENT_NAME = \"dxdblclick\";\r\nvar DBLCLICK_NAMESPACE = \"dxDblClick\";\r\nvar NAMESPACED_CLICK_EVENT = addNamespace(clickEventName, DBLCLICK_NAMESPACE);\r\nvar DBLCLICK_TIMEOUT = 300;\r\nvar DblClick = Class.inherit({\r\n ctor: function() {\r\n this._handlerCount = 0;\r\n this._forgetLastClick()\r\n },\r\n _forgetLastClick: function() {\r\n this._firstClickTarget = null;\r\n this._lastClickTimeStamp = -DBLCLICK_TIMEOUT\r\n },\r\n add: function() {\r\n if (this._handlerCount <= 0) {\r\n eventsEngine.on(domAdapter.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))\r\n }\r\n this._handlerCount++\r\n },\r\n _clickHandler: function(e) {\r\n var timeStamp = e.timeStamp || Date.now();\r\n var timeBetweenClicks = timeStamp - this._lastClickTimeStamp;\r\n var isSimulated = timeBetweenClicks < 0;\r\n var isDouble = !isSimulated && timeBetweenClicks < DBLCLICK_TIMEOUT;\r\n if (isDouble) {\r\n fireEvent({\r\n type: DBLCLICK_EVENT_NAME,\r\n target: closestCommonParent(this._firstClickTarget, e.target),\r\n originalEvent: e\r\n });\r\n this._forgetLastClick()\r\n } else {\r\n this._firstClickTarget = e.target;\r\n this._lastClickTimeStamp = timeStamp\r\n }\r\n },\r\n remove: function() {\r\n this._handlerCount--;\r\n if (this._handlerCount <= 0) {\r\n this._forgetLastClick();\r\n eventsEngine.off(domAdapter.getDocument(), NAMESPACED_CLICK_EVENT)\r\n }\r\n }\r\n});\r\nregisterEvent(DBLCLICK_EVENT_NAME, new DblClick);\r\nexport {\r\n DBLCLICK_EVENT_NAME as name\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/hierarchical_collection/ui.data_converter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport errors from \"../../ui/widget/ui.errors\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined,\r\n isPrimitive\r\n} from \"../../core/utils/type\";\r\nvar DataConverter = Class.inherit({\r\n ctor: function() {\r\n this._dataStructure = [];\r\n this._itemsCount = 0;\r\n this._visibleItemsCount = 0\r\n },\r\n _indexByKey: {},\r\n _convertItemsToNodes: function(items, parentKey) {\r\n var that = this;\r\n each(items, (function(_, item) {\r\n var parentId = isDefined(parentKey) ? parentKey : that._getParentId(item);\r\n var node = that._convertItemToNode(item, parentId);\r\n that._dataStructure.push(node);\r\n that._checkForDuplicateId(node.internalFields.key);\r\n that._indexByKey[node.internalFields.key] = that._dataStructure.length - 1;\r\n if (that._itemHasChildren(item)) {\r\n that._convertItemsToNodes(that._dataAccessors.getters.items(item), node.internalFields.key)\r\n }\r\n }))\r\n },\r\n _checkForDuplicateId: function(key) {\r\n if (isDefined(this._indexByKey[key])) {\r\n throw errors.Error(\"E1040\", key)\r\n }\r\n },\r\n _getParentId: function(item) {\r\n return \"plain\" === this._dataType ? this._dataAccessors.getters.parentKey(item) : void 0\r\n },\r\n _itemHasChildren: function(item) {\r\n if (\"plain\" === this._dataType) {\r\n return\r\n }\r\n var items = this._dataAccessors.getters.items(item);\r\n return items && items.length\r\n },\r\n _getUniqueKey: function(item) {\r\n var keyGetter = this._dataAccessors.getters.key;\r\n var itemKey = keyGetter(item);\r\n var isCorrectKey = keyGetter && (itemKey || 0 === itemKey) && isPrimitive(itemKey);\r\n return isCorrectKey ? itemKey : this.getItemsCount()\r\n },\r\n _convertItemToNode: function(item, parentKey) {\r\n this._itemsCount++;\r\n false !== item.visible && this._visibleItemsCount++;\r\n var node = {\r\n internalFields: {\r\n disabled: this._dataAccessors.getters.disabled(item, {\r\n defaultValue: false\r\n }),\r\n expanded: this._dataAccessors.getters.expanded(item, {\r\n defaultValue: false\r\n }),\r\n selected: this._dataAccessors.getters.selected(item, {\r\n defaultValue: false\r\n }),\r\n key: this._getUniqueKey(item),\r\n parentKey: isDefined(parentKey) ? parentKey : this._rootValue,\r\n item: this._makeObjectFromPrimitive(item),\r\n childrenKeys: []\r\n }\r\n };\r\n extend(node, item);\r\n delete node.items;\r\n return node\r\n },\r\n setChildrenKeys: function() {\r\n var that = this;\r\n each(this._dataStructure, (function(_, node) {\r\n if (node.internalFields.parentKey === that._rootValue) {\r\n return\r\n }\r\n var parent = that.getParentNode(node);\r\n parent && parent.internalFields.childrenKeys.push(node.internalFields.key)\r\n }))\r\n },\r\n _makeObjectFromPrimitive: function(item) {\r\n if (isPrimitive(item)) {\r\n var key = item;\r\n item = {};\r\n this._dataAccessors.setters.key(item, key)\r\n }\r\n return item\r\n },\r\n _convertToPublicNode: function(node, parent) {\r\n if (!node) {\r\n return null\r\n }\r\n var publicNode = {\r\n text: this._dataAccessors.getters.display(node),\r\n key: node.internalFields.key,\r\n selected: node.internalFields.selected,\r\n expanded: node.internalFields.expanded,\r\n disabled: node.internalFields.disabled,\r\n parent: parent || null,\r\n itemData: node.internalFields.item,\r\n children: [],\r\n items: []\r\n };\r\n if (publicNode.parent) {\r\n publicNode.parent.children.push(publicNode);\r\n publicNode.parent.items.push(publicNode)\r\n }\r\n return publicNode\r\n },\r\n convertToPublicNodes: function(data, parent) {\r\n if (!data.length) {\r\n return []\r\n }\r\n var that = this;\r\n var publicNodes = [];\r\n each(data, (function(_, node) {\r\n node = isPrimitive(node) ? that._getByKey(node) : node;\r\n var publicNode = that._convertToPublicNode(node, parent);\r\n publicNode.children = that.convertToPublicNodes(node.internalFields.childrenKeys, publicNode);\r\n publicNodes.push(publicNode);\r\n node.internalFields.publicNode = publicNode\r\n }));\r\n return publicNodes\r\n },\r\n setDataAccessors: function(accessors) {\r\n this._dataAccessors = accessors\r\n },\r\n _getByKey: function(key) {\r\n return this._dataStructure[this.getIndexByKey(key)] || null\r\n },\r\n getParentNode: function(node) {\r\n return this._getByKey(node.internalFields.parentKey)\r\n },\r\n getByKey: function(data, key) {\r\n if (null === key || void 0 === key) {\r\n return null\r\n }\r\n var result = null;\r\n var that = this;\r\n var getByKey = function(data, key) {\r\n each(data, (function(_, element) {\r\n var currentElementKey = element.internalFields && element.internalFields.key || that._dataAccessors.getters.key(element);\r\n if (currentElementKey.toString() === key.toString()) {\r\n result = element;\r\n return false\r\n }\r\n }));\r\n return result\r\n };\r\n return getByKey(data, key)\r\n },\r\n getItemsCount: function() {\r\n return this._itemsCount\r\n },\r\n getVisibleItemsCount: function() {\r\n return this._visibleItemsCount\r\n },\r\n updateIndexByKey: function() {\r\n var that = this;\r\n this._indexByKey = {};\r\n each(this._dataStructure, (function(index, node) {\r\n that._checkForDuplicateId(node.internalFields.key);\r\n that._indexByKey[node.internalFields.key] = index\r\n }))\r\n },\r\n updateChildrenKeys: function() {\r\n this._indexByKey = {};\r\n this.removeChildrenKeys();\r\n this.updateIndexByKey();\r\n this.setChildrenKeys()\r\n },\r\n removeChildrenKeys: function() {\r\n this._indexByKey = {};\r\n each(this._dataStructure, (function(index, node) {\r\n node.internalFields.childrenKeys = []\r\n }))\r\n },\r\n getIndexByKey: function(key) {\r\n return this._indexByKey[key]\r\n },\r\n createPlainStructure: function(items, rootValue, dataType) {\r\n this._itemsCount = 0;\r\n this._visibleItemsCount = 0;\r\n this._rootValue = rootValue;\r\n this._dataType = dataType;\r\n this._indexByKey = {};\r\n this._convertItemsToNodes(items);\r\n this.setChildrenKeys();\r\n return this._dataStructure\r\n }\r\n});\r\nexport default DataConverter;\r\n","/**\r\n * DevExtreme (esm/ui/hierarchical_collection/ui.data_adapter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isFunction,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport errors from \"../../ui/widget/ui.errors\";\r\nimport uiSearchBoxMixin from \"../../ui/widget/ui.search_box_mixin\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport query from \"../../data/query\";\r\nimport storeHelper from \"../../data/store_helper\";\r\nimport HierarchicalDataConverter from \"./ui.data_converter\";\r\nvar EXPANDED = \"expanded\";\r\nvar SELECTED = \"selected\";\r\nvar DISABLED = \"disabled\";\r\nvar DataAdapter = Class.inherit({\r\n ctor: function(options) {\r\n this.options = {};\r\n extend(this.options, this._defaultOptions(), options);\r\n this.options.dataConverter.setDataAccessors(this.options.dataAccessors);\r\n this._selectedNodesKeys = [];\r\n this._expandedNodesKeys = [];\r\n this._dataStructure = [];\r\n this._createInternalDataStructure();\r\n this.getTreeNodes()\r\n },\r\n setOption: function(name, value) {\r\n this.options[name] = value;\r\n if (\"recursiveSelection\" === name) {\r\n this._updateSelection()\r\n }\r\n },\r\n _defaultOptions: function() {\r\n return {\r\n dataAccessors: void 0,\r\n items: [],\r\n multipleSelection: true,\r\n recursiveSelection: false,\r\n recursiveExpansion: false,\r\n rootValue: 0,\r\n searchValue: \"\",\r\n dataType: \"tree\",\r\n searchMode: \"contains\",\r\n dataConverter: new HierarchicalDataConverter,\r\n onNodeChanged: noop,\r\n sort: null\r\n }\r\n },\r\n _createInternalDataStructure: function() {\r\n this._initialDataStructure = this.options.dataConverter.createPlainStructure(this.options.items, this.options.rootValue, this.options.dataType);\r\n this._dataStructure = this.options.searchValue.length ? this.search(this.options.searchValue) : this._initialDataStructure;\r\n this.options.dataConverter._dataStructure = this._dataStructure;\r\n this._updateSelection();\r\n this._updateExpansion()\r\n },\r\n _updateSelection: function() {\r\n if (this.options.recursiveSelection) {\r\n this._setChildrenSelection();\r\n this._setParentSelection()\r\n }\r\n this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n },\r\n _updateExpansion: function(key) {\r\n if (this.options.recursiveExpansion) {\r\n key ? this._updateOneBranch(key) : this._setParentExpansion()\r\n }\r\n this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n },\r\n _updateNodesKeysArray: function(property) {\r\n var that = this;\r\n var array = [];\r\n each(that._getDataBySelectionMode(), (function(_, node) {\r\n if (!that._isNodeVisible(node)) {\r\n return\r\n }\r\n if (node.internalFields[property]) {\r\n if (property === EXPANDED || that.options.multipleSelection) {\r\n array.push(node.internalFields.key)\r\n } else {\r\n array.length && that.toggleSelection(array[0], false, true);\r\n array = [node.internalFields.key]\r\n }\r\n }\r\n }));\r\n return array\r\n },\r\n _getDataBySelectionMode: function() {\r\n return this.options.multipleSelection ? this.getData() : this.getFullData()\r\n },\r\n _isNodeVisible: function(node) {\r\n return false !== node.internalFields.item.visible\r\n },\r\n _getByKey: function(data, key) {\r\n return data === this._dataStructure ? this.options.dataConverter._getByKey(key) : this.options.dataConverter.getByKey(data, key)\r\n },\r\n _setChildrenSelection: function() {\r\n var that = this;\r\n each(this._dataStructure, (function(_, node) {\r\n if (!node.internalFields.childrenKeys.length) {\r\n return\r\n }\r\n var isSelected = node.internalFields.selected;\r\n true === isSelected && that._toggleChildrenSelection(node, isSelected)\r\n }))\r\n },\r\n _setParentSelection: function() {\r\n var that = this;\r\n each(this._dataStructure, (function(_, node) {\r\n var parent = that.options.dataConverter.getParentNode(node);\r\n if (parent && node.internalFields.parentKey !== that.options.rootValue) {\r\n that._iterateParents(node, (function(parent) {\r\n var newParentState = that._calculateSelectedState(parent);\r\n that._setFieldState(parent, SELECTED, newParentState)\r\n }))\r\n }\r\n }))\r\n },\r\n _setParentExpansion: function() {\r\n var that = this;\r\n each(this._dataStructure, (function(_, node) {\r\n if (!node.internalFields.expanded) {\r\n return\r\n }\r\n that._updateOneBranch(node.internalFields.key)\r\n }))\r\n },\r\n _updateOneBranch: function(key) {\r\n var that = this;\r\n var node = this.getNodeByKey(key);\r\n that._iterateParents(node, (function(parent) {\r\n that._setFieldState(parent, EXPANDED, true)\r\n }))\r\n },\r\n _iterateChildren: function(node, recursive, callback, processedKeys) {\r\n if (!isFunction(callback)) {\r\n return\r\n }\r\n var that = this;\r\n var nodeKey = node.internalFields.key;\r\n processedKeys = processedKeys || [];\r\n if (-1 === processedKeys.indexOf(nodeKey)) {\r\n processedKeys.push(nodeKey);\r\n each(node.internalFields.childrenKeys, (function(_, key) {\r\n var child = that.getNodeByKey(key);\r\n callback(child);\r\n if (child.internalFields.childrenKeys.length && recursive) {\r\n that._iterateChildren(child, recursive, callback, processedKeys)\r\n }\r\n }))\r\n }\r\n },\r\n _iterateParents: function(node, callback, processedKeys) {\r\n if (node.internalFields.parentKey === this.options.rootValue || !isFunction(callback)) {\r\n return\r\n }\r\n processedKeys = processedKeys || [];\r\n var key = node.internalFields.key;\r\n if (-1 === processedKeys.indexOf(key)) {\r\n processedKeys.push(key);\r\n var parent = this.options.dataConverter.getParentNode(node);\r\n if (parent) {\r\n callback(parent);\r\n if (parent.internalFields.parentKey !== this.options.rootValue) {\r\n this._iterateParents(parent, callback, processedKeys)\r\n }\r\n }\r\n }\r\n },\r\n _calculateSelectedState: function(node) {\r\n var itemsCount = node.internalFields.childrenKeys.length;\r\n var selectedItemsCount = 0;\r\n var invisibleItemsCount = 0;\r\n var result = false;\r\n for (var i = 0; i <= itemsCount - 1; i++) {\r\n var childNode = this.getNodeByKey(node.internalFields.childrenKeys[i]);\r\n var isChildInvisible = false === childNode.internalFields.item.visible;\r\n var childState = childNode.internalFields.selected;\r\n if (isChildInvisible) {\r\n invisibleItemsCount++;\r\n continue\r\n }\r\n if (childState) {\r\n selectedItemsCount++\r\n } else if (void 0 === childState) {\r\n selectedItemsCount += .5\r\n }\r\n }\r\n if (selectedItemsCount) {\r\n result = selectedItemsCount === itemsCount - invisibleItemsCount ? true : void 0\r\n }\r\n return result\r\n },\r\n _toggleChildrenSelection: function(node, state) {\r\n var that = this;\r\n this._iterateChildren(node, true, (function(child) {\r\n if (that._isNodeVisible(child)) {\r\n that._setFieldState(child, SELECTED, state)\r\n }\r\n }))\r\n },\r\n _setFieldState: function(node, field, state) {\r\n if (node.internalFields[field] === state) {\r\n return\r\n }\r\n node.internalFields[field] = state;\r\n if (node.internalFields.publicNode) {\r\n node.internalFields.publicNode[field] = state\r\n }\r\n this.options.dataAccessors.setters[field](node.internalFields.item, state);\r\n this.options.onNodeChanged(node)\r\n },\r\n _markChildren: function(keys) {\r\n var that = this;\r\n each(keys, (function(_, key) {\r\n var index = that.getIndexByKey(key);\r\n var node = that.getNodeByKey(key);\r\n that._dataStructure[index] = 0;\r\n node.internalFields.childrenKeys.length && that._markChildren(node.internalFields.childrenKeys)\r\n }))\r\n },\r\n _removeNode: function(key) {\r\n var node = this.getNodeByKey(key);\r\n this._dataStructure[this.getIndexByKey(key)] = 0;\r\n this._markChildren(node.internalFields.childrenKeys);\r\n var that = this;\r\n var counter = 0;\r\n var items = extend([], this._dataStructure);\r\n each(items, (function(index, item) {\r\n if (!item) {\r\n that._dataStructure.splice(index - counter, 1);\r\n counter++\r\n }\r\n }))\r\n },\r\n _addNode: function(item) {\r\n var dataConverter = this.options.dataConverter;\r\n var node = dataConverter._convertItemToNode(item, this.options.dataAccessors.getters.parentKey(item));\r\n this._dataStructure = this._dataStructure.concat(node);\r\n this._initialDataStructure = this._initialDataStructure.concat(node);\r\n dataConverter._dataStructure = dataConverter._dataStructure.concat(node)\r\n },\r\n _updateFields: function() {\r\n this.options.dataConverter.updateChildrenKeys();\r\n this._updateSelection();\r\n this._updateExpansion()\r\n },\r\n getSelectedNodesKeys: function() {\r\n return this._selectedNodesKeys\r\n },\r\n getExpandedNodesKeys: function() {\r\n return this._expandedNodesKeys\r\n },\r\n getData: function() {\r\n return this._dataStructure\r\n },\r\n getFullData: function() {\r\n return this._initialDataStructure\r\n },\r\n getNodeByItem: function(item) {\r\n var result = null;\r\n each(this._dataStructure, (function(_, node) {\r\n if (node.internalFields.item === item) {\r\n result = node;\r\n return false\r\n }\r\n }));\r\n return result\r\n },\r\n getNodesByItems: function(items) {\r\n var that = this;\r\n var nodes = [];\r\n each(items, (function(_, item) {\r\n var node = that.getNodeByItem(item);\r\n node && nodes.push(node)\r\n }));\r\n return nodes\r\n },\r\n getNodeByKey: function(key, data) {\r\n return this._getByKey(data || this._getDataBySelectionMode(), key)\r\n },\r\n getTreeNodes: function() {\r\n return this.options.dataConverter.convertToPublicNodes(this.getRootNodes())\r\n },\r\n getItemsCount: function() {\r\n return this.options.dataConverter.getItemsCount()\r\n },\r\n getVisibleItemsCount: function() {\r\n return this.options.dataConverter.getVisibleItemsCount()\r\n },\r\n getPublicNode: function(node) {\r\n return node.internalFields.publicNode\r\n },\r\n getRootNodes: function() {\r\n return this.getChildrenNodes(this.options.rootValue)\r\n },\r\n getChildrenNodes: function(parentKey) {\r\n return query(this._dataStructure).filter([\"internalFields.parentKey\", parentKey]).toArray()\r\n },\r\n getIndexByKey: function(key) {\r\n return this.options.dataConverter.getIndexByKey(key)\r\n },\r\n addItem: function(item) {\r\n this._addNode(item);\r\n this._updateFields()\r\n },\r\n removeItem: function(key) {\r\n this._removeNode(key);\r\n this._updateFields()\r\n },\r\n toggleSelection: function(key, state, selectRecursive) {\r\n var isSingleModeUnselect = this._isSingleModeUnselect(state);\r\n var node = this._getByKey(selectRecursive || isSingleModeUnselect ? this._initialDataStructure : this._dataStructure, key);\r\n this._setFieldState(node, SELECTED, state);\r\n if (this.options.recursiveSelection && !selectRecursive) {\r\n state ? this._setChildrenSelection() : this._toggleChildrenSelection(node, state);\r\n this._setParentSelection()\r\n }\r\n this._selectedNodesKeys = this._updateNodesKeysArray(SELECTED)\r\n },\r\n _isSingleModeUnselect: function(selectionState) {\r\n return !this.options.multipleSelection && !selectionState\r\n },\r\n toggleNodeDisabledState: function(key, state) {\r\n var node = this.getNodeByKey(key);\r\n this._setFieldState(node, DISABLED, state)\r\n },\r\n toggleSelectAll: function(state) {\r\n if (!isDefined(state)) {\r\n return\r\n }\r\n var that = this;\r\n var lastSelectedKey = that._selectedNodesKeys[that._selectedNodesKeys.length - 1];\r\n var dataStructure = that._isSingleModeUnselect(state) ? this._initialDataStructure : this._dataStructure;\r\n each(dataStructure, (function(index, node) {\r\n if (!that._isNodeVisible(node)) {\r\n return\r\n }\r\n that._setFieldState(node, SELECTED, state)\r\n }));\r\n that._selectedNodesKeys = that._updateNodesKeysArray(SELECTED);\r\n if (!state && that.options.selectionRequired) {\r\n that.toggleSelection(lastSelectedKey, true)\r\n }\r\n },\r\n isAllSelected: function() {\r\n if (this.getSelectedNodesKeys().length) {\r\n return this.getSelectedNodesKeys().length === this.getVisibleItemsCount() ? true : void 0\r\n } else {\r\n return false\r\n }\r\n },\r\n toggleExpansion: function(key, state) {\r\n var node = this.getNodeByKey(key);\r\n this._setFieldState(node, EXPANDED, state);\r\n if (state) {\r\n this._updateExpansion(key)\r\n }\r\n this._expandedNodesKeys = this._updateNodesKeysArray(EXPANDED)\r\n },\r\n isFiltered: function(item) {\r\n return !this.options.searchValue.length || !!this._filterDataStructure(this.options.searchValue, [item]).length\r\n },\r\n _createCriteria: function(selector, value, operation) {\r\n var searchFilter = [];\r\n if (!Array.isArray(selector)) {\r\n return [selector, operation, value]\r\n }\r\n each(selector, (function(i, item) {\r\n searchFilter.push([item, operation, value], \"or\")\r\n }));\r\n searchFilter.pop();\r\n return searchFilter\r\n },\r\n _filterDataStructure: function(filterValue, dataStructure) {\r\n var selector = this.options.searchExpr || this.options.dataAccessors.getters.display;\r\n var operation = uiSearchBoxMixin.getOperationBySearchMode(this.options.searchMode);\r\n var criteria = this._createCriteria(selector, filterValue, operation);\r\n dataStructure = dataStructure || this._initialDataStructure;\r\n return query(dataStructure).filter(criteria).toArray()\r\n },\r\n search: function(searchValue) {\r\n var that = this;\r\n var matches = this._filterDataStructure(searchValue);\r\n var dataConverter = this.options.dataConverter;\r\n ! function lookForParents(matches, index) {\r\n var length = matches.length;\r\n while (index < length) {\r\n var node = matches[index];\r\n if (node.internalFields.parentKey === that.options.rootValue) {\r\n index++;\r\n continue\r\n }\r\n var parent = dataConverter.getParentNode(node);\r\n if (!parent) {\r\n errors.log(\"W1007\", node.internalFields.parentKey, node.internalFields.key);\r\n index++;\r\n continue\r\n }\r\n if (!parent.internalFields.expanded) {\r\n that._setFieldState(parent, EXPANDED, true)\r\n }\r\n if (inArray(parent, matches) > -1) {\r\n index++;\r\n continue\r\n }\r\n matches.splice(index, 0, parent);\r\n lookForParents(matches, index)\r\n }\r\n }(matches, 0);\r\n if (this.options.sort) {\r\n matches = storeHelper.queryByOptions(query(matches), {\r\n sort: this.options.sort\r\n }).toArray()\r\n }\r\n dataConverter._indexByKey = {};\r\n each(matches, (function(index, node) {\r\n node.internalFields.childrenKeys = [];\r\n dataConverter._indexByKey[node.internalFields.key] = index\r\n }));\r\n dataConverter._dataStructure = matches;\r\n dataConverter.setChildrenKeys();\r\n return dataConverter._dataStructure\r\n }\r\n});\r\nexport default DataAdapter;\r\n","/**\r\n * DevExtreme (esm/ui/hierarchical_collection/ui.hierarchical_collection_widget.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n compileGetter,\r\n compileSetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n getImageContainer\r\n} from \"../../core/utils/icon\";\r\nimport HierarchicalDataAdapter from \"./ui.data_adapter\";\r\nimport CollectionWidget from \"../collection/ui.collection_widget.edit\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar HierarchicalCollectionWidget = CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n keyExpr: \"id\",\r\n displayExpr: \"text\",\r\n selectedExpr: \"selected\",\r\n disabledExpr: \"disabled\",\r\n itemsExpr: \"items\",\r\n hoverStateEnabled: true,\r\n parentIdExpr: \"parentId\",\r\n expandedExpr: \"expanded\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initAccessors();\r\n this._initDataAdapter();\r\n this._initDynamicTemplates()\r\n },\r\n _initDataSource: function() {\r\n this.callBase();\r\n this._dataSource && this._dataSource.paginate(false)\r\n },\r\n _initDataAdapter: function() {\r\n var accessors = this._createDataAdapterAccessors();\r\n this._dataAdapter = new HierarchicalDataAdapter(extend({\r\n dataAccessors: {\r\n getters: accessors.getters,\r\n setters: accessors.setters\r\n },\r\n items: this.option(\"items\")\r\n }, this._getDataAdapterOptions()))\r\n },\r\n _getDataAdapterOptions: noop,\r\n _initDynamicTemplates: function() {\r\n var that = this;\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(function($container, itemData) {\r\n $container.html(itemData.html).append(this._getIconContainer(itemData)).append(this._getTextContainer(itemData)).append(this._getPopoutContainer(itemData));\r\n that._addContentClasses(itemData, $container.parent())\r\n }.bind(this), [\"text\", \"html\", \"items\", \"icon\"], this.option(\"integrationOptions.watchMethod\"), {\r\n text: this._displayGetter,\r\n items: this._itemsGetter\r\n })\r\n })\r\n },\r\n _getIconContainer: function(itemData) {\r\n return itemData.icon ? getImageContainer(itemData.icon) : void 0\r\n },\r\n _getTextContainer: function(itemData) {\r\n return $(\"\").text(itemData.text)\r\n },\r\n _getPopoutContainer: noop,\r\n _addContentClasses: noop,\r\n _initAccessors: function() {\r\n var that = this;\r\n each(this._getAccessors(), (function(_, accessor) {\r\n that._compileAccessor(accessor)\r\n }));\r\n this._compileDisplayGetter()\r\n },\r\n _getAccessors: function() {\r\n return [\"key\", \"selected\", \"items\", \"disabled\", \"parentId\", \"expanded\"]\r\n },\r\n _getChildNodes: function(node) {\r\n var that = this;\r\n var arr = [];\r\n each(node.internalFields.childrenKeys, (function(_, key) {\r\n var childNode = that._dataAdapter.getNodeByKey(key);\r\n arr.push(childNode)\r\n }));\r\n return arr\r\n },\r\n _hasChildren: function(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n },\r\n _compileAccessor: function(optionName) {\r\n var getter = \"_\" + optionName + \"Getter\";\r\n var setter = \"_\" + optionName + \"Setter\";\r\n var optionExpr = this.option(optionName + \"Expr\");\r\n if (!optionExpr) {\r\n this[getter] = noop;\r\n this[setter] = noop;\r\n return\r\n } else if (isFunction(optionExpr)) {\r\n this[setter] = function(obj, value) {\r\n obj[optionExpr()] = value\r\n };\r\n this[getter] = function(obj) {\r\n return obj[optionExpr()]\r\n };\r\n return\r\n }\r\n this[getter] = compileGetter(optionExpr);\r\n this[setter] = compileSetter(optionExpr)\r\n },\r\n _createDataAdapterAccessors: function() {\r\n var that = this;\r\n var accessors = {\r\n getters: {},\r\n setters: {}\r\n };\r\n each(this._getAccessors(), (function(_, accessor) {\r\n var getterName = \"_\" + accessor + \"Getter\";\r\n var setterName = \"_\" + accessor + \"Setter\";\r\n var newAccessor = \"parentId\" === accessor ? \"parentKey\" : accessor;\r\n accessors.getters[newAccessor] = that[getterName];\r\n accessors.setters[newAccessor] = that[setterName]\r\n }));\r\n accessors.getters.display = !this._displayGetter ? itemData => itemData.text : this._displayGetter;\r\n return accessors\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._addWidgetClass()\r\n },\r\n _addWidgetClass: function() {\r\n this._focusTarget().addClass(this._widgetClass())\r\n },\r\n _widgetClass: noop,\r\n _renderItemFrame: function(index, itemData) {\r\n var $itemFrame = this.callBase.apply(this, arguments);\r\n $itemFrame.toggleClass(DISABLED_STATE_CLASS, !!this._disabledGetter(itemData));\r\n return $itemFrame\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"displayExpr\":\r\n case \"keyExpr\":\r\n this._initAccessors();\r\n this._initDynamicTemplates();\r\n this.repaint();\r\n break;\r\n case \"itemsExpr\":\r\n case \"selectedExpr\":\r\n case \"disabledExpr\":\r\n case \"expandedExpr\":\r\n case \"parentIdExpr\":\r\n this._initAccessors();\r\n this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n case \"items\":\r\n this._initDataAdapter();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default HierarchicalCollectionWidget;\r\n","/**\r\n * DevExtreme (esm/mobile/hide_callback.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nexport var hideCallback = function() {\r\n var callbacks = [];\r\n return {\r\n add: function(callback) {\r\n var indexOfCallback = inArray(callback, callbacks);\r\n if (-1 === indexOfCallback) {\r\n callbacks.push(callback)\r\n }\r\n },\r\n remove: function(callback) {\r\n var indexOfCallback = inArray(callback, callbacks);\r\n if (-1 !== indexOfCallback) {\r\n callbacks.splice(indexOfCallback, 1)\r\n }\r\n },\r\n fire: function() {\r\n var callback = callbacks.pop();\r\n var result = !!callback;\r\n if (result) {\r\n callback()\r\n }\r\n return result\r\n },\r\n hasCallback: function() {\r\n return callbacks.length > 0\r\n }\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/ui/resizable.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport {\r\n pairToObject\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n fitIntoRange\r\n} from \"../core/utils/math\";\r\nimport {\r\n isPlainObject,\r\n isFunction,\r\n isWindow\r\n} from \"../core/utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd\r\n} from \"../events/drag\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../events/visibility_change\";\r\nvar RESIZABLE = \"dxResizable\";\r\nvar RESIZABLE_CLASS = \"dx-resizable\";\r\nvar RESIZABLE_RESIZING_CLASS = \"dx-resizable-resizing\";\r\nvar RESIZABLE_HANDLE_CLASS = \"dx-resizable-handle\";\r\nvar RESIZABLE_HANDLE_TOP_CLASS = \"dx-resizable-handle-top\";\r\nvar RESIZABLE_HANDLE_BOTTOM_CLASS = \"dx-resizable-handle-bottom\";\r\nvar RESIZABLE_HANDLE_LEFT_CLASS = \"dx-resizable-handle-left\";\r\nvar RESIZABLE_HANDLE_RIGHT_CLASS = \"dx-resizable-handle-right\";\r\nvar RESIZABLE_HANDLE_CORNER_CLASS = \"dx-resizable-handle-corner\";\r\nvar DRAGSTART_START_EVENT_NAME = addNamespace(dragEventStart, RESIZABLE);\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventMove, RESIZABLE);\r\nvar DRAGSTART_END_EVENT_NAME = addNamespace(dragEventEnd, RESIZABLE);\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\nvar Resizable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n handles: \"all\",\r\n step: \"1\",\r\n stepPrecision: \"simple\",\r\n area: void 0,\r\n minWidth: 30,\r\n maxWidth: 1 / 0,\r\n minHeight: 30,\r\n maxHeight: 1 / 0,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n roundStepValue: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(RESIZABLE_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderHandles()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderActions()\r\n },\r\n _renderActions: function() {\r\n this._resizeStartAction = this._createActionByOption(\"onResizeStart\");\r\n this._resizeEndAction = this._createActionByOption(\"onResizeEnd\");\r\n this._resizeAction = this._createActionByOption(\"onResize\")\r\n },\r\n _renderHandles: function() {\r\n this._handles = [];\r\n var handles = this.option(\"handles\");\r\n if (\"none\" === handles) {\r\n return\r\n }\r\n var directions = \"all\" === handles ? [\"top\", \"bottom\", \"left\", \"right\"] : handles.split(\" \");\r\n each(directions, (index, handleName) => {\r\n this._renderHandle(handleName)\r\n });\r\n inArray(\"bottom\", directions) + 1 && inArray(\"right\", directions) + 1 && this._renderHandle(\"corner-bottom-right\");\r\n inArray(\"bottom\", directions) + 1 && inArray(\"left\", directions) + 1 && this._renderHandle(\"corner-bottom-left\");\r\n inArray(\"top\", directions) + 1 && inArray(\"right\", directions) + 1 && this._renderHandle(\"corner-top-right\");\r\n inArray(\"top\", directions) + 1 && inArray(\"left\", directions) + 1 && this._renderHandle(\"corner-top-left\");\r\n this._attachEventHandlers()\r\n },\r\n _renderHandle: function(handleName) {\r\n var $handle = $(\"
\").addClass(RESIZABLE_HANDLE_CLASS).addClass(RESIZABLE_HANDLE_CLASS + \"-\" + handleName).appendTo(this.$element());\r\n this._handles.push($handle)\r\n },\r\n _attachEventHandlers: function() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var handlers = {};\r\n handlers[DRAGSTART_START_EVENT_NAME] = this._dragStartHandler.bind(this);\r\n handlers[DRAGSTART_EVENT_NAME] = this._dragHandler.bind(this);\r\n handlers[DRAGSTART_END_EVENT_NAME] = this._dragEndHandler.bind(this);\r\n this._handles.forEach(handleElement => {\r\n eventsEngine.on(handleElement, handlers, {\r\n direction: \"both\",\r\n immediate: true\r\n })\r\n })\r\n },\r\n _detachEventHandlers: function() {\r\n this._handles.forEach(handleElement => {\r\n eventsEngine.off(handleElement)\r\n })\r\n },\r\n _toggleEventHandlers: function(shouldAttachEvents) {\r\n shouldAttachEvents ? this._attachEventHandlers() : this._detachEventHandlers()\r\n },\r\n _dragStartHandler: function(e) {\r\n var $element = this.$element();\r\n if ($element.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n this._toggleResizingClass(true);\r\n this._movingSides = this._getMovingSides(e);\r\n this._elementLocation = locate($element);\r\n var elementRect = getBoundingRect($element.get(0));\r\n this._elementSize = {\r\n width: elementRect.width,\r\n height: elementRect.height\r\n };\r\n this._renderDragOffsets(e);\r\n this._resizeStartAction({\r\n event: e,\r\n width: this._elementSize.width,\r\n height: this._elementSize.height,\r\n handles: this._movingSides\r\n });\r\n e.targetElements = null\r\n },\r\n _toggleResizingClass: function(value) {\r\n this.$element().toggleClass(RESIZABLE_RESIZING_CLASS, value)\r\n },\r\n _renderDragOffsets: function(e) {\r\n var area = this._getArea();\r\n if (!area) {\r\n return\r\n }\r\n var $handle = $(e.target).closest(\".\" + RESIZABLE_HANDLE_CLASS);\r\n var handleWidth = $handle.outerWidth();\r\n var handleHeight = $handle.outerHeight();\r\n var handleOffset = $handle.offset();\r\n var areaOffset = area.offset;\r\n var scrollOffset = this._getAreaScrollOffset();\r\n e.maxLeftOffset = handleOffset.left - areaOffset.left - scrollOffset.scrollX;\r\n e.maxRightOffset = areaOffset.left + area.width - handleOffset.left - handleWidth + scrollOffset.scrollX;\r\n e.maxTopOffset = handleOffset.top - areaOffset.top - scrollOffset.scrollY;\r\n e.maxBottomOffset = areaOffset.top + area.height - handleOffset.top - handleHeight + scrollOffset.scrollY\r\n },\r\n _getBorderWidth: function($element, direction) {\r\n if (isWindow($element.get(0))) {\r\n return 0\r\n }\r\n var borderWidth = $element.css(SIDE_BORDER_WIDTH_STYLES[direction]);\r\n return parseInt(borderWidth) || 0\r\n },\r\n _dragHandler: function(e) {\r\n var $element = this.$element();\r\n var sides = this._movingSides;\r\n var location = this._elementLocation;\r\n var size = this._elementSize;\r\n var offset = this._getOffset(e);\r\n var width = size.width + offset.x * (sides.left ? -1 : 1);\r\n var height = size.height + offset.y * (sides.top ? -1 : 1);\r\n if (offset.x || \"strict\" === this.option(\"stepPrecision\")) {\r\n this._renderWidth(width)\r\n }\r\n if (offset.y || \"strict\" === this.option(\"stepPrecision\")) {\r\n this._renderHeight(height)\r\n }\r\n var elementRect = getBoundingRect($element.get(0));\r\n var offsetTop = offset.y - ((elementRect.height || height) - height);\r\n var offsetLeft = offset.x - ((elementRect.width || width) - width);\r\n move($element, {\r\n top: location.top + (sides.top ? offsetTop : 0),\r\n left: location.left + (sides.left ? offsetLeft : 0)\r\n });\r\n this._resizeAction({\r\n event: e,\r\n width: this.option(\"width\") || width,\r\n height: this.option(\"height\") || height,\r\n handles: this._movingSides\r\n });\r\n triggerResizeEvent($element)\r\n },\r\n _getOffset: function(e) {\r\n var offset = e.offset;\r\n var steps = pairToObject(this.option(\"step\"), !this.option(\"roundStepValue\"));\r\n var sides = this._getMovingSides(e);\r\n var strictPrecision = \"strict\" === this.option(\"stepPrecision\");\r\n if (!sides.left && !sides.right) {\r\n offset.x = 0\r\n }\r\n if (!sides.top && !sides.bottom) {\r\n offset.y = 0\r\n }\r\n return strictPrecision ? this._getStrictOffset(offset, steps, sides) : this._getSimpleOffset(offset, steps)\r\n },\r\n _getSimpleOffset: function(offset, steps) {\r\n return {\r\n x: offset.x - offset.x % steps.h,\r\n y: offset.y - offset.y % steps.v\r\n }\r\n },\r\n _getStrictOffset: function(offset, steps, sides) {\r\n var location = this._elementLocation;\r\n var size = this._elementSize;\r\n var xPos = sides.left ? location.left : location.left + size.width;\r\n var yPos = sides.top ? location.top : location.top + size.height;\r\n var newXShift = (xPos + offset.x) % steps.h;\r\n var newYShift = (yPos + offset.y) % steps.v;\r\n var sign = Math.sign || (x => {\r\n x = +x;\r\n if (0 === x || isNaN(x)) {\r\n return x\r\n }\r\n return x > 0 ? 1 : -1\r\n });\r\n var separatorOffset = (steps, offset) => (1 + .2 * sign(offset)) % 1 * steps;\r\n var isSmallOffset = (offset, steps) => Math.abs(offset) < .2 * steps;\r\n var newOffsetX = offset.x - newXShift;\r\n var newOffsetY = offset.y - newYShift;\r\n if (newXShift > separatorOffset(steps.h, offset.x)) {\r\n newOffsetX += steps.h\r\n }\r\n if (newYShift > separatorOffset(steps.v, offset.y)) {\r\n newOffsetY += steps.v\r\n }\r\n return {\r\n x: (sides.left || sides.right) && !isSmallOffset(offset.x, steps.h) ? newOffsetX : 0,\r\n y: (sides.top || sides.bottom) && !isSmallOffset(offset.y, steps.v) ? newOffsetY : 0\r\n }\r\n },\r\n _getMovingSides: function(e) {\r\n var $target = $(e.target);\r\n var hasCornerTopLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-left\");\r\n var hasCornerTopRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-right\");\r\n var hasCornerBottomLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-left\");\r\n var hasCornerBottomRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-right\");\r\n return {\r\n top: $target.hasClass(RESIZABLE_HANDLE_TOP_CLASS) || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: $target.hasClass(RESIZABLE_HANDLE_LEFT_CLASS) || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: $target.hasClass(RESIZABLE_HANDLE_BOTTOM_CLASS) || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: $target.hasClass(RESIZABLE_HANDLE_RIGHT_CLASS) || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n },\r\n _getArea: function() {\r\n var area = this.option(\"area\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n if (isPlainObject(area)) {\r\n return this._getAreaFromObject(area)\r\n }\r\n return this._getAreaFromElement(area)\r\n },\r\n _getAreaScrollOffset: function() {\r\n var area = this.option(\"area\");\r\n var isElement = !isFunction(area) && !isPlainObject(area);\r\n var scrollOffset = {\r\n scrollY: 0,\r\n scrollX: 0\r\n };\r\n if (isElement) {\r\n var areaElement = $(area)[0];\r\n if (isWindow(areaElement)) {\r\n scrollOffset.scrollX = areaElement.pageXOffset;\r\n scrollOffset.scrollY = areaElement.pageYOffset\r\n }\r\n }\r\n return scrollOffset\r\n },\r\n _getAreaFromObject: function(area) {\r\n var result = {\r\n width: area.right - area.left,\r\n height: area.bottom - area.top,\r\n offset: {\r\n left: area.left,\r\n top: area.top\r\n }\r\n };\r\n this._correctAreaGeometry(result);\r\n return result\r\n },\r\n _getAreaFromElement: function(area) {\r\n var $area = $(area);\r\n var result;\r\n if ($area.length) {\r\n result = {\r\n width: $area.innerWidth(),\r\n height: $area.innerHeight(),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow($area[0]) ? {} : $area.offset())\r\n };\r\n this._correctAreaGeometry(result, $area)\r\n }\r\n return result\r\n },\r\n _correctAreaGeometry: function(result, $area) {\r\n var areaBorderLeft = $area ? this._getBorderWidth($area, \"left\") : 0;\r\n var areaBorderTop = $area ? this._getBorderWidth($area, \"top\") : 0;\r\n result.offset.left += areaBorderLeft + this._getBorderWidth(this.$element(), \"left\");\r\n result.offset.top += areaBorderTop + this._getBorderWidth(this.$element(), \"top\");\r\n result.width -= this.$element().outerWidth() - this.$element().innerWidth();\r\n result.height -= this.$element().outerHeight() - this.$element().innerHeight()\r\n },\r\n _dragEndHandler: function(e) {\r\n var $element = this.$element();\r\n this._resizeEndAction({\r\n event: e,\r\n width: $element.outerWidth(),\r\n height: $element.outerHeight(),\r\n handles: this._movingSides\r\n });\r\n this._toggleResizingClass(false)\r\n },\r\n _renderWidth: function(width) {\r\n this.option(\"width\", fitIntoRange(width, this.option(\"minWidth\"), this.option(\"maxWidth\")))\r\n },\r\n _renderHeight: function(height) {\r\n this.option(\"height\", fitIntoRange(height, this.option(\"minHeight\"), this.option(\"maxHeight\")))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n this._toggleEventHandlers(!args.value);\r\n this.callBase(args);\r\n break;\r\n case \"handles\":\r\n this._invalidate();\r\n break;\r\n case \"minWidth\":\r\n case \"maxWidth\":\r\n hasWindow() && this._renderWidth(this.$element().outerWidth());\r\n break;\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n hasWindow() && this._renderHeight(this.$element().outerHeight());\r\n break;\r\n case \"onResize\":\r\n case \"onResizeStart\":\r\n case \"onResizeEnd\":\r\n this._renderActions();\r\n break;\r\n case \"area\":\r\n case \"stepPrecision\":\r\n case \"step\":\r\n case \"roundStepValue\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n this.$element().find(\".\" + RESIZABLE_HANDLE_CLASS).remove()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nregisterComponent(RESIZABLE, Resizable);\r\nexport default Resizable;\r\n","/**\r\n * DevExtreme (esm/ui/overlay/z_index.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nvar baseZIndex = 1500;\r\nvar zIndexStack = [];\r\nexport var base = ZIndex => {\r\n baseZIndex = ensureDefined(ZIndex, baseZIndex);\r\n return baseZIndex\r\n};\r\nexport var create = function() {\r\n var baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex;\r\n var length = zIndexStack.length;\r\n var index = (length ? zIndexStack[length - 1] : baseIndex) + 1;\r\n zIndexStack.push(index);\r\n return index\r\n};\r\nexport var remove = zIndex => {\r\n var position = zIndexStack.indexOf(zIndex);\r\n if (position >= 0) {\r\n zIndexStack.splice(position, 1)\r\n }\r\n};\r\nexport var clearStack = () => {\r\n zIndexStack = []\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/overlay/ui.overlay.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport fx from \"../../animation/fx\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n locate,\r\n move,\r\n resetPosition\r\n} from \"../../animation/translator\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport devices from \"../../core/devices\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../../core/templates/empty_template\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n contains,\r\n resetActiveElement\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nimport {\r\n isString,\r\n isDefined,\r\n isFunction,\r\n isPlainObject,\r\n isWindow,\r\n isEvent\r\n} from \"../../core/utils/type\";\r\nimport {\r\n changeCallback,\r\n originalViewPort,\r\n value as viewPort\r\n} from \"../../core/utils/view_port\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove\r\n} from \"../../events/drag\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n keyboard\r\n} from \"../../events/short\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n triggerHidingEvent,\r\n triggerResizeEvent,\r\n triggerShownEvent\r\n} from \"../../events/visibility_change\";\r\nimport {\r\n hideCallback as hideTopOverlayCallback\r\n} from \"../../mobile/hide_callback\";\r\nimport Resizable from \"../resizable\";\r\nimport {\r\n tabbable\r\n} from \"../widget/selectors\";\r\nimport swatch from \"../widget/swatch_container\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport * as zIndexPool from \"./z_index\";\r\nvar ready = readyCallbacks.add;\r\nvar window = getWindow();\r\nvar viewPortChanged = changeCallback;\r\nvar OVERLAY_CLASS = \"dx-overlay\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nvar OVERLAY_SHADER_CLASS = \"dx-overlay-shader\";\r\nvar OVERLAY_MODAL_CLASS = \"dx-overlay-modal\";\r\nvar INNER_OVERLAY_CLASS = \"dx-inner-overlay\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar RTL_DIRECTION_CLASS = \"dx-rtl\";\r\nvar ACTIONS = [\"onShowing\", \"onShown\", \"onHiding\", \"onHidden\", \"onPositioned\", \"onResizeStart\", \"onResize\", \"onResizeEnd\"];\r\nvar OVERLAY_STACK = [];\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar PREVENT_SAFARI_SCROLLING_CLASS = \"dx-prevent-safari-scrolling\";\r\nvar TAB_KEY = \"tab\";\r\nvar POSITION_ALIASES = {\r\n top: {\r\n my: \"top center\",\r\n at: \"top center\"\r\n },\r\n bottom: {\r\n my: \"bottom center\",\r\n at: \"bottom center\"\r\n },\r\n right: {\r\n my: \"right center\",\r\n at: \"right center\"\r\n },\r\n left: {\r\n my: \"left center\",\r\n at: \"left center\"\r\n },\r\n center: {\r\n my: \"center\",\r\n at: \"center\"\r\n },\r\n \"right bottom\": {\r\n my: \"right bottom\",\r\n at: \"right bottom\"\r\n },\r\n \"right top\": {\r\n my: \"right top\",\r\n at: \"right top\"\r\n },\r\n \"left bottom\": {\r\n my: \"left bottom\",\r\n at: \"left bottom\"\r\n },\r\n \"left top\": {\r\n my: \"left top\",\r\n at: \"left top\"\r\n }\r\n};\r\nvar realDevice = devices.real();\r\nvar firefoxDesktop = browser.mozilla && \"desktop\" === realDevice.deviceType;\r\nvar iOS = \"ios\" === realDevice.platform;\r\nvar hasSafariAddressBar = browser.safari && \"desktop\" !== realDevice.deviceType;\r\nvar forceRepaint = $element => {\r\n if (firefoxDesktop) {\r\n $element.width()\r\n }\r\n};\r\nvar getElement = value => {\r\n if (isEvent(value)) {\r\n value = value.target\r\n }\r\n return $(value)\r\n};\r\nready(() => {\r\n eventsEngine.subscribeGlobal(domAdapter.getDocument(), pointerEvents.down, e => {\r\n for (var i = OVERLAY_STACK.length - 1; i >= 0; i--) {\r\n if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) {\r\n return\r\n }\r\n }\r\n })\r\n});\r\nvar Overlay = Widget.inherit({\r\n _supportedKeys: function() {\r\n var move = function(top, left, e) {\r\n if (!this.option(\"dragEnabled\")) {\r\n return\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var allowedOffsets = this._allowedOffsets();\r\n var offset = {\r\n top: fitIntoRange(top, -allowedOffsets.top, allowedOffsets.bottom),\r\n left: fitIntoRange(left, -allowedOffsets.left, allowedOffsets.right)\r\n };\r\n this._changePosition(offset)\r\n };\r\n return extend(this.callBase(), {\r\n escape: function() {\r\n this.hide()\r\n },\r\n upArrow: move.bind(this, -5, 0),\r\n downArrow: move.bind(this, 5, 0),\r\n leftArrow: move.bind(this, 0, -5),\r\n rightArrow: move.bind(this, 0, 5)\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n activeStateEnabled: false,\r\n visible: false,\r\n deferRendering: true,\r\n shading: true,\r\n shadingColor: \"\",\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n },\r\n width: function() {\r\n return .8 * $(window).width()\r\n },\r\n minWidth: null,\r\n maxWidth: null,\r\n height: function() {\r\n return .8 * $(window).height()\r\n },\r\n minHeight: null,\r\n maxHeight: null,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 300,\r\n from: {\r\n scale: .55\r\n }\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 300,\r\n to: {\r\n opacity: 0,\r\n scale: .55\r\n },\r\n from: {\r\n opacity: 1,\r\n scale: 1\r\n }\r\n }\r\n },\r\n closeOnOutsideClick: false,\r\n onShowing: null,\r\n onShown: null,\r\n onHiding: null,\r\n onHidden: null,\r\n contentTemplate: \"content\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n innerOverlay: false,\r\n target: void 0,\r\n container: void 0,\r\n hideTopOverlayHandler: () => {\r\n this.hide()\r\n },\r\n closeOnTargetScroll: false,\r\n onPositioned: null,\r\n boundaryOffset: {\r\n h: 0,\r\n v: 0\r\n },\r\n propagateOutsideClick: false,\r\n ignoreChildEvents: true,\r\n _checkParentVisibility: true,\r\n _fixedPosition: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n width: null,\r\n height: null,\r\n animation: null,\r\n _checkParentVisibility: false\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n animation: true\r\n })\r\n },\r\n $wrapper: function() {\r\n return this._$wrapper\r\n },\r\n _eventBindingTarget: function() {\r\n return this._$content\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initActions();\r\n this._initCloseOnOutsideClickHandler();\r\n this._initTabTerminatorHandler();\r\n this._$wrapper = $(\"
\").addClass(OVERLAY_WRAPPER_CLASS);\r\n this._$content = $(\"
\").addClass(OVERLAY_CONTENT_CLASS);\r\n this._initInnerOverlayClass();\r\n var $element = this.$element();\r\n this._$wrapper.addClass($element.attr(\"class\"));\r\n $element.addClass(OVERLAY_CLASS);\r\n this._$wrapper.attr(\"data-bind\", \"dxControlsDescendantBindings: true\");\r\n eventsEngine.on(this._$wrapper, \"MSPointerDown\", noop);\r\n eventsEngine.on(this._$wrapper, \"focusin\", e => {\r\n e.stopPropagation()\r\n });\r\n this._toggleViewPortSubscription(true);\r\n this._initHideTopOverlayHandler(this.option(\"hideTopOverlayHandler\"))\r\n },\r\n _initOptions: function(options) {\r\n this._initTarget(options.target);\r\n var container = void 0 === options.container ? this.option(\"container\") : options.container;\r\n this._initContainer(container);\r\n this.callBase(options)\r\n },\r\n _initInnerOverlayClass: function() {\r\n this._$content.toggleClass(INNER_OVERLAY_CLASS, this.option(\"innerOverlay\"))\r\n },\r\n _initTarget: function(target) {\r\n if (!isDefined(target)) {\r\n return\r\n }\r\n var options = this.option();\r\n each([\"position.of\", \"animation.show.from.position.of\", \"animation.show.to.position.of\", \"animation.hide.from.position.of\", \"animation.hide.to.position.of\"], (_, path) => {\r\n var pathParts = path.split(\".\");\r\n var option = options;\r\n while (option) {\r\n if (1 === pathParts.length) {\r\n if (isPlainObject(option)) {\r\n option[pathParts.shift()] = target\r\n }\r\n break\r\n } else {\r\n option = option[pathParts.shift()]\r\n }\r\n }\r\n })\r\n },\r\n _initContainer: function(container) {\r\n container = void 0 === container ? viewPort() : container;\r\n var $element = this.$element();\r\n var $container = $element.closest(container);\r\n if (!$container.length) {\r\n $container = $(container).first()\r\n }\r\n this._$container = $container.length ? $container : $element.parent()\r\n },\r\n _initHideTopOverlayHandler: function(handler) {\r\n this._hideTopOverlayHandler = handler\r\n },\r\n _initActions: function() {\r\n this._actions = {};\r\n each(ACTIONS, (_, action) => {\r\n this._actions[action] = this._createActionByOption(action, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }) || noop\r\n })\r\n },\r\n _initCloseOnOutsideClickHandler: function() {\r\n var that = this;\r\n this._proxiedDocumentDownHandler = function() {\r\n return that._documentDownHandler(...arguments)\r\n }\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._showAnimationProcessing) {\r\n this._stopAnimation()\r\n }\r\n var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n if (isFunction(closeOnOutsideClick)) {\r\n closeOnOutsideClick = closeOnOutsideClick(e)\r\n }\r\n var $container = this._$content;\r\n var isAttachedTarget = $(window.document).is(e.target) || contains(window.document, e.target);\r\n var isInnerOverlay = $(e.target).closest(\".\" + INNER_OVERLAY_CLASS).length;\r\n var outsideClick = isAttachedTarget && !isInnerOverlay && !($container.is(e.target) || contains($container.get(0), e.target));\r\n if (outsideClick && closeOnOutsideClick) {\r\n this._outsideClickHandler(e)\r\n }\r\n return this.option(\"propagateOutsideClick\")\r\n },\r\n _outsideClickHandler(e) {\r\n if (this.option(\"shading\")) {\r\n e.preventDefault()\r\n }\r\n this.hide()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n content: new EmptyTemplate\r\n });\r\n this.callBase()\r\n },\r\n _isTopOverlay: function() {\r\n var overlayStack = this._overlayStack();\r\n for (var i = overlayStack.length - 1; i >= 0; i--) {\r\n var tabbableElements = overlayStack[i]._findTabbableBounds();\r\n if (tabbableElements.first || tabbableElements.last) {\r\n return overlayStack[i] === this\r\n }\r\n }\r\n return false\r\n },\r\n _overlayStack: function() {\r\n return OVERLAY_STACK\r\n },\r\n _zIndexInitValue: function() {\r\n return Overlay.baseZIndex()\r\n },\r\n _toggleViewPortSubscription: function(toggle) {\r\n viewPortChanged.remove(this._viewPortChangeHandle);\r\n if (toggle) {\r\n this._viewPortChangeHandle = this._viewPortChangeHandler.bind(this);\r\n viewPortChanged.add(this._viewPortChangeHandle)\r\n }\r\n },\r\n _viewPortChangeHandler: function() {\r\n this._initContainer(this.option(\"container\"));\r\n this._refresh()\r\n },\r\n _renderVisibilityAnimate: function(visible) {\r\n this._stopAnimation();\r\n return visible ? this._show() : this._hide()\r\n },\r\n _normalizePosition: function() {\r\n var position = this.option(\"position\");\r\n this._position = \"function\" === typeof position ? position() : position\r\n },\r\n _getAnimationConfig: function() {\r\n var animation = this.option(\"animation\");\r\n if (isFunction(animation)) {\r\n animation = animation.call(this)\r\n }\r\n return animation\r\n },\r\n _show: function() {\r\n var that = this;\r\n var deferred = new Deferred;\r\n this._parentHidden = this._isParentHidden();\r\n deferred.done(() => {\r\n delete that._parentHidden\r\n });\r\n if (this._parentHidden) {\r\n this._isHidden = true;\r\n return deferred.resolve()\r\n }\r\n if (this._currentVisible) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n this._currentVisible = true;\r\n this._isShown = false;\r\n this._normalizePosition();\r\n var animation = that._getAnimationConfig() || {};\r\n var showAnimation = this._normalizeAnimation(animation.show, \"to\");\r\n var startShowAnimation = showAnimation && showAnimation.start || noop;\r\n var completeShowAnimation = showAnimation && showAnimation.complete || noop;\r\n if (this._isHidingActionCanceled) {\r\n delete this._isHidingActionCanceled;\r\n deferred.resolve()\r\n } else {\r\n var show = () => {\r\n this._renderVisibility(true);\r\n if (this._isShowingActionCanceled) {\r\n delete this._isShowingActionCanceled;\r\n deferred.resolve();\r\n return\r\n }\r\n this._animate(showAnimation, (function() {\r\n if (that.option(\"focusStateEnabled\")) {\r\n eventsEngine.trigger(that._focusTarget(), \"focus\")\r\n }\r\n completeShowAnimation.apply(this, arguments);\r\n that._showAnimationProcessing = false;\r\n that._isShown = true;\r\n that._actions.onShown();\r\n that._toggleSafariScrolling(false);\r\n deferred.resolve()\r\n }), (function() {\r\n startShowAnimation.apply(this, arguments);\r\n that._showAnimationProcessing = true\r\n }))\r\n };\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n this._stopShowTimer();\r\n this._asyncShowTimeout = setTimeout(show)\r\n } else {\r\n show()\r\n }\r\n }\r\n return deferred.promise()\r\n },\r\n _normalizeAnimation: function(animation, prop) {\r\n if (animation) {\r\n animation = extend({\r\n type: \"slide\"\r\n }, animation);\r\n if (animation[prop] && \"object\" === typeof animation[prop]) {\r\n extend(animation[prop], {\r\n position: this._position\r\n })\r\n }\r\n }\r\n return animation\r\n },\r\n _hide: function() {\r\n if (!this._currentVisible) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n this._currentVisible = false;\r\n var that = this;\r\n var deferred = new Deferred;\r\n var animation = that._getAnimationConfig() || {};\r\n var hideAnimation = this._normalizeAnimation(animation.hide, \"from\");\r\n var startHideAnimation = hideAnimation && hideAnimation.start || noop;\r\n var completeHideAnimation = hideAnimation && hideAnimation.complete || noop;\r\n var hidingArgs = {\r\n cancel: false\r\n };\r\n if (this._isShowingActionCanceled) {\r\n deferred.resolve()\r\n } else {\r\n this._actions.onHiding(hidingArgs);\r\n that._toggleSafariScrolling(true);\r\n if (hidingArgs.cancel) {\r\n this._isHidingActionCanceled = true;\r\n this.option(\"visible\", true);\r\n deferred.resolve()\r\n } else {\r\n this._forceFocusLost();\r\n this._toggleShading(false);\r\n this._toggleSubscriptions(false);\r\n this._stopShowTimer();\r\n this._animate(hideAnimation, (function() {\r\n var _that$_actions;\r\n that._$content.css(\"pointerEvents\", \"\");\r\n that._renderVisibility(false);\r\n completeHideAnimation.apply(this, arguments);\r\n that._hideAnimationProcessing = false;\r\n null === (_that$_actions = that._actions) || void 0 === _that$_actions ? void 0 : _that$_actions.onHidden();\r\n deferred.resolve()\r\n }), (function() {\r\n that._$content.css(\"pointerEvents\", \"none\");\r\n startHideAnimation.apply(this, arguments);\r\n that._hideAnimationProcessing = true\r\n }))\r\n }\r\n }\r\n return deferred.promise()\r\n },\r\n _forceFocusLost: function() {\r\n var activeElement = domAdapter.getActiveElement();\r\n var shouldResetActiveElement = !!this._$content.find(activeElement).length;\r\n if (shouldResetActiveElement) {\r\n resetActiveElement()\r\n }\r\n },\r\n _animate: function(animation, completeCallback, startCallback) {\r\n if (animation) {\r\n startCallback = startCallback || animation.start || noop;\r\n fx.animate(this._$content, extend({}, animation, {\r\n start: startCallback,\r\n complete: completeCallback\r\n }))\r\n } else {\r\n completeCallback()\r\n }\r\n },\r\n _stopAnimation: function() {\r\n fx.stop(this._$content, true)\r\n },\r\n _renderVisibility: function(visible) {\r\n if (visible && this._isParentHidden()) {\r\n return\r\n }\r\n this._currentVisible = visible;\r\n this._stopAnimation();\r\n if (!visible) {\r\n triggerHidingEvent(this._$content)\r\n }\r\n this._toggleVisibility(visible);\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, !visible);\r\n this._updateZIndexStackPosition(visible);\r\n if (visible) {\r\n this._renderContent();\r\n var showingArgs = {\r\n cancel: false\r\n };\r\n this._actions.onShowing(showingArgs);\r\n if (showingArgs.cancel) {\r\n this._toggleVisibility(false);\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, true);\r\n this._updateZIndexStackPosition(false);\r\n this._moveFromContainer();\r\n this._isShowingActionCanceled = true;\r\n this.option(\"visible\", false);\r\n return\r\n }\r\n this._moveToContainer();\r\n this._renderGeometry();\r\n triggerShownEvent(this._$content);\r\n triggerResizeEvent(this._$content)\r\n } else {\r\n this._moveFromContainer()\r\n }\r\n this._toggleShading(visible);\r\n this._toggleSubscriptions(visible)\r\n },\r\n _updateZIndexStackPosition: function(pushToStack) {\r\n var overlayStack = this._overlayStack();\r\n var index = inArray(this, overlayStack);\r\n if (pushToStack) {\r\n if (-1 === index) {\r\n this._zIndex = zIndexPool.create(this._zIndexInitValue());\r\n overlayStack.push(this)\r\n }\r\n this._$wrapper.css(\"zIndex\", this._zIndex);\r\n this._$content.css(\"zIndex\", this._zIndex)\r\n } else if (-1 !== index) {\r\n overlayStack.splice(index, 1);\r\n zIndexPool.remove(this._zIndex)\r\n }\r\n },\r\n _toggleShading: function(visible) {\r\n this._$wrapper.toggleClass(OVERLAY_MODAL_CLASS, this.option(\"shading\") && !this.option(\"container\"));\r\n this._$wrapper.toggleClass(OVERLAY_SHADER_CLASS, visible && this.option(\"shading\"));\r\n this._$wrapper.css(\"backgroundColor\", this.option(\"shading\") ? this.option(\"shadingColor\") : \"\");\r\n this._toggleTabTerminator(visible && this.option(\"shading\"))\r\n },\r\n _initTabTerminatorHandler: function() {\r\n var that = this;\r\n this._proxiedTabTerminatorHandler = function() {\r\n that._tabKeyHandler(...arguments)\r\n }\r\n },\r\n _toggleTabTerminator: function(enabled) {\r\n var eventName = addNamespace(\"keydown\", this.NAME);\r\n if (enabled) {\r\n eventsEngine.on(domAdapter.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n } else {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n }\r\n },\r\n _findTabbableBounds: function() {\r\n var $elements = this._$wrapper.find(\"*\");\r\n var elementsCount = $elements.length - 1;\r\n var result = {\r\n first: null,\r\n last: null\r\n };\r\n for (var i = 0; i <= elementsCount; i++) {\r\n if (!result.first && $elements.eq(i).is(tabbable)) {\r\n result.first = $elements.eq(i)\r\n }\r\n if (!result.last && $elements.eq(elementsCount - i).is(tabbable)) {\r\n result.last = $elements.eq(elementsCount - i)\r\n }\r\n if (result.first && result.last) {\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _tabKeyHandler: function(e) {\r\n if (normalizeKeyName(e) !== TAB_KEY || !this._isTopOverlay()) {\r\n return\r\n }\r\n var tabbableElements = this._findTabbableBounds();\r\n var $firstTabbable = tabbableElements.first;\r\n var $lastTabbable = tabbableElements.last;\r\n var isTabOnLast = !e.shiftKey && e.target === $lastTabbable.get(0);\r\n var isShiftTabOnFirst = e.shiftKey && e.target === $firstTabbable.get(0);\r\n var isEmptyTabList = 0 === tabbableElements.length;\r\n var isOutsideTarget = !contains(this._$wrapper.get(0), e.target);\r\n if (isTabOnLast || isShiftTabOnFirst || isEmptyTabList || isOutsideTarget) {\r\n e.preventDefault();\r\n var $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable;\r\n eventsEngine.trigger($focusElement, \"focusin\");\r\n eventsEngine.trigger($focusElement, \"focus\")\r\n }\r\n },\r\n _toggleSubscriptions: function(enabled) {\r\n if (hasWindow()) {\r\n this._toggleHideTopOverlayCallback(enabled);\r\n this._toggleParentsScrollSubscription(enabled)\r\n }\r\n },\r\n _toggleHideTopOverlayCallback: function(subscribe) {\r\n if (!this._hideTopOverlayHandler) {\r\n return\r\n }\r\n if (subscribe) {\r\n hideTopOverlayCallback.add(this._hideTopOverlayHandler)\r\n } else {\r\n hideTopOverlayCallback.remove(this._hideTopOverlayHandler)\r\n }\r\n },\r\n _toggleParentsScrollSubscription: function(subscribe) {\r\n if (!this._position) {\r\n return\r\n }\r\n var target = this._position.of || $();\r\n var closeOnScroll = this.option(\"closeOnTargetScroll\");\r\n var $parents = getElement(target).parents();\r\n var scrollEvent = addNamespace(\"scroll\", this.NAME);\r\n if (\"desktop\" === devices.real().deviceType) {\r\n $parents = $parents.add(window)\r\n }\r\n this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || (e => {\r\n this._targetParentsScrollHandler(e)\r\n });\r\n eventsEngine.off($().add(this._$prevTargetParents), scrollEvent, this._proxiedTargetParentsScrollHandler);\r\n if (subscribe && closeOnScroll) {\r\n eventsEngine.on($parents, scrollEvent, this._proxiedTargetParentsScrollHandler);\r\n this._$prevTargetParents = $parents\r\n }\r\n },\r\n _targetParentsScrollHandler: function(e) {\r\n var closeHandled = false;\r\n var closeOnScroll = this.option(\"closeOnTargetScroll\");\r\n if (isFunction(closeOnScroll)) {\r\n closeHandled = closeOnScroll(e)\r\n }\r\n if (!closeHandled && !this._showAnimationProcessing) {\r\n this.hide()\r\n }\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._appendContentToElement();\r\n this._renderVisibilityAnimate(this.option(\"visible\"))\r\n },\r\n _appendContentToElement: function() {\r\n if (!this._$content.parent().is(this.$element())) {\r\n this._$content.appendTo(this.$element())\r\n }\r\n },\r\n _renderContent: function() {\r\n var shouldDeferRendering = !this._currentVisible && this.option(\"deferRendering\");\r\n var isParentHidden = this.option(\"visible\") && this._isParentHidden();\r\n if (isParentHidden) {\r\n this._isHidden = true;\r\n return\r\n }\r\n if (this._contentAlreadyRendered || shouldDeferRendering) {\r\n return\r\n }\r\n this._contentAlreadyRendered = true;\r\n this._appendContentToElement();\r\n this.callBase()\r\n },\r\n _isParentHidden: function() {\r\n if (!this.option(\"_checkParentVisibility\")) {\r\n return false\r\n }\r\n if (void 0 !== this._parentHidden) {\r\n return this._parentHidden\r\n }\r\n var $parent = this.$element().parent();\r\n if ($parent.is(\":visible\")) {\r\n return false\r\n }\r\n var isHidden = false;\r\n $parent.add($parent.parents()).each((function() {\r\n var $element = $(this);\r\n if (\"none\" === $element.css(\"display\")) {\r\n isHidden = true;\r\n return false\r\n }\r\n }));\r\n return isHidden || !domAdapter.getBody().contains($parent.get(0))\r\n },\r\n _renderContentImpl: function() {\r\n var whenContentRendered = new Deferred;\r\n var contentTemplateOption = this.option(\"contentTemplate\");\r\n var contentTemplate = this._getTemplate(contentTemplateOption);\r\n var transclude = this._templateManager.anonymousTemplateName === contentTemplateOption;\r\n contentTemplate && contentTemplate.render({\r\n container: getPublicElement(this.$content()),\r\n noModel: true,\r\n transclude: transclude,\r\n onRendered: () => {\r\n whenContentRendered.resolve()\r\n }\r\n });\r\n this._renderDrag();\r\n this._renderResize();\r\n this._renderScrollTerminator();\r\n whenContentRendered.done(() => {\r\n if (this.option(\"visible\")) {\r\n this._moveToContainer()\r\n }\r\n });\r\n return whenContentRendered.promise()\r\n },\r\n _renderDrag: function() {\r\n var $dragTarget = this._getDragTarget();\r\n if (!$dragTarget) {\r\n return\r\n }\r\n var startEventName = addNamespace(dragEventStart, this.NAME);\r\n var updateEventName = addNamespace(dragEventMove, this.NAME);\r\n eventsEngine.off($dragTarget, startEventName);\r\n eventsEngine.off($dragTarget, updateEventName);\r\n if (!this.option(\"dragEnabled\")) {\r\n return\r\n }\r\n eventsEngine.on($dragTarget, startEventName, this._dragStartHandler.bind(this));\r\n eventsEngine.on($dragTarget, updateEventName, this._dragUpdateHandler.bind(this))\r\n },\r\n _renderResize: function() {\r\n this._resizable = this._createComponent(this._$content, Resizable, {\r\n handles: this.option(\"resizeEnabled\") ? \"all\" : \"none\",\r\n onResizeEnd: this._resizeEndHandler.bind(this),\r\n onResize: this._actions.onResize.bind(this),\r\n onResizeStart: this._actions.onResizeStart.bind(this),\r\n minHeight: 100,\r\n minWidth: 100,\r\n area: this._getDragResizeContainer()\r\n })\r\n },\r\n _resizeEndHandler: function() {\r\n this._positionChangeHandled = true;\r\n var width = this._resizable.option(\"width\");\r\n var height = this._resizable.option(\"height\");\r\n width && this.option(\"width\", width);\r\n height && this.option(\"height\", height);\r\n this._actions.onResizeEnd()\r\n },\r\n _renderScrollTerminator: function() {\r\n var $scrollTerminator = this._$wrapper;\r\n var terminatorEventName = addNamespace(dragEventMove, this.NAME);\r\n eventsEngine.off($scrollTerminator, terminatorEventName);\r\n eventsEngine.on($scrollTerminator, terminatorEventName, {\r\n validate: function() {\r\n return true\r\n },\r\n getDirection: function() {\r\n return \"both\"\r\n },\r\n _toggleGestureCover: function(toggle) {\r\n if (!toggle) {\r\n this._toggleGestureCoverImpl(toggle)\r\n }\r\n },\r\n _clearSelection: noop,\r\n isNative: true\r\n }, e => {\r\n var originalEvent = e.originalEvent.originalEvent;\r\n var {\r\n type: type\r\n } = originalEvent || {};\r\n var isWheel = \"wheel\" === type;\r\n var isMouseMove = \"mousemove\" === type;\r\n var isScrollByWheel = isWheel && !isCommandKeyPressed(e);\r\n e._cancelPreventDefault = true;\r\n if (originalEvent && false !== e.cancelable && (!isMouseMove && !isWheel || isScrollByWheel)) {\r\n e.preventDefault()\r\n }\r\n })\r\n },\r\n _getDragTarget: function() {\r\n return this.$content()\r\n },\r\n _dragStartHandler: function(e) {\r\n e.targetElements = [];\r\n this._prevOffset = {\r\n x: 0,\r\n y: 0\r\n };\r\n var allowedOffsets = this._allowedOffsets();\r\n e.maxTopOffset = allowedOffsets.top;\r\n e.maxBottomOffset = allowedOffsets.bottom;\r\n e.maxLeftOffset = allowedOffsets.left;\r\n e.maxRightOffset = allowedOffsets.right\r\n },\r\n _getDragResizeContainer: function() {\r\n var isContainerDefined = originalViewPort().get(0) || this.option(\"container\");\r\n var $container = !isContainerDefined ? $(window) : this._$container;\r\n return $container\r\n },\r\n _deltaSize: function() {\r\n var $content = this._$content;\r\n var $container = this._getDragResizeContainer();\r\n var contentWidth = $content.outerWidth();\r\n var contentHeight = $content.outerHeight();\r\n var containerWidth = $container.outerWidth();\r\n var containerHeight = $container.outerHeight();\r\n if (this._isWindow($container)) {\r\n var document = domAdapter.getDocument();\r\n var fullPageHeight = Math.max($(document).outerHeight(), containerHeight);\r\n var fullPageWidth = Math.max($(document).outerWidth(), containerWidth);\r\n containerHeight = fullPageHeight;\r\n containerWidth = fullPageWidth\r\n }\r\n return {\r\n width: containerWidth - contentWidth,\r\n height: containerHeight - contentHeight\r\n }\r\n },\r\n _dragUpdateHandler: function(e) {\r\n var offset = e.offset;\r\n var prevOffset = this._prevOffset;\r\n var targetOffset = {\r\n top: offset.y - prevOffset.y,\r\n left: offset.x - prevOffset.x\r\n };\r\n this._changePosition(targetOffset);\r\n this._prevOffset = offset\r\n },\r\n _changePosition: function(offset) {\r\n var position = locate(this._$content);\r\n move(this._$content, {\r\n left: position.left + offset.left,\r\n top: position.top + offset.top\r\n });\r\n this._positionChangeHandled = true\r\n },\r\n _allowedOffsets: function() {\r\n var position = locate(this._$content);\r\n var deltaSize = this._deltaSize();\r\n var isAllowedDrag = deltaSize.height >= 0 && deltaSize.width >= 0;\r\n var shaderOffset = this.option(\"shading\") && !this.option(\"container\") && !this._isWindow(this._getContainer()) ? locate(this._$wrapper) : {\r\n top: 0,\r\n left: 0\r\n };\r\n var boundaryOffset = this.option(\"boundaryOffset\");\r\n return {\r\n top: isAllowedDrag ? position.top + shaderOffset.top + boundaryOffset.v : 0,\r\n bottom: isAllowedDrag ? -position.top - shaderOffset.top + deltaSize.height - boundaryOffset.v : 0,\r\n left: isAllowedDrag ? position.left + shaderOffset.left + boundaryOffset.h : 0,\r\n right: isAllowedDrag ? -position.left - shaderOffset.left + deltaSize.width - boundaryOffset.h : 0\r\n }\r\n },\r\n _moveFromContainer: function() {\r\n this._$content.appendTo(this.$element());\r\n this._detachWrapperToContainer()\r\n },\r\n _detachWrapperToContainer: function() {\r\n this._$wrapper.detach()\r\n },\r\n _moveToContainer: function() {\r\n this._attachWrapperToContainer();\r\n this._$content.appendTo(this._$wrapper)\r\n },\r\n _attachWrapperToContainer: function() {\r\n var $element = this.$element();\r\n var containerDefined = void 0 !== this.option(\"container\");\r\n var renderContainer = containerDefined ? this._$container : swatch.getSwatchContainer($element);\r\n if (renderContainer && renderContainer[0] === $element.parent()[0]) {\r\n renderContainer = $element\r\n }\r\n this._$wrapper.appendTo(renderContainer)\r\n },\r\n _fixHeightAfterSafariAddressBarResizing: function() {\r\n if (this._isWindow(this._getContainer()) && hasSafariAddressBar) {\r\n this._$wrapper.css(\"minHeight\", window.innerHeight)\r\n }\r\n },\r\n _renderGeometry: function(isDimensionChanged) {\r\n if (this.option(\"visible\") && hasWindow()) {\r\n this._renderGeometryImpl(isDimensionChanged)\r\n }\r\n },\r\n _renderGeometryImpl: function(isDimensionChanged) {\r\n this._stopAnimation();\r\n this._normalizePosition();\r\n this._renderWrapper();\r\n this._fixHeightAfterSafariAddressBarResizing();\r\n this._renderDimensions();\r\n var resultPosition = this._renderPosition();\r\n this._actions.onPositioned({\r\n position: resultPosition\r\n })\r\n },\r\n _fixWrapperPosition: function() {\r\n this._$wrapper.css(\"position\", this._useFixedPosition() ? \"fixed\" : \"absolute\")\r\n },\r\n _useFixedPosition: function() {\r\n return this._shouldFixBodyPosition() || this.option(\"_fixedPosition\")\r\n },\r\n _shouldFixBodyPosition: function() {\r\n var $container = this._getContainer();\r\n return this._isWindow($container) && (!iOS || void 0 !== this._bodyScrollTop)\r\n },\r\n _toggleSafariScrolling: function(scrollingEnabled) {\r\n if (iOS && this._shouldFixBodyPosition()) {\r\n var body = domAdapter.getBody();\r\n if (scrollingEnabled) {\r\n $(body).removeClass(PREVENT_SAFARI_SCROLLING_CLASS);\r\n window.scrollTo(0, this._bodyScrollTop);\r\n this._bodyScrollTop = void 0\r\n } else if (this.option(\"visible\")) {\r\n this._bodyScrollTop = window.pageYOffset;\r\n $(body).addClass(PREVENT_SAFARI_SCROLLING_CLASS)\r\n }\r\n }\r\n },\r\n _renderWrapper: function() {\r\n this._fixWrapperPosition();\r\n this._renderWrapperDimensions();\r\n this._renderWrapperPosition()\r\n },\r\n _renderWrapperDimensions: function() {\r\n var wrapperWidth;\r\n var wrapperHeight;\r\n var $container = this._getContainer();\r\n if (!$container) {\r\n return\r\n }\r\n var isWindow = this._isWindow($container);\r\n wrapperWidth = isWindow ? \"\" : $container.outerWidth(), wrapperHeight = isWindow ? \"\" : $container.outerHeight();\r\n this._$wrapper.css({\r\n width: wrapperWidth,\r\n height: wrapperHeight\r\n })\r\n },\r\n _isWindow: function($element) {\r\n return !!$element && isWindow($element.get(0))\r\n },\r\n _renderWrapperPosition: function() {\r\n var $container = this._getContainer();\r\n if ($container) {\r\n positionUtils.setup(this._$wrapper, {\r\n my: \"top left\",\r\n at: \"top left\",\r\n of: $container\r\n })\r\n }\r\n },\r\n _getContainer: function() {\r\n var position = this._position;\r\n var container = this.option(\"container\");\r\n var positionOf = null;\r\n if (!container && position) {\r\n positionOf = isEvent(position.of) ? window : position.of || window\r\n }\r\n return getElement(container || positionOf)\r\n },\r\n _renderDimensions: function() {\r\n var content = this._$content.get(0);\r\n this._$content.css({\r\n minWidth: this._getOptionValue(\"minWidth\", content),\r\n maxWidth: this._getOptionValue(\"maxWidth\", content),\r\n minHeight: this._getOptionValue(\"minHeight\", content),\r\n maxHeight: this._getOptionValue(\"maxHeight\", content),\r\n width: this._getOptionValue(\"width\", content),\r\n height: this._getOptionValue(\"height\", content)\r\n })\r\n },\r\n _renderPosition: function() {\r\n if (this._positionChangeHandled) {\r\n var allowedOffsets = this._allowedOffsets();\r\n this._changePosition({\r\n top: fitIntoRange(0, -allowedOffsets.top, allowedOffsets.bottom),\r\n left: fitIntoRange(0, -allowedOffsets.left, allowedOffsets.right)\r\n })\r\n } else {\r\n this._renderOverlayBoundaryOffset();\r\n resetPosition(this._$content);\r\n var position = this._transformStringPosition(this._position, POSITION_ALIASES);\r\n var resultPosition = positionUtils.setup(this._$content, position);\r\n forceRepaint(this._$content);\r\n return resultPosition\r\n }\r\n },\r\n _transformStringPosition: function(position, positionAliases) {\r\n if (isString(position)) {\r\n position = extend({}, positionAliases[position])\r\n }\r\n return position\r\n },\r\n _renderOverlayBoundaryOffset: function() {\r\n var boundaryOffset = this.option(\"boundaryOffset\");\r\n this._$content.css(\"margin\", boundaryOffset.v + \"px \" + boundaryOffset.h + \"px\")\r\n },\r\n _focusTarget: function() {\r\n return this._$content\r\n },\r\n _attachKeyboardEvents: function() {\r\n this._keyboardListenerId = keyboard.on(this._$content, null, opts => this._keyboardHandler(opts))\r\n },\r\n _keyboardHandler: function(options) {\r\n var e = options.originalEvent;\r\n var $target = $(e.target);\r\n if ($target.is(this._$content) || !this.option(\"ignoreChildEvents\")) {\r\n this.callBase(...arguments)\r\n }\r\n },\r\n _isVisible: function() {\r\n return this.option(\"visible\")\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n if (this.option(\"visible\")) {\r\n this._renderVisibilityAnimate(visible)\r\n }\r\n } else {\r\n this._renderVisibilityAnimate(visible)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderGeometry(true)\r\n },\r\n _clean: function() {\r\n if (!this._contentAlreadyRendered) {\r\n this.$content().empty()\r\n }\r\n this._renderVisibility(false);\r\n this._stopShowTimer();\r\n this._cleanFocusState()\r\n },\r\n _stopShowTimer() {\r\n if (this._asyncShowTimeout) {\r\n clearTimeout(this._asyncShowTimeout)\r\n }\r\n this._asyncShowTimeout = null\r\n },\r\n _dispose: function() {\r\n fx.stop(this._$content, false);\r\n clearTimeout(this._deferShowTimer);\r\n this._toggleViewPortSubscription(false);\r\n this._toggleSubscriptions(false);\r\n this._updateZIndexStackPosition(false);\r\n this._toggleTabTerminator(false);\r\n this._toggleSafariScrolling(true);\r\n this._actions = null;\r\n this.callBase();\r\n zIndexPool.remove(this._zIndex);\r\n this._$wrapper.remove();\r\n this._$content.remove()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(...arguments);\r\n this._$content.toggleClass(DISABLED_STATE_CLASS, Boolean(value))\r\n },\r\n _toggleRTLDirection: function(rtl) {\r\n this._$content.toggleClass(RTL_DIRECTION_CLASS, rtl)\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n if (inArray(args.name, ACTIONS) > -1) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"dragEnabled\":\r\n this._renderDrag();\r\n this._renderGeometry();\r\n break;\r\n case \"resizeEnabled\":\r\n this._renderResize();\r\n this._renderGeometry();\r\n break;\r\n case \"shading\":\r\n case \"shadingColor\":\r\n this._toggleShading(this.option(\"visible\"));\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n case \"minWidth\":\r\n case \"maxWidth\":\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n case \"boundaryOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"position\":\r\n this._positionChangeHandled = false;\r\n this._renderGeometry();\r\n break;\r\n case \"visible\":\r\n this._renderVisibilityAnimate(value).done(() => {\r\n if (!this._animateDeferred) {\r\n return\r\n }\r\n this._animateDeferred.resolveWith(this)\r\n });\r\n break;\r\n case \"target\":\r\n this._initTarget(value);\r\n this._invalidate();\r\n break;\r\n case \"container\":\r\n this._initContainer(value);\r\n this._invalidate();\r\n break;\r\n case \"innerOverlay\":\r\n this._initInnerOverlayClass();\r\n break;\r\n case \"deferRendering\":\r\n case \"contentTemplate\":\r\n this._contentAlreadyRendered = false;\r\n this._clean();\r\n this._invalidate();\r\n break;\r\n case \"hideTopOverlayHandler\":\r\n this._toggleHideTopOverlayCallback(false);\r\n this._initHideTopOverlayHandler(args.value);\r\n this._toggleHideTopOverlayCallback(this.option(\"visible\"));\r\n break;\r\n case \"closeOnTargetScroll\":\r\n this._toggleParentsScrollSubscription(this.option(\"visible\"));\r\n break;\r\n case \"closeOnOutsideClick\":\r\n case \"animation\":\r\n case \"propagateOutsideClick\":\r\n break;\r\n case \"rtlEnabled\":\r\n this._contentAlreadyRendered = false;\r\n this.callBase(args);\r\n break;\r\n case \"_fixedPosition\":\r\n this._fixWrapperPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n toggle: function(showing) {\r\n showing = void 0 === showing ? !this.option(\"visible\") : showing;\r\n var result = new Deferred;\r\n if (showing === this.option(\"visible\")) {\r\n return result.resolveWith(this, [showing]).promise()\r\n }\r\n var animateDeferred = new Deferred;\r\n this._animateDeferred = animateDeferred;\r\n this.option(\"visible\", showing);\r\n animateDeferred.promise().done(() => {\r\n delete this._animateDeferred;\r\n result.resolveWith(this, [this.option(\"visible\")])\r\n });\r\n return result.promise()\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n show: function() {\r\n return this.toggle(true)\r\n },\r\n hide: function() {\r\n return this.toggle(false)\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content)\r\n },\r\n repaint: function() {\r\n if (this._contentAlreadyRendered) {\r\n this._renderGeometry();\r\n triggerResizeEvent(this._$content)\r\n } else {\r\n this.callBase()\r\n }\r\n }\r\n});\r\nOverlay.baseZIndex = zIndex => zIndexPool.base(zIndex);\r\nregisterComponent(\"dxOverlay\", Overlay);\r\nexport default Overlay;\r\n","/**\r\n * DevExtreme (esm/localization/ldml/date.format.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport numberLocalization from \"../number\";\r\nvar ARABIC_COMMA = \"\\u060c\";\r\nvar FORMAT_SEPARATORS = \" .,:;/\\\\<>()-[]\" + ARABIC_COMMA;\r\nvar AM_PM_PATTERN = \". m.\";\r\nvar checkDigit = function(char) {\r\n var code = char && numberLocalization.convertDigits(char, false).charCodeAt(0);\r\n var zeroCode = numberLocalization.convertDigits(\"0\", false).charCodeAt(0);\r\n return zeroCode <= code && code < zeroCode + 10\r\n};\r\nvar checkPatternContinue = function(text, patterns, index, isDigit) {\r\n var char = text[index];\r\n var nextChar = text[index + 1];\r\n if (!isDigit) {\r\n if (\".\" === char || \" \" === char && text.slice(index - 1, index + 3) === AM_PM_PATTERN) {\r\n return true\r\n }\r\n if (\"-\" === char && !checkDigit(nextChar)) {\r\n return true\r\n }\r\n }\r\n var isDigitChanged = isDigit && patterns.some(pattern => text[index] !== pattern[index]);\r\n return FORMAT_SEPARATORS.indexOf(char) < 0 && isDigit === checkDigit(char) && (!isDigit || isDigitChanged)\r\n};\r\nvar getPatternStartIndex = function(defaultPattern, index) {\r\n if (!checkDigit(defaultPattern[index])) {\r\n while (index > 0 && !checkDigit(defaultPattern[index - 1]) && (\".\" === defaultPattern[index - 1] || FORMAT_SEPARATORS.indexOf(defaultPattern[index - 1]) < 0)) {\r\n index--\r\n }\r\n }\r\n return index\r\n};\r\nvar getDifference = function(defaultPattern, patterns, processedIndexes, isDigit) {\r\n var i = 0;\r\n var result = [];\r\n var patternsFilter = function(pattern) {\r\n return defaultPattern[i] !== pattern[i] && (void 0 === isDigit || checkDigit(defaultPattern[i]) === isDigit)\r\n };\r\n if (!Array.isArray(patterns)) {\r\n patterns = [patterns]\r\n }\r\n for (i = 0; i < defaultPattern.length; i++) {\r\n if (processedIndexes.indexOf(i) < 0 && patterns.filter(patternsFilter).length) {\r\n i = getPatternStartIndex(defaultPattern, i);\r\n do {\r\n isDigit = checkDigit(defaultPattern[i]);\r\n if (!result.length && !isDigit && checkDigit(patterns[0][i])) {\r\n break\r\n }\r\n result.push(i);\r\n processedIndexes.unshift(i);\r\n i++\r\n } while (defaultPattern[i] && checkPatternContinue(defaultPattern, patterns, i, isDigit));\r\n break\r\n }\r\n }\r\n if (1 === result.length && (\"0\" === defaultPattern[processedIndexes[0] - 1] || \"\\u0660\" === defaultPattern[processedIndexes[0] - 1])) {\r\n processedIndexes.unshift(processedIndexes[0] - 1)\r\n }\r\n return result\r\n};\r\nvar replaceCharsCore = function(pattern, indexes, char, patternPositions) {\r\n var baseCharIndex = indexes[0];\r\n var patternIndex = baseCharIndex < patternPositions.length ? patternPositions[baseCharIndex] : baseCharIndex;\r\n indexes.forEach((function(_, index) {\r\n pattern = pattern.substr(0, patternIndex + index) + (char.length > 1 ? char[index] : char) + pattern.substr(patternIndex + index + 1)\r\n }));\r\n if (1 === indexes.length) {\r\n pattern = pattern.replace(\"0\" + char, char + char);\r\n pattern = pattern.replace(\"\\u0660\" + char, char + char)\r\n }\r\n return pattern\r\n};\r\nvar replaceChars = function(pattern, indexes, char, patternPositions) {\r\n var i;\r\n var index;\r\n var patternIndex;\r\n if (!checkDigit(pattern[indexes[0]] || \"0\")) {\r\n var letterCount = Math.max(indexes.length <= 3 ? 3 : 4, char.length);\r\n while (indexes.length > letterCount) {\r\n index = indexes.pop();\r\n patternIndex = patternPositions[index];\r\n patternPositions[index] = -1;\r\n for (i = index + 1; i < patternPositions.length; i++) {\r\n patternPositions[i]--\r\n }\r\n pattern = pattern.substr(0, patternIndex) + pattern.substr(patternIndex + 1)\r\n }\r\n index = indexes[indexes.length - 1] + 1, patternIndex = index < patternPositions.length ? patternPositions[index] : index;\r\n while (indexes.length < letterCount) {\r\n indexes.push(indexes[indexes.length - 1] + 1);\r\n for (i = index; i < patternPositions.length; i++) {\r\n patternPositions[i]++\r\n }\r\n pattern = pattern.substr(0, patternIndex) + \" \" + pattern.substr(patternIndex)\r\n }\r\n }\r\n pattern = replaceCharsCore(pattern, indexes, char, patternPositions);\r\n return pattern\r\n};\r\nvar formatValue = function(value, formatter) {\r\n if (Array.isArray(value)) {\r\n return value.map((function(value) {\r\n return (formatter(value) || \"\").toString()\r\n }))\r\n }\r\n return (formatter(value) || \"\").toString()\r\n};\r\nvar ESCAPE_CHARS_REGEXP = /[a-zA-Z]/g;\r\nvar escapeChars = function(pattern, defaultPattern, processedIndexes, patternPositions) {\r\n var escapeIndexes = defaultPattern.split(\"\").map((function(char, index) {\r\n if (processedIndexes.indexOf(index) < 0 && (char.match(ESCAPE_CHARS_REGEXP) || \"'\" === char)) {\r\n return patternPositions[index]\r\n }\r\n return -1\r\n }));\r\n pattern = pattern.split(\"\").map((function(char, index) {\r\n var result = char;\r\n var isCurrentCharEscaped = escapeIndexes.indexOf(index) >= 0;\r\n var isPrevCharEscaped = index > 0 && escapeIndexes.indexOf(index - 1) >= 0;\r\n var isNextCharEscaped = escapeIndexes.indexOf(index + 1) >= 0;\r\n if (isCurrentCharEscaped) {\r\n if (!isPrevCharEscaped) {\r\n result = \"'\" + result\r\n }\r\n if (!isNextCharEscaped) {\r\n result += \"'\"\r\n }\r\n }\r\n return result\r\n })).join(\"\");\r\n return pattern\r\n};\r\nexport var getFormat = function(formatter) {\r\n var processedIndexes = [];\r\n var defaultPattern = formatValue(new Date(2009, 8, 8, 6, 5, 4), formatter);\r\n var patternPositions = defaultPattern.split(\"\").map((function(_, index) {\r\n return index\r\n }));\r\n var result = defaultPattern;\r\n var replacedPatterns = {};\r\n var datePatterns = [{\r\n date: new Date(2009, 8, 8, 6, 5, 4, 111),\r\n pattern: \"S\"\r\n }, {\r\n date: new Date(2009, 8, 8, 6, 5, 2),\r\n pattern: \"s\"\r\n }, {\r\n date: new Date(2009, 8, 8, 6, 2, 4),\r\n pattern: \"m\"\r\n }, {\r\n date: new Date(2009, 8, 8, 18, 5, 4),\r\n pattern: \"H\",\r\n isDigit: true\r\n }, {\r\n date: new Date(2009, 8, 8, 2, 5, 4),\r\n pattern: \"h\",\r\n isDigit: true\r\n }, {\r\n date: new Date(2009, 8, 8, 18, 5, 4),\r\n pattern: \"a\",\r\n isDigit: false\r\n }, {\r\n date: new Date(2009, 8, 1, 6, 5, 4),\r\n pattern: \"d\"\r\n }, {\r\n date: [new Date(2009, 8, 2, 6, 5, 4), new Date(2009, 8, 3, 6, 5, 4), new Date(2009, 8, 4, 6, 5, 4)],\r\n pattern: \"E\"\r\n }, {\r\n date: new Date(2009, 9, 6, 6, 5, 4),\r\n pattern: \"M\"\r\n }, {\r\n date: new Date(1998, 8, 8, 6, 5, 4),\r\n pattern: \"y\"\r\n }];\r\n if (!result) {\r\n return\r\n }\r\n datePatterns.forEach((function(test) {\r\n var diff = getDifference(defaultPattern, formatValue(test.date, formatter), processedIndexes, test.isDigit);\r\n var pattern = \"M\" === test.pattern && !replacedPatterns.d ? \"L\" : test.pattern;\r\n result = replaceChars(result, diff, pattern, patternPositions);\r\n replacedPatterns[pattern] = diff.length\r\n }));\r\n result = escapeChars(result, defaultPattern, processedIndexes, patternPositions);\r\n if (processedIndexes.length) {\r\n return result\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/templates/bindable_template.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n removeEvent\r\n} from \"../remove_event\";\r\nimport {\r\n isPrimitive\r\n} from \"../utils/type\";\r\nvar watchChanges = function(rawData, watchMethod, fields, fieldsMap, callback) {\r\n var fieldsDispose;\r\n var globalDispose = ((data, watchMethod, callback) => watchMethod(() => data, callback))(rawData, watchMethod, (function(dataWithRawFields) {\r\n fieldsDispose && fieldsDispose();\r\n if (isPrimitive(dataWithRawFields)) {\r\n callback(dataWithRawFields);\r\n return\r\n }\r\n fieldsDispose = function(data, watchMethod, fields, fieldsMap, callback) {\r\n var resolvedData = {};\r\n var missedFields = fields.slice();\r\n var watchHandlers = fields.map((function(name) {\r\n var fieldGetter = fieldsMap[name];\r\n return watchMethod(fieldGetter ? () => fieldGetter(data) : () => data[name], (function(value) {\r\n resolvedData[name] = value;\r\n if (missedFields.length) {\r\n var index = missedFields.indexOf(name);\r\n if (index >= 0) {\r\n missedFields.splice(index, 1)\r\n }\r\n }\r\n if (!missedFields.length) {\r\n callback(resolvedData)\r\n }\r\n }))\r\n }));\r\n return function() {\r\n watchHandlers.forEach(dispose => dispose())\r\n }\r\n }(dataWithRawFields, watchMethod, fields, fieldsMap, callback)\r\n }));\r\n return function() {\r\n fieldsDispose && fieldsDispose();\r\n globalDispose && globalDispose()\r\n }\r\n};\r\nexport class BindableTemplate extends TemplateBase {\r\n constructor(render, fields, watchMethod, fieldsMap) {\r\n super();\r\n this._render = render;\r\n this._fields = fields;\r\n this._fieldsMap = fieldsMap || {};\r\n this._watchMethod = watchMethod\r\n }\r\n _renderCore(options) {\r\n var $container = $(options.container);\r\n var dispose = watchChanges(options.model, this._watchMethod, this._fields, this._fieldsMap, data => {\r\n $container.empty();\r\n this._render($container, data, options.model)\r\n });\r\n eventsEngine.on($container, removeEvent, dispose);\r\n return $container.contents()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/texteditor_button_collection/button.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nexport default class TextEditorButton {\r\n constructor(name, editor, options) {\r\n this.instance = null;\r\n this.$container = null;\r\n this.$placeMarker = null;\r\n this.editor = editor;\r\n this.name = name;\r\n this.options = options || {}\r\n }\r\n _addPlaceMarker($container) {\r\n this.$placeMarker = $(\"
\").appendTo($container)\r\n }\r\n _addToContainer($element) {\r\n var {\r\n $placeMarker: $placeMarker,\r\n $container: $container\r\n } = this;\r\n $placeMarker ? $placeMarker.replaceWith($element) : $element.appendTo($container)\r\n }\r\n _attachEvents() {\r\n throw \"Not implemented\"\r\n }\r\n _create() {\r\n throw \"Not implemented\"\r\n }\r\n _isRendered() {\r\n return !!this.instance\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor,\r\n options: options\r\n } = this;\r\n return options.visible || !editor.option(\"readOnly\")\r\n }\r\n _isDisabled() {\r\n throw \"Not implemented\"\r\n }\r\n _shouldRender() {\r\n return this._isVisible() && !this._isRendered()\r\n }\r\n dispose() {\r\n var {\r\n instance: instance,\r\n $placeMarker: $placeMarker\r\n } = this;\r\n if (instance) {\r\n instance.dispose ? instance.dispose() : instance.remove();\r\n this.instance = null\r\n }\r\n $placeMarker && $placeMarker.remove()\r\n }\r\n render() {\r\n var $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container;\r\n this.$container = $container;\r\n if (this._isVisible()) {\r\n var {\r\n instance: instance,\r\n $element: $element\r\n } = this._create();\r\n this.instance = instance;\r\n this._attachEvents(instance, $element)\r\n } else {\r\n this._addPlaceMarker($container)\r\n }\r\n }\r\n update() {\r\n if (this._shouldRender()) {\r\n this.render()\r\n }\r\n return !!this.instance\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/localization/default_date_names.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n map\r\n} from \"../core/utils/iterator\";\r\nvar MONTHS = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\nvar DAYS = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\nvar PERIODS = [\"AM\", \"PM\"];\r\nvar QUARTERS = [\"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\nvar cutCaptions = (captions, format) => {\r\n var lengthByFormat = {\r\n abbreviated: 3,\r\n short: 2,\r\n narrow: 1\r\n };\r\n return map(captions, caption => caption.substr(0, lengthByFormat[format]))\r\n};\r\nexport default {\r\n getMonthNames: function(format) {\r\n return cutCaptions(MONTHS, format)\r\n },\r\n getDayNames: function(format) {\r\n return cutCaptions(DAYS, format)\r\n },\r\n getQuarterNames: function(format) {\r\n return QUARTERS\r\n },\r\n getPeriodNames: function(format) {\r\n return PERIODS\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/events/swipe.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n eventData\r\n} from \"./utils/index\";\r\nimport GestureEmitter from \"./gesture/emitter.gesture\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar SWIPE_START_EVENT = \"dxswipestart\";\r\nvar SWIPE_EVENT = \"dxswipe\";\r\nvar SWIPE_END_EVENT = \"dxswipeend\";\r\nvar HorizontalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return this.getElement().width()\r\n },\r\n getBounds: function() {\r\n return [this._maxLeftOffset, this._maxRightOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar VerticalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return this.getElement().height()\r\n },\r\n getBounds: function() {\r\n return [this._maxTopOffset, this._maxBottomOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar STRATEGIES = {\r\n horizontal: HorizontalStrategy,\r\n vertical: VerticalStrategy\r\n};\r\nvar SwipeEmitter = GestureEmitter.inherit({\r\n TICK_INTERVAL: 300,\r\n FAST_SWIPE_SPEED_LIMIT: 10,\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this.direction = \"horizontal\";\r\n this.elastic = true\r\n },\r\n _getStrategy: function() {\r\n return STRATEGIES[this.direction]\r\n },\r\n _defaultItemSizeFunc: function() {\r\n return this._getStrategy().defaultItemSizeFunc.call(this)\r\n },\r\n _itemSizeFunc: function() {\r\n return this.itemSizeFunc || this._defaultItemSizeFunc\r\n },\r\n _init: function(e) {\r\n this._tickData = eventData(e)\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n e = this._fireEvent(SWIPE_START_EVENT, e);\r\n if (!e.cancel) {\r\n this._maxLeftOffset = e.maxLeftOffset;\r\n this._maxRightOffset = e.maxRightOffset;\r\n this._maxTopOffset = e.maxTopOffset;\r\n this._maxBottomOffset = e.maxBottomOffset\r\n }\r\n },\r\n _move: function(e) {\r\n var strategy = this._getStrategy();\r\n var moveEventData = eventData(e);\r\n var offset = strategy.calcOffsetRatio.call(this, e);\r\n offset = this._fitOffset(offset, this.elastic);\r\n if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {\r\n this._tickData = moveEventData\r\n }\r\n this._fireEvent(SWIPE_EVENT, e, {\r\n offset: offset\r\n });\r\n e.preventDefault()\r\n },\r\n _end: function(e) {\r\n var strategy = this._getStrategy();\r\n var offsetRatio = strategy.calcOffsetRatio.call(this, e);\r\n var isFast = strategy.isFastSwipe.call(this, e);\r\n var startOffset = offsetRatio;\r\n var targetOffset = this._calcTargetOffset(offsetRatio, isFast);\r\n startOffset = this._fitOffset(startOffset, this.elastic);\r\n targetOffset = this._fitOffset(targetOffset, false);\r\n this._fireEvent(SWIPE_END_EVENT, e, {\r\n offset: startOffset,\r\n targetOffset: targetOffset\r\n })\r\n },\r\n _fitOffset: function(offset, elastic) {\r\n var strategy = this._getStrategy();\r\n var bounds = strategy.getBounds.call(this);\r\n if (offset < -bounds[0]) {\r\n return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]\r\n }\r\n if (offset > bounds[1]) {\r\n return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]\r\n }\r\n return offset\r\n },\r\n _calcTargetOffset: function(offsetRatio, isFast) {\r\n var result;\r\n if (isFast) {\r\n result = Math.ceil(Math.abs(offsetRatio));\r\n if (offsetRatio < 0) {\r\n result = -result\r\n }\r\n } else {\r\n result = Math.round(offsetRatio)\r\n }\r\n return result\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: SwipeEmitter,\r\n events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT]\r\n});\r\nexport {\r\n SWIPE_EVENT as swipe, SWIPE_START_EVENT as start, SWIPE_END_EVENT as end\r\n};\r\n","/**\r\n * DevExtreme (esm/events/pointer/base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n addNamespace,\r\n eventSource,\r\n fireEvent\r\n} from \"../utils/index\";\r\nvar POINTER_EVENTS_NAMESPACE = \"dxPointerEvents\";\r\nvar BaseStrategy = Class.inherit({\r\n ctor: function(eventName, originalEvents) {\r\n this._eventName = eventName;\r\n this._originalEvents = addNamespace(originalEvents, POINTER_EVENTS_NAMESPACE);\r\n this._handlerCount = 0;\r\n this.noBubble = this._isNoBubble()\r\n },\r\n _isNoBubble: function() {\r\n var eventName = this._eventName;\r\n return \"dxpointerenter\" === eventName || \"dxpointerleave\" === eventName\r\n },\r\n _handler: function(e) {\r\n var delegateTarget = this._getDelegateTarget(e);\r\n return this._fireEvent({\r\n type: this._eventName,\r\n pointerType: e.pointerType || eventSource(e),\r\n originalEvent: e,\r\n delegateTarget: delegateTarget,\r\n timeStamp: browser.mozilla ? (new Date).getTime() : e.timeStamp\r\n })\r\n },\r\n _getDelegateTarget: function(e) {\r\n var delegateTarget;\r\n if (this.noBubble) {\r\n delegateTarget = e.delegateTarget\r\n }\r\n return delegateTarget\r\n },\r\n _fireEvent: function(args) {\r\n return fireEvent(args)\r\n },\r\n _setSelector: function(handleObj) {\r\n this._selector = this.noBubble && handleObj ? handleObj.selector : null\r\n },\r\n _getSelector: function() {\r\n return this._selector\r\n },\r\n setup: function() {\r\n return true\r\n },\r\n add: function(element, handleObj) {\r\n if (this._handlerCount <= 0 || this.noBubble) {\r\n element = this.noBubble ? element : domAdapter.getDocument();\r\n this._setSelector(handleObj);\r\n var that = this;\r\n eventsEngine.on(element, this._originalEvents, this._getSelector(), (function(e) {\r\n that._handler(e)\r\n }))\r\n }\r\n if (!this.noBubble) {\r\n this._handlerCount++\r\n }\r\n },\r\n remove: function(handleObj) {\r\n this._setSelector(handleObj);\r\n if (!this.noBubble) {\r\n this._handlerCount--\r\n }\r\n },\r\n teardown: function(element) {\r\n if (this._handlerCount && !this.noBubble) {\r\n return\r\n }\r\n element = this.noBubble ? element : domAdapter.getDocument();\r\n if (this._originalEvents !== \".\" + POINTER_EVENTS_NAMESPACE) {\r\n eventsEngine.off(element, this._originalEvents, this._getSelector())\r\n }\r\n },\r\n dispose: function(element) {\r\n element = this.noBubble ? element : domAdapter.getDocument();\r\n eventsEngine.off(element, this._originalEvents)\r\n }\r\n});\r\nexport default BaseStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/touch.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport BaseStrategy from \"./base\";\r\nvar eventMap = {\r\n dxpointerdown: \"touchstart\",\r\n dxpointermove: \"touchmove\",\r\n dxpointerup: \"touchend\",\r\n dxpointercancel: \"touchcancel\",\r\n dxpointerover: \"\",\r\n dxpointerout: \"\",\r\n dxpointerenter: \"\",\r\n dxpointerleave: \"\"\r\n};\r\nvar normalizeTouchEvent = function(e) {\r\n var pointers = [];\r\n each(e.touches, (function(_, touch) {\r\n pointers.push(extend({\r\n pointerId: touch.identifier\r\n }, touch))\r\n }));\r\n return {\r\n pointers: pointers,\r\n pointerId: e.changedTouches[0].identifier\r\n }\r\n};\r\nvar skipTouchWithSameIdentifier = function(pointerEvent) {\r\n return \"ios\" === devices.real().platform && (\"dxpointerdown\" === pointerEvent || \"dxpointerup\" === pointerEvent)\r\n};\r\nvar TouchStrategy = BaseStrategy.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerId = 0\r\n },\r\n _handler: function(e) {\r\n if (skipTouchWithSameIdentifier(this._eventName)) {\r\n var touch = e.changedTouches[0];\r\n if (this._pointerId === touch.identifier && 0 !== this._pointerId) {\r\n return\r\n }\r\n this._pointerId = touch.identifier\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _fireEvent: function(args) {\r\n return this.callBase(extend(normalizeTouchEvent(args.originalEvent), args))\r\n }\r\n});\r\nTouchStrategy.map = eventMap;\r\nTouchStrategy.normalize = normalizeTouchEvent;\r\nexport default TouchStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/mspointer.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport BaseStrategy from \"./base\";\r\nimport Observer from \"./observer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar eventMap = {\r\n dxpointerdown: \"pointerdown\",\r\n dxpointermove: \"pointermove\",\r\n dxpointerup: \"pointerup\",\r\n dxpointercancel: \"pointercancel\",\r\n dxpointerover: \"pointerover\",\r\n dxpointerout: \"pointerout\",\r\n dxpointerenter: \"pointerenter\",\r\n dxpointerleave: \"pointerleave\"\r\n};\r\nvar observer;\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n if (activated) {\r\n return\r\n }\r\n observer = new Observer(eventMap, (function(a, b) {\r\n return a.pointerId === b.pointerId\r\n }), (function(e) {\r\n if (e.isPrimary) {\r\n observer.reset()\r\n }\r\n }));\r\n activated = true\r\n};\r\nvar MsPointerStrategy = BaseStrategy.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n activateStrategy()\r\n },\r\n _fireEvent: function(args) {\r\n return this.callBase(extend({\r\n pointers: observer.pointers(),\r\n pointerId: args.originalEvent.pointerId\r\n }, args))\r\n }\r\n});\r\nMsPointerStrategy.map = eventMap;\r\nMsPointerStrategy.resetObserver = function() {\r\n observer.reset()\r\n};\r\nexport default MsPointerStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/observer.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nvar addEventsListener = function(events, handler) {\r\n readyCallbacks.add((function() {\r\n events.split(\" \").forEach((function(event) {\r\n domAdapter.listen(domAdapter.getDocument(), event, handler, true)\r\n }))\r\n }))\r\n};\r\nvar Observer = function(eventMap, pointerEquals, onPointerAdding) {\r\n onPointerAdding = onPointerAdding || function() {};\r\n var pointers = [];\r\n var getPointerIndex = function(e) {\r\n var index = -1;\r\n each(pointers, (function(i, pointer) {\r\n if (!pointerEquals(e, pointer)) {\r\n return true\r\n }\r\n index = i;\r\n return false\r\n }));\r\n return index\r\n };\r\n var removePointer = function(e) {\r\n var index = getPointerIndex(e);\r\n if (index > -1) {\r\n pointers.splice(index, 1)\r\n }\r\n };\r\n addEventsListener(eventMap.dxpointerdown, (function(e) {\r\n if (-1 === getPointerIndex(e)) {\r\n onPointerAdding(e);\r\n pointers.push(e)\r\n }\r\n }));\r\n addEventsListener(eventMap.dxpointermove, (function(e) {\r\n pointers[getPointerIndex(e)] = e\r\n }));\r\n addEventsListener(eventMap.dxpointerup, removePointer);\r\n addEventsListener(eventMap.dxpointercancel, removePointer);\r\n this.pointers = function() {\r\n return pointers\r\n };\r\n this.reset = function() {\r\n pointers = []\r\n }\r\n};\r\nexport default Observer;\r\n","/**\r\n * DevExtreme (esm/events/pointer/mouse.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport BaseStrategy from \"./base\";\r\nimport Observer from \"./observer\";\r\nvar eventMap = {\r\n dxpointerdown: \"mousedown\",\r\n dxpointermove: \"mousemove\",\r\n dxpointerup: \"mouseup\",\r\n dxpointercancel: \"\",\r\n dxpointerover: \"mouseover\",\r\n dxpointerout: \"mouseout\",\r\n dxpointerenter: \"mouseenter\",\r\n dxpointerleave: \"mouseleave\"\r\n};\r\nvar normalizeMouseEvent = function(e) {\r\n e.pointerId = 1;\r\n return {\r\n pointers: observer.pointers(),\r\n pointerId: 1\r\n }\r\n};\r\nvar observer;\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n if (activated) {\r\n return\r\n }\r\n observer = new Observer(eventMap, (function() {\r\n return true\r\n }));\r\n activated = true\r\n};\r\nvar MouseStrategy = BaseStrategy.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n activateStrategy()\r\n },\r\n _fireEvent: function(args) {\r\n return this.callBase(extend(normalizeMouseEvent(args.originalEvent), args))\r\n }\r\n});\r\nMouseStrategy.map = eventMap;\r\nMouseStrategy.normalize = normalizeMouseEvent;\r\nMouseStrategy.activate = activateStrategy;\r\nMouseStrategy.resetObserver = function() {\r\n observer.reset()\r\n};\r\nexport default MouseStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/mouse_and_touch.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport BaseStrategy from \"./base\";\r\nimport MouseStrategy from \"./mouse\";\r\nimport TouchStrategy from \"./touch\";\r\nimport {\r\n isMouseEvent\r\n} from \"../utils/index\";\r\nvar eventMap = {\r\n dxpointerdown: \"touchstart mousedown\",\r\n dxpointermove: \"touchmove mousemove\",\r\n dxpointerup: \"touchend mouseup\",\r\n dxpointercancel: \"touchcancel\",\r\n dxpointerover: \"mouseover\",\r\n dxpointerout: \"mouseout\",\r\n dxpointerenter: \"mouseenter\",\r\n dxpointerleave: \"mouseleave\"\r\n};\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n if (activated) {\r\n return\r\n }\r\n MouseStrategy.activate();\r\n activated = true\r\n};\r\nvar MouseAndTouchStrategy = BaseStrategy.inherit({\r\n EVENT_LOCK_TIMEOUT: 100,\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n activateStrategy()\r\n },\r\n _handler: function(e) {\r\n var isMouse = isMouseEvent(e);\r\n if (!isMouse) {\r\n this._skipNextEvents = true\r\n }\r\n if (isMouse && this._mouseLocked) {\r\n return\r\n }\r\n if (isMouse && this._skipNextEvents) {\r\n this._skipNextEvents = false;\r\n this._mouseLocked = true;\r\n clearTimeout(this._unlockMouseTimer);\r\n var that = this;\r\n this._unlockMouseTimer = setTimeout((function() {\r\n that._mouseLocked = false\r\n }), this.EVENT_LOCK_TIMEOUT);\r\n return\r\n }\r\n return this.callBase(e)\r\n },\r\n _fireEvent: function(args) {\r\n var normalizer = isMouseEvent(args.originalEvent) ? MouseStrategy.normalize : TouchStrategy.normalize;\r\n return this.callBase(extend(normalizer(args.originalEvent), args))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._skipNextEvents = false;\r\n this._mouseLocked = false;\r\n clearTimeout(this._unlockMouseTimer)\r\n }\r\n});\r\nMouseAndTouchStrategy.map = eventMap;\r\nMouseAndTouchStrategy.resetObserver = MouseStrategy.resetObserver;\r\nexport default MouseAndTouchStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport * as support from \"../core/utils/support\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport browser from \"../core/utils/browser\";\r\nimport devices from \"../core/devices\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport TouchStrategy from \"./pointer/touch\";\r\nimport MsPointerStrategy from \"./pointer/mspointer\";\r\nimport MouseStrategy from \"./pointer/mouse\";\r\nimport MouseAndTouchStrategy from \"./pointer/mouse_and_touch\";\r\nvar getStrategy = (support, device, browser) => {\r\n if (support.pointerEvents && browser.msie) {\r\n return MsPointerStrategy\r\n }\r\n var {\r\n tablet: tablet,\r\n phone: phone\r\n } = device;\r\n if (support.touch && !(tablet || phone)) {\r\n return MouseAndTouchStrategy\r\n }\r\n if (support.touch) {\r\n return TouchStrategy\r\n }\r\n return MouseStrategy\r\n};\r\nvar EventStrategy = getStrategy(support, devices.real(), browser);\r\neach(EventStrategy.map, (pointerEvent, originalEvents) => {\r\n registerEvent(pointerEvent, new EventStrategy(pointerEvent, originalEvents))\r\n});\r\nvar pointer = {\r\n down: \"dxpointerdown\",\r\n up: \"dxpointerup\",\r\n move: \"dxpointermove\",\r\n cancel: \"dxpointercancel\",\r\n enter: \"dxpointerenter\",\r\n leave: \"dxpointerleave\",\r\n over: \"dxpointerover\",\r\n out: \"dxpointerout\"\r\n};\r\nexport default pointer;\r\n","/**\r\n * DevExtreme (esm/core/utils/browser.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n getNavigator\r\n} from \"./window\";\r\nvar navigator = getNavigator();\r\nvar webkitRegExp = /(webkit)[ /]([\\w.]+)/;\r\nvar ieRegExp = /(msie) (\\d{1,2}\\.\\d)/;\r\nvar ie11RegExp = /(trident).*rv:(\\d{1,2}\\.\\d)/;\r\nvar msEdge = /(edge)\\/((\\d+)?[\\w.]+)/;\r\nvar mozillaRegExp = /(mozilla)(?:.*? rv:([\\w.]+))/;\r\nvar browserFromUA = function(ua) {\r\n ua = ua.toLowerCase();\r\n var result = {};\r\n var matches = ieRegExp.exec(ua) || ie11RegExp.exec(ua) || msEdge.exec(ua) || ua.indexOf(\"compatible\") < 0 && mozillaRegExp.exec(ua) || webkitRegExp.exec(ua) || [];\r\n var browserName = matches[1];\r\n var browserVersion = matches[2];\r\n if (\"webkit\" === browserName) {\r\n result.webkit = true;\r\n if (ua.indexOf(\"chrome\") >= 0 || ua.indexOf(\"crios\") >= 0) {\r\n browserName = \"chrome\";\r\n browserVersion = /(?:chrome|crios)\\/(\\d+\\.\\d+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n } else if (ua.indexOf(\"fxios\") >= 0) {\r\n browserName = \"mozilla\";\r\n browserVersion = /fxios\\/(\\d+\\.\\d+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n } else if (ua.indexOf(\"safari\") >= 0 && /version|phantomjs/.test(ua)) {\r\n browserName = \"safari\";\r\n browserVersion = /(?:version|phantomjs)\\/([0-9.]+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n } else {\r\n browserName = \"unknown\";\r\n browserVersion = /applewebkit\\/([0-9.]+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n }\r\n }\r\n if (\"trident\" === browserName || \"edge\" === browserName) {\r\n browserName = \"msie\"\r\n }\r\n if (browserName) {\r\n result[browserName] = true;\r\n result.version = browserVersion\r\n }\r\n return result\r\n};\r\nexport default extend({\r\n _fromUA: browserFromUA\r\n}, browserFromUA(navigator.userAgent));\r\n","/**\r\n * DevExtreme (esm/core/utils/array.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isDefined\r\n} from \"./type\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n orderEach\r\n} from \"./object\";\r\nimport config from \"../config\";\r\nexport var isEmpty = function(entity) {\r\n return Array.isArray(entity) && !entity.length\r\n};\r\nexport var wrapToArray = function(entity) {\r\n return Array.isArray(entity) ? entity : [entity]\r\n};\r\nexport var inArray = function(value, object) {\r\n if (!object) {\r\n return -1\r\n }\r\n var array = Array.isArray(object) ? object : object.toArray();\r\n return array.indexOf(value)\r\n};\r\nexport var intersection = function(a, b) {\r\n if (!Array.isArray(a) || 0 === a.length || !Array.isArray(b) || 0 === b.length) {\r\n return []\r\n }\r\n var result = [];\r\n each(a, (function(_, value) {\r\n var index = inArray(value, b);\r\n if (-1 !== index) {\r\n result.push(value)\r\n }\r\n }));\r\n return result\r\n};\r\nexport var uniqueValues = function(data) {\r\n return data.filter((function(item, position) {\r\n return data.indexOf(item) === position\r\n }))\r\n};\r\nexport var removeDuplicates = function(from, what) {\r\n if (!Array.isArray(from) || 0 === from.length) {\r\n return []\r\n }\r\n if (!Array.isArray(what) || 0 === what.length) {\r\n return from.slice()\r\n }\r\n var result = [];\r\n each(from, (function(_, value) {\r\n var index = inArray(value, what);\r\n if (-1 === index) {\r\n result.push(value)\r\n }\r\n }));\r\n return result\r\n};\r\nexport var normalizeIndexes = function(items, indexParameterName, currentItem, needIndexCallback) {\r\n var indexedItems = {};\r\n var parameterIndex = 0;\r\n var useLegacyVisibleIndex = config().useLegacyVisibleIndex;\r\n each(items, (function(index, item) {\r\n index = item[indexParameterName];\r\n if (index >= 0) {\r\n indexedItems[index] = indexedItems[index] || [];\r\n if (item === currentItem) {\r\n indexedItems[index].unshift(item)\r\n } else {\r\n indexedItems[index].push(item)\r\n }\r\n } else {\r\n item[indexParameterName] = void 0\r\n }\r\n }));\r\n if (!useLegacyVisibleIndex) {\r\n each(items, (function() {\r\n if (!isDefined(this[indexParameterName]) && (!needIndexCallback || needIndexCallback(this))) {\r\n while (indexedItems[parameterIndex]) {\r\n parameterIndex++\r\n }\r\n indexedItems[parameterIndex] = [this];\r\n parameterIndex++\r\n }\r\n }))\r\n }\r\n parameterIndex = 0;\r\n orderEach(indexedItems, (function(index, items) {\r\n each(items, (function() {\r\n if (index >= 0) {\r\n this[indexParameterName] = parameterIndex++\r\n }\r\n }))\r\n }));\r\n if (useLegacyVisibleIndex) {\r\n each(items, (function() {\r\n if (!isDefined(this[indexParameterName]) && (!needIndexCallback || needIndexCallback(this))) {\r\n this[indexParameterName] = parameterIndex++\r\n }\r\n }))\r\n }\r\n return parameterIndex\r\n};\r\nexport var merge = function(array1, array2) {\r\n for (var i = 0; i < array2.length; i++) {\r\n array1[array1.length] = array2[i]\r\n }\r\n return array1\r\n};\r\nexport var find = function(array, condition) {\r\n for (var i = 0; i < array.length; i++) {\r\n if (condition(array[i])) {\r\n return array[i]\r\n }\r\n }\r\n};\r\nexport var groupBy = (array, cb) => array.reduce((result, item) => _extends({}, result, {\r\n [cb(item)]: [...result[cb(item)] || [], item]\r\n}), {});\r\n","/**\r\n * DevExtreme (esm/localization/currency.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nexport default {\r\n _formatNumberCore: function(value, format, formatConfig) {\r\n if (\"currency\" === format) {\r\n formatConfig.precision = formatConfig.precision || 0;\r\n var result = this.format(value, extend({}, formatConfig, {\r\n type: \"fixedpoint\"\r\n }));\r\n var currencyPart = this.getCurrencySymbol().symbol.replace(/\\$/g, \"$$$$\");\r\n result = result.replace(/^(\\D*)(\\d.*)/, \"$1\" + currencyPart + \"$2\");\r\n return result\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getCurrencySymbol: function() {\r\n return {\r\n symbol: \"$\"\r\n }\r\n },\r\n getOpenXmlCurrencyFormat: function() {\r\n return \"$#,##0{0}_);\\\\($#,##0{0}\\\\)\"\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/emitter.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isDxMouseWheelEvent,\r\n hasTouches,\r\n fireEvent\r\n} from \"../utils/index\";\r\nvar Emitter = Class.inherit({\r\n ctor: function(element) {\r\n this._$element = $(element);\r\n this._cancelCallback = Callbacks();\r\n this._acceptCallback = Callbacks()\r\n },\r\n getElement: function() {\r\n return this._$element\r\n },\r\n validate: function(e) {\r\n return !isDxMouseWheelEvent(e)\r\n },\r\n validatePointers: function(e) {\r\n return 1 === hasTouches(e)\r\n },\r\n allowInterruptionByMouseWheel: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n extend(this, data)\r\n },\r\n addCancelCallback: function(callback) {\r\n this._cancelCallback.add(callback)\r\n },\r\n removeCancelCallback: function() {\r\n this._cancelCallback.empty()\r\n },\r\n _cancel: function(e) {\r\n this._cancelCallback.fire(this, e)\r\n },\r\n addAcceptCallback: function(callback) {\r\n this._acceptCallback.add(callback)\r\n },\r\n removeAcceptCallback: function() {\r\n this._acceptCallback.empty()\r\n },\r\n _accept: function(e) {\r\n this._acceptCallback.fire(this, e)\r\n },\r\n _requestAccept: function(e) {\r\n this._acceptRequestEvent = e\r\n },\r\n _forgetAccept: function() {\r\n this._accept(this._acceptRequestEvent);\r\n this._acceptRequestEvent = null\r\n },\r\n start: noop,\r\n move: noop,\r\n end: noop,\r\n cancel: noop,\r\n reset: function() {\r\n if (this._acceptRequestEvent) {\r\n this._accept(this._acceptRequestEvent)\r\n }\r\n },\r\n _fireEvent: function(eventName, e, params) {\r\n var eventData = extend({\r\n type: eventName,\r\n originalEvent: e,\r\n target: this._getEmitterTarget(e),\r\n delegateTarget: this.getElement().get(0)\r\n }, params);\r\n e = fireEvent(eventData);\r\n if (e.cancel) {\r\n this._cancel(e)\r\n }\r\n return e\r\n },\r\n _getEmitterTarget: function(e) {\r\n return (this.delegateSelector ? $(e.target).closest(this.delegateSelector) : this.getElement()).get(0)\r\n },\r\n dispose: noop\r\n});\r\nexport default Emitter;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.native.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDxMouseWheelEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport devices from \"../../core/devices\";\r\nimport Class from \"../../core/class\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nvar SCROLLABLE_NATIVE = \"dxNativeScrollable\";\r\nvar SCROLLABLE_NATIVE_CLASS = \"dx-scrollable-native\";\r\nvar SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar HIDE_SCROLLBAR_TIMEOUT = 500;\r\nvar NativeStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = scrollable._$container;\r\n this._$content = scrollable._$content;\r\n this._direction = scrollable.option(\"direction\");\r\n this._useSimulatedScrollbar = scrollable.option(\"useSimulatedScrollbar\");\r\n this._showScrollbar = scrollable.option(\"showScrollbar\");\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getScrollOffset = scrollable._getScrollOffset.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)\r\n },\r\n render: function() {\r\n var device = devices.real();\r\n var deviceType = device.platform;\r\n this._$element.addClass(SCROLLABLE_NATIVE_CLASS).addClass(SCROLLABLE_NATIVE_CLASS + \"-\" + deviceType).toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this._showScrollbar);\r\n if (this._showScrollbar && this._useSimulatedScrollbar) {\r\n this._renderScrollbars()\r\n }\r\n },\r\n updateBounds: noop,\r\n _renderScrollbars: function() {\r\n this._scrollbars = {};\r\n this._hideScrollbarTimeout = 0;\r\n this._$element.addClass(SCROLLABLE_SCROLLBAR_SIMULATED);\r\n this._renderScrollbar(VERTICAL);\r\n this._renderScrollbar(HORIZONTAL)\r\n },\r\n _renderScrollbar: function(direction) {\r\n if (!this._isDirection(direction)) {\r\n return\r\n }\r\n this._scrollbars[direction] = new Scrollbar($(\"
\").appendTo(this._$element), {\r\n direction: direction,\r\n expandable: this._component.option(\"scrollByThumb\")\r\n })\r\n },\r\n handleInit: noop,\r\n handleStart: noop,\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._allowedDirection()) {\r\n e.originalEvent.isScrollingEvent = true\r\n }\r\n },\r\n handleEnd: noop,\r\n handleCancel: noop,\r\n handleStop: noop,\r\n _eachScrollbar: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollbars || {}, (function(direction, scrollbar) {\r\n callback(scrollbar, direction)\r\n }))\r\n },\r\n createActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._updateAction = this._createActionByOption(\"onUpdated\")\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n left: left,\r\n top: top\r\n } = this.location();\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._getScrollOffset(),\r\n reachedLeft: this._isReachedLeft(left),\r\n reachedRight: this._isReachedRight(left),\r\n reachedTop: this._isDirection(VERTICAL) ? top >= 0 : void 0,\r\n reachedBottom: this._isDirection(VERTICAL) ? Math.abs(top) >= this._getMaxOffset().top : void 0\r\n }\r\n },\r\n _isReachedLeft: function() {\r\n return this._isDirection(HORIZONTAL) ? this.location().left >= 0 : void 0\r\n },\r\n _isReachedRight: function() {\r\n return this._isDirection(HORIZONTAL) ? Math.abs(this.location().left) >= this._getMaxOffset().left : void 0\r\n },\r\n handleScroll: function(e) {\r\n this._component._updateRtlConfig();\r\n this._eventForUserAction = e;\r\n this._moveScrollbars();\r\n this._scrollAction(this._createActionArgs())\r\n },\r\n _moveScrollbars: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this._getScrollOffset();\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.moveTo({\r\n top: -top,\r\n left: -left\r\n });\r\n scrollbar.option(\"visible\", true)\r\n }));\r\n this._hideScrollbars()\r\n },\r\n _hideScrollbars: function() {\r\n clearTimeout(this._hideScrollbarTimeout);\r\n this._hideScrollbarTimeout = setTimeout(function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.option(\"visible\", false)\r\n }))\r\n }.bind(this), HIDE_SCROLLBAR_TIMEOUT)\r\n },\r\n location: function() {\r\n return {\r\n left: -this._$container.scrollLeft(),\r\n top: -this._$container.scrollTop()\r\n }\r\n },\r\n disabledChanged: noop,\r\n update: function() {\r\n this._update();\r\n this._updateAction(this._createActionArgs())\r\n },\r\n _update: function() {\r\n this._updateDimensions();\r\n this._updateScrollbars()\r\n },\r\n _updateDimensions: function() {\r\n this._containerSize = {\r\n height: this._$container.height(),\r\n width: this._$container.width()\r\n };\r\n this._componentContentSize = {\r\n height: this._component.$content().height(),\r\n width: this._component.$content().width()\r\n };\r\n this._contentSize = {\r\n height: this._$content.height(),\r\n width: this._$content.width()\r\n }\r\n },\r\n _updateScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar, direction) {\r\n var dimension = direction === VERTICAL ? \"height\" : \"width\";\r\n scrollbar.option({\r\n containerSize: this._containerSize[dimension],\r\n contentSize: this._componentContentSize[dimension]\r\n });\r\n scrollbar.update()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n return {\r\n vertical: this._isDirection(VERTICAL) && this._contentSize.height > this._containerSize.height,\r\n horizontal: this._isDirection(HORIZONTAL) && this._contentSize.width > this._containerSize.width\r\n }\r\n },\r\n dispose: function() {\r\n var className = this._$element.get(0).className;\r\n var scrollableNativeRegexp = new RegExp(SCROLLABLE_NATIVE_CLASS + \"\\\\S*\", \"g\");\r\n if (scrollableNativeRegexp.test(className)) {\r\n this._$element.removeClass(className.match(scrollableNativeRegexp).join(\" \"))\r\n }\r\n eventsEngine.off(this._$element, \".\" + SCROLLABLE_NATIVE);\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE_NATIVE);\r\n this._removeScrollbars();\r\n clearTimeout(this._hideScrollbarTimeout)\r\n },\r\n _removeScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.$element().remove()\r\n }))\r\n },\r\n scrollBy: function(distance) {\r\n var location = this.location();\r\n this._$container.scrollTop(Math.round(-location.top - distance.top));\r\n this._$container.scrollLeft(Math.round(-location.left - distance.left))\r\n },\r\n validate: function(e) {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (isDxMouseWheelEvent(e) && this._isScrolledInMaxDirection(e)) {\r\n return false\r\n }\r\n return !!this._allowedDirection()\r\n },\r\n _isScrolledInMaxDirection(e) {\r\n var container = this._$container.get(0);\r\n var result;\r\n if (e.delta > 0) {\r\n result = e.shiftKey ? !container.scrollLeft : !container.scrollTop\r\n } else if (e.shiftKey) {\r\n result = container.scrollLeft >= this._getMaxOffset().left\r\n } else {\r\n result = container.scrollTop >= this._getMaxOffset().top\r\n }\r\n return result\r\n },\r\n getDirection: function() {\r\n return this._allowedDirection()\r\n }\r\n});\r\nexport default NativeStrategy;\r\n","/**\r\n * DevExtreme (esm/core/utils/string.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction,\r\n isString\r\n} from \"./type\";\r\nexport var encodeHtml = function() {\r\n var encodeRegExp = [new RegExp(\"&\", \"g\"), new RegExp('\"', \"g\"), new RegExp(\"'\", \"g\"), new RegExp(\"<\", \"g\"), new RegExp(\">\", \"g\")];\r\n return function(str) {\r\n return String(str).replace(encodeRegExp[0], \"&\").replace(encodeRegExp[1], \""\").replace(encodeRegExp[2], \"'\").replace(encodeRegExp[3], \"<\").replace(encodeRegExp[4], \">\")\r\n }\r\n}();\r\nvar splitQuad = function(raw) {\r\n switch (typeof raw) {\r\n case \"string\":\r\n return raw.split(/\\s+/, 4);\r\n case \"object\":\r\n return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];\r\n case \"number\":\r\n return [raw];\r\n default:\r\n return raw\r\n }\r\n};\r\nexport var quadToObject = function(raw) {\r\n var quad = splitQuad(raw);\r\n var left = parseInt(quad && quad[0], 10);\r\n var top = parseInt(quad && quad[1], 10);\r\n var right = parseInt(quad && quad[2], 10);\r\n var bottom = parseInt(quad && quad[3], 10);\r\n if (!isFinite(left)) {\r\n left = 0\r\n }\r\n if (!isFinite(top)) {\r\n top = left\r\n }\r\n if (!isFinite(right)) {\r\n right = left\r\n }\r\n if (!isFinite(bottom)) {\r\n bottom = top\r\n }\r\n return {\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n left: left\r\n }\r\n};\r\nexport function format(template) {\r\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n values[_key - 1] = arguments[_key]\r\n }\r\n if (isFunction(template)) {\r\n return template(...values)\r\n }\r\n values.forEach((value, index) => {\r\n if (isString(value)) {\r\n value = value.replace(/\\$/g, \"$$$$\")\r\n }\r\n var placeholderReg = new RegExp(\"\\\\{\" + index + \"\\\\}\", \"gm\");\r\n template = template.replace(placeholderReg, value)\r\n });\r\n return template\r\n}\r\nexport var replaceAll = function(text, searchToken, replacementToken) {\r\n return text.replace(new RegExp(\"(\" + (str = searchToken, (str + \"\").replace(/([+*?.[^\\]$(){}><|=!:])/g, \"\\\\$1\")) + \")\", \"gi\"), replacementToken);\r\n var str\r\n};\r\nexport var isEmpty = function() {\r\n var SPACE_REGEXP = /\\s/g;\r\n return function(text) {\r\n return !text || !text.replace(SPACE_REGEXP, \"\")\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/core/component_registrator_callbacks.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport MemorizedCallbacks from \"./memorized_callbacks\";\r\nexport default new MemorizedCallbacks;\r\n","/**\r\n * DevExtreme (esm/core/utils/comparator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nimport {\r\n toComparable\r\n} from \"./data\";\r\nimport {\r\n isRenderer\r\n} from \"./type\";\r\nvar hasNegation = function(oldValue, newValue) {\r\n return 1 / oldValue === 1 / newValue\r\n};\r\nexport var equals = function(oldValue, newValue) {\r\n oldValue = toComparable(oldValue, true);\r\n newValue = toComparable(newValue, true);\r\n if (oldValue && newValue && isRenderer(oldValue) && isRenderer(newValue)) {\r\n return newValue.is(oldValue)\r\n }\r\n var oldValueIsNaN = oldValue !== oldValue;\r\n var newValueIsNaN = newValue !== newValue;\r\n if (oldValueIsNaN && newValueIsNaN) {\r\n return true\r\n }\r\n if (0 === oldValue && 0 === newValue) {\r\n return hasNegation(oldValue, newValue)\r\n }\r\n if (null === oldValue || \"object\" !== typeof oldValue || domAdapter.isElementNode(oldValue)) {\r\n return oldValue === newValue\r\n }\r\n return false\r\n};\r\n","/**\r\n * DevExtreme (esm/core/options/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../devices\";\r\nimport {\r\n isEmptyObject,\r\n isFunction\r\n} from \"../utils/type\";\r\nimport {\r\n findBestMatches\r\n} from \"../utils/common\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nimport {\r\n compileGetter\r\n} from \"../utils/data\";\r\nvar cachedGetters = {};\r\nexport var convertRulesToOptions = rules => {\r\n var currentDevice = devices.current();\r\n return rules.reduce((options, _ref) => {\r\n var {\r\n device: device,\r\n options: ruleOptions\r\n } = _ref;\r\n var deviceFilter = device || {};\r\n var match = isFunction(deviceFilter) ? deviceFilter(currentDevice) : deviceMatch(currentDevice, deviceFilter);\r\n if (match) {\r\n extend(true, options, ruleOptions)\r\n }\r\n return options\r\n }, {})\r\n};\r\nexport var normalizeOptions = (options, value) => \"string\" !== typeof options ? options : {\r\n [options]: value\r\n};\r\nexport var deviceMatch = (device, filter) => isEmptyObject(filter) || findBestMatches(device, [filter]).length > 0;\r\nexport var getFieldName = fullName => fullName.substr(fullName.lastIndexOf(\".\") + 1);\r\nexport var getParentName = fullName => fullName.substr(0, fullName.lastIndexOf(\".\"));\r\nexport var getNestedOptionValue = function(optionsObject, name) {\r\n cachedGetters[name] = cachedGetters[name] || compileGetter(name);\r\n return cachedGetters[name](optionsObject, {\r\n functionsAsIs: true\r\n })\r\n};\r\nexport var createDefaultOptionRules = function() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n return options\r\n};\r\n","/**\r\n * DevExtreme (esm/core/options/option_manager.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n compileGetter,\r\n compileSetter\r\n} from \"../utils/data\";\r\nimport {\r\n noop\r\n} from \"../utils/common\";\r\nimport {\r\n equals\r\n} from \"../utils/comparator\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../utils/type\";\r\nimport {\r\n normalizeOptions\r\n} from \"./utils\";\r\nvar cachedGetters = {};\r\nvar cachedSetters = {};\r\nexport class OptionManager {\r\n constructor(options, optionsByReference) {\r\n this._options = options;\r\n this._optionsByReference = optionsByReference;\r\n this._changingCallback;\r\n this._changedCallback;\r\n this._namePreparedCallbacks\r\n }\r\n _setByReference(options, rulesOptions) {\r\n extend(true, options, rulesOptions);\r\n for (var fieldName in this._optionsByReference) {\r\n if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) {\r\n options[fieldName] = rulesOptions[fieldName]\r\n }\r\n }\r\n }\r\n _setPreparedValue(name, value, merge, silent) {\r\n var previousValue = this.get(this._options, name, false);\r\n if (!equals(previousValue, value)) {\r\n var path = name.split(/[.[]/);\r\n !silent && this._changingCallback(name, previousValue, value);\r\n cachedSetters[name] = cachedSetters[name] || compileSetter(name);\r\n cachedSetters[name](this._options, value, {\r\n functionsAsIs: true,\r\n merge: isDefined(merge) ? merge : !this._optionsByReference[name],\r\n unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]]\r\n });\r\n !silent && this._changedCallback(name, value, previousValue)\r\n }\r\n }\r\n _prepareRelevantNames(options, name, value, silent) {\r\n if (isPlainObject(value)) {\r\n for (var valueName in value) {\r\n this._prepareRelevantNames(options, \"\".concat(name, \".\").concat(valueName), value[valueName])\r\n }\r\n }\r\n this._namePreparedCallbacks(options, name, value, silent)\r\n }\r\n get() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options;\r\n var name = arguments.length > 1 ? arguments[1] : void 0;\r\n var unwrapObservables = arguments.length > 2 ? arguments[2] : void 0;\r\n cachedGetters[name] = cachedGetters[name] || compileGetter(name);\r\n return cachedGetters[name](options, {\r\n functionsAsIs: true,\r\n unwrapObservables: unwrapObservables\r\n })\r\n }\r\n set(options, value, merge, silent) {\r\n options = normalizeOptions(options, value);\r\n for (var name in options) {\r\n this._prepareRelevantNames(options, name, options[name], silent)\r\n }\r\n for (var _name in options) {\r\n this._setPreparedValue(_name, options[_name], merge, silent)\r\n }\r\n }\r\n onRelevantNamesPrepared(callBack) {\r\n this._namePreparedCallbacks = callBack\r\n }\r\n onChanging(callBack) {\r\n this._changingCallback = callBack\r\n }\r\n onChanged(callBack) {\r\n this._changedCallback = callBack\r\n }\r\n dispose() {\r\n this._changingCallback = noop;\r\n this._changedCallback = noop\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/options/index.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction,\r\n isObject,\r\n type\r\n} from \"../utils/type\";\r\nimport {\r\n equalByValue,\r\n noop\r\n} from \"../utils/common\";\r\nimport {\r\n OptionManager\r\n} from \"./option_manager\";\r\nimport {\r\n clone\r\n} from \"../utils/object\";\r\nimport {\r\n getFieldName,\r\n getParentName,\r\n convertRulesToOptions,\r\n getNestedOptionValue\r\n} from \"./utils\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nexport class Options {\r\n constructor(options, defaultOptions, optionsByReference, deprecatedOptions) {\r\n this._deprecatedCallback;\r\n this._startChangeCallback;\r\n this._endChangeCallback;\r\n this._default = defaultOptions;\r\n this._deprecated = deprecatedOptions;\r\n this._deprecatedNames = [];\r\n this._initDeprecatedNames();\r\n this._optionManager = new OptionManager(options, optionsByReference);\r\n this._optionManager.onRelevantNamesPrepared((options, name, value, silent) => this._setRelevantNames(options, name, value, silent));\r\n this._cachedOptions = {};\r\n this._rules = []\r\n }\r\n set _initial(value) {\r\n this._initialOptions = value\r\n }\r\n get _initial() {\r\n if (!this._initialOptions) {\r\n var rulesOptions = this._getByRules(this.silent(\"defaultOptionsRules\"));\r\n this._initialOptions = this._default;\r\n this._optionManager._setByReference(this._initialOptions, rulesOptions)\r\n }\r\n return this._initialOptions\r\n }\r\n _initDeprecatedNames() {\r\n for (var optionName in this._deprecated) {\r\n this._deprecatedNames.push(optionName)\r\n }\r\n }\r\n _getByRules(rules) {\r\n rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules;\r\n return convertRulesToOptions(rules)\r\n }\r\n _notifyDeprecated(option) {\r\n var info = this._deprecated[option];\r\n if (info) {\r\n this._deprecatedCallback(option, info)\r\n }\r\n }\r\n _setRelevantNames(options, name, value, silent) {\r\n if (name) {\r\n var normalizedName = this._normalizeName(name, silent);\r\n if (normalizedName && normalizedName !== name) {\r\n this._setField(options, normalizedName, value);\r\n this._clearField(options, name)\r\n }\r\n }\r\n }\r\n _setField(options, fullName, value) {\r\n var fieldName = \"\";\r\n var fieldObject = null;\r\n do {\r\n fieldName = fieldName ? \".\".concat(fieldName) : \"\";\r\n fieldName = getFieldName(fullName) + fieldName;\r\n fullName = getParentName(fullName);\r\n fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options\r\n } while (!fieldObject);\r\n fieldObject[fieldName] = value\r\n }\r\n _clearField(options, name) {\r\n delete options[name];\r\n var previousFieldName = getParentName(name);\r\n var fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options;\r\n if (fieldObject) {\r\n delete fieldObject[getFieldName(name)]\r\n }\r\n }\r\n _normalizeName(name, silent) {\r\n if (this._deprecatedNames.length && name) {\r\n for (var i = 0; i < this._deprecatedNames.length; i++) {\r\n if (this._deprecatedNames[i] === name) {\r\n var deprecate = this._deprecated[name];\r\n if (deprecate) {\r\n !silent && this._notifyDeprecated(name);\r\n return deprecate.alias || name\r\n }\r\n }\r\n }\r\n }\r\n return name\r\n }\r\n addRules(rules) {\r\n this._rules = rules.concat(this._rules)\r\n }\r\n applyRules(rules) {\r\n var options = this._getByRules(rules);\r\n this.silent(options)\r\n }\r\n dispose() {\r\n this._deprecatedCallback = noop;\r\n this._startChangeCallback = noop;\r\n this._endChangeCallback = noop;\r\n this._optionManager.dispose()\r\n }\r\n onChanging(callBack) {\r\n this._optionManager.onChanging(callBack)\r\n }\r\n onChanged(callBack) {\r\n this._optionManager.onChanged(callBack)\r\n }\r\n onDeprecated(callBack) {\r\n this._deprecatedCallback = callBack\r\n }\r\n onStartChange(callBack) {\r\n this._startChangeCallback = callBack\r\n }\r\n onEndChange(callBack) {\r\n this._endChangeCallback = callBack\r\n }\r\n isInitial(name) {\r\n var value = this.silent(name);\r\n var initialValue = this.initial(name);\r\n var areFunctions = isFunction(value) && isFunction(initialValue);\r\n return areFunctions ? value.toString() === initialValue.toString() : equalByValue(value, initialValue)\r\n }\r\n initial(name) {\r\n return getNestedOptionValue(this._initial, name)\r\n }\r\n option(options, value) {\r\n var isGetter = arguments.length < 2 && \"object\" !== type(options);\r\n if (isGetter) {\r\n return this._optionManager.get(void 0, this._normalizeName(options))\r\n } else {\r\n this._startChangeCallback();\r\n try {\r\n this._optionManager.set(options, value)\r\n } finally {\r\n this._endChangeCallback()\r\n }\r\n }\r\n }\r\n silent(options, value) {\r\n var isGetter = arguments.length < 2 && \"object\" !== type(options);\r\n if (isGetter) {\r\n return this._optionManager.get(void 0, options, void 0, true)\r\n } else {\r\n this._optionManager.set(options, value, void 0, true)\r\n }\r\n }\r\n reset(name) {\r\n if (name) {\r\n var fullPath = name.replace(/\\[([^\\]])\\]/g, \".$1\").split(\".\");\r\n var value = fullPath.reduce((value, field) => value ? value[field] : this.initial(field), null);\r\n var defaultValue = isObject(value) ? clone(value) : value;\r\n this._optionManager.set(name, defaultValue, false)\r\n }\r\n }\r\n getAliasesByName(name) {\r\n return Object.keys(this._deprecated).filter(aliasName => name === this._deprecated[aliasName].alias)\r\n }\r\n isDeprecated(name) {\r\n return Object.prototype.hasOwnProperty.call(this._deprecated, name)\r\n }\r\n cache(name, options) {\r\n var isGetter = arguments.length < 2;\r\n if (isGetter) {\r\n return this._cachedOptions[name]\r\n } else {\r\n this._cachedOptions[name] = extend(this._cachedOptions[name], options)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/postponed_operations.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred,\r\n when\r\n} from \"./utils/deferred\";\r\nimport {\r\n isDefined\r\n} from \"./utils/type\";\r\nexport class PostponedOperations {\r\n constructor() {\r\n this._postponedOperations = {}\r\n }\r\n add(key, fn, postponedPromise) {\r\n if (key in this._postponedOperations) {\r\n postponedPromise && this._postponedOperations[key].promises.push(postponedPromise)\r\n } else {\r\n var completePromise = new Deferred;\r\n this._postponedOperations[key] = {\r\n fn: fn,\r\n completePromise: completePromise,\r\n promises: postponedPromise ? [postponedPromise] : []\r\n }\r\n }\r\n return this._postponedOperations[key].completePromise.promise()\r\n }\r\n callPostponedOperations() {\r\n for (var key in this._postponedOperations) {\r\n var operation = this._postponedOperations[key];\r\n if (isDefined(operation)) {\r\n if (operation.promises && operation.promises.length) {\r\n when(...operation.promises).done(operation.fn).then(operation.completePromise.resolve)\r\n } else {\r\n operation.fn().done(operation.completePromise.resolve)\r\n }\r\n }\r\n }\r\n this._postponedOperations = {}\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/component.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Config from \"./config\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n Options\r\n} from \"./options/index\";\r\nimport {\r\n convertRulesToOptions\r\n} from \"./options/utils\";\r\nimport Class from \"./class\";\r\nimport Action from \"./action\";\r\nimport errors from \"./errors\";\r\nimport Callbacks from \"./utils/callbacks\";\r\nimport {\r\n EventsStrategy\r\n} from \"./events_strategy\";\r\nimport {\r\n name as publicComponentName\r\n} from \"./utils/public_component\";\r\nimport {\r\n PostponedOperations\r\n} from \"./postponed_operations\";\r\nimport {\r\n isFunction,\r\n isPlainObject,\r\n isDefined\r\n} from \"./utils/type\";\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nvar getEventName = actionName => actionName.charAt(2).toLowerCase() + actionName.substr(3);\r\nvar isInnerOption = optionName => 0 === optionName.indexOf(\"_\", 0);\r\nexport var Component = Class.inherit({\r\n _setDeprecatedOptions() {\r\n this._deprecatedOptions = {}\r\n },\r\n _getDeprecatedOptions() {\r\n return this._deprecatedOptions\r\n },\r\n _getDefaultOptions: () => ({\r\n onInitialized: null,\r\n onOptionChanged: null,\r\n onDisposing: null,\r\n defaultOptionsRules: null\r\n }),\r\n _defaultOptionsRules: () => [],\r\n _setOptionsByDevice(rules) {\r\n this._options.applyRules(rules)\r\n },\r\n _convertRulesToOptions: rules => convertRulesToOptions(rules),\r\n _isInitialOptionValue(name) {\r\n return this._options.isInitial(name)\r\n },\r\n _setOptionsByReference() {\r\n this._optionsByReference = {}\r\n },\r\n _getOptionsByReference() {\r\n return this._optionsByReference\r\n },\r\n ctor() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n var {\r\n _optionChangedCallbacks: _optionChangedCallbacks,\r\n _disposingCallbacks: _disposingCallbacks\r\n } = options;\r\n this.NAME = publicComponentName(this.constructor);\r\n this._eventsStrategy = EventsStrategy.create(this, options.eventsStrategy);\r\n this._updateLockCount = 0;\r\n this._optionChangedCallbacks = _optionChangedCallbacks || Callbacks();\r\n this._disposingCallbacks = _disposingCallbacks || Callbacks();\r\n this.postponedOperations = new PostponedOperations;\r\n this._createOptions(options)\r\n },\r\n _createOptions(options) {\r\n this.beginUpdate();\r\n try {\r\n this._setOptionsByReference();\r\n this._setDeprecatedOptions();\r\n this._options = new Options(this._getDefaultOptions(), this._getDefaultOptions(), this._getOptionsByReference(), this._getDeprecatedOptions());\r\n this._options.onChanging((name, previousValue, value) => this._initialized && this._optionChanging(name, previousValue, value));\r\n this._options.onDeprecated((option, info) => this._logDeprecatedOptionWarning(option, info));\r\n this._options.onChanged((name, value, previousValue) => this._notifyOptionChanged(name, value, previousValue));\r\n this._options.onStartChange(() => this.beginUpdate());\r\n this._options.onEndChange(() => this.endUpdate());\r\n this._options.addRules(this._defaultOptionsRules());\r\n if (options && options.onInitializing) {\r\n options.onInitializing.apply(this, [options])\r\n }\r\n this._setOptionsByDevice(options.defaultOptionsRules);\r\n this._initOptions(options)\r\n } finally {\r\n this.endUpdate()\r\n }\r\n },\r\n _initOptions(options) {\r\n this.option(options)\r\n },\r\n _init() {\r\n this._createOptionChangedAction();\r\n this.on(\"disposing\", args => {\r\n this._disposingCallbacks.fireWith(this, [args])\r\n })\r\n },\r\n _logDeprecatedOptionWarning(option, info) {\r\n var message = info.message || \"Use the '\".concat(info.alias, \"' option instead\");\r\n errors.log(\"W0001\", this.NAME, option, info.since, message)\r\n },\r\n _logDeprecatedComponentWarning(since, alias) {\r\n errors.log(\"W0000\", this.NAME, since, \"Use the '\".concat(alias, \"' widget instead\"))\r\n },\r\n _createOptionChangedAction() {\r\n this._optionChangedAction = this._createActionByOption(\"onOptionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _createDisposingAction() {\r\n this._disposingAction = this._createActionByOption(\"onDisposing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"onDisposing\":\r\n case \"onInitialized\":\r\n break;\r\n case \"onOptionChanged\":\r\n this._createOptionChangedAction()\r\n }\r\n },\r\n _dispose() {\r\n this._optionChangedCallbacks.empty();\r\n this._createDisposingAction();\r\n this._disposingAction();\r\n this._eventsStrategy.dispose();\r\n this._options.dispose();\r\n this._disposed = true\r\n },\r\n _lockUpdate() {\r\n this._updateLockCount++\r\n },\r\n _unlockUpdate() {\r\n this._updateLockCount = Math.max(this._updateLockCount - 1, 0)\r\n },\r\n _isUpdateAllowed() {\r\n return 0 === this._updateLockCount\r\n },\r\n _isInitializingRequired() {\r\n return !this._initializing && !this._initialized\r\n },\r\n _commitUpdate() {\r\n this.postponedOperations.callPostponedOperations();\r\n this._isInitializingRequired() && this._initializeComponent()\r\n },\r\n _initializeComponent() {\r\n this._initializing = true;\r\n try {\r\n this._init()\r\n } finally {\r\n this._initializing = false;\r\n this._lockUpdate();\r\n this._createActionByOption(\"onInitialized\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })();\r\n this._unlockUpdate();\r\n this._initialized = true\r\n }\r\n },\r\n instance() {\r\n return this\r\n },\r\n beginUpdate: function() {\r\n this._lockUpdate()\r\n },\r\n endUpdate: function() {\r\n this._unlockUpdate();\r\n this._isUpdateAllowed() && this._commitUpdate()\r\n },\r\n _optionChanging: noop,\r\n _notifyOptionChanged(option, value, previousValue) {\r\n if (this._initialized) {\r\n var optionNames = [option].concat(this._options.getAliasesByName(option));\r\n for (var i = 0; i < optionNames.length; i++) {\r\n var name = optionNames[i];\r\n var args = {\r\n name: name.split(/[.[]/)[0],\r\n fullName: name,\r\n value: value,\r\n previousValue: previousValue\r\n };\r\n if (!isInnerOption(name)) {\r\n this._optionChangedCallbacks.fireWith(this, [extend(this._defaultActionArgs(), args)]);\r\n this._optionChangedAction(extend({}, args))\r\n }\r\n if (!this._disposed && this._cancelOptionChange !== name) {\r\n this._optionChanged(args)\r\n }\r\n }\r\n }\r\n },\r\n initialOption(name) {\r\n return this._options.initial(name)\r\n },\r\n _defaultActionConfig() {\r\n return {\r\n context: this,\r\n component: this\r\n }\r\n },\r\n _defaultActionArgs() {\r\n return {\r\n component: this\r\n }\r\n },\r\n _createAction(actionSource, config) {\r\n var action;\r\n return e => {\r\n if (!isDefined(e)) {\r\n e = {}\r\n }\r\n if (!isPlainObject(e)) {\r\n e = {\r\n actionValue: e\r\n }\r\n }\r\n action = action || new Action(actionSource, extend(config, this._defaultActionConfig()));\r\n return action.execute.call(action, extend(e, this._defaultActionArgs()))\r\n }\r\n },\r\n _createActionByOption(optionName, config) {\r\n var _this = this;\r\n var action;\r\n var eventName;\r\n var actionFunc;\r\n var result = function() {\r\n if (!eventName) {\r\n config = config || {};\r\n if (\"string\" !== typeof optionName) {\r\n throw errors.Error(\"E0008\")\r\n }\r\n if (0 === optionName.indexOf(\"on\")) {\r\n eventName = getEventName(optionName)\r\n }\r\n actionFunc = _this.option(optionName)\r\n }\r\n if (!action && !actionFunc && !config.beforeExecute && !config.afterExecute && !_this._eventsStrategy.hasEvent(eventName)) {\r\n return\r\n }\r\n if (!action) {\r\n var beforeExecute = config.beforeExecute;\r\n config.beforeExecute = function() {\r\n for (var _len2 = arguments.length, props = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n props[_key2] = arguments[_key2]\r\n }\r\n beforeExecute && beforeExecute.apply(_this, props);\r\n _this._eventsStrategy.fireEvent(eventName, props[0].args)\r\n };\r\n action = _this._createAction(actionFunc, config)\r\n }\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n if (Config().wrapActionsBeforeExecute) {\r\n var beforeActionExecute = _this.option(\"beforeActionExecute\") || noop;\r\n var wrappedAction = beforeActionExecute(_this, action, config) || action;\r\n return wrappedAction.apply(_this, args)\r\n }\r\n return action.apply(_this, args)\r\n };\r\n if (Config().wrapActionsBeforeExecute) {\r\n return result\r\n }\r\n var onActionCreated = this.option(\"onActionCreated\") || noop;\r\n return onActionCreated(this, result, config) || result\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n },\r\n hasActionSubscription: function(actionName) {\r\n return !!this._options.silent(actionName) || this._eventsStrategy.hasEvent(getEventName(actionName))\r\n },\r\n isOptionDeprecated(name) {\r\n return this._options.isDeprecated(name)\r\n },\r\n _setOptionWithoutOptionChange(name, value) {\r\n this._cancelOptionChange = name;\r\n this.option(name, value);\r\n this._cancelOptionChange = false\r\n },\r\n _getOptionValue(name, context) {\r\n var value = this.option(name);\r\n if (isFunction(value)) {\r\n return value.bind(context)()\r\n }\r\n return value\r\n },\r\n option() {\r\n return this._options.option(...arguments)\r\n },\r\n resetOption(name) {\r\n this.beginUpdate();\r\n this._options.reset(name);\r\n this.endUpdate()\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/localization/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n sign\r\n} from \"../core/utils/math\";\r\nvar DECIMAL_BASE = 10;\r\n\r\nfunction roundByAbs(value) {\r\n var valueSign = sign(value);\r\n return valueSign * Math.round(Math.abs(value))\r\n}\r\n\r\nfunction adjustValue(value, precision) {\r\n var precisionMultiplier = Math.pow(DECIMAL_BASE, precision);\r\n var roundMultiplier = precisionMultiplier * DECIMAL_BASE;\r\n var intermediateValue = value * roundMultiplier / DECIMAL_BASE;\r\n return roundByAbs(intermediateValue) / precisionMultiplier\r\n}\r\nexport function toFixed(value, precision) {\r\n var valuePrecision = precision || 0;\r\n var adjustedValue = valuePrecision > 0 ? adjustValue(...arguments) : value;\r\n return adjustedValue.toFixed(valuePrecision)\r\n}\r\n","/**\r\n * DevExtreme (esm/data/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport readyCallbacks from \"../core/utils/ready_callbacks\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n equalByValue\r\n} from \"../core/utils/common\";\r\nvar ready = readyCallbacks.add;\r\nvar XHR_ERROR_UNLOAD = \"DEVEXTREME_XHR_ERROR_UNLOAD\";\r\nvar normalizeBinaryCriterion = function(crit) {\r\n return [crit[0], crit.length < 3 ? \"=\" : String(crit[1]).toLowerCase(), crit.length < 2 ? true : crit[crit.length - 1]]\r\n};\r\nvar normalizeSortingInfo = function(info) {\r\n if (!Array.isArray(info)) {\r\n info = [info]\r\n }\r\n return map(info, (function(i) {\r\n var result = {\r\n selector: isFunction(i) || \"string\" === typeof i ? i : i.getter || i.field || i.selector,\r\n desc: !!(i.desc || \"d\" === String(i.dir).charAt(0).toLowerCase())\r\n };\r\n if (i.compare) {\r\n result.compare = i.compare\r\n }\r\n return result\r\n }))\r\n};\r\nvar errorMessageFromXhr = function() {\r\n var textStatusMessages = {\r\n timeout: \"Network connection timeout\",\r\n error: \"Unspecified network error\",\r\n parsererror: \"Unexpected server response\"\r\n };\r\n var unloading;\r\n ready((function() {\r\n var window = getWindow();\r\n domAdapter.listen(window, \"beforeunload\", (function() {\r\n unloading = true\r\n }))\r\n }));\r\n return function(xhr, textStatus) {\r\n if (unloading) {\r\n return XHR_ERROR_UNLOAD\r\n }\r\n if (xhr.status < 400) {\r\n return function(textStatus) {\r\n var result = textStatusMessages[textStatus];\r\n if (!result) {\r\n return textStatus\r\n }\r\n return result\r\n }(textStatus)\r\n }\r\n return xhr.statusText\r\n }\r\n}();\r\nvar aggregators = {\r\n count: {\r\n seed: 0,\r\n step: function(count) {\r\n return 1 + count\r\n }\r\n },\r\n sum: {\r\n seed: 0,\r\n step: function(sum, item) {\r\n return sum + item\r\n }\r\n },\r\n min: {\r\n step: function(min, item) {\r\n return item < min ? item : min\r\n }\r\n },\r\n max: {\r\n step: function(max, item) {\r\n return item > max ? item : max\r\n }\r\n },\r\n avg: {\r\n seed: [0, 0],\r\n step: function(pair, value) {\r\n return [pair[0] + value, pair[1] + 1]\r\n },\r\n finalize: function(pair) {\r\n return pair[1] ? pair[0] / pair[1] : NaN\r\n }\r\n }\r\n};\r\nvar processRequestResultLock = function() {\r\n var lockCount = 0;\r\n var lockDeferred;\r\n return {\r\n obtain: function() {\r\n if (0 === lockCount) {\r\n lockDeferred = new Deferred\r\n }\r\n lockCount++\r\n },\r\n release: function() {\r\n lockCount--;\r\n if (lockCount < 1) {\r\n lockDeferred.resolve()\r\n }\r\n },\r\n promise: function() {\r\n var deferred = 0 === lockCount ? (new Deferred).resolve() : lockDeferred;\r\n return deferred.promise()\r\n },\r\n reset: function() {\r\n lockCount = 0;\r\n if (lockDeferred) {\r\n lockDeferred.resolve()\r\n }\r\n }\r\n }\r\n}();\r\n\r\nfunction isDisjunctiveOperator(condition) {\r\n return /^(or|\\|\\||\\|)$/i.test(condition)\r\n}\r\n\r\nfunction isConjunctiveOperator(condition) {\r\n return /^(and|&&|&)$/i.test(condition)\r\n}\r\nvar keysEqual = function(keyExpr, key1, key2) {\r\n if (Array.isArray(keyExpr)) {\r\n var names = map(key1, (function(v, k) {\r\n return k\r\n }));\r\n var name;\r\n for (var i = 0; i < names.length; i++) {\r\n name = names[i];\r\n if (!equalByValue(key1[name], key2[name], 0, false)) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return equalByValue(key1, key2, 0, false)\r\n};\r\nvar BASE64_CHARS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\nvar base64_encode = function(input) {\r\n if (!Array.isArray(input)) {\r\n input = stringToByteArray(String(input))\r\n }\r\n var result = \"\";\r\n\r\n function getBase64Char(index) {\r\n return BASE64_CHARS.charAt(index)\r\n }\r\n for (var i = 0; i < input.length; i += 3) {\r\n var octet1 = input[i];\r\n var octet2 = input[i + 1];\r\n var octet3 = input[i + 2];\r\n result += map([octet1 >> 2, (3 & octet1) << 4 | octet2 >> 4, isNaN(octet2) ? 64 : (15 & octet2) << 2 | octet3 >> 6, isNaN(octet3) ? 64 : 63 & octet3], getBase64Char).join(\"\")\r\n }\r\n return result\r\n};\r\n\r\nfunction stringToByteArray(str) {\r\n var bytes = [];\r\n var code;\r\n var i;\r\n for (i = 0; i < str.length; i++) {\r\n code = str.charCodeAt(i);\r\n if (code < 128) {\r\n bytes.push(code)\r\n } else if (code < 2048) {\r\n bytes.push(192 + (code >> 6), 128 + (63 & code))\r\n } else if (code < 65536) {\r\n bytes.push(224 + (code >> 12), 128 + (code >> 6 & 63), 128 + (63 & code))\r\n } else if (code < 2097152) {\r\n bytes.push(240 + (code >> 18), 128 + (code >> 12 & 63), 128 + (code >> 6 & 63), 128 + (63 & code))\r\n }\r\n }\r\n return bytes\r\n}\r\nvar isUnaryOperation = function(crit) {\r\n return \"!\" === crit[0] && Array.isArray(crit[1])\r\n};\r\nvar isGroupOperator = function(value) {\r\n return \"and\" === value || \"or\" === value\r\n};\r\nvar isGroupCriterion = function(crit) {\r\n var first = crit[0];\r\n var second = crit[1];\r\n if (Array.isArray(first)) {\r\n return true\r\n }\r\n if (isFunction(first)) {\r\n if (Array.isArray(second) || isFunction(second) || isGroupOperator(second)) {\r\n return true\r\n }\r\n }\r\n return false\r\n};\r\nvar trivialPromise = function() {\r\n var d = new Deferred;\r\n return d.resolve.apply(d, arguments).promise()\r\n};\r\nvar rejectedPromise = function() {\r\n var d = new Deferred;\r\n return d.reject.apply(d, arguments).promise()\r\n};\r\n\r\nfunction throttle(func, timeout) {\r\n var timeoutId;\r\n var lastArgs;\r\n return function() {\r\n lastArgs = arguments;\r\n if (!timeoutId) {\r\n timeoutId = setTimeout(() => {\r\n timeoutId = void 0;\r\n if (lastArgs) {\r\n func.call(this, lastArgs)\r\n }\r\n }, isFunction(timeout) ? timeout() : timeout)\r\n }\r\n return timeoutId\r\n }\r\n}\r\n\r\nfunction throttleChanges(func, timeout) {\r\n var cache = [];\r\n var throttled = throttle((function() {\r\n func.call(this, cache);\r\n cache = []\r\n }), timeout);\r\n return function(changes) {\r\n if (Array.isArray(changes)) {\r\n cache.push(...changes)\r\n }\r\n return throttled.call(this, cache)\r\n }\r\n}\r\nvar utils = {\r\n XHR_ERROR_UNLOAD: XHR_ERROR_UNLOAD,\r\n normalizeBinaryCriterion: normalizeBinaryCriterion,\r\n normalizeSortingInfo: normalizeSortingInfo,\r\n errorMessageFromXhr: errorMessageFromXhr,\r\n aggregators: aggregators,\r\n keysEqual: keysEqual,\r\n throttleChanges: throttleChanges,\r\n trivialPromise: trivialPromise,\r\n rejectedPromise: rejectedPromise,\r\n isDisjunctiveOperator: isDisjunctiveOperator,\r\n isConjunctiveOperator: isConjunctiveOperator,\r\n processRequestResultLock: processRequestResultLock,\r\n isUnaryOperation: isUnaryOperation,\r\n isGroupCriterion: isGroupCriterion,\r\n base64_encode: base64_encode\r\n};\r\nexport default utils;\r\n","/**\r\n * DevExtreme (esm/ui/overlay/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nvar WINDOW_HEIGHT_PERCENT = .9;\r\nexport var getElementMaxHeightByWindow = ($element, startLocation) => {\r\n var $window = $(getWindow());\r\n var {\r\n top: elementOffset\r\n } = $element.offset();\r\n var actualOffset;\r\n if (isNumeric(startLocation)) {\r\n if (startLocation < elementOffset) {\r\n return elementOffset - startLocation\r\n } else {\r\n actualOffset = $window.innerHeight() - startLocation + $window.scrollTop()\r\n }\r\n } else {\r\n var offsetTop = elementOffset - $window.scrollTop();\r\n var offsetBottom = $window.innerHeight() - offsetTop - $element.outerHeight();\r\n actualOffset = Math.max(offsetTop, offsetBottom)\r\n }\r\n return actualOffset * WINDOW_HEIGHT_PERCENT\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/load_indicator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getNavigator\r\n} from \"../core/utils/window\";\r\nvar navigator = getNavigator();\r\nimport {\r\n animation\r\n} from \"../core/utils/support\";\r\nimport {\r\n current,\r\n isMaterial,\r\n isGeneric\r\n} from \"./themes\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport devices from \"../core/devices\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Widget from \"./widget/ui.widget\";\r\nvar LOADINDICATOR_CLASS = \"dx-loadindicator\";\r\nvar LOADINDICATOR_WRAPPER_CLASS = \"dx-loadindicator-wrapper\";\r\nvar LOADINDICATOR_CONTENT_CLASS = \"dx-loadindicator-content\";\r\nvar LOADINDICATOR_ICON_CLASS = \"dx-loadindicator-icon\";\r\nvar LOADINDICATOR_SEGMENT_CLASS = \"dx-loadindicator-segment\";\r\nvar LOADINDICATOR_SEGMENT_INNER_CLASS = \"dx-loadindicator-segment-inner\";\r\nvar LOADINDICATOR_IMAGE_CLASS = \"dx-loadindicator-image\";\r\nvar LoadIndicator = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n indicatorSrc: \"\",\r\n activeStateEnabled: false,\r\n hoverStateEnabled: false,\r\n _animatingSegmentCount: 1,\r\n _animatingSegmentInner: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = current();\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = devices.real();\r\n var obsoleteAndroid = \"android\" === realDevice.platform && !/chrome/i.test(navigator.userAgent);\r\n return obsoleteAndroid\r\n },\r\n options: {\r\n viaImage: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n _animatingSegmentCount: 2,\r\n _animatingSegmentInner: true\r\n }\r\n }, {\r\n device: function() {\r\n return isGeneric(themeName)\r\n },\r\n options: {\r\n _animatingSegmentCount: 7\r\n }\r\n }])\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADINDICATOR_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderWrapper();\r\n this._renderIndicatorContent();\r\n this._renderMarkup()\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = $(\"
\").addClass(LOADINDICATOR_WRAPPER_CLASS);\r\n this.$element().append(this._$wrapper)\r\n },\r\n _renderIndicatorContent: function() {\r\n this._$content = $(\"
\").addClass(LOADINDICATOR_CONTENT_CLASS);\r\n this._$wrapper.append(this._$content)\r\n },\r\n _renderMarkup: function() {\r\n if (animation() && !this.option(\"viaImage\") && !this.option(\"indicatorSrc\")) {\r\n this._renderMarkupForAnimation()\r\n } else {\r\n this._renderMarkupForImage()\r\n }\r\n },\r\n _renderMarkupForAnimation: function() {\r\n var animatingSegmentInner = this.option(\"_animatingSegmentInner\");\r\n this._$indicator = $(\"
\").addClass(LOADINDICATOR_ICON_CLASS);\r\n this._$content.append(this._$indicator);\r\n for (var i = this.option(\"_animatingSegmentCount\"); i >= 0; --i) {\r\n var $segment = $(\"
\").addClass(LOADINDICATOR_SEGMENT_CLASS).addClass(LOADINDICATOR_SEGMENT_CLASS + i);\r\n if (animatingSegmentInner) {\r\n $segment.append($(\"
\").addClass(LOADINDICATOR_SEGMENT_INNER_CLASS))\r\n }\r\n this._$indicator.append($segment)\r\n }\r\n },\r\n _renderMarkupForImage: function() {\r\n var indicatorSrc = this.option(\"indicatorSrc\");\r\n this._$wrapper.addClass(LOADINDICATOR_IMAGE_CLASS);\r\n if (indicatorSrc) {\r\n this._$wrapper.css(\"backgroundImage\", \"url(\" + indicatorSrc + \")\")\r\n }\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this._updateContentSizeForAnimation()\r\n },\r\n _updateContentSizeForAnimation: function() {\r\n if (!this._$indicator) {\r\n return\r\n }\r\n var width = this.option(\"width\");\r\n var height = this.option(\"height\");\r\n if (width || height) {\r\n width = this.$element().width();\r\n height = this.$element().height();\r\n var minDimension = Math.min(height, width);\r\n this._$wrapper.css({\r\n height: minDimension,\r\n width: minDimension,\r\n fontSize: minDimension\r\n })\r\n }\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._removeMarkupForAnimation();\r\n this._removeMarkupForImage()\r\n },\r\n _removeMarkupForAnimation: function() {\r\n if (!this._$indicator) {\r\n return\r\n }\r\n this._$indicator.remove();\r\n delete this._$indicator\r\n },\r\n _removeMarkupForImage: function() {\r\n this._$wrapper.css(\"backgroundImage\", \"none\")\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"_animatingSegmentCount\":\r\n case \"_animatingSegmentInner\":\r\n case \"indicatorSrc\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxLoadIndicator\", LoadIndicator);\r\nexport default LoadIndicator;\r\n","/**\r\n * DevExtreme (esm/ui/popup.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n move\r\n} from \"../animation/translator\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport devices from \"../core/devices\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../core/templates/empty_template\";\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport browser from \"../core/utils/browser\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n camelize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getVisibleHeight,\r\n addOffsetToMaxHeight,\r\n addOffsetToMinHeight,\r\n getVerticalOffsets\r\n} from \"../core/utils/size\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport {\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../core/utils/version\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../events/visibility_change\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport Button from \"./button\";\r\nimport Overlay from \"./overlay/ui.overlay\";\r\nimport {\r\n isMaterial,\r\n current as currentTheme\r\n} from \"./themes\";\r\nimport \"./toolbar/ui.toolbar.base\";\r\nvar window = getWindow();\r\nvar POPUP_CLASS = \"dx-popup\";\r\nvar POPUP_WRAPPER_CLASS = \"dx-popup-wrapper\";\r\nvar POPUP_FULL_SCREEN_CLASS = \"dx-popup-fullscreen\";\r\nvar POPUP_FULL_SCREEN_WIDTH_CLASS = \"dx-popup-fullscreen-width\";\r\nvar POPUP_NORMAL_CLASS = \"dx-popup-normal\";\r\nvar POPUP_CONTENT_CLASS = \"dx-popup-content\";\r\nvar POPUP_DRAGGABLE_CLASS = \"dx-popup-draggable\";\r\nvar POPUP_TITLE_CLASS = \"dx-popup-title\";\r\nvar POPUP_TITLE_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar POPUP_BOTTOM_CLASS = \"dx-popup-bottom\";\r\nvar POPUP_HAS_CLOSE_BUTTON_CLASS = \"dx-has-close-button\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar POPUP_CONTENT_FLEX_HEIGHT_CLASS = \"dx-popup-flex-height\";\r\nvar POPUP_CONTENT_INHERIT_HEIGHT_CLASS = \"dx-popup-inherit-height\";\r\nvar ALLOWED_TOOLBAR_ITEM_ALIASES = [\"cancel\", \"clear\", \"done\"];\r\nvar BUTTON_DEFAULT_TYPE = \"default\";\r\nvar BUTTON_NORMAL_TYPE = \"normal\";\r\nvar BUTTON_TEXT_MODE = \"text\";\r\nvar BUTTON_CONTAINED_MODE = \"contained\";\r\nvar IS_IE11 = browser.msie && 11 === parseInt(browser.version);\r\nvar IS_OLD_SAFARI = browser.safari && compareVersions(browser.version, [11]) < 0;\r\nvar HEIGHT_STRATEGIES = {\r\n static: \"\",\r\n inherit: POPUP_CONTENT_INHERIT_HEIGHT_CLASS,\r\n flex: POPUP_CONTENT_FLEX_HEIGHT_CLASS\r\n};\r\nvar getButtonPlace = name => {\r\n var device = devices.current();\r\n var platform = device.platform;\r\n var toolbar = \"bottom\";\r\n var location = \"before\";\r\n if (\"ios\" === platform) {\r\n switch (name) {\r\n case \"cancel\":\r\n toolbar = \"top\";\r\n break;\r\n case \"clear\":\r\n toolbar = \"top\";\r\n location = \"after\";\r\n break;\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n } else if (\"android\" === platform && device.version && parseInt(device.version[0]) > 4) {\r\n switch (name) {\r\n case \"cancel\":\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n }\r\n return {\r\n toolbar: toolbar,\r\n location: location\r\n }\r\n};\r\nvar Popup = Overlay.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n fullScreen: false,\r\n title: \"\",\r\n showTitle: true,\r\n titleTemplate: \"title\",\r\n onTitleRendered: null,\r\n dragEnabled: false,\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n bottomTemplate: \"bottom\",\r\n useDefaultToolbarButtons: false,\r\n useFlatToolbarButtons: false,\r\n autoResizeEnabled: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = currentTheme();\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n animation: this._iosAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n animation: this._androidAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n showCloseButton: true\r\n }\r\n }, {\r\n device: function(_device) {\r\n return \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n dragEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n useDefaultToolbarButtons: true,\r\n useFlatToolbarButtons: true\r\n }\r\n }])\r\n },\r\n _iosAnimation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n opacity: 1,\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n },\r\n to: {\r\n opacity: 1,\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n }\r\n }\r\n },\r\n _androidAnimation: function() {\r\n return this.option(\"fullScreen\") ? {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: \"30%\",\r\n opacity: 0\r\n },\r\n to: {\r\n top: 0,\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: 0,\r\n opacity: 1\r\n },\r\n to: {\r\n top: \"30%\",\r\n opacity: 0\r\n }\r\n }\r\n } : {\r\n show: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(POPUP_CLASS);\r\n this.$wrapper().addClass(POPUP_WRAPPER_CLASS);\r\n this._$popupContent = this._$content.wrapInner($(\"
\").addClass(POPUP_CONTENT_CLASS)).children().eq(0)\r\n },\r\n _render: function() {\r\n var isFullscreen = this.option(\"fullScreen\");\r\n this._toggleFullScreenClass(isFullscreen);\r\n this.callBase()\r\n },\r\n _toggleFullScreenClass: function(value) {\r\n this.$overlayContent().toggleClass(POPUP_FULL_SCREEN_CLASS, value).toggleClass(POPUP_NORMAL_CLASS, !value)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n title: new EmptyTemplate,\r\n bottom: new EmptyTemplate\r\n })\r\n },\r\n _renderContentImpl: function() {\r\n this._renderTitle();\r\n this.callBase();\r\n this._renderBottom()\r\n },\r\n _renderTitle: function() {\r\n var items = this._getToolbarItems(\"top\");\r\n var titleText = this.option(\"title\");\r\n var showTitle = this.option(\"showTitle\");\r\n if (showTitle && !!titleText) {\r\n items.unshift({\r\n location: devices.current().ios ? \"center\" : \"before\",\r\n text: titleText\r\n })\r\n }\r\n if (showTitle || items.length > 0) {\r\n this._$title && this._$title.remove();\r\n var $title = $(\"
\").addClass(POPUP_TITLE_CLASS).insertBefore(this.$content());\r\n this._$title = this._renderTemplateByType(\"titleTemplate\", items, $title).addClass(POPUP_TITLE_CLASS);\r\n this._renderDrag();\r\n this._executeTitleRenderAction(this._$title);\r\n this._$title.toggleClass(POPUP_HAS_CLOSE_BUTTON_CLASS, this._hasCloseButton())\r\n } else if (this._$title) {\r\n this._$title.detach()\r\n }\r\n },\r\n _renderTemplateByType: function(optionName, data, $container, additionalToolbarOptions) {\r\n var template = this._getTemplateByOption(optionName);\r\n var toolbarTemplate = template instanceof EmptyTemplate;\r\n if (toolbarTemplate) {\r\n var integrationOptions = extend({}, this.option(\"integrationOptions\"), {\r\n skipTemplates: [\"content\", \"title\"]\r\n });\r\n var toolbarOptions = extend(additionalToolbarOptions, {\r\n items: data,\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n useDefaultButtons: this.option(\"useDefaultToolbarButtons\"),\r\n useFlatButtons: this.option(\"useFlatToolbarButtons\"),\r\n integrationOptions: integrationOptions\r\n });\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: {\r\n widget: \"dxToolbarBase\",\r\n options: toolbarOptions\r\n }\r\n });\r\n var $toolbar = $container.children(\"div\");\r\n $container.replaceWith($toolbar);\r\n return $toolbar\r\n } else {\r\n var $result = $(template.render({\r\n container: getPublicElement($container)\r\n }));\r\n if ($result.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n $container.replaceWith($result);\r\n $container = $result\r\n }\r\n return $container\r\n }\r\n },\r\n _executeTitleRenderAction: function($titleElement) {\r\n this._getTitleRenderAction()({\r\n titleElement: getPublicElement($titleElement)\r\n })\r\n },\r\n _getTitleRenderAction: function() {\r\n return this._titleRenderAction || this._createTitleRenderAction()\r\n },\r\n _createTitleRenderAction: function() {\r\n return this._titleRenderAction = this._createActionByOption(\"onTitleRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _getCloseButton: function() {\r\n return {\r\n toolbar: \"top\",\r\n location: \"after\",\r\n template: this._getCloseButtonRenderer()\r\n }\r\n },\r\n _getCloseButtonRenderer: function() {\r\n return (_, __, container) => {\r\n var $button = $(\"
\").addClass(POPUP_TITLE_CLOSEBUTTON_CLASS);\r\n this._createComponent($button, Button, {\r\n icon: \"close\",\r\n onClick: this._createToolbarItemAction(void 0),\r\n stylingMode: \"text\",\r\n integrationOptions: {}\r\n });\r\n $(container).append($button)\r\n }\r\n },\r\n _getToolbarItems: function(toolbar) {\r\n var toolbarItems = this.option(\"toolbarItems\");\r\n var toolbarsItems = [];\r\n this._toolbarItemClasses = [];\r\n var currentPlatform = devices.current().platform;\r\n var index = 0;\r\n each(toolbarItems, (_, data) => {\r\n var isShortcut = isDefined(data.shortcut);\r\n var item = isShortcut ? getButtonPlace(data.shortcut) : data;\r\n if (isShortcut && \"ios\" === currentPlatform && index < 2) {\r\n item.toolbar = \"top\";\r\n index++\r\n }\r\n item.toolbar = data.toolbar || item.toolbar || \"top\";\r\n if (item && item.toolbar === toolbar) {\r\n if (isShortcut) {\r\n extend(item, {\r\n location: data.location\r\n }, this._getToolbarItemByAlias(data))\r\n }\r\n var isLTROrder = \"generic\" === currentPlatform;\r\n if (\"done\" === data.shortcut && isLTROrder || \"cancel\" === data.shortcut && !isLTROrder) {\r\n toolbarsItems.unshift(item)\r\n } else {\r\n toolbarsItems.push(item)\r\n }\r\n }\r\n });\r\n if (\"top\" === toolbar && this._hasCloseButton()) {\r\n toolbarsItems.push(this._getCloseButton())\r\n }\r\n return toolbarsItems\r\n },\r\n _hasCloseButton() {\r\n return this.option(\"showCloseButton\") && this.option(\"showTitle\")\r\n },\r\n _getLocalizationKey: itemType => \"done\" === itemType.toLowerCase() ? \"OK\" : camelize(itemType, true),\r\n _getToolbarItemByAlias: function(data) {\r\n var that = this;\r\n var itemType = data.shortcut;\r\n if (inArray(itemType, ALLOWED_TOOLBAR_ITEM_ALIASES) < 0) {\r\n return false\r\n }\r\n var itemConfig = extend({\r\n text: messageLocalization.format(this._getLocalizationKey(itemType)),\r\n onClick: this._createToolbarItemAction(data.onClick),\r\n integrationOptions: {},\r\n type: that.option(\"useDefaultToolbarButtons\") ? BUTTON_DEFAULT_TYPE : BUTTON_NORMAL_TYPE,\r\n stylingMode: that.option(\"useFlatToolbarButtons\") ? BUTTON_TEXT_MODE : BUTTON_CONTAINED_MODE\r\n }, data.options || {});\r\n var itemClass = POPUP_CLASS + \"-\" + itemType;\r\n this._toolbarItemClasses.push(itemClass);\r\n return {\r\n template: function(_, __, container) {\r\n var $toolbarItem = $(\"
\").addClass(itemClass).appendTo(container);\r\n that._createComponent($toolbarItem, Button, itemConfig)\r\n }\r\n }\r\n },\r\n _createToolbarItemAction: function(clickAction) {\r\n return this._createAction(clickAction, {\r\n afterExecute: function(e) {\r\n e.component.hide()\r\n }\r\n })\r\n },\r\n _renderBottom: function() {\r\n var items = this._getToolbarItems(\"bottom\");\r\n if (items.length) {\r\n this._$bottom && this._$bottom.remove();\r\n var $bottom = $(\"
\").addClass(POPUP_BOTTOM_CLASS).insertAfter(this.$content());\r\n this._$bottom = this._renderTemplateByType(\"bottomTemplate\", items, $bottom, {\r\n compactMode: true\r\n }).addClass(POPUP_BOTTOM_CLASS);\r\n this._toggleClasses()\r\n } else {\r\n this._$bottom && this._$bottom.detach()\r\n }\r\n },\r\n _toggleClasses: function() {\r\n var aliases = ALLOWED_TOOLBAR_ITEM_ALIASES;\r\n each(aliases, (_, alias) => {\r\n var className = POPUP_CLASS + \"-\" + alias;\r\n if (inArray(className, this._toolbarItemClasses) >= 0) {\r\n this.$wrapper().addClass(className + \"-visible\");\r\n this._$bottom.addClass(className)\r\n } else {\r\n this.$wrapper().removeClass(className + \"-visible\");\r\n this._$bottom.removeClass(className)\r\n }\r\n })\r\n },\r\n _getContainer: function() {\r\n if (this.option(\"fullScreen\")) {\r\n return $(window)\r\n }\r\n return this.callBase()\r\n },\r\n _getDragTarget: function() {\r\n return this.topToolbar()\r\n },\r\n _renderGeometryImpl: function(isDimensionChanged) {\r\n if (!isDimensionChanged) {\r\n this._resetContentHeight()\r\n }\r\n this.callBase(...arguments);\r\n this._setContentHeight()\r\n },\r\n _resetContentHeight: function() {\r\n this.$content().css({\r\n height: \"auto\",\r\n maxHeight: \"none\"\r\n })\r\n },\r\n _renderDrag: function() {\r\n this.callBase();\r\n this.$overlayContent().toggleClass(POPUP_DRAGGABLE_CLASS, this.option(\"dragEnabled\"))\r\n },\r\n _renderResize: function() {\r\n this.callBase();\r\n this._resizable.option(\"onResize\", function() {\r\n this._setContentHeight();\r\n this._actions.onResize(arguments)\r\n }.bind(this))\r\n },\r\n _setContentHeight: function() {\r\n (this.option(\"forceApplyBindings\") || noop)();\r\n var overlayContent = this.$overlayContent().get(0);\r\n var currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent);\r\n this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent));\r\n this._setHeightClasses(this.$overlayContent(), currentHeightStrategyClass)\r\n },\r\n _heightStrategyChangeOffset: function(currentHeightStrategyClass, popupVerticalPaddings) {\r\n return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0\r\n },\r\n _chooseHeightStrategy: function(overlayContent) {\r\n var isAutoWidth = \"auto\" === overlayContent.style.width || \"\" === overlayContent.style.width;\r\n var currentHeightStrategyClass = HEIGHT_STRATEGIES.static;\r\n if (this._isAutoHeight() && this.option(\"autoResizeEnabled\")) {\r\n if (isAutoWidth || IS_OLD_SAFARI) {\r\n if (!IS_IE11) {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit\r\n }\r\n } else {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.flex\r\n }\r\n }\r\n return currentHeightStrategyClass\r\n },\r\n _getHeightCssStyles: function(currentHeightStrategyClass, overlayContent) {\r\n var cssStyles = {};\r\n var contentMaxHeight = this._getOptionValue(\"maxHeight\", overlayContent);\r\n var contentMinHeight = this._getOptionValue(\"minHeight\", overlayContent);\r\n var popupHeightParts = this._splitPopupHeight();\r\n var toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings);\r\n if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) {\r\n if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) {\r\n var overlayHeight = this.option(\"fullScreen\") ? Math.min(getBoundingRect(overlayContent).height, getWindow().innerHeight) : getBoundingRect(overlayContent).height;\r\n var contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight;\r\n cssStyles = {\r\n height: Math.max(0, contentHeight),\r\n minHeight: \"auto\",\r\n maxHeight: \"auto\"\r\n }\r\n }\r\n } else {\r\n var container = $(this._getContainer()).get(0);\r\n var maxHeightValue = addOffsetToMaxHeight(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n var minHeightValue = addOffsetToMinHeight(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n cssStyles = {\r\n height: \"auto\",\r\n minHeight: minHeightValue,\r\n maxHeight: maxHeightValue\r\n }\r\n }\r\n return cssStyles\r\n },\r\n _setHeightClasses: function($container, currentClass) {\r\n var excessClasses = \"\";\r\n for (var name in HEIGHT_STRATEGIES) {\r\n if (HEIGHT_STRATEGIES[name] !== currentClass) {\r\n excessClasses += \" \" + HEIGHT_STRATEGIES[name]\r\n }\r\n }\r\n $container.removeClass(excessClasses).addClass(currentClass)\r\n },\r\n _isAutoHeight: function() {\r\n return \"auto\" === this.$overlayContent().get(0).style.height\r\n },\r\n _splitPopupHeight: function() {\r\n var topToolbar = this.topToolbar();\r\n var bottomToolbar = this.bottomToolbar();\r\n return {\r\n header: getVisibleHeight(topToolbar && topToolbar.get(0)),\r\n footer: getVisibleHeight(bottomToolbar && bottomToolbar.get(0)),\r\n contentVerticalOffsets: getVerticalOffsets(this.$overlayContent().get(0), true),\r\n popupVerticalOffsets: getVerticalOffsets(this.$content().get(0), true),\r\n popupVerticalPaddings: getVerticalOffsets(this.$content().get(0), false)\r\n }\r\n },\r\n _shouldFixBodyPosition: function() {\r\n return this.callBase() || this.option(\"fullScreen\")\r\n },\r\n _toggleSafariFullScreen: function(value) {\r\n var toggleFullScreenBeforeShown = this._shouldFixBodyPosition() && value && !this._isShown;\r\n if (toggleFullScreenBeforeShown) {\r\n this._bodyScrollTop = value ? window.pageYOffset : void 0\r\n } else {\r\n this._toggleSafariScrolling(!value)\r\n }\r\n },\r\n _renderDimensions: function() {\r\n if (this.option(\"fullScreen\")) {\r\n this.$overlayContent().css({\r\n width: \"100%\",\r\n height: \"100%\",\r\n minWidth: \"\",\r\n maxWidth: \"\",\r\n minHeight: \"\",\r\n maxHeight: \"\"\r\n })\r\n } else {\r\n this.callBase(...arguments)\r\n }\r\n if (hasWindow()) {\r\n this._renderFullscreenWidthClass()\r\n }\r\n },\r\n _renderFullscreenWidthClass: function() {\r\n this.$overlayContent().toggleClass(POPUP_FULL_SCREEN_WIDTH_CLASS, this.$overlayContent().outerWidth() === $(window).width())\r\n },\r\n refreshPosition: function() {\r\n this._renderPosition()\r\n },\r\n _renderPosition: function() {\r\n if (this.option(\"fullScreen\")) {\r\n move(this.$overlayContent(), {\r\n top: 0,\r\n left: 0\r\n })\r\n } else {\r\n (this.option(\"forceApplyBindings\") || noop)();\r\n return this.callBase(...arguments)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"showTitle\":\r\n case \"title\":\r\n case \"titleTemplate\":\r\n this._renderTitle();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"bottomTemplate\":\r\n this._renderBottom();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"onTitleRendered\":\r\n this._createTitleRenderAction(args.value);\r\n break;\r\n case \"toolbarItems\":\r\n case \"useDefaultToolbarButtons\":\r\n case \"useFlatToolbarButtons\":\r\n var shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\\[\\d+\\])(\\.(options|visible).*)?)?$/);\r\n this._renderTitle();\r\n this._renderBottom();\r\n if (shouldRenderGeometry) {\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent())\r\n }\r\n break;\r\n case \"dragEnabled\":\r\n this._renderDrag();\r\n break;\r\n case \"autoResizeEnabled\":\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"fullScreen\":\r\n this._toggleFullScreenClass(args.value);\r\n this._toggleSafariFullScreen(args.value);\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"showCloseButton\":\r\n this._renderTitle();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n bottomToolbar: function() {\r\n return this._$bottom\r\n },\r\n topToolbar: function() {\r\n return this._$title\r\n },\r\n $content: function() {\r\n return this._$popupContent\r\n },\r\n content: function() {\r\n return getPublicElement(this.$content())\r\n },\r\n $overlayContent: function() {\r\n return this._$content\r\n }\r\n});\r\nregisterComponent(\"dxPopup\", Popup);\r\nexport default Popup;\r\n","/**\r\n * DevExtreme (esm/core/errors.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"./utils/error\";\r\nexport default errorUtils({\r\n E0001: \"Method is not implemented\",\r\n E0002: \"Member name collision: {0}\",\r\n E0003: \"A class must be instantiated using the 'new' keyword\",\r\n E0004: \"The NAME property of the component is not specified\",\r\n E0005: \"Unknown device\",\r\n E0006: \"Unknown endpoint key is requested\",\r\n E0007: \"'Invalidate' method is called outside the update transaction\",\r\n E0008: \"Type of the option name is not appropriate to create an action\",\r\n E0009: \"Component '{0}' has not been initialized for an element\",\r\n E0010: \"Animation configuration with the '{0}' type requires '{1}' configuration as {2}\",\r\n E0011: \"Unknown animation type '{0}'\",\r\n E0012: \"jQuery version is too old. Please upgrade jQuery to 1.10.0 or later\",\r\n E0013: \"KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later\",\r\n E0014: \"The 'release' method shouldn't be called for an unlocked Lock object\",\r\n E0015: \"Queued task returned an unexpected result\",\r\n E0017: \"Event namespace is not defined\",\r\n E0018: \"DevExpress.ui.DevExpressPopup widget is required\",\r\n E0020: \"Template engine '{0}' is not supported\",\r\n E0021: \"Unknown theme is set: {0}\",\r\n E0022: \"LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts\",\r\n E0023: \"Template name is not specified\",\r\n E0024: \"DevExtreme bundle already included\",\r\n E0025: \"Unexpected argument type\",\r\n E0100: \"Unknown validation type is detected\",\r\n E0101: \"Misconfigured range validation rule is detected\",\r\n E0102: \"Misconfigured comparison validation rule is detected\",\r\n E0103: \"validationCallback of an asynchronous rule should return a jQuery or a native promise\",\r\n E0110: \"Unknown validation group is detected\",\r\n E0120: \"Adapter for a DevExpressValidator component cannot be configured\",\r\n E0121: \"The 'customItem' field of the 'onCustomItemCreating' function's parameter should contain a custom item or Promise that is resolved after the item is created.\",\r\n W0000: \"'{0}' is deprecated in {1}. {2}\",\r\n W0001: \"{0} - '{1}' option is deprecated in {2}. {3}\",\r\n W0002: \"{0} - '{1}' method is deprecated in {2}. {3}\",\r\n W0003: \"{0} - '{1}' property is deprecated in {2}. {3}\",\r\n W0004: \"Timeout for theme loading is over: {0}\",\r\n W0005: \"'{0}' event is deprecated in {1}. {2}\",\r\n W0006: \"Invalid recurrence rule: '{0}'\",\r\n W0007: \"'{0}' Globalize culture is not defined\",\r\n W0008: \"Invalid view name: '{0}'\",\r\n W0009: \"Invalid time zone name: '{0}'\",\r\n W0010: \"{0} is deprecated in {1}. {2}\",\r\n W0011: \"Number parsing is invoked while the parser is not defined\",\r\n W0012: \"Date parsing is invoked while the parser is not defined\",\r\n W0013: \"'{0}' file is deprecated in {1}. {2}\",\r\n W0014: \"{0} - '{1}' type is deprecated in {2}. {3}\",\r\n W0015: \"Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.\",\r\n W0016: 'The \"{0}\" option does not accept the \"{1}\" value since v.{2}. {3}.'\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollbar.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport readyCallback from \"../../core/utils/ready_callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferRenderer\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nvar SCROLLBAR = \"dxScrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"\".concat(SCROLLABLE_SCROLLBAR_CLASS, \"-active\");\r\nvar SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nvar SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nvar HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar THUMB_MIN_SIZE = 15;\r\nvar SCROLLBAR_VISIBLE = {\r\n onScroll: \"onScroll\",\r\n onHover: \"onHover\",\r\n always: \"always\",\r\n never: \"never\"\r\n};\r\nvar activeScrollbar = null;\r\nvar Scrollbar = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n direction: null,\r\n visible: false,\r\n activeStateEnabled: false,\r\n visibilityMode: SCROLLBAR_VISIBLE.onScroll,\r\n containerSize: 0,\r\n contentSize: 0,\r\n expandable: true,\r\n scaleRatio: 1\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._isHovered = false\r\n },\r\n _initMarkup: function() {\r\n this._renderThumb();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderDirection();\r\n this._update();\r\n this._attachPointerDownHandler();\r\n this.option(\"hoverStateEnabled\", this._isHoverMode());\r\n this.$element().toggleClass(HOVER_ENABLED_STATE, this.option(\"hoverStateEnabled\"))\r\n },\r\n _renderThumb: function() {\r\n this._$thumb = $(\"
\").addClass(SCROLLABLE_SCROLL_CLASS);\r\n $(\"
\").addClass(SCROLLABLE_SCROLL_CONTENT_CLASS).appendTo(this._$thumb);\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_CLASS).append(this._$thumb)\r\n },\r\n isThumb: function($element) {\r\n return !!this.$element().find($element).length\r\n },\r\n _isHoverMode: function() {\r\n var visibilityMode = this.option(\"visibilityMode\");\r\n return (visibilityMode === SCROLLBAR_VISIBLE.onHover || visibilityMode === SCROLLBAR_VISIBLE.always) && this.option(\"expandable\")\r\n },\r\n _renderDirection: function() {\r\n var direction = this.option(\"direction\");\r\n this.$element().addClass(\"dx-scrollbar-\" + direction);\r\n this._dimension = direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._prop = direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _attachPointerDownHandler: function() {\r\n eventsEngine.on(this._$thumb, addNamespace(pointerEvents.down, SCROLLBAR), this.feedbackOn.bind(this))\r\n },\r\n feedbackOn: function() {\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = this\r\n },\r\n feedbackOff: function() {\r\n this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = null\r\n },\r\n cursorEnter: function() {\r\n this._isHovered = true;\r\n if (this._needScrollbar()) {\r\n this.option(\"visible\", true)\r\n }\r\n },\r\n cursorLeave: function() {\r\n this._isHovered = false;\r\n this.option(\"visible\", false)\r\n },\r\n _renderDimensions: function() {\r\n this._$thumb.css({\r\n width: this.option(\"width\"),\r\n height: this.option(\"height\")\r\n })\r\n },\r\n _toggleVisibility: function(visible) {\r\n if (this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.onScroll) {\r\n this._$thumb.css(\"opacity\")\r\n }\r\n visible = this._adjustVisibility(visible);\r\n this.option().visible = visible;\r\n this._$thumb.toggleClass(\"dx-state-invisible\", !visible)\r\n },\r\n _adjustVisibility: function(visible) {\r\n if (this._baseContainerToContentRatio && !this._needScrollbar()) {\r\n return false\r\n }\r\n switch (this.option(\"visibilityMode\")) {\r\n case SCROLLBAR_VISIBLE.onScroll:\r\n break;\r\n case SCROLLBAR_VISIBLE.onHover:\r\n visible = visible || !!this._isHovered;\r\n break;\r\n case SCROLLBAR_VISIBLE.never:\r\n visible = false;\r\n break;\r\n case SCROLLBAR_VISIBLE.always:\r\n visible = true\r\n }\r\n return visible\r\n },\r\n moveTo: function(location) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n if (isPlainObject(location)) {\r\n location = location[this._prop] || 0\r\n }\r\n var scrollBarLocation = {};\r\n scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);\r\n move(this._$thumb, scrollBarLocation)\r\n },\r\n _calculateScrollBarPosition: function(location) {\r\n return -location * this._thumbRatio\r\n },\r\n _update: function() {\r\n var containerSize = Math.round(this.option(\"containerSize\"));\r\n var contentSize = Math.round(this.option(\"contentSize\"));\r\n var baseContainerSize = Math.round(this.option(\"baseContainerSize\"));\r\n var baseContentSize = Math.round(this.option(\"baseContentSize\"));\r\n if (isNaN(baseContainerSize)) {\r\n baseContainerSize = containerSize;\r\n baseContentSize = contentSize\r\n }\r\n this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;\r\n this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;\r\n var thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), THUMB_MIN_SIZE));\r\n this._thumbRatio = (containerSize - thumbSize) / (this.option(\"scaleRatio\") * (contentSize - containerSize));\r\n this.option(this._dimension, thumbSize / this.option(\"scaleRatio\"));\r\n this.$element().css(\"display\", this._needScrollbar() ? \"\" : \"none\")\r\n },\r\n _isHidden: function() {\r\n return this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.never\r\n },\r\n _needScrollbar: function() {\r\n return !this._isHidden() && this._baseContainerToContentRatio < 1\r\n },\r\n containerToContentRatio: function() {\r\n return this._realContainerToContentRatio\r\n },\r\n _normalizeSize: function(size) {\r\n return isPlainObject(size) ? size[this._dimension] || 0 : size\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n if (this === activeScrollbar) {\r\n activeScrollbar = null\r\n }\r\n eventsEngine.off(this._$thumb, \".\" + SCROLLBAR)\r\n },\r\n _optionChanged: function(args) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"containerSize\":\r\n case \"contentSize\":\r\n this.option()[args.name] = this._normalizeSize(args.value);\r\n this._update();\r\n break;\r\n case \"baseContentSize\":\r\n case \"baseContainerSize\":\r\n this._update();\r\n break;\r\n case \"visibilityMode\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"scaleRatio\":\r\n this._update();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n update: deferRenderer((function() {\r\n this._adjustVisibility() && this.option(\"visible\", true)\r\n }))\r\n});\r\nreadyCallback.add((function() {\r\n eventsEngine.subscribeGlobal(domAdapter.getDocument(), addNamespace(pointerEvents.up, SCROLLBAR), (function() {\r\n if (activeScrollbar) {\r\n activeScrollbar.feedbackOff()\r\n }\r\n }))\r\n}));\r\nexport default Scrollbar;\r\n","/**\r\n * DevExtreme (esm/core/utils/console.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"./type\";\r\nvar noop = function() {};\r\nvar getConsoleMethod = function(method) {\r\n if (\"undefined\" === typeof console || !isFunction(console[method])) {\r\n return noop\r\n }\r\n return console[method].bind(console)\r\n};\r\nexport var logger = {\r\n info: getConsoleMethod(\"info\"),\r\n warn: getConsoleMethod(\"warn\"),\r\n error: getConsoleMethod(\"error\")\r\n};\r\nexport var debug = function() {\r\n function assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message)\r\n }\r\n }\r\n return {\r\n assert: assert,\r\n assertParam: function(parameter, message) {\r\n assert(null !== parameter && void 0 !== parameter, message)\r\n }\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/events/core/emitter.feedback.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n contains\r\n} from \"../../core/utils/dom\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n isMouseEvent\r\n} from \"../utils/index\";\r\nimport pointerEvents from \"../pointer\";\r\nimport Emitter from \"./emitter\";\r\nimport registerEmitter from \"./emitter_registrator\";\r\nvar ACTIVE_EVENT_NAME = \"dxactive\";\r\nvar INACTIVE_EVENT_NAME = \"dxinactive\";\r\nvar ACTIVE_TIMEOUT = 30;\r\nvar INACTIVE_TIMEOUT = 400;\r\nvar FeedbackEvent = Class.inherit({\r\n ctor: function(timeout, fire) {\r\n this._timeout = timeout;\r\n this._fire = fire\r\n },\r\n start: function() {\r\n var that = this;\r\n this._schedule((function() {\r\n that.force()\r\n }))\r\n },\r\n _schedule: function(fn) {\r\n this.stop();\r\n this._timer = setTimeout(fn, this._timeout)\r\n },\r\n stop: function() {\r\n clearTimeout(this._timer)\r\n },\r\n force: function() {\r\n if (this._fired) {\r\n return\r\n }\r\n this.stop();\r\n this._fire();\r\n this._fired = true\r\n },\r\n fired: function() {\r\n return this._fired\r\n }\r\n});\r\nvar activeFeedback;\r\nvar FeedbackEmitter = Emitter.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n this._active = new FeedbackEvent(0, noop);\r\n this._inactive = new FeedbackEvent(0, noop)\r\n },\r\n configure: function(data, eventName) {\r\n switch (eventName) {\r\n case ACTIVE_EVENT_NAME:\r\n data.activeTimeout = data.timeout;\r\n break;\r\n case INACTIVE_EVENT_NAME:\r\n data.inactiveTimeout = data.timeout\r\n }\r\n this.callBase(data)\r\n },\r\n start: function(e) {\r\n if (activeFeedback) {\r\n var activeChildExists = contains(this.getElement().get(0), activeFeedback.getElement().get(0));\r\n var childJustActivated = !activeFeedback._active.fired();\r\n if (activeChildExists && childJustActivated) {\r\n this._cancel();\r\n return\r\n }\r\n activeFeedback._inactive.force()\r\n }\r\n activeFeedback = this;\r\n this._initEvents(e);\r\n this._active.start()\r\n },\r\n _initEvents: function(e) {\r\n var that = this;\r\n var eventTarget = this._getEmitterTarget(e);\r\n var mouseEvent = isMouseEvent(e);\r\n var isSimulator = devices.isSimulator();\r\n var deferFeedback = isSimulator || !mouseEvent;\r\n var activeTimeout = ensureDefined(this.activeTimeout, ACTIVE_TIMEOUT);\r\n var inactiveTimeout = ensureDefined(this.inactiveTimeout, INACTIVE_TIMEOUT);\r\n this._active = new FeedbackEvent(deferFeedback ? activeTimeout : 0, (function() {\r\n that._fireEvent(ACTIVE_EVENT_NAME, e, {\r\n target: eventTarget\r\n })\r\n }));\r\n this._inactive = new FeedbackEvent(deferFeedback ? inactiveTimeout : 0, (function() {\r\n that._fireEvent(INACTIVE_EVENT_NAME, e, {\r\n target: eventTarget\r\n });\r\n activeFeedback = null\r\n }))\r\n },\r\n cancel: function(e) {\r\n this.end(e)\r\n },\r\n end: function(e) {\r\n var skipTimers = e.type !== pointerEvents.up;\r\n if (skipTimers) {\r\n this._active.stop()\r\n } else {\r\n this._active.force()\r\n }\r\n this._inactive.start();\r\n if (skipTimers) {\r\n this._inactive.force()\r\n }\r\n },\r\n dispose: function() {\r\n this._active.stop();\r\n this._inactive.stop();\r\n if (activeFeedback === this) {\r\n activeFeedback = null\r\n }\r\n this.callBase()\r\n },\r\n lockInactive: function() {\r\n this._active.force();\r\n this._inactive.stop();\r\n activeFeedback = null;\r\n this._cancel();\r\n return this._inactive.force.bind(this._inactive)\r\n }\r\n});\r\nFeedbackEmitter.lock = function(deferred) {\r\n var lockInactive = activeFeedback ? activeFeedback.lockInactive() : noop;\r\n deferred.done(lockInactive)\r\n};\r\nregisterEmitter({\r\n emitter: FeedbackEmitter,\r\n events: [ACTIVE_EVENT_NAME, INACTIVE_EVENT_NAME]\r\n});\r\nexport var lock = FeedbackEmitter.lock;\r\nexport {\r\n ACTIVE_EVENT_NAME as active, INACTIVE_EVENT_NAME as inactive\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n getKeyHash,\r\n noop,\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default Class.inherit({\r\n ctor: function(options) {\r\n this.options = options;\r\n this._setOption(\"disabledItemKeys\", []);\r\n this._clearItemKeys()\r\n },\r\n _clearItemKeys: function() {\r\n this._setOption(\"addedItemKeys\", []);\r\n this._setOption(\"removedItemKeys\", []);\r\n this._setOption(\"removedItems\", []);\r\n this._setOption(\"addedItems\", [])\r\n },\r\n validate: noop,\r\n _setOption: function(name, value) {\r\n this.options[name] = value\r\n },\r\n onSelectionChanged: function() {\r\n var addedItemKeys = this.options.addedItemKeys;\r\n var removedItemKeys = this.options.removedItemKeys;\r\n var addedItems = this.options.addedItems;\r\n var removedItems = this.options.removedItems;\r\n var selectedItems = this.options.selectedItems;\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n var onSelectionChanged = this.options.onSelectionChanged || noop;\r\n this._clearItemKeys();\r\n onSelectionChanged({\r\n selectedItems: selectedItems,\r\n selectedItemKeys: selectedItemKeys,\r\n addedItemKeys: addedItemKeys,\r\n removedItemKeys: removedItemKeys,\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n equalKeys: function(key1, key2) {\r\n if (this.options.equalByReference) {\r\n if (isObject(key1) && isObject(key2)) {\r\n return key1 === key2\r\n }\r\n }\r\n return equalByValue(key1, key2)\r\n },\r\n getSelectableItems: function(items) {\r\n return items.filter((function(item) {\r\n return !item.disabled\r\n }))\r\n },\r\n _clearSelection: function(keys, preserve, isDeselect, isSelectAll) {\r\n keys = keys || [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n },\r\n _loadFilteredData: function(remoteFilter, localFilter, select, isSelectAll) {\r\n var filterLength = encodeURI(JSON.stringify(remoteFilter)).length;\r\n var needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest;\r\n var deferred = new Deferred;\r\n var loadOptions = {\r\n filter: needLoadAllData ? void 0 : remoteFilter,\r\n select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields()\r\n };\r\n if (remoteFilter && 0 === remoteFilter.length) {\r\n deferred.resolve([])\r\n } else {\r\n this.options.load(loadOptions).done((function(items) {\r\n var filteredItems = isPlainObject(items) ? items.data : items;\r\n if (localFilter && !isSelectAll) {\r\n filteredItems = filteredItems.filter(localFilter)\r\n } else if (needLoadAllData) {\r\n filteredItems = dataQuery(filteredItems).filter(remoteFilter).toArray()\r\n }\r\n deferred.resolve(filteredItems)\r\n })).fail(deferred.reject.bind(deferred))\r\n }\r\n return deferred\r\n },\r\n updateSelectedItemKeyHash: function(keys) {\r\n for (var i = 0; i < keys.length; i++) {\r\n var keyHash = getKeyHash(keys[i]);\r\n if (!isObject(keyHash)) {\r\n this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || [];\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n keyIndices.push(i)\r\n }\r\n }\r\n },\r\n _isAnyItemSelected: function(items) {\r\n for (var i = 0; i < items.length; i++) {\r\n if (this.options.isItemSelected(items[i])) {\r\n return\r\n }\r\n }\r\n return false\r\n },\r\n _getFullSelectAllState: function() {\r\n var items = this.options.plainItems();\r\n var dataFilter = this.options.filter();\r\n var selectedItems = this.options.selectedItems;\r\n if (dataFilter) {\r\n selectedItems = dataQuery(selectedItems).filter(dataFilter).toArray()\r\n }\r\n var selectedItemsLength = selectedItems.length;\r\n if (!selectedItemsLength) {\r\n return this._isAnyItemSelected(items)\r\n }\r\n if (selectedItemsLength >= this.options.totalCount() - this.options.disabledItemKeys.length) {\r\n return true\r\n }\r\n return\r\n },\r\n _getVisibleSelectAllState: function() {\r\n var items = this.getSelectableItems(this.options.plainItems());\r\n var hasSelectedItems = false;\r\n var hasUnselectedItems = false;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var itemData = this.options.getItemData(item);\r\n var key = this.options.keyOf(itemData);\r\n if (this.options.isSelectableItem(item)) {\r\n if (this.isItemKeySelected(key)) {\r\n hasSelectedItems = true\r\n } else {\r\n hasUnselectedItems = true\r\n }\r\n }\r\n }\r\n if (hasSelectedItems) {\r\n return !hasUnselectedItems ? true : void 0\r\n } else {\r\n return false\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.deferred.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport SelectionStrategy from \"./selection.strategy\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default SelectionStrategy.inherit({\r\n getSelectedItems: function() {\r\n return this._loadFilteredData(this.options.selectionFilter)\r\n },\r\n getSelectedItemKeys: function() {\r\n var d = new Deferred;\r\n var that = this;\r\n var key = this.options.key();\r\n var select = isString(key) ? [key] : key;\r\n this._loadFilteredData(this.options.selectionFilter, null, select).done((function(items) {\r\n var keys = items.map((function(item) {\r\n return that.options.keyOf(item)\r\n }));\r\n d.resolve(keys)\r\n })).fail(d.reject);\r\n return d.promise()\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n if (isSelectAll) {\r\n var filter = this.options.filter();\r\n var needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect;\r\n if (needResetSelectionFilter) {\r\n this._setOption(\"selectionFilter\", isDeselect ? [] : null)\r\n } else {\r\n this._addSelectionFilter(isDeselect, filter, isSelectAll)\r\n }\r\n } else {\r\n if (!preserve) {\r\n this._setOption(\"selectionFilter\", [])\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (isDeselect) {\r\n this.removeSelectedItem(keys[i])\r\n } else {\r\n this.addSelectedItem(keys[i])\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new Deferred).resolve()\r\n },\r\n setSelectedItems: function(keys) {\r\n this._setOption(\"selectionFilter\", null);\r\n for (var i = 0; i < keys.length; i++) {\r\n this.addSelectedItem(keys[i])\r\n }\r\n },\r\n isItemDataSelected: function(itemData) {\r\n return this.isItemKeySelected(itemData)\r\n },\r\n isItemKeySelected: function(itemData) {\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n return !!dataQuery([itemData]).filter(selectionFilter).toArray().length\r\n },\r\n _getKeyExpr: function() {\r\n var keyField = this.options.key();\r\n if (Array.isArray(keyField) && 1 === keyField.length) {\r\n return keyField[0]\r\n }\r\n return keyField\r\n },\r\n _normalizeKey: function(key) {\r\n var keyExpr = this.options.key();\r\n if (Array.isArray(keyExpr) && 1 === keyExpr.length) {\r\n return key[keyExpr[0]]\r\n }\r\n return key\r\n },\r\n _getFilterByKey: function(key) {\r\n var keyField = this._getKeyExpr();\r\n var filter = [keyField, \"=\", this._normalizeKey(key)];\r\n if (Array.isArray(keyField)) {\r\n filter = [];\r\n for (var i = 0; i < keyField.length; i++) {\r\n filter.push([keyField[i], \"=\", key[keyField[i]]]);\r\n if (i !== keyField.length - 1) {\r\n filter.push(\"and\")\r\n }\r\n }\r\n }\r\n return filter\r\n },\r\n addSelectedItem: function(key) {\r\n var filter = this._getFilterByKey(key);\r\n this._addSelectionFilter(false, filter)\r\n },\r\n removeSelectedItem: function(key) {\r\n var filter = this._getFilterByKey(key);\r\n this._addSelectionFilter(true, filter)\r\n },\r\n validate: function() {\r\n var key = this.options.key;\r\n if (key && void 0 === key()) {\r\n throw errors.Error(\"E1042\", \"Deferred selection\")\r\n }\r\n },\r\n _findSubFilter: function(selectionFilter, filter) {\r\n if (!selectionFilter) {\r\n return -1\r\n }\r\n var filterString = JSON.stringify(filter);\r\n for (var index = 0; index < selectionFilter.length; index++) {\r\n var subFilter = selectionFilter[index];\r\n if (subFilter && JSON.stringify(subFilter) === filterString) {\r\n return index\r\n }\r\n }\r\n return -1\r\n },\r\n _isLastSubFilter: function(selectionFilter, filter) {\r\n if (selectionFilter && filter) {\r\n return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter)\r\n }\r\n return false\r\n },\r\n _addFilterOperator: function(selectionFilter, filterOperator) {\r\n if (selectionFilter.length > 1 && isString(selectionFilter[1]) && selectionFilter[1] !== filterOperator) {\r\n selectionFilter = [selectionFilter]\r\n }\r\n if (selectionFilter.length) {\r\n selectionFilter.push(filterOperator)\r\n }\r\n return selectionFilter\r\n },\r\n _denormalizeFilter: function(filter) {\r\n if (filter && isString(filter[0])) {\r\n filter = [filter]\r\n }\r\n return filter\r\n },\r\n _addSelectionFilter: function(isDeselect, filter, isSelectAll) {\r\n var currentFilter = isDeselect ? [\"!\", filter] : filter;\r\n var currentOperation = isDeselect ? \"and\" : \"or\";\r\n var needAddFilter = true;\r\n var selectionFilter = this.options.selectionFilter || [];\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (selectionFilter && selectionFilter.length) {\r\n this._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll);\r\n var filterIndex = this._removeSameFilter(selectionFilter, filter, !isDeselect);\r\n var isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex);\r\n needAddFilter = filter.length && !isKeyOperatorsAfterRemoved;\r\n if (needAddFilter) {\r\n selectionFilter = this._addFilterOperator(selectionFilter, currentOperation)\r\n }\r\n }\r\n if (needAddFilter) {\r\n selectionFilter.push(currentFilter)\r\n }\r\n selectionFilter = this._normalizeFilter(selectionFilter);\r\n this._setOption(\"selectionFilter\", !isDeselect && !selectionFilter.length ? null : selectionFilter)\r\n },\r\n _normalizeFilter: function(filter) {\r\n if (filter && 1 === filter.length) {\r\n filter = filter[0]\r\n }\r\n return filter\r\n },\r\n _removeFilterByIndex: function(filter, filterIndex, isSelectAll) {\r\n var operation = filter[1];\r\n if (filterIndex > 0) {\r\n filter.splice(filterIndex - 1, 2)\r\n } else {\r\n filter.splice(filterIndex, 2)\r\n }\r\n if (isSelectAll && \"and\" === operation) {\r\n filter.splice(0, filter.length)\r\n }\r\n },\r\n _isSimpleKeyFilter: function(filter, key) {\r\n return 3 === filter.length && filter[0] === key && \"=\" === filter[1]\r\n },\r\n _isKeyFilter: function(filter) {\r\n if (2 === filter.length && \"!\" === filter[0]) {\r\n return this._isKeyFilter(filter[1])\r\n }\r\n var keyField = this._getKeyExpr();\r\n if (Array.isArray(keyField)) {\r\n if (filter.length !== 2 * keyField.length - 1) {\r\n return false\r\n }\r\n for (var i = 0; i < keyField.length; i++) {\r\n if (i > 0 && \"and\" !== filter[2 * i - 1]) {\r\n return false\r\n }\r\n if (!this._isSimpleKeyFilter(filter[2 * i], keyField[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return this._isSimpleKeyFilter(filter, keyField)\r\n },\r\n _hasKeyFiltersOnlyStartingFromIndex: function(selectionFilter, filterIndex) {\r\n if (filterIndex >= 0) {\r\n for (var i = filterIndex; i < selectionFilter.length; i++) {\r\n if (\"string\" !== typeof selectionFilter[i] && !this._isKeyFilter(selectionFilter[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n _removeSameFilter: function(selectionFilter, filter, inverted, isSelectAll) {\r\n filter = inverted ? [\"!\", filter] : filter;\r\n if (JSON.stringify(filter) === JSON.stringify(selectionFilter)) {\r\n selectionFilter.splice(0, selectionFilter.length);\r\n return 0\r\n }\r\n var filterIndex = this._findSubFilter(selectionFilter, filter);\r\n if (filterIndex >= 0) {\r\n this._removeFilterByIndex(selectionFilter, filterIndex, isSelectAll);\r\n return filterIndex\r\n } else {\r\n for (var i = 0; i < selectionFilter.length; i++) {\r\n if (Array.isArray(selectionFilter[i]) && selectionFilter[i].length > 2) {\r\n var _filterIndex = this._removeSameFilter(selectionFilter[i], filter, false, isSelectAll);\r\n if (_filterIndex >= 0) {\r\n if (!selectionFilter[i].length) {\r\n this._removeFilterByIndex(selectionFilter, i, isSelectAll)\r\n } else if (1 === selectionFilter[i].length) {\r\n selectionFilter[i] = selectionFilter[i][0]\r\n }\r\n return _filterIndex\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n },\r\n getSelectAllState: function() {\r\n var filter = this.options.filter();\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n if (!selectionFilter.length) {\r\n return false\r\n }\r\n if (!filter || !filter.length) {\r\n return\r\n }\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (this._isLastSubFilter(selectionFilter, filter)) {\r\n return true\r\n }\r\n if (this._isLastSubFilter(selectionFilter, [\"!\", filter])) {\r\n return false\r\n }\r\n return\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.standard.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n removeDuplicates,\r\n uniqueValues\r\n} from \"../../core/utils/array\";\r\nimport {\r\n isKeysEqual\r\n} from \"../../core/utils/array_compare\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n SelectionFilterCreator\r\n} from \"../../core/utils/selection_filter\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport SelectionStrategy from \"./selection.strategy\";\r\nexport default SelectionStrategy.inherit({\r\n ctor: function(options) {\r\n this.callBase(options);\r\n this._initSelectedItemKeyHash()\r\n },\r\n _initSelectedItemKeyHash: function() {\r\n this._setOption(\"keyHashIndices\", this.options.equalByReference ? null : {})\r\n },\r\n getSelectedItemKeys: function() {\r\n return this.options.selectedItemKeys.slice(0)\r\n },\r\n getSelectedItems: function() {\r\n return this.options.selectedItems.slice(0)\r\n },\r\n _preserveSelectionUpdate: function(items, isDeselect) {\r\n var keyOf = this.options.keyOf;\r\n var keyIndicesToRemoveMap;\r\n var keyIndex;\r\n var i;\r\n if (!keyOf) {\r\n return\r\n }\r\n var isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference;\r\n if (isBatchDeselect) {\r\n keyIndicesToRemoveMap = {}\r\n }\r\n for (i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n if (isDeselect) {\r\n keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap);\r\n if (keyIndicesToRemoveMap && keyIndex >= 0) {\r\n keyIndicesToRemoveMap[keyIndex] = true\r\n }\r\n } else {\r\n this.addSelectedItem(key, item)\r\n }\r\n }\r\n if (isBatchDeselect) {\r\n this._batchRemoveSelectedItems(keyIndicesToRemoveMap)\r\n }\r\n },\r\n _batchRemoveSelectedItems: function(keyIndicesToRemoveMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys.slice(0);\r\n var selectedItems = this.options.selectedItems.slice(0);\r\n this.options.selectedItemKeys.length = 0;\r\n this.options.selectedItems.length = 0;\r\n for (var i = 0; i < selectedItemKeys.length; i++) {\r\n if (!keyIndicesToRemoveMap[i]) {\r\n this.options.selectedItemKeys.push(selectedItemKeys[i]);\r\n this.options.selectedItems.push(selectedItems[i])\r\n }\r\n }\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n },\r\n _loadSelectedItemsCore: function(keys, isDeselect, isSelectAll) {\r\n var deferred = new Deferred;\r\n var key = this.options.key();\r\n if (!keys.length && !isSelectAll) {\r\n deferred.resolve([]);\r\n return deferred\r\n }\r\n var filter = this.options.filter();\r\n if (isSelectAll && isDeselect && !filter) {\r\n deferred.resolve(this.getSelectedItems());\r\n return deferred\r\n }\r\n var selectionFilterCreator = new SelectionFilterCreator(keys, isSelectAll);\r\n var combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter);\r\n var deselectedItems = [];\r\n if (isDeselect) {\r\n deselectedItems = combinedFilter ? dataQuery(this.options.selectedItems).filter(combinedFilter).toArray() : this.options.selectedItems.slice(0)\r\n }\r\n var filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData);\r\n var localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key);\r\n filteredItems = filteredItems.filter(localFilter);\r\n if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) {\r\n deferred.resolve(filteredItems)\r\n } else {\r\n deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll)\r\n }\r\n return deferred\r\n },\r\n _replaceSelectionUpdate: function(items) {\r\n var internalKeys = [];\r\n var keyOf = this.options.keyOf;\r\n if (!keyOf) {\r\n return\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n internalKeys.push(key)\r\n }\r\n this.setSelectedItems(internalKeys, items)\r\n },\r\n _warnOnIncorrectKeys: function(keys) {\r\n var allowNullValue = this.options.allowNullValue;\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) {\r\n errors.log(\"W1002\", key)\r\n }\r\n }\r\n },\r\n _isMultiSelectEnabled: function() {\r\n var mode = this.options.mode;\r\n return \"all\" === mode || \"multiple\" === mode\r\n },\r\n _requestInProgress: function() {\r\n var _this$_lastLoadDeferr;\r\n return \"pending\" === (null === (_this$_lastLoadDeferr = this._lastLoadDeferred) || void 0 === _this$_lastLoadDeferr ? void 0 : _this$_lastLoadDeferr.state())\r\n },\r\n _concatRequestsItems: function(keys, isDeselect, oldRequestItems) {\r\n var deselectedItems = isDeselect ? keys : [];\r\n return {\r\n addedItems: oldRequestItems.added.concat(removeDuplicates(keys, this.options.selectedItemKeys)),\r\n removedItems: oldRequestItems.removed.concat(deselectedItems),\r\n keys: keys\r\n }\r\n },\r\n _collectLastRequestData: function(keys, isDeselect, isSelectAll) {\r\n var isDeselectAll = isDeselect && isSelectAll;\r\n var oldRequestItems = {\r\n added: [],\r\n removed: []\r\n };\r\n var multiSelectEnabled = this._isMultiSelectEnabled();\r\n var lastRequestData = multiSelectEnabled ? this._lastRequestData : {};\r\n if (multiSelectEnabled) {\r\n if (this._requestInProgress()) {\r\n if (isDeselectAll) {\r\n this._lastLoadDeferred.reject();\r\n lastRequestData = {}\r\n } else if (!isKeysEqual(keys, this.options.selectedItemKeys)) {\r\n oldRequestItems.added = lastRequestData.addedItems;\r\n oldRequestItems.removed = lastRequestData.removedItems;\r\n if (!isDeselect) {\r\n this._lastLoadDeferred.reject()\r\n }\r\n } else {\r\n lastRequestData = {}\r\n }\r\n }\r\n lastRequestData = this._concatRequestsItems(keys, isDeselect, oldRequestItems)\r\n }\r\n return lastRequestData\r\n },\r\n _updateKeysByLastRequestData: function(keys, isDeselect, isSelectAll) {\r\n var currentKeys = keys;\r\n if (this._isMultiSelectEnabled() && !isDeselect && !isSelectAll) {\r\n var _this$_lastRequestDat, _this$_lastRequestDat2;\r\n currentKeys = removeDuplicates(keys.concat(null === (_this$_lastRequestDat = this._lastRequestData) || void 0 === _this$_lastRequestDat ? void 0 : _this$_lastRequestDat.addedItems), null === (_this$_lastRequestDat2 = this._lastRequestData) || void 0 === _this$_lastRequestDat2 ? void 0 : _this$_lastRequestDat2.removedItems);\r\n currentKeys = uniqueValues(currentKeys)\r\n }\r\n return currentKeys\r\n },\r\n _loadSelectedItems: function(keys, isDeselect, isSelectAll) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n this._lastRequestData = this._collectLastRequestData(keys, isDeselect, isSelectAll);\r\n when(that._lastLoadDeferred).always((function() {\r\n var currentKeys = that._updateKeysByLastRequestData(keys, isDeselect, isSelectAll);\r\n that._loadSelectedItemsCore(currentKeys, isDeselect, isSelectAll).done(deferred.resolve).fail(deferred.reject)\r\n }));\r\n that._lastLoadDeferred = deferred;\r\n return deferred\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n var that = this;\r\n var deferred = that._loadSelectedItems(keys, isDeselect, isSelectAll);\r\n deferred.done((function(items) {\r\n if (preserve) {\r\n that._preserveSelectionUpdate(items, isDeselect)\r\n } else {\r\n that._replaceSelectionUpdate(items)\r\n }\r\n that.onSelectionChanged()\r\n }));\r\n return deferred\r\n },\r\n addSelectedItem: function(key, itemData) {\r\n if (isDefined(itemData) && itemData.disabled) {\r\n if (-1 === this.options.disabledItemKeys.indexOf(key)) {\r\n this.options.disabledItemKeys.push(key)\r\n }\r\n return\r\n }\r\n var keyHash = this._getKeyHash(key);\r\n if (-1 === this._indexOfSelectedItemKey(keyHash)) {\r\n if (!isObject(keyHash) && this.options.keyHashIndices) {\r\n this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length]\r\n }\r\n this.options.selectedItemKeys.push(key);\r\n this.options.addedItemKeys.push(key);\r\n this.options.addedItems.push(itemData);\r\n this.options.selectedItems.push(itemData)\r\n }\r\n },\r\n _getSelectedIndexByKey: function(key, ignoreIndicesMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n for (var index = 0; index < selectedItemKeys.length; index++) {\r\n if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) {\r\n return index\r\n }\r\n }\r\n return -1\r\n },\r\n _getSelectedIndexByHash: function(key, ignoreIndicesMap) {\r\n var indices = this.options.keyHashIndices[key];\r\n if (indices && indices.length > 1 && ignoreIndicesMap) {\r\n indices = indices.filter((function(index) {\r\n return !ignoreIndicesMap[index]\r\n }))\r\n }\r\n return indices && indices[0] >= 0 ? indices[0] : -1\r\n },\r\n _indexOfSelectedItemKey: function(key, ignoreIndicesMap) {\r\n var selectedIndex;\r\n if (this.options.equalByReference) {\r\n selectedIndex = this.options.selectedItemKeys.indexOf(key)\r\n } else if (isObject(key)) {\r\n selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap)\r\n } else {\r\n selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap)\r\n }\r\n return selectedIndex\r\n },\r\n _shiftSelectedKeyIndices: function(keyIndex) {\r\n for (var currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) {\r\n var currentKey = this.options.selectedItemKeys[currentKeyIndex];\r\n var currentKeyHash = getKeyHash(currentKey);\r\n var currentKeyIndices = this.options.keyHashIndices[currentKeyHash];\r\n if (!currentKeyIndices) {\r\n continue\r\n }\r\n for (var i = 0; i < currentKeyIndices.length; i++) {\r\n if (currentKeyIndices[i] > keyIndex) {\r\n currentKeyIndices[i]--\r\n }\r\n }\r\n }\r\n },\r\n removeSelectedItem: function(key, keyIndicesToRemoveMap) {\r\n var keyHash = this._getKeyHash(key);\r\n var isBatchDeselect = !!keyIndicesToRemoveMap;\r\n var keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap);\r\n if (keyIndex < 0) {\r\n return keyIndex\r\n }\r\n this.options.removedItemKeys.push(key);\r\n this.options.removedItems.push(this.options.selectedItems[keyIndex]);\r\n if (isBatchDeselect) {\r\n return keyIndex\r\n }\r\n this.options.selectedItemKeys.splice(keyIndex, 1);\r\n this.options.selectedItems.splice(keyIndex, 1);\r\n if (isObject(keyHash) || !this.options.keyHashIndices) {\r\n return keyIndex\r\n }\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n if (!keyIndices) {\r\n return keyIndex\r\n }\r\n keyIndices.shift();\r\n if (!keyIndices.length) {\r\n delete this.options.keyHashIndices[keyHash]\r\n }\r\n this._shiftSelectedKeyIndices(keyIndex);\r\n return keyIndex\r\n },\r\n _updateAddedItemKeys: function(keys, items) {\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!this.isItemKeySelected(keys[i])) {\r\n this.options.addedItemKeys.push(keys[i]);\r\n this.options.addedItems.push(items[i])\r\n }\r\n }\r\n },\r\n _updateRemovedItemKeys: function(keys, oldSelectedKeys, oldSelectedItems) {\r\n for (var i = 0; i < oldSelectedKeys.length; i++) {\r\n if (!this.isItemKeySelected(oldSelectedKeys[i])) {\r\n this.options.removedItemKeys.push(oldSelectedKeys[i]);\r\n this.options.removedItems.push(oldSelectedItems[i])\r\n }\r\n }\r\n },\r\n _isItemSelectionInProgress: function(key, checkPending) {\r\n var shouldCheckPending = checkPending && this._lastRequestData && this._requestInProgress();\r\n if (shouldCheckPending) {\r\n return this._lastRequestData.addedItems && -1 !== this._lastRequestData.addedItems.indexOf(key)\r\n } else {\r\n return false\r\n }\r\n },\r\n _getKeyHash: function(key) {\r\n return this.options.equalByReference ? key : getKeyHash(key)\r\n },\r\n setSelectedItems: function(keys, items) {\r\n this._updateAddedItemKeys(keys, items);\r\n var oldSelectedKeys = this.options.selectedItemKeys;\r\n var oldSelectedItems = this.options.selectedItems;\r\n if (!this.options.equalByReference) {\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(keys)\r\n }\r\n this._setOption(\"selectedItemKeys\", keys);\r\n this._setOption(\"selectedItems\", items);\r\n this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems)\r\n },\r\n isItemDataSelected: function(itemData) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n var key = this.options.keyOf(itemData);\r\n return this.isItemKeySelected(key, options)\r\n },\r\n isItemKeySelected: function(key) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n var result = this._isItemSelectionInProgress(key, options.checkPending);\r\n if (!result) {\r\n var keyHash = this._getKeyHash(key);\r\n var index = this._indexOfSelectedItemKey(keyHash);\r\n result = -1 !== index\r\n }\r\n return result\r\n },\r\n getSelectAllState: function(visibleOnly) {\r\n if (visibleOnly) {\r\n return this._getVisibleSelectAllState()\r\n } else {\r\n return this._getFullSelectAllState()\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport deferredStrategy from \"./selection.strategy.deferred\";\r\nimport standardStrategy from \"./selection.strategy.standard\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default Class.inherit({\r\n ctor: function(options) {\r\n this.options = extend(this._getDefaultOptions(), options, {\r\n selectedItemKeys: options.selectedKeys || []\r\n });\r\n this._selectionStrategy = this.options.deferred ? new deferredStrategy(this.options) : new standardStrategy(this.options);\r\n this._focusedItemIndex = -1;\r\n if (!this.options.equalByReference) {\r\n this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n }\r\n },\r\n _getDefaultOptions: function() {\r\n return {\r\n allowNullValue: false,\r\n deferred: false,\r\n equalByReference: false,\r\n mode: \"multiple\",\r\n selectedItems: [],\r\n selectionFilter: [],\r\n maxFilterLengthInRequest: 0,\r\n onSelectionChanged: noop,\r\n key: noop,\r\n keyOf: function(item) {\r\n return item\r\n },\r\n load: function() {\r\n return (new Deferred).resolve([])\r\n },\r\n totalCount: function() {\r\n return -1\r\n },\r\n isSelectableItem: function() {\r\n return true\r\n },\r\n isItemSelected: function() {\r\n return false\r\n },\r\n getItemData: function(item) {\r\n return item\r\n },\r\n dataFields: noop,\r\n filter: noop\r\n }\r\n },\r\n validate: function() {\r\n this._selectionStrategy.validate()\r\n },\r\n getSelectedItemKeys: function() {\r\n return this._selectionStrategy.getSelectedItemKeys()\r\n },\r\n getSelectedItems: function() {\r\n return this._selectionStrategy.getSelectedItems()\r\n },\r\n selectionFilter: function(value) {\r\n if (void 0 === value) {\r\n return this.options.selectionFilter\r\n }\r\n var filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value);\r\n this.options.selectionFilter = value;\r\n filterIsChanged && this.onSelectionChanged()\r\n },\r\n setSelection: function(keys) {\r\n return this.selectedItemKeys(keys)\r\n },\r\n select: function(keys) {\r\n return this.selectedItemKeys(keys, true)\r\n },\r\n deselect: function(keys) {\r\n return this.selectedItemKeys(keys, true, true)\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n var _keys;\r\n keys = null !== (_keys = keys) && void 0 !== _keys ? _keys : [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n },\r\n clearSelection: function() {\r\n return this.selectedItemKeys([])\r\n },\r\n _addSelectedItem: function(itemData, key) {\r\n this._selectionStrategy.addSelectedItem(key, itemData)\r\n },\r\n _removeSelectedItem: function(key) {\r\n this._selectionStrategy.removeSelectedItem(key)\r\n },\r\n _setSelectedItems: function(keys, items) {\r\n this._selectionStrategy.setSelectedItems(keys, items)\r\n },\r\n onSelectionChanged: function() {\r\n this._selectionStrategy.onSelectionChanged()\r\n },\r\n changeItemSelection: function(itemIndex, keys) {\r\n var isSelectedItemsChanged;\r\n var items = this.options.plainItems();\r\n var item = items[itemIndex];\r\n if (!this.isSelectable() || !this.isDataItem(item)) {\r\n return false\r\n }\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n keys = keys || {};\r\n if (keys.shift && \"multiple\" === this.options.mode && this._focusedItemIndex >= 0) {\r\n isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items)\r\n } else if (keys.control) {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n var isSelected = this._selectionStrategy.isItemDataSelected(itemData);\r\n if (\"single\" === this.options.mode) {\r\n this.clearSelectedItems()\r\n }\r\n if (isSelected) {\r\n this._removeSelectedItem(itemKey)\r\n } else {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n isSelectedItemsChanged = true\r\n } else {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n var isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey);\r\n if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) {\r\n this._setSelectedItems([itemKey], [itemData]);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n if (isSelectedItemsChanged) {\r\n this._focusedItemIndex = itemIndex;\r\n this.onSelectionChanged();\r\n return true\r\n }\r\n },\r\n isDataItem: function(item) {\r\n return this.options.isSelectableItem(item)\r\n },\r\n isSelectable: function() {\r\n return \"single\" === this.options.mode || \"multiple\" === this.options.mode\r\n },\r\n isItemDataSelected: function(data) {\r\n return this._selectionStrategy.isItemDataSelected(data, {\r\n checkPending: true\r\n })\r\n },\r\n isItemSelected: function(arg, options) {\r\n return this._selectionStrategy.isItemKeySelected(arg, options)\r\n },\r\n _resetItemSelectionWhenShiftKeyPressed: function() {\r\n delete this._shiftFocusedItemIndex\r\n },\r\n _resetFocusedItemIndex: function() {\r\n this._focusedItemIndex = -1\r\n },\r\n changeItemSelectionWhenShiftKeyPressed: function(itemIndex, items) {\r\n var isSelectedItemsChanged = false;\r\n var itemIndexStep;\r\n var index;\r\n var keyOf = this.options.keyOf;\r\n var focusedItem = items[this._focusedItemIndex];\r\n var focusedData = this.options.getItemData(focusedItem);\r\n var focusedKey = keyOf(focusedData);\r\n var isFocusedItemSelected = focusedItem && this.isItemDataSelected(focusedData);\r\n if (!isDefined(this._shiftFocusedItemIndex)) {\r\n this._shiftFocusedItemIndex = this._focusedItemIndex\r\n }\r\n var data;\r\n var itemKey;\r\n if (this._shiftFocusedItemIndex !== this._focusedItemIndex) {\r\n itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n for (index = this._focusedItemIndex; index !== this._shiftFocusedItemIndex; index += itemIndexStep) {\r\n if (this.isDataItem(items[index])) {\r\n itemKey = keyOf(this.options.getItemData(items[index]));\r\n this._removeSelectedItem(itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (itemIndex !== this._shiftFocusedItemIndex) {\r\n itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n for (index = itemIndex; index !== this._shiftFocusedItemIndex; index += itemIndexStep) {\r\n if (this.isDataItem(items[index])) {\r\n data = this.options.getItemData(items[index]);\r\n itemKey = keyOf(data);\r\n this._addSelectedItem(data, itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (this.isDataItem(focusedItem) && !isFocusedItemSelected) {\r\n this._addSelectedItem(focusedData, focusedKey);\r\n isSelectedItemsChanged = true\r\n }\r\n return isSelectedItemsChanged\r\n },\r\n clearSelectedItems: function() {\r\n this._setSelectedItems([], [])\r\n },\r\n selectAll: function(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(false)\r\n } else {\r\n return this.selectedItemKeys([], true, false, true)\r\n }\r\n },\r\n deselectAll: function(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(true)\r\n } else {\r\n return this.selectedItemKeys([], true, true, true)\r\n }\r\n },\r\n _onePageSelectAll: function(isDeselect) {\r\n var items = this._selectionStrategy.getSelectableItems(this.options.plainItems());\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (this.isDataItem(item)) {\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n var isSelected = this.isItemSelected(itemKey);\r\n if (!isSelected && !isDeselect) {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n if (isSelected && isDeselect) {\r\n this._removeSelectedItem(itemKey)\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new Deferred).resolve()\r\n },\r\n getSelectAllState: function(visibleOnly) {\r\n return this._selectionStrategy.getSelectAllState(visibleOnly)\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/templates/child_default_template.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nexport class ChildDefaultTemplate extends TemplateBase {\r\n constructor(name) {\r\n super();\r\n this.name = name\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/call_once.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar callOnce = function(handler) {\r\n var result;\r\n var _wrappedHandler = function() {\r\n result = handler.apply(this, arguments);\r\n _wrappedHandler = function() {\r\n return result\r\n };\r\n return result\r\n };\r\n return function() {\r\n return _wrappedHandler.apply(this, arguments)\r\n }\r\n};\r\nexport default callOnce;\r\n","/**\r\n * DevExtreme (esm/ui/draggable.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n getElementsFromPoint,\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nvar window = getWindow();\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n quadToObject\r\n} from \"../core/utils/string\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport Animator from \"./scroll_view/animator\";\r\nimport {\r\n dasherize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n addNamespace,\r\n needSkipEvent\r\n} from \"../events/utils/index\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd,\r\n enter as dragEventEnter,\r\n leave as dragEventLeave\r\n} from \"../events/drag\";\r\nimport positionUtils from \"../animation/position\";\r\nimport {\r\n isFunction,\r\n isObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../core/utils/common\";\r\nimport {\r\n value as viewPort\r\n} from \"../core/utils/view_port\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../core/templates/empty_template\";\r\nimport {\r\n when,\r\n fromPromise,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar DRAGGABLE = \"dxDraggable\";\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventStart, DRAGGABLE);\r\nvar DRAG_EVENT_NAME = addNamespace(dragEventMove, DRAGGABLE);\r\nvar DRAGEND_EVENT_NAME = addNamespace(dragEventEnd, DRAGGABLE);\r\nvar DRAG_ENTER_EVENT_NAME = addNamespace(dragEventEnter, DRAGGABLE);\r\nvar DRAGEND_LEAVE_EVENT_NAME = addNamespace(dragEventLeave, DRAGGABLE);\r\nvar POINTERDOWN_EVENT_NAME = addNamespace(pointerEvents.down, DRAGGABLE);\r\nvar CLONE_CLASS = \"clone\";\r\nvar targetDraggable;\r\nvar sourceDraggable;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar getMousePosition = event => ({\r\n x: event.pageX - $(window).scrollLeft(),\r\n y: event.pageY - $(window).scrollTop()\r\n});\r\nvar GESTURE_COVER_CLASS = \"dx-gesture-cover\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nclass ScrollHelper {\r\n constructor(orientation, component) {\r\n this._preventScroll = true;\r\n this._component = component;\r\n if (\"vertical\" === orientation) {\r\n this._scrollValue = \"scrollTop\";\r\n this._overFlowAttr = \"overflowY\";\r\n this._sizeAttr = \"height\";\r\n this._scrollSizeProp = \"scrollHeight\";\r\n this._clientSizeProp = \"clientHeight\";\r\n this._limitProps = {\r\n start: \"top\",\r\n end: \"bottom\"\r\n }\r\n } else {\r\n this._scrollValue = \"scrollLeft\";\r\n this._overFlowAttr = \"overflowX\";\r\n this._sizeAttr = \"width\";\r\n this._scrollSizeProp = \"scrollWidth\";\r\n this._clientSizeProp = \"clientWidth\";\r\n this._limitProps = {\r\n start: \"left\",\r\n end: \"right\"\r\n }\r\n }\r\n }\r\n updateScrollable(elements, mousePosition) {\r\n var needResetScrollable = !elements.some(element => {\r\n var $element = $(element);\r\n var isTargetOverOverlayWrapper = $element.hasClass(OVERLAY_WRAPPER_CLASS) && \"none\" !== $element.css(\"pointerEvents\");\r\n var isTargetOverOverlayContent = $element.hasClass(OVERLAY_CONTENT_CLASS);\r\n return isTargetOverOverlayWrapper || isTargetOverOverlayContent || this._trySetScrollable(element, mousePosition)\r\n });\r\n if (needResetScrollable) {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0\r\n }\r\n }\r\n isScrolling() {\r\n return !!this._scrollSpeed\r\n }\r\n isScrollable($element) {\r\n return (\"auto\" === $element.css(this._overFlowAttr) || $element.hasClass(\"dx-scrollable-container\")) && $element.prop(this._scrollSizeProp) > $element[this._sizeAttr]()\r\n }\r\n _trySetScrollable(element, mousePosition) {\r\n var $element = $(element);\r\n var distanceToBorders;\r\n var sensitivity = this._component.option(\"scrollSensitivity\");\r\n var isScrollable = this.isScrollable($element);\r\n if (isScrollable) {\r\n distanceToBorders = this._calculateDistanceToBorders($element, mousePosition);\r\n if (sensitivity > distanceToBorders[this._limitProps.start]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = -this._calculateScrollSpeed(distanceToBorders[this._limitProps.start]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else if (sensitivity > distanceToBorders[this._limitProps.end]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = this._calculateScrollSpeed(distanceToBorders[this._limitProps.end]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else {\r\n isScrollable = false;\r\n this._preventScroll = false\r\n }\r\n }\r\n return isScrollable\r\n }\r\n _calculateDistanceToBorders($area, mousePosition) {\r\n var area = $area.get(0);\r\n var areaBoundingRect;\r\n if (area) {\r\n areaBoundingRect = getBoundingRect(area);\r\n return {\r\n left: mousePosition.x - areaBoundingRect.left,\r\n top: mousePosition.y - areaBoundingRect.top,\r\n right: areaBoundingRect.right - mousePosition.x,\r\n bottom: areaBoundingRect.bottom - mousePosition.y\r\n }\r\n } else {\r\n return {}\r\n }\r\n }\r\n _calculateScrollSpeed(distance) {\r\n var component = this._component;\r\n var sensitivity = component.option(\"scrollSensitivity\");\r\n var maxSpeed = component.option(\"scrollSpeed\");\r\n return Math.ceil(Math.pow((sensitivity - distance) / sensitivity, 2) * maxSpeed)\r\n }\r\n scrollByStep() {\r\n if (this._$scrollableAtPointer && this._scrollSpeed) {\r\n if (this._$scrollableAtPointer.hasClass(\"dx-scrollable-container\")) {\r\n var $scrollable = this._$scrollableAtPointer.closest(\".dx-scrollable\");\r\n var scrollableInstance = $scrollable.data(\"dxScrollable\") || $scrollable.data(\"dxScrollView\");\r\n if (scrollableInstance) {\r\n var nextScrollPosition = scrollableInstance.scrollOffset()[this._limitProps.start] + this._scrollSpeed;\r\n scrollableInstance.scrollTo({\r\n [this._limitProps.start]: nextScrollPosition\r\n })\r\n }\r\n } else {\r\n var _nextScrollPosition = this._$scrollableAtPointer[this._scrollValue]() + this._scrollSpeed;\r\n this._$scrollableAtPointer[this._scrollValue](_nextScrollPosition)\r\n }\r\n var dragMoveArgs = this._component._dragMoveArgs;\r\n if (dragMoveArgs) {\r\n this._component._dragMoveHandler(dragMoveArgs)\r\n }\r\n }\r\n }\r\n reset() {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0;\r\n this._preventScroll = true\r\n }\r\n isOutsideScrollable($scrollable, event) {\r\n if (!$scrollable) {\r\n return false\r\n }\r\n var scrollableSize = getBoundingRect($scrollable.get(0));\r\n var start = scrollableSize[this._limitProps.start];\r\n var size = scrollableSize[this._sizeAttr];\r\n var mousePosition = getMousePosition(event);\r\n var location = \"width\" === this._sizeAttr ? mousePosition.x : mousePosition.y;\r\n return location < start || location > start + size\r\n }\r\n}\r\nvar ScrollAnimator = Animator.inherit({\r\n ctor: function(strategy) {\r\n this.callBase();\r\n this._strategy = strategy\r\n },\r\n _step: function() {\r\n var horizontalScrollHelper = this._strategy._horizontalScrollHelper;\r\n var verticalScrollHelper = this._strategy._verticalScrollHelper;\r\n horizontalScrollHelper && horizontalScrollHelper.scrollByStep();\r\n verticalScrollHelper && verticalScrollHelper.scrollByStep()\r\n }\r\n});\r\nvar Draggable = DOMComponent.inherit({\r\n reset: noop,\r\n dragMove: noop,\r\n dragEnter: noop,\r\n dragLeave: noop,\r\n dragEnd: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable._fireRemoveEvent(sourceEvent);\r\n return (new Deferred).resolve()\r\n },\r\n _fireRemoveEvent: noop,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n onDragStart: null,\r\n onDragMove: null,\r\n onDragEnd: null,\r\n onDragEnter: null,\r\n onDragLeave: null,\r\n onDrop: null,\r\n immediate: true,\r\n dragDirection: \"both\",\r\n boundary: void 0,\r\n boundOffset: 0,\r\n allowMoveByClick: false,\r\n itemData: null,\r\n container: void 0,\r\n dragTemplate: void 0,\r\n contentTemplate: \"content\",\r\n handle: \"\",\r\n filter: \"\",\r\n clone: false,\r\n autoScroll: true,\r\n scrollSpeed: 30,\r\n scrollSensitivity: 60,\r\n group: void 0,\r\n data: void 0\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase.apply(this, arguments);\r\n extend(this._optionsByReference, {\r\n component: true,\r\n group: true,\r\n itemData: true,\r\n data: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._attachEventHandlers();\r\n this._scrollAnimator = new ScrollAnimator(this);\r\n this._horizontalScrollHelper = new ScrollHelper(\"horizontal\", this);\r\n this._verticalScrollHelper = new ScrollHelper(\"vertical\", this)\r\n },\r\n _normalizeCursorOffset: function(offset) {\r\n if (isObject(offset)) {\r\n offset = {\r\n h: offset.x,\r\n v: offset.y\r\n }\r\n }\r\n offset = splitPair(offset).map(value => parseFloat(value));\r\n return {\r\n left: offset[0],\r\n top: 1 === offset.length ? offset[0] : offset[1]\r\n }\r\n },\r\n _getNormalizedCursorOffset: function(offset, options) {\r\n if (isFunction(offset)) {\r\n offset = offset.call(this, options)\r\n }\r\n return this._normalizeCursorOffset(offset)\r\n },\r\n _calculateElementOffset: function(options) {\r\n var elementOffset;\r\n var dragElementOffset;\r\n var event = options.event;\r\n var $element = $(options.itemElement);\r\n var $dragElement = $(options.dragElement);\r\n var isCloned = this._dragElementIsCloned();\r\n var cursorOffset = this.option(\"cursorOffset\");\r\n var normalizedCursorOffset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var currentLocate = this._initialLocate = locate($dragElement);\r\n if (isCloned || options.initialOffset || cursorOffset) {\r\n elementOffset = options.initialOffset || $element.offset();\r\n if (cursorOffset) {\r\n normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);\r\n if (isFinite(normalizedCursorOffset.left)) {\r\n elementOffset.left = event.pageX\r\n }\r\n if (isFinite(normalizedCursorOffset.top)) {\r\n elementOffset.top = event.pageY\r\n }\r\n }\r\n dragElementOffset = $dragElement.offset();\r\n elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;\r\n elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left\r\n }\r\n return elementOffset\r\n },\r\n _initPosition: function(options) {\r\n var $dragElement = $(options.dragElement);\r\n var elementOffset = this._calculateElementOffset(options);\r\n if (elementOffset) {\r\n this._move(elementOffset, $dragElement)\r\n }\r\n this._startPosition = locate($dragElement)\r\n },\r\n _startAnimator: function() {\r\n if (!this._scrollAnimator.inProgress()) {\r\n this._scrollAnimator.start()\r\n }\r\n },\r\n _stopAnimator: function() {\r\n this._scrollAnimator.stop()\r\n },\r\n _addWidgetPrefix: function(className) {\r\n var componentName = this.NAME;\r\n return dasherize(componentName) + (className ? \"-\" + className : \"\")\r\n },\r\n _getItemsSelector: function() {\r\n return this.option(\"filter\") || \"\"\r\n },\r\n _$content: function() {\r\n var $element = this.$element();\r\n var $wrapper = $element.children(\".dx-template-wrapper\");\r\n return $wrapper.length ? $wrapper : $element\r\n },\r\n _attachEventHandlers: function() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var $element = this._$content();\r\n var itemsSelector = this._getItemsSelector();\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n var data = {\r\n direction: this.option(\"dragDirection\"),\r\n immediate: this.option(\"immediate\"),\r\n checkDropTarget: ($target, event) => {\r\n var targetGroup = this.option(\"group\");\r\n var sourceGroup = this._getSourceDraggable().option(\"group\");\r\n var $scrollable = this._getScrollable($target);\r\n if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {\r\n return false\r\n }\r\n return sourceGroup && sourceGroup === targetGroup\r\n }\r\n };\r\n if (allowMoveByClick) {\r\n $element = this._getArea();\r\n eventsEngine.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))\r\n }\r\n if (\">\" === itemsSelector[0]) {\r\n itemsSelector = itemsSelector.slice(1)\r\n }\r\n eventsEngine.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));\r\n eventsEngine.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));\r\n eventsEngine.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this))\r\n },\r\n _dragElementIsCloned: function() {\r\n return this._$dragElement && this._$dragElement.hasClass(this._addWidgetPrefix(CLONE_CLASS))\r\n },\r\n _getDragTemplateArgs: function($element, $container) {\r\n return {\r\n container: getPublicElement($container),\r\n model: {\r\n itemData: this.option(\"itemData\"),\r\n itemElement: getPublicElement($element)\r\n }\r\n }\r\n },\r\n _createDragElement: function($element) {\r\n var result = $element;\r\n var clone = this.option(\"clone\");\r\n var $container = this._getContainer();\r\n var template = this.option(\"dragTemplate\");\r\n if (template) {\r\n template = this._getTemplate(template);\r\n result = $(\"
\").appendTo($container);\r\n template.render(this._getDragTemplateArgs($element, result))\r\n } else if (clone) {\r\n result = $(\"
\").appendTo($container);\r\n $element.clone().css({\r\n width: $element.css(\"width\"),\r\n height: $element.css(\"height\")\r\n }).appendTo(result)\r\n }\r\n return result.toggleClass(this._addWidgetPrefix(CLONE_CLASS), result.get(0) !== $element.get(0)).toggleClass(\"dx-rtl\", this.option(\"rtlEnabled\"))\r\n },\r\n _resetDragElement: function() {\r\n if (this._dragElementIsCloned()) {\r\n this._$dragElement.remove()\r\n } else {\r\n this._toggleDraggingClass(false)\r\n }\r\n this._$dragElement = null\r\n },\r\n _resetSourceElement: function() {\r\n this._toggleDragSourceClass(false);\r\n this._$sourceElement = null\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$content(), \".\" + DRAGGABLE);\r\n eventsEngine.off(this._getArea(), \".\" + DRAGGABLE)\r\n },\r\n _move: function(position, $element) {\r\n move($element || this._$dragElement, position)\r\n },\r\n _getDraggableElement: function(e) {\r\n var $sourceElement = this._getSourceElement();\r\n if ($sourceElement) {\r\n return $sourceElement\r\n }\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n if (allowMoveByClick) {\r\n return this.$element()\r\n }\r\n var $target = $(e && e.target);\r\n var itemsSelector = this._getItemsSelector();\r\n if (\">\" === itemsSelector[0]) {\r\n var $items = this._$content().find(itemsSelector);\r\n if (!$items.is($target)) {\r\n $target = $target.closest($items)\r\n }\r\n }\r\n return $target\r\n },\r\n _getSourceElement: function() {\r\n var draggable = this._getSourceDraggable();\r\n return draggable._$sourceElement\r\n },\r\n _pointerDownHandler: function(e) {\r\n if (needSkipEvent(e)) {\r\n return\r\n }\r\n var position = {};\r\n var $element = this.$element();\r\n var dragDirection = this.option(\"dragDirection\");\r\n if (\"horizontal\" === dragDirection || \"both\" === dragDirection) {\r\n position.left = e.pageX - $element.offset().left + locate($element).left - $element.width() / 2\r\n }\r\n if (\"vertical\" === dragDirection || \"both\" === dragDirection) {\r\n position.top = e.pageY - $element.offset().top + locate($element).top - $element.height() / 2\r\n }\r\n this._move(position, $element);\r\n this._getAction(\"onDragMove\")(this._getEventArgs(e))\r\n },\r\n _isValidElement: function(event, $element) {\r\n var handle = this.option(\"handle\");\r\n var $target = $(event.originalEvent && event.originalEvent.target);\r\n if (handle && !$target.closest(handle).length) {\r\n return false\r\n }\r\n if (!$element.length) {\r\n return false\r\n }\r\n return !$element.is(\".dx-state-disabled, .dx-state-disabled *\")\r\n },\r\n _dragStartHandler: function(e) {\r\n var $element = this._getDraggableElement(e);\r\n if (this._$sourceElement) {\r\n return\r\n }\r\n if (!this._isValidElement(e, $element)) {\r\n e.cancel = true;\r\n return\r\n }\r\n var dragStartArgs = this._getDragStartArgs(e, $element);\r\n this._getAction(\"onDragStart\")(dragStartArgs);\r\n if (dragStartArgs.cancel) {\r\n e.cancel = true;\r\n return\r\n }\r\n this.option(\"itemData\", dragStartArgs.itemData);\r\n this._setSourceDraggable();\r\n this._$sourceElement = $element;\r\n var initialOffset = $element.offset();\r\n var $dragElement = this._$dragElement = this._createDragElement($element);\r\n this._toggleDraggingClass(true);\r\n this._toggleDragSourceClass(true);\r\n this._setGestureCoverCursor($dragElement.children());\r\n var isFixedPosition = \"fixed\" === $dragElement.css(\"position\");\r\n this._initPosition(extend({}, dragStartArgs, {\r\n dragElement: $dragElement.get(0),\r\n initialOffset: isFixedPosition && initialOffset\r\n }));\r\n var $area = this._getArea();\r\n var areaOffset = this._getAreaOffset($area);\r\n var boundOffset = this._getBoundOffset();\r\n var areaWidth = $area.outerWidth();\r\n var areaHeight = $area.outerHeight();\r\n var elementWidth = $dragElement.width();\r\n var elementHeight = $dragElement.height();\r\n var startOffset_left = $dragElement.offset().left - areaOffset.left,\r\n startOffset_top = $dragElement.offset().top - areaOffset.top;\r\n if ($area.length) {\r\n e.maxLeftOffset = startOffset_left - boundOffset.left;\r\n e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right;\r\n e.maxTopOffset = startOffset_top - boundOffset.top;\r\n e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom\r\n }\r\n if (this.option(\"autoScroll\")) {\r\n this._startAnimator()\r\n }\r\n },\r\n _getAreaOffset: function($area) {\r\n var offset = $area && positionUtils.offset($area);\r\n return offset ? offset : {\r\n left: 0,\r\n top: 0\r\n }\r\n },\r\n _toggleDraggingClass: function(value) {\r\n this._$dragElement && this._$dragElement.toggleClass(this._addWidgetPrefix(\"dragging\"), value)\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source\"), value)\r\n },\r\n _setGestureCoverCursor: function($element) {\r\n $(\".\".concat(GESTURE_COVER_CLASS)).css(\"cursor\", $element.css(\"cursor\"))\r\n },\r\n _getBoundOffset: function() {\r\n var boundOffset = this.option(\"boundOffset\");\r\n if (isFunction(boundOffset)) {\r\n boundOffset = boundOffset.call(this)\r\n }\r\n return quadToObject(boundOffset)\r\n },\r\n _getArea: function() {\r\n var area = this.option(\"boundary\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n return $(area)\r\n },\r\n _getContainer: function() {\r\n var container = this.option(\"container\");\r\n if (void 0 === container) {\r\n container = viewPort()\r\n }\r\n return $(container)\r\n },\r\n _dragMoveHandler: function(e, scrollBy) {\r\n this._dragMoveArgs = e;\r\n if (!this._$dragElement) {\r\n e.cancel = true;\r\n return\r\n }\r\n var offset = e.offset;\r\n var startPosition = this._startPosition;\r\n this._move({\r\n left: startPosition.left + offset.x,\r\n top: startPosition.top + offset.y\r\n });\r\n if (!scrollBy) {\r\n this._updateScrollable(e)\r\n }\r\n var eventArgs = this._getEventArgs(e);\r\n this._getAction(\"onDragMove\")(eventArgs);\r\n if (true === eventArgs.cancel) {\r\n return\r\n }\r\n var targetDraggable = this._getTargetDraggable();\r\n targetDraggable.dragMove(e, scrollBy)\r\n },\r\n _updateScrollable: function(e) {\r\n if (this.option(\"autoScroll\")) {\r\n var mousePosition = getMousePosition(e);\r\n var allObjects = getElementsFromPoint(mousePosition.x, mousePosition.y);\r\n this._verticalScrollHelper.updateScrollable(allObjects, mousePosition);\r\n this._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)\r\n }\r\n },\r\n _getScrollable: function($element) {\r\n var $scrollable;\r\n $element.parents().toArray().some(parent => {\r\n var $parent = $(parent);\r\n if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) {\r\n $scrollable = $parent;\r\n return true\r\n }\r\n });\r\n return $scrollable\r\n },\r\n _defaultActionArgs: function() {\r\n var args = this.callBase.apply(this, arguments);\r\n var component = this.option(\"component\");\r\n if (component) {\r\n args.component = component;\r\n args.element = component.element()\r\n }\r\n return args\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return {\r\n event: e,\r\n itemData: sourceDraggable.option(\"itemData\"),\r\n itemElement: getPublicElement(sourceDraggable._$sourceElement),\r\n fromComponent: sourceDraggable.option(\"component\") || sourceDraggable,\r\n toComponent: targetDraggable.option(\"component\") || targetDraggable,\r\n fromData: sourceDraggable.option(\"data\"),\r\n toData: targetDraggable.option(\"data\")\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n var args = this._getEventArgs(e);\r\n return {\r\n event: args.event,\r\n itemData: args.itemData,\r\n itemElement: $itemElement,\r\n fromData: args.fromData\r\n }\r\n },\r\n _revertItemToInitialPosition: function() {\r\n !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)\r\n },\r\n _dragEndHandler: function(e) {\r\n var d = new Deferred;\r\n var dragEndEventArgs = this._getEventArgs(e);\r\n var dropEventArgs = this._getEventArgs(e);\r\n var targetDraggable = this._getTargetDraggable();\r\n var needRevertPosition = true;\r\n try {\r\n this._getAction(\"onDragEnd\")(dragEndEventArgs)\r\n } finally {\r\n when(fromPromise(dragEndEventArgs.cancel)).done(cancel => {\r\n if (!cancel) {\r\n if (targetDraggable !== this) {\r\n targetDraggable._getAction(\"onDrop\")(dropEventArgs)\r\n }\r\n if (!dropEventArgs.cancel) {\r\n needRevertPosition = false;\r\n when(fromPromise(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);\r\n return\r\n }\r\n }\r\n d.resolve()\r\n }).fail(d.resolve);\r\n d.done(() => {\r\n if (needRevertPosition) {\r\n this._revertItemToInitialPosition()\r\n }\r\n this.reset();\r\n targetDraggable.reset();\r\n this._stopAnimator();\r\n this._horizontalScrollHelper.reset();\r\n this._verticalScrollHelper.reset();\r\n this._resetDragElement();\r\n this._resetSourceElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable()\r\n })\r\n }\r\n },\r\n _isTargetOverAnotherDraggable: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (this === sourceDraggable) {\r\n return false\r\n }\r\n var $dragElement = sourceDraggable._$dragElement;\r\n var $sourceDraggableElement = sourceDraggable.$element();\r\n var $targetDraggableElement = this.$element();\r\n var mousePosition = getMousePosition(e);\r\n var elements = getElementsFromPoint(mousePosition.x, mousePosition.y);\r\n var firstWidgetElement = elements.filter(element => {\r\n var $element = $(element);\r\n if ($element.hasClass(this._addWidgetPrefix())) {\r\n return !$element.closest($dragElement).length\r\n }\r\n })[0];\r\n var $sourceElement = this._getSourceElement();\r\n var isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);\r\n var isTargetOverNestedDraggable = $(firstWidgetElement).closest($sourceElement).length;\r\n return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable\r\n },\r\n _dragEnterHandler: function(e) {\r\n this._fireDragEnterEvent(e);\r\n if (this._isTargetOverAnotherDraggable(e)) {\r\n this._setTargetDraggable()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragEnter(e)\r\n },\r\n _dragLeaveHandler: function(e) {\r\n this._fireDragLeaveEvent(e);\r\n this._resetTargetDraggable();\r\n if (this !== this._getSourceDraggable()) {\r\n this.reset()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragLeave(e)\r\n },\r\n _getAction: function(name) {\r\n return this[\"_\" + name + \"Action\"] || this._createActionByOption(name)\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n if (!this.option(\"contentTemplate\")) {\r\n return\r\n }\r\n this._templateManager.addDefaultTemplates({\r\n content: new EmptyTemplate\r\n });\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(this._addWidgetPrefix());\r\n var transclude = this._templateManager.anonymousTemplateName === this.option(\"contentTemplate\");\r\n var template = this._getTemplateByOption(\"contentTemplate\");\r\n if (template) {\r\n $(template.render({\r\n container: this.element(),\r\n transclude: transclude\r\n }))\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragStart\":\r\n case \"onDragMove\":\r\n case \"onDragEnd\":\r\n case \"onDrop\":\r\n case \"onDragEnter\":\r\n case \"onDragLeave\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"dragTemplate\":\r\n case \"contentTemplate\":\r\n case \"container\":\r\n case \"clone\":\r\n break;\r\n case \"allowMoveByClick\":\r\n case \"dragDirection\":\r\n case \"disabled\":\r\n case \"boundary\":\r\n case \"filter\":\r\n case \"immediate\":\r\n this._resetDragElement();\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"autoScroll\":\r\n this._verticalScrollHelper.reset();\r\n this._horizontalScrollHelper.reset();\r\n break;\r\n case \"scrollSensitivity\":\r\n case \"scrollSpeed\":\r\n case \"boundOffset\":\r\n case \"handle\":\r\n case \"group\":\r\n case \"data\":\r\n case \"itemData\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getTargetDraggable: function() {\r\n return targetDraggable || this\r\n },\r\n _getSourceDraggable: function() {\r\n return sourceDraggable || this\r\n },\r\n _setTargetDraggable: function() {\r\n var currentGroup = this.option(\"group\");\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (currentGroup && currentGroup === sourceDraggable.option(\"group\")) {\r\n targetDraggable = this\r\n }\r\n },\r\n _setSourceDraggable: function() {\r\n sourceDraggable = this\r\n },\r\n _resetSourceDraggable: function() {\r\n sourceDraggable = null\r\n },\r\n _resetTargetDraggable: function() {\r\n targetDraggable = null\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n this._detachEventHandlers();\r\n this._resetDragElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable();\r\n this._$sourceElement = null;\r\n this._stopAnimator()\r\n },\r\n _fireDragEnterEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragEnter\")(args)\r\n },\r\n _fireDragLeaveEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragLeave\")(args)\r\n }\r\n});\r\nregisterComponent(DRAGGABLE, Draggable);\r\nexport default Draggable;\r\n","/**\r\n * DevExtreme (esm/localization/ldml/date.parser.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n escapeRegExp\r\n} from \"../../core/utils/common\";\r\nvar FORMAT_TYPES = {\r\n 3: \"abbreviated\",\r\n 4: \"wide\",\r\n 5: \"narrow\"\r\n};\r\nvar monthRegExpGenerator = function(count, dateParts) {\r\n if (count > 2) {\r\n return Object.keys(FORMAT_TYPES).map((function(count) {\r\n return [\"format\", \"standalone\"].map((function(type) {\r\n return dateParts.getMonthNames(FORMAT_TYPES[count], type).join(\"|\")\r\n })).join(\"|\")\r\n })).join(\"|\")\r\n }\r\n return \"0?[1-9]|1[012]\"\r\n};\r\nvar PATTERN_REGEXPS = {\r\n \":\": function(count, dateParts) {\r\n var countSuffix = count > 1 ? \"{\".concat(count, \"}\") : \"\";\r\n return \"\\\\\".concat(dateParts.getTimeSeparator()).concat(countSuffix)\r\n },\r\n y: function(count) {\r\n return \"[0-9]+\"\r\n },\r\n M: monthRegExpGenerator,\r\n L: monthRegExpGenerator,\r\n Q: function(count, dateParts) {\r\n if (count > 2) {\r\n return dateParts.getQuarterNames(FORMAT_TYPES[count], \"format\").join(\"|\")\r\n }\r\n return \"0?[1-4]\"\r\n },\r\n E: function(count, dateParts) {\r\n return \"\\\\D*\"\r\n },\r\n a: function(count, dateParts) {\r\n return dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\").join(\"|\")\r\n },\r\n d: function(count) {\r\n return \"0?[1-9]|[12][0-9]|3[01]\"\r\n },\r\n H: function(count) {\r\n return \"0?[0-9]|1[0-9]|2[0-3]\"\r\n },\r\n h: function(count) {\r\n return \"0?[1-9]|1[012]\"\r\n },\r\n m: function(count) {\r\n return \"0?[0-9]|[1-5][0-9]\"\r\n },\r\n s: function(count) {\r\n return \"0?[0-9]|[1-5][0-9]\"\r\n },\r\n S: function(count) {\r\n return \"[0-9]{1,\" + count + \"}\"\r\n },\r\n w: function(count) {\r\n return \"0?[0-9]|[1-5][0-9]\"\r\n }\r\n};\r\nvar parseNumber = Number;\r\nvar caseInsensitiveIndexOf = function(array, value) {\r\n return array.map(item => item.toLowerCase()).indexOf(value.toLowerCase())\r\n};\r\nvar monthPatternParser = function(text, count, dateParts) {\r\n if (count > 2) {\r\n return [\"format\", \"standalone\"].map((function(type) {\r\n return Object.keys(FORMAT_TYPES).map((function(count) {\r\n var monthNames = dateParts.getMonthNames(FORMAT_TYPES[count], type);\r\n return caseInsensitiveIndexOf(monthNames, text)\r\n }))\r\n })).reduce((function(a, b) {\r\n return a.concat(b)\r\n })).filter((function(index) {\r\n return index >= 0\r\n }))[0]\r\n }\r\n return parseNumber(text) - 1\r\n};\r\nvar PATTERN_PARSERS = {\r\n y: function(text, count) {\r\n var year = parseNumber(text);\r\n if (2 === count) {\r\n return year < 30 ? 2e3 + year : 1900 + year\r\n }\r\n return year\r\n },\r\n M: monthPatternParser,\r\n L: monthPatternParser,\r\n Q: function(text, count, dateParts) {\r\n if (count > 2) {\r\n return dateParts.getQuarterNames(FORMAT_TYPES[count], \"format\").indexOf(text)\r\n }\r\n return parseNumber(text) - 1\r\n },\r\n E: function(text, count, dateParts) {\r\n var dayNames = dateParts.getDayNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\");\r\n return caseInsensitiveIndexOf(dayNames, text)\r\n },\r\n a: function(text, count, dateParts) {\r\n var periodNames = dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\");\r\n return caseInsensitiveIndexOf(periodNames, text)\r\n },\r\n d: parseNumber,\r\n H: parseNumber,\r\n h: parseNumber,\r\n m: parseNumber,\r\n s: parseNumber,\r\n S: function(text, count) {\r\n count = Math.max(count, 3);\r\n text = text.slice(0, 3);\r\n while (count < 3) {\r\n text += \"0\";\r\n count++\r\n }\r\n return parseNumber(text)\r\n }\r\n};\r\nvar ORDERED_PATTERNS = [\"y\", \"M\", \"d\", \"h\", \"m\", \"s\", \"S\"];\r\nvar PATTERN_SETTERS = {\r\n y: \"setFullYear\",\r\n M: \"setMonth\",\r\n L: \"setMonth\",\r\n a: function(date, value, datePartValues) {\r\n var hours = date.getHours();\r\n var hourPartValue = datePartValues.h;\r\n if (void 0 !== hourPartValue && hourPartValue !== hours) {\r\n hours--\r\n }\r\n if (!value && 12 === hours) {\r\n hours = 0\r\n } else if (value && 12 !== hours) {\r\n hours += 12\r\n }\r\n date.setHours(hours)\r\n },\r\n d: \"setDate\",\r\n H: \"setHours\",\r\n h: \"setHours\",\r\n m: \"setMinutes\",\r\n s: \"setSeconds\",\r\n S: \"setMilliseconds\"\r\n};\r\nvar getSameCharCount = function(text, index) {\r\n var char = text[index];\r\n var count = 0;\r\n do {\r\n index++;\r\n count++\r\n } while (text[index] === char);\r\n return count\r\n};\r\nvar createPattern = function(char, count) {\r\n var result = \"\";\r\n for (var i = 0; i < count; i++) {\r\n result += char\r\n }\r\n return result\r\n};\r\nexport var getRegExpInfo = function(format, dateParts) {\r\n var regexpText = \"\";\r\n var stubText = \"\";\r\n var isEscaping;\r\n var patterns = [];\r\n var addPreviousStub = function() {\r\n if (stubText) {\r\n patterns.push(\"'\" + stubText + \"'\");\r\n regexpText += escapeRegExp(stubText) + \")\";\r\n stubText = \"\"\r\n }\r\n };\r\n for (var i = 0; i < format.length; i++) {\r\n var char = format[i];\r\n var isEscapeChar = \"'\" === char;\r\n var regexpPart = PATTERN_REGEXPS[char];\r\n if (isEscapeChar) {\r\n isEscaping = !isEscaping;\r\n if (\"'\" !== format[i - 1]) {\r\n continue\r\n }\r\n }\r\n if (regexpPart && !isEscaping) {\r\n var count = getSameCharCount(format, i);\r\n var pattern = createPattern(char, count);\r\n addPreviousStub();\r\n patterns.push(pattern);\r\n regexpText += \"(\" + regexpPart(count, dateParts) + \")\";\r\n i += count - 1\r\n } else {\r\n if (!stubText) {\r\n regexpText += \"(\"\r\n }\r\n stubText += char\r\n }\r\n }\r\n addPreviousStub();\r\n return {\r\n patterns: patterns,\r\n regexp: new RegExp(\"^\" + regexpText + \"$\", \"i\")\r\n }\r\n};\r\nexport var getPatternSetters = function() {\r\n return PATTERN_SETTERS\r\n};\r\nvar setPatternPart = function(date, pattern, text, dateParts, datePartValues) {\r\n var patternChar = pattern[0];\r\n var partSetter = PATTERN_SETTERS[patternChar];\r\n var partParser = PATTERN_PARSERS[patternChar];\r\n if (partSetter && partParser) {\r\n var value = partParser(text, pattern.length, dateParts);\r\n datePartValues[pattern] = value;\r\n if (date[partSetter]) {\r\n date[partSetter](value)\r\n } else {\r\n partSetter(date, value, datePartValues)\r\n }\r\n }\r\n};\r\nvar setPatternPartFromNow = function(date, pattern, now) {\r\n var setterName = PATTERN_SETTERS[pattern];\r\n var getterName = \"g\" + setterName.substr(1);\r\n var value = now[getterName]();\r\n date[setterName](value)\r\n};\r\nvar getShortPatterns = function(fullPatterns) {\r\n return fullPatterns.map((function(pattern) {\r\n if (\"'\" === pattern[0]) {\r\n return \"\"\r\n } else {\r\n return \"H\" === pattern[0] ? \"h\" : pattern[0]\r\n }\r\n }))\r\n};\r\nvar getMaxOrderedPatternIndex = function(patterns) {\r\n var indexes = patterns.map((function(pattern) {\r\n return ORDERED_PATTERNS.indexOf(pattern)\r\n }));\r\n return Math.max.apply(Math, indexes)\r\n};\r\nvar getOrderedFormatPatterns = function(formatPatterns) {\r\n var otherPatterns = formatPatterns.filter((function(pattern) {\r\n return ORDERED_PATTERNS.indexOf(pattern) < 0\r\n }));\r\n return ORDERED_PATTERNS.concat(otherPatterns)\r\n};\r\nexport var getParser = function(format, dateParts) {\r\n var regExpInfo = getRegExpInfo(format, dateParts);\r\n return function(text) {\r\n var regExpResult = regExpInfo.regexp.exec(text);\r\n if (regExpResult) {\r\n var now = new Date;\r\n var date = new Date(now.getFullYear(), 0, 1);\r\n var formatPatterns = getShortPatterns(regExpInfo.patterns);\r\n var maxPatternIndex = getMaxOrderedPatternIndex(formatPatterns);\r\n var orderedFormatPatterns = getOrderedFormatPatterns(formatPatterns);\r\n var datePartValues = {};\r\n orderedFormatPatterns.forEach((function(pattern, index) {\r\n if (!pattern || index < ORDERED_PATTERNS.length && index > maxPatternIndex) {\r\n return\r\n }\r\n var patternIndex = formatPatterns.indexOf(pattern);\r\n if (patternIndex >= 0) {\r\n var regExpPattern = regExpInfo.patterns[patternIndex];\r\n var regExpText = regExpResult[patternIndex + 1];\r\n setPatternPart(date, regExpPattern, regExpText, dateParts, datePartValues)\r\n } else {\r\n setPatternPartFromNow(date, pattern, now)\r\n }\r\n }));\r\n return date\r\n }\r\n return null\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/element.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar strategy = function(element) {\r\n return element && element.get(0)\r\n};\r\nexport function getPublicElement(element) {\r\n return strategy(element)\r\n}\r\nexport function setPublicElementWrapper(newStrategy) {\r\n strategy = newStrategy\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/widget/utils.ink_ripple.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nvar INKRIPPLE_CLASS = \"dx-inkripple\";\r\nvar INKRIPPLE_WAVE_CLASS = \"dx-inkripple-wave\";\r\nvar INKRIPPLE_SHOWING_CLASS = \"dx-inkripple-showing\";\r\nvar INKRIPPLE_HIDING_CLASS = \"dx-inkripple-hiding\";\r\nvar DEFAULT_WAVE_SIZE_COEFFICIENT = 2;\r\nvar MAX_WAVE_SIZE = 4e3;\r\nvar ANIMATION_DURATION = 300;\r\nvar HOLD_ANIMATION_DURATION = 1e3;\r\nvar DEFAULT_WAVE_INDEX = 0;\r\nexport var initConfig = function() {\r\n var config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n var {\r\n useHoldAnimation: useHoldAnimation,\r\n waveSizeCoefficient: waveSizeCoefficient,\r\n isCentered: isCentered,\r\n wavesNumber: wavesNumber\r\n } = config;\r\n return {\r\n waveSizeCoefficient: waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT,\r\n isCentered: isCentered || false,\r\n wavesNumber: wavesNumber || 1,\r\n durations: getDurations(null !== useHoldAnimation && void 0 !== useHoldAnimation ? useHoldAnimation : true)\r\n }\r\n};\r\nexport var render = function(args) {\r\n var config = initConfig(args);\r\n return {\r\n showWave: showWave.bind(this, config),\r\n hideWave: hideWave.bind(this, config)\r\n }\r\n};\r\nvar getInkRipple = function(element) {\r\n var result = element.children(\".\" + INKRIPPLE_CLASS);\r\n if (0 === result.length) {\r\n result = $(\"
\").addClass(INKRIPPLE_CLASS).appendTo(element)\r\n }\r\n return result\r\n};\r\nvar getWaves = function(element, wavesNumber) {\r\n var inkRipple = getInkRipple($(element));\r\n var result = inkRipple.children(\".\" + INKRIPPLE_WAVE_CLASS).toArray();\r\n for (var i = result.length; i < wavesNumber; i++) {\r\n var $currentWave = $(\"
\").appendTo(inkRipple).addClass(INKRIPPLE_WAVE_CLASS);\r\n result.push($currentWave[0])\r\n }\r\n return $(result)\r\n};\r\nvar getWaveStyleConfig = function(args, config) {\r\n var element = $(config.element);\r\n var elementWidth = element.outerWidth();\r\n var elementHeight = element.outerHeight();\r\n var elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight));\r\n var waveSize = Math.min(MAX_WAVE_SIZE, parseInt(elementDiagonal * args.waveSizeCoefficient));\r\n var left;\r\n var top;\r\n if (args.isCentered) {\r\n left = (elementWidth - waveSize) / 2;\r\n top = (elementHeight - waveSize) / 2\r\n } else {\r\n var event = config.event;\r\n var position = element.offset();\r\n var x = event.pageX - position.left;\r\n var y = event.pageY - position.top;\r\n left = x - waveSize / 2;\r\n top = y - waveSize / 2\r\n }\r\n return {\r\n left: left,\r\n top: top,\r\n height: waveSize,\r\n width: waveSize\r\n }\r\n};\r\nexport function showWave(args, config) {\r\n var $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n args.hidingTimeout && clearTimeout(args.hidingTimeout);\r\n hideSelectedWave($wave);\r\n $wave.css(getWaveStyleConfig(args, config));\r\n args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0)\r\n}\r\n\r\nfunction showingWaveHandler(args, $wave) {\r\n var durationCss = args.durations.showingScale + \"ms\";\r\n $wave.addClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss)\r\n}\r\n\r\nfunction getDurations(useHoldAnimation) {\r\n return {\r\n showingScale: useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION,\r\n hidingScale: ANIMATION_DURATION,\r\n hidingOpacity: ANIMATION_DURATION\r\n }\r\n}\r\n\r\nfunction hideSelectedWave($wave) {\r\n $wave.removeClass(INKRIPPLE_HIDING_CLASS).css(\"transitionDuration\", \"\")\r\n}\r\nexport function hideWave(args, config) {\r\n args.showingTimeout && clearTimeout(args.showingTimeout);\r\n var $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n var durations = args.durations;\r\n var durationCss = durations.hidingScale + \"ms, \" + durations.hidingOpacity + \"ms\";\r\n $wave.addClass(INKRIPPLE_HIDING_CLASS).removeClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss);\r\n var animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity);\r\n args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration)\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/iterator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar map = (values, callback) => {\r\n if (Array.isArray(values)) {\r\n return values.map(callback)\r\n }\r\n var result = [];\r\n for (var key in values) {\r\n result.push(callback(values[key], key))\r\n }\r\n return result\r\n};\r\nvar each = (values, callback) => {\r\n if (!values) {\r\n return\r\n }\r\n if (\"length\" in values) {\r\n for (var i = 0; i < values.length; i++) {\r\n if (false === callback.call(values[i], i, values[i])) {\r\n break\r\n }\r\n }\r\n } else {\r\n for (var key in values) {\r\n if (false === callback.call(values[key], key, values[key])) {\r\n break\r\n }\r\n }\r\n }\r\n return values\r\n};\r\nvar reverseEach = (array, callback) => {\r\n if (!array || !(\"length\" in array) || 0 === array.length) {\r\n return\r\n }\r\n for (var i = array.length - 1; i >= 0; i--) {\r\n if (false === callback.call(array[i], i, array[i])) {\r\n break\r\n }\r\n }\r\n};\r\nexport {\r\n map,\r\n each,\r\n reverseEach\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/action_sheet.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport Button from \"./button\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nimport Popup from \"./popup\";\r\nimport Popover from \"./popover\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar ACTION_SHEET_CLASS = \"dx-actionsheet\";\r\nvar ACTION_SHEET_CONTAINER_CLASS = \"dx-actionsheet-container\";\r\nvar ACTION_SHEET_POPUP_WRAPPER_CLASS = \"dx-actionsheet-popup-wrapper\";\r\nvar ACTION_SHEET_POPOVER_WRAPPER_CLASS = \"dx-actionsheet-popover-wrapper\";\r\nvar ACTION_SHEET_CANCEL_BUTTON_CLASS = \"dx-actionsheet-cancel\";\r\nvar ACTION_SHEET_ITEM_CLASS = \"dx-actionsheet-item\";\r\nvar ACTION_SHEET_ITEM_DATA_KEY = \"dxActionSheetItemData\";\r\nvar ACTION_SHEET_WITHOUT_TITLE_CLASS = \"dx-actionsheet-without-title\";\r\nvar ActionSheet = CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n usePopover: false,\r\n target: null,\r\n title: \"\",\r\n showTitle: true,\r\n showCancelButton: true,\r\n cancelText: messageLocalization.format(\"Cancel\"),\r\n onCancelClick: null,\r\n visible: false,\r\n noDataText: \"\",\r\n focusStateEnabled: false,\r\n selectionByClick: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\",\r\n tablet: true\r\n },\r\n options: {\r\n usePopover: true\r\n }\r\n }])\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate((function($container, data) {\r\n var button = new Button($(\"
\"), extend({\r\n onClick: data && data.click\r\n }, data));\r\n $container.append(button.$element())\r\n }), [\"disabled\", \"icon\", \"text\", \"type\", \"onClick\", \"click\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _itemContainer: function() {\r\n return this._$itemContainer\r\n },\r\n _itemClass: function() {\r\n return ACTION_SHEET_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return ACTION_SHEET_ITEM_DATA_KEY\r\n },\r\n _toggleVisibility: noop,\r\n _renderDimensions: noop,\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(ACTION_SHEET_CLASS);\r\n this._createItemContainer()\r\n },\r\n _render: function() {\r\n this._renderPopup()\r\n },\r\n _createItemContainer: function() {\r\n this._$itemContainer = $(\"
\").addClass(ACTION_SHEET_CONTAINER_CLASS);\r\n this._renderDisabled()\r\n },\r\n _renderDisabled: function() {\r\n this._$itemContainer.toggleClass(\"dx-state-disabled\", this.option(\"disabled\"))\r\n },\r\n _renderPopup: function() {\r\n this._$popup = $(\"
\").appendTo(this.$element());\r\n this._isPopoverMode() ? this._createPopover() : this._createPopup();\r\n this._renderPopupTitle();\r\n this._mapPopupOption(\"visible\")\r\n },\r\n _mapPopupOption: function(optionName) {\r\n this._popup && this._popup.option(optionName, this.option(optionName))\r\n },\r\n _isPopoverMode: function() {\r\n return this.option(\"usePopover\") && this.option(\"target\")\r\n },\r\n _renderPopupTitle: function() {\r\n this._mapPopupOption(\"showTitle\");\r\n this._popup && this._popup.$wrapper().toggleClass(ACTION_SHEET_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"))\r\n },\r\n _clean: function() {\r\n if (this._$popup) {\r\n this._$popup.remove()\r\n }\r\n this.callBase()\r\n },\r\n _overlayConfig: function() {\r\n return {\r\n onInitialized: function(args) {\r\n this._popup = args.component\r\n }.bind(this),\r\n disabled: false,\r\n showTitle: true,\r\n title: this.option(\"title\"),\r\n deferRendering: !window.angular,\r\n onContentReady: this._popupContentReadyAction.bind(this),\r\n onHidden: this.hide.bind(this)\r\n }\r\n },\r\n _createPopover: function() {\r\n this._createComponent(this._$popup, Popover, extend(this._overlayConfig(), {\r\n width: this.option(\"width\") || 200,\r\n height: this.option(\"height\") || \"auto\",\r\n target: this.option(\"target\")\r\n }));\r\n this._popup.$wrapper().addClass(ACTION_SHEET_POPOVER_WRAPPER_CLASS)\r\n },\r\n _createPopup: function() {\r\n this._createComponent(this._$popup, Popup, extend(this._overlayConfig(), {\r\n dragEnabled: false,\r\n width: this.option(\"width\") || \"100%\",\r\n height: this.option(\"height\") || \"auto\",\r\n showCloseButton: false,\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n },\r\n animation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n }\r\n }\r\n }));\r\n this._popup.$wrapper().addClass(ACTION_SHEET_POPUP_WRAPPER_CLASS)\r\n },\r\n _popupContentReadyAction: function() {\r\n this._popup.$content().append(this._$itemContainer);\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._prepareContent();\r\n this._renderContent();\r\n this._renderCancelButton()\r\n },\r\n _renderCancelButton: function() {\r\n if (this._isPopoverMode()) {\r\n return\r\n }\r\n if (this._$cancelButton) {\r\n this._$cancelButton.remove()\r\n }\r\n if (this.option(\"showCancelButton\")) {\r\n var cancelClickAction = this._createActionByOption(\"onCancelClick\") || noop;\r\n var that = this;\r\n this._$cancelButton = $(\"
\").addClass(ACTION_SHEET_CANCEL_BUTTON_CLASS).appendTo(this._popup && this._popup.$content());\r\n this._createComponent(this._$cancelButton, Button, {\r\n disabled: false,\r\n text: this.option(\"cancelText\"),\r\n onClick: function(e) {\r\n var hidingArgs = {\r\n event: e,\r\n cancel: false\r\n };\r\n cancelClickAction(hidingArgs);\r\n if (!hidingArgs.cancel) {\r\n that.hide()\r\n }\r\n },\r\n integrationOptions: {}\r\n })\r\n }\r\n },\r\n _attachItemClickEvent: noop,\r\n _itemClickHandler: function(e) {\r\n this.callBase(e);\r\n if (!$(e.target).is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n this.hide()\r\n }\r\n },\r\n _itemHoldHandler: function(e) {\r\n this.callBase(e);\r\n if (!$(e.target).is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n this.hide()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n case \"visible\":\r\n case \"title\":\r\n this._mapPopupOption(args.name);\r\n break;\r\n case \"disabled\":\r\n this._renderDisabled();\r\n break;\r\n case \"showTitle\":\r\n this._renderPopupTitle();\r\n break;\r\n case \"showCancelButton\":\r\n case \"onCancelClick\":\r\n case \"cancelText\":\r\n this._renderCancelButton();\r\n break;\r\n case \"target\":\r\n case \"usePopover\":\r\n case \"items\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n toggle: function(showing) {\r\n var that = this;\r\n var d = new Deferred;\r\n that._popup.toggle(showing).done((function() {\r\n that.option(\"visible\", showing);\r\n d.resolveWith(that)\r\n }));\r\n return d.promise()\r\n },\r\n show: function() {\r\n return this.toggle(true)\r\n },\r\n hide: function() {\r\n return this.toggle(false)\r\n }\r\n});\r\nregisterComponent(\"dxActionSheet\", ActionSheet);\r\nexport default ActionSheet;\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.errors.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"../../core/utils/error\";\r\nimport errors from \"../../core/errors\";\r\nexport default errorUtils(errors.ERROR_MESSAGES, {\r\n E1001: \"Module '{0}'. Controller '{1}' is already registered\",\r\n E1002: \"Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller\",\r\n E1003: \"Module '{0}'. View '{1}' is already registered\",\r\n E1004: \"Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View\",\r\n E1005: \"Public method '{0}' is already registered\",\r\n E1006: \"Public method '{0}.{1}' does not exist\",\r\n E1007: \"State storing cannot be provided due to the restrictions of the browser\",\r\n E1010: \"The template does not contain the TextBox widget\",\r\n E1011: 'Items cannot be deleted from the List. Implement the \"remove\" function in the data store',\r\n E1012: \"Editing type '{0}' with the name '{1}' is unsupported\",\r\n E1016: \"Unexpected type of data source is provided for a lookup column\",\r\n E1018: \"The 'collapseAll' method cannot be called if you use a remote data source\",\r\n E1019: \"Search mode '{0}' is unavailable\",\r\n E1020: \"The type cannot be changed after initialization\",\r\n E1021: \"{0} '{1}' you are trying to remove does not exist\",\r\n E1022: 'The \"markers\" option is given an invalid value. Assign an array instead',\r\n E1023: 'The \"routes\" option is given an invalid value. Assign an array instead',\r\n E1025: \"This layout is too complex to render\",\r\n E1026: 'The \"calculateCustomSummary\" function is missing from a field whose \"summaryType\" option is set to \"custom\"',\r\n E1031: \"Unknown subscription in the Scheduler widget: '{0}'\",\r\n E1032: \"Unknown start date in an appointment: '{0}'\",\r\n E1033: \"Unknown step in the date navigator: '{0}'\",\r\n E1034: \"The browser does not implement an API for saving files\",\r\n E1035: \"The editor cannot be created because of an internal error: {0}\",\r\n E1037: \"Invalid structure of grouped data\",\r\n E1038: \"The browser does not support local storages for local web pages\",\r\n E1039: \"A cell's position cannot be calculated\",\r\n E1040: \"The '{0}' key value is not unique within the data array\",\r\n E1041: \"The '{0}' script is referenced after the DevExtreme scripts or not referenced at all\",\r\n E1042: \"{0} requires the key field to be specified\",\r\n E1043: \"Changes cannot be processed due to the incorrectly set key\",\r\n E1044: \"The key field specified by the keyExpr option does not match the key field specified in the data store\",\r\n E1045: \"Editing requires the key field to be specified in the data store\",\r\n E1046: \"The '{0}' key field is not found in data objects\",\r\n E1047: 'The \"{0}\" field is not found in the fields array',\r\n E1048: 'The \"{0}\" operation is not found in the filterOperations array',\r\n E1049: \"Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified\",\r\n E1050: \"The validationRules option does not apply to third-party editors defined in the editCellTemplate\",\r\n E1051: 'HtmlEditor\\'s valueType is \"{0}\", but the {0} converter was not imported.',\r\n E1052: '{0} should have the \"dataSource\" option specified',\r\n E1053: 'The \"buttons\" option accepts an array that contains only objects or string values',\r\n E1054: \"All text editor buttons must have names\",\r\n E1055: 'One or several text editor buttons have invalid or non-unique \"name\" values',\r\n E1056: 'The {0} widget does not support buttons of the \"{1}\" type',\r\n E1058: 'The \"startDayHour\" must be earlier than the \"endDayHour\"',\r\n E1059: \"The following column names are not unique: {0}\",\r\n E1060: \"All editable columns must have names\",\r\n W1001: 'The \"key\" option cannot be modified after initialization',\r\n W1002: \"An item with the key '{0}' does not exist\",\r\n W1003: \"A group with the key '{0}' in which you are trying to select items does not exist\",\r\n W1004: \"The item '{0}' you are trying to select in the group '{1}' does not exist\",\r\n W1005: \"Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.\",\r\n W1006: \"The map service returned the following error: '{0}'\",\r\n W1007: \"No item with key {0} was found in the data source, but this key was used as the parent key for item {1}\",\r\n W1008: \"Cannot scroll to the '{0}' date because it does not exist on the current view\",\r\n W1009: \"Searching works only if data is specified using the dataSource option\",\r\n W1010: \"The capability to select all items works with source data of plain structure only\",\r\n W1011: 'The \"keyExpr\" option is not applied when dataSource is not an array',\r\n W1012: \"The '{0}' key field is not found in data objects\",\r\n W1013: 'The \"message\" field in the dialog component was renamed to \"messageHtml\". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure',\r\n W1014: \"The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.\",\r\n W1015: 'The \"cellDuration\" should divide the range from the \"startDayHour\" to the \"endDayHour\" into even intervals',\r\n W1016: \"The '{0}' field in the HTML Editor toolbar item configuration was renamed to '{1}'. Please make a corresponding change in your code.\",\r\n W1017: \"The 'key' property is not specified for a lookup data source. Please specify it to prevent requests for the entire dataset when users filter data.\",\r\n W1018: \"Infinite scrolling may not work properly with multiple selection. To use these features together, set 'selection.deferred' to true or set 'selection.selectAllMode' to 'page'.\",\r\n W1019: \"Filter query string exceeds maximum length limit of {0} characters.\"\r\n});\r\n","/**\r\n * DevExtreme (esm/data/array_store.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dataUtils from \"./utils\";\r\nimport Query from \"./query\";\r\nimport {\r\n errors\r\n} from \"./errors\";\r\nimport Store from \"./abstract_store\";\r\nimport {\r\n indexByKey,\r\n insert,\r\n applyBatch,\r\n update,\r\n remove\r\n} from \"./array_utils\";\r\nvar ArrayStore = Store.inherit({\r\n ctor: function(options) {\r\n if (Array.isArray(options)) {\r\n options = {\r\n data: options\r\n }\r\n } else {\r\n options = options || {}\r\n }\r\n this.callBase(options);\r\n var initialArray = options.data;\r\n if (initialArray && !Array.isArray(initialArray)) {\r\n throw errors.Error(\"E4006\")\r\n }\r\n this._array = initialArray || []\r\n },\r\n createQuery: function() {\r\n return Query(this._array, {\r\n errorHandler: this._errorHandler\r\n })\r\n },\r\n _byKeyImpl: function(key) {\r\n var index = indexByKey(this, this._array, key);\r\n if (-1 === index) {\r\n return dataUtils.rejectedPromise(errors.Error(\"E4009\"))\r\n }\r\n return dataUtils.trivialPromise(this._array[index])\r\n },\r\n _insertImpl: function(values) {\r\n return insert(this, this._array, values)\r\n },\r\n _pushImpl: function(changes) {\r\n applyBatch({\r\n keyInfo: this,\r\n data: this._array,\r\n changes: changes\r\n })\r\n },\r\n _updateImpl: function(key, values) {\r\n return update(this, this._array, key, values)\r\n },\r\n _removeImpl: function(key) {\r\n return remove(this, this._array, key)\r\n },\r\n clear: function() {\r\n this._eventsStrategy.fireEvent(\"modifying\");\r\n this._array = [];\r\n this._eventsStrategy.fireEvent(\"modified\")\r\n }\r\n}, \"array\");\r\nexport default ArrayStore;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.async.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport CollectionWidgetEdit from \"./ui.collection_widget.edit\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar AsyncCollectionWidget = CollectionWidgetEdit.inherit({\r\n _initMarkup() {\r\n this._deferredItems = [];\r\n this.callBase()\r\n },\r\n _renderItemContent(args) {\r\n var renderContentDeferred = new Deferred;\r\n var itemDeferred = new Deferred;\r\n this._deferredItems[args.index] = itemDeferred;\r\n var $itemContent = this.callBase.call(this, args);\r\n itemDeferred.done(() => {\r\n renderContentDeferred.resolve($itemContent)\r\n });\r\n return renderContentDeferred.promise()\r\n },\r\n _createItemByTemplate(itemTemplate, renderArgs) {\r\n return itemTemplate.render({\r\n model: renderArgs.itemData,\r\n container: renderArgs.container,\r\n index: renderArgs.index,\r\n onRendered: () => {\r\n this._deferredItems[renderArgs.index].resolve()\r\n }\r\n })\r\n },\r\n _postProcessRenderItems: noop,\r\n _renderItemsAsync() {\r\n var d = new Deferred;\r\n when.apply(this, this._deferredItems).done(() => {\r\n this._postProcessRenderItems();\r\n d.resolve()\r\n });\r\n return d.promise()\r\n },\r\n _clean() {\r\n this.callBase();\r\n this._deferredItems = []\r\n }\r\n});\r\nexport default AsyncCollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/ui.toolbar.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isMaterial,\r\n waitWebFont\r\n} from \"../themes\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport AsyncCollectionWidget from \"../collection/ui.collection_widget.async\";\r\nimport Promise from \"../../core/polyfills/promise\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport errors from \"../../core/errors\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n TOOLBAR_CLASS\r\n} from \"./constants\";\r\nvar TOOLBAR_BEFORE_CLASS = \"dx-toolbar-before\";\r\nvar TOOLBAR_CENTER_CLASS = \"dx-toolbar-center\";\r\nvar TOOLBAR_AFTER_CLASS = \"dx-toolbar-after\";\r\nvar TOOLBAR_MINI_CLASS = \"dx-toolbar-mini\";\r\nvar TOOLBAR_ITEM_CLASS = \"dx-toolbar-item\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar TOOLBAR_BUTTON_CLASS = \"dx-toolbar-button\";\r\nvar TOOLBAR_ITEMS_CONTAINER_CLASS = \"dx-toolbar-items-container\";\r\nvar TOOLBAR_GROUP_CLASS = \"dx-toolbar-group\";\r\nvar TOOLBAR_COMPACT_CLASS = \"dx-toolbar-compact\";\r\nvar TOOLBAR_LABEL_SELECTOR = \".\" + TOOLBAR_LABEL_CLASS;\r\nvar TOOLBAR_MULTILINE_CLASS = \"dx-toolbar-multiline\";\r\nvar TEXT_BUTTON_MODE = \"text\";\r\nvar DEFAULT_BUTTON_TYPE = \"default\";\r\nvar TOOLBAR_ITEM_DATA_KEY = \"dxToolbarItemDataKey\";\r\nvar ToolbarBase = AsyncCollectionWidget.inherit({\r\n compactMode: false,\r\n ctor: function(element, options) {\r\n this._userOptions = options || {};\r\n this.callBase(element, options);\r\n if (\"height\" in this._userOptions) {\r\n errors.log(\"W0001\", this.NAME, \"height\", \"20.1\", \"Functionality associated with this option is not intended for the Toolbar widget.\")\r\n }\r\n },\r\n _getSynchronizableOptionsForCreateComponent: function() {\r\n return this.callBase().filter(item => \"disabled\" !== item)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n var template = new BindableTemplate(function($container, data, rawModel) {\r\n if (isPlainObject(data)) {\r\n if (data.text) {\r\n $container.text(data.text).wrapInner(\"
\")\r\n }\r\n if (data.html) {\r\n $container.html(data.html)\r\n }\r\n if (\"dxButton\" === data.widget) {\r\n if (this.option(\"useFlatButtons\")) {\r\n data.options = data.options || {};\r\n data.options.stylingMode = data.options.stylingMode || TEXT_BUTTON_MODE\r\n }\r\n if (this.option(\"useDefaultButtons\")) {\r\n data.options = data.options || {};\r\n data.options.type = data.options.type || DEFAULT_BUTTON_TYPE\r\n }\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: rawModel,\r\n parent: this\r\n })\r\n }.bind(this), [\"text\", \"html\", \"widget\", \"options\"], this.option(\"integrationOptions.watchMethod\"));\r\n this._templateManager.addDefaultTemplates({\r\n item: template,\r\n menuItem: template\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n renderAs: \"topToolbar\",\r\n grouped: false,\r\n useFlatButtons: false,\r\n useDefaultButtons: false,\r\n multiline: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n useFlatButtons: true\r\n }\r\n }])\r\n },\r\n _itemContainer: function() {\r\n return this._$toolbarItemsContainer.find([\".\" + TOOLBAR_BEFORE_CLASS, \".\" + TOOLBAR_CENTER_CLASS, \".\" + TOOLBAR_AFTER_CLASS].join(\",\"))\r\n },\r\n _itemClass: function() {\r\n return TOOLBAR_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return TOOLBAR_ITEM_DATA_KEY\r\n },\r\n _buttonClass: function() {\r\n return TOOLBAR_BUTTON_CLASS\r\n },\r\n _dimensionChanged: function() {\r\n this._arrangeItems();\r\n this._applyCompactMode()\r\n },\r\n _initMarkup: function() {\r\n this._renderToolbar();\r\n this._renderSections();\r\n this.callBase();\r\n this.setAria(\"role\", \"toolbar\")\r\n },\r\n _waitParentAnimationFinished: function() {\r\n var $element = this.$element();\r\n return new Promise(resolve => {\r\n var runCheck = () => {\r\n clearTimeout(this._waitParentAnimationTimeout);\r\n this._waitParentAnimationTimeout = setTimeout(() => (() => {\r\n var readyToResolve = true;\r\n $element.parents().each((_, parent) => {\r\n if (fx.isAnimating($(parent))) {\r\n readyToResolve = false;\r\n return false\r\n }\r\n });\r\n if (readyToResolve) {\r\n resolve()\r\n }\r\n return readyToResolve\r\n })() || runCheck(), 15)\r\n };\r\n runCheck()\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderItemsAsync();\r\n if (isMaterial()) {\r\n Promise.all([this._waitParentAnimationFinished(), this._checkWebFontForLabelsLoaded()]).then(this._dimensionChanged.bind(this))\r\n }\r\n },\r\n _postProcessRenderItems: function() {\r\n this._arrangeItems()\r\n },\r\n _renderToolbar: function() {\r\n this.$element().addClass(TOOLBAR_CLASS).toggleClass(TOOLBAR_MULTILINE_CLASS, this.option(\"multiline\"));\r\n this._$toolbarItemsContainer = $(\"
\").addClass(TOOLBAR_ITEMS_CONTAINER_CLASS).appendTo(this.$element())\r\n },\r\n _renderSections: function() {\r\n var $container = this._$toolbarItemsContainer;\r\n var that = this;\r\n each([\"before\", \"center\", \"after\"], (function() {\r\n var sectionClass = \"dx-toolbar-\" + this;\r\n var $section = $container.find(\".\" + sectionClass);\r\n if (!$section.length) {\r\n that[\"_$\" + this + \"Section\"] = $section = $(\"
\").addClass(sectionClass).appendTo($container)\r\n }\r\n }))\r\n },\r\n _checkWebFontForLabelsLoaded: function() {\r\n var $labels = this.$element().find(TOOLBAR_LABEL_SELECTOR);\r\n var promises = [];\r\n $labels.each((_, label) => {\r\n var text = $(label).text();\r\n var fontWeight = $(label).css(\"fontWeight\");\r\n promises.push(waitWebFont(text, fontWeight))\r\n });\r\n return Promise.all(promises)\r\n },\r\n _arrangeItems: function(elementWidth) {\r\n elementWidth = elementWidth || this.$element().width();\r\n this._$centerSection.css({\r\n margin: \"0 auto\",\r\n float: \"none\"\r\n });\r\n var beforeRect = getBoundingRect(this._$beforeSection.get(0));\r\n var afterRect = getBoundingRect(this._$afterSection.get(0));\r\n this._alignCenterSection(beforeRect, afterRect, elementWidth);\r\n var $label = this._$toolbarItemsContainer.find(TOOLBAR_LABEL_SELECTOR).eq(0);\r\n var $section = $label.parent();\r\n if (!$label.length) {\r\n return\r\n }\r\n var labelOffset = beforeRect.width ? beforeRect.width : $label.position().left;\r\n var widthBeforeSection = $section.hasClass(TOOLBAR_BEFORE_CLASS) ? 0 : labelOffset;\r\n var widthAfterSection = $section.hasClass(TOOLBAR_AFTER_CLASS) ? 0 : afterRect.width;\r\n var elemsAtSectionWidth = 0;\r\n $section.children().not(TOOLBAR_LABEL_SELECTOR).each((function() {\r\n elemsAtSectionWidth += $(this).outerWidth()\r\n }));\r\n var freeSpace = elementWidth - elemsAtSectionWidth;\r\n var sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0);\r\n if ($section.hasClass(TOOLBAR_BEFORE_CLASS)) {\r\n this._alignSection(this._$beforeSection, sectionMaxWidth)\r\n } else {\r\n var labelPaddings = $label.outerWidth() - $label.width();\r\n $label.css(\"maxWidth\", sectionMaxWidth - labelPaddings)\r\n }\r\n },\r\n _alignCenterSection: function(beforeRect, afterRect, elementWidth) {\r\n this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width);\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var leftRect = isRTL ? afterRect : beforeRect;\r\n var rightRect = isRTL ? beforeRect : afterRect;\r\n var centerRect = getBoundingRect(this._$centerSection.get(0));\r\n if (leftRect.right > centerRect.left || centerRect.right > rightRect.left) {\r\n this._$centerSection.css({\r\n marginLeft: leftRect.width,\r\n marginRight: rightRect.width,\r\n float: leftRect.width > rightRect.width ? \"none\" : \"right\"\r\n })\r\n }\r\n },\r\n _alignSection: function($section, maxWidth) {\r\n var $labels = $section.find(TOOLBAR_LABEL_SELECTOR);\r\n var labels = $labels.toArray();\r\n maxWidth -= this._getCurrentLabelsPaddings(labels);\r\n var currentWidth = this._getCurrentLabelsWidth(labels);\r\n var difference = Math.abs(currentWidth - maxWidth);\r\n if (maxWidth < currentWidth) {\r\n labels = labels.reverse();\r\n this._alignSectionLabels(labels, difference, false)\r\n } else {\r\n this._alignSectionLabels(labels, difference, true)\r\n }\r\n },\r\n _alignSectionLabels: function(labels, difference, expanding) {\r\n var getRealLabelWidth = function(label) {\r\n return getBoundingRect(label).width\r\n };\r\n for (var i = 0; i < labels.length; i++) {\r\n var $label = $(labels[i]);\r\n var currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i]));\r\n var labelMaxWidth = void 0;\r\n if (expanding) {\r\n $label.css(\"maxWidth\", \"inherit\")\r\n }\r\n var possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth);\r\n if (possibleLabelWidth < difference) {\r\n labelMaxWidth = expanding ? possibleLabelWidth : 0;\r\n difference -= possibleLabelWidth\r\n } else {\r\n labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference;\r\n $label.css(\"maxWidth\", labelMaxWidth);\r\n break\r\n }\r\n $label.css(\"maxWidth\", labelMaxWidth)\r\n }\r\n },\r\n _applyCompactMode: function() {\r\n var $element = this.$element();\r\n $element.removeClass(TOOLBAR_COMPACT_CLASS);\r\n if (this.option(\"compactMode\") && this._getSummaryItemsWidth(this.itemElements(), true) > $element.width()) {\r\n $element.addClass(TOOLBAR_COMPACT_CLASS)\r\n }\r\n },\r\n _getCurrentLabelsWidth: function(labels) {\r\n var width = 0;\r\n labels.forEach((function(label, index) {\r\n width += $(label).outerWidth()\r\n }));\r\n return width\r\n },\r\n _getCurrentLabelsPaddings: function(labels) {\r\n var padding = 0;\r\n labels.forEach((function(label, index) {\r\n padding += $(label).outerWidth() - $(label).width()\r\n }));\r\n return padding\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var location = item.location || \"center\";\r\n var container = itemContainer || this[\"_$\" + location + \"Section\"];\r\n var itemHasText = !!(item.text || item.html);\r\n var itemElement = this.callBase(index, item, container, $after);\r\n itemElement.toggleClass(this._buttonClass(), !itemHasText).toggleClass(TOOLBAR_LABEL_CLASS, itemHasText).addClass(item.cssClass);\r\n return itemElement\r\n },\r\n _renderGroupedItems: function() {\r\n var that = this;\r\n each(this.option(\"items\"), (function(groupIndex, group) {\r\n var groupItems = group.items;\r\n var $container = $(\"
\").addClass(TOOLBAR_GROUP_CLASS);\r\n var location = group.location || \"center\";\r\n if (!groupItems || !groupItems.length) {\r\n return\r\n }\r\n each(groupItems, (function(itemIndex, item) {\r\n that._renderItem(itemIndex, item, $container, null)\r\n }));\r\n that._$toolbarItemsContainer.find(\".dx-toolbar-\" + location).append($container)\r\n }))\r\n },\r\n _renderItems: function(items) {\r\n var grouped = this.option(\"grouped\") && items.length && items[0].items;\r\n grouped ? this._renderGroupedItems() : this.callBase(items)\r\n },\r\n _getToolbarItems: function() {\r\n return this.option(\"items\") || []\r\n },\r\n _renderContentImpl: function() {\r\n var items = this._getToolbarItems();\r\n this.$element().toggleClass(TOOLBAR_MINI_CLASS, 0 === items.length);\r\n if (this._renderedItemsCount) {\r\n this._renderItems(items.slice(this._renderedItemsCount))\r\n } else {\r\n this._renderItems(items)\r\n }\r\n this._applyCompactMode()\r\n },\r\n _renderEmptyMessage: noop,\r\n _clean: function() {\r\n this._$toolbarItemsContainer.children().empty();\r\n this.$element().empty()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._arrangeItems()\r\n }\r\n },\r\n _isVisible: function() {\r\n return this.$element().width() > 0 && this.$element().height() > 0\r\n },\r\n _getIndexByItem: function(item) {\r\n return inArray(item, this._getToolbarItems())\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n this.callBase.apply(this, [item, property, value]);\r\n this._arrangeItems()\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"width\":\r\n this.callBase.apply(this, arguments);\r\n this._dimensionChanged();\r\n break;\r\n case \"multiline\":\r\n this.$element().toggleClass(TOOLBAR_MULTILINE_CLASS, args.value);\r\n break;\r\n case \"renderAs\":\r\n case \"useFlatButtons\":\r\n case \"useDefaultButtons\":\r\n this._invalidate();\r\n break;\r\n case \"compactMode\":\r\n this._applyCompactMode();\r\n break;\r\n case \"grouped\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._waitParentAnimationTimeout)\r\n }\r\n});\r\nregisterComponent(\"dxToolbarBase\", ToolbarBase);\r\nexport default ToolbarBase;\r\n","/**\r\n * DevExtreme (esm/core/utils/data.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../errors\";\r\nimport Class from \"../class\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"./object\";\r\nimport {\r\n isObject,\r\n isPlainObject,\r\n isFunction,\r\n isDefined\r\n} from \"./type\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport variableWrapper from \"./variable_wrapper\";\r\nvar unwrapVariable = variableWrapper.unwrap;\r\nvar isWrapped = variableWrapper.isWrapped;\r\nvar assign = variableWrapper.assign;\r\nvar bracketsToDots = function(expr) {\r\n return expr.replace(/\\[/g, \".\").replace(/\\]/g, \"\")\r\n};\r\nvar readPropValue = function(obj, propName, options) {\r\n options = options || {};\r\n if (\"this\" === propName) {\r\n return unwrap(obj, options)\r\n }\r\n return unwrap(obj[propName], options)\r\n};\r\nvar assignPropValue = function(obj, propName, value, options) {\r\n if (\"this\" === propName) {\r\n throw new errors.Error(\"E4016\")\r\n }\r\n var propValue = obj[propName];\r\n if (options.unwrapObservables && isWrapped(propValue)) {\r\n assign(propValue, value)\r\n } else {\r\n obj[propName] = value\r\n }\r\n};\r\nvar prepareOptions = function(options) {\r\n options = options || {};\r\n options.unwrapObservables = void 0 !== options.unwrapObservables ? options.unwrapObservables : true;\r\n return options\r\n};\r\n\r\nfunction unwrap(value, options) {\r\n return options.unwrapObservables ? unwrapVariable(value) : value\r\n}\r\nexport var compileGetter = function(expr) {\r\n if (arguments.length > 1) {\r\n expr = [].slice.call(arguments)\r\n }\r\n if (!expr || \"this\" === expr) {\r\n return function(obj) {\r\n return obj\r\n }\r\n }\r\n if (\"string\" === typeof expr) {\r\n expr = bracketsToDots(expr);\r\n var path = expr.split(\".\");\r\n return function(obj, options) {\r\n options = prepareOptions(options);\r\n var functionAsIs = options.functionsAsIs;\r\n var hasDefaultValue = \"defaultValue\" in options;\r\n var current = unwrap(obj, options);\r\n for (var i = 0; i < path.length; i++) {\r\n if (!current) {\r\n if (null == current && hasDefaultValue) {\r\n return options.defaultValue\r\n }\r\n break\r\n }\r\n var pathPart = path[i];\r\n if (hasDefaultValue && isObject(current) && !(pathPart in current)) {\r\n return options.defaultValue\r\n }\r\n var next = unwrap(current[pathPart], options);\r\n if (!functionAsIs && isFunction(next)) {\r\n next = next.call(current)\r\n }\r\n current = next\r\n }\r\n return current\r\n }\r\n }\r\n if (Array.isArray(expr)) {\r\n return combineGetters(expr)\r\n }\r\n if (isFunction(expr)) {\r\n return expr\r\n }\r\n};\r\n\r\nfunction combineGetters(getters) {\r\n var compiledGetters = {};\r\n for (var i = 0, l = getters.length; i < l; i++) {\r\n var getter = getters[i];\r\n compiledGetters[getter] = compileGetter(getter)\r\n }\r\n return function(obj, options) {\r\n var result;\r\n each(compiledGetters, (function(name) {\r\n var value = this(obj, options);\r\n if (void 0 === value) {\r\n return\r\n }\r\n var current = result || (result = {});\r\n var path = name.split(\".\");\r\n var last = path.length - 1;\r\n for (var _i = 0; _i < last; _i++) {\r\n var pathItem = path[_i];\r\n if (!(pathItem in current)) {\r\n current[pathItem] = {}\r\n }\r\n current = current[pathItem]\r\n }\r\n current[path[last]] = value\r\n }));\r\n return result\r\n }\r\n}\r\nvar ensurePropValueDefined = function(obj, propName, value, options) {\r\n if (isDefined(value)) {\r\n return value\r\n }\r\n var newValue = {};\r\n assignPropValue(obj, propName, newValue, options);\r\n return newValue\r\n};\r\nexport var compileSetter = function(expr) {\r\n expr = bracketsToDots(expr || \"this\").split(\".\");\r\n var lastLevelIndex = expr.length - 1;\r\n return function(obj, value, options) {\r\n options = prepareOptions(options);\r\n var currentValue = unwrap(obj, options);\r\n expr.forEach((function(propertyName, levelIndex) {\r\n var propertyValue = readPropValue(currentValue, propertyName, options);\r\n var isPropertyFunc = !options.functionsAsIs && isFunction(propertyValue) && !isWrapped(propertyValue);\r\n if (levelIndex === lastLevelIndex) {\r\n if (options.merge && isPlainObject(value) && (!isDefined(propertyValue) || isPlainObject(propertyValue))) {\r\n propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);\r\n deepExtendArraySafe(propertyValue, value, false, true)\r\n } else if (isPropertyFunc) {\r\n currentValue[propertyName](value)\r\n } else {\r\n assignPropValue(currentValue, propertyName, value, options)\r\n }\r\n } else {\r\n propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);\r\n if (isPropertyFunc) {\r\n propertyValue = propertyValue.call(currentValue)\r\n }\r\n currentValue = propertyValue\r\n }\r\n }))\r\n }\r\n};\r\nexport var toComparable = function(value, caseSensitive) {\r\n if (value instanceof Date) {\r\n return value.getTime()\r\n }\r\n if (value && value instanceof Class && value.valueOf) {\r\n return value.valueOf()\r\n }\r\n if (!caseSensitive && \"string\" === typeof value) {\r\n return value.toLowerCase()\r\n }\r\n return value\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/event_registrator_callbacks.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport MemorizedCallbacks from \"../../core/memorized_callbacks\";\r\nexport default new MemorizedCallbacks;\r\n","/**\r\n * DevExtreme (esm/ui/collection/item.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n attachInstanceToElement,\r\n getInstanceByElement\r\n} from \"../../core/utils/public_component\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar forcibleWatcher = function(watchMethod, fn, callback) {\r\n var filteredCallback = function(value) {\r\n if (oldValue !== value) {\r\n callback(value, oldValue);\r\n oldValue = value\r\n }\r\n };\r\n var oldValue;\r\n return {\r\n dispose: watchMethod(fn, filteredCallback),\r\n force: function() {\r\n filteredCallback(fn())\r\n }\r\n }\r\n};\r\nvar CollectionItem = Class.inherit({\r\n ctor: function($element, options, rawData) {\r\n this._$element = $element;\r\n this._options = options;\r\n this._rawData = rawData;\r\n attachInstanceToElement($element, this, this._dispose);\r\n this._render()\r\n },\r\n _render: function() {\r\n var $placeholder = $(\"
\").addClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n this._$element.append($placeholder);\r\n this._watchers = [];\r\n this._renderWatchers()\r\n },\r\n _renderWatchers: function() {\r\n this._startWatcher(\"disabled\", this._renderDisabled.bind(this));\r\n this._startWatcher(\"visible\", this._renderVisible.bind(this))\r\n },\r\n _startWatcher: function(field, render) {\r\n var rawData = this._rawData;\r\n var exprGetter = this._options.fieldGetter(field);\r\n var watcher = forcibleWatcher(this._options.watchMethod(), (function() {\r\n return exprGetter(rawData)\r\n }), function(value, oldValue) {\r\n this._dirty = true;\r\n render(value, oldValue)\r\n }.bind(this));\r\n this._watchers.push(watcher)\r\n },\r\n setDataField: function() {\r\n this._dirty = false;\r\n each(this._watchers, (function(_, watcher) {\r\n watcher.force()\r\n }));\r\n if (this._dirty) {\r\n return true\r\n }\r\n },\r\n _renderDisabled: function(value, oldValue) {\r\n this._$element.toggleClass(DISABLED_STATE_CLASS, !!value);\r\n this._updateOwnerFocus(value)\r\n },\r\n _updateOwnerFocus: function(isDisabled) {\r\n var ownerComponent = this._options.owner;\r\n if (ownerComponent && isDisabled) {\r\n ownerComponent._resetItemFocus(this._$element)\r\n }\r\n },\r\n _renderVisible: function(value, oldValue) {\r\n this._$element.toggleClass(INVISIBLE_STATE_CLASS, void 0 !== value && !value)\r\n },\r\n _dispose: function() {\r\n each(this._watchers, (function(_, watcher) {\r\n watcher.dispose()\r\n }))\r\n }\r\n});\r\nCollectionItem.getInstance = function($element) {\r\n return getInstanceByElement($element, this)\r\n};\r\nexport default CollectionItem;\r\n","/**\r\n * DevExtreme (esm/ui/context_menu/ui.context_menu.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isObject,\r\n isRenderer,\r\n isWindow,\r\n isFunction,\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n contains\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport fx from \"../../animation/fx\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport MenuBase from \"./ui.menu_base\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n name as contextMenuEventName\r\n} from \"../../events/contextmenu\";\r\nimport holdEvent from \"../../events/hold\";\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = DX_MENU_ITEM_CLASS + \"-expanded\";\r\nvar DX_MENU_PHONE_CLASS = \"dx-menu-phone-overlay\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_WRAPPER_CLASS = DX_MENU_ITEM_CLASS + \"-wrapper\";\r\nvar DX_SUBMENU_CLASS = \"dx-submenu\";\r\nvar DX_CONTEXT_MENU_CLASS = \"dx-context-menu\";\r\nvar DX_HAS_CONTEXT_MENU_CLASS = \"dx-has-context-menu\";\r\nvar DX_STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar DX_STATE_FOCUSED_CLASS = \"dx-state-focused\";\r\nvar DX_STATE_HOVER_CLASS = \"dx-state-hover\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar FOCUS_LAST = \"last\";\r\nvar ACTIONS = [\"onShowing\", \"onShown\", \"onSubmenuCreated\", \"onHiding\", \"onHidden\", \"onPositioning\", \"onLeftFirstItem\", \"onLeftLastItem\", \"onCloseRootSubmenu\", \"onExpandLastSubmenu\"];\r\nvar LOCAL_SUBMENU_DIRECTIONS = [FOCUS_UP, FOCUS_DOWN, FOCUS_FIRST, FOCUS_LAST];\r\nvar DEFAULT_SHOW_EVENT = \"dxcontextmenu\";\r\nclass ContextMenu extends MenuBase {\r\n getShowEvent(showEventOption) {\r\n var result = null;\r\n if (isObject(showEventOption)) {\r\n if (null !== showEventOption.name) {\r\n result = showEventOption.name || DEFAULT_SHOW_EVENT\r\n }\r\n } else {\r\n result = showEventOption\r\n }\r\n return result\r\n }\r\n getShowDelay(showEventOption) {\r\n return isObject(showEventOption) && showEventOption.delay\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n showEvent: DEFAULT_SHOW_EVENT,\r\n closeOnOutsideClick: true,\r\n position: {\r\n at: \"top left\",\r\n my: \"top left\"\r\n },\r\n onShowing: null,\r\n onShown: null,\r\n onSubmenuCreated: null,\r\n onHiding: null,\r\n onHidden: null,\r\n onPositioning: null,\r\n submenuDirection: \"auto\",\r\n visible: false,\r\n target: void 0,\r\n onLeftFirstItem: null,\r\n onLeftLastItem: null,\r\n onCloseRootSubmenu: null,\r\n onExpandLastSubmenu: null\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: () => !hasWindow(),\r\n options: {\r\n animation: null\r\n }\r\n }])\r\n }\r\n _initActions() {\r\n this._actions = {};\r\n each(ACTIONS, (index, action) => {\r\n this._actions[action] = this._createActionByOption(action) || noop\r\n })\r\n }\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n extend(this._optionsByReference, {\r\n animation: true,\r\n selectedItem: true\r\n })\r\n }\r\n _focusInHandler() {}\r\n _itemContainer() {\r\n return this._overlay ? this._overlay.$content() : $()\r\n }\r\n _eventBindingTarget() {\r\n return this._itemContainer()\r\n }\r\n itemsContainer() {\r\n return this._overlay ? this._overlay.$content() : void 0\r\n }\r\n _supportedKeys() {\r\n return extend(super._supportedKeys(), {\r\n space: () => {\r\n var $item = $(this.option(\"focusedElement\"));\r\n this.hide();\r\n if (!$item.length || !this._isSelectionEnabled()) {\r\n return\r\n }\r\n this.selectItem($item[0])\r\n },\r\n escape: this.hide\r\n })\r\n }\r\n _getActiveItem() {\r\n var $availableItems = this._getAvailableItems();\r\n var $focusedItem = $availableItems.filter(\".\".concat(DX_STATE_FOCUSED_CLASS));\r\n var $hoveredItem = $availableItems.filter(\".\".concat(DX_STATE_HOVER_CLASS));\r\n var $hoveredItemContainer = $hoveredItem.closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS));\r\n if ($hoveredItemContainer.find(\".\".concat(DX_MENU_ITEM_CLASS)).index($focusedItem) >= 0) {\r\n return $focusedItem\r\n }\r\n if ($hoveredItem.length) {\r\n return $hoveredItem\r\n }\r\n return super._getActiveItem()\r\n }\r\n _moveFocus(location) {\r\n var $items = this._getItemsByLocation(location);\r\n var $oldTarget = this._getActiveItem(true);\r\n var $hoveredItem = this.itemsContainer().find(\".\".concat(DX_STATE_HOVER_CLASS));\r\n var $focusedItem = $(this.option(\"focusedElement\"));\r\n var $activeItemHighlighted = !!($focusedItem.length || $hoveredItem.length);\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_UP:\r\n $newTarget = $activeItemHighlighted ? this._prevItem($items) : $oldTarget;\r\n this._setFocusedElement($newTarget);\r\n if ($oldTarget.is($items.first())) {\r\n this._actions.onLeftFirstItem($oldTarget)\r\n }\r\n break;\r\n case FOCUS_DOWN:\r\n $newTarget = $activeItemHighlighted ? this._nextItem($items) : $oldTarget;\r\n this._setFocusedElement($newTarget);\r\n if ($oldTarget.is($items.last())) {\r\n this._actions.onLeftLastItem($oldTarget)\r\n }\r\n break;\r\n case FOCUS_RIGHT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._hideSubmenuHandler() : this._expandSubmenuHandler($items, location);\r\n this._setFocusedElement($newTarget);\r\n break;\r\n case FOCUS_LEFT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._expandSubmenuHandler($items, location) : this._hideSubmenuHandler();\r\n this._setFocusedElement($newTarget);\r\n break;\r\n case FOCUS_FIRST:\r\n $newTarget = $items.first();\r\n this._setFocusedElement($newTarget);\r\n break;\r\n case FOCUS_LAST:\r\n $newTarget = $items.last();\r\n this._setFocusedElement($newTarget);\r\n break;\r\n default:\r\n return super._moveFocus(location)\r\n }\r\n }\r\n _setFocusedElement($element) {\r\n if ($element && 0 !== $element.length) {\r\n this.option(\"focusedElement\", getPublicElement($element))\r\n }\r\n }\r\n _getItemsByLocation(location) {\r\n var $activeItem = this._getActiveItem(true);\r\n var $items;\r\n if (inArray(location, LOCAL_SUBMENU_DIRECTIONS) >= 0) {\r\n $items = $activeItem.closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS)).children().children()\r\n }\r\n $items = this._getAvailableItems($items);\r\n return $items\r\n }\r\n _getAriaTarget() {\r\n return this.$element()\r\n }\r\n _refreshActiveDescendant() {\r\n if (isDefined(this._overlay)) {\r\n var $target = this._overlay.$content();\r\n super._refreshActiveDescendant($target)\r\n }\r\n }\r\n _hideSubmenuHandler() {\r\n var $curItem = this._getActiveItem(true);\r\n var $parentItem = $curItem.parents(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS)).first();\r\n if ($parentItem.length) {\r\n this._hideSubmenusOnSameLevel($parentItem);\r\n this._hideSubmenu($curItem.closest(\".\".concat(DX_SUBMENU_CLASS)));\r\n return $parentItem\r\n }\r\n this._actions.onCloseRootSubmenu($curItem);\r\n return $curItem\r\n }\r\n _expandSubmenuHandler($items, location) {\r\n var $curItem = this._getActiveItem(true);\r\n var itemData = this._getItemData($curItem);\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n var isItemHasSubmenu = this._hasSubmenu(node);\r\n var $submenu = $curItem.children(\".\".concat(DX_SUBMENU_CLASS));\r\n if (isItemHasSubmenu && !$curItem.hasClass(DX_STATE_DISABLED_CLASS)) {\r\n if (!$submenu.length || \"hidden\" === $submenu.css(\"visibility\")) {\r\n this._showSubmenu($curItem)\r\n }\r\n return this._nextItem(this._getItemsByLocation(location))\r\n }\r\n this._actions.onExpandLastSubmenu($curItem);\r\n return\r\n }\r\n _clean() {\r\n if (this._overlay) {\r\n this._overlay.$element().remove();\r\n this._overlay = null\r\n }\r\n this._detachShowContextMenuEvents(this._getTarget());\r\n super._clean()\r\n }\r\n _initMarkup() {\r\n this.$element().addClass(DX_HAS_CONTEXT_MENU_CLASS);\r\n super._initMarkup()\r\n }\r\n _render() {\r\n super._render();\r\n this._renderVisibility(this.option(\"visible\"));\r\n this._addWidgetClass()\r\n }\r\n _renderContentImpl() {\r\n this._detachShowContextMenuEvents(this._getTarget());\r\n this._attachShowContextMenuEvents()\r\n }\r\n _attachKeyboardEvents() {\r\n !this._keyboardListenerId && this._focusTarget().length && super._attachKeyboardEvents()\r\n }\r\n _renderContextMenuOverlay() {\r\n if (this._overlay) {\r\n return\r\n }\r\n var overlayOptions = this._getOverlayOptions();\r\n this._overlay = this._createComponent($(\"
\").appendTo(this._$element), Overlay, overlayOptions);\r\n var $overlayContent = this._overlay.$content();\r\n $overlayContent.addClass(DX_CONTEXT_MENU_CLASS);\r\n this._addCustomCssClass($overlayContent);\r\n this._addPlatformDependentClass($overlayContent);\r\n this._attachContextMenuEvent()\r\n }\r\n preventShowingDefaultContextMenuAboveOverlay() {\r\n var $itemContainer = this._itemContainer();\r\n var eventName = addNamespace(contextMenuEventName, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, \".\".concat(DX_SUBMENU_CLASS));\r\n eventsEngine.on($itemContainer, eventName, \".\".concat(DX_SUBMENU_CLASS), (e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n eventsEngine.off($itemContainer, eventName, \".\".concat(DX_SUBMENU_CLASS))\r\n }).bind(this))\r\n }\r\n _itemContextMenuHandler(e) {\r\n super._itemContextMenuHandler(e);\r\n e.stopPropagation()\r\n }\r\n _addPlatformDependentClass($element) {\r\n if (devices.current().phone) {\r\n $element.addClass(DX_MENU_PHONE_CLASS)\r\n }\r\n }\r\n _detachShowContextMenuEvents(target) {\r\n var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n if (!showEvent) {\r\n return\r\n }\r\n var eventName = addNamespace(showEvent, this.NAME);\r\n if (this._showContextMenuEventHandler) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n } else {\r\n eventsEngine.off($(target), eventName)\r\n }\r\n }\r\n _attachShowContextMenuEvents() {\r\n var target = this._getTarget();\r\n var showEvent = this.getShowEvent(this.option(\"showEvent\"));\r\n if (!showEvent) {\r\n return\r\n }\r\n var eventName = addNamespace(showEvent, this.NAME);\r\n var contextMenuAction = this._createAction(e => {\r\n var delay = this.getShowDelay(this.option(\"showEvent\"));\r\n if (delay) {\r\n setTimeout(() => this._show(e.event), delay)\r\n } else {\r\n this._show(e.event)\r\n }\r\n }, {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = e => contextMenuAction({\r\n event: e,\r\n target: $(e.currentTarget)\r\n });\r\n contextMenuAction = this._createAction(contextMenuAction);\r\n if (isRenderer(target) || target.nodeType || isWindow(target)) {\r\n this._showContextMenuEventHandler = void 0;\r\n eventsEngine.on(target, eventName, handler)\r\n } else {\r\n this._showContextMenuEventHandler = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, this._showContextMenuEventHandler)\r\n }\r\n }\r\n _hoverEndHandler(e) {\r\n super._hoverEndHandler(e);\r\n e.stopPropagation()\r\n }\r\n _renderDimensions() {}\r\n _renderContainer($wrapper, submenuContainer) {\r\n var $holder = submenuContainer || this._itemContainer();\r\n $wrapper = $(\"
\");\r\n $wrapper.appendTo($holder).addClass(DX_SUBMENU_CLASS).css(\"visibility\", submenuContainer ? \"hidden\" : \"visible\");\r\n var $itemsContainer = super._renderContainer($wrapper);\r\n if (submenuContainer) {\r\n return $itemsContainer\r\n }\r\n if (this.option(\"width\")) {\r\n return $itemsContainer.css(\"minWidth\", this.option(\"width\"))\r\n }\r\n if (this.option(\"height\")) {\r\n return $itemsContainer.css(\"minHeight\", this.option(\"height\"))\r\n }\r\n return $itemsContainer\r\n }\r\n _renderSubmenuItems(node, $itemFrame) {\r\n this._renderItems(this._getChildNodes(node), $itemFrame);\r\n this._actions.onSubmenuCreated({\r\n itemElement: getPublicElement($itemFrame),\r\n itemData: node.internalFields.item,\r\n submenuElement: getPublicElement($itemFrame.children(\".\".concat(DX_SUBMENU_CLASS)))\r\n })\r\n }\r\n _getOverlayOptions() {\r\n var position = this.option(\"position\");\r\n var overlayOptions = {\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n animation: this.option(\"animation\"),\r\n innerOverlay: true,\r\n closeOnOutsideClick: this._closeOnOutsideClickHandler.bind(this),\r\n propagateOutsideClick: true,\r\n closeOnTargetScroll: true,\r\n deferRendering: false,\r\n position: {\r\n at: position.at,\r\n my: position.my,\r\n of: this._getTarget(),\r\n collision: \"flipfit\"\r\n },\r\n shading: false,\r\n showTitle: false,\r\n height: \"auto\",\r\n width: \"auto\",\r\n onShown: this._overlayShownActionHandler.bind(this),\r\n onHiding: this._overlayHidingActionHandler.bind(this),\r\n onHidden: this._overlayHiddenActionHandler.bind(this)\r\n };\r\n return overlayOptions\r\n }\r\n _overlayShownActionHandler(arg) {\r\n this._actions.onShown(arg)\r\n }\r\n _overlayHidingActionHandler(arg) {\r\n this._actions.onHiding(arg);\r\n if (!arg.cancel) {\r\n this._hideAllShownSubmenus();\r\n this._setOptionWithoutOptionChange(\"visible\", false)\r\n }\r\n }\r\n _overlayHiddenActionHandler(arg) {\r\n this._actions.onHidden(arg)\r\n }\r\n _closeOnOutsideClickHandler(e) {\r\n var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n if (isFunction(closeOnOutsideClick)) {\r\n return closeOnOutsideClick(e)\r\n }\r\n if (!closeOnOutsideClick) {\r\n return false\r\n }\r\n if (domAdapter.isDocument(e.target)) {\r\n return true\r\n }\r\n var $activeItemContainer = this._getActiveItemsContainer(e.target);\r\n var $itemContainers = this._getItemsContainers();\r\n var $clickedItem = this._searchActiveItem(e.target);\r\n var $rootItem = this.$element().parents(\".\".concat(DX_MENU_ITEM_CLASS));\r\n var isRootItemClicked = $clickedItem[0] === $rootItem[0] && $clickedItem.length && $rootItem.length;\r\n var isInnerOverlayClicked = this._isIncludeOverlay($activeItemContainer, $itemContainers) && $clickedItem.length;\r\n if (isInnerOverlayClicked || isRootItemClicked) {\r\n if (\"onClick\" === this._getShowSubmenuMode()) {\r\n this._hideAllShownChildSubmenus($clickedItem)\r\n }\r\n return false\r\n }\r\n return true\r\n }\r\n _getActiveItemsContainer(target) {\r\n return $(target).closest(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n }\r\n _getItemsContainers() {\r\n return this._overlay.$content().find(\".\".concat(DX_MENU_ITEMS_CONTAINER_CLASS))\r\n }\r\n _searchActiveItem(target) {\r\n return $(target).closest(\".\".concat(DX_MENU_ITEM_CLASS)).eq(0)\r\n }\r\n _isIncludeOverlay($activeOverlay, $allOverlays) {\r\n var isSame = false;\r\n each($allOverlays, (index, $overlay) => {\r\n if ($activeOverlay.is($overlay) && !isSame) {\r\n isSame = true\r\n }\r\n });\r\n return isSame\r\n }\r\n _hideAllShownChildSubmenus($clickedItem) {\r\n var $submenuElements = $clickedItem.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var shownSubmenus = extend([], this._shownSubmenus);\r\n if ($submenuElements.length > 0) {\r\n each(shownSubmenus, (index, $submenu) => {\r\n var $context = this._searchActiveItem($submenu.context).parent();\r\n if ($context.parent().is($clickedItem.parent().parent()) && !$context.is($clickedItem.parent())) {\r\n this._hideSubmenu($submenu)\r\n }\r\n })\r\n }\r\n }\r\n _showSubmenu($item) {\r\n var node = this._dataAdapter.getNodeByItem(this._getItemData($item));\r\n this._hideSubmenusOnSameLevel($item);\r\n if (!this._hasSubmenu(node)) {\r\n return\r\n }\r\n var $submenu = $item.children(\".\".concat(DX_SUBMENU_CLASS));\r\n var isSubmenuRendered = $submenu.length;\r\n super._showSubmenu($item);\r\n if (!isSubmenuRendered) {\r\n this._renderSubmenuItems(node, $item)\r\n }\r\n if (!this._isSubmenuVisible($submenu)) {\r\n this._drawSubmenu($item)\r\n }\r\n }\r\n _hideSubmenusOnSameLevel($item) {\r\n var $expandedItems = $item.parent(\".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)).siblings().find(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS));\r\n if ($expandedItems.length) {\r\n $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n this._hideSubmenu($expandedItems.find(\".\".concat(DX_SUBMENU_CLASS)))\r\n }\r\n }\r\n _hideSubmenuGroup($submenu) {\r\n if (this._isSubmenuVisible($submenu)) {\r\n this._hideSubmenuCore($submenu)\r\n }\r\n }\r\n _isSubmenuVisible($submenu) {\r\n return \"visible\" === $submenu.css(\"visibility\")\r\n }\r\n _drawSubmenu($itemElement) {\r\n var animation = this.option(\"animation\") ? this.option(\"animation\").show : {};\r\n var $submenu = $itemElement.children(\".\".concat(DX_SUBMENU_CLASS));\r\n var submenuPosition = this._getSubmenuPosition($itemElement);\r\n if (this._overlay && this._overlay.option(\"visible\")) {\r\n if (!isDefined(this._shownSubmenus)) {\r\n this._shownSubmenus = []\r\n }\r\n if (inArray($submenu, this._shownSubmenus)) {\r\n this._shownSubmenus.push($submenu)\r\n }\r\n if (animation) {\r\n fx.stop($submenu)\r\n }\r\n animationPosition.setup($submenu, submenuPosition);\r\n if (animation) {\r\n if (isPlainObject(animation.to)) {\r\n animation.to.position = submenuPosition\r\n }\r\n this._animate($submenu, animation)\r\n }\r\n $submenu.css(\"visibility\", \"visible\")\r\n }\r\n }\r\n _animate($container, options) {\r\n fx.animate($container, options)\r\n }\r\n _getSubmenuPosition($rootItem) {\r\n var submenuDirection = this.option(\"submenuDirection\").toLowerCase();\r\n var $rootItemWrapper = $rootItem.parent(\".\".concat(DX_MENU_ITEM_WRAPPER_CLASS));\r\n var position = {\r\n collision: \"flip\",\r\n of: $rootItemWrapper,\r\n offset: {\r\n h: 0,\r\n v: -1\r\n }\r\n };\r\n switch (submenuDirection) {\r\n case \"left\":\r\n position.at = \"left top\";\r\n position.my = \"right top\";\r\n break;\r\n case \"right\":\r\n position.at = \"right top\";\r\n position.my = \"left top\";\r\n break;\r\n default:\r\n if (this.option(\"rtlEnabled\")) {\r\n position.at = \"left top\";\r\n position.my = \"right top\"\r\n } else {\r\n position.at = \"right top\";\r\n position.my = \"left top\"\r\n }\r\n }\r\n return position\r\n }\r\n _updateSubmenuVisibilityOnClick(actionArgs) {\r\n if (!actionArgs.args.length) {\r\n return\r\n }\r\n var itemData = actionArgs.args[0].itemData;\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n if (!node) {\r\n return\r\n }\r\n var $itemElement = $(actionArgs.args[0].itemElement);\r\n var $submenu = $itemElement.find(\".\".concat(DX_SUBMENU_CLASS));\r\n var shouldRenderSubmenu = this._hasSubmenu(node) && !$submenu.length;\r\n if (shouldRenderSubmenu) {\r\n this._renderSubmenuItems(node, $itemElement);\r\n $submenu = $itemElement.find(\".\".concat(DX_SUBMENU_CLASS))\r\n }\r\n if ($itemElement.context === $submenu.context && \"visible\" === $submenu.css(\"visibility\")) {\r\n return\r\n }\r\n var notCloseMenuOnItemClick = itemData && false === itemData.closeMenuOnClick;\r\n if (!itemData || itemData.disabled || notCloseMenuOnItemClick) {\r\n return\r\n }\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (0 === $submenu.length) {\r\n var $prevSubmenu = $($itemElement.parents(\".\".concat(DX_SUBMENU_CLASS))[0]);\r\n this._hideSubmenu($prevSubmenu);\r\n if (!actionArgs.canceled && this._overlay && this._overlay.option(\"visible\")) {\r\n this.option(\"visible\", false)\r\n }\r\n } else {\r\n if (this._shownSubmenus && this._shownSubmenus.length > 0) {\r\n if (this._shownSubmenus[0].is($submenu)) {\r\n this._hideSubmenu($submenu)\r\n }\r\n }\r\n this._showSubmenu($itemElement)\r\n }\r\n }\r\n _hideSubmenu($curSubmenu) {\r\n var shownSubmenus = extend([], this._shownSubmenus);\r\n each(shownSubmenus, (index, $submenu) => {\r\n if ($curSubmenu.is($submenu) || contains($curSubmenu[0], $submenu[0])) {\r\n $submenu.parent().removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n this._hideSubmenuCore($submenu)\r\n }\r\n })\r\n }\r\n _hideSubmenuCore($submenu) {\r\n var index = inArray($submenu, this._shownSubmenus);\r\n var animation = this.option(\"animation\") ? this.option(\"animation\").hide : null;\r\n if (index >= 0) {\r\n this._shownSubmenus.splice(index, 1)\r\n }\r\n this._stopAnimate($submenu);\r\n animation && this._animate($submenu, animation);\r\n $submenu.css(\"visibility\", \"hidden\")\r\n }\r\n _stopAnimate($container) {\r\n fx.stop($container, true)\r\n }\r\n _hideAllShownSubmenus() {\r\n var shownSubmenus = extend([], this._shownSubmenus);\r\n var $expandedItems = this._overlay.$content().find(\".\".concat(DX_MENU_ITEM_EXPANDED_CLASS));\r\n $expandedItems.removeClass(DX_MENU_ITEM_EXPANDED_CLASS);\r\n each(shownSubmenus, (_, $submenu) => {\r\n this._hideSubmenu($submenu)\r\n })\r\n }\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n this._renderContentImpl()\r\n }\r\n }\r\n _optionChanged(args) {\r\n if (inArray(args.name, ACTIONS) > -1) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"visible\":\r\n this._renderVisibility(args.value);\r\n break;\r\n case \"showEvent\":\r\n case \"position\":\r\n case \"submenuDirection\":\r\n this._invalidate();\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachShowContextMenuEvents(args.previousValue);\r\n this._invalidate();\r\n break;\r\n case \"closeOnOutsideClick\":\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _renderVisibility(showing) {\r\n return showing ? this._show() : this._hide()\r\n }\r\n _toggleVisibility() {}\r\n _show(event) {\r\n var args = {\r\n jQEvent: event\r\n };\r\n var promise = (new Deferred).reject().promise();\r\n this._actions.onShowing(args);\r\n if (args.cancel) {\r\n return promise\r\n }\r\n var position = this._positionContextMenu(event);\r\n if (position) {\r\n var _event$originalEvent;\r\n if (!this._overlay) {\r\n this._renderContextMenuOverlay();\r\n this._overlay.$content().addClass(this._widgetClass());\r\n this._renderFocusState();\r\n this._attachHoverEvents();\r\n this._attachClickEvent();\r\n this._renderItems(this._dataAdapter.getRootNodes())\r\n }\r\n this._setOptionWithoutOptionChange(\"visible\", true);\r\n this._overlay.option(\"position\", position);\r\n promise = this._overlay.show();\r\n event && event.stopPropagation();\r\n this._setAriaAttributes();\r\n if ((null === event || void 0 === event ? void 0 : null === (_event$originalEvent = event.originalEvent) || void 0 === _event$originalEvent ? void 0 : _event$originalEvent.type) === holdEvent.name) {\r\n this.preventShowingDefaultContextMenuAboveOverlay()\r\n }\r\n }\r\n return promise\r\n }\r\n _setAriaAttributes() {\r\n this._overlayContentId = \"dx-\".concat(new Guid);\r\n this.setAria(\"owns\", this._overlayContentId);\r\n this.setAria({\r\n id: this._overlayContentId,\r\n role: \"menu\"\r\n }, this._overlay.$content())\r\n }\r\n _cleanAriaAttributes() {\r\n this._overlay && this.setAria(\"id\", null, this._overlay.$content());\r\n this.setAria(\"owns\", void 0)\r\n }\r\n _getTarget() {\r\n return this.option(\"target\") || this.option(\"position\").of || $(domAdapter.getDocument())\r\n }\r\n _getContextMenuPosition() {\r\n return extend({}, this.option(\"position\"), {\r\n of: this._getTarget()\r\n })\r\n }\r\n _positionContextMenu(jQEvent) {\r\n var position = this._getContextMenuPosition();\r\n var isInitialPosition = this._isInitialOptionValue(\"position\");\r\n var positioningAction = this._createActionByOption(\"onPositioning\", actionArgs);\r\n if (jQEvent && jQEvent.preventDefault && isInitialPosition) {\r\n position.of = jQEvent\r\n }\r\n var actionArgs = {\r\n position: position,\r\n event: jQEvent\r\n };\r\n positioningAction(actionArgs);\r\n if (actionArgs.cancel) {\r\n position = null\r\n } else if (actionArgs.event) {\r\n actionArgs.event.cancel = true;\r\n jQEvent.preventDefault()\r\n }\r\n return position\r\n }\r\n _refresh() {\r\n if (!hasWindow()) {\r\n super._refresh()\r\n } else if (this._overlay) {\r\n var lastPosition = this._overlay.option(\"position\");\r\n super._refresh();\r\n this._overlay && this._overlay.option(\"position\", lastPosition)\r\n } else {\r\n super._refresh()\r\n }\r\n }\r\n _hide() {\r\n var promise;\r\n if (this._overlay) {\r\n promise = this._overlay.hide();\r\n this._setOptionWithoutOptionChange(\"visible\", false)\r\n }\r\n this._cleanAriaAttributes();\r\n this.option(\"focusedElement\", null);\r\n return promise || (new Deferred).reject().promise()\r\n }\r\n toggle(showing) {\r\n var visible = this.option(\"visible\");\r\n showing = void 0 === showing ? !visible : showing;\r\n return this._renderVisibility(showing)\r\n }\r\n show() {\r\n return this.toggle(true)\r\n }\r\n hide() {\r\n return this.toggle(false)\r\n }\r\n}\r\nregisterComponent(\"dxContextMenu\", ContextMenu);\r\nexport default ContextMenu;\r\n","/**\r\n * DevExtreme (esm/ui/context_menu.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ContextMenu from \"./context_menu/ui.context_menu\";\r\nexport default ContextMenu;\r\n","/**\r\n * DevExtreme (esm/core/utils/extend.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isPlainObject\r\n} from \"./type\";\r\nexport var extendFromObject = function(target, source, overrideExistingValues) {\r\n target = target || {};\r\n for (var prop in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\r\n var value = source[prop];\r\n if (!(prop in target) || overrideExistingValues) {\r\n target[prop] = value\r\n }\r\n }\r\n }\r\n return target\r\n};\r\nexport var extend = function extend(target) {\r\n target = target || {};\r\n var i = 1;\r\n var deep = false;\r\n if (\"boolean\" === typeof target) {\r\n deep = target;\r\n target = arguments[1] || {};\r\n i++\r\n }\r\n for (; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n if (null == source) {\r\n continue\r\n }\r\n for (var key in source) {\r\n var targetValue = target[key];\r\n var sourceValue = source[key];\r\n var sourceValueIsArray = false;\r\n var clone = void 0;\r\n if (\"__proto__\" === key || \"constructor\" === key || target === sourceValue) {\r\n continue\r\n }\r\n if (deep && sourceValue && (isPlainObject(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) {\r\n if (sourceValueIsArray) {\r\n clone = targetValue && Array.isArray(targetValue) ? targetValue : []\r\n } else {\r\n clone = targetValue && isPlainObject(targetValue) ? targetValue : {}\r\n }\r\n target[key] = extend(deep, clone, sourceValue)\r\n } else if (void 0 !== sourceValue) {\r\n target[key] = sourceValue\r\n }\r\n }\r\n }\r\n return target\r\n};\r\n","/**\r\n * DevExtreme (esm/events/visibility_change.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"./core/events_engine\";\r\nvar triggerVisibilityChangeEvent = function(eventName) {\r\n return function(element) {\r\n var $element = $(element || \"body\");\r\n var changeHandlers = $element.filter(\".dx-visibility-change-handler\").add($element.find(\".dx-visibility-change-handler\"));\r\n for (var i = 0; i < changeHandlers.length; i++) {\r\n eventsEngine.triggerHandler(changeHandlers[i], eventName)\r\n }\r\n }\r\n};\r\nexport var triggerShownEvent = triggerVisibilityChangeEvent(\"dxshown\");\r\nexport var triggerHidingEvent = triggerVisibilityChangeEvent(\"dxhiding\");\r\nexport var triggerResizeEvent = triggerVisibilityChangeEvent(\"dxresize\");\r\n","/**\r\n * DevExtreme (esm/data/array_utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isPlainObject,\r\n isEmptyObject,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport config from \"../core/config\";\r\nimport Guid from \"../core/guid\";\r\nimport {\r\n extend,\r\n extendFromObject\r\n} from \"../core/utils/extend\";\r\nimport {\r\n errors\r\n} from \"./errors\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"../core/utils/object\";\r\nimport {\r\n compileGetter\r\n} from \"../core/utils/data\";\r\nimport dataUtils from \"./utils\";\r\n\r\nfunction hasKey(target, keyOrKeys) {\r\n var key;\r\n var keys = \"string\" === typeof keyOrKeys ? keyOrKeys.split() : keyOrKeys.slice();\r\n while (keys.length) {\r\n key = keys.shift();\r\n if (key in target) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction findItems(keyInfo, items, key, groupCount) {\r\n var childItems;\r\n var result;\r\n if (groupCount) {\r\n for (var i = 0; i < items.length; i++) {\r\n childItems = items[i].items || items[i].collapsedItems || [];\r\n result = findItems(keyInfo, childItems || [], key, groupCount - 1);\r\n if (result) {\r\n return result\r\n }\r\n }\r\n } else if (indexByKey(keyInfo, items, key) >= 0) {\r\n return items\r\n }\r\n}\r\n\r\nfunction getItems(keyInfo, items, key, groupCount) {\r\n if (groupCount) {\r\n return findItems(keyInfo, items, key, groupCount) || []\r\n }\r\n return items\r\n}\r\n\r\nfunction generateDataByKeyMap(keyInfo, array) {\r\n if (keyInfo.key() && (!array._dataByKeyMap || array._dataByKeyMapLength !== array.length)) {\r\n var dataByKeyMap = {};\r\n var arrayLength = array.length;\r\n for (var i = 0; i < arrayLength; i++) {\r\n dataByKeyMap[JSON.stringify(keyInfo.keyOf(array[i]))] = array[i]\r\n }\r\n array._dataByKeyMap = dataByKeyMap;\r\n array._dataByKeyMapLength = arrayLength\r\n }\r\n}\r\n\r\nfunction getCacheValue(array, key) {\r\n if (array._dataByKeyMap) {\r\n return array._dataByKeyMap[JSON.stringify(key)]\r\n }\r\n}\r\n\r\nfunction getHasKeyCacheValue(array, key) {\r\n if (array._dataByKeyMap) {\r\n return array._dataByKeyMap[JSON.stringify(key)]\r\n }\r\n return true\r\n}\r\n\r\nfunction setDataByKeyMapValue(array, key, data) {\r\n if (array._dataByKeyMap) {\r\n array._dataByKeyMap[JSON.stringify(key)] = data;\r\n array._dataByKeyMapLength += data ? 1 : -1\r\n }\r\n}\r\n\r\nfunction createObjectWithChanges(target, changes) {\r\n var result = target ? Object.create(Object.getPrototypeOf(target)) : {};\r\n var targetWithoutPrototype = extendFromObject({}, target);\r\n deepExtendArraySafe(result, targetWithoutPrototype, true, true);\r\n return deepExtendArraySafe(result, changes, true, true)\r\n}\r\n\r\nfunction applyBatch(_ref) {\r\n var {\r\n keyInfo: keyInfo,\r\n data: data,\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: useInsertIndex,\r\n immutable: immutable,\r\n disableCache: disableCache,\r\n logError: logError\r\n } = _ref;\r\n var resultItems = true === immutable ? [...data] : data;\r\n changes.forEach(item => {\r\n var items = \"insert\" === item.type ? resultItems : getItems(keyInfo, resultItems, item.key, groupCount);\r\n !disableCache && generateDataByKeyMap(keyInfo, items);\r\n switch (item.type) {\r\n case \"update\":\r\n update(keyInfo, items, item.key, item.data, true, immutable, logError);\r\n break;\r\n case \"insert\":\r\n insert(keyInfo, items, item.data, useInsertIndex && isDefined(item.index) ? item.index : -1, true, logError);\r\n break;\r\n case \"remove\":\r\n remove(keyInfo, items, item.key, true, logError)\r\n }\r\n });\r\n return resultItems\r\n}\r\n\r\nfunction getErrorResult(isBatch, logError, errorCode) {\r\n return !isBatch ? dataUtils.rejectedPromise(errors.Error(errorCode)) : logError && errors.log(errorCode)\r\n}\r\n\r\nfunction applyChanges(data, changes) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var {\r\n keyExpr: keyExpr = \"id\",\r\n immutable: immutable = true\r\n } = options;\r\n var keyGetter = compileGetter(keyExpr);\r\n var keyInfo = {\r\n key: () => keyExpr,\r\n keyOf: obj => keyGetter(obj)\r\n };\r\n return applyBatch({\r\n keyInfo: keyInfo,\r\n data: data,\r\n changes: changes,\r\n immutable: immutable,\r\n disableCache: true,\r\n logError: true\r\n })\r\n}\r\n\r\nfunction update(keyInfo, array, key, data, isBatch, immutable, logError) {\r\n var target;\r\n var keyExpr = keyInfo.key();\r\n if (keyExpr) {\r\n if (hasKey(data, keyExpr) && !dataUtils.keysEqual(keyExpr, key, keyInfo.keyOf(data))) {\r\n return getErrorResult(isBatch, logError, \"E4017\")\r\n }\r\n target = getCacheValue(array, key);\r\n if (!target) {\r\n var index = indexByKey(keyInfo, array, key);\r\n if (index < 0) {\r\n return getErrorResult(isBatch, logError, \"E4009\")\r\n }\r\n target = array[index];\r\n if (true === immutable && isDefined(target)) {\r\n var newTarget = createObjectWithChanges(target, data);\r\n array[index] = newTarget;\r\n return !isBatch && dataUtils.trivialPromise(newTarget, key)\r\n }\r\n }\r\n } else {\r\n target = key\r\n }\r\n deepExtendArraySafe(target, data, true);\r\n if (!isBatch) {\r\n if (config().useLegacyStoreResult) {\r\n return dataUtils.trivialPromise(key, data)\r\n } else {\r\n return dataUtils.trivialPromise(target, key)\r\n }\r\n }\r\n}\r\n\r\nfunction insert(keyInfo, array, data, index, isBatch, logError) {\r\n var keyValue;\r\n var keyExpr = keyInfo.key();\r\n var obj = isPlainObject(data) ? extend({}, data) : data;\r\n if (keyExpr) {\r\n keyValue = keyInfo.keyOf(obj);\r\n if (void 0 === keyValue || \"object\" === typeof keyValue && isEmptyObject(keyValue)) {\r\n if (Array.isArray(keyExpr)) {\r\n throw errors.Error(\"E4007\")\r\n }\r\n keyValue = obj[keyExpr] = String(new Guid)\r\n } else if (void 0 !== array[indexByKey(keyInfo, array, keyValue)]) {\r\n return getErrorResult(isBatch, logError, \"E4008\")\r\n }\r\n } else {\r\n keyValue = obj\r\n }\r\n if (index >= 0) {\r\n array.splice(index, 0, obj)\r\n } else {\r\n array.push(obj)\r\n }\r\n setDataByKeyMapValue(array, keyValue, obj);\r\n if (!isBatch) {\r\n return dataUtils.trivialPromise(config().useLegacyStoreResult ? data : obj, keyValue)\r\n }\r\n}\r\n\r\nfunction remove(keyInfo, array, key, isBatch, logError) {\r\n var index = indexByKey(keyInfo, array, key);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n setDataByKeyMapValue(array, key, null)\r\n }\r\n if (!isBatch) {\r\n return dataUtils.trivialPromise(key)\r\n } else if (index < 0) {\r\n return getErrorResult(isBatch, logError, \"E4009\")\r\n }\r\n}\r\n\r\nfunction indexByKey(keyInfo, array, key) {\r\n var keyExpr = keyInfo.key();\r\n if (!getHasKeyCacheValue(array, key)) {\r\n return -1\r\n }\r\n for (var i = 0, arrayLength = array.length; i < arrayLength; i++) {\r\n if (dataUtils.keysEqual(keyExpr, keyInfo.keyOf(array[i]), key)) {\r\n return i\r\n }\r\n }\r\n return -1\r\n}\r\nexport {\r\n applyBatch,\r\n createObjectWithChanges,\r\n update,\r\n insert,\r\n remove,\r\n indexByKey,\r\n applyChanges\r\n};\r\n","/**\r\n * DevExtreme (esm/animation/position.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n splitPair,\r\n pairToObject\r\n} from \"../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n isWindow\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport browser from \"../core/utils/browser\";\r\nimport {\r\n resetPosition,\r\n move\r\n} from \"./translator\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport devices from \"../core/devices\";\r\nvar horzRe = /left|right/;\r\nvar vertRe = /top|bottom/;\r\nvar collisionRe = /fit|flip|none/;\r\nvar scaleRe = /scale(.+)/;\r\nvar IS_SAFARI = browser.safari;\r\nvar normalizeAlign = function(raw) {\r\n var result = {\r\n h: \"center\",\r\n v: \"center\"\r\n };\r\n var pair = splitPair(raw);\r\n if (pair) {\r\n each(pair, (function() {\r\n var w = String(this).toLowerCase();\r\n if (horzRe.test(w)) {\r\n result.h = w\r\n } else if (vertRe.test(w)) {\r\n result.v = w\r\n }\r\n }))\r\n }\r\n return result\r\n};\r\nvar normalizeOffset = function(raw) {\r\n return pairToObject(raw)\r\n};\r\nvar normalizeCollision = function(raw) {\r\n var pair = splitPair(raw);\r\n var h = String(pair && pair[0]).toLowerCase();\r\n var v = String(pair && pair[1]).toLowerCase();\r\n if (!collisionRe.test(h)) {\r\n h = \"none\"\r\n }\r\n if (!collisionRe.test(v)) {\r\n v = h\r\n }\r\n return {\r\n h: h,\r\n v: v\r\n }\r\n};\r\nvar getAlignFactor = function(align) {\r\n switch (align) {\r\n case \"center\":\r\n return .5;\r\n case \"right\":\r\n case \"bottom\":\r\n return 1;\r\n default:\r\n return 0\r\n }\r\n};\r\nvar inverseAlign = function(align) {\r\n switch (align) {\r\n case \"left\":\r\n return \"right\";\r\n case \"right\":\r\n return \"left\";\r\n case \"top\":\r\n return \"bottom\";\r\n case \"bottom\":\r\n return \"top\";\r\n default:\r\n return align\r\n }\r\n};\r\nvar calculateOversize = function(data, bounds) {\r\n var oversize = 0;\r\n if (data.myLocation < bounds.min) {\r\n oversize += bounds.min - data.myLocation\r\n }\r\n if (data.myLocation > bounds.max) {\r\n oversize += data.myLocation - bounds.max\r\n }\r\n return oversize\r\n};\r\nvar collisionSide = function(direction, data, bounds) {\r\n if (data.myLocation < bounds.min) {\r\n return \"h\" === direction ? \"left\" : \"top\"\r\n }\r\n if (data.myLocation > bounds.max) {\r\n return \"h\" === direction ? \"right\" : \"bottom\"\r\n }\r\n return \"none\"\r\n};\r\nvar initMyLocation = function(data) {\r\n data.myLocation = data.atLocation + getAlignFactor(data.atAlign) * data.atSize - getAlignFactor(data.myAlign) * data.mySize + data.offset\r\n};\r\nvar collisionResolvers = {\r\n fit: function(data, bounds) {\r\n var result = false;\r\n if (data.myLocation > bounds.max) {\r\n data.myLocation = bounds.max;\r\n result = true\r\n }\r\n if (data.myLocation < bounds.min) {\r\n data.myLocation = bounds.min;\r\n result = true\r\n }\r\n data.fit = result\r\n },\r\n flip: function(data, bounds) {\r\n data.flip = false;\r\n if (\"center\" === data.myAlign && \"center\" === data.atAlign) {\r\n return\r\n }\r\n if (data.myLocation < bounds.min || data.myLocation > bounds.max) {\r\n var inverseData = extend({}, data, {\r\n myAlign: inverseAlign(data.myAlign),\r\n atAlign: inverseAlign(data.atAlign),\r\n offset: -data.offset\r\n });\r\n initMyLocation(inverseData);\r\n inverseData.oversize = calculateOversize(inverseData, bounds);\r\n if (inverseData.myLocation >= bounds.min && inverseData.myLocation <= bounds.max || data.oversize > inverseData.oversize) {\r\n data.myLocation = inverseData.myLocation;\r\n data.oversize = inverseData.oversize;\r\n data.flip = true\r\n }\r\n }\r\n },\r\n flipfit: function(data, bounds) {\r\n this.flip(data, bounds);\r\n this.fit(data, bounds)\r\n },\r\n none: function(data) {\r\n data.oversize = 0\r\n }\r\n};\r\nvar scrollbarWidth;\r\nvar calculateScrollbarWidth = function() {\r\n var $scrollDiv = $(\"
\").css({\r\n width: 100,\r\n height: 100,\r\n overflow: \"scroll\",\r\n position: \"absolute\",\r\n top: -9999\r\n }).appendTo($(\"body\"));\r\n var result = $scrollDiv.get(0).offsetWidth - $scrollDiv.get(0).clientWidth;\r\n $scrollDiv.remove();\r\n scrollbarWidth = result\r\n};\r\nvar defaultPositionResult = {\r\n h: {\r\n location: 0,\r\n flip: false,\r\n fit: false,\r\n oversize: 0\r\n },\r\n v: {\r\n location: 0,\r\n flip: false,\r\n fit: false,\r\n oversize: 0\r\n }\r\n};\r\nvar calculatePosition = function(what, options) {\r\n var $what = $(what);\r\n var currentOffset = $what.offset();\r\n var result = extend(true, {}, defaultPositionResult, {\r\n h: {\r\n location: currentOffset.left\r\n },\r\n v: {\r\n location: currentOffset.top\r\n }\r\n });\r\n if (!options) {\r\n return result\r\n }\r\n var my = normalizeAlign(options.my);\r\n var at = normalizeAlign(options.at);\r\n var of = $(options.of).length && options.of || window;\r\n var offset = normalizeOffset(options.offset);\r\n var collision = normalizeCollision(options.collision);\r\n var boundary = options.boundary;\r\n var boundaryOffset = normalizeOffset(options.boundaryOffset);\r\n var h = {\r\n mySize: $what.outerWidth(),\r\n myAlign: my.h,\r\n atAlign: at.h,\r\n offset: offset.h,\r\n collision: collision.h,\r\n boundaryOffset: boundaryOffset.h\r\n };\r\n var v = {\r\n mySize: $what.outerHeight(),\r\n myAlign: my.v,\r\n atAlign: at.v,\r\n offset: offset.v,\r\n collision: collision.v,\r\n boundaryOffset: boundaryOffset.v\r\n };\r\n if ( of .preventDefault) {\r\n h.atLocation = of .pageX;\r\n v.atLocation = of .pageY;\r\n h.atSize = 0;\r\n v.atSize = 0\r\n } else {\r\n of = $( of );\r\n if (isWindow( of [0])) {\r\n h.atLocation = of .scrollLeft();\r\n v.atLocation = of .scrollTop();\r\n if (\"phone\" === devices.real().deviceType && of [0].visualViewport) {\r\n h.atLocation = Math.max(h.atLocation, of [0].visualViewport.offsetLeft);\r\n v.atLocation = Math.max(v.atLocation, of [0].visualViewport.offsetTop);\r\n h.atSize = of [0].visualViewport.width;\r\n v.atSize = of [0].visualViewport.height\r\n } else {\r\n h.atSize = of [0].innerWidth > of [0].outerWidth ? of [0].innerWidth : of .width();\r\n v.atSize = of [0].innerHeight > of [0].outerHeight || IS_SAFARI ? of [0].innerHeight : of .height()\r\n }\r\n } else if (9 === of [0].nodeType) {\r\n h.atLocation = 0;\r\n v.atLocation = 0;\r\n h.atSize = of .width();\r\n v.atSize = of .height()\r\n } else {\r\n var ofRect = getBoundingRect( of .get(0));\r\n var o = getOffsetWithoutScale( of );\r\n h.atLocation = o.left;\r\n v.atLocation = o.top;\r\n h.atSize = Math.max(ofRect.width, of .outerWidth());\r\n v.atSize = Math.max(ofRect.height, of .outerHeight())\r\n }\r\n }\r\n initMyLocation(h);\r\n initMyLocation(v);\r\n var bounds = function() {\r\n var win = $(window);\r\n var windowWidth = win.width();\r\n var windowHeight = win.height();\r\n var left = win.scrollLeft();\r\n var top = win.scrollTop();\r\n var documentElement = domAdapter.getDocumentElement();\r\n var hZoomLevel = touch ? documentElement.clientWidth / windowWidth : 1;\r\n var vZoomLevel = touch ? documentElement.clientHeight / windowHeight : 1;\r\n if (void 0 === scrollbarWidth) {\r\n calculateScrollbarWidth()\r\n }\r\n var boundaryWidth = windowWidth;\r\n var boundaryHeight = windowHeight;\r\n if (boundary) {\r\n var $boundary = $(boundary);\r\n var boundaryPosition = $boundary.offset();\r\n left = boundaryPosition.left;\r\n top = boundaryPosition.top;\r\n boundaryWidth = $boundary.width();\r\n boundaryHeight = $boundary.height()\r\n }\r\n return {\r\n h: {\r\n min: left + h.boundaryOffset,\r\n max: left + boundaryWidth / hZoomLevel - h.mySize - h.boundaryOffset\r\n },\r\n v: {\r\n min: top + v.boundaryOffset,\r\n max: top + boundaryHeight / vZoomLevel - v.mySize - v.boundaryOffset\r\n }\r\n }\r\n }();\r\n h.oversize = calculateOversize(h, bounds.h);\r\n v.oversize = calculateOversize(v, bounds.v);\r\n h.collisionSide = collisionSide(\"h\", h, bounds.h);\r\n v.collisionSide = collisionSide(\"v\", v, bounds.v);\r\n if (collisionResolvers[h.collision]) {\r\n collisionResolvers[h.collision](h, bounds.h)\r\n }\r\n if (collisionResolvers[v.collision]) {\r\n collisionResolvers[v.collision](v, bounds.v)\r\n }\r\n var preciser = function(number) {\r\n return options.precise ? number : Math.round(number)\r\n };\r\n extend(true, result, {\r\n h: {\r\n location: preciser(h.myLocation),\r\n oversize: preciser(h.oversize),\r\n fit: h.fit,\r\n flip: h.flip,\r\n collisionSide: h.collisionSide\r\n },\r\n v: {\r\n location: preciser(v.myLocation),\r\n oversize: preciser(v.oversize),\r\n fit: v.fit,\r\n flip: v.flip,\r\n collisionSide: v.collisionSide\r\n },\r\n precise: options.precise\r\n });\r\n return result\r\n};\r\nvar getOffsetWithoutScale = function getOffsetWithoutScale($startElement) {\r\n var _currentElement$getAt, _style$match;\r\n var $currentElement = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : $startElement;\r\n var currentElement = $currentElement.get(0);\r\n if (!currentElement) {\r\n return $startElement.offset()\r\n }\r\n var style = (null === (_currentElement$getAt = currentElement.getAttribute) || void 0 === _currentElement$getAt ? void 0 : _currentElement$getAt.call(currentElement, \"style\")) || \"\";\r\n var scale = null === (_style$match = style.match(scaleRe)) || void 0 === _style$match ? void 0 : _style$match[0];\r\n var offset;\r\n if (scale) {\r\n currentElement.setAttribute(\"style\", style.replace(scale, \"\"));\r\n offset = getOffsetWithoutScale($startElement, $currentElement.parent());\r\n currentElement.setAttribute(\"style\", style)\r\n } else {\r\n offset = getOffsetWithoutScale($startElement, $currentElement.parent())\r\n }\r\n return offset\r\n};\r\nvar position = function(what, options) {\r\n var $what = $(what);\r\n if (!options) {\r\n return $what.offset()\r\n }\r\n resetPosition($what, true);\r\n var offset = getOffsetWithoutScale($what);\r\n var targetPosition = options.h && options.v ? options : calculatePosition($what, options);\r\n var preciser = function(number) {\r\n return options.precise ? number : Math.round(number)\r\n };\r\n move($what, {\r\n left: targetPosition.h.location - preciser(offset.left),\r\n top: targetPosition.v.location - preciser(offset.top)\r\n });\r\n return targetPosition\r\n};\r\nvar offset = function(element) {\r\n element = $(element).get(0);\r\n if (isWindow(element)) {\r\n return null\r\n } else if (element && \"pageY\" in element && \"pageX\" in element) {\r\n return {\r\n top: element.pageY,\r\n left: element.pageX\r\n }\r\n }\r\n return $(element).offset()\r\n};\r\nif (!position.inverseAlign) {\r\n position.inverseAlign = inverseAlign\r\n}\r\nif (!position.normalizeAlign) {\r\n position.normalizeAlign = normalizeAlign\r\n}\r\nexport default {\r\n calculateScrollbarWidth: calculateScrollbarWidth,\r\n calculate: calculatePosition,\r\n setup: position,\r\n offset: offset\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/type.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar types = {\r\n \"[object Array]\": \"array\",\r\n \"[object Date]\": \"date\",\r\n \"[object Object]\": \"object\",\r\n \"[object String]\": \"string\",\r\n \"[object Null]\": \"null\"\r\n};\r\nvar type = function(object) {\r\n var typeOfObject = Object.prototype.toString.call(object);\r\n return \"object\" === typeof object ? types[typeOfObject] || \"object\" : typeof object\r\n};\r\nvar isBoolean = function(object) {\r\n return \"boolean\" === typeof object\r\n};\r\nvar isExponential = function(value) {\r\n return isNumeric(value) && -1 !== value.toString().indexOf(\"e\")\r\n};\r\nvar isDate = function(object) {\r\n return \"date\" === type(object)\r\n};\r\nvar isDefined = function(object) {\r\n return null !== object && void 0 !== object\r\n};\r\nvar isFunction = function(object) {\r\n return \"function\" === typeof object\r\n};\r\nvar isString = function(object) {\r\n return \"string\" === typeof object\r\n};\r\nvar isNumeric = function(object) {\r\n return \"number\" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object))\r\n};\r\nvar isObject = function(object) {\r\n return \"object\" === type(object)\r\n};\r\nvar isEmptyObject = function(object) {\r\n var property;\r\n for (property in object) {\r\n return false\r\n }\r\n return true\r\n};\r\nvar isPlainObject = function(object) {\r\n if (!object || \"[object Object]\" !== Object.prototype.toString.call(object)) {\r\n return false\r\n }\r\n var proto = Object.getPrototypeOf(object);\r\n var ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\r\n return \"function\" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object)\r\n};\r\nvar isPrimitive = function(value) {\r\n return -1 === [\"object\", \"array\", \"function\"].indexOf(type(value))\r\n};\r\nvar isWindow = function(object) {\r\n return null != object && object === object.window\r\n};\r\nvar isRenderer = function(object) {\r\n return !!(object.jquery || object.dxRenderer)\r\n};\r\nvar isPromise = function(object) {\r\n return object && isFunction(object.then)\r\n};\r\nvar isDeferred = function(object) {\r\n return object && isFunction(object.done) && isFunction(object.fail)\r\n};\r\nvar isEvent = function(object) {\r\n return !!(object && object.preventDefault)\r\n};\r\nexport {\r\n isBoolean,\r\n isExponential,\r\n isDate,\r\n isDefined,\r\n isFunction,\r\n isString,\r\n isNumeric,\r\n isObject,\r\n isEmptyObject,\r\n isPlainObject,\r\n isPrimitive,\r\n isWindow,\r\n isRenderer,\r\n isPromise,\r\n isDeferred,\r\n type,\r\n isEvent\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/public_component.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport WeakMap from \"../polyfills/weak_map\";\r\nimport {\r\n isDefined\r\n} from \"./type\";\r\nimport {\r\n removeEvent\r\n} from \"../remove_event\";\r\nvar COMPONENT_NAMES_DATA_KEY = \"dxComponents\";\r\nvar ANONYMOUS_COMPONENT_DATA_KEY = \"dxPrivateComponent\";\r\nvar componentNames = new WeakMap;\r\nvar nextAnonymousComponent = 0;\r\nvar getName = function(componentClass, newName) {\r\n if (isDefined(newName)) {\r\n componentNames.set(componentClass, newName);\r\n return\r\n }\r\n if (!componentNames.has(componentClass)) {\r\n var generatedName = ANONYMOUS_COMPONENT_DATA_KEY + nextAnonymousComponent++;\r\n componentNames.set(componentClass, generatedName);\r\n return generatedName\r\n }\r\n return componentNames.get(componentClass)\r\n};\r\nexport function attachInstanceToElement($element, componentInstance, disposeFn) {\r\n var data = elementData($element.get(0));\r\n var name = getName(componentInstance.constructor);\r\n data[name] = componentInstance;\r\n if (disposeFn) {\r\n eventsEngine.one($element, removeEvent, (function() {\r\n disposeFn.call(componentInstance)\r\n }))\r\n }\r\n if (!data[COMPONENT_NAMES_DATA_KEY]) {\r\n data[COMPONENT_NAMES_DATA_KEY] = []\r\n }\r\n data[COMPONENT_NAMES_DATA_KEY].push(name)\r\n}\r\nexport function getInstanceByElement($element, componentClass) {\r\n var name = getName(componentClass);\r\n return elementData($element.get(0), name)\r\n}\r\nexport {\r\n getName as name\r\n};\r\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\r\n * DevExtreme (esm/core/version.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var version = \"21.1.4\";\r\n","/**\r\n * DevExtreme (esm/events/core/wheel.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerEvent from \"./event_registrator\";\r\nimport {\r\n addNamespace,\r\n fireEvent\r\n} from \"../utils/index\";\r\nvar EVENT_NAME = \"dxmousewheel\";\r\nvar EVENT_NAMESPACE = \"dxWheel\";\r\nvar NATIVE_EVENT_NAME = \"wheel\";\r\nvar PIXEL_MODE = 0;\r\nvar DELTA_MUTLIPLIER = 30;\r\nvar wheel = {\r\n setup: function(element) {\r\n var $element = $(element);\r\n eventsEngine.on($element, addNamespace(NATIVE_EVENT_NAME, EVENT_NAMESPACE), wheel._wheelHandler.bind(wheel))\r\n },\r\n teardown: function(element) {\r\n eventsEngine.off(element, \".\".concat(EVENT_NAMESPACE))\r\n },\r\n _wheelHandler: function(e) {\r\n var {\r\n deltaMode: deltaMode,\r\n deltaY: deltaY,\r\n deltaX: deltaX,\r\n deltaZ: deltaZ\r\n } = e.originalEvent;\r\n fireEvent({\r\n type: EVENT_NAME,\r\n originalEvent: e,\r\n delta: this._normalizeDelta(deltaY, deltaMode),\r\n deltaX: deltaX,\r\n deltaY: deltaY,\r\n deltaZ: deltaZ,\r\n deltaMode: deltaMode,\r\n pointerType: \"mouse\"\r\n });\r\n e.stopPropagation()\r\n },\r\n _normalizeDelta(delta) {\r\n var deltaMode = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : PIXEL_MODE;\r\n if (deltaMode === PIXEL_MODE) {\r\n return -delta\r\n } else {\r\n return -DELTA_MUTLIPLIER * delta\r\n }\r\n }\r\n};\r\nregisterEvent(EVENT_NAME, wheel);\r\nexport {\r\n EVENT_NAME as name\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/hook_touch_props.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar touchPropsToHook = [\"pageX\", \"pageY\", \"screenX\", \"screenY\", \"clientX\", \"clientY\"];\r\nvar touchPropHook = function(name, event) {\r\n if (event[name] && !event.touches || !event.touches) {\r\n return event[name]\r\n }\r\n var touches = event.touches.length ? event.touches : event.changedTouches;\r\n if (!touches.length) {\r\n return\r\n }\r\n return touches[0][name]\r\n};\r\nexport default function(callback) {\r\n touchPropsToHook.forEach((function(name) {\r\n callback(name, (function(event) {\r\n return touchPropHook(name, event)\r\n }))\r\n }), this)\r\n}\r\n","/**\r\n * DevExtreme (esm/events/core/events_engine.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerEventCallbacks from \"./event_registrator_callbacks\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport injector from \"../../core/utils/dependency_injector\";\r\nimport {\r\n isWindow,\r\n isFunction,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport errors from \"../../core/errors\";\r\nimport WeakMap from \"../../core/polyfills/weak_map\";\r\nimport hookTouchProps from \"../../events/core/hook_touch_props\";\r\nimport callOnce from \"../../core/utils/call_once\";\r\nvar EMPTY_EVENT_NAME = \"dxEmptyEventType\";\r\nvar NATIVE_EVENTS_TO_SUBSCRIBE = {\r\n mouseenter: \"mouseover\",\r\n mouseleave: \"mouseout\",\r\n pointerenter: \"pointerover\",\r\n pointerleave: \"pointerout\"\r\n};\r\nvar NATIVE_EVENTS_TO_TRIGGER = {\r\n focusin: \"focus\",\r\n focusout: \"blur\"\r\n};\r\nvar NO_BUBBLE_EVENTS = [\"blur\", \"focus\", \"load\"];\r\nvar forcePassiveFalseEventNames = [\"touchmove\", \"wheel\", \"mousewheel\", \"touchstart\"];\r\n\r\nfunction matchesSafe(target, selector) {\r\n return !isWindow(target) && \"#document\" !== target.nodeName && domAdapter.elementMatches(target, selector)\r\n}\r\nvar elementDataMap = new WeakMap;\r\nvar guid = 0;\r\nvar skipEvent;\r\nvar special = function() {\r\n var specialData = {};\r\n registerEventCallbacks.add((function(eventName, eventObject) {\r\n specialData[eventName] = eventObject\r\n }));\r\n return {\r\n getField: function(eventName, field) {\r\n return specialData[eventName] && specialData[eventName][field]\r\n },\r\n callMethod: function(eventName, methodName, context, args) {\r\n return specialData[eventName] && specialData[eventName][methodName] && specialData[eventName][methodName].apply(context, args)\r\n }\r\n }\r\n}();\r\nvar eventsEngine = injector({\r\n on: getHandler(normalizeOnArguments(iterate((function(element, eventName, selector, data, handler) {\r\n var handlersController = getHandlersController(element, eventName);\r\n handlersController.addHandler(handler, selector, data)\r\n })))),\r\n one: getHandler(normalizeOnArguments((function(element, eventName, selector, data, handler) {\r\n eventsEngine.on(element, eventName, selector, data, (function oneTimeHandler() {\r\n eventsEngine.off(element, eventName, selector, oneTimeHandler);\r\n handler.apply(this, arguments)\r\n }))\r\n }))),\r\n off: getHandler(normalizeOffArguments(iterate((function(element, eventName, selector, handler) {\r\n var handlersController = getHandlersController(element, eventName);\r\n handlersController.removeHandler(handler, selector)\r\n })))),\r\n trigger: getHandler(normalizeTriggerArguments((function(element, event, extraParameters) {\r\n var eventName = event.type;\r\n var handlersController = getHandlersController(element, event.type);\r\n special.callMethod(eventName, \"trigger\", element, [event, extraParameters]);\r\n handlersController.callHandlers(event, extraParameters);\r\n var noBubble = special.getField(eventName, \"noBubble\") || event.isPropagationStopped() || -1 !== NO_BUBBLE_EVENTS.indexOf(eventName);\r\n if (!noBubble) {\r\n var parents = [];\r\n ! function getParents(element) {\r\n var parent = element.parentNode;\r\n if (parent) {\r\n parents.push(parent);\r\n getParents(parent)\r\n }\r\n }(element);\r\n parents.push(window);\r\n var i = 0;\r\n while (parents[i] && !event.isPropagationStopped()) {\r\n var parentDataByEvent = getHandlersController(parents[i], event.type);\r\n parentDataByEvent.callHandlers(extend(event, {\r\n currentTarget: parents[i]\r\n }), extraParameters);\r\n i++\r\n }\r\n }\r\n if (element.nodeType || isWindow(element)) {\r\n special.callMethod(eventName, \"_default\", element, [event, extraParameters]);\r\n callNativeMethod(eventName, element)\r\n }\r\n }))),\r\n triggerHandler: getHandler(normalizeTriggerArguments((function(element, event, extraParameters) {\r\n var handlersController = getHandlersController(element, event.type);\r\n handlersController.callHandlers(event, extraParameters)\r\n })))\r\n});\r\n\r\nfunction applyForEach(args, method) {\r\n var element = args[0];\r\n if (!element) {\r\n return\r\n }\r\n if (domAdapter.isNode(element) || isWindow(element)) {\r\n method.apply(eventsEngine, args)\r\n } else if (!isString(element) && \"length\" in element) {\r\n var itemArgs = Array.prototype.slice.call(args, 0);\r\n Array.prototype.forEach.call(element, (function(itemElement) {\r\n itemArgs[0] = itemElement;\r\n applyForEach(itemArgs, method)\r\n }))\r\n } else {\r\n throw errors.Error(\"E0025\")\r\n }\r\n}\r\n\r\nfunction getHandler(method) {\r\n return function() {\r\n applyForEach(arguments, method)\r\n }\r\n}\r\n\r\nfunction detectPassiveEventHandlersSupport() {\r\n var isSupported = false;\r\n try {\r\n var options = Object.defineProperty({}, \"passive\", {\r\n get: function() {\r\n isSupported = true;\r\n return true\r\n }\r\n });\r\n window.addEventListener(\"test\", null, options)\r\n } catch (e) {}\r\n return isSupported\r\n}\r\nvar passiveEventHandlersSupported = callOnce(detectPassiveEventHandlersSupport);\r\nvar contains = (container, element) => {\r\n if (isWindow(container)) {\r\n return contains(container.document, element)\r\n }\r\n return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)\r\n};\r\n\r\nfunction getHandlersController(element, eventName) {\r\n var elementData = elementDataMap.get(element);\r\n eventName = eventName || \"\";\r\n var eventNameParts = eventName.split(\".\");\r\n var namespaces = eventNameParts.slice(1);\r\n var eventNameIsDefined = !!eventNameParts[0];\r\n eventName = eventNameParts[0] || EMPTY_EVENT_NAME;\r\n if (!elementData) {\r\n elementData = {};\r\n elementDataMap.set(element, elementData)\r\n }\r\n if (!elementData[eventName]) {\r\n elementData[eventName] = {\r\n handleObjects: [],\r\n nativeHandler: null\r\n }\r\n }\r\n var eventData = elementData[eventName];\r\n return {\r\n addHandler: function(handler, selector, data) {\r\n var callHandler = function(e, extraParameters) {\r\n var handlerArgs = [e];\r\n var target = e.currentTarget;\r\n var relatedTarget = e.relatedTarget;\r\n var secondaryTargetIsInside;\r\n var result;\r\n if (eventName in NATIVE_EVENTS_TO_SUBSCRIBE) {\r\n secondaryTargetIsInside = relatedTarget && target && (relatedTarget === target || contains(target, relatedTarget))\r\n }\r\n if (void 0 !== extraParameters) {\r\n handlerArgs.push(extraParameters)\r\n }\r\n special.callMethod(eventName, \"handle\", element, [e, data]);\r\n if (!secondaryTargetIsInside) {\r\n result = handler.apply(target, handlerArgs)\r\n }\r\n if (false === result) {\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n };\r\n var handleObject = {\r\n handler: handler,\r\n wrappedHandler: function(e, extraParameters) {\r\n if (skipEvent && e.type === skipEvent) {\r\n return\r\n }\r\n e.data = data;\r\n e.delegateTarget = element;\r\n if (selector) {\r\n var currentTarget = e.target;\r\n while (currentTarget && currentTarget !== element) {\r\n if (matchesSafe(currentTarget, selector)) {\r\n e.currentTarget = currentTarget;\r\n callHandler(e, extraParameters)\r\n }\r\n currentTarget = currentTarget.parentNode\r\n }\r\n } else {\r\n e.currentTarget = e.delegateTarget || e.target;\r\n callHandler(e, extraParameters)\r\n }\r\n },\r\n selector: selector,\r\n type: eventName,\r\n data: data,\r\n namespace: namespaces.join(\".\"),\r\n namespaces: namespaces,\r\n guid: ++guid\r\n };\r\n eventData.handleObjects.push(handleObject);\r\n var firstHandlerForTheType = 1 === eventData.handleObjects.length;\r\n var shouldAddNativeListener = firstHandlerForTheType && eventNameIsDefined;\r\n var nativeListenerOptions;\r\n if (shouldAddNativeListener) {\r\n shouldAddNativeListener = !special.callMethod(eventName, \"setup\", element, [data, namespaces, handler])\r\n }\r\n if (shouldAddNativeListener) {\r\n eventData.nativeHandler = getNativeHandler(eventName);\r\n if (passiveEventHandlersSupported() && forcePassiveFalseEventNames.indexOf(eventName) > -1) {\r\n nativeListenerOptions = {\r\n passive: false\r\n }\r\n }\r\n eventData.removeListener = domAdapter.listen(element, NATIVE_EVENTS_TO_SUBSCRIBE[eventName] || eventName, eventData.nativeHandler, nativeListenerOptions)\r\n }\r\n special.callMethod(eventName, \"add\", element, [handleObject])\r\n },\r\n removeHandler: function(handler, selector) {\r\n var removeByEventName = function(eventName) {\r\n var eventData = elementData[eventName];\r\n if (!eventData.handleObjects.length) {\r\n delete elementData[eventName];\r\n return\r\n }\r\n var removedHandler;\r\n eventData.handleObjects = eventData.handleObjects.filter((function(handleObject) {\r\n var skip = namespaces.length && !isSubset(handleObject.namespaces, namespaces) || handler && handleObject.handler !== handler || selector && handleObject.selector !== selector;\r\n if (!skip) {\r\n removedHandler = handleObject.handler;\r\n special.callMethod(eventName, \"remove\", element, [handleObject])\r\n }\r\n return skip\r\n }));\r\n var lastHandlerForTheType = !eventData.handleObjects.length;\r\n var shouldRemoveNativeListener = lastHandlerForTheType && eventName !== EMPTY_EVENT_NAME;\r\n if (shouldRemoveNativeListener) {\r\n special.callMethod(eventName, \"teardown\", element, [namespaces, removedHandler]);\r\n if (eventData.nativeHandler) {\r\n eventData.removeListener()\r\n }\r\n delete elementData[eventName]\r\n }\r\n };\r\n if (eventNameIsDefined) {\r\n removeByEventName(eventName)\r\n } else {\r\n for (var name in elementData) {\r\n removeByEventName(name)\r\n }\r\n }\r\n var elementDataIsEmpty = 0 === Object.keys(elementData).length;\r\n if (elementDataIsEmpty) {\r\n elementDataMap.delete(element)\r\n }\r\n },\r\n callHandlers: function(event, extraParameters) {\r\n var forceStop = false;\r\n var handleCallback = function(handleObject) {\r\n if (forceStop) {\r\n return\r\n }\r\n if (!namespaces.length || isSubset(handleObject.namespaces, namespaces)) {\r\n handleObject.wrappedHandler(event, extraParameters);\r\n forceStop = event.isImmediatePropagationStopped()\r\n }\r\n };\r\n eventData.handleObjects.forEach(handleCallback);\r\n if (namespaces.length && elementData[EMPTY_EVENT_NAME]) {\r\n elementData[EMPTY_EVENT_NAME].handleObjects.forEach(handleCallback)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getNativeHandler(subscribeName) {\r\n return function(event, extraParameters) {\r\n var handlersController = getHandlersController(this, subscribeName);\r\n event = eventsEngine.Event(event);\r\n handlersController.callHandlers(event, extraParameters)\r\n }\r\n}\r\n\r\nfunction isSubset(original, checked) {\r\n for (var i = 0; i < checked.length; i++) {\r\n if (original.indexOf(checked[i]) < 0) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction normalizeOnArguments(callback) {\r\n return function(element, eventName, selector, data, handler) {\r\n if (!handler) {\r\n handler = data;\r\n data = void 0\r\n }\r\n if (\"string\" !== typeof selector) {\r\n data = selector;\r\n selector = void 0\r\n }\r\n if (!handler && \"string\" === typeof eventName) {\r\n handler = data || selector;\r\n selector = void 0;\r\n data = void 0\r\n }\r\n callback(element, eventName, selector, data, handler)\r\n }\r\n}\r\n\r\nfunction normalizeOffArguments(callback) {\r\n return function(element, eventName, selector, handler) {\r\n if (\"function\" === typeof selector) {\r\n handler = selector;\r\n selector = void 0\r\n }\r\n callback(element, eventName, selector, handler)\r\n }\r\n}\r\n\r\nfunction normalizeTriggerArguments(callback) {\r\n return function(element, src, extraParameters) {\r\n if (\"string\" === typeof src) {\r\n src = {\r\n type: src\r\n }\r\n }\r\n if (!src.target) {\r\n src.target = element\r\n }\r\n src.currentTarget = element;\r\n if (!src.delegateTarget) {\r\n src.delegateTarget = element\r\n }\r\n if (!src.type && src.originalEvent) {\r\n src.type = src.originalEvent.type\r\n }\r\n callback(element, src instanceof eventsEngine.Event ? src : eventsEngine.Event(src), extraParameters)\r\n }\r\n}\r\n\r\nfunction normalizeEventArguments(callback) {\r\n return function(src, config) {\r\n if (!(this instanceof eventsEngine.Event)) {\r\n return new eventsEngine.Event(src, config)\r\n }\r\n if (!src) {\r\n src = {}\r\n }\r\n if (\"string\" === typeof src) {\r\n src = {\r\n type: src\r\n }\r\n }\r\n if (!config) {\r\n config = {}\r\n }\r\n callback.call(this, src, config)\r\n }\r\n}\r\n\r\nfunction iterate(callback) {\r\n var iterateEventNames = function(element, eventName) {\r\n if (eventName && eventName.indexOf(\" \") > -1) {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n eventName.split(\" \").forEach((function(eventName) {\r\n args[1] = eventName;\r\n callback.apply(this, args)\r\n }))\r\n } else {\r\n callback.apply(this, arguments)\r\n }\r\n };\r\n return function(element, eventName) {\r\n if (\"object\" === typeof eventName) {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n for (var name in eventName) {\r\n args[1] = name;\r\n args[args.length - 1] = eventName[name];\r\n iterateEventNames.apply(this, args)\r\n }\r\n } else {\r\n iterateEventNames.apply(this, arguments)\r\n }\r\n }\r\n}\r\n\r\nfunction callNativeMethod(eventName, element) {\r\n var nativeMethodName = NATIVE_EVENTS_TO_TRIGGER[eventName] || eventName;\r\n if (function(eventName, element) {\r\n return \"click\" === eventName && \"a\" === element.localName\r\n }(eventName, element)) {\r\n return\r\n }\r\n if (isFunction(element[nativeMethodName])) {\r\n skipEvent = eventName;\r\n element[nativeMethodName]();\r\n skipEvent = void 0\r\n }\r\n}\r\n\r\nfunction calculateWhich(event) {\r\n if (function(event) {\r\n return null == event.which && 0 === event.type.indexOf(\"key\")\r\n }(event)) {\r\n return null != event.charCode ? event.charCode : event.keyCode\r\n }\r\n if (function(event) {\r\n return !event.which && void 0 !== event.button && /^(?:mouse|pointer|contextmenu|drag|drop)|click/.test(event.type)\r\n }(event)) {\r\n return {\r\n 1: 1,\r\n 2: 3,\r\n 3: 1,\r\n 4: 2\r\n } [event.button]\r\n }\r\n return event.which\r\n}\r\n\r\nfunction initEvent(EventClass) {\r\n if (EventClass) {\r\n eventsEngine.Event = EventClass;\r\n eventsEngine.Event.prototype = EventClass.prototype\r\n }\r\n}\r\ninitEvent(normalizeEventArguments((function(src, config) {\r\n var that = this;\r\n var propagationStopped = false;\r\n var immediatePropagationStopped = false;\r\n var defaultPrevented = false;\r\n extend(that, src);\r\n if (src instanceof eventsEngine.Event || hasWindow() && src instanceof window.Event) {\r\n that.originalEvent = src;\r\n that.currentTarget = void 0\r\n }\r\n if (!(src instanceof eventsEngine.Event)) {\r\n extend(that, {\r\n isPropagationStopped: function() {\r\n return !!(propagationStopped || that.originalEvent && that.originalEvent.propagationStopped)\r\n },\r\n stopPropagation: function() {\r\n propagationStopped = true;\r\n that.originalEvent && that.originalEvent.stopPropagation()\r\n },\r\n isImmediatePropagationStopped: function() {\r\n return immediatePropagationStopped\r\n },\r\n stopImmediatePropagation: function() {\r\n this.stopPropagation();\r\n immediatePropagationStopped = true;\r\n that.originalEvent && that.originalEvent.stopImmediatePropagation()\r\n },\r\n isDefaultPrevented: function() {\r\n return !!(defaultPrevented || that.originalEvent && that.originalEvent.defaultPrevented)\r\n },\r\n preventDefault: function() {\r\n defaultPrevented = true;\r\n that.originalEvent && that.originalEvent.preventDefault()\r\n }\r\n })\r\n }\r\n addProperty(\"which\", calculateWhich, that);\r\n if (0 === src.type.indexOf(\"touch\")) {\r\n delete config.pageX;\r\n delete config.pageY\r\n }\r\n extend(that, config);\r\n that.guid = ++guid\r\n})));\r\n\r\nfunction addProperty(propName, hook, eventInstance) {\r\n Object.defineProperty(eventInstance || eventsEngine.Event.prototype, propName, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function() {\r\n return this.originalEvent && hook(this.originalEvent)\r\n },\r\n set: function(value) {\r\n Object.defineProperty(this, propName, {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: value\r\n })\r\n }\r\n })\r\n}\r\nhookTouchProps(addProperty);\r\nvar beforeSetStrategy = Callbacks();\r\nvar afterSetStrategy = Callbacks();\r\neventsEngine.set = function(engine) {\r\n beforeSetStrategy.fire();\r\n eventsEngine.inject(engine);\r\n initEvent(engine.Event);\r\n afterSetStrategy.fire()\r\n};\r\neventsEngine.subscribeGlobal = function() {\r\n applyForEach(arguments, normalizeOnArguments((function() {\r\n var args = arguments;\r\n eventsEngine.on.apply(this, args);\r\n beforeSetStrategy.add((function() {\r\n var offArgs = Array.prototype.slice.call(args, 0);\r\n offArgs.splice(3, 1);\r\n eventsEngine.off.apply(this, offArgs)\r\n }));\r\n afterSetStrategy.add((function() {\r\n eventsEngine.on.apply(this, args)\r\n }))\r\n })))\r\n};\r\neventsEngine.forcePassiveFalseEventNames = forcePassiveFalseEventNames;\r\neventsEngine.passiveEventHandlersSupported = passiveEventHandlersSupported;\r\nexport default eventsEngine;\r\n","/**\r\n * DevExtreme (esm/animation/translator.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n data as elementData,\r\n removeData\r\n} from \"../core/element_data\";\r\nimport {\r\n type\r\n} from \"../core/utils/type\";\r\nvar TRANSLATOR_DATA_KEY = \"dxTranslator\";\r\nvar TRANSFORM_MATRIX_REGEX = /matrix(3d)?\\((.+?)\\)/;\r\nvar TRANSLATE_REGEX = /translate(?:3d)?\\((.+?)\\)/;\r\nexport var locate = function($element) {\r\n $element = $($element);\r\n var translate = getTranslate($element);\r\n return {\r\n left: translate.x,\r\n top: translate.y\r\n }\r\n};\r\n\r\nfunction isPercentValue(value) {\r\n return \"string\" === type(value) && \"%\" === value[value.length - 1]\r\n}\r\n\r\nfunction cacheTranslate($element, translate) {\r\n if ($element.length) {\r\n elementData($element.get(0), TRANSLATOR_DATA_KEY, translate)\r\n }\r\n}\r\nexport var clearCache = function($element) {\r\n if ($element.length) {\r\n removeData($element.get(0), TRANSLATOR_DATA_KEY)\r\n }\r\n};\r\nexport var getTranslateCss = function(translate) {\r\n translate.x = translate.x || 0;\r\n translate.y = translate.y || 0;\r\n var xValueString = isPercentValue(translate.x) ? translate.x : translate.x + \"px\";\r\n var yValueString = isPercentValue(translate.y) ? translate.y : translate.y + \"px\";\r\n return \"translate(\" + xValueString + \", \" + yValueString + \")\"\r\n};\r\nexport var getTranslate = function($element) {\r\n var result = $element.length ? elementData($element.get(0), TRANSLATOR_DATA_KEY) : null;\r\n if (!result) {\r\n var transformValue = $element.css(\"transform\") || getTranslateCss({\r\n x: 0,\r\n y: 0\r\n });\r\n var matrix = transformValue.match(TRANSFORM_MATRIX_REGEX);\r\n var is3D = matrix && matrix[1];\r\n if (matrix) {\r\n matrix = matrix[2].split(\",\");\r\n if (\"3d\" === is3D) {\r\n matrix = matrix.slice(12, 15)\r\n } else {\r\n matrix.push(0);\r\n matrix = matrix.slice(4, 7)\r\n }\r\n } else {\r\n matrix = [0, 0, 0]\r\n }\r\n result = {\r\n x: parseFloat(matrix[0]),\r\n y: parseFloat(matrix[1]),\r\n z: parseFloat(matrix[2])\r\n };\r\n cacheTranslate($element, result)\r\n }\r\n return result\r\n};\r\nexport var move = function($element, position) {\r\n $element = $($element);\r\n var left = position.left;\r\n var top = position.top;\r\n var translate;\r\n if (void 0 === left) {\r\n translate = getTranslate($element);\r\n translate.y = top || 0\r\n } else if (void 0 === top) {\r\n translate = getTranslate($element);\r\n translate.x = left || 0\r\n } else {\r\n translate = {\r\n x: left || 0,\r\n y: top || 0,\r\n z: 0\r\n };\r\n cacheTranslate($element, translate)\r\n }\r\n $element.css({\r\n transform: getTranslateCss(translate)\r\n });\r\n if (isPercentValue(left) || isPercentValue(top)) {\r\n clearCache($element)\r\n }\r\n};\r\nexport var resetPosition = function($element, finishTransition) {\r\n $element = $($element);\r\n var originalTransition;\r\n var stylesConfig = {\r\n left: 0,\r\n top: 0,\r\n transform: \"none\"\r\n };\r\n if (finishTransition) {\r\n originalTransition = $element.css(\"transition\");\r\n stylesConfig.transition = \"none\"\r\n }\r\n $element.css(stylesConfig);\r\n clearCache($element);\r\n if (finishTransition) {\r\n $element.get(0).offsetHeight;\r\n $element.css(\"transition\", originalTransition)\r\n }\r\n};\r\nexport var parseTranslate = function(translateString) {\r\n var result = translateString.match(TRANSLATE_REGEX);\r\n if (!result || !result[1]) {\r\n return\r\n }\r\n result = result[1].split(\",\");\r\n result = {\r\n x: parseFloat(result[0]),\r\n y: parseFloat(result[1]),\r\n z: parseFloat(result[2])\r\n };\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.events.emitter.gesture.scroll.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n addNamespace,\r\n isDxMouseWheelEvent,\r\n isMouseEvent,\r\n eventData,\r\n eventDelta\r\n} from \"../../events/utils/index\";\r\nimport GestureEmitter from \"../../events/gesture/emitter.gesture\";\r\nimport registerEmitter from \"../../events/core/emitter_registrator\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../../core/utils/version\";\r\nvar realDevice = devices.real();\r\nvar SCROLL_INIT_EVENT = \"dxscrollinit\";\r\nvar SCROLL_START_EVENT = \"dxscrollstart\";\r\nvar SCROLL_MOVE_EVENT = \"dxscroll\";\r\nvar SCROLL_END_EVENT = \"dxscrollend\";\r\nvar SCROLL_STOP_EVENT = \"dxscrollstop\";\r\nvar SCROLL_CANCEL_EVENT = \"dxscrollcancel\";\r\nvar Locker = Class.inherit(function() {\r\n var NAMESPACED_SCROLL_EVENT = addNamespace(\"scroll\", \"dxScrollEmitter\");\r\n return {\r\n ctor: function(element) {\r\n this._element = element;\r\n this._locked = false;\r\n var that = this;\r\n this._proxiedScroll = function(e) {\r\n that._scroll(e)\r\n };\r\n eventsEngine.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n },\r\n _scroll: abstract,\r\n check: function(e, callback) {\r\n if (this._locked) {\r\n callback()\r\n }\r\n },\r\n dispose: function() {\r\n eventsEngine.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n }\r\n }\r\n}());\r\nvar TimeoutLocker = Locker.inherit({\r\n ctor: function(element, timeout) {\r\n this.callBase(element);\r\n this._timeout = timeout\r\n },\r\n _scroll: function() {\r\n this._prepare();\r\n this._forget()\r\n },\r\n _prepare: function() {\r\n if (this._timer) {\r\n this._clearTimer()\r\n }\r\n this._locked = true\r\n },\r\n _clearTimer: function() {\r\n clearTimeout(this._timer);\r\n this._locked = false;\r\n this._timer = null\r\n },\r\n _forget: function() {\r\n var that = this;\r\n this._timer = setTimeout((function() {\r\n that._clearTimer()\r\n }), this._timeout)\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._clearTimer()\r\n }\r\n});\r\nvar WheelLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400);\r\n this._lastWheelDirection = null\r\n },\r\n check: function(e, callback) {\r\n this._checkDirectionChanged(e);\r\n this.callBase(e, callback)\r\n },\r\n _checkDirectionChanged: function(e) {\r\n if (!isDxMouseWheelEvent(e)) {\r\n this._lastWheelDirection = null;\r\n return\r\n }\r\n var direction = e.shiftKey || false;\r\n var directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;\r\n this._lastWheelDirection = direction;\r\n this._locked = this._locked && !directionChange\r\n }\r\n});\r\nvar PointerLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400)\r\n }\r\n});\r\n! function() {\r\n var ios8_greater = realDevice.ios && compareVersions(realDevice.version, [8]) >= 0;\r\n var android5_greater = realDevice.android && compareVersions(realDevice.version, [5]) >= 0;\r\n if (!(ios8_greater || android5_greater)) {\r\n return\r\n }\r\n PointerLocker = Locker.inherit({\r\n _scroll: function() {\r\n this._locked = true;\r\n var that = this;\r\n cancelAnimationFrame(this._scrollFrame);\r\n this._scrollFrame = requestAnimationFrame((function() {\r\n that._locked = false\r\n }))\r\n },\r\n check: function(e, callback) {\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame);\r\n var that = this;\r\n var callBase = this.callBase;\r\n this._checkFrame = requestAnimationFrame((function() {\r\n callBase.call(that, e, callback);\r\n that._locked = false\r\n }))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame)\r\n }\r\n })\r\n}();\r\nvar ScrollEmitter = GestureEmitter.inherit(function() {\r\n var FRAME_DURATION = Math.round(1e3 / 60);\r\n return {\r\n ctor: function(element) {\r\n this.callBase.apply(this, arguments);\r\n this.direction = \"both\";\r\n this._pointerLocker = new PointerLocker(element);\r\n this._wheelLocker = new WheelLocker(element)\r\n },\r\n validate: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n if (data.scrollTarget) {\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose();\r\n this._pointerLocker = new PointerLocker(data.scrollTarget);\r\n this._wheelLocker = new WheelLocker(data.scrollTarget)\r\n }\r\n this.callBase(data)\r\n },\r\n _init: function(e) {\r\n this._wheelLocker.check(e, function() {\r\n if (isDxMouseWheelEvent(e)) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._pointerLocker.check(e, function() {\r\n var skipCheck = this.isNative && isMouseEvent(e);\r\n if (!isDxMouseWheelEvent(e) && !skipCheck) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._fireEvent(SCROLL_INIT_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n move: function(e) {\r\n this.callBase.apply(this, arguments);\r\n e.isScrollingEvent = this.isNative || e.isScrollingEvent\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n this._fireEvent(SCROLL_START_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n _move: function(e) {\r\n var currentEventData = eventData(e);\r\n this._fireEvent(SCROLL_MOVE_EVENT, e, {\r\n delta: eventDelta(this._prevEventData, currentEventData)\r\n });\r\n var delta = eventDelta(this._savedEventData, currentEventData);\r\n if (delta.time > 200) {\r\n this._savedEventData = this._prevEventData\r\n }\r\n this._prevEventData = eventData(e)\r\n },\r\n _end: function(e) {\r\n var endEventDelta = eventDelta(this._prevEventData, eventData(e));\r\n var velocity = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (!isDxMouseWheelEvent(e) && endEventDelta.time < 100) {\r\n var delta = eventDelta(this._savedEventData, this._prevEventData);\r\n var velocityMultiplier = FRAME_DURATION / delta.time;\r\n velocity = {\r\n x: delta.x * velocityMultiplier,\r\n y: delta.y * velocityMultiplier\r\n }\r\n }\r\n this._fireEvent(SCROLL_END_EVENT, e, {\r\n velocity: velocity\r\n })\r\n },\r\n _stop: function(e) {\r\n this._fireEvent(SCROLL_STOP_EVENT, e)\r\n },\r\n cancel: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._fireEvent(SCROLL_CANCEL_EVENT, e)\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose()\r\n },\r\n _clearSelection: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleGestureCover: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n}());\r\nregisterEmitter({\r\n emitter: ScrollEmitter,\r\n events: [SCROLL_INIT_EVENT, SCROLL_START_EVENT, SCROLL_MOVE_EVENT, SCROLL_END_EVENT, SCROLL_STOP_EVENT, SCROLL_CANCEL_EVENT]\r\n});\r\nexport default {\r\n init: SCROLL_INIT_EVENT,\r\n start: SCROLL_START_EVENT,\r\n move: SCROLL_MOVE_EVENT,\r\n end: SCROLL_END_EVENT,\r\n stop: SCROLL_STOP_EVENT,\r\n cancel: SCROLL_CANCEL_EVENT\r\n};\r\n","/**\r\n * DevExtreme (esm/data/query_adapters.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default {};\r\n","/**\r\n * DevExtreme (esm/data/remote_query.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport queryAdapters from \"./query_adapters\";\r\nimport {\r\n errors,\r\n handleError\r\n} from \"./errors\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport arrayQueryImpl from \"./array_query\";\r\nvar remoteQueryImpl = function remoteQueryImpl(url, queryOptions, tasks) {\r\n tasks = tasks || [];\r\n queryOptions = queryOptions || {};\r\n var createTask = function(name, args) {\r\n return {\r\n name: name,\r\n args: args\r\n }\r\n };\r\n var exec = function(executorTask) {\r\n var d = new Deferred;\r\n var _adapterFactory;\r\n var _adapter;\r\n var _taskQueue;\r\n var _currentTask;\r\n var _mergedSortArgs;\r\n var rejectWithNotify = function(error) {\r\n var handler = queryOptions.errorHandler;\r\n if (handler) {\r\n handler(error)\r\n }\r\n handleError(error);\r\n d.reject(error)\r\n };\r\n\r\n function mergeSortTask(task) {\r\n switch (task.name) {\r\n case \"sortBy\":\r\n _mergedSortArgs = [task.args];\r\n return true;\r\n case \"thenBy\":\r\n if (!_mergedSortArgs) {\r\n throw errors.Error(\"E4004\")\r\n }\r\n _mergedSortArgs.push(task.args);\r\n return true\r\n }\r\n return false\r\n }\r\n try {\r\n _adapterFactory = queryOptions.adapter;\r\n if (!isFunction(_adapterFactory)) {\r\n _adapterFactory = queryAdapters[_adapterFactory]\r\n }\r\n _adapter = _adapterFactory(queryOptions);\r\n _taskQueue = [].concat(tasks).concat(executorTask);\r\n var optimize = _adapter.optimize;\r\n if (optimize) {\r\n optimize(_taskQueue)\r\n }\r\n while (_taskQueue.length) {\r\n _currentTask = _taskQueue[0];\r\n if (!mergeSortTask(_currentTask)) {\r\n if (_mergedSortArgs) {\r\n _taskQueue.unshift(createTask(\"multiSort\", [_mergedSortArgs]));\r\n _mergedSortArgs = null;\r\n continue\r\n }\r\n if (\"enumerate\" !== String(_currentTask.name)) {\r\n if (!_adapter[_currentTask.name] || false === _adapter[_currentTask.name].apply(_adapter, _currentTask.args)) {\r\n break\r\n }\r\n }\r\n }\r\n _taskQueue.shift()\r\n }! function() {\r\n var head = _taskQueue[0];\r\n var unmergedTasks = [];\r\n if (head && \"multiSort\" === head.name) {\r\n _taskQueue.shift();\r\n each(head.args[0], (function() {\r\n unmergedTasks.push(createTask(unmergedTasks.length ? \"thenBy\" : \"sortBy\", this))\r\n }))\r\n }\r\n _taskQueue = unmergedTasks.concat(_taskQueue)\r\n }();\r\n _adapter.exec(url).done((function(result, extra) {\r\n if (!_taskQueue.length) {\r\n d.resolve(result, extra)\r\n } else {\r\n var clientChain = arrayQueryImpl(result, {\r\n errorHandler: queryOptions.errorHandler\r\n });\r\n each(_taskQueue, (function() {\r\n clientChain = clientChain[this.name].apply(clientChain, this.args)\r\n }));\r\n clientChain.done(d.resolve).fail(d.reject)\r\n }\r\n })).fail(rejectWithNotify)\r\n } catch (x) {\r\n rejectWithNotify(x)\r\n }\r\n return d.promise()\r\n };\r\n var query = {};\r\n each([\"sortBy\", \"thenBy\", \"filter\", \"slice\", \"select\", \"groupBy\"], (function() {\r\n var name = String(this);\r\n query[name] = function() {\r\n return remoteQueryImpl(url, queryOptions, tasks.concat(createTask(name, arguments)))\r\n }\r\n }));\r\n each([\"count\", \"min\", \"max\", \"sum\", \"avg\", \"aggregate\", \"enumerate\"], (function() {\r\n var name = String(this);\r\n query[name] = function() {\r\n return exec.call(this, createTask(name, arguments))\r\n }\r\n }));\r\n return query\r\n};\r\nexport default remoteQueryImpl;\r\n","/**\r\n * DevExtreme (esm/data/query_implementation.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport arrayQueryImpl from \"./array_query\";\r\nimport remoteQueryImpl from \"./remote_query\";\r\nexport var queryImpl = {\r\n array: arrayQueryImpl,\r\n remote: remoteQueryImpl\r\n};\r\n","/**\r\n * DevExtreme (esm/data/query.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n queryImpl\r\n} from \"./query_implementation\";\r\nvar query = function() {\r\n var impl = Array.isArray(arguments[0]) ? \"array\" : \"remote\";\r\n return queryImpl[impl].apply(this, arguments)\r\n};\r\nexport default query;\r\n","/**\r\n * DevExtreme (esm/core/utils/storage.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nvar getSessionStorage = function() {\r\n var sessionStorage;\r\n try {\r\n sessionStorage = window.sessionStorage\r\n } catch (e) {}\r\n return sessionStorage\r\n};\r\nexport {\r\n getSessionStorage as sessionStorage\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/support.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n inArray\r\n} from \"./array\";\r\nimport domAdapter from \"../dom_adapter\";\r\nimport {\r\n ensureDefined\r\n} from \"./common\";\r\nimport callOnce from \"./call_once\";\r\nimport {\r\n getNavigator,\r\n hasProperty\r\n} from \"./window\";\r\nimport devices from \"../devices\";\r\nimport {\r\n stylePropPrefix,\r\n styleProp\r\n} from \"./style\";\r\nvar {\r\n maxTouchPoints: maxTouchPoints,\r\n msMaxTouchPoints: msMaxTouchPoints,\r\n pointerEnabled: pointerEnabled\r\n} = getNavigator();\r\nvar transitionEndEventNames = {\r\n webkitTransition: \"webkitTransitionEnd\",\r\n MozTransition: \"transitionend\",\r\n OTransition: \"oTransitionEnd\",\r\n msTransition: \"MsTransitionEnd\",\r\n transition: \"transitionend\"\r\n};\r\nvar supportProp = function(prop) {\r\n return !!styleProp(prop)\r\n};\r\nvar isNativeScrollingSupported = function() {\r\n var {\r\n platform: platform,\r\n version: version,\r\n mac: isMac\r\n } = devices.real();\r\n var isObsoleteAndroid = version && version[0] < 4 && \"android\" === platform;\r\n var isNativeScrollDevice = !isObsoleteAndroid && inArray(platform, [\"ios\", \"android\"]) > -1 || isMac;\r\n return isNativeScrollDevice\r\n};\r\nvar inputType = function(type) {\r\n if (\"text\" === type) {\r\n return true\r\n }\r\n var input = domAdapter.createElement(\"input\");\r\n try {\r\n input.setAttribute(\"type\", type);\r\n input.value = \"wrongValue\";\r\n return !input.value\r\n } catch (e) {\r\n return false\r\n }\r\n};\r\nvar detectTouchEvents = function(hasWindowProperty, maxTouchPoints) {\r\n return (hasWindowProperty(\"ontouchstart\") || !!maxTouchPoints) && !hasWindowProperty(\"callPhantom\")\r\n};\r\nvar detectPointerEvent = function(hasWindowProperty, pointerEnabled) {\r\n var isPointerEnabled = ensureDefined(pointerEnabled, true);\r\n var canUsePointerEvent = ensureDefined(pointerEnabled, false);\r\n return hasWindowProperty(\"PointerEvent\") && isPointerEnabled || canUsePointerEvent\r\n};\r\nvar touchEvents = detectTouchEvents(hasProperty, maxTouchPoints);\r\nvar pointerEvents = detectPointerEvent(hasProperty, pointerEnabled);\r\nvar touchPointersPresent = !!maxTouchPoints || !!msMaxTouchPoints;\r\nexport {\r\n touchEvents,\r\n pointerEvents,\r\n styleProp,\r\n stylePropPrefix,\r\n supportProp,\r\n inputType\r\n};\r\nexport var touch = touchEvents || pointerEvents && touchPointersPresent;\r\nexport var transition = callOnce((function() {\r\n return supportProp(\"transition\")\r\n}));\r\nexport var transitionEndEventName = callOnce((function() {\r\n return transitionEndEventNames[styleProp(\"transition\")]\r\n}));\r\nexport var animation = callOnce((function() {\r\n return supportProp(\"animation\")\r\n}));\r\nexport var nativeScrolling = isNativeScrollingSupported();\r\n","/**\r\n * DevExtreme (esm/core/events_strategy.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Callbacks from \"./utils/callbacks\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nimport {\r\n isFunction,\r\n isPlainObject\r\n} from \"./utils/type\";\r\nexport class EventsStrategy {\r\n constructor(owner) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n this._events = {};\r\n this._owner = owner;\r\n this._options = options\r\n }\r\n static create(owner, strategy) {\r\n if (strategy) {\r\n return isFunction(strategy) ? strategy(owner) : strategy\r\n } else {\r\n return new EventsStrategy(owner)\r\n }\r\n }\r\n hasEvent(eventName) {\r\n var callbacks = this._events[eventName];\r\n return callbacks ? callbacks.has() : false\r\n }\r\n fireEvent(eventName, eventArgs) {\r\n var callbacks = this._events[eventName];\r\n if (callbacks) {\r\n callbacks.fireWith(this._owner, eventArgs)\r\n }\r\n return this._owner\r\n }\r\n on(eventName, eventHandler) {\r\n if (isPlainObject(eventName)) {\r\n each(eventName, (e, h) => {\r\n this.on(e, h)\r\n })\r\n } else {\r\n var callbacks = this._events[eventName];\r\n if (!callbacks) {\r\n callbacks = Callbacks({\r\n syncStrategy: this._options.syncStrategy\r\n });\r\n this._events[eventName] = callbacks\r\n }\r\n var addFn = callbacks.originalAdd || callbacks.add;\r\n addFn.call(callbacks, eventHandler)\r\n }\r\n }\r\n off(eventName, eventHandler) {\r\n var callbacks = this._events[eventName];\r\n if (callbacks) {\r\n if (isFunction(eventHandler)) {\r\n callbacks.remove(eventHandler)\r\n } else {\r\n callbacks.empty()\r\n }\r\n }\r\n }\r\n dispose() {\r\n each(this._events, (eventName, event) => {\r\n event.empty()\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/data/custom_store.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport dataUtils from \"./utils\";\r\nimport {\r\n applyBatch\r\n} from \"./array_utils\";\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport config from \"../core/config\";\r\nimport {\r\n errors\r\n} from \"./errors\";\r\nimport Store from \"./abstract_store\";\r\nimport arrayQuery from \"./array_query\";\r\nimport storeHelper from \"./store_helper\";\r\nimport {\r\n Deferred,\r\n when,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nvar TOTAL_COUNT = \"totalCount\";\r\nvar LOAD = \"load\";\r\nvar BY_KEY = \"byKey\";\r\nvar INSERT = \"insert\";\r\nvar UPDATE = \"update\";\r\nvar REMOVE = \"remove\";\r\n\r\nfunction isPromise(obj) {\r\n return obj && isFunction(obj.then)\r\n}\r\n\r\nfunction trivialPromise(value) {\r\n return (new Deferred).resolve(value).promise()\r\n}\r\n\r\nfunction ensureRequiredFuncOption(name, obj) {\r\n if (!isFunction(obj)) {\r\n throw errors.Error(\"E4011\", name)\r\n }\r\n}\r\n\r\nfunction throwInvalidUserFuncResult(name) {\r\n throw errors.Error(\"E4012\", name)\r\n}\r\n\r\nfunction createUserFuncFailureHandler(pendingDeferred) {\r\n function errorMessageFromXhr(promiseArguments) {\r\n var xhr = promiseArguments[0];\r\n var textStatus = promiseArguments[1];\r\n if (!xhr || !xhr.getResponseHeader) {\r\n return null\r\n }\r\n return dataUtils.errorMessageFromXhr(xhr, textStatus)\r\n }\r\n return function(arg) {\r\n var error;\r\n if (arg instanceof Error) {\r\n error = arg\r\n } else {\r\n error = new Error(errorMessageFromXhr(arguments) || arg && String(arg) || \"Unknown error\")\r\n }\r\n if (error.message !== dataUtils.XHR_ERROR_UNLOAD) {\r\n pendingDeferred.reject(error)\r\n }\r\n }\r\n}\r\n\r\nfunction invokeUserLoad(store, options) {\r\n var userFunc = store._loadFunc;\r\n var userResult;\r\n ensureRequiredFuncOption(LOAD, userFunc);\r\n userResult = userFunc.apply(store, [options]);\r\n if (Array.isArray(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n } else if (null === userResult || void 0 === userResult) {\r\n userResult = trivialPromise([])\r\n } else if (!isPromise(userResult)) {\r\n throwInvalidUserFuncResult(LOAD)\r\n }\r\n return fromPromise(userResult)\r\n}\r\n\r\nfunction invokeUserTotalCountFunc(store, options) {\r\n var userFunc = store._totalCountFunc;\r\n var userResult;\r\n if (!isFunction(userFunc)) {\r\n throw errors.Error(\"E4021\")\r\n }\r\n userResult = userFunc.apply(store, [options]);\r\n if (!isPromise(userResult)) {\r\n userResult = Number(userResult);\r\n if (!isFinite(userResult)) {\r\n throwInvalidUserFuncResult(TOTAL_COUNT)\r\n }\r\n userResult = trivialPromise(userResult)\r\n }\r\n return fromPromise(userResult)\r\n}\r\n\r\nfunction invokeUserByKeyFunc(store, key, extraOptions) {\r\n var userFunc = store._byKeyFunc;\r\n var userResult;\r\n ensureRequiredFuncOption(BY_KEY, userFunc);\r\n userResult = userFunc.apply(store, [key, extraOptions]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n }\r\n return fromPromise(userResult)\r\n}\r\n\r\nfunction runRawLoad(pendingDeferred, store, userFuncOptions, continuation) {\r\n if (store.__rawData) {\r\n continuation(store.__rawData)\r\n } else {\r\n var loadPromise = store.__rawDataPromise || invokeUserLoad(store, userFuncOptions);\r\n if (store._cacheRawData) {\r\n store.__rawDataPromise = loadPromise\r\n }\r\n loadPromise.always((function() {\r\n delete store.__rawDataPromise\r\n })).done((function(rawData) {\r\n if (store._cacheRawData) {\r\n store.__rawData = rawData\r\n }\r\n continuation(rawData)\r\n })).fail(createUserFuncFailureHandler(pendingDeferred))\r\n }\r\n}\r\n\r\nfunction runRawLoadWithQuery(pendingDeferred, store, options, countOnly) {\r\n options = options || {};\r\n var userFuncOptions = {};\r\n if (\"userData\" in options) {\r\n userFuncOptions.userData = options.userData\r\n }\r\n runRawLoad(pendingDeferred, store, userFuncOptions, (function(rawData) {\r\n var rawDataQuery = arrayQuery(rawData, {\r\n errorHandler: store._errorHandler\r\n });\r\n var itemsQuery;\r\n var totalCountQuery;\r\n var waitList = [];\r\n var items;\r\n var totalCount;\r\n if (!countOnly) {\r\n itemsQuery = storeHelper.queryByOptions(rawDataQuery, options);\r\n if (itemsQuery === rawDataQuery) {\r\n items = rawData.slice(0)\r\n } else {\r\n waitList.push(itemsQuery.enumerate().done((function(asyncResult) {\r\n items = asyncResult\r\n })))\r\n }\r\n }\r\n if (options.requireTotalCount || countOnly) {\r\n totalCountQuery = storeHelper.queryByOptions(rawDataQuery, options, true);\r\n if (totalCountQuery === rawDataQuery) {\r\n totalCount = rawData.length\r\n } else {\r\n waitList.push(totalCountQuery.count().done((function(asyncResult) {\r\n totalCount = asyncResult\r\n })))\r\n }\r\n }\r\n when.apply($, waitList).done((function() {\r\n if (countOnly) {\r\n pendingDeferred.resolve(totalCount)\r\n } else if (options.requireTotalCount) {\r\n pendingDeferred.resolve(items, {\r\n totalCount: totalCount\r\n })\r\n } else {\r\n pendingDeferred.resolve(items)\r\n }\r\n })).fail((function(x) {\r\n pendingDeferred.reject(x)\r\n }))\r\n }))\r\n}\r\n\r\nfunction runRawLoadWithKey(pendingDeferred, store, key) {\r\n runRawLoad(pendingDeferred, store, {}, (function(rawData) {\r\n var keyExpr = store.key();\r\n var item;\r\n for (var i = 0, len = rawData.length; i < len; i++) {\r\n item = rawData[i];\r\n if (dataUtils.keysEqual(keyExpr, store.keyOf(rawData[i]), key)) {\r\n pendingDeferred.resolve(item);\r\n return\r\n }\r\n }\r\n pendingDeferred.reject(errors.Error(\"E4009\"))\r\n }))\r\n}\r\nvar CustomStore = Store.inherit({\r\n ctor: function(options) {\r\n options = options || {};\r\n this.callBase(options);\r\n this._useDefaultSearch = !!options.useDefaultSearch || \"raw\" === options.loadMode;\r\n this._loadMode = options.loadMode;\r\n this._cacheRawData = false !== options.cacheRawData;\r\n this._loadFunc = options[LOAD];\r\n this._totalCountFunc = options[TOTAL_COUNT];\r\n this._byKeyFunc = options[BY_KEY];\r\n this._insertFunc = options[INSERT];\r\n this._updateFunc = options[UPDATE];\r\n this._removeFunc = options[REMOVE]\r\n },\r\n createQuery: function() {\r\n throw errors.Error(\"E4010\")\r\n },\r\n clearRawDataCache: function() {\r\n delete this.__rawData\r\n },\r\n _totalCountImpl: function(options) {\r\n var d = new Deferred;\r\n if (\"raw\" === this._loadMode && !this._totalCountFunc) {\r\n runRawLoadWithQuery(d, this, options, true)\r\n } else {\r\n invokeUserTotalCountFunc(this, options).done((function(count) {\r\n d.resolve(Number(count))\r\n })).fail(createUserFuncFailureHandler(d));\r\n d = this._addFailHandlers(d)\r\n }\r\n return d.promise()\r\n },\r\n _pushImpl: function(changes) {\r\n if (this.__rawData) {\r\n applyBatch({\r\n keyInfo: this,\r\n data: this.__rawData,\r\n changes: changes\r\n })\r\n }\r\n },\r\n _loadImpl: function(options) {\r\n var d = new Deferred;\r\n if (\"raw\" === this._loadMode) {\r\n runRawLoadWithQuery(d, this, options, false)\r\n } else {\r\n invokeUserLoad(this, options).done((function(data, extra) {\r\n d.resolve(data, extra)\r\n })).fail(createUserFuncFailureHandler(d));\r\n d = this._addFailHandlers(d)\r\n }\r\n return d.promise()\r\n },\r\n _byKeyImpl: function(key, extraOptions) {\r\n var d = new Deferred;\r\n if (this._byKeyViaLoad()) {\r\n this._requireKey();\r\n runRawLoadWithKey(d, this, key)\r\n } else {\r\n invokeUserByKeyFunc(this, key, extraOptions).done((function(obj) {\r\n d.resolve(obj)\r\n })).fail(createUserFuncFailureHandler(d))\r\n }\r\n return d.promise()\r\n },\r\n _byKeyViaLoad: function() {\r\n return \"raw\" === this._loadMode && !this._byKeyFunc\r\n },\r\n _insertImpl: function(values) {\r\n var that = this;\r\n var userFunc = that._insertFunc;\r\n var userResult;\r\n var d = new Deferred;\r\n ensureRequiredFuncOption(INSERT, userFunc);\r\n userResult = userFunc.apply(that, [values]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n }\r\n fromPromise(userResult).done((function(serverResponse) {\r\n if (config().useLegacyStoreResult) {\r\n d.resolve(values, serverResponse)\r\n } else {\r\n d.resolve(serverResponse || values, that.keyOf(serverResponse))\r\n }\r\n })).fail(createUserFuncFailureHandler(d));\r\n return d.promise()\r\n },\r\n _updateImpl: function(key, values) {\r\n var userFunc = this._updateFunc;\r\n var userResult;\r\n var d = new Deferred;\r\n ensureRequiredFuncOption(UPDATE, userFunc);\r\n userResult = userFunc.apply(this, [key, values]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n }\r\n fromPromise(userResult).done((function(serverResponse) {\r\n if (config().useLegacyStoreResult) {\r\n d.resolve(key, values)\r\n } else {\r\n d.resolve(serverResponse || values, key)\r\n }\r\n })).fail(createUserFuncFailureHandler(d));\r\n return d.promise()\r\n },\r\n _removeImpl: function(key) {\r\n var userFunc = this._removeFunc;\r\n var userResult;\r\n var d = new Deferred;\r\n ensureRequiredFuncOption(REMOVE, userFunc);\r\n userResult = userFunc.apply(this, [key]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise()\r\n }\r\n fromPromise(userResult).done((function() {\r\n d.resolve(key)\r\n })).fail(createUserFuncFailureHandler(d));\r\n return d.promise()\r\n }\r\n});\r\nexport default CustomStore;\r\n","/**\r\n * DevExtreme (esm/core/utils/deferred.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDeferred,\r\n isDefined,\r\n isPromise\r\n} from \"../utils/type\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nimport Callbacks from \"../utils/callbacks\";\r\nvar deferredConfig = [{\r\n method: \"resolve\",\r\n handler: \"done\",\r\n state: \"resolved\"\r\n}, {\r\n method: \"reject\",\r\n handler: \"fail\",\r\n state: \"rejected\"\r\n}, {\r\n method: \"notify\",\r\n handler: \"progress\"\r\n}];\r\nvar _DeferredObj = function() {\r\n var that = this;\r\n this._state = \"pending\";\r\n this._promise = {};\r\n deferredConfig.forEach(function(config) {\r\n var methodName = config.method;\r\n this[methodName + \"Callbacks\"] = new Callbacks;\r\n this[methodName] = function() {\r\n return this[methodName + \"With\"](this._promise, arguments)\r\n }.bind(this);\r\n this._promise[config.handler] = function(handler) {\r\n if (!handler) {\r\n return this\r\n }\r\n var callbacks = that[methodName + \"Callbacks\"];\r\n if (callbacks.fired()) {\r\n handler.apply(that[methodName + \"Context\"], that[methodName + \"Args\"])\r\n } else {\r\n callbacks.add(function(context, args) {\r\n handler.apply(context, args)\r\n }.bind(this))\r\n }\r\n return this\r\n }\r\n }.bind(this));\r\n this._promise.always = function(handler) {\r\n return this.done(handler).fail(handler)\r\n };\r\n this._promise.catch = function(handler) {\r\n return this.then(null, handler)\r\n };\r\n this._promise.then = function(resolve, reject) {\r\n var result = new _DeferredObj;\r\n [\"done\", \"fail\"].forEach(function(method) {\r\n var callback = \"done\" === method ? resolve : reject;\r\n this[method]((function() {\r\n if (!callback) {\r\n result[\"done\" === method ? \"resolve\" : \"reject\"].apply(this, arguments);\r\n return\r\n }\r\n var callbackResult = callback && callback.apply(this, arguments);\r\n if (isDeferred(callbackResult)) {\r\n callbackResult.done(result.resolve).fail(result.reject)\r\n } else if (isPromise(callbackResult)) {\r\n callbackResult.then(result.resolve, result.reject)\r\n } else {\r\n result.resolve.apply(this, isDefined(callbackResult) ? [callbackResult] : arguments)\r\n }\r\n }))\r\n }.bind(this));\r\n return result.promise()\r\n };\r\n this._promise.state = function() {\r\n return that._state\r\n };\r\n this._promise.promise = function(args) {\r\n return args ? extend(args, that._promise) : that._promise\r\n };\r\n this._promise.promise(this)\r\n};\r\ndeferredConfig.forEach((function(config) {\r\n var methodName = config.method;\r\n var state = config.state;\r\n _DeferredObj.prototype[methodName + \"With\"] = function(context, args) {\r\n var callbacks = this[methodName + \"Callbacks\"];\r\n if (\"pending\" === this.state()) {\r\n this[methodName + \"Args\"] = args;\r\n this[methodName + \"Context\"] = context;\r\n if (state) {\r\n this._state = state\r\n }\r\n callbacks.fire(context, args)\r\n }\r\n return this\r\n }\r\n}));\r\nexport function fromPromise(promise, context) {\r\n if (isDeferred(promise)) {\r\n return promise\r\n } else if (isPromise(promise)) {\r\n var d = new _DeferredObj;\r\n promise.then((function() {\r\n d.resolveWith.apply(d, [context].concat([\r\n [].slice.call(arguments)\r\n ]))\r\n }), (function() {\r\n d.rejectWith.apply(d, [context].concat([\r\n [].slice.call(arguments)\r\n ]))\r\n }));\r\n return d\r\n }\r\n return (new _DeferredObj).resolveWith(context, [promise])\r\n}\r\nvar whenFunc = function() {\r\n if (1 === arguments.length) {\r\n return fromPromise(arguments[0])\r\n }\r\n var values = [].slice.call(arguments);\r\n var contexts = [];\r\n var resolvedCount = 0;\r\n var deferred = new _DeferredObj;\r\n var updateState = function(i) {\r\n return function(value) {\r\n contexts[i] = this;\r\n values[i] = arguments.length > 1 ? [].slice.call(arguments) : value;\r\n resolvedCount++;\r\n if (resolvedCount === values.length) {\r\n deferred.resolveWith(contexts, values)\r\n }\r\n }\r\n };\r\n for (var i = 0; i < values.length; i++) {\r\n if (isDeferred(values[i])) {\r\n values[i].promise().done(updateState(i)).fail(deferred.reject)\r\n } else {\r\n resolvedCount++\r\n }\r\n }\r\n if (resolvedCount === values.length) {\r\n deferred.resolveWith(contexts, values)\r\n }\r\n return deferred.promise()\r\n};\r\nexport function setStrategy(value) {\r\n _DeferredObj = value.Deferred;\r\n whenFunc = value.when\r\n}\r\nexport function Deferred() {\r\n return new _DeferredObj\r\n}\r\nexport function when() {\r\n return whenFunc.apply(this, arguments)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/validation_group.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport ValidationSummary from \"./validation_summary\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport Validator from \"./validator\";\r\nvar VALIDATION_ENGINE_CLASS = \"dx-validationgroup\";\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nclass ValidationGroup extends DOMComponent {\r\n _getDefaultOptions() {\r\n return super._getDefaultOptions()\r\n }\r\n _init() {\r\n super._init();\r\n ValidationEngine.addGroup(this)\r\n }\r\n _initMarkup() {\r\n var $element = this.$element();\r\n $element.addClass(VALIDATION_ENGINE_CLASS);\r\n $element.find(\".\".concat(VALIDATOR_CLASS)).each((function(_, validatorContainer) {\r\n Validator.getInstance($(validatorContainer))._initGroupRegistration()\r\n }));\r\n $element.find(\".\".concat(VALIDATION_SUMMARY_CLASS)).each((function(_, summaryContainer) {\r\n ValidationSummary.getInstance($(summaryContainer))._initGroupRegistration()\r\n }));\r\n super._initMarkup()\r\n }\r\n validate() {\r\n return ValidationEngine.validateGroup(this)\r\n }\r\n reset() {\r\n return ValidationEngine.resetGroup(this)\r\n }\r\n _dispose() {\r\n ValidationEngine.removeGroup(this);\r\n this.$element().removeClass(VALIDATION_ENGINE_CLASS);\r\n super._dispose()\r\n }\r\n _useTemplates() {\r\n return false\r\n }\r\n}\r\nregisterComponent(\"dxValidationGroup\", ValidationGroup);\r\nexport default ValidationGroup;\r\n","/**\r\n * DevExtreme (esm/core/remove_event.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport {\r\n beforeCleanData\r\n} from \"./element_data\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerEvent from \"../events/core/event_registrator\";\r\nexport var removeEvent = \"dxremove\";\r\nvar eventPropName = \"dxRemoveEvent\";\r\nbeforeCleanData((function(elements) {\r\n elements = [].slice.call(elements);\r\n for (var i = 0; i < elements.length; i++) {\r\n var $element = $(elements[i]);\r\n if ($element.prop(eventPropName)) {\r\n $element[0][eventPropName] = null;\r\n eventsEngine.triggerHandler($element, removeEvent)\r\n }\r\n }\r\n}));\r\nregisterEvent(removeEvent, {\r\n noBubble: true,\r\n setup: function(element) {\r\n $(element).prop(eventPropName, true)\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/error.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n logger\r\n} from \"./console\";\r\nimport {\r\n format\r\n} from \"./string\";\r\nimport {\r\n version\r\n} from \"../version\";\r\nvar ERROR_URL = \"http://js.devexpress.com/error/\" + version.split(\".\").slice(0, 2).join(\"_\") + \"/\";\r\nexport default function(baseErrors, errors) {\r\n var exports = {\r\n ERROR_MESSAGES: extend(errors, baseErrors),\r\n Error: function() {\r\n return makeError([].slice.call(arguments))\r\n },\r\n log: function(id) {\r\n var method = \"log\";\r\n if (/^E\\d+$/.test(id)) {\r\n method = \"error\"\r\n } else if (/^W\\d+$/.test(id)) {\r\n method = \"warn\"\r\n }\r\n logger[method](\"log\" === method ? id : combineMessage([].slice.call(arguments)))\r\n }\r\n };\r\n\r\n function combineMessage(args) {\r\n var id = args[0];\r\n args = args.slice(1);\r\n return formatMessage(id, formatDetails(id, args))\r\n }\r\n\r\n function formatDetails(id, args) {\r\n args = [exports.ERROR_MESSAGES[id]].concat(args);\r\n return format.apply(this, args).replace(/\\.*\\s*?$/, \"\")\r\n }\r\n\r\n function formatMessage(id, details) {\r\n return format.apply(this, [\"{0} - {1}. See:\\n{2}\", id, details, getErrorUrl(id)])\r\n }\r\n\r\n function makeError(args) {\r\n var id = args[0];\r\n args = args.slice(1);\r\n var details = formatDetails(id, args);\r\n var url = getErrorUrl(id);\r\n var message = formatMessage(id, details);\r\n return extend(new Error(message), {\r\n __id: id,\r\n __details: details,\r\n url: url\r\n })\r\n }\r\n\r\n function getErrorUrl(id) {\r\n return ERROR_URL + id\r\n }\r\n return exports\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.device.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n nativeScrolling,\r\n touch\r\n} from \"../../core/utils/support\";\r\nexport var deviceDependentOptions = function() {\r\n return [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNative: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n bounceEnabled: false,\r\n scrollByThumb: true,\r\n scrollByContent: touch,\r\n showScrollbar: \"onHover\"\r\n }\r\n }]\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/tree_view/ui.tree_view.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n asyncNoop,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n isDefined,\r\n isPrimitive,\r\n isFunction,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport CheckBox from \"../check_box\";\r\nimport HierarchicalCollectionWidget from \"../hierarchical_collection/ui.hierarchical_collection_widget\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n name as dblclickEvent\r\n} from \"../../events/double_click\";\r\nimport fx from \"../../animation/fx\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n fromPromise,\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport errors from \"../widget/ui.errors\";\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CLASS = \"\".concat(WIDGET_CLASS, \"-node\");\r\nvar NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container\");\r\nvar NODE_LOAD_INDICATOR_CLASS = \"\".concat(NODE_CLASS, \"-loadindicator\");\r\nvar OPENED_NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container-opened\");\r\nvar IS_LEAF = \"\".concat(NODE_CLASS, \"-is-leaf\");\r\nvar ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-item\");\r\nvar ITEM_WITH_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-with-checkbox\");\r\nvar ITEM_WITHOUT_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-without-checkbox\");\r\nvar ITEM_DATA_KEY = \"\".concat(ITEM_CLASS, \"-data\");\r\nvar TOGGLE_ITEM_VISIBILITY_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility\");\r\nvar LOAD_INDICATOR_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator\");\r\nvar LOAD_INDICATOR_WRAPPER_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator-wrapper\");\r\nvar TOGGLE_ITEM_VISIBILITY_OPENED_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility-opened\");\r\nvar SELECT_ALL_ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-select-all-item\");\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar SELECTED_ITEM_CLASS = \"dx-state-selected\";\r\nvar EXPAND_EVENT_NAMESPACE = \"dxTreeView_expand\";\r\nvar DATA_ITEM_ID = \"data-item-id\";\r\nvar TreeViewBase = HierarchicalCollectionWidget.inherit({\r\n _supportedKeys: function(e) {\r\n var click = e => {\r\n var $itemElement = $(this.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n e.target = $itemElement;\r\n e.currentTarget = $itemElement;\r\n this._itemClickHandler(e, $itemElement.children(\".\" + ITEM_CLASS));\r\n var expandEventName = this._getEventNameByOption(this.option(\"expandEvent\"));\r\n var expandByClick = expandEventName === addNamespace(clickEventName, EXPAND_EVENT_NAMESPACE);\r\n if (expandByClick) {\r\n this._expandEventHandler(e)\r\n }\r\n };\r\n var select = e => {\r\n e.preventDefault();\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n var checkboxInstance = this._getCheckBoxInstance($focusedElement);\r\n if (!checkboxInstance.option(\"disabled\")) {\r\n var currentState = checkboxInstance.option(\"value\");\r\n this._updateItemSelection(!currentState, $focusedElement.find(\".\" + ITEM_CLASS).get(0), true)\r\n }\r\n };\r\n var toggleExpandedNestedItems = function(state, e) {\r\n if (!this.option(\"expandAllEnabled\")) {\r\n return\r\n }\r\n e.preventDefault();\r\n var $rootElement = $(this.option(\"focusedElement\"));\r\n if (!$rootElement.length) {\r\n return\r\n }\r\n var rootItem = this._getItemData($rootElement.find(\".\".concat(ITEM_CLASS)));\r\n this._toggleExpandedNestedItems([rootItem], state)\r\n };\r\n return extend(this.callBase(), {\r\n enter: this._showCheckboxes() ? select : click,\r\n space: this._showCheckboxes() ? select : click,\r\n asterisk: toggleExpandedNestedItems.bind(this, true),\r\n minus: toggleExpandedNestedItems.bind(this, false)\r\n })\r\n },\r\n _toggleExpandedNestedItems: function(items, state) {\r\n if (!items) {\r\n return\r\n }\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n this._toggleExpandedState(node, state);\r\n this._toggleExpandedNestedItems(item.items, state)\r\n }\r\n },\r\n _getNodeElement: function(node, cache) {\r\n var key = this._encodeString(node.internalFields.key);\r\n if (cache) {\r\n if (!cache.$nodeByKey) {\r\n cache.$nodeByKey = {};\r\n this.$element().find(\".\".concat(NODE_CLASS)).each((function() {\r\n var $node = $(this);\r\n var key = $node.attr(DATA_ITEM_ID);\r\n cache.$nodeByKey[key] = $node\r\n }))\r\n }\r\n return cache.$nodeByKey[key] || $()\r\n }\r\n var element = this.$element().get(0).querySelector(\"[\".concat(DATA_ITEM_ID, '=\"').concat(key, '\"]'));\r\n return $(element)\r\n },\r\n _activeStateUnit: \".\" + ITEM_CLASS,\r\n _widgetClass: function() {\r\n return WIDGET_CLASS\r\n },\r\n _getDefaultOptions: function() {\r\n var defaultOptions = extend(this.callBase(), {\r\n animationEnabled: true,\r\n dataStructure: \"tree\",\r\n deferRendering: true,\r\n expandAllEnabled: false,\r\n hasItemsExpr: \"hasItems\",\r\n selectNodesRecursive: true,\r\n expandNodesRecursive: true,\r\n showCheckBoxesMode: \"none\",\r\n selectAllText: messageLocalization.format(\"dxList-selectAll\"),\r\n onItemSelectionChanged: null,\r\n onItemExpanded: null,\r\n onItemCollapsed: null,\r\n scrollDirection: \"vertical\",\r\n virtualModeEnabled: false,\r\n rootValue: 0,\r\n focusStateEnabled: false,\r\n selectionMode: \"multiple\",\r\n expandEvent: \"dblclick\",\r\n selectByClick: false,\r\n createChildren: null,\r\n onSelectAllValueChanged: null\r\n });\r\n return extend(true, defaultOptions, {\r\n integrationOptions: {\r\n useDeferUpdateForTemplates: false\r\n }\r\n })\r\n },\r\n _initSelectedItems: noop,\r\n _syncSelectionOptions: asyncNoop,\r\n _fireSelectionChanged: function() {\r\n var selectionChangePromise = this._selectionChangePromise;\r\n when(selectionChangePromise).done(function() {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })()\r\n }.bind(this))\r\n },\r\n _createSelectAllValueChangedAction: function() {\r\n this._selectAllValueChangedAction = this._createActionByOption(\"onSelectAllValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _fireSelectAllValueChanged: function(value) {\r\n this._selectAllValueChangedAction({\r\n value: value\r\n })\r\n },\r\n _checkBoxModeChange: function(value, previousValue) {\r\n if (\"none\" === previousValue || \"none\" === value) {\r\n this.repaint();\r\n return\r\n }\r\n var selectAllExists = this._$selectAllItem && this._$selectAllItem.length;\r\n switch (value) {\r\n case \"selectAll\":\r\n if (!selectAllExists) {\r\n this._createSelectAllValueChangedAction();\r\n this._renderSelectAllItem()\r\n }\r\n break;\r\n case \"normal\":\r\n if (selectAllExists) {\r\n this._$selectAllItem.remove();\r\n delete this._$selectAllItem\r\n }\r\n }\r\n },\r\n _removeSelection: function() {\r\n var that = this;\r\n each(this._dataAdapter.getFullData(), (function(_, node) {\r\n if (!that._hasChildren(node)) {\r\n return\r\n }\r\n that._dataAdapter.toggleSelection(node.internalFields.key, false, true)\r\n }))\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n switch (name) {\r\n case \"selectAllText\":\r\n if (this._$selectAllItem) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"text\", value)\r\n }\r\n break;\r\n case \"showCheckBoxesMode\":\r\n this._checkBoxModeChange(value, previousValue);\r\n break;\r\n case \"scrollDirection\":\r\n this._scrollableContainer.option(\"direction\", value);\r\n break;\r\n case \"items\":\r\n delete this._$selectAllItem;\r\n this.callBase(args);\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initDataAdapter();\r\n this._filter = {};\r\n break;\r\n case \"hasItemsExpr\":\r\n this._initAccessors();\r\n this.repaint();\r\n break;\r\n case \"expandEvent\":\r\n this._initExpandEvent();\r\n break;\r\n case \"deferRendering\":\r\n case \"dataStructure\":\r\n case \"rootValue\":\r\n case \"createChildren\":\r\n case \"expandNodesRecursive\":\r\n case \"onItemSelectionChanged\":\r\n case \"onItemExpanded\":\r\n case \"onItemCollapsed\":\r\n case \"expandAllEnabled\":\r\n case \"animationEnabled\":\r\n case \"virtualModeEnabled\":\r\n case \"selectByClick\":\r\n break;\r\n case \"selectionMode\":\r\n this._initDataAdapter();\r\n this.callBase(args);\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n this._createSelectAllValueChangedAction();\r\n break;\r\n case \"selectNodesRecursive\":\r\n this._dataAdapter.setOption(\"recursiveSelection\", args.value);\r\n this.repaint();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _initDataSource: function() {\r\n if (this._useCustomChildrenLoader()) {\r\n this._loadChildrenByCustomLoader(null).done(function(newItems) {\r\n if (newItems && newItems.length) {\r\n this.option(\"items\", newItems)\r\n }\r\n }.bind(this))\r\n } else {\r\n this.callBase();\r\n this._isVirtualMode() && this._initVirtualMode()\r\n }\r\n },\r\n _initVirtualMode: function() {\r\n var filter = this._filter;\r\n if (!filter.custom) {\r\n filter.custom = this._dataSource.filter()\r\n }\r\n if (!filter.internal) {\r\n filter.internal = [this.option(\"parentIdExpr\"), this.option(\"rootValue\")]\r\n }\r\n },\r\n _useCustomChildrenLoader: function() {\r\n return isFunction(this.option(\"createChildren\")) && this._isDataStructurePlain()\r\n },\r\n _loadChildrenByCustomLoader: function(parentNode) {\r\n var invocationResult = this.option(\"createChildren\").call(this, parentNode);\r\n if (Array.isArray(invocationResult)) {\r\n return (new Deferred).resolve(invocationResult).promise()\r\n }\r\n if (invocationResult && isFunction(invocationResult.then)) {\r\n return fromPromise(invocationResult)\r\n }\r\n return (new Deferred).resolve([]).promise()\r\n },\r\n _combineFilter: function() {\r\n if (!this._filter.custom || !this._filter.custom.length) {\r\n return this._filter.internal\r\n }\r\n return [this._filter.custom, this._filter.internal]\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._renderEmptyMessage()\r\n },\r\n _init: function() {\r\n this._filter = {};\r\n this.callBase();\r\n this._initStoreChangeHandlers()\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n var items = this.option(\"items\");\r\n if (this._initialized && this._isVirtualMode() && items.length) {\r\n return\r\n }\r\n this.option(\"items\", newItems)\r\n },\r\n _removeTreeViewLoadIndicator: function() {\r\n if (!this._treeViewLoadIndicator) {\r\n return\r\n }\r\n this._treeViewLoadIndicator.remove();\r\n this._treeViewLoadIndicator = null\r\n },\r\n _createTreeViewLoadIndicator: function() {\r\n this._treeViewLoadIndicator = $(\"
\").addClass(LOAD_INDICATOR_CLASS);\r\n this._createComponent(this._treeViewLoadIndicator, LoadIndicator, {});\r\n return this._treeViewLoadIndicator\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n var resultFilter;\r\n if (this._isVirtualMode()) {\r\n resultFilter = this._combineFilter();\r\n this._dataSource.filter(resultFilter)\r\n }\r\n if (isLoading && !this._dataSource.isLoaded()) {\r\n this.option(\"items\", []);\r\n var $wrapper = $(\"
\").addClass(LOAD_INDICATOR_WRAPPER_CLASS);\r\n this._createTreeViewLoadIndicator().appendTo($wrapper);\r\n this.itemsContainer().append($wrapper);\r\n if (this._isVirtualMode() && this._dataSource.filter() !== resultFilter) {\r\n this._dataSource.filter([])\r\n }\r\n } else {\r\n this._removeTreeViewLoadIndicator()\r\n }\r\n },\r\n _initStoreChangeHandlers: function() {\r\n if (\"plain\" !== this.option(\"dataStructure\")) {\r\n return\r\n }\r\n this._dataSource && this._dataSource.store().on(\"inserted\", newItem => {\r\n this.option().items = this.option(\"items\").concat(newItem);\r\n this._dataAdapter.addItem(newItem);\r\n if (!this._dataAdapter.isFiltered(newItem)) {\r\n return\r\n }\r\n this._updateLevel(this._parentIdGetter(newItem))\r\n }).on(\"removed\", removedKey => {\r\n var node = this._dataAdapter.getNodeByKey(removedKey);\r\n if (isDefined(node)) {\r\n this.option(\"items\")[this._dataAdapter.getIndexByKey(node.internalFields.key)] = 0;\r\n this._markChildrenItemsToRemove(node);\r\n this._removeItems();\r\n this._dataAdapter.removeItem(removedKey);\r\n this._updateLevel(this._parentIdGetter(node))\r\n }\r\n })\r\n },\r\n _markChildrenItemsToRemove: function(node) {\r\n var keys = node.internalFields.childrenKeys;\r\n each(keys, (_, key) => {\r\n this.option(\"items\")[this._dataAdapter.getIndexByKey(key)] = 0;\r\n this._markChildrenItemsToRemove(this._dataAdapter.getNodeByKey(key))\r\n })\r\n },\r\n _removeItems: function() {\r\n var items = extend(true, [], this.option(\"items\"));\r\n var counter = 0;\r\n each(items, (index, item) => {\r\n if (!item) {\r\n this.option(\"items\").splice(index - counter, 1);\r\n counter++\r\n }\r\n })\r\n },\r\n _updateLevel: function(parentId) {\r\n var $container = this._getContainerByParentKey(parentId);\r\n this._renderItems($container, this._dataAdapter.getChildrenNodes(parentId))\r\n },\r\n _getOldContainer: function($itemElement) {\r\n if ($itemElement.length) {\r\n return $itemElement.children(\".\".concat(NODE_CONTAINER_CLASS))\r\n }\r\n if (this._scrollableContainer) {\r\n return this._scrollableContainer.$content().children()\r\n }\r\n return $()\r\n },\r\n _getContainerByParentKey: function(parentId) {\r\n var node = this._dataAdapter.getNodeByKey(parentId);\r\n var $itemElement = node ? this._getNodeElement(node) : [];\r\n this._getOldContainer($itemElement).remove();\r\n var $container = this._renderNodeContainer($itemElement);\r\n if (this._isRootLevel(parentId)) {\r\n if (!this._scrollableContainer) {\r\n this._renderScrollableContainer()\r\n }\r\n this._scrollableContainer.$content().append($container)\r\n }\r\n return $container\r\n },\r\n _isRootLevel: function(parentId) {\r\n return parentId === this.option(\"rootValue\")\r\n },\r\n _getAccessors: function() {\r\n var accessors = this.callBase();\r\n accessors.push(\"hasItems\");\r\n return accessors\r\n },\r\n _getDataAdapterOptions: function() {\r\n return {\r\n rootValue: this.option(\"rootValue\"),\r\n multipleSelection: !this._isSingleSelection(),\r\n recursiveSelection: this._isRecursiveSelection(),\r\n recursiveExpansion: this.option(\"expandNodesRecursive\"),\r\n selectionRequired: this.option(\"selectionRequired\"),\r\n dataType: this.option(\"dataStructure\"),\r\n sort: this._dataSource && this._dataSource.sort()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._renderScrollableContainer();\r\n this._renderEmptyMessage(this._dataAdapter.getRootNodes());\r\n this.callBase();\r\n this.setAria(\"role\", \"tree\")\r\n },\r\n _renderContentImpl: function() {\r\n var $nodeContainer = this._renderNodeContainer();\r\n this._scrollableContainer.$content().append($nodeContainer);\r\n if (!this.option(\"items\") || !this.option(\"items\").length) {\r\n return\r\n }\r\n this._renderItems($nodeContainer, this._dataAdapter.getRootNodes());\r\n this._initExpandEvent();\r\n if (this._selectAllEnabled()) {\r\n this._createSelectAllValueChangedAction();\r\n this._renderSelectAllItem($nodeContainer)\r\n }\r\n },\r\n _isVirtualMode: function() {\r\n return this.option(\"virtualModeEnabled\") && this._isDataStructurePlain() && !!this.option(\"dataSource\")\r\n },\r\n _isDataStructurePlain: function() {\r\n return \"plain\" === this.option(\"dataStructure\")\r\n },\r\n _fireContentReadyAction: function() {\r\n var dataSource = this.getDataSource();\r\n var skipContentReadyAction = dataSource && !dataSource.isLoaded();\r\n if (this._scrollableContainer && hasWindow()) {\r\n this._scrollableContainer.update()\r\n }\r\n if (!skipContentReadyAction) {\r\n this.callBase()\r\n }\r\n if (this._scrollableContainer && hasWindow()) {\r\n this._scrollableContainer.update()\r\n }\r\n },\r\n _renderScrollableContainer: function() {\r\n this._scrollableContainer = this._createComponent($(\"
\").appendTo(this.$element()), Scrollable, {\r\n direction: this.option(\"scrollDirection\"),\r\n useKeyboard: false\r\n })\r\n },\r\n _renderNodeContainer: function($parent) {\r\n var $container = $(\"
    \").addClass(NODE_CONTAINER_CLASS);\r\n this.setAria(\"role\", \"group\", $container);\r\n if ($parent && $parent.length) {\r\n var itemData = this._getItemData($parent.children(\".\" + ITEM_CLASS));\r\n if (this._expandedGetter(itemData)) {\r\n $container.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n $container.appendTo($parent)\r\n }\r\n return $container\r\n },\r\n _createDOMElement: function($nodeContainer, node) {\r\n var $node = $(\"
  • \").addClass(NODE_CLASS).attr(DATA_ITEM_ID, this._encodeString(node.internalFields.key)).prependTo($nodeContainer);\r\n this.setAria({\r\n role: \"treeitem\",\r\n label: this._displayGetter(node.internalFields.item) || \"\",\r\n expanded: node.internalFields.expanded || false,\r\n level: this._getLevel($nodeContainer)\r\n }, $node);\r\n return $node\r\n },\r\n _getLevel: function($nodeContainer) {\r\n var parent = $nodeContainer.parent();\r\n return parent.hasClass(\"dx-scrollable-content\") ? 1 : parseInt(parent.attr(\"aria-level\")) + 1\r\n },\r\n _showCheckboxes: function() {\r\n return \"none\" !== this.option(\"showCheckBoxesMode\")\r\n },\r\n _selectAllEnabled: function() {\r\n return \"selectAll\" === this.option(\"showCheckBoxesMode\") && !this._isSingleSelection()\r\n },\r\n _renderItems: function($nodeContainer, nodes) {\r\n var length = nodes.length - 1;\r\n for (var i = length; i >= 0; i--) {\r\n this._renderItem(i, nodes[i], $nodeContainer)\r\n }\r\n this._renderedItemsCount += nodes.length\r\n },\r\n _renderItem: function(nodeIndex, node, $nodeContainer) {\r\n var $node = this._createDOMElement($nodeContainer, node);\r\n var nodeData = node.internalFields;\r\n var showCheckBox = this._showCheckboxes();\r\n $node.addClass(showCheckBox ? ITEM_WITH_CHECKBOX_CLASS : ITEM_WITHOUT_CHECKBOX_CLASS);\r\n $node.toggleClass(INVISIBLE_STATE_CLASS, false === nodeData.item.visible);\r\n showCheckBox && this._renderCheckBox($node, node);\r\n this.setAria(\"selected\", nodeData.selected, $node);\r\n this._toggleSelectedClass($node, nodeData.selected);\r\n this.callBase(this._renderedItemsCount + nodeIndex, nodeData.item, $node);\r\n if (false !== nodeData.item.visible) {\r\n this._renderChildren($node, node)\r\n }\r\n },\r\n _setAriaSelected: function() {},\r\n _renderChildren: function($node, node) {\r\n if (!this._hasChildren(node)) {\r\n this._addLeafClass($node);\r\n return\r\n }\r\n this._renderToggleItemVisibilityIcon($node, node);\r\n if (this.option(\"deferRendering\") && !node.internalFields.expanded) {\r\n return\r\n }\r\n this._loadSublevel(node).done(childNodes => {\r\n this._renderSublevel($node, this._getActualNode(node), childNodes)\r\n })\r\n },\r\n _getActualNode: function(cachedNode) {\r\n return this._dataAdapter.getNodeByKey(cachedNode.internalFields.key)\r\n },\r\n _hasChildren: function(node) {\r\n if (this._isVirtualMode() || this._useCustomChildrenLoader()) {\r\n return false !== this._hasItemsGetter(node.internalFields.item)\r\n }\r\n return this.callBase(node)\r\n },\r\n _loadSublevel: function(node) {\r\n var deferred = new Deferred;\r\n var childrenNodes = this._getChildNodes(node);\r\n if (childrenNodes.length) {\r\n deferred.resolve(childrenNodes)\r\n } else {\r\n this._loadNestedItems(node).done(items => {\r\n deferred.resolve(this._dataAdapter.getNodesByItems(items))\r\n })\r\n }\r\n return deferred.promise()\r\n },\r\n _renderSublevel: function($node, node, childNodes) {\r\n var $nestedNodeContainer = this._renderNodeContainer($node, node);\r\n var childNodesByChildrenKeys = childNodes.filter(childNode => -1 !== node.internalFields.childrenKeys.indexOf(childNode.internalFields.key));\r\n this._renderItems($nestedNodeContainer, childNodesByChildrenKeys);\r\n if (childNodesByChildrenKeys.length && !node.internalFields.selected) {\r\n var firstChild = childNodesByChildrenKeys[0];\r\n this._updateParentsState(firstChild, this._getNodeElement(firstChild))\r\n }\r\n this._normalizeIconState($node, childNodesByChildrenKeys.length);\r\n if (node.internalFields.expanded) {\r\n $nestedNodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n },\r\n _executeItemRenderAction: function(itemIndex, itemData, itemElement) {\r\n var node = this._getNode(itemElement);\r\n this._getItemRenderAction()({\r\n itemElement: itemElement,\r\n itemIndex: itemIndex,\r\n itemData: itemData,\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n _addLeafClass: function($node) {\r\n $node.addClass(IS_LEAF)\r\n },\r\n _expandEventHandler: function(e) {\r\n var $nodeElement = $(e.currentTarget.parentNode);\r\n if (!$nodeElement.hasClass(IS_LEAF)) {\r\n this._toggleExpandedState(e.currentTarget, void 0, e)\r\n }\r\n },\r\n _initExpandEvent: function() {\r\n var expandedEventName = this._getEventNameByOption(this.option(\"expandEvent\"));\r\n var $itemsContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n eventsEngine.off($itemsContainer, \".\" + EXPAND_EVENT_NAMESPACE, itemSelector);\r\n eventsEngine.on($itemsContainer, expandedEventName, itemSelector, this._expandEventHandler.bind(this))\r\n },\r\n _getEventNameByOption: function(name) {\r\n var event = \"click\" === name ? clickEventName : dblclickEvent;\r\n return addNamespace(event, EXPAND_EVENT_NAMESPACE)\r\n },\r\n _getNode: function(identifier) {\r\n if (!isDefined(identifier)) {\r\n return null\r\n }\r\n if (identifier.internalFields) {\r\n return identifier\r\n }\r\n if (isPrimitive(identifier)) {\r\n return this._dataAdapter.getNodeByKey(identifier)\r\n }\r\n var itemElement = $(identifier).get(0);\r\n if (!itemElement) {\r\n return null\r\n }\r\n if (domAdapter.isElementNode(itemElement)) {\r\n return this._getNodeByElement(itemElement)\r\n }\r\n return this._dataAdapter.getNodeByItem(itemElement)\r\n },\r\n _getNodeByElement: function(itemElement) {\r\n var $node = $(itemElement).closest(\".\" + NODE_CLASS);\r\n var key = this._decodeString($node.attr(DATA_ITEM_ID));\r\n return this._dataAdapter.getNodeByKey(key)\r\n },\r\n _toggleExpandedState: function(itemElement, state, e) {\r\n var node = this._getNode(itemElement);\r\n if (!node) {\r\n return (new Deferred).reject().promise()\r\n }\r\n if (node.internalFields.disabled) {\r\n return (new Deferred).reject().promise()\r\n }\r\n var currentState = node.internalFields.expanded;\r\n if (currentState === state) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n if (this._hasChildren(node)) {\r\n var $node = this._getNodeElement(node);\r\n if ($node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS, \":not(.\").concat(INVISIBLE_STATE_CLASS, \")\")).length) {\r\n return (new Deferred).reject().promise()\r\n }\r\n this._createLoadIndicator($node)\r\n }\r\n if (!isDefined(state)) {\r\n state = !currentState\r\n }\r\n this._dataAdapter.toggleExpansion(node.internalFields.key, state);\r\n return this._updateExpandedItemsUI(node, state, e)\r\n },\r\n _createLoadIndicator: function($node) {\r\n var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n if ($icon.hasClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS) || $nodeContainer.not(\":empty\").length) {\r\n return\r\n }\r\n this._createComponent($(\"
    \").addClass(NODE_LOAD_INDICATOR_CLASS), LoadIndicator, {}).$element().appendTo($node);\r\n $icon.hide()\r\n },\r\n _renderToggleItemVisibilityIcon: function($node, node) {\r\n var $icon = $(\"
    \").addClass(TOGGLE_ITEM_VISIBILITY_CLASS).appendTo($node);\r\n if (node.internalFields.expanded) {\r\n $icon.addClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS);\r\n $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n if (node.internalFields.disabled) {\r\n $icon.addClass(DISABLED_STATE_CLASS)\r\n }\r\n this._renderToggleItemVisibilityIconClick($icon, node)\r\n },\r\n _renderToggleItemVisibilityIconClick: function($icon, node) {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n eventsEngine.off($icon, eventName);\r\n eventsEngine.on($icon, eventName, e => {\r\n this._toggleExpandedState(node.internalFields.key, void 0, e)\r\n })\r\n },\r\n _updateExpandedItemsUI: function(node, state, e) {\r\n var $node = this._getNodeElement(node);\r\n var isHiddenNode = !$node.length || state && $node.is(\":hidden\");\r\n if (this.option(\"expandNodesRecursive\") && isHiddenNode) {\r\n var parentNode = this._getNode(node.internalFields.parentKey);\r\n if (parentNode) {\r\n this._updateExpandedItemsUI(parentNode, state, e)\r\n }\r\n }\r\n var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n $icon.toggleClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS, state);\r\n var nodeContainerExists = $nodeContainer.length > 0;\r\n var completionCallback = new Deferred;\r\n if (!state || nodeContainerExists && !$nodeContainer.is(\":empty\")) {\r\n this._animateNodeContainer(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n }\r\n if (0 === node.internalFields.childrenKeys.length && (this._isVirtualMode() || this._useCustomChildrenLoader())) {\r\n this._loadNestedItemsWithUpdate(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n }\r\n this._renderSublevel($node, node, this._getChildNodes(node));\r\n this._fireContentReadyAction();\r\n this._animateNodeContainer(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n },\r\n _loadNestedItemsWithUpdate: function(node, state, e, completionCallback) {\r\n var $node = this._getNodeElement(node);\r\n this._loadNestedItems(node).done(items => {\r\n var actualNodeData = this._getActualNode(node);\r\n this._renderSublevel($node, actualNodeData, this._dataAdapter.getNodesByItems(items));\r\n if (!items || !items.length) {\r\n return\r\n }\r\n this._fireContentReadyAction();\r\n this._animateNodeContainer(actualNodeData, state, e, completionCallback)\r\n })\r\n },\r\n _loadNestedItems: function(node) {\r\n if (this._useCustomChildrenLoader()) {\r\n var publicNode = this._dataAdapter.getPublicNode(node);\r\n return this._loadChildrenByCustomLoader(publicNode).done(newItems => {\r\n if (!this._areNodesExists(newItems)) {\r\n this._appendItems(newItems)\r\n }\r\n })\r\n }\r\n if (!this._isVirtualMode()) {\r\n return (new Deferred).resolve([]).promise()\r\n }\r\n this._filter.internal = [this.option(\"parentIdExpr\"), node.internalFields.key];\r\n this._dataSource.filter(this._combineFilter());\r\n return this._dataSource.load().done(newItems => {\r\n if (!this._areNodesExists(newItems)) {\r\n this._appendItems(newItems)\r\n }\r\n })\r\n },\r\n _areNodesExists: function(newItems, items) {\r\n var keyOfRootItem = this.keyOf(newItems[0]);\r\n var fullData = this._dataAdapter.getFullData();\r\n return !!this._dataAdapter.getNodeByKey(keyOfRootItem, fullData)\r\n },\r\n _appendItems: function(newItems) {\r\n this.option().items = this.option(\"items\").concat(newItems);\r\n this._initDataAdapter()\r\n },\r\n _animateNodeContainer: function(node, state, e, completionCallback) {\r\n var $node = this._getNodeElement(node);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n if (node && completionCallback && 0 === $nodeContainer.length) {\r\n completionCallback.resolve()\r\n }\r\n $nodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS);\r\n var nodeHeight = $nodeContainer.height();\r\n fx.stop($nodeContainer, true);\r\n fx.animate($nodeContainer, {\r\n type: \"custom\",\r\n duration: this.option(\"animationEnabled\") ? 400 : 0,\r\n from: {\r\n maxHeight: state ? 0 : nodeHeight\r\n },\r\n to: {\r\n maxHeight: state ? nodeHeight : 0\r\n },\r\n complete: function() {\r\n $nodeContainer.css(\"maxHeight\", \"none\");\r\n $nodeContainer.toggleClass(OPENED_NODE_CONTAINER_CLASS, state);\r\n this.setAria(\"expanded\", state, $node);\r\n this._scrollableContainer.update();\r\n this._fireExpandedStateUpdatedEvent(state, node, e);\r\n if (completionCallback) {\r\n completionCallback.resolve()\r\n }\r\n }.bind(this)\r\n })\r\n },\r\n _fireExpandedStateUpdatedEvent: function(isExpanded, node, e) {\r\n if (!this._hasChildren(node)) {\r\n return\r\n }\r\n var optionName = isExpanded ? \"onItemExpanded\" : \"onItemCollapsed\";\r\n if (isDefined(e)) {\r\n this._itemDXEventHandler(e, optionName, {\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n } else {\r\n var target = this._getNodeElement(node);\r\n this._itemEventHandler(target, optionName, {\r\n event: e,\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n }\r\n },\r\n _normalizeIconState: function($node, hasNewItems) {\r\n var $loadIndicator = $node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS));\r\n $loadIndicator.length && LoadIndicator.getInstance($loadIndicator).option(\"visible\", false);\r\n if (hasNewItems) {\r\n var $icon = $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n $icon.show();\r\n return\r\n }\r\n $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS).removeClass(TOGGLE_ITEM_VISIBILITY_CLASS);\r\n $node.addClass(IS_LEAF)\r\n },\r\n _emptyMessageContainer: function() {\r\n return this._scrollableContainer ? this._scrollableContainer.content() : this.callBase()\r\n },\r\n _renderContent: function() {\r\n var items = this.option(\"items\");\r\n if (items && items.length) {\r\n this._contentAlreadyRendered = true\r\n }\r\n this.callBase()\r\n },\r\n _renderSelectAllItem: function($container) {\r\n $container = $container || this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n this._$selectAllItem = $(\"
    \").addClass(SELECT_ALL_ITEM_CLASS);\r\n var value = this._dataAdapter.isAllSelected();\r\n this._createComponent(this._$selectAllItem, CheckBox, {\r\n value: value,\r\n text: this.option(\"selectAllText\"),\r\n onValueChanged: this._onSelectAllCheckboxValueChanged.bind(this)\r\n });\r\n this._toggleSelectedClass(this._$selectAllItem, value);\r\n $container.before(this._$selectAllItem)\r\n },\r\n _onSelectAllCheckboxValueChanged: function(args) {\r\n this._toggleSelectAll(args);\r\n this._fireSelectAllValueChanged(args.value)\r\n },\r\n _toggleSelectAll: function(args) {\r\n this._dataAdapter.toggleSelectAll(args.value);\r\n this._updateItemsUI();\r\n this._fireSelectionChanged()\r\n },\r\n _renderCheckBox: function($node, node) {\r\n var $checkbox = $(\"
    \").appendTo($node);\r\n this._createComponent($checkbox, CheckBox, {\r\n value: node.internalFields.selected,\r\n onValueChanged: this._changeCheckboxValue.bind(this),\r\n focusStateEnabled: false,\r\n disabled: this._disabledGetter(node)\r\n })\r\n },\r\n _toggleSelectedClass: function($node, value) {\r\n $node.toggleClass(SELECTED_ITEM_CLASS, !!value)\r\n },\r\n _toggleNodeDisabledState: function(node, state) {\r\n var $node = this._getNodeElement(node);\r\n var $item = $node.find(\".\" + ITEM_CLASS).eq(0);\r\n this._dataAdapter.toggleNodeDisabledState(node.internalFields.key, state);\r\n $item.toggleClass(DISABLED_STATE_CLASS, !!state);\r\n if (this._showCheckboxes()) {\r\n var checkbox = this._getCheckBoxInstance($node);\r\n checkbox.option(\"disabled\", !!state)\r\n }\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n if (property === this.option(\"disabledExpr\")) {\r\n this._toggleNodeDisabledState(node, value)\r\n }\r\n },\r\n _changeCheckboxValue: function(e) {\r\n var $node = $(e.element).parent(\".\" + NODE_CLASS);\r\n var $item = $node.children(\".\" + ITEM_CLASS);\r\n var item = this._getItemData($item);\r\n var node = this._getNodeByElement($item);\r\n var value = e.value;\r\n if (node && node.internalFields.selected === value) {\r\n return\r\n }\r\n this._updateItemSelection(value, item, e.event)\r\n },\r\n _isSingleSelection: function() {\r\n return \"single\" === this.option(\"selectionMode\")\r\n },\r\n _isRecursiveSelection: function() {\r\n return this.option(\"selectNodesRecursive\") && \"single\" !== this.option(\"selectionMode\")\r\n },\r\n _isLastSelectedBranch: function(publicNode, selectedNodesKeys, deep) {\r\n var keyIndex = selectedNodesKeys.indexOf(publicNode.key);\r\n if (keyIndex >= 0) {\r\n selectedNodesKeys.splice(keyIndex, 1)\r\n }\r\n if (deep) {\r\n each(publicNode.children, function(_, childNode) {\r\n this._isLastSelectedBranch(childNode, selectedNodesKeys, true)\r\n }.bind(this))\r\n }\r\n if (publicNode.parent) {\r\n this._isLastSelectedBranch(publicNode.parent, selectedNodesKeys)\r\n }\r\n return 0 === selectedNodesKeys.length\r\n },\r\n _isLastRequired: function(node) {\r\n var selectionRequired = this.option(\"selectionRequired\");\r\n var isSingleMode = this._isSingleSelection();\r\n var selectedNodesKeys = this.getSelectedNodeKeys();\r\n if (!selectionRequired) {\r\n return\r\n }\r\n if (isSingleMode) {\r\n return 1 === selectedNodesKeys.length\r\n } else {\r\n return this._isLastSelectedBranch(node.internalFields.publicNode, selectedNodesKeys.slice(), true)\r\n }\r\n },\r\n _updateItemSelection: function(value, itemElement, dxEvent) {\r\n var node = this._getNode(itemElement);\r\n if (!node || false === node.visible) {\r\n return false\r\n }\r\n if (node.internalFields.selected === value) {\r\n return true\r\n }\r\n if (!value && this._isLastRequired(node)) {\r\n if (this._showCheckboxes()) {\r\n var $node = this._getNodeElement(node);\r\n this._getCheckBoxInstance($node).option(\"value\", true)\r\n }\r\n return false\r\n }\r\n if (value && this._isSingleSelection()) {\r\n var selectedKeys = this.getSelectedNodeKeys();\r\n each(selectedKeys, (index, key) => {\r\n this._dataAdapter.toggleSelection(key, false);\r\n this._updateItemsUI();\r\n this._fireItemSelectionChanged(this._getNode(key))\r\n })\r\n }\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value);\r\n var isAllSelected = this._dataAdapter.isAllSelected();\r\n var needFireSelectAllChanged = this._selectAllEnabled() && this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\") !== isAllSelected;\r\n this._updateItemsUI();\r\n this._fireItemSelectionChanged(node, dxEvent);\r\n this._fireSelectionChanged();\r\n if (needFireSelectAllChanged) {\r\n this._fireSelectAllValueChanged(isAllSelected)\r\n }\r\n return true\r\n },\r\n _fireItemSelectionChanged: function(node, dxEvent) {\r\n var initiator = dxEvent || this._findItemElementByItem(node.internalFields.item);\r\n var handler = dxEvent ? this._itemDXEventHandler : this._itemEventHandler;\r\n handler.call(this, initiator, \"onItemSelectionChanged\", {\r\n node: this._dataAdapter.getPublicNode(node),\r\n itemData: node.internalFields.item\r\n })\r\n },\r\n _getCheckBoxInstance: function($node) {\r\n return $node.children(\".dx-checkbox\").dxCheckBox(\"instance\")\r\n },\r\n _updateItemsUI: function() {\r\n var cache = {};\r\n each(this._dataAdapter.getData(), (_, node) => {\r\n var $node = this._getNodeElement(node, cache);\r\n var nodeSelection = node.internalFields.selected;\r\n if (!$node.length) {\r\n return\r\n }\r\n this._toggleSelectedClass($node, nodeSelection);\r\n this.setAria(\"selected\", nodeSelection, $node);\r\n if (this._showCheckboxes()) {\r\n this._getCheckBoxInstance($node).option(\"value\", nodeSelection)\r\n }\r\n });\r\n if (this._selectAllEnabled()) {\r\n var selectAllCheckbox = this._$selectAllItem.dxCheckBox(\"instance\");\r\n selectAllCheckbox.option(\"onValueChanged\", void 0);\r\n selectAllCheckbox.option(\"value\", this._dataAdapter.isAllSelected());\r\n selectAllCheckbox.option(\"onValueChanged\", this._onSelectAllCheckboxValueChanged.bind(this))\r\n }\r\n },\r\n _updateParentsState: function(node, $node) {\r\n if (!$node) {\r\n return\r\n }\r\n var parentNode = this._dataAdapter.getNodeByKey(node.internalFields.parentKey);\r\n var $parentNode = $($node.parents(\".\" + NODE_CLASS)[0]);\r\n if (this._showCheckboxes()) {\r\n var parentValue = parentNode.internalFields.selected;\r\n this._getCheckBoxInstance($parentNode).option(\"value\", parentValue);\r\n this._toggleSelectedClass($parentNode, parentValue)\r\n }\r\n if (parentNode.internalFields.parentKey !== this.option(\"rootValue\")) {\r\n this._updateParentsState(parentNode, $parentNode)\r\n }\r\n },\r\n _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n var $itemElement = $(initiator).closest(\".\" + NODE_CLASS).children(\".\" + ITEM_CLASS);\r\n return action(extend(this._extendActionArgs($itemElement), actionArgs))\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n this._createEventHandler(\"onItemContextMenu\", e)\r\n },\r\n _itemHoldHandler: function(e) {\r\n this._createEventHandler(\"onItemHold\", e)\r\n },\r\n _createEventHandler: function(eventName, e) {\r\n var node = this._getNodeByElement(e.currentTarget);\r\n this._itemDXEventHandler(e, eventName, {\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _attachClickEvent: function() {\r\n var clickSelector = \".\" + this._itemClass();\r\n var pointerDownSelector = \".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS;\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var pointerDownEvent = addNamespace(pointerEvents.down, this.NAME);\r\n var $itemContainer = this._itemContainer();\r\n var that = this;\r\n eventsEngine.off($itemContainer, eventName, clickSelector);\r\n eventsEngine.off($itemContainer, pointerDownEvent, pointerDownSelector);\r\n eventsEngine.on($itemContainer, eventName, clickSelector, (function(e) {\r\n that._itemClickHandler(e, $(this))\r\n }));\r\n eventsEngine.on($itemContainer, pointerDownEvent, pointerDownSelector, (function(e) {\r\n that._itemPointerDownHandler(e)\r\n }))\r\n },\r\n _itemClickHandler: function(e, $item) {\r\n var itemData = this._getItemData($item);\r\n var node = this._getNodeByElement($item);\r\n this._itemDXEventHandler(e, \"onItemClick\", {\r\n node: this._dataAdapter.getPublicNode(node)\r\n });\r\n if (this.option(\"selectByClick\") && !e.isDefaultPrevented()) {\r\n this._updateItemSelection(!node.internalFields.selected, itemData, e)\r\n }\r\n },\r\n _updateSelectionToFirstItem: function($items, startIndex) {\r\n var itemIndex = startIndex;\r\n while (itemIndex >= 0) {\r\n var $item = $($items[itemIndex]);\r\n this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n itemIndex--\r\n }\r\n },\r\n _updateSelectionToLastItem: function($items, startIndex) {\r\n var length = $items.length;\r\n var itemIndex = startIndex;\r\n while (itemIndex < length) {\r\n var $item = $($items[itemIndex]);\r\n this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n itemIndex++\r\n }\r\n },\r\n _focusInHandler: function(e) {\r\n this._updateFocusState(e, true);\r\n if (this.option(\"focusedElement\")) {\r\n clearTimeout(this._setFocusedItemTimeout);\r\n this._setFocusedItemTimeout = setTimeout(() => {\r\n this._setFocusedItem($(this.option(\"focusedElement\")))\r\n });\r\n return\r\n }\r\n var $activeItem = this._getActiveItem();\r\n this.option(\"focusedElement\", getPublicElement($activeItem.closest(\".\" + NODE_CLASS)))\r\n },\r\n _setFocusedItem: function($target) {\r\n if (!$target || !$target.length) {\r\n return\r\n }\r\n if (!$target.children().hasClass(DISABLED_STATE_CLASS)) {\r\n this.callBase($target)\r\n }\r\n },\r\n _itemPointerDownHandler: function(e) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n var $target = $(e.target).closest(\".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS);\r\n if (!$target.length) {\r\n return\r\n }\r\n var itemElement = $target.hasClass(DISABLED_STATE_CLASS) ? null : $target;\r\n this.option(\"focusedElement\", getPublicElement(itemElement))\r\n },\r\n _findNonDisabledNodes: function($nodes) {\r\n return $nodes.not((function() {\r\n return $(this).children(\".\" + ITEM_CLASS).hasClass(DISABLED_STATE_CLASS)\r\n }))\r\n },\r\n _moveFocus: function(location, e) {\r\n var FOCUS_UP = \"up\";\r\n var FOCUS_DOWN = \"down\";\r\n var FOCUS_FIRST = \"first\";\r\n var FOCUS_LAST = \"last\";\r\n var FOCUS_LEFT = this.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n var FOCUS_RIGHT = this.option(\"rtlEnabled\") ? \"left\" : \"right\";\r\n this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).each((function() {\r\n fx.stop(this, true)\r\n }));\r\n var $items = this._findNonDisabledNodes(this._nodeElements());\r\n if (!$items || !$items.length) {\r\n return\r\n }\r\n switch (location) {\r\n case FOCUS_UP:\r\n var $prevItem = this._prevItem($items);\r\n this.option(\"focusedElement\", getPublicElement($prevItem));\r\n var prevItemElement = this._getNodeItemElement($prevItem);\r\n this._scrollableContainer.scrollToElement(prevItemElement);\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateItemSelection(true, prevItemElement)\r\n }\r\n break;\r\n case FOCUS_DOWN:\r\n var $nextItem = this._nextItem($items);\r\n this.option(\"focusedElement\", getPublicElement($nextItem));\r\n var nextItemElement = this._getNodeItemElement($nextItem);\r\n this._scrollableContainer.scrollToElement(nextItemElement);\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateItemSelection(true, nextItemElement)\r\n }\r\n break;\r\n case FOCUS_FIRST:\r\n var $firstItem = $items.first();\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateSelectionToFirstItem($items, $items.index(this._prevItem($items)))\r\n }\r\n this.option(\"focusedElement\", getPublicElement($firstItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($firstItem));\r\n break;\r\n case FOCUS_LAST:\r\n var $lastItem = $items.last();\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateSelectionToLastItem($items, $items.index(this._nextItem($items)))\r\n }\r\n this.option(\"focusedElement\", getPublicElement($lastItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($lastItem));\r\n break;\r\n case FOCUS_RIGHT:\r\n this._expandFocusedContainer();\r\n break;\r\n case FOCUS_LEFT:\r\n this._collapseFocusedContainer();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n },\r\n _getNodeItemElement: function($node) {\r\n return $node.find(\".\" + ITEM_CLASS).get(0)\r\n },\r\n _nodeElements: function() {\r\n return this.$element().find(\".\" + NODE_CLASS).not(\":hidden\")\r\n },\r\n _expandFocusedContainer: function() {\r\n var $focusedNode = $(this.option(\"focusedElement\"));\r\n if (!$focusedNode.length || $focusedNode.hasClass(IS_LEAF)) {\r\n return\r\n }\r\n var $node = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n if ($node.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n var $nextItem = this._nextItem(this._findNonDisabledNodes(this._nodeElements()));\r\n this.option(\"focusedElement\", getPublicElement($nextItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($nextItem));\r\n return\r\n }\r\n var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n this._toggleExpandedState(node, true)\r\n },\r\n _getClosestNonDisabledNode: function($node) {\r\n do {\r\n $node = $node.parent().closest(\".\" + NODE_CLASS)\r\n } while ($node.children(\".dx-treeview-item.dx-state-disabled\").length);\r\n return $node\r\n },\r\n _collapseFocusedContainer: function() {\r\n var $focusedNode = $(this.option(\"focusedElement\"));\r\n if (!$focusedNode.length) {\r\n return\r\n }\r\n var nodeElement = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n if (!$focusedNode.hasClass(IS_LEAF) && nodeElement.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n this._toggleExpandedState(node, false)\r\n } else {\r\n var collapsedNode = this._getClosestNonDisabledNode($focusedNode);\r\n collapsedNode.length && this.option(\"focusedElement\", getPublicElement(collapsedNode));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement(collapsedNode))\r\n }\r\n },\r\n _encodeString: function(value) {\r\n return isString(value) ? encodeURI(value) : value\r\n },\r\n _decodeString: function(value) {\r\n return isString(value) ? decodeURI(value) : value\r\n },\r\n updateDimensions: function() {\r\n var deferred = new Deferred;\r\n if (this._scrollableContainer) {\r\n this._scrollableContainer.update().done(() => {\r\n deferred.resolveWith(this)\r\n })\r\n } else {\r\n deferred.resolveWith(this)\r\n }\r\n return deferred.promise()\r\n },\r\n selectItem: function(itemElement) {\r\n return this._updateItemSelection(true, itemElement)\r\n },\r\n unselectItem: function(itemElement) {\r\n return this._updateItemSelection(false, itemElement)\r\n },\r\n expandItem: function(itemElement) {\r\n return this._toggleExpandedState(itemElement, true)\r\n },\r\n collapseItem: function(itemElement) {\r\n return this._toggleExpandedState(itemElement, false)\r\n },\r\n getNodes: function() {\r\n return this._dataAdapter.getTreeNodes()\r\n },\r\n getSelectedNodes: function() {\r\n return this.getSelectedNodeKeys().map(key => {\r\n var node = this._dataAdapter.getNodeByKey(key);\r\n return this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n getSelectedNodesKeys: function() {\r\n errors.log(\"W0002\", \"dxTreeView\", \"getSelectedNodesKeys\", \"20.1\", \"Use the 'getSelectedNodeKeys' method instead\");\r\n return this.getSelectedNodeKeys()\r\n },\r\n getSelectedNodeKeys: function() {\r\n return this._dataAdapter.getSelectedNodesKeys()\r\n },\r\n selectAll: function() {\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", true)\r\n } else {\r\n this._toggleSelectAll({\r\n value: true\r\n })\r\n }\r\n },\r\n unselectAll: function() {\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", false)\r\n } else {\r\n this._toggleSelectAll({\r\n value: false\r\n })\r\n }\r\n },\r\n expandAll: function() {\r\n var dataAdapter = this._dataAdapter;\r\n each(dataAdapter.getData(), (_, node) => dataAdapter.toggleExpansion(node.internalFields.key, true));\r\n this.repaint()\r\n },\r\n collapseAll: function() {\r\n each(this._dataAdapter.getExpandedNodesKeys(), function(_, key) {\r\n this._toggleExpandedState(key, false)\r\n }.bind(this))\r\n },\r\n scrollToItem: function(keyOrItemOrElement) {\r\n var node = this._getNode(keyOrItemOrElement);\r\n if (!node) {\r\n return (new Deferred).reject().promise()\r\n }\r\n var nodeKeysToExpand = [];\r\n var parentNode = node.internalFields.publicNode.parent;\r\n while (null != parentNode) {\r\n if (!parentNode.expanded) {\r\n nodeKeysToExpand.push(parentNode.key)\r\n }\r\n parentNode = parentNode.parent\r\n }\r\n var scrollCallback = new Deferred;\r\n this._expandNodes(nodeKeysToExpand.reverse()).always(() => {\r\n var $element = this._getNodeElement(node);\r\n if ($element && $element.length) {\r\n this._scrollableContainer.scrollToElementTopLeft($element);\r\n scrollCallback.resolve()\r\n } else {\r\n scrollCallback.reject()\r\n }\r\n });\r\n return scrollCallback.promise()\r\n },\r\n _expandNodes: function(keysToExpand) {\r\n if (!keysToExpand || 0 === keysToExpand.length) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n var resultCallback = new Deferred;\r\n var callbacksByNodes = keysToExpand.map(key => this.expandItem(key));\r\n when.apply($, callbacksByNodes).done(() => resultCallback.resolve()).fail(() => resultCallback.reject());\r\n return resultCallback.promise()\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._setFocusedItemTimeout)\r\n }\r\n});\r\nexport default TreeViewBase;\r\n","/**\r\n * DevExtreme (esm/ui/tree_view/ui.tree_view.search.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport searchBoxMixin from \"../widget/ui.search_box_mixin\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport TreeViewBase from \"./ui.tree_view.base\";\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CONTAINER_CLASS = \"\".concat(WIDGET_CLASS, \"-node-container\");\r\nvar TreeViewSearch = TreeViewBase.inherit(searchBoxMixin).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"\".concat(WIDGET_CLASS, \"-\").concat(className)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchValue\":\r\n if (this._showCheckboxes() && this._isRecursiveSelection()) {\r\n this._removeSelection()\r\n }\r\n this._initDataAdapter();\r\n this._updateSearch();\r\n this._repaintContainer();\r\n break;\r\n case \"searchExpr\":\r\n this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n case \"searchMode\":\r\n this.option(\"expandNodesRecursive\") ? this._updateDataAdapter() : this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _updateDataAdapter: function() {\r\n this._setOptionWithoutOptionChange(\"expandNodesRecursive\", false);\r\n this._initDataAdapter();\r\n this._setOptionWithoutOptionChange(\"expandNodesRecursive\", true)\r\n },\r\n _getDataAdapterOptions: function() {\r\n return extend(this.callBase(), {\r\n searchValue: this.option(\"searchValue\"),\r\n searchMode: this.option(\"searchMode\") || \"contains\",\r\n searchExpr: this.option(\"searchExpr\")\r\n })\r\n },\r\n _updateSearch: function() {\r\n if (this._searchEditor) {\r\n var editorOptions = this._getSearchEditorOptions();\r\n this._searchEditor.option(editorOptions)\r\n }\r\n },\r\n _repaintContainer: function() {\r\n var $container = this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n var rootNodes;\r\n if ($container.length) {\r\n $container.empty();\r\n rootNodes = this._dataAdapter.getRootNodes();\r\n this._renderEmptyMessage(rootNodes);\r\n this._renderItems($container, rootNodes);\r\n this._fireContentReadyAction()\r\n }\r\n },\r\n _itemContainer: function(isSearchMode) {\r\n if (this._scrollableContainer && isSearchMode) {\r\n return $(this._scrollableContainer.content())\r\n }\r\n return this.callBase()\r\n },\r\n _addWidgetClass: function() {\r\n this.$element().addClass(this._widgetClass())\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._removeSearchBox()\r\n }\r\n});\r\nregisterComponent(\"dxTreeView\", TreeViewSearch);\r\nexport default TreeViewSearch;\r\n","/**\r\n * DevExtreme (esm/ui/tree_view.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport TreeView from \"./tree_view/ui.tree_view.search\";\r\nexport default TreeView;\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.search_box_mixin.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport TextBox from \"../text_box\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default {\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n searchMode: \"\",\r\n searchExpr: null,\r\n searchValue: \"\",\r\n searchEnabled: false,\r\n searchEditorOptions: {}\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSearch();\r\n this.callBase()\r\n },\r\n _renderSearch: function() {\r\n var $element = this.$element();\r\n var searchEnabled = this.option(\"searchEnabled\");\r\n var searchBoxClassName = this._addWidgetPrefix(\"search\");\r\n var rootElementClassName = this._addWidgetPrefix(\"with-search\");\r\n if (!searchEnabled) {\r\n $element.removeClass(rootElementClassName);\r\n this._removeSearchBox();\r\n return\r\n }\r\n var editorOptions = this._getSearchEditorOptions();\r\n if (this._searchEditor) {\r\n this._searchEditor.option(editorOptions)\r\n } else {\r\n $element.addClass(rootElementClassName);\r\n this._$searchEditorElement = $(\"
    \").addClass(searchBoxClassName).prependTo($element);\r\n this._searchEditor = this._createComponent(this._$searchEditorElement, TextBox, editorOptions)\r\n }\r\n },\r\n _removeSearchBox: function() {\r\n this._$searchEditorElement && this._$searchEditorElement.remove();\r\n delete this._$searchEditorElement;\r\n delete this._searchEditor\r\n },\r\n _getSearchEditorOptions: function() {\r\n var that = this;\r\n var userEditorOptions = that.option(\"searchEditorOptions\");\r\n var searchText = messageLocalization.format(\"Search\");\r\n return extend({\r\n mode: \"search\",\r\n placeholder: searchText,\r\n tabIndex: that.option(\"tabIndex\"),\r\n value: that.option(\"searchValue\"),\r\n valueChangeEvent: \"input\",\r\n inputAttr: {\r\n \"aria-label\": searchText\r\n },\r\n onValueChanged: function(e) {\r\n var searchTimeout = that.option(\"searchTimeout\");\r\n that._valueChangeDeferred = new Deferred;\r\n clearTimeout(that._valueChangeTimeout);\r\n that._valueChangeDeferred.done(function() {\r\n this.option(\"searchValue\", e.value)\r\n }.bind(that));\r\n if (e.event && \"input\" === e.event.type && searchTimeout) {\r\n that._valueChangeTimeout = setTimeout((function() {\r\n that._valueChangeDeferred.resolve()\r\n }), searchTimeout)\r\n } else {\r\n that._valueChangeDeferred.resolve()\r\n }\r\n }\r\n }, userEditorOptions)\r\n },\r\n _getAriaTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.$element()\r\n },\r\n _focusTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.callBase()\r\n },\r\n _updateFocusState: function(e, isFocused) {\r\n if (this.option(\"searchEnabled\")) {\r\n this._toggleFocusClass(isFocused, this.$element())\r\n }\r\n this.callBase(e, isFocused)\r\n },\r\n getOperationBySearchMode: function(searchMode) {\r\n return \"equals\" === searchMode ? \"=\" : searchMode\r\n },\r\n _cleanAria: function($target) {\r\n this.setAria({\r\n role: null,\r\n activedescendant: null\r\n }, $target);\r\n $target.attr(\"tabIndex\", null)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchEnabled\":\r\n case \"searchEditorOptions\":\r\n this._cleanAria(this.option(\"searchEnabled\") ? this.$element() : this._itemContainer());\r\n this._invalidate();\r\n break;\r\n case \"searchExpr\":\r\n case \"searchMode\":\r\n case \"searchValue\":\r\n if (!this._dataSource) {\r\n errors.log(\"W1009\");\r\n return\r\n }\r\n if (\"searchMode\" === args.name) {\r\n this._dataSource.searchOperation(this.getOperationBySearchMode(args.value))\r\n } else {\r\n this._dataSource[args.name](args.value)\r\n }\r\n this._dataSource.load();\r\n break;\r\n case \"searchTimeout\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n focus: function() {\r\n if (!this.option(\"focusedElement\") && this.option(\"searchEnabled\")) {\r\n this._searchEditor && this._searchEditor.focus();\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _refresh: function() {\r\n if (this._valueChangeDeferred) {\r\n this._valueChangeDeferred.resolve()\r\n }\r\n this.callBase()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/default_messages.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var defaultMessages = {\r\n en: {\r\n Yes: \"Yes\",\r\n No: \"No\",\r\n Cancel: \"Cancel\",\r\n Clear: \"Clear\",\r\n Done: \"Done\",\r\n Loading: \"Loading...\",\r\n Select: \"Select...\",\r\n Search: \"Search\",\r\n Back: \"Back\",\r\n OK: \"OK\",\r\n \"dxCollectionWidget-noDataText\": \"No data to display\",\r\n \"dxDropDownEditor-selectLabel\": \"Select\",\r\n \"validation-required\": \"Required\",\r\n \"validation-required-formatted\": \"{0} is required\",\r\n \"validation-numeric\": \"Value must be a number\",\r\n \"validation-numeric-formatted\": \"{0} must be a number\",\r\n \"validation-range\": \"Value is out of range\",\r\n \"validation-range-formatted\": \"{0} is out of range\",\r\n \"validation-stringLength\": \"The length of the value is not correct\",\r\n \"validation-stringLength-formatted\": \"The length of {0} is not correct\",\r\n \"validation-custom\": \"Value is invalid\",\r\n \"validation-custom-formatted\": \"{0} is invalid\",\r\n \"validation-async\": \"Value is invalid\",\r\n \"validation-async-formatted\": \"{0} is invalid\",\r\n \"validation-compare\": \"Values do not match\",\r\n \"validation-compare-formatted\": \"{0} does not match\",\r\n \"validation-pattern\": \"Value does not match pattern\",\r\n \"validation-pattern-formatted\": \"{0} does not match pattern\",\r\n \"validation-email\": \"Email is invalid\",\r\n \"validation-email-formatted\": \"{0} is invalid\",\r\n \"validation-mask\": \"Value is invalid\",\r\n \"dxLookup-searchPlaceholder\": \"Minimum character number: {0}\",\r\n \"dxList-pullingDownText\": \"Pull down to refresh...\",\r\n \"dxList-pulledDownText\": \"Release to refresh...\",\r\n \"dxList-refreshingText\": \"Refreshing...\",\r\n \"dxList-pageLoadingText\": \"Loading...\",\r\n \"dxList-nextButtonText\": \"More\",\r\n \"dxList-selectAll\": \"Select All\",\r\n \"dxListEditDecorator-delete\": \"Delete\",\r\n \"dxListEditDecorator-more\": \"More\",\r\n \"dxScrollView-pullingDownText\": \"Pull down to refresh...\",\r\n \"dxScrollView-pulledDownText\": \"Release to refresh...\",\r\n \"dxScrollView-refreshingText\": \"Refreshing...\",\r\n \"dxScrollView-reachBottomText\": \"Loading...\",\r\n \"dxDateBox-simulatedDataPickerTitleTime\": \"Select time\",\r\n \"dxDateBox-simulatedDataPickerTitleDate\": \"Select date\",\r\n \"dxDateBox-simulatedDataPickerTitleDateTime\": \"Select date and time\",\r\n \"dxDateBox-validation-datetime\": \"Value must be a date or time\",\r\n \"dxFileUploader-selectFile\": \"Select file\",\r\n \"dxFileUploader-dropFile\": \"or Drop file here\",\r\n \"dxFileUploader-bytes\": \"bytes\",\r\n \"dxFileUploader-kb\": \"kb\",\r\n \"dxFileUploader-Mb\": \"Mb\",\r\n \"dxFileUploader-Gb\": \"Gb\",\r\n \"dxFileUploader-upload\": \"Upload\",\r\n \"dxFileUploader-uploaded\": \"Uploaded\",\r\n \"dxFileUploader-readyToUpload\": \"Ready to upload\",\r\n \"dxFileUploader-uploadAbortedMessage\": \"Upload cancelled\",\r\n \"dxFileUploader-uploadFailedMessage\": \"Upload failed\",\r\n \"dxFileUploader-invalidFileExtension\": \"File type is not allowed\",\r\n \"dxFileUploader-invalidMaxFileSize\": \"File is too large\",\r\n \"dxFileUploader-invalidMinFileSize\": \"File is too small\",\r\n \"dxRangeSlider-ariaFrom\": \"From\",\r\n \"dxRangeSlider-ariaTill\": \"Till\",\r\n \"dxSwitch-switchedOnText\": \"ON\",\r\n \"dxSwitch-switchedOffText\": \"OFF\",\r\n \"dxForm-optionalMark\": \"optional\",\r\n \"dxForm-requiredMessage\": \"{0} is required\",\r\n \"dxNumberBox-invalidValueMessage\": \"Value must be a number\",\r\n \"dxNumberBox-noDataText\": \"No data\",\r\n \"dxDataGrid-columnChooserTitle\": \"Column Chooser\",\r\n \"dxDataGrid-columnChooserEmptyText\": \"Drag a column here to hide it\",\r\n \"dxDataGrid-groupContinuesMessage\": \"Continues on the next page\",\r\n \"dxDataGrid-groupContinuedMessage\": \"Continued from the previous page\",\r\n \"dxDataGrid-groupHeaderText\": \"Group by This Column\",\r\n \"dxDataGrid-ungroupHeaderText\": \"Ungroup\",\r\n \"dxDataGrid-ungroupAllText\": \"Ungroup All\",\r\n \"dxDataGrid-editingEditRow\": \"Edit\",\r\n \"dxDataGrid-editingSaveRowChanges\": \"Save\",\r\n \"dxDataGrid-editingCancelRowChanges\": \"Cancel\",\r\n \"dxDataGrid-editingDeleteRow\": \"Delete\",\r\n \"dxDataGrid-editingUndeleteRow\": \"Undelete\",\r\n \"dxDataGrid-editingConfirmDeleteMessage\": \"Are you sure you want to delete this record?\",\r\n \"dxDataGrid-validationCancelChanges\": \"Cancel changes\",\r\n \"dxDataGrid-groupPanelEmptyText\": \"Drag a column header here to group by that column\",\r\n \"dxDataGrid-noDataText\": \"No data\",\r\n \"dxDataGrid-searchPanelPlaceholder\": \"Search...\",\r\n \"dxDataGrid-filterRowShowAllText\": \"(All)\",\r\n \"dxDataGrid-filterRowResetOperationText\": \"Reset\",\r\n \"dxDataGrid-filterRowOperationEquals\": \"Equals\",\r\n \"dxDataGrid-filterRowOperationNotEquals\": \"Does not equal\",\r\n \"dxDataGrid-filterRowOperationLess\": \"Less than\",\r\n \"dxDataGrid-filterRowOperationLessOrEquals\": \"Less than or equal to\",\r\n \"dxDataGrid-filterRowOperationGreater\": \"Greater than\",\r\n \"dxDataGrid-filterRowOperationGreaterOrEquals\": \"Greater than or equal to\",\r\n \"dxDataGrid-filterRowOperationStartsWith\": \"Starts with\",\r\n \"dxDataGrid-filterRowOperationContains\": \"Contains\",\r\n \"dxDataGrid-filterRowOperationNotContains\": \"Does not contain\",\r\n \"dxDataGrid-filterRowOperationEndsWith\": \"Ends with\",\r\n \"dxDataGrid-filterRowOperationBetween\": \"Between\",\r\n \"dxDataGrid-filterRowOperationBetweenStartText\": \"Start\",\r\n \"dxDataGrid-filterRowOperationBetweenEndText\": \"End\",\r\n \"dxDataGrid-applyFilterText\": \"Apply filter\",\r\n \"dxDataGrid-trueText\": \"true\",\r\n \"dxDataGrid-falseText\": \"false\",\r\n \"dxDataGrid-sortingAscendingText\": \"Sort Ascending\",\r\n \"dxDataGrid-sortingDescendingText\": \"Sort Descending\",\r\n \"dxDataGrid-sortingClearText\": \"Clear Sorting\",\r\n \"dxDataGrid-editingSaveAllChanges\": \"Save changes\",\r\n \"dxDataGrid-editingCancelAllChanges\": \"Discard changes\",\r\n \"dxDataGrid-editingAddRow\": \"Add a row\",\r\n \"dxDataGrid-summaryMin\": \"Min: {0}\",\r\n \"dxDataGrid-summaryMinOtherColumn\": \"Min of {1} is {0}\",\r\n \"dxDataGrid-summaryMax\": \"Max: {0}\",\r\n \"dxDataGrid-summaryMaxOtherColumn\": \"Max of {1} is {0}\",\r\n \"dxDataGrid-summaryAvg\": \"Avg: {0}\",\r\n \"dxDataGrid-summaryAvgOtherColumn\": \"Avg of {1} is {0}\",\r\n \"dxDataGrid-summarySum\": \"Sum: {0}\",\r\n \"dxDataGrid-summarySumOtherColumn\": \"Sum of {1} is {0}\",\r\n \"dxDataGrid-summaryCount\": \"Count: {0}\",\r\n \"dxDataGrid-columnFixingFix\": \"Fix\",\r\n \"dxDataGrid-columnFixingUnfix\": \"Unfix\",\r\n \"dxDataGrid-columnFixingLeftPosition\": \"To the left\",\r\n \"dxDataGrid-columnFixingRightPosition\": \"To the right\",\r\n \"dxDataGrid-exportTo\": \"Export\",\r\n \"dxDataGrid-exportToExcel\": \"Export to Excel file\",\r\n \"dxDataGrid-exporting\": \"Exporting...\",\r\n \"dxDataGrid-excelFormat\": \"Excel file\",\r\n \"dxDataGrid-selectedRows\": \"Selected rows\",\r\n \"dxDataGrid-exportSelectedRows\": \"Export selected rows\",\r\n \"dxDataGrid-exportAll\": \"Export all data\",\r\n \"dxDataGrid-headerFilterEmptyValue\": \"(Blanks)\",\r\n \"dxDataGrid-headerFilterOK\": \"OK\",\r\n \"dxDataGrid-headerFilterCancel\": \"Cancel\",\r\n \"dxDataGrid-ariaAdaptiveCollapse\": \"Hide additional data\",\r\n \"dxDataGrid-ariaAdaptiveExpand\": \"Display additional data\",\r\n \"dxDataGrid-ariaColumn\": \"Column\",\r\n \"dxDataGrid-ariaValue\": \"Value\",\r\n \"dxDataGrid-ariaFilterCell\": \"Filter cell\",\r\n \"dxDataGrid-ariaCollapse\": \"Collapse\",\r\n \"dxDataGrid-ariaExpand\": \"Expand\",\r\n \"dxDataGrid-ariaDataGrid\": \"Data grid\",\r\n \"dxDataGrid-ariaSearchInGrid\": \"Search in the data grid\",\r\n \"dxDataGrid-ariaSelectAll\": \"Select all\",\r\n \"dxDataGrid-ariaSelectRow\": \"Select row\",\r\n \"dxDataGrid-ariaToolbar\": \"Data grid toolbar\",\r\n \"dxDataGrid-filterBuilderPopupTitle\": \"Filter Builder\",\r\n \"dxDataGrid-filterPanelCreateFilter\": \"Create Filter\",\r\n \"dxDataGrid-filterPanelClearFilter\": \"Clear\",\r\n \"dxDataGrid-filterPanelFilterEnabledHint\": \"Enable the filter\",\r\n \"dxTreeList-ariaTreeList\": \"Tree list\",\r\n \"dxTreeList-ariaSearchInGrid\": \"Search in the tree list\",\r\n \"dxTreeList-ariaToolbar\": \"Tree list toolbar\",\r\n \"dxTreeList-editingAddRowToNode\": \"Add\",\r\n \"dxPager-infoText\": \"Page {0} of {1} ({2} items)\",\r\n \"dxPager-pagesCountText\": \"of\",\r\n \"dxPager-pageSizesAllText\": \"All\",\r\n \"dxPivotGrid-grandTotal\": \"Grand Total\",\r\n \"dxPivotGrid-total\": \"{0} Total\",\r\n \"dxPivotGrid-fieldChooserTitle\": \"Field Chooser\",\r\n \"dxPivotGrid-showFieldChooser\": \"Show Field Chooser\",\r\n \"dxPivotGrid-expandAll\": \"Expand All\",\r\n \"dxPivotGrid-collapseAll\": \"Collapse All\",\r\n \"dxPivotGrid-sortColumnBySummary\": 'Sort \"{0}\" by This Column',\r\n \"dxPivotGrid-sortRowBySummary\": 'Sort \"{0}\" by This Row',\r\n \"dxPivotGrid-removeAllSorting\": \"Remove All Sorting\",\r\n \"dxPivotGrid-dataNotAvailable\": \"N/A\",\r\n \"dxPivotGrid-rowFields\": \"Row Fields\",\r\n \"dxPivotGrid-columnFields\": \"Column Fields\",\r\n \"dxPivotGrid-dataFields\": \"Data Fields\",\r\n \"dxPivotGrid-filterFields\": \"Filter Fields\",\r\n \"dxPivotGrid-allFields\": \"All Fields\",\r\n \"dxPivotGrid-columnFieldArea\": \"Drop Column Fields Here\",\r\n \"dxPivotGrid-dataFieldArea\": \"Drop Data Fields Here\",\r\n \"dxPivotGrid-rowFieldArea\": \"Drop Row Fields Here\",\r\n \"dxPivotGrid-filterFieldArea\": \"Drop Filter Fields Here\",\r\n \"dxScheduler-editorLabelTitle\": \"Subject\",\r\n \"dxScheduler-editorLabelStartDate\": \"Start Date\",\r\n \"dxScheduler-editorLabelEndDate\": \"End Date\",\r\n \"dxScheduler-editorLabelDescription\": \"Description\",\r\n \"dxScheduler-editorLabelRecurrence\": \"Repeat\",\r\n \"dxScheduler-openAppointment\": \"Open appointment\",\r\n \"dxScheduler-recurrenceNever\": \"Never\",\r\n \"dxScheduler-recurrenceMinutely\": \"Every minute\",\r\n \"dxScheduler-recurrenceHourly\": \"Hourly\",\r\n \"dxScheduler-recurrenceDaily\": \"Daily\",\r\n \"dxScheduler-recurrenceWeekly\": \"Weekly\",\r\n \"dxScheduler-recurrenceMonthly\": \"Monthly\",\r\n \"dxScheduler-recurrenceYearly\": \"Yearly\",\r\n \"dxScheduler-recurrenceRepeatEvery\": \"Repeat Every\",\r\n \"dxScheduler-recurrenceRepeatOn\": \"Repeat On\",\r\n \"dxScheduler-recurrenceEnd\": \"End repeat\",\r\n \"dxScheduler-recurrenceAfter\": \"After\",\r\n \"dxScheduler-recurrenceOn\": \"On\",\r\n \"dxScheduler-recurrenceRepeatMinutely\": \"minute(s)\",\r\n \"dxScheduler-recurrenceRepeatHourly\": \"hour(s)\",\r\n \"dxScheduler-recurrenceRepeatDaily\": \"day(s)\",\r\n \"dxScheduler-recurrenceRepeatWeekly\": \"week(s)\",\r\n \"dxScheduler-recurrenceRepeatMonthly\": \"month(s)\",\r\n \"dxScheduler-recurrenceRepeatYearly\": \"year(s)\",\r\n \"dxScheduler-switcherDay\": \"Day\",\r\n \"dxScheduler-switcherWeek\": \"Week\",\r\n \"dxScheduler-switcherWorkWeek\": \"Work Week\",\r\n \"dxScheduler-switcherMonth\": \"Month\",\r\n \"dxScheduler-switcherAgenda\": \"Agenda\",\r\n \"dxScheduler-switcherTimelineDay\": \"Timeline Day\",\r\n \"dxScheduler-switcherTimelineWeek\": \"Timeline Week\",\r\n \"dxScheduler-switcherTimelineWorkWeek\": \"Timeline Work Week\",\r\n \"dxScheduler-switcherTimelineMonth\": \"Timeline Month\",\r\n \"dxScheduler-recurrenceRepeatOnDate\": \"on date\",\r\n \"dxScheduler-recurrenceRepeatCount\": \"occurrence(s)\",\r\n \"dxScheduler-allDay\": \"All day\",\r\n \"dxScheduler-confirmRecurrenceEditMessage\": \"Do you want to edit only this appointment or the whole series?\",\r\n \"dxScheduler-confirmRecurrenceDeleteMessage\": \"Do you want to delete only this appointment or the whole series?\",\r\n \"dxScheduler-confirmRecurrenceEditSeries\": \"Edit series\",\r\n \"dxScheduler-confirmRecurrenceDeleteSeries\": \"Delete series\",\r\n \"dxScheduler-confirmRecurrenceEditOccurrence\": \"Edit appointment\",\r\n \"dxScheduler-confirmRecurrenceDeleteOccurrence\": \"Delete appointment\",\r\n \"dxScheduler-noTimezoneTitle\": \"No timezone\",\r\n \"dxScheduler-moreAppointments\": \"{0} more\",\r\n \"dxCalendar-todayButtonText\": \"Today\",\r\n \"dxCalendar-ariaWidgetName\": \"Calendar\",\r\n \"dxColorView-ariaRed\": \"Red\",\r\n \"dxColorView-ariaGreen\": \"Green\",\r\n \"dxColorView-ariaBlue\": \"Blue\",\r\n \"dxColorView-ariaAlpha\": \"Transparency\",\r\n \"dxColorView-ariaHex\": \"Color code\",\r\n \"dxTagBox-selected\": \"{0} selected\",\r\n \"dxTagBox-allSelected\": \"All selected ({0})\",\r\n \"dxTagBox-moreSelected\": \"{0} more\",\r\n \"vizExport-printingButtonText\": \"Print\",\r\n \"vizExport-titleMenuText\": \"Exporting/Printing\",\r\n \"vizExport-exportButtonText\": \"{0} file\",\r\n \"dxFilterBuilder-and\": \"And\",\r\n \"dxFilterBuilder-or\": \"Or\",\r\n \"dxFilterBuilder-notAnd\": \"Not And\",\r\n \"dxFilterBuilder-notOr\": \"Not Or\",\r\n \"dxFilterBuilder-addCondition\": \"Add Condition\",\r\n \"dxFilterBuilder-addGroup\": \"Add Group\",\r\n \"dxFilterBuilder-enterValueText\": \"\",\r\n \"dxFilterBuilder-filterOperationEquals\": \"Equals\",\r\n \"dxFilterBuilder-filterOperationNotEquals\": \"Does not equal\",\r\n \"dxFilterBuilder-filterOperationLess\": \"Is less than\",\r\n \"dxFilterBuilder-filterOperationLessOrEquals\": \"Is less than or equal to\",\r\n \"dxFilterBuilder-filterOperationGreater\": \"Is greater than\",\r\n \"dxFilterBuilder-filterOperationGreaterOrEquals\": \"Is greater than or equal to\",\r\n \"dxFilterBuilder-filterOperationStartsWith\": \"Starts with\",\r\n \"dxFilterBuilder-filterOperationContains\": \"Contains\",\r\n \"dxFilterBuilder-filterOperationNotContains\": \"Does not contain\",\r\n \"dxFilterBuilder-filterOperationEndsWith\": \"Ends with\",\r\n \"dxFilterBuilder-filterOperationIsBlank\": \"Is blank\",\r\n \"dxFilterBuilder-filterOperationIsNotBlank\": \"Is not blank\",\r\n \"dxFilterBuilder-filterOperationBetween\": \"Is between\",\r\n \"dxFilterBuilder-filterOperationAnyOf\": \"Is any of\",\r\n \"dxFilterBuilder-filterOperationNoneOf\": \"Is none of\",\r\n \"dxHtmlEditor-dialogColorCaption\": \"Change Font Color\",\r\n \"dxHtmlEditor-dialogBackgroundCaption\": \"Change Background Color\",\r\n \"dxHtmlEditor-dialogLinkCaption\": \"Add Link\",\r\n \"dxHtmlEditor-dialogLinkUrlField\": \"URL\",\r\n \"dxHtmlEditor-dialogLinkTextField\": \"Text\",\r\n \"dxHtmlEditor-dialogLinkTargetField\": \"Open link in new window\",\r\n \"dxHtmlEditor-dialogImageCaption\": \"Add Image\",\r\n \"dxHtmlEditor-dialogImageUrlField\": \"URL\",\r\n \"dxHtmlEditor-dialogImageAltField\": \"Alternate text\",\r\n \"dxHtmlEditor-dialogImageWidthField\": \"Width (px)\",\r\n \"dxHtmlEditor-dialogImageHeightField\": \"Height (px)\",\r\n \"dxHtmlEditor-dialogInsertTableRowsField\": \"Rows\",\r\n \"dxHtmlEditor-dialogInsertTableColumnsField\": \"Columns\",\r\n \"dxHtmlEditor-dialogInsertTableCaption\": \"Insert Table\",\r\n \"dxHtmlEditor-heading\": \"Heading\",\r\n \"dxHtmlEditor-normalText\": \"Normal text\",\r\n \"dxHtmlEditor-background\": \"Background Color\",\r\n \"dxHtmlEditor-bold\": \"Bold\",\r\n \"dxHtmlEditor-color\": \"Font Color\",\r\n \"dxHtmlEditor-font\": \"Font\",\r\n \"dxHtmlEditor-italic\": \"Italic\",\r\n \"dxHtmlEditor-link\": \"Add Link\",\r\n \"dxHtmlEditor-image\": \"Add Image\",\r\n \"dxHtmlEditor-size\": \"Size\",\r\n \"dxHtmlEditor-strike\": \"Strikethrough\",\r\n \"dxHtmlEditor-subscript\": \"Subscript\",\r\n \"dxHtmlEditor-superscript\": \"Superscript\",\r\n \"dxHtmlEditor-underline\": \"Underline\",\r\n \"dxHtmlEditor-blockquote\": \"Blockquote\",\r\n \"dxHtmlEditor-header\": \"Header\",\r\n \"dxHtmlEditor-increaseIndent\": \"Increase Indent\",\r\n \"dxHtmlEditor-decreaseIndent\": \"Decrease Indent\",\r\n \"dxHtmlEditor-orderedList\": \"Ordered List\",\r\n \"dxHtmlEditor-bulletList\": \"Bullet List\",\r\n \"dxHtmlEditor-alignLeft\": \"Align Left\",\r\n \"dxHtmlEditor-alignCenter\": \"Align Center\",\r\n \"dxHtmlEditor-alignRight\": \"Align Right\",\r\n \"dxHtmlEditor-alignJustify\": \"Align Justify\",\r\n \"dxHtmlEditor-codeBlock\": \"Code Block\",\r\n \"dxHtmlEditor-variable\": \"Add Variable\",\r\n \"dxHtmlEditor-undo\": \"Undo\",\r\n \"dxHtmlEditor-redo\": \"Redo\",\r\n \"dxHtmlEditor-clear\": \"Clear Formatting\",\r\n \"dxHtmlEditor-insertTable\": \"Insert Table\",\r\n \"dxHtmlEditor-insertRowAbove\": \"Insert Row Above\",\r\n \"dxHtmlEditor-insertRowBelow\": \"Insert Row Below\",\r\n \"dxHtmlEditor-insertColumnLeft\": \"Insert Column Left\",\r\n \"dxHtmlEditor-insertColumnRight\": \"Insert Column Right\",\r\n \"dxHtmlEditor-deleteColumn\": \"Delete Column\",\r\n \"dxHtmlEditor-deleteRow\": \"Delete Row\",\r\n \"dxHtmlEditor-deleteTable\": \"Delete Table\",\r\n \"dxHtmlEditor-list\": \"List\",\r\n \"dxHtmlEditor-ordered\": \"Ordered\",\r\n \"dxHtmlEditor-bullet\": \"Bullet\",\r\n \"dxHtmlEditor-align\": \"Align\",\r\n \"dxHtmlEditor-center\": \"Center\",\r\n \"dxHtmlEditor-left\": \"Left\",\r\n \"dxHtmlEditor-right\": \"Right\",\r\n \"dxHtmlEditor-indent\": \"Indent\",\r\n \"dxHtmlEditor-justify\": \"Justify\",\r\n \"dxFileManager-newDirectoryName\": \"Untitled directory\",\r\n \"dxFileManager-rootDirectoryName\": \"Files\",\r\n \"dxFileManager-errorNoAccess\": \"Access Denied. Operation could not be completed.\",\r\n \"dxFileManager-errorDirectoryExistsFormat\": \"Directory '{0}' already exists.\",\r\n \"dxFileManager-errorFileExistsFormat\": \"File '{0}' already exists.\",\r\n \"dxFileManager-errorFileNotFoundFormat\": \"File '{0}' not found.\",\r\n \"dxFileManager-errorDirectoryNotFoundFormat\": \"Directory '{0}' not found.\",\r\n \"dxFileManager-errorWrongFileExtension\": \"File extension is not allowed.\",\r\n \"dxFileManager-errorMaxFileSizeExceeded\": \"File size exceeds the maximum allowed size.\",\r\n \"dxFileManager-errorInvalidSymbols\": \"This name contains invalid characters.\",\r\n \"dxFileManager-errorDefault\": \"Unspecified error.\",\r\n \"dxFileManager-errorDirectoryOpenFailed\": \"The directory cannot be opened\",\r\n \"dxFileManager-commandCreate\": \"New directory\",\r\n \"dxFileManager-commandRename\": \"Rename\",\r\n \"dxFileManager-commandMove\": \"Move to\",\r\n \"dxFileManager-commandCopy\": \"Copy to\",\r\n \"dxFileManager-commandDelete\": \"Delete\",\r\n \"dxFileManager-commandDownload\": \"Download\",\r\n \"dxFileManager-commandUpload\": \"Upload files\",\r\n \"dxFileManager-commandRefresh\": \"Refresh\",\r\n \"dxFileManager-commandThumbnails\": \"Thumbnails View\",\r\n \"dxFileManager-commandDetails\": \"Details View\",\r\n \"dxFileManager-commandClearSelection\": \"Clear selection\",\r\n \"dxFileManager-commandShowNavPane\": \"Toggle navigation pane\",\r\n \"dxFileManager-dialogDirectoryChooserMoveTitle\": \"Move to\",\r\n \"dxFileManager-dialogDirectoryChooserMoveButtonText\": \"Move\",\r\n \"dxFileManager-dialogDirectoryChooserCopyTitle\": \"Copy to\",\r\n \"dxFileManager-dialogDirectoryChooserCopyButtonText\": \"Copy\",\r\n \"dxFileManager-dialogRenameItemTitle\": \"Rename\",\r\n \"dxFileManager-dialogRenameItemButtonText\": \"Save\",\r\n \"dxFileManager-dialogCreateDirectoryTitle\": \"New directory\",\r\n \"dxFileManager-dialogCreateDirectoryButtonText\": \"Create\",\r\n \"dxFileManager-dialogDeleteItemTitle\": \"Delete\",\r\n \"dxFileManager-dialogDeleteItemButtonText\": \"Delete\",\r\n \"dxFileManager-dialogDeleteItemSingleItemConfirmation\": \"Are you sure you want to delete {0}?\",\r\n \"dxFileManager-dialogDeleteItemMultipleItemsConfirmation\": \"Are you sure you want to delete {0} items?\",\r\n \"dxFileManager-dialogButtonCancel\": \"Cancel\",\r\n \"dxFileManager-editingCreateSingleItemProcessingMessage\": \"Creating a directory inside {0}\",\r\n \"dxFileManager-editingCreateSingleItemSuccessMessage\": \"Created a directory inside {0}\",\r\n \"dxFileManager-editingCreateSingleItemErrorMessage\": \"Directory was not created\",\r\n \"dxFileManager-editingCreateCommonErrorMessage\": \"Directory was not created\",\r\n \"dxFileManager-editingRenameSingleItemProcessingMessage\": \"Renaming an item inside {0}\",\r\n \"dxFileManager-editingRenameSingleItemSuccessMessage\": \"Renamed an item inside {0}\",\r\n \"dxFileManager-editingRenameSingleItemErrorMessage\": \"Item was not renamed\",\r\n \"dxFileManager-editingRenameCommonErrorMessage\": \"Item was not renamed\",\r\n \"dxFileManager-editingDeleteSingleItemProcessingMessage\": \"Deleting an item from {0}\",\r\n \"dxFileManager-editingDeleteMultipleItemsProcessingMessage\": \"Deleting {0} items from {1}\",\r\n \"dxFileManager-editingDeleteSingleItemSuccessMessage\": \"Deleted an item from {0}\",\r\n \"dxFileManager-editingDeleteMultipleItemsSuccessMessage\": \"Deleted {0} items from {1}\",\r\n \"dxFileManager-editingDeleteSingleItemErrorMessage\": \"Item was not deleted\",\r\n \"dxFileManager-editingDeleteMultipleItemsErrorMessage\": \"{0} items were not deleted\",\r\n \"dxFileManager-editingDeleteCommonErrorMessage\": \"Some items were not deleted\",\r\n \"dxFileManager-editingMoveSingleItemProcessingMessage\": \"Moving an item to {0}\",\r\n \"dxFileManager-editingMoveMultipleItemsProcessingMessage\": \"Moving {0} items to {1}\",\r\n \"dxFileManager-editingMoveSingleItemSuccessMessage\": \"Moved an item to {0}\",\r\n \"dxFileManager-editingMoveMultipleItemsSuccessMessage\": \"Moved {0} items to {1}\",\r\n \"dxFileManager-editingMoveSingleItemErrorMessage\": \"Item was not moved\",\r\n \"dxFileManager-editingMoveMultipleItemsErrorMessage\": \"{0} items were not moved\",\r\n \"dxFileManager-editingMoveCommonErrorMessage\": \"Some items were not moved\",\r\n \"dxFileManager-editingCopySingleItemProcessingMessage\": \"Copying an item to {0}\",\r\n \"dxFileManager-editingCopyMultipleItemsProcessingMessage\": \"Copying {0} items to {1}\",\r\n \"dxFileManager-editingCopySingleItemSuccessMessage\": \"Copied an item to {0}\",\r\n \"dxFileManager-editingCopyMultipleItemsSuccessMessage\": \"Copied {0} items to {1}\",\r\n \"dxFileManager-editingCopySingleItemErrorMessage\": \"Item was not copied\",\r\n \"dxFileManager-editingCopyMultipleItemsErrorMessage\": \"{0} items were not copied\",\r\n \"dxFileManager-editingCopyCommonErrorMessage\": \"Some items were not copied\",\r\n \"dxFileManager-editingUploadSingleItemProcessingMessage\": \"Uploading an item to {0}\",\r\n \"dxFileManager-editingUploadMultipleItemsProcessingMessage\": \"Uploading {0} items to {1}\",\r\n \"dxFileManager-editingUploadSingleItemSuccessMessage\": \"Uploaded an item to {0}\",\r\n \"dxFileManager-editingUploadMultipleItemsSuccessMessage\": \"Uploaded {0} items to {1}\",\r\n \"dxFileManager-editingUploadSingleItemErrorMessage\": \"Item was not uploaded\",\r\n \"dxFileManager-editingUploadMultipleItemsErrorMessage\": \"{0} items were not uploaded\",\r\n \"dxFileManager-editingUploadCanceledMessage\": \"Canceled\",\r\n \"dxFileManager-listDetailsColumnCaptionName\": \"Name\",\r\n \"dxFileManager-listDetailsColumnCaptionDateModified\": \"Date Modified\",\r\n \"dxFileManager-listDetailsColumnCaptionFileSize\": \"File Size\",\r\n \"dxFileManager-listThumbnailsTooltipTextSize\": \"Size\",\r\n \"dxFileManager-listThumbnailsTooltipTextDateModified\": \"Date Modified\",\r\n \"dxFileManager-notificationProgressPanelTitle\": \"Progress\",\r\n \"dxFileManager-notificationProgressPanelEmptyListText\": \"No operations\",\r\n \"dxFileManager-notificationProgressPanelOperationCanceled\": \"Canceled\",\r\n \"dxDiagram-categoryGeneral\": \"General\",\r\n \"dxDiagram-categoryFlowchart\": \"Flowchart\",\r\n \"dxDiagram-categoryOrgChart\": \"Org Chart\",\r\n \"dxDiagram-categoryContainers\": \"Containers\",\r\n \"dxDiagram-categoryCustom\": \"Custom\",\r\n \"dxDiagram-commandExportToSvg\": \"Export to SVG\",\r\n \"dxDiagram-commandExportToPng\": \"Export to PNG\",\r\n \"dxDiagram-commandExportToJpg\": \"Export to JPEG\",\r\n \"dxDiagram-commandUndo\": \"Undo\",\r\n \"dxDiagram-commandRedo\": \"Redo\",\r\n \"dxDiagram-commandFontName\": \"Font Name\",\r\n \"dxDiagram-commandFontSize\": \"Font Size\",\r\n \"dxDiagram-commandBold\": \"Bold\",\r\n \"dxDiagram-commandItalic\": \"Italic\",\r\n \"dxDiagram-commandUnderline\": \"Underline\",\r\n \"dxDiagram-commandTextColor\": \"Font Color\",\r\n \"dxDiagram-commandLineColor\": \"Line Color\",\r\n \"dxDiagram-commandLineWidth\": \"Line Width\",\r\n \"dxDiagram-commandLineStyle\": \"Line Style\",\r\n \"dxDiagram-commandLineStyleSolid\": \"Solid\",\r\n \"dxDiagram-commandLineStyleDotted\": \"Dotted\",\r\n \"dxDiagram-commandLineStyleDashed\": \"Dashed\",\r\n \"dxDiagram-commandFillColor\": \"Fill Color\",\r\n \"dxDiagram-commandAlignLeft\": \"Align Left\",\r\n \"dxDiagram-commandAlignCenter\": \"Align Center\",\r\n \"dxDiagram-commandAlignRight\": \"Align Right\",\r\n \"dxDiagram-commandConnectorLineType\": \"Connector Line Type\",\r\n \"dxDiagram-commandConnectorLineStraight\": \"Straight\",\r\n \"dxDiagram-commandConnectorLineOrthogonal\": \"Orthogonal\",\r\n \"dxDiagram-commandConnectorLineStart\": \"Connector Line Start\",\r\n \"dxDiagram-commandConnectorLineEnd\": \"Connector Line End\",\r\n \"dxDiagram-commandConnectorLineNone\": \"None\",\r\n \"dxDiagram-commandConnectorLineArrow\": \"Arrow\",\r\n \"dxDiagram-commandFullscreen\": \"Full Screen\",\r\n \"dxDiagram-commandUnits\": \"Units\",\r\n \"dxDiagram-commandPageSize\": \"Page Size\",\r\n \"dxDiagram-commandPageOrientation\": \"Page Orientation\",\r\n \"dxDiagram-commandPageOrientationLandscape\": \"Landscape\",\r\n \"dxDiagram-commandPageOrientationPortrait\": \"Portrait\",\r\n \"dxDiagram-commandPageColor\": \"Page Color\",\r\n \"dxDiagram-commandShowGrid\": \"Show Grid\",\r\n \"dxDiagram-commandSnapToGrid\": \"Snap to Grid\",\r\n \"dxDiagram-commandGridSize\": \"Grid Size\",\r\n \"dxDiagram-commandZoomLevel\": \"Zoom Level\",\r\n \"dxDiagram-commandAutoZoom\": \"Auto Zoom\",\r\n \"dxDiagram-commandFitToContent\": \"Fit to Content\",\r\n \"dxDiagram-commandFitToWidth\": \"Fit to Width\",\r\n \"dxDiagram-commandAutoZoomByContent\": \"Auto Zoom by Content\",\r\n \"dxDiagram-commandAutoZoomByWidth\": \"Auto Zoom by Width\",\r\n \"dxDiagram-commandSimpleView\": \"Simple View\",\r\n \"dxDiagram-commandCut\": \"Cut\",\r\n \"dxDiagram-commandCopy\": \"Copy\",\r\n \"dxDiagram-commandPaste\": \"Paste\",\r\n \"dxDiagram-commandSelectAll\": \"Select All\",\r\n \"dxDiagram-commandDelete\": \"Delete\",\r\n \"dxDiagram-commandBringToFront\": \"Bring to Front\",\r\n \"dxDiagram-commandSendToBack\": \"Send to Back\",\r\n \"dxDiagram-commandLock\": \"Lock\",\r\n \"dxDiagram-commandUnlock\": \"Unlock\",\r\n \"dxDiagram-commandInsertShapeImage\": \"Insert Image...\",\r\n \"dxDiagram-commandEditShapeImage\": \"Change Image...\",\r\n \"dxDiagram-commandDeleteShapeImage\": \"Delete Image\",\r\n \"dxDiagram-commandLayoutLeftToRight\": \"Left-to-right\",\r\n \"dxDiagram-commandLayoutRightToLeft\": \"Right-to-left\",\r\n \"dxDiagram-commandLayoutTopToBottom\": \"Top-to-bottom\",\r\n \"dxDiagram-commandLayoutBottomToTop\": \"Bottom-to-top\",\r\n \"dxDiagram-unitIn\": \"in\",\r\n \"dxDiagram-unitCm\": \"cm\",\r\n \"dxDiagram-unitPx\": \"px\",\r\n \"dxDiagram-dialogButtonOK\": \"OK\",\r\n \"dxDiagram-dialogButtonCancel\": \"Cancel\",\r\n \"dxDiagram-dialogInsertShapeImageTitle\": \"Insert Image\",\r\n \"dxDiagram-dialogEditShapeImageTitle\": \"Change Image\",\r\n \"dxDiagram-dialogEditShapeImageSelectButton\": \"Select image\",\r\n \"dxDiagram-dialogEditShapeImageLabelText\": \"or drop file here\",\r\n \"dxDiagram-uiExport\": \"Export\",\r\n \"dxDiagram-uiProperties\": \"Properties\",\r\n \"dxDiagram-uiSettings\": \"Settings\",\r\n \"dxDiagram-uiShowToolbox\": \"Show Toolbox\",\r\n \"dxDiagram-uiSearch\": \"Search\",\r\n \"dxDiagram-uiStyle\": \"Style\",\r\n \"dxDiagram-uiLayout\": \"Layout\",\r\n \"dxDiagram-uiLayoutTree\": \"Tree\",\r\n \"dxDiagram-uiLayoutLayered\": \"Layered\",\r\n \"dxDiagram-uiDiagram\": \"Diagram\",\r\n \"dxDiagram-uiText\": \"Text\",\r\n \"dxDiagram-uiObject\": \"Object\",\r\n \"dxDiagram-uiConnector\": \"Connector\",\r\n \"dxDiagram-uiPage\": \"Page\",\r\n \"dxDiagram-shapeText\": \"Text\",\r\n \"dxDiagram-shapeRectangle\": \"Rectangle\",\r\n \"dxDiagram-shapeEllipse\": \"Ellipse\",\r\n \"dxDiagram-shapeCross\": \"Cross\",\r\n \"dxDiagram-shapeTriangle\": \"Triangle\",\r\n \"dxDiagram-shapeDiamond\": \"Diamond\",\r\n \"dxDiagram-shapeHeart\": \"Heart\",\r\n \"dxDiagram-shapePentagon\": \"Pentagon\",\r\n \"dxDiagram-shapeHexagon\": \"Hexagon\",\r\n \"dxDiagram-shapeOctagon\": \"Octagon\",\r\n \"dxDiagram-shapeStar\": \"Star\",\r\n \"dxDiagram-shapeArrowLeft\": \"Left Arrow\",\r\n \"dxDiagram-shapeArrowUp\": \"Up Arrow\",\r\n \"dxDiagram-shapeArrowRight\": \"Right Arrow\",\r\n \"dxDiagram-shapeArrowDown\": \"Down Arrow\",\r\n \"dxDiagram-shapeArrowUpDown\": \"Up Down Arrow\",\r\n \"dxDiagram-shapeArrowLeftRight\": \"Left Right Arrow\",\r\n \"dxDiagram-shapeProcess\": \"Process\",\r\n \"dxDiagram-shapeDecision\": \"Decision\",\r\n \"dxDiagram-shapeTerminator\": \"Terminator\",\r\n \"dxDiagram-shapePredefinedProcess\": \"Predefined Process\",\r\n \"dxDiagram-shapeDocument\": \"Document\",\r\n \"dxDiagram-shapeMultipleDocuments\": \"Multiple Documents\",\r\n \"dxDiagram-shapeManualInput\": \"Manual Input\",\r\n \"dxDiagram-shapePreparation\": \"Preparation\",\r\n \"dxDiagram-shapeData\": \"Data\",\r\n \"dxDiagram-shapeDatabase\": \"Database\",\r\n \"dxDiagram-shapeHardDisk\": \"Hard Disk\",\r\n \"dxDiagram-shapeInternalStorage\": \"Internal Storage\",\r\n \"dxDiagram-shapePaperTape\": \"Paper Tape\",\r\n \"dxDiagram-shapeManualOperation\": \"Manual Operation\",\r\n \"dxDiagram-shapeDelay\": \"Delay\",\r\n \"dxDiagram-shapeStoredData\": \"Stored Data\",\r\n \"dxDiagram-shapeDisplay\": \"Display\",\r\n \"dxDiagram-shapeMerge\": \"Merge\",\r\n \"dxDiagram-shapeConnector\": \"Connector\",\r\n \"dxDiagram-shapeOr\": \"Or\",\r\n \"dxDiagram-shapeSummingJunction\": \"Summing Junction\",\r\n \"dxDiagram-shapeContainerDefaultText\": \"Container\",\r\n \"dxDiagram-shapeVerticalContainer\": \"Vertical Container\",\r\n \"dxDiagram-shapeHorizontalContainer\": \"Horizontal Container\",\r\n \"dxDiagram-shapeCardDefaultText\": \"Person's Name\",\r\n \"dxDiagram-shapeCardWithImageOnLeft\": \"Card with Image on the Left\",\r\n \"dxDiagram-shapeCardWithImageOnTop\": \"Card with Image on the Top\",\r\n \"dxDiagram-shapeCardWithImageOnRight\": \"Card with Image on the Right\",\r\n \"dxGantt-dialogTitle\": \"Title\",\r\n \"dxGantt-dialogStartTitle\": \"Start\",\r\n \"dxGantt-dialogEndTitle\": \"End\",\r\n \"dxGantt-dialogProgressTitle\": \"Progress\",\r\n \"dxGantt-dialogResourcesTitle\": \"Resources\",\r\n \"dxGantt-dialogResourceManagerTitle\": \"Resource Manager\",\r\n \"dxGantt-dialogTaskDetailsTitle\": \"Task Details\",\r\n \"dxGantt-dialogEditResourceListHint\": \"Edit Resource List\",\r\n \"dxGantt-dialogEditNoResources\": \"No resources\",\r\n \"dxGantt-dialogButtonAdd\": \"Add\",\r\n \"dxGantt-contextMenuNewTask\": \"New Task\",\r\n \"dxGantt-contextMenuNewSubtask\": \"New Subtask\",\r\n \"dxGantt-contextMenuDeleteTask\": \"Delete Task\",\r\n \"dxGantt-contextMenuDeleteDependency\": \"Delete Dependency\",\r\n \"dxGantt-dialogTaskDeleteConfirmation\": \"Deleting a task also deletes all its dependencies and subtasks. Are you sure you want to delete this task?\",\r\n \"dxGantt-dialogDependencyDeleteConfirmation\": \"Are you sure you want to delete the dependency from the task?\",\r\n \"dxGantt-dialogResourcesDeleteConfirmation\": \"Deleting a resource also deletes it from tasks to which this resource is assigned. Are you sure you want to delete these resources? Resources: {0}\",\r\n \"dxGantt-dialogConstraintCriticalViolationMessage\": \"The task you are attempting to move is linked to a second task by a dependency relation. This change would conflict with dependency rules. How would you like to proceed?\",\r\n \"dxGantt-dialogConstraintViolationMessage\": \"The task you are attempting to move is linked to a second task by a dependency relation. How would you like to proceed?\",\r\n \"dxGantt-dialogCancelOperationMessage\": \"Cancel the operation\",\r\n \"dxGantt-dialogDeleteDependencyMessage\": \"Delete the dependency\",\r\n \"dxGantt-dialogMoveTaskAndKeepDependencyMessage\": \"Move the task and keep the dependency\",\r\n \"dxGantt-undo\": \"Undo\",\r\n \"dxGantt-redo\": \"Redo\",\r\n \"dxGantt-expandAll\": \"Expand All\",\r\n \"dxGantt-collapseAll\": \"Collapse All\",\r\n \"dxGantt-addNewTask\": \"Add New Task\",\r\n \"dxGantt-deleteSelectedTask\": \"Delete Selected Task\",\r\n \"dxGantt-zoomIn\": \"Zoom In\",\r\n \"dxGantt-zoomOut\": \"Zoom Out\",\r\n \"dxGantt-fullScreen\": \"Full Screen\",\r\n \"dxGantt-quarter\": \"Q{0}\"\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/message.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n format as stringFormat\r\n} from \"../core/utils/string\";\r\nimport {\r\n humanize\r\n} from \"../core/utils/inflector\";\r\nimport coreLocalization from \"./core\";\r\nimport {\r\n defaultMessages\r\n} from \"./default_messages\";\r\nvar baseDictionary = extend(true, {}, defaultMessages);\r\nvar getDataByLocale = (localeData, locale) => localeData[locale] || {};\r\nvar newMessages = {};\r\nvar messageLocalization = dependencyInjector({\r\n engine: function() {\r\n return \"base\"\r\n },\r\n _dictionary: baseDictionary,\r\n load: function(messages) {\r\n extend(true, this._dictionary, messages)\r\n },\r\n _localizablePrefix: \"@\",\r\n setup: function(localizablePrefix) {\r\n this._localizablePrefix = localizablePrefix\r\n },\r\n localizeString: function(text) {\r\n var that = this;\r\n var regex = new RegExp(\"(^|[^a-zA-Z_0-9\" + that._localizablePrefix + \"-]+)(\" + that._localizablePrefix + \"{1,2})([a-zA-Z_0-9-]+)\", \"g\");\r\n var escapeString = that._localizablePrefix + that._localizablePrefix;\r\n return text.replace(regex, (str, prefix, escape, localizationKey) => {\r\n var defaultResult = that._localizablePrefix + localizationKey;\r\n var result;\r\n if (escape !== escapeString) {\r\n result = that.format(localizationKey)\r\n }\r\n if (!result) {\r\n newMessages[localizationKey] = humanize(localizationKey)\r\n }\r\n return prefix + (result || defaultResult)\r\n })\r\n },\r\n localizeNode: function(node) {\r\n var that = this;\r\n $(node).each((index, nodeItem) => {\r\n if (!nodeItem.nodeType) {\r\n return\r\n }\r\n if (3 === nodeItem.nodeType) {\r\n nodeItem.nodeValue = that.localizeString(nodeItem.nodeValue)\r\n } else if (!$(nodeItem).is(\"iframe\")) {\r\n each(nodeItem.attributes || [], (index, attr) => {\r\n if (\"string\" === typeof attr.value) {\r\n var localizedValue = that.localizeString(attr.value);\r\n if (attr.value !== localizedValue) {\r\n attr.value = localizedValue\r\n }\r\n }\r\n });\r\n $(nodeItem).contents().each((index, node) => {\r\n that.localizeNode(node)\r\n })\r\n }\r\n })\r\n },\r\n getMessagesByLocales: function() {\r\n return this._dictionary\r\n },\r\n getDictionary: function(onlyNew) {\r\n if (onlyNew) {\r\n return newMessages\r\n }\r\n return extend({}, newMessages, this.getMessagesByLocales()[coreLocalization.locale()])\r\n },\r\n getFormatter: function(key) {\r\n return this._getFormatterBase(key) || this._getFormatterBase(key, \"en\")\r\n },\r\n _getFormatterBase: function(key, locale) {\r\n var message = coreLocalization.getValueByClosestLocale(locale => getDataByLocale(this._dictionary, locale)[key]);\r\n if (message) {\r\n return function() {\r\n var args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0);\r\n args.unshift(message);\r\n return stringFormat.apply(this, args)\r\n }\r\n }\r\n },\r\n format: function(key) {\r\n var formatter = this.getFormatter(key);\r\n var values = Array.prototype.slice.call(arguments, 1);\r\n return formatter && formatter.apply(this, values) || \"\"\r\n }\r\n});\r\nexport default messageLocalization;\r\n","/**\r\n * DevExtreme (esm/core/guid.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"./class\";\r\nvar Guid = Class.inherit({\r\n ctor: function(value) {\r\n if (value) {\r\n value = String(value)\r\n }\r\n this._value = this._normalize(value || this._generate())\r\n },\r\n _normalize: function(value) {\r\n value = value.replace(/[^a-f0-9]/gi, \"\").toLowerCase();\r\n while (value.length < 32) {\r\n value += \"0\"\r\n }\r\n return [value.substr(0, 8), value.substr(8, 4), value.substr(12, 4), value.substr(16, 4), value.substr(20, 12)].join(\"-\")\r\n },\r\n _generate: function() {\r\n var value = \"\";\r\n for (var i = 0; i < 32; i++) {\r\n value += Math.round(15 * Math.random()).toString(16)\r\n }\r\n return value\r\n },\r\n toString: function() {\r\n return this._value\r\n },\r\n valueOf: function() {\r\n return this._value\r\n },\r\n toJSON: function() {\r\n return this._value\r\n }\r\n});\r\nexport default Guid;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.simulated.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n titleize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n resetPosition,\r\n move,\r\n locate\r\n} from \"../../animation/translator\";\r\nimport Class from \"../../core/class\";\r\nimport Animator from \"./animator\";\r\nimport {\r\n isDxMouseWheelEvent,\r\n addNamespace as addEventNamespace,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferUpdate,\r\n deferUpdater,\r\n deferRender,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLABLE_SIMULATED = \"dxSimulatedScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_SIMULATED_CURSOR = SCROLLABLE_SIMULATED + \"Cursor\";\r\nvar SCROLLABLE_SIMULATED_KEYBOARD = SCROLLABLE_SIMULATED + \"Keyboard\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar ACCELERATION = .92;\r\nvar OUT_BOUNDS_ACCELERATION = .5;\r\nvar MIN_VELOCITY_LIMIT = 1;\r\nvar FRAME_DURATION = Math.round(1e3 / 60);\r\nvar SCROLL_LINE_HEIGHT = 40;\r\nvar VALIDATE_WHEEL_TIMEOUT = 500;\r\nvar BOUNCE_MIN_VELOCITY_LIMIT = MIN_VELOCITY_LIMIT / 5;\r\nvar BOUNCE_DURATION = 400;\r\nvar BOUNCE_FRAMES = BOUNCE_DURATION / FRAME_DURATION;\r\nvar BOUNCE_ACCELERATION_SUM = (1 - Math.pow(ACCELERATION, BOUNCE_FRAMES)) / (1 - ACCELERATION);\r\nvar KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\",\r\n TAB: \"tab\"\r\n};\r\nvar InertiaAnimator = Animator.inherit({\r\n ctor: function(scroller) {\r\n this.callBase();\r\n this.scroller = scroller\r\n },\r\n VELOCITY_LIMIT: MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT\r\n },\r\n _step: function() {\r\n this.scroller._scrollStep(this.scroller._velocity);\r\n this.scroller._velocity *= this._acceleration()\r\n },\r\n _acceleration: function() {\r\n return this.scroller._inBounds() ? ACCELERATION : OUT_BOUNDS_ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._scrollComplete()\r\n }\r\n});\r\nvar BounceAnimator = InertiaAnimator.inherit({\r\n VELOCITY_LIMIT: BOUNCE_MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return this.scroller._crossBoundOnNextStep() || this.callBase()\r\n },\r\n _acceleration: function() {\r\n return ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._move(this.scroller._bounceLocation);\r\n this.callBase()\r\n }\r\n});\r\nexport var Scroller = Class.inherit({\r\n ctor: function(options) {\r\n this._initOptions(options);\r\n this._initAnimators();\r\n this._initScrollbar()\r\n },\r\n _initOptions: function(options) {\r\n this._location = 0;\r\n this._topReached = false;\r\n this._bottomReached = false;\r\n this._axis = options.direction === HORIZONTAL ? \"x\" : \"y\";\r\n this._prop = options.direction === HORIZONTAL ? \"left\" : \"top\";\r\n this._dimension = options.direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._scrollProp = options.direction === HORIZONTAL ? \"scrollLeft\" : \"scrollTop\";\r\n each(options, (optionName, optionValue) => {\r\n this[\"_\" + optionName] = optionValue\r\n })\r\n },\r\n _initAnimators: function() {\r\n this._inertiaAnimator = new InertiaAnimator(this);\r\n this._bounceAnimator = new BounceAnimator(this)\r\n },\r\n _initScrollbar: function() {\r\n this._scrollbar = new Scrollbar($(\"
    \").appendTo(this._$container), {\r\n direction: this._direction,\r\n visible: this._scrollByThumb,\r\n visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),\r\n expandable: this._scrollByThumb\r\n });\r\n this._$scrollbar = this._scrollbar.$element()\r\n },\r\n _visibilityModeNormalize: function(mode) {\r\n return true === mode ? \"onScroll\" : false === mode ? \"never\" : mode\r\n },\r\n _scrollStep: function(delta) {\r\n var prevLocation = this._location;\r\n this._location += delta;\r\n this._suppressBounce();\r\n this._move();\r\n if (Math.abs(prevLocation - this._location) < 1) {\r\n return\r\n }\r\n eventsEngine.triggerHandler(this._$container, {\r\n type: \"scroll\"\r\n })\r\n },\r\n _suppressBounce: function() {\r\n if (this._bounceEnabled || this._inBounds(this._location)) {\r\n return\r\n }\r\n this._velocity = 0;\r\n this._location = this._boundLocation()\r\n },\r\n _boundLocation: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return Math.max(Math.min(location, this._maxOffset), this._minOffset)\r\n },\r\n _move: function(location) {\r\n this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;\r\n this._moveContent();\r\n this._moveScrollbar()\r\n },\r\n _moveContent: function() {\r\n var location = this._location;\r\n this._$container[this._scrollProp](-location / this._getScaleRatio());\r\n this._moveContentByTranslator(location)\r\n },\r\n _getScaleRatio: function() {\r\n if (hasWindow() && !this._scaleRatio) {\r\n var element = this._$element.get(0);\r\n var realDimension = this._getRealDimension(element, this._dimension);\r\n var baseDimension = this._getBaseDimension(element, this._dimension);\r\n this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100\r\n }\r\n return this._scaleRatio || 1\r\n },\r\n _getRealDimension: function(element, dimension) {\r\n return Math.round(getBoundingRect(element)[dimension])\r\n },\r\n _getBaseDimension: function(element, dimension) {\r\n var dimensionName = \"offset\" + titleize(dimension);\r\n return element[dimensionName]\r\n },\r\n _moveContentByTranslator: function(location) {\r\n var translateOffset;\r\n var minOffset = -this._maxScrollPropValue;\r\n if (location > 0) {\r\n translateOffset = location\r\n } else if (location <= minOffset) {\r\n translateOffset = location - minOffset\r\n } else {\r\n translateOffset = location % 1\r\n }\r\n if (this._translateOffset === translateOffset) {\r\n return\r\n }\r\n var targetLocation = {};\r\n targetLocation[this._prop] = translateOffset;\r\n this._translateOffset = translateOffset;\r\n if (0 === translateOffset) {\r\n resetPosition(this._$content);\r\n return\r\n }\r\n move(this._$content, targetLocation)\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._location)\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds()) {\r\n this._hideScrollbar();\r\n if (this._completeDeferred) {\r\n this._completeDeferred.resolve()\r\n }\r\n }\r\n this._scrollToBounds()\r\n },\r\n _scrollToBounds: function() {\r\n if (this._inBounds()) {\r\n return\r\n }\r\n this._bounceAction();\r\n this._setupBounce();\r\n this._bounceAnimator.start()\r\n },\r\n _setupBounce: function() {\r\n var boundLocation = this._bounceLocation = this._boundLocation();\r\n var bounceDistance = boundLocation - this._location;\r\n this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM\r\n },\r\n _inBounds: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return this._boundLocation(location) === location\r\n },\r\n _crossBoundOnNextStep: function() {\r\n var location = this._location;\r\n var nextLocation = location + this._velocity;\r\n return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset\r\n },\r\n _initHandler: function(e) {\r\n this._stopScrolling();\r\n this._prepareThumbScrolling(e)\r\n },\r\n _stopScrolling: deferRenderer((function() {\r\n this._hideScrollbar();\r\n this._inertiaAnimator.stop();\r\n this._bounceAnimator.stop()\r\n })),\r\n _prepareThumbScrolling: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n return\r\n }\r\n var $target = $(e.originalEvent.target);\r\n var scrollbarClicked = this._isScrollbar($target);\r\n if (scrollbarClicked) {\r\n this._moveToMouseLocation(e)\r\n }\r\n this._thumbScrolling = scrollbarClicked || this._isThumb($target);\r\n this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);\r\n if (this._thumbScrolling) {\r\n this._scrollbar.feedbackOn()\r\n }\r\n },\r\n _isThumbScrollingHandler: function($target) {\r\n return this._isThumb($target)\r\n },\r\n _moveToMouseLocation: function(e) {\r\n var mouseLocation = e[\"page\" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];\r\n var location = this._location + mouseLocation / this._containerToContentRatio() - this._$container.height() / 2;\r\n this._scrollStep(-Math.round(location))\r\n },\r\n _startHandler: function() {\r\n this._showScrollbar()\r\n },\r\n _moveHandler: function(delta) {\r\n if (this._crossThumbScrolling) {\r\n return\r\n }\r\n if (this._thumbScrolling) {\r\n delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())\r\n }\r\n this._scrollBy(delta)\r\n },\r\n _scrollBy: function(delta) {\r\n delta = delta[this._axis];\r\n if (!this._inBounds()) {\r\n delta *= OUT_BOUNDS_ACCELERATION\r\n }\r\n this._scrollStep(delta)\r\n },\r\n _scrollByHandler: function(delta) {\r\n this._scrollBy(delta);\r\n this._scrollComplete()\r\n },\r\n _containerToContentRatio: function() {\r\n return this._scrollbar.containerToContentRatio()\r\n },\r\n _endHandler: function(velocity) {\r\n this._completeDeferred = new Deferred;\r\n this._velocity = velocity[this._axis];\r\n this._inertiaHandler();\r\n this._resetThumbScrolling();\r\n return this._completeDeferred.promise()\r\n },\r\n _inertiaHandler: function() {\r\n this._suppressInertia();\r\n this._inertiaAnimator.start()\r\n },\r\n _suppressInertia: function() {\r\n if (!this._inertiaEnabled || this._thumbScrolling) {\r\n this._velocity = 0\r\n }\r\n },\r\n _resetThumbScrolling: function() {\r\n this._thumbScrolling = false;\r\n this._crossThumbScrolling = false\r\n },\r\n _stopHandler: function() {\r\n if (this._thumbScrolling) {\r\n this._scrollComplete()\r\n }\r\n this._resetThumbScrolling();\r\n this._scrollToBounds()\r\n },\r\n _disposeHandler: function() {\r\n this._stopScrolling();\r\n this._$scrollbar.remove()\r\n },\r\n _updateHandler: function() {\r\n this._update();\r\n this._moveToBounds()\r\n },\r\n _update: function() {\r\n this._stopScrolling();\r\n return deferUpdate(() => {\r\n this._resetScaleRatio();\r\n this._updateLocation();\r\n this._updateBounds();\r\n this._updateScrollbar();\r\n deferRender(() => {\r\n this._moveScrollbar();\r\n this._scrollbar.update()\r\n })\r\n })\r\n },\r\n _resetScaleRatio: function() {\r\n this._scaleRatio = null\r\n },\r\n _updateLocation: function() {\r\n this._location = (locate(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()\r\n },\r\n _updateBounds: function() {\r\n this._maxOffset = Math.round(this._getMaxOffset());\r\n this._minOffset = Math.round(this._getMinOffset())\r\n },\r\n _getMaxOffset: function() {\r\n return 0\r\n },\r\n _getMinOffset: function() {\r\n this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);\r\n return -this._maxScrollPropValue\r\n },\r\n _updateScrollbar: deferUpdater((function() {\r\n var containerSize = this._containerSize();\r\n var contentSize = this._contentSize();\r\n var baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);\r\n var baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);\r\n deferRender(() => {\r\n this._scrollbar.option({\r\n containerSize: containerSize,\r\n contentSize: contentSize,\r\n baseContainerSize: baseContainerSize,\r\n baseContentSize: baseContentSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n })\r\n })),\r\n _moveToBounds: deferRenderer(deferUpdater(deferRenderer((function() {\r\n var location = this._boundLocation();\r\n var locationChanged = location !== this._location;\r\n this._location = location;\r\n this._move();\r\n if (locationChanged) {\r\n this._scrollAction()\r\n }\r\n })))),\r\n _createActionsHandler: function(actions) {\r\n this._scrollAction = actions.scroll;\r\n this._bounceAction = actions.bounce\r\n },\r\n _showScrollbar: function() {\r\n this._scrollbar.option(\"visible\", true)\r\n },\r\n _hideScrollbar: function() {\r\n this._scrollbar.option(\"visible\", false)\r\n },\r\n _containerSize: function() {\r\n return this._getRealDimension(this._$container.get(0), this._dimension)\r\n },\r\n _contentSize: function() {\r\n var isOverflowHidden = \"hidden\" === this._$content.css(\"overflow\" + this._axis.toUpperCase());\r\n var contentSize = this._getRealDimension(this._$content.get(0), this._dimension);\r\n if (!isOverflowHidden) {\r\n var containerScrollSize = this._$content[0][\"scroll\" + titleize(this._dimension)] * this._getScaleRatio();\r\n contentSize = Math.max(containerScrollSize, contentSize)\r\n }\r\n return contentSize\r\n },\r\n _validateEvent: function(e) {\r\n var $target = $(e.originalEvent.target);\r\n return this._isThumb($target) || this._isScrollbar($target) || this._isContent($target)\r\n },\r\n _isThumb: function($element) {\r\n return this._scrollByThumb && this._scrollbar.isThumb($element)\r\n },\r\n _isScrollbar: function($element) {\r\n return this._scrollByThumb && $element && $element.is(this._$scrollbar)\r\n },\r\n _isContent: function($element) {\r\n return this._scrollByContent && !!$element.closest(this._$element).length\r\n },\r\n _reachedMin: function() {\r\n return this._location <= this._minOffset\r\n },\r\n _reachedMax: function() {\r\n return this._location >= this._maxOffset\r\n },\r\n _cursorEnterHandler: function() {\r\n this._resetScaleRatio();\r\n this._updateScrollbar();\r\n this._scrollbar.cursorEnter()\r\n },\r\n _cursorLeaveHandler: function() {\r\n this._scrollbar.cursorLeave()\r\n },\r\n dispose: noop\r\n});\r\nvar hoveredScrollable;\r\nvar activeScrollable;\r\nexport var SimulatedStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = scrollable._$container;\r\n this._$wrapper = scrollable._$wrapper;\r\n this._$content = scrollable._$content;\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getScrollOffset = scrollable._getScrollOffset.bind(scrollable)\r\n },\r\n render: function() {\r\n this._$element.addClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._createScrollers();\r\n if (this.option(\"useKeyboard\")) {\r\n this._$container.prop(\"tabIndex\", 0)\r\n }\r\n this._attachKeyboardHandler();\r\n this._attachCursorHandlers()\r\n },\r\n _createScrollers: function() {\r\n this._scrollers = {};\r\n if (this._isDirection(HORIZONTAL)) {\r\n this._createScroller(HORIZONTAL)\r\n }\r\n if (this._isDirection(VERTICAL)) {\r\n this._createScroller(VERTICAL)\r\n }\r\n this._$element.toggleClass(SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE, \"always\" === this.option(\"showScrollbar\"))\r\n },\r\n _createScroller: function(direction) {\r\n this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return {\r\n direction: direction,\r\n $content: this._$content,\r\n $container: this._$container,\r\n $wrapper: this._$wrapper,\r\n $element: this._$element,\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n scrollbarVisible: this.option(\"showScrollbar\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n inertiaEnabled: this.option(\"inertiaEnabled\"),\r\n isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)\r\n }\r\n },\r\n _applyScaleRatio: function(targetLocation) {\r\n for (var direction in this._scrollers) {\r\n var prop = this._getPropByDirection(direction);\r\n if (isDefined(targetLocation[prop])) {\r\n var scroller = this._scrollers[direction];\r\n targetLocation[prop] *= scroller._getScaleRatio()\r\n }\r\n }\r\n return targetLocation\r\n },\r\n _isAnyThumbScrolling: function($target) {\r\n var result = false;\r\n this._eventHandler(\"isThumbScrolling\", $target).done((function(isThumbScrollingVertical, isThumbScrollingHorizontal) {\r\n result = isThumbScrollingVertical || isThumbScrollingHorizontal\r\n }));\r\n return result\r\n },\r\n handleInit: function(e) {\r\n this._suppressDirections(e);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"init\", e)\r\n },\r\n _suppressDirections: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n this._prepareDirections(true);\r\n return\r\n }\r\n this._prepareDirections();\r\n this._eachScroller((function(scroller, direction) {\r\n var isValid = scroller._validateEvent(e);\r\n this._validDirections[direction] = isValid\r\n }))\r\n },\r\n _prepareDirections: function(value) {\r\n value = value || false;\r\n this._validDirections = {};\r\n this._validDirections[HORIZONTAL] = value;\r\n this._validDirections[VERTICAL] = value\r\n },\r\n _eachScroller: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollers, (function(direction, scroller) {\r\n callback(scroller, direction)\r\n }))\r\n },\r\n handleStart: function(e) {\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"start\").done(this._startAction)\r\n },\r\n _saveActive: function() {\r\n activeScrollable = this\r\n },\r\n _resetActive: function() {\r\n if (activeScrollable === this) {\r\n activeScrollable = null\r\n }\r\n },\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n this._resetActive();\r\n return\r\n }\r\n this._saveActive();\r\n e.preventDefault && e.preventDefault();\r\n this._adjustDistance(e, e.delta);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"move\", e.delta)\r\n },\r\n _adjustDistance: function(e, distance) {\r\n distance.x *= this._validDirections[HORIZONTAL];\r\n distance.y *= this._validDirections[VERTICAL];\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n if (devicePixelRatio && isDxMouseWheelEvent(e.originalEvent)) {\r\n distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;\r\n distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100\r\n }\r\n },\r\n _tryGetDevicePixelRatio: function() {\r\n if (hasWindow()) {\r\n return getWindow().devicePixelRatio\r\n }\r\n },\r\n handleEnd: function(e) {\r\n this._resetActive();\r\n this._refreshCursorState(e.originalEvent && e.originalEvent.target);\r\n this._adjustDistance(e, e.velocity);\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", e.velocity).done(this._endAction)\r\n },\r\n handleCancel: function(e) {\r\n this._resetActive();\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", {\r\n x: 0,\r\n y: 0\r\n })\r\n },\r\n handleStop: function() {\r\n this._resetActive();\r\n this._eventHandler(\"stop\")\r\n },\r\n handleScroll: function() {\r\n this._component._updateRtlConfig();\r\n this._scrollAction()\r\n },\r\n _attachKeyboardHandler: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD));\r\n if (!this.option(\"disabled\") && this.option(\"useKeyboard\")) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"keydown\", SCROLLABLE_SIMULATED_KEYBOARD), this._keyDownHandler.bind(this))\r\n }\r\n },\r\n _keyDownHandler: function(e) {\r\n clearTimeout(this._updateHandlerTimeout);\r\n this._updateHandlerTimeout = setTimeout(() => {\r\n if (normalizeKeyName(e) === KEY_CODES.TAB) {\r\n this._eachScroller(scroller => {\r\n scroller._updateHandler()\r\n })\r\n }\r\n });\r\n if (!this._$container.is(domAdapter.getActiveElement())) {\r\n return\r\n }\r\n var handled = true;\r\n switch (normalizeKeyName(e)) {\r\n case KEY_CODES.DOWN:\r\n this._scrollByLine({\r\n y: 1\r\n });\r\n break;\r\n case KEY_CODES.UP:\r\n this._scrollByLine({\r\n y: -1\r\n });\r\n break;\r\n case KEY_CODES.RIGHT:\r\n this._scrollByLine({\r\n x: 1\r\n });\r\n break;\r\n case KEY_CODES.LEFT:\r\n this._scrollByLine({\r\n x: -1\r\n });\r\n break;\r\n case KEY_CODES.PAGE_DOWN:\r\n this._scrollByPage(1);\r\n break;\r\n case KEY_CODES.PAGE_UP:\r\n this._scrollByPage(-1);\r\n break;\r\n case KEY_CODES.HOME:\r\n this._scrollToHome();\r\n break;\r\n case KEY_CODES.END:\r\n this._scrollToEnd();\r\n break;\r\n default:\r\n handled = false\r\n }\r\n if (handled) {\r\n e.stopPropagation();\r\n e.preventDefault()\r\n }\r\n },\r\n _scrollByLine: function(lines) {\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n var scrollOffset = SCROLL_LINE_HEIGHT;\r\n if (devicePixelRatio) {\r\n scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100\r\n }\r\n this.scrollBy({\r\n top: (lines.y || 0) * -scrollOffset,\r\n left: (lines.x || 0) * -scrollOffset\r\n })\r\n },\r\n _scrollByPage: function(page) {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n distance[prop] = page * -this._$container[dimension]();\r\n this.scrollBy(distance)\r\n },\r\n _dimensionByProp: function(prop) {\r\n return \"left\" === prop ? \"width\" : \"height\"\r\n },\r\n _getPropByDirection: function(direction) {\r\n return direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _scrollToHome: function() {\r\n var prop = this._wheelProp();\r\n var distance = {};\r\n distance[prop] = 0;\r\n this._component.scrollTo(distance)\r\n },\r\n _scrollToEnd: function() {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n distance[prop] = this._$content[dimension]() - this._$container[dimension]();\r\n this._component.scrollTo(distance)\r\n },\r\n createActions: function() {\r\n this._startAction = this._createActionHandler(\"onStart\");\r\n this._endAction = this._createActionHandler(\"onEnd\");\r\n this._updateAction = this._createActionHandler(\"onUpdated\");\r\n this._createScrollerActions()\r\n },\r\n _createScrollerActions: function() {\r\n this._scrollAction = this._createActionHandler(\"onScroll\");\r\n this._bounceAction = this._createActionHandler(\"onBounce\");\r\n this._eventHandler(\"createActions\", {\r\n scroll: this._scrollAction,\r\n bounce: this._bounceAction\r\n })\r\n },\r\n _createActionHandler: function(optionName) {\r\n var actionHandler = this._createActionByOption(optionName);\r\n return () => {\r\n actionHandler(extend(this._createActionArgs(), arguments))\r\n }\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n horizontal: scrollerX,\r\n vertical: scrollerY\r\n } = this._scrollers;\r\n var offset = this._getScrollOffset();\r\n this._scrollOffset = {\r\n top: scrollerY && offset.top,\r\n left: scrollerX && offset.left\r\n };\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._scrollOffset,\r\n reachedLeft: scrollerX && scrollerX._reachedMax(),\r\n reachedRight: scrollerX && scrollerX._reachedMin(),\r\n reachedTop: scrollerY && scrollerY._reachedMax(),\r\n reachedBottom: scrollerY && scrollerY._reachedMin()\r\n }\r\n },\r\n _eventHandler: function(eventName) {\r\n var args = [].slice.call(arguments).slice(1);\r\n var deferreds = map(this._scrollers, scroller => scroller[\"_\" + eventName + \"Handler\"].apply(scroller, args));\r\n return when.apply($, deferreds).promise()\r\n },\r\n location: function() {\r\n var location = locate(this._$content);\r\n location.top -= this._$container.scrollTop();\r\n location.left -= this._$container.scrollLeft();\r\n return location\r\n },\r\n disabledChanged: function() {\r\n this._attachCursorHandlers()\r\n },\r\n _attachCursorHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n if (!this.option(\"disabled\") && this._isHoverMode()) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseenter\", SCROLLABLE_SIMULATED_CURSOR), this._cursorEnterHandler.bind(this));\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseleave\", SCROLLABLE_SIMULATED_CURSOR), this._cursorLeaveHandler.bind(this))\r\n }\r\n },\r\n _isHoverMode: function() {\r\n return \"onHover\" === this.option(\"showScrollbar\")\r\n },\r\n _cursorEnterHandler: function(e) {\r\n e = e || {};\r\n e.originalEvent = e.originalEvent || {};\r\n if (activeScrollable || e.originalEvent._hoverHandled) {\r\n return\r\n }\r\n if (hoveredScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n hoveredScrollable = this;\r\n this._eventHandler(\"cursorEnter\");\r\n e.originalEvent._hoverHandled = true\r\n },\r\n _cursorLeaveHandler: function(e) {\r\n if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {\r\n return\r\n }\r\n this._eventHandler(\"cursorLeave\");\r\n hoveredScrollable = null;\r\n this._refreshCursorState(e && e.relatedTarget)\r\n },\r\n _refreshCursorState: function(target) {\r\n if (!this._isHoverMode() && (!target || activeScrollable)) {\r\n return\r\n }\r\n var $target = $(target);\r\n var $scrollable = $target.closest(\".\".concat(SCROLLABLE_SIMULATED_CLASS, \":not(.dx-state-disabled)\"));\r\n var targetScrollable = $scrollable.length && $scrollable.data(SCROLLABLE_STRATEGY);\r\n if (hoveredScrollable && hoveredScrollable !== targetScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n if (targetScrollable) {\r\n targetScrollable._cursorEnterHandler()\r\n }\r\n },\r\n update: function() {\r\n var result = this._eventHandler(\"update\").done(this._updateAction);\r\n return when(result, deferUpdate(() => {\r\n var allowedDirections = this._allowedDirections();\r\n deferRender(() => {\r\n var touchDirection = allowedDirections.vertical ? \"pan-x\" : \"\";\r\n touchDirection = allowedDirections.horizontal ? \"pan-y\" : touchDirection;\r\n touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? \"none\" : touchDirection;\r\n this._$container.css(\"touchAction\", touchDirection)\r\n });\r\n return when().promise()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n var bounceEnabled = this.option(\"bounceEnabled\");\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n return {\r\n vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),\r\n horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)\r\n }\r\n },\r\n updateBounds: function() {\r\n this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()\r\n },\r\n scrollBy: function(distance) {\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n if (verticalScroller) {\r\n distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location\r\n }\r\n if (horizontalScroller) {\r\n distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location\r\n }\r\n this._prepareDirections(true);\r\n this._startAction();\r\n this._eventHandler(\"scrollBy\", {\r\n x: distance.left,\r\n y: distance.top\r\n });\r\n this._endAction()\r\n },\r\n validate: function(e) {\r\n if (isDxMouseWheelEvent(e) && isCommandKeyPressed(e)) {\r\n return false\r\n }\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"bounceEnabled\")) {\r\n return true\r\n }\r\n return isDxMouseWheelEvent(e) ? this._validateWheel(e) : this._validateMove(e)\r\n },\r\n _validateWheel: function(e) {\r\n var scroller = this._scrollers[this._wheelDirection(e)];\r\n var reachedMin = scroller._reachedMin();\r\n var reachedMax = scroller._reachedMax();\r\n var contentGreaterThanContainer = !reachedMin || !reachedMax;\r\n var locatedNotAtBound = !reachedMin && !reachedMax;\r\n var scrollFromMin = reachedMin && e.delta > 0;\r\n var scrollFromMax = reachedMax && e.delta < 0;\r\n var validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);\r\n validated = validated || void 0 !== this._validateWheelTimer;\r\n if (validated) {\r\n clearTimeout(this._validateWheelTimer);\r\n this._validateWheelTimer = setTimeout(() => {\r\n this._validateWheelTimer = void 0\r\n }, VALIDATE_WHEEL_TIMEOUT)\r\n }\r\n return validated\r\n },\r\n _validateMove: function(e) {\r\n if (!this.option(\"scrollByContent\") && !$(e.target).closest(\".\".concat(SCROLLABLE_SCROLLBAR_CLASS)).length) {\r\n return false\r\n }\r\n return this._allowedDirection()\r\n },\r\n getDirection: function(e) {\r\n return isDxMouseWheelEvent(e) ? this._wheelDirection(e) : this._allowedDirection()\r\n },\r\n _wheelProp: function() {\r\n return this._wheelDirection() === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _wheelDirection: function(e) {\r\n switch (this.option(\"direction\")) {\r\n case HORIZONTAL:\r\n return HORIZONTAL;\r\n case VERTICAL:\r\n return VERTICAL;\r\n default:\r\n return e && e.shiftKey ? HORIZONTAL : VERTICAL\r\n }\r\n },\r\n dispose: function() {\r\n this._resetActive();\r\n if (hoveredScrollable === this) {\r\n hoveredScrollable = null\r\n }\r\n this._eventHandler(\"dispose\");\r\n this._detachEventHandlers();\r\n this._$element.removeClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._eventForUserAction = null;\r\n clearTimeout(this._validateWheelTimer);\r\n clearTimeout(this._updateHandlerTimeout)\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n eventsEngine.off(this._$container, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/localization/cldr-data/parent_locales.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default {\r\n \"en-150\": \"en-001\",\r\n \"en-AG\": \"en-001\",\r\n \"en-AI\": \"en-001\",\r\n \"en-AU\": \"en-001\",\r\n \"en-BB\": \"en-001\",\r\n \"en-BM\": \"en-001\",\r\n \"en-BS\": \"en-001\",\r\n \"en-BW\": \"en-001\",\r\n \"en-BZ\": \"en-001\",\r\n \"en-CA\": \"en-001\",\r\n \"en-CC\": \"en-001\",\r\n \"en-CK\": \"en-001\",\r\n \"en-CM\": \"en-001\",\r\n \"en-CX\": \"en-001\",\r\n \"en-CY\": \"en-001\",\r\n \"en-DG\": \"en-001\",\r\n \"en-DM\": \"en-001\",\r\n \"en-ER\": \"en-001\",\r\n \"en-FJ\": \"en-001\",\r\n \"en-FK\": \"en-001\",\r\n \"en-FM\": \"en-001\",\r\n \"en-GB\": \"en-001\",\r\n \"en-GD\": \"en-001\",\r\n \"en-GG\": \"en-001\",\r\n \"en-GH\": \"en-001\",\r\n \"en-GI\": \"en-001\",\r\n \"en-GM\": \"en-001\",\r\n \"en-GY\": \"en-001\",\r\n \"en-HK\": \"en-001\",\r\n \"en-IE\": \"en-001\",\r\n \"en-IL\": \"en-001\",\r\n \"en-IM\": \"en-001\",\r\n \"en-IN\": \"en-001\",\r\n \"en-IO\": \"en-001\",\r\n \"en-JE\": \"en-001\",\r\n \"en-JM\": \"en-001\",\r\n \"en-KE\": \"en-001\",\r\n \"en-KI\": \"en-001\",\r\n \"en-KN\": \"en-001\",\r\n \"en-KY\": \"en-001\",\r\n \"en-LC\": \"en-001\",\r\n \"en-LR\": \"en-001\",\r\n \"en-LS\": \"en-001\",\r\n \"en-MG\": \"en-001\",\r\n \"en-MO\": \"en-001\",\r\n \"en-MS\": \"en-001\",\r\n \"en-MT\": \"en-001\",\r\n \"en-MU\": \"en-001\",\r\n \"en-MW\": \"en-001\",\r\n \"en-MY\": \"en-001\",\r\n \"en-NA\": \"en-001\",\r\n \"en-NF\": \"en-001\",\r\n \"en-NG\": \"en-001\",\r\n \"en-NR\": \"en-001\",\r\n \"en-NU\": \"en-001\",\r\n \"en-NZ\": \"en-001\",\r\n \"en-PG\": \"en-001\",\r\n \"en-PH\": \"en-001\",\r\n \"en-PK\": \"en-001\",\r\n \"en-PN\": \"en-001\",\r\n \"en-PW\": \"en-001\",\r\n \"en-RW\": \"en-001\",\r\n \"en-SB\": \"en-001\",\r\n \"en-SC\": \"en-001\",\r\n \"en-SD\": \"en-001\",\r\n \"en-SG\": \"en-001\",\r\n \"en-SH\": \"en-001\",\r\n \"en-SL\": \"en-001\",\r\n \"en-SS\": \"en-001\",\r\n \"en-SX\": \"en-001\",\r\n \"en-SZ\": \"en-001\",\r\n \"en-TC\": \"en-001\",\r\n \"en-TK\": \"en-001\",\r\n \"en-TO\": \"en-001\",\r\n \"en-TT\": \"en-001\",\r\n \"en-TV\": \"en-001\",\r\n \"en-TZ\": \"en-001\",\r\n \"en-UG\": \"en-001\",\r\n \"en-VC\": \"en-001\",\r\n \"en-VG\": \"en-001\",\r\n \"en-VU\": \"en-001\",\r\n \"en-WS\": \"en-001\",\r\n \"en-ZA\": \"en-001\",\r\n \"en-ZM\": \"en-001\",\r\n \"en-ZW\": \"en-001\",\r\n \"en-AT\": \"en-150\",\r\n \"en-BE\": \"en-150\",\r\n \"en-CH\": \"en-150\",\r\n \"en-DE\": \"en-150\",\r\n \"en-DK\": \"en-150\",\r\n \"en-FI\": \"en-150\",\r\n \"en-NL\": \"en-150\",\r\n \"en-SE\": \"en-150\",\r\n \"en-SI\": \"en-150\",\r\n \"es-AR\": \"es-419\",\r\n \"es-BO\": \"es-419\",\r\n \"es-BR\": \"es-419\",\r\n \"es-BZ\": \"es-419\",\r\n \"es-CL\": \"es-419\",\r\n \"es-CO\": \"es-419\",\r\n \"es-CR\": \"es-419\",\r\n \"es-CU\": \"es-419\",\r\n \"es-DO\": \"es-419\",\r\n \"es-EC\": \"es-419\",\r\n \"es-GT\": \"es-419\",\r\n \"es-HN\": \"es-419\",\r\n \"es-MX\": \"es-419\",\r\n \"es-NI\": \"es-419\",\r\n \"es-PA\": \"es-419\",\r\n \"es-PE\": \"es-419\",\r\n \"es-PR\": \"es-419\",\r\n \"es-PY\": \"es-419\",\r\n \"es-SV\": \"es-419\",\r\n \"es-US\": \"es-419\",\r\n \"es-UY\": \"es-419\",\r\n \"es-VE\": \"es-419\",\r\n nb: \"no\",\r\n nn: \"no\",\r\n \"pt-AO\": \"pt-PT\",\r\n \"pt-CH\": \"pt-PT\",\r\n \"pt-CV\": \"pt-PT\",\r\n \"pt-FR\": \"pt-PT\",\r\n \"pt-GQ\": \"pt-PT\",\r\n \"pt-GW\": \"pt-PT\",\r\n \"pt-LU\": \"pt-PT\",\r\n \"pt-MO\": \"pt-PT\",\r\n \"pt-MZ\": \"pt-PT\",\r\n \"pt-ST\": \"pt-PT\",\r\n \"pt-TL\": \"pt-PT\",\r\n \"az-Arab\": \"root\",\r\n \"az-Cyrl\": \"root\",\r\n \"blt-Latn\": \"root\",\r\n \"bm-Nkoo\": \"root\",\r\n \"bs-Cyrl\": \"root\",\r\n \"byn-Latn\": \"root\",\r\n \"cu-Glag\": \"root\",\r\n \"dje-Arab\": \"root\",\r\n \"dyo-Arab\": \"root\",\r\n \"en-Dsrt\": \"root\",\r\n \"en-Shaw\": \"root\",\r\n \"ff-Adlm\": \"root\",\r\n \"ff-Arab\": \"root\",\r\n \"ha-Arab\": \"root\",\r\n \"hi-Latn\": \"root\",\r\n \"iu-Latn\": \"root\",\r\n \"kk-Arab\": \"root\",\r\n \"ks-Deva\": \"root\",\r\n \"ku-Arab\": \"root\",\r\n \"ky-Arab\": \"root\",\r\n \"ky-Latn\": \"root\",\r\n \"ml-Arab\": \"root\",\r\n \"mn-Mong\": \"root\",\r\n \"mni-Mtei\": \"root\",\r\n \"ms-Arab\": \"root\",\r\n \"pa-Arab\": \"root\",\r\n \"sat-Deva\": \"root\",\r\n \"sd-Deva\": \"root\",\r\n \"sd-Khoj\": \"root\",\r\n \"sd-Sind\": \"root\",\r\n \"shi-Latn\": \"root\",\r\n \"so-Arab\": \"root\",\r\n \"sr-Latn\": \"root\",\r\n \"sw-Arab\": \"root\",\r\n \"tg-Arab\": \"root\",\r\n \"ug-Cyrl\": \"root\",\r\n \"uz-Arab\": \"root\",\r\n \"uz-Cyrl\": \"root\",\r\n \"vai-Latn\": \"root\",\r\n \"wo-Arab\": \"root\",\r\n \"yo-Arab\": \"root\",\r\n \"yue-Hans\": \"root\",\r\n \"zh-Hant\": \"root\",\r\n \"zh-Hant-MO\": \"zh-Hant-HK\"\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/parentLocale.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar PARENT_LOCALE_SEPARATOR = \"-\";\r\nexport default (parentLocales, locale) => {\r\n var parentLocale = parentLocales[locale];\r\n if (parentLocale) {\r\n return \"root\" !== parentLocale && parentLocale\r\n }\r\n return locale.substr(0, locale.lastIndexOf(PARENT_LOCALE_SEPARATOR))\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/core.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport parentLocales from \"./cldr-data/parent_locales\";\r\nimport getParentLocale from \"./parentLocale\";\r\nvar DEFAULT_LOCALE = \"en\";\r\nexport default dependencyInjector({\r\n locale: (() => {\r\n var currentLocale = DEFAULT_LOCALE;\r\n return locale => {\r\n if (!locale) {\r\n return currentLocale\r\n }\r\n currentLocale = locale\r\n }\r\n })(),\r\n getValueByClosestLocale: function(getter) {\r\n var locale = this.locale();\r\n var value = getter(locale);\r\n var isRootLocale;\r\n while (!value && !isRootLocale) {\r\n locale = getParentLocale(parentLocales, locale);\r\n if (locale) {\r\n value = getter(locale)\r\n } else {\r\n isRootLocale = true\r\n }\r\n }\r\n if (void 0 === value && locale !== DEFAULT_LOCALE) {\r\n return getter(DEFAULT_LOCALE)\r\n }\r\n return value\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/widget/swatch_container.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n value\r\n} from \"../../core/utils/view_port\";\r\nvar SWATCH_CONTAINER_CLASS_PREFIX = \"dx-swatch-\";\r\nvar getSwatchContainer = element => {\r\n var $element = $(element);\r\n var swatchContainer = $element.closest('[class^=\"'.concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"], [class*=\" ').concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"]'));\r\n var viewport = value();\r\n if (!swatchContainer.length) {\r\n return viewport\r\n }\r\n var swatchClassRegex = new RegExp(\"(\\\\s|^)(\".concat(SWATCH_CONTAINER_CLASS_PREFIX, \".*?)(\\\\s|$)\"));\r\n var swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2];\r\n var viewportSwatchContainer = viewport.children(\".\" + swatchClass);\r\n if (!viewportSwatchContainer.length) {\r\n viewportSwatchContainer = $(\"
    \").addClass(swatchClass).appendTo(viewport)\r\n }\r\n return viewportSwatchContainer\r\n};\r\nexport default {\r\n getSwatchContainer: getSwatchContainer\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/open_xml_currency_format.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default (currencySymbol, accountingFormat) => {\r\n if (!accountingFormat) {\r\n return\r\n }\r\n var encodedCurrencySymbol = currencySymbol;\r\n if (\"string\" === typeof currencySymbol) {\r\n encodedCurrencySymbol = \"\";\r\n for (var i = 0; i < currencySymbol.length; i++) {\r\n if (\"$\" !== currencySymbol[i]) {\r\n encodedCurrencySymbol += \"\\\\\"\r\n }\r\n encodedCurrencySymbol += currencySymbol[i]\r\n }\r\n }\r\n var encodeSymbols = {\r\n \".00\": \"{0}\",\r\n \"'\": \"\\\\'\",\r\n \"\\\\(\": \"\\\\(\",\r\n \"\\\\)\": \"\\\\)\",\r\n \" \": \"\\\\ \",\r\n '\"': \""\",\r\n \"\\\\\\xa4\": encodedCurrencySymbol\r\n };\r\n var result = accountingFormat.split(\";\");\r\n for (var _i = 0; _i < result.length; _i++) {\r\n for (var symbol in encodeSymbols) {\r\n if (Object.prototype.hasOwnProperty.call(encodeSymbols, symbol)) {\r\n result[_i] = result[_i].replace(new RegExp(symbol, \"g\"), encodeSymbols[symbol])\r\n }\r\n }\r\n }\r\n return 2 === result.length ? result[0] + \"_);\" + result[1] : result[0]\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/cldr-data/accounting_formats.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default {\r\n af: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"af-NA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n agq: \"#,##0.00\\xa4\",\r\n ak: \"\\xa4#,##0.00\",\r\n am: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ar: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-AE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-BH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-DJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-DZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-EG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-EH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-ER\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-IL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-IQ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-JO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-KM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-KW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-LB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-LY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-MA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-MR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-OM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-PS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-QA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-TD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-TN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-YE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n as: \"\\xa4\\xa0#,##,##0.00\",\r\n asa: \"#,##0.00\\xa0\\xa4\",\r\n ast: \"#,##0.00\\xa0\\xa4\",\r\n az: \"#,##0.00\\xa0\\xa4\",\r\n \"az-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n \"az-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n bas: \"#,##0.00\\xa0\\xa4\",\r\n be: \"#,##0.00\\xa0\\xa4\",\r\n bem: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n bez: \"#,##0.00\\xa4\",\r\n bg: \"0.00\\xa0\\xa4;(0.00\\xa0\\xa4)\",\r\n bm: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n bn: \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n \"bn-IN\": \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n bo: \"\\xa4\\xa0#,##0.00\",\r\n \"bo-IN\": \"\\xa4\\xa0#,##0.00\",\r\n br: \"#,##0.00\\xa0\\xa4\",\r\n brx: \"\\xa4\\xa0#,##,##0.00\",\r\n bs: \"#,##0.00\\xa0\\xa4\",\r\n \"bs-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n \"bs-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n ca: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-AD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-ES-VALENCIA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-FR\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-IT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n ccp: \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n \"ccp-IN\": \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n ce: \"#,##0.00\\xa0\\xa4\",\r\n ceb: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n cgg: \"\\xa4#,##0.00\",\r\n chr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ckb: \"\\xa4\\xa0#,##0.00\",\r\n \"ckb-IR\": \"\\xa4\\xa0#,##0.00\",\r\n cs: \"#,##0.00\\xa0\\xa4\",\r\n cy: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n da: \"#,##0.00\\xa0\\xa4\",\r\n \"da-GL\": \"#,##0.00\\xa0\\xa4\",\r\n dav: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n de: \"#,##0.00\\xa0\\xa4\",\r\n \"de-AT\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-BE\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-CH\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-IT\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-LI\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-LU\": \"#,##0.00\\xa0\\xa4\",\r\n dje: \"#,##0.00\\xa4\",\r\n doi: \"\\xa4#,##0.00\",\r\n dsb: \"#,##0.00\\xa0\\xa4\",\r\n dua: \"#,##0.00\\xa0\\xa4\",\r\n dyo: \"#,##0.00\\xa0\\xa4\",\r\n dz: \"\\xa4#,##,##0.00\",\r\n ebu: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ee: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ee-TG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n el: \"#,##0.00\\xa0\\xa4\",\r\n \"el-CY\": \"#,##0.00\\xa0\\xa4\",\r\n en: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-001\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-150\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-AE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AT\": \"\\xa4\\xa0#,##0.00\",\r\n \"en-AU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BE\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-BI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CH\": \"\\xa4\\xa0#,##0.00;\\xa4-#,##0.00\",\r\n \"en-CK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-DE\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-DG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-DK\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-DM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ER\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-FI\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-FJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-FK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-FM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-JE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-JM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-LC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-LR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-LS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MP\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MT\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NF\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NL\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"en-NR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-RW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SE\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"en-SL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TT\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TV\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-UG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-UM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-US-POSIX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-WS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ZA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ZM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ZW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n eo: \"\\xa4\\xa0#,##0.00\",\r\n es: \"#,##0.00\\xa0\\xa4\",\r\n \"es-419\": \"\\xa4#,##0.00\",\r\n \"es-AR\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"es-BO\": \"\\xa4#,##0.00\",\r\n \"es-BR\": \"\\xa4#,##0.00\",\r\n \"es-BZ\": \"\\xa4#,##0.00\",\r\n \"es-CL\": \"\\xa4#,##0.00\",\r\n \"es-CO\": \"\\xa4#,##0.00\",\r\n \"es-CR\": \"\\xa4#,##0.00\",\r\n \"es-CU\": \"\\xa4#,##0.00\",\r\n \"es-DO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"es-EA\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-EC\": \"\\xa4#,##0.00\",\r\n \"es-GQ\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-GT\": \"\\xa4#,##0.00\",\r\n \"es-HN\": \"\\xa4#,##0.00\",\r\n \"es-IC\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-MX\": \"\\xa4#,##0.00\",\r\n \"es-NI\": \"\\xa4#,##0.00\",\r\n \"es-PA\": \"\\xa4#,##0.00\",\r\n \"es-PE\": \"\\xa4#,##0.00\",\r\n \"es-PH\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-PR\": \"\\xa4#,##0.00\",\r\n \"es-PY\": \"\\xa4#,##0.00\",\r\n \"es-SV\": \"\\xa4#,##0.00\",\r\n \"es-US\": \"\\xa4#,##0.00\",\r\n \"es-UY\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"es-VE\": \"\\xa4#,##0.00\",\r\n et: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n eu: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n ewo: \"#,##0.00\\xa0\\xa4\",\r\n fa: \"\\u200e\\xa4\\xa0#,##0.00;\\u200e(\\xa4\\xa0#,##0.00)\",\r\n \"fa-AF\": \"\\xa4\\xa0#,##0.00;\\u200e(\\xa4\\xa0#,##0.00)\",\r\n ff: \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Adlm\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-BF\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-CM\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-GH\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-GM\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-GW\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-LR\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-MR\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-NE\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-NG\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-SL\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-SN\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-BF\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-CM\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GH\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GM\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GN\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GW\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-LR\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-MR\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-NE\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-NG\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-SL\": \"#,##0.00\\xa0\\xa4\",\r\n fi: \"#,##0.00\\xa0\\xa4\",\r\n fil: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n fo: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fo-DK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n fr: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BJ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BL\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CH\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-DJ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-DZ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GP\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-HT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-KM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-LU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-ML\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MR\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-NC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-NE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-PF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-PM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-RE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-RW\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-SC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-SN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-SY\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-TD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-TG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-TN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-VU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-WF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-YT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n fur: \"\\xa4\\xa0#,##0.00\",\r\n fy: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n ga: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ga-GB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n gd: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n gl: \"#,##0.00\\xa0\\xa4\",\r\n gsw: \"#,##0.00\\xa0\\xa4\",\r\n \"gsw-FR\": \"#,##0.00\\xa0\\xa4\",\r\n \"gsw-LI\": \"#,##0.00\\xa0\\xa4\",\r\n gu: \"\\xa4#,##,##0.00;(\\xa4#,##,##0.00)\",\r\n guz: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n gv: \"\\xa4#,##0.00\",\r\n ha: \"\\xa4\\xa0#,##0.00\",\r\n \"ha-GH\": \"\\xa4\\xa0#,##0.00\",\r\n \"ha-NE\": \"\\xa4\\xa0#,##0.00\",\r\n haw: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n he: \"#,##0.00\\xa0\\xa4\",\r\n hi: \"\\xa4#,##,##0.00\",\r\n hr: \"#,##0.00\\xa0\\xa4\",\r\n \"hr-BA\": \"#,##0.00\\xa0\\xa4\",\r\n hsb: \"#,##0.00\\xa0\\xa4\",\r\n hu: \"#,##0.00\\xa0\\xa4\",\r\n hy: \"#,##0.00\\xa0\\xa4\",\r\n ia: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n id: \"\\xa4#,##0.00\",\r\n ig: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ii: \"\\xa4\\xa0#,##0.00\",\r\n is: \"#,##0.00\\xa0\\xa4\",\r\n it: \"#,##0.00\\xa0\\xa4\",\r\n \"it-CH\": \"#,##0.00\\xa0\\xa4\",\r\n \"it-SM\": \"#,##0.00\\xa0\\xa4\",\r\n \"it-VA\": \"#,##0.00\\xa0\\xa4\",\r\n ja: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n jgo: \"\\xa4\\xa0#,##0.00\",\r\n jmc: \"\\xa4#,##0.00\",\r\n jv: \"\\xa4\\xa0#,##0.00\",\r\n ka: \"#,##0.00\\xa0\\xa4\",\r\n kab: \"#,##0.00\\xa4\",\r\n kam: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kde: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kea: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n khq: \"#,##0.00\\xa4\",\r\n ki: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kk: \"#,##0.00\\xa0\\xa4\",\r\n kkj: \"\\xa4\\xa0#,##0.00\",\r\n kl: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n kln: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n km: \"#,##0.00\\xa4;(#,##0.00\\xa4)\",\r\n kn: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ko: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ko-KP\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kok: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ks: \"\\xa4\\xa0#,##,##0.00\",\r\n \"ks-Arab\": \"\\xa4\\xa0#,##,##0.00\",\r\n ksb: \"#,##0.00\\xa4\",\r\n ksf: \"#,##0.00\\xa0\\xa4\",\r\n ksh: \"#,##0.00\\xa0\\xa4\",\r\n ku: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n kw: \"\\xa4#,##0.00\",\r\n ky: \"#,##0.00\\xa0\\xa4\",\r\n lag: \"\\xa4\\xa0#,##0.00\",\r\n lb: \"#,##0.00\\xa0\\xa4\",\r\n lg: \"#,##0.00\\xa4\",\r\n lkt: \"\\xa4\\xa0#,##0.00\",\r\n ln: \"#,##0.00\\xa0\\xa4\",\r\n \"ln-AO\": \"#,##0.00\\xa0\\xa4\",\r\n \"ln-CF\": \"#,##0.00\\xa0\\xa4\",\r\n \"ln-CG\": \"#,##0.00\\xa0\\xa4\",\r\n lo: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n lrc: \"\\xa4\\xa0#,##0.00\",\r\n \"lrc-IQ\": \"\\xa4\\xa0#,##0.00\",\r\n lt: \"#,##0.00\\xa0\\xa4\",\r\n lu: \"#,##0.00\\xa4\",\r\n luo: \"#,##0.00\\xa4\",\r\n luy: \"\\xa4#,##0.00;\\xa4-\\xa0#,##0.00\",\r\n lv: \"#,##0.00\\xa0\\xa4\",\r\n mai: \"\\xa4\\xa0#,##0.00\",\r\n mas: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"mas-TZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mer: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mfe: \"\\xa4\\xa0#,##0.00\",\r\n mg: \"\\xa4#,##0.00\",\r\n mgh: \"\\xa4\\xa0#,##0.00\",\r\n mgo: \"\\xa4\\xa0#,##0.00\",\r\n mi: \"\\xa4\\xa0#,##0.00\",\r\n mk: \"#,##0.00\\xa0\\xa4\",\r\n ml: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mn: \"\\xa4\\xa0#,##0.00\",\r\n mni: \"\\xa4\\xa0#,##0.00\",\r\n \"mni-Beng\": \"\\xa4\\xa0#,##0.00\",\r\n mr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ms: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ms-BN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ms-ID\": \"\\xa4#,##0.00\",\r\n \"ms-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mt: \"\\xa4#,##0.00\",\r\n mua: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n my: \"\\xa4\\xa0#,##0.00\",\r\n mzn: \"\\xa4\\xa0#,##0.00\",\r\n naq: \"\\xa4#,##0.00\",\r\n nb: \"\\xa4\\xa0#,##0.00\",\r\n \"nb-SJ\": \"\\xa4\\xa0#,##0.00\",\r\n nd: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n nds: \"\\xa4\\xa0#,##0.00\",\r\n \"nds-NL\": \"\\xa4\\xa0#,##0.00\",\r\n ne: \"\\xa4\\xa0#,##,##0.00\",\r\n \"ne-IN\": \"\\xa4\\xa0#,##,##0.00\",\r\n nl: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-AW\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-BE\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-BQ\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-CW\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-SR\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-SX\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n nmg: \"#,##0.00\\xa0\\xa4\",\r\n nn: \"#,##0.00\\xa0\\xa4\",\r\n nnh: \"\\xa4\\xa0#,##0.00\",\r\n no: \"\\xa4\\xa0#,##0.00\",\r\n nus: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n nyn: \"\\xa4#,##0.00\",\r\n om: \"\\xa4#,##0.00\",\r\n \"om-KE\": \"\\xa4#,##0.00\",\r\n or: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n os: \"\\xa4\\xa0#,##0.00\",\r\n \"os-RU\": \"\\xa4\\xa0#,##0.00\",\r\n pa: \"\\xa4\\xa0#,##0.00\",\r\n \"pa-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n \"pa-Guru\": \"\\xa4\\xa0#,##0.00\",\r\n pcm: \"\\xa4#,##0.00\",\r\n pl: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n ps: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ps-PK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n pt: \"\\xa4\\xa0#,##0.00\",\r\n \"pt-AO\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-CH\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-CV\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-GQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-GW\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-LU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-MO\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-MZ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-PT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-ST\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-TL\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n qu: \"\\xa4\\xa0#,##0.00\",\r\n \"qu-BO\": \"\\xa4\\xa0#,##0.00\",\r\n \"qu-EC\": \"\\xa4\\xa0#,##0.00\",\r\n rm: \"#,##0.00\\xa0\\xa4\",\r\n rn: \"#,##0.00\\xa4\",\r\n ro: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ro-MD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n rof: \"\\xa4#,##0.00\",\r\n root: \"\\xa4\\xa0#,##0.00\",\r\n ru: \"#,##0.00\\xa0\\xa4\",\r\n \"ru-BY\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-KG\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-KZ\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-MD\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-UA\": \"#,##0.00\\xa0\\xa4\",\r\n rw: \"\\xa4\\xa0#,##0.00\",\r\n rwk: \"#,##0.00\\xa4\",\r\n sa: \"\\xa4\\xa0#,##0.00\",\r\n sah: \"#,##0.00\\xa0\\xa4\",\r\n saq: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n sat: \"\\xa4\\xa0#,##0.00\",\r\n \"sat-Olck\": \"\\xa4\\xa0#,##0.00\",\r\n sbp: \"#,##0.00\\xa4\",\r\n sd: \"\\xa4\\xa0#,##0.00\",\r\n \"sd-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n \"sd-Deva\": \"\\xa4\\xa0#,##0.00\",\r\n se: \"#,##0.00\\xa0\\xa4\",\r\n \"se-FI\": \"#,##0.00\\xa0\\xa4\",\r\n \"se-SE\": \"#,##0.00\\xa0\\xa4\",\r\n seh: \"#,##0.00\\xa4\",\r\n ses: \"#,##0.00\\xa4\",\r\n sg: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n shi: \"#,##0.00\\xa4\",\r\n \"shi-Latn\": \"#,##0.00\\xa4\",\r\n \"shi-Tfng\": \"#,##0.00\\xa4\",\r\n si: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n sk: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n sl: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n smn: \"#,##0.00\\xa0\\xa4\",\r\n sn: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n so: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"so-DJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"so-ET\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"so-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n sq: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sq-MK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sq-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n sr: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl-BA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl-ME\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn-BA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn-ME\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n su: \"\\xa4#,##0.00\",\r\n \"su-Latn\": \"\\xa4#,##0.00\",\r\n sv: \"#,##0.00\\xa0\\xa4\",\r\n \"sv-AX\": \"#,##0.00\\xa0\\xa4\",\r\n \"sv-FI\": \"#,##0.00\\xa0\\xa4\",\r\n sw: \"\\xa4\\xa0#,##0.00\",\r\n \"sw-CD\": \"\\xa4\\xa0#,##0.00\",\r\n \"sw-KE\": \"\\xa4\\xa0#,##0.00\",\r\n \"sw-UG\": \"\\xa4\\xa0#,##0.00\",\r\n ta: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ta-LK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ta-MY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ta-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n te: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n teo: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"teo-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n tg: \"#,##0.00\\xa0\\xa4\",\r\n th: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ti: \"\\xa4#,##0.00\",\r\n \"ti-ER\": \"\\xa4#,##0.00\",\r\n tk: \"#,##0.00\\xa0\\xa4\",\r\n to: \"\\xa4\\xa0#,##0.00\",\r\n tr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"tr-CY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n tt: \"#,##0.00\\xa0\\xa4\",\r\n twq: \"#,##0.00\\xa4\",\r\n tzm: \"#,##0.00\\xa0\\xa4\",\r\n ug: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n uk: \"#,##0.00\\xa0\\xa4\",\r\n ur: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ur-IN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n uz: \"#,##0.00\\xa0\\xa4\",\r\n \"uz-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n \"uz-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n \"uz-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n vai: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"vai-Latn\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"vai-Vaii\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n vi: \"#,##0.00\\xa0\\xa4\",\r\n vun: \"\\xa4#,##0.00\",\r\n wae: \"\\xa4\\xa0#,##0.00\",\r\n wo: \"\\xa4\\xa0#,##0.00\",\r\n xh: \"\\xa4#,##0.00\",\r\n xog: \"#,##0.00\\xa0\\xa4\",\r\n yav: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n yi: \"\\xa4\\xa0#,##0.00\",\r\n yo: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"yo-BJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n yue: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"yue-Hans\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"yue-Hant\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n zgh: \"#,##0.00\\xa4\",\r\n zh: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hant\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hant-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hant-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n zu: \"\\xa4#,##0.00;(\\xa4#,##0.00)\"\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/intl/number.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dxConfig from \"../../core/config\";\r\nimport localizationCoreUtils from \"../core\";\r\nimport openXmlCurrencyFormat from \"../open_xml_currency_format\";\r\nimport accountingFormats from \"../cldr-data/accounting_formats\";\r\nvar detectCurrencySymbolRegex = /([^\\s0]+)?(\\s*)0*[.,]*0*(\\s*)([^\\s0]+)?/;\r\nvar formattersCache = {};\r\nvar getFormatter = format => {\r\n var key = localizationCoreUtils.locale() + \"/\" + JSON.stringify(format);\r\n if (!formattersCache[key]) {\r\n formattersCache[key] = new Intl.NumberFormat(localizationCoreUtils.locale(), format).format\r\n }\r\n return formattersCache[key]\r\n};\r\nvar getCurrencyFormatter = currency => new Intl.NumberFormat(localizationCoreUtils.locale(), {\r\n style: \"currency\",\r\n currency: currency\r\n});\r\nexport default {\r\n engine: function() {\r\n return \"intl\"\r\n },\r\n _formatNumberCore: function(value, format, formatConfig) {\r\n if (\"exponential\" === format) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)\r\n },\r\n _normalizeFormatConfig: function(format, formatConfig, value) {\r\n var config;\r\n if (\"decimal\" === format) {\r\n config = {\r\n minimumIntegerDigits: formatConfig.precision || void 0,\r\n useGrouping: false,\r\n maximumFractionDigits: String(value).length,\r\n round: value < 0 ? \"ceil\" : \"floor\"\r\n }\r\n } else {\r\n config = this._getPrecisionConfig(formatConfig.precision)\r\n }\r\n if (\"percent\" === format) {\r\n config.style = \"percent\"\r\n } else if (\"currency\" === format) {\r\n config.style = \"currency\";\r\n config.currency = formatConfig.currency || dxConfig().defaultCurrency\r\n }\r\n return config\r\n },\r\n _getPrecisionConfig: function(precision) {\r\n var config;\r\n if (null === precision) {\r\n config = {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 20\r\n }\r\n } else {\r\n config = {\r\n minimumFractionDigits: precision || 0,\r\n maximumFractionDigits: precision || 0\r\n }\r\n }\r\n return config\r\n },\r\n format: function(value, _format) {\r\n if (\"number\" !== typeof value) {\r\n return value\r\n }\r\n _format = this._normalizeFormat(_format);\r\n if (\"default\" === _format.currency) {\r\n _format.currency = dxConfig().defaultCurrency\r\n }\r\n if (!_format || \"function\" !== typeof _format && !_format.type && !_format.formatter) {\r\n return getFormatter(_format)(value)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getCurrencySymbolInfo: function(currency) {\r\n var formatter = getCurrencyFormatter(currency);\r\n return this._extractCurrencySymbolInfo(formatter.format(0))\r\n },\r\n _extractCurrencySymbolInfo: function(currencyValueString) {\r\n var match = detectCurrencySymbolRegex.exec(currencyValueString) || [];\r\n var position = match[1] ? \"before\" : \"after\";\r\n var symbol = match[1] || match[4] || \"\";\r\n var delimiter = match[2] || match[3] || \"\";\r\n return {\r\n position: position,\r\n symbol: symbol,\r\n delimiter: delimiter\r\n }\r\n },\r\n getCurrencySymbol: function(currency) {\r\n if (!currency) {\r\n currency = dxConfig().defaultCurrency\r\n }\r\n var symbolInfo = this._getCurrencySymbolInfo(currency);\r\n return {\r\n symbol: symbolInfo.symbol\r\n }\r\n },\r\n getOpenXmlCurrencyFormat: function(currency) {\r\n var targetCurrency = currency || dxConfig().defaultCurrency;\r\n var currencySymbol = this._getCurrencySymbolInfo(targetCurrency).symbol;\r\n var closestAccountingFormat = localizationCoreUtils.getValueByClosestLocale(locale => accountingFormats[locale]);\r\n return openXmlCurrencyFormat(currencySymbol, closestAccountingFormat)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/number.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport {\r\n inArray,\r\n find\r\n} from \"../core/utils/array\";\r\nimport {\r\n escapeRegExp\r\n} from \"../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n getFormatter\r\n} from \"./ldml/number\";\r\nimport config from \"../core/config\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n toFixed\r\n} from \"./utils\";\r\nimport currencyLocalization from \"./currency\";\r\nimport intlNumberLocalization from \"./intl/number\";\r\nvar hasIntl = \"undefined\" !== typeof Intl;\r\nvar MAX_LARGE_NUMBER_POWER = 4;\r\nvar DECIMAL_BASE = 10;\r\nvar NUMERIC_FORMATS = [\"currency\", \"fixedpoint\", \"exponential\", \"percent\", \"decimal\"];\r\nvar LargeNumberFormatPostfixes = {\r\n 1: \"K\",\r\n 2: \"M\",\r\n 3: \"B\",\r\n 4: \"T\"\r\n};\r\nvar LargeNumberFormatPowers = {\r\n largenumber: \"auto\",\r\n thousands: 1,\r\n millions: 2,\r\n billions: 3,\r\n trillions: 4\r\n};\r\nvar numberLocalization = dependencyInjector({\r\n engine: function() {\r\n return \"base\"\r\n },\r\n numericFormats: NUMERIC_FORMATS,\r\n defaultLargeNumberFormatPostfixes: LargeNumberFormatPostfixes,\r\n _parseNumberFormatString: function(formatType) {\r\n var formatObject = {};\r\n if (!formatType || \"string\" !== typeof formatType) {\r\n return\r\n }\r\n var formatList = formatType.toLowerCase().split(\" \");\r\n each(formatList, (index, value) => {\r\n if (inArray(value, NUMERIC_FORMATS) > -1) {\r\n formatObject.formatType = value\r\n } else if (value in LargeNumberFormatPowers) {\r\n formatObject.power = LargeNumberFormatPowers[value]\r\n }\r\n });\r\n if (formatObject.power && !formatObject.formatType) {\r\n formatObject.formatType = \"fixedpoint\"\r\n }\r\n if (formatObject.formatType) {\r\n return formatObject\r\n }\r\n },\r\n _calculateNumberPower: function(value, base, minPower, maxPower) {\r\n var number = Math.abs(value);\r\n var power = 0;\r\n if (number > 1) {\r\n while (number && number >= base && (void 0 === maxPower || power < maxPower)) {\r\n power++;\r\n number /= base\r\n }\r\n } else if (number > 0 && number < 1) {\r\n while (number < 1 && (void 0 === minPower || power > minPower)) {\r\n power--;\r\n number *= base\r\n }\r\n }\r\n return power\r\n },\r\n _getNumberByPower: function(number, power, base) {\r\n var result = number;\r\n while (power > 0) {\r\n result /= base;\r\n power--\r\n }\r\n while (power < 0) {\r\n result *= base;\r\n power++\r\n }\r\n return result\r\n },\r\n _formatNumber: function(value, formatObject, formatConfig) {\r\n if (\"auto\" === formatObject.power) {\r\n formatObject.power = this._calculateNumberPower(value, 1e3, 0, MAX_LARGE_NUMBER_POWER)\r\n }\r\n if (formatObject.power) {\r\n value = this._getNumberByPower(value, formatObject.power, 1e3)\r\n }\r\n var powerPostfix = this.defaultLargeNumberFormatPostfixes[formatObject.power] || \"\";\r\n var result = this._formatNumberCore(value, formatObject.formatType, formatConfig);\r\n result = result.replace(/(\\d|.$)(\\D*)$/, \"$1\" + powerPostfix + \"$2\");\r\n return result\r\n },\r\n _formatNumberExponential: function(value, formatConfig) {\r\n var power = this._calculateNumberPower(value, DECIMAL_BASE);\r\n var number = this._getNumberByPower(value, power, DECIMAL_BASE);\r\n if (void 0 === formatConfig.precision) {\r\n formatConfig.precision = 1\r\n }\r\n if (number.toFixed(formatConfig.precision || 0) >= DECIMAL_BASE) {\r\n power++;\r\n number /= DECIMAL_BASE\r\n }\r\n var powString = (power >= 0 ? \"+\" : \"\") + power.toString();\r\n return this._formatNumberCore(number, \"fixedpoint\", formatConfig) + \"E\" + powString\r\n },\r\n _addZeroes: function(value, precision) {\r\n var multiplier = Math.pow(10, precision);\r\n var sign = value < 0 ? \"-\" : \"\";\r\n value = (Math.abs(value) * multiplier >>> 0) / multiplier;\r\n var result = value.toString();\r\n while (result.length < precision) {\r\n result = \"0\" + result\r\n }\r\n return sign + result\r\n },\r\n _addGroupSeparators: function(value) {\r\n var parts = value.toString().split(\".\");\r\n return parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, config().thousandsSeparator) + (parts[1] ? config().decimalSeparator + parts[1] : \"\")\r\n },\r\n _formatNumberCore: function(value, format, formatConfig) {\r\n if (\"exponential\" === format) {\r\n return this._formatNumberExponential(value, formatConfig)\r\n }\r\n if (\"decimal\" !== format && null !== formatConfig.precision) {\r\n formatConfig.precision = formatConfig.precision || 0\r\n }\r\n if (\"percent\" === format) {\r\n value *= 100\r\n }\r\n if (void 0 !== formatConfig.precision) {\r\n if (\"decimal\" === format) {\r\n value = this._addZeroes(value, formatConfig.precision)\r\n } else {\r\n value = null === formatConfig.precision ? value.toPrecision() : toFixed(value, formatConfig.precision)\r\n }\r\n }\r\n if (\"decimal\" !== format) {\r\n value = this._addGroupSeparators(value)\r\n } else {\r\n value = value.toString().replace(\".\", config().decimalSeparator)\r\n }\r\n if (\"percent\" === format) {\r\n value += \"%\"\r\n }\r\n return value\r\n },\r\n _normalizeFormat: function(format) {\r\n if (!format) {\r\n return {}\r\n }\r\n if (\"function\" === typeof format) {\r\n return format\r\n }\r\n if (!isPlainObject(format)) {\r\n format = {\r\n type: format\r\n }\r\n }\r\n return format\r\n },\r\n _getSeparators: function() {\r\n return {\r\n decimalSeparator: this.getDecimalSeparator(),\r\n thousandsSeparator: this.getThousandsSeparator()\r\n }\r\n },\r\n getThousandsSeparator: function() {\r\n return this.format(1e4, \"fixedPoint\")[2]\r\n },\r\n getDecimalSeparator: function() {\r\n return this.format(1.2, {\r\n type: \"fixedPoint\",\r\n precision: 1\r\n })[1]\r\n },\r\n convertDigits: function(value, toStandard) {\r\n var digits = this.format(90, \"decimal\");\r\n if (\"string\" !== typeof value || \"0\" === digits[1]) {\r\n return value\r\n }\r\n var fromFirstDigit = toStandard ? digits[1] : \"0\";\r\n var toFirstDigit = toStandard ? \"0\" : digits[1];\r\n var fromLastDigit = toStandard ? digits[0] : \"9\";\r\n var regExp = new RegExp(\"[\" + fromFirstDigit + \"-\" + fromLastDigit + \"]\", \"g\");\r\n return value.replace(regExp, char => String.fromCharCode(char.charCodeAt(0) + (toFirstDigit.charCodeAt(0) - fromFirstDigit.charCodeAt(0))))\r\n },\r\n getNegativeEtalonRegExp: function(format) {\r\n var separators = this._getSeparators();\r\n var digitalRegExp = new RegExp(\"[0-9\" + escapeRegExp(separators.decimalSeparator + separators.thousandsSeparator) + \"]+\", \"g\");\r\n var negativeEtalon = this.format(-1, format).replace(digitalRegExp, \"1\");\r\n [\"\\\\\", \"(\", \")\", \"[\", \"]\", \"*\", \"+\", \"$\", \"^\", \"?\", \"|\", \"{\", \"}\"].forEach(char => {\r\n negativeEtalon = negativeEtalon.replace(char, \"\\\\\".concat(char))\r\n });\r\n negativeEtalon = negativeEtalon.replace(\" \", \"\\\\s\");\r\n negativeEtalon = negativeEtalon.replace(\"1\", \".+\");\r\n return new RegExp(negativeEtalon, \"g\")\r\n },\r\n getSign: function(text, format) {\r\n if (\"-\" === text.replace(/[^0-9-]/g, \"\").charAt(0)) {\r\n return -1\r\n }\r\n if (!format) {\r\n return 1\r\n }\r\n var negativeEtalon = this.getNegativeEtalonRegExp(format);\r\n return text.match(negativeEtalon) ? -1 : 1\r\n },\r\n format: function(value, _format) {\r\n if (\"number\" !== typeof value) {\r\n return value\r\n }\r\n if (\"number\" === typeof _format) {\r\n return value\r\n }\r\n _format = _format && _format.formatter || _format;\r\n if (\"function\" === typeof _format) {\r\n return _format(value)\r\n }\r\n _format = this._normalizeFormat(_format);\r\n if (!_format.type) {\r\n _format.type = \"decimal\"\r\n }\r\n var numberConfig = this._parseNumberFormatString(_format.type);\r\n if (!numberConfig) {\r\n var formatterConfig = this._getSeparators();\r\n formatterConfig.unlimitedIntegerDigits = _format.unlimitedIntegerDigits;\r\n return this.convertDigits(getFormatter(_format.type, formatterConfig)(value))\r\n }\r\n return this._formatNumber(value, numberConfig, _format)\r\n },\r\n parse: function(text, format) {\r\n if (!text) {\r\n return\r\n }\r\n if (format && format.parser) {\r\n return format.parser(text)\r\n }\r\n text = this.convertDigits(text, true);\r\n if (format && \"string\" !== typeof format) {\r\n errors.log(\"W0011\")\r\n }\r\n var decimalSeparator = this.getDecimalSeparator();\r\n var regExp = new RegExp(\"[^0-9\" + escapeRegExp(decimalSeparator) + \"]\", \"g\");\r\n var cleanedText = text.replace(regExp, \"\").replace(decimalSeparator, \".\").replace(/\\.$/g, \"\");\r\n if (\".\" === cleanedText || \"\" === cleanedText) {\r\n return null\r\n }\r\n if (this._calcSignificantDigits(cleanedText) > 15) {\r\n return NaN\r\n }\r\n var parsed = +cleanedText * this.getSign(text, format);\r\n format = this._normalizeFormat(format);\r\n var formatConfig = this._parseNumberFormatString(format.type);\r\n var power = null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.power;\r\n if (power) {\r\n if (\"auto\" === power) {\r\n var match = text.match(/\\d(K|M|B|T)/);\r\n if (match) {\r\n power = find(Object.keys(LargeNumberFormatPostfixes), power => LargeNumberFormatPostfixes[power] === match[1])\r\n }\r\n }\r\n parsed *= Math.pow(10, 3 * power)\r\n }\r\n if (\"percent\" === (null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.formatType)) {\r\n parsed /= 100\r\n }\r\n return parsed\r\n },\r\n _calcSignificantDigits: function(text) {\r\n var [integer, fractional] = text.split(\".\");\r\n var calcDigitsAfterLeadingZeros = digits => {\r\n var index = -1;\r\n for (var i = 0; i < digits.length; i++) {\r\n if (\"0\" !== digits[i]) {\r\n index = i;\r\n break\r\n }\r\n }\r\n return index > -1 ? digits.length - index : 0\r\n };\r\n var result = 0;\r\n if (integer) {\r\n result += calcDigitsAfterLeadingZeros(integer.split(\"\"))\r\n }\r\n if (fractional) {\r\n result += calcDigitsAfterLeadingZeros(fractional.split(\"\").reverse())\r\n }\r\n return result\r\n }\r\n});\r\nnumberLocalization.inject(currencyLocalization);\r\nif (hasIntl) {\r\n numberLocalization.inject(intlNumberLocalization)\r\n}\r\nexport default numberLocalization;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/utils.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar getRealSeparatorIndex = function(str) {\r\n var quoteBalance = 0;\r\n var separatorCount = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n if (\"'\" === str[i]) {\r\n quoteBalance++\r\n }\r\n if (\".\" === str[i]) {\r\n ++separatorCount;\r\n if (quoteBalance % 2 === 0) {\r\n return {\r\n occurrence: separatorCount,\r\n index: i\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n occurrence: 1,\r\n index: -1\r\n }\r\n};\r\nvar getNthOccurrence = function(str, c, n) {\r\n var i = -1;\r\n while (n-- && i++ < str.length) {\r\n i = str.indexOf(c, i)\r\n }\r\n return i\r\n};\r\nvar splitByIndex = function(str, index) {\r\n if (-1 === index) {\r\n return [str]\r\n }\r\n return [str.slice(0, index), str.slice(index + 1)]\r\n};\r\nexport {\r\n getRealSeparatorIndex,\r\n getNthOccurrence,\r\n splitByIndex\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.caret.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n escapeRegExp\r\n} from \"../../core/utils/common\";\r\nimport number from \"../../localization/number\";\r\nimport {\r\n getRealSeparatorIndex,\r\n getNthOccurrence,\r\n splitByIndex\r\n} from \"./utils\";\r\nexport var getCaretBoundaries = function(text, format) {\r\n if (\"string\" === typeof format) {\r\n var signParts = format.split(\";\");\r\n var sign = number.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n format = signParts[sign < 0 ? 1 : 0];\r\n format = (str = format, str.replace(/'([^']*)'/g, str => str.split(\"\").map(() => \" \").join(\"\").substr(2)));\r\n var prefixStubLength = /^[^#0.,]*/.exec(format)[0].length;\r\n var postfixStubLength = /[^#0.,]*$/.exec(format)[0].length;\r\n return {\r\n start: prefixStubLength,\r\n end: text.length - postfixStubLength\r\n }\r\n } else {\r\n return {\r\n start: 0,\r\n end: text.length\r\n }\r\n }\r\n var str\r\n};\r\nvar _getDigitCountBeforeIndex = function(index, text) {\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var regExp = new RegExp(\"[^0-9\" + escapeRegExp(decimalSeparator) + \"]\", \"g\");\r\n var textBeforePosition = text.slice(0, index);\r\n return textBeforePosition.replace(regExp, \"\").length\r\n};\r\nvar _reverseText = function(text) {\r\n return text.split(\"\").reverse().join(\"\")\r\n};\r\nvar _getDigitPositionByIndex = function(digitIndex, text) {\r\n if (!digitIndex) {\r\n return -1\r\n }\r\n var regExp = /[0-9]/g;\r\n var counter = 1;\r\n var index = null;\r\n var result = regExp.exec(text);\r\n while (result) {\r\n index = result.index;\r\n if (counter >= digitIndex) {\r\n return index\r\n }\r\n counter++;\r\n result = regExp.exec(text)\r\n }\r\n return null === index ? text.length : index\r\n};\r\nvar _trimNonNumericCharsFromEnd = function(text) {\r\n return text.replace(/[^0-9e]+$/, \"\")\r\n};\r\nexport var getCaretWithOffset = function(caret, offset) {\r\n if (void 0 === caret.start) {\r\n caret = {\r\n start: caret,\r\n end: caret\r\n }\r\n }\r\n return {\r\n start: caret.start + offset,\r\n end: caret.end + offset\r\n }\r\n};\r\nexport var getCaretAfterFormat = function(text, formatted, caret, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var point = number.getDecimalSeparator();\r\n var isSeparatorBasedText = isSeparatorBasedString(text);\r\n var realSeparatorOccurrenceIndex = getRealSeparatorIndex(format).occurrence;\r\n var pointPosition = isSeparatorBasedText ? 0 : getNthOccurrence(text, point, realSeparatorOccurrenceIndex);\r\n var newPointPosition = getNthOccurrence(formatted, point, realSeparatorOccurrenceIndex);\r\n var textParts = splitByIndex(text, pointPosition);\r\n var formattedParts = splitByIndex(formatted, newPointPosition);\r\n var isCaretOnFloat = -1 !== pointPosition && caret.start > pointPosition;\r\n if (isCaretOnFloat) {\r\n var relativeIndex = caret.start - pointPosition - 1;\r\n var digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]);\r\n var newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length;\r\n return getCaretInBoundaries(newPosition, formatted, format)\r\n } else {\r\n var formattedIntPart = _trimNonNumericCharsFromEnd(formattedParts[0]);\r\n var positionFromEnd = textParts[0].length - caret.start;\r\n var digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0]));\r\n var newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart));\r\n var newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1);\r\n return getCaretInBoundaries(newPositionFromBegin, formatted, format)\r\n }\r\n};\r\n\r\nfunction isSeparatorBasedString(text) {\r\n return 1 === text.length && !!text.match(/^[,.][0-9]*$/g)\r\n}\r\nexport var isCaretInBoundaries = function(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretInBoundaries(caret, text, format);\r\n return caret.start >= boundaries.start && caret.end <= boundaries.end\r\n};\r\nexport function getCaretInBoundaries(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretBoundaries(text, format);\r\n var adjustedCaret = {\r\n start: fitIntoRange(caret.start, boundaries.start, boundaries.end),\r\n end: fitIntoRange(caret.end, boundaries.start, boundaries.end)\r\n };\r\n return adjustedCaret\r\n}\r\nexport var getCaretOffset = function(previousText, newText, format) {\r\n var previousBoundaries = getCaretBoundaries(previousText, format);\r\n var newBoundaries = getCaretBoundaries(newText, format);\r\n return newBoundaries.start - previousBoundaries.start\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.spin.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n lock\r\n} from \"../../events/core/emitter.feedback\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_BUTTON_CLASS = \"dx-numberbox-spin-button\";\r\nvar SPIN_HOLD_DELAY = 100;\r\nvar NUMBER_BOX = \"dxNumberBox\";\r\nvar POINTERUP_EVENT_NAME = addNamespace(pointerEvents.up, NUMBER_BOX);\r\nvar POINTERCANCEL_EVENT_NAME = addNamespace(pointerEvents.cancel, NUMBER_BOX);\r\nvar SpinButton = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n direction: \"up\",\r\n onChange: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n var direction = SPIN_CLASS + \"-\" + this.option(\"direction\");\r\n this.$element().addClass(SPIN_BUTTON_CLASS).addClass(direction);\r\n this._spinIcon = $(\"
    \").addClass(direction + \"-icon\").appendTo(this.$element())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n var eventName = addNamespace(pointerEvents.down, this.NAME);\r\n var $element = this.$element();\r\n eventsEngine.off($element, eventName);\r\n eventsEngine.on($element, eventName, this._spinDownHandler.bind(this));\r\n this._spinChangeHandler = this._createActionByOption(\"onChange\")\r\n },\r\n _spinDownHandler: function(e) {\r\n e.preventDefault();\r\n this._clearTimer();\r\n eventsEngine.on(this.$element(), holdEvent.name, function() {\r\n this._feedBackDeferred = new Deferred;\r\n lock(this._feedBackDeferred);\r\n this._spinChangeHandler({\r\n event: e\r\n });\r\n this._holdTimer = setInterval(this._spinChangeHandler, SPIN_HOLD_DELAY, {\r\n event: e\r\n })\r\n }.bind(this));\r\n var document = domAdapter.getDocument();\r\n eventsEngine.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this));\r\n eventsEngine.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this));\r\n this._spinChangeHandler({\r\n event: e\r\n })\r\n },\r\n _dispose: function() {\r\n this._clearTimer();\r\n this.callBase()\r\n },\r\n _clearTimer: function() {\r\n eventsEngine.off(this.$element(), holdEvent.name);\r\n var document = domAdapter.getDocument();\r\n eventsEngine.off(document, POINTERUP_EVENT_NAME);\r\n eventsEngine.off(document, POINTERCANCEL_EVENT_NAME);\r\n if (this._feedBackDeferred) {\r\n this._feedBackDeferred.resolve()\r\n }\r\n if (this._holdTimer) {\r\n clearInterval(this._holdTimer)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onChange\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default SpinButton;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.spins.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport TextEditorButton from \"../text_box/texteditor_button_collection/button\";\r\nimport SpinButton from \"./number_box.spin\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointer from \"../../events/pointer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_CONTAINER_CLASS = \"dx-numberbox-spin-container\";\r\nvar SPIN_TOUCH_FRIENDLY_CLASS = \"dx-numberbox-spin-touch-friendly\";\r\nexport default class SpinButtons extends TextEditorButton {\r\n _attachEvents(instance, $spinContainer) {\r\n var {\r\n editor: editor\r\n } = this;\r\n var eventName = addNamespace(pointer.down, editor.NAME);\r\n var $spinContainerChildren = $spinContainer.children();\r\n var pointerDownAction = editor._createAction(e => editor._spinButtonsPointerDownHandler(e));\r\n eventsEngine.off($spinContainer, eventName);\r\n eventsEngine.on($spinContainer, eventName, e => pointerDownAction({\r\n event: e\r\n }));\r\n SpinButton.getInstance($spinContainerChildren.eq(0)).option(\"onChange\", e => editor._spinUpChangeHandler(e));\r\n SpinButton.getInstance($spinContainerChildren.eq(1)).option(\"onChange\", e => editor._spinDownChangeHandler(e))\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $spinContainer = $(\"
    \").addClass(SPIN_CONTAINER_CLASS);\r\n var $spinUp = $(\"
    \").appendTo($spinContainer);\r\n var $spinDown = $(\"
    \").appendTo($spinContainer);\r\n var options = this._getOptions();\r\n this._addToContainer($spinContainer);\r\n editor._createComponent($spinUp, SpinButton, extend({\r\n direction: \"up\"\r\n }, options));\r\n editor._createComponent($spinDown, SpinButton, extend({\r\n direction: \"down\"\r\n }, options));\r\n this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible);\r\n return {\r\n instance: $spinContainer,\r\n $element: $spinContainer\r\n }\r\n }\r\n _getOptions() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var visible = this._isVisible();\r\n var disabled = editor.option(\"disabled\");\r\n return {\r\n visible: visible,\r\n disabled: disabled\r\n }\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return super._isVisible() && editor.option(\"showSpinButtons\")\r\n }\r\n _isTouchFriendly() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return editor.option(\"showSpinButtons\") && editor.option(\"useLargeSpinButtons\")\r\n }\r\n _legacyRender($editor, isTouchFriendly, isVisible) {\r\n $editor.toggleClass(SPIN_TOUCH_FRIENDLY_CLASS, isTouchFriendly);\r\n $editor.toggleClass(SPIN_CLASS, isVisible)\r\n }\r\n update() {\r\n var shouldUpdate = super.update();\r\n if (shouldUpdate) {\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var isVisible = this._isVisible();\r\n var isTouchFriendly = this._isTouchFriendly();\r\n var $spinButtons = instance.children();\r\n var spinUp = SpinButton.getInstance($spinButtons.eq(0));\r\n var spinDown = SpinButton.getInstance($spinButtons.eq(1));\r\n var options = this._getOptions();\r\n spinUp.option(options);\r\n spinDown.option(options);\r\n this._legacyRender($editor, isTouchFriendly, isVisible)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n applyServerDecimalSeparator,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fitIntoRange,\r\n inRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport devices from \"../../core/devices\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport TextEditor from \"../text_box/ui.text_editor\";\r\nimport {\r\n addNamespace,\r\n getChar,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport SpinButtons from \"./number_box.spins\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar math = Math;\r\nvar WIDGET_CLASS = \"dx-numberbox\";\r\nvar FIREFOX_CONTROL_KEYS = [\"tab\", \"del\", \"backspace\", \"leftArrow\", \"rightArrow\", \"home\", \"end\", \"enter\"];\r\nvar FORCE_VALUECHANGE_EVENT_NAMESPACE = \"NumberBoxForceValueChange\";\r\nvar NumberBoxBase = TextEditor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n upArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinUpChangeHandler(e)\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinDownChangeHandler(e)\r\n }\r\n },\r\n enter: function() {}\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: 0,\r\n min: void 0,\r\n max: void 0,\r\n step: 1,\r\n showSpinButtons: false,\r\n useLargeSpinButtons: true,\r\n mode: \"text\",\r\n invalidValueMessage: messageLocalization.format(\"dxNumberBox-invalidValueMessage\"),\r\n buttons: void 0\r\n })\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"spins\",\r\n Ctor: SpinButtons\r\n }])\r\n },\r\n _isSupportInputMode: function() {\r\n var version = parseFloat(browser.version);\r\n return browser.chrome && version >= 66 || browser.safari && version >= 12 || browser.msie && version >= 75\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return devices.real().generic && !devices.isSimulator()\r\n },\r\n options: {\r\n useLargeSpinButtons: false\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" !== devices.real().deviceType && !this._isSupportInputMode()\r\n }.bind(this),\r\n options: {\r\n mode: \"number\"\r\n }\r\n }])\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.$element().addClass(WIDGET_CLASS);\r\n this.callBase()\r\n },\r\n _getDefaultAttributes: function() {\r\n var attributes = this.callBase();\r\n attributes.inputmode = \"decimal\";\r\n return attributes\r\n },\r\n _renderContentImpl: function() {\r\n this.option(\"isValid\") && this._validateValue(this.option(\"value\"));\r\n this.setAria(\"role\", \"spinbutton\")\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue(this.option(\"value\"))\r\n },\r\n _setSubmitValue: function(value) {\r\n this._getSubmitElement().val(applyServerDecimalSeparator(value))\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _keyPressHandler: function(e) {\r\n this.callBase(e);\r\n var char = getChar(e);\r\n var isInputCharValid = /[\\d.,eE\\-+]|Subtract/.test(char);\r\n if (!isInputCharValid) {\r\n var keyName = normalizeKeyName(e);\r\n if (isCommandKeyPressed(e) || keyName && inArray(keyName, FIREFOX_CONTROL_KEYS) >= 0) {\r\n return\r\n }\r\n e.preventDefault();\r\n return false\r\n }\r\n this._keyPressed = true\r\n },\r\n _onMouseWheel: function(dxEvent) {\r\n dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent)\r\n },\r\n _renderValue: function() {\r\n var inputValue = this._input().val();\r\n var value = this.option(\"value\");\r\n if (!inputValue.length || Number(inputValue) !== value) {\r\n this._forceValueRender();\r\n this._toggleEmptinessEventHandler()\r\n }\r\n var valueText = isDefined(value) ? null : messageLocalization.format(\"dxNumberBox-noDataText\");\r\n this.setAria({\r\n valuenow: ensureDefined(value, \"\"),\r\n valuetext: valueText\r\n });\r\n this.option(\"text\", this._input().val());\r\n this._updateButtons();\r\n return (new Deferred).resolve()\r\n },\r\n _forceValueRender: function() {\r\n var value = this.option(\"value\");\r\n var number = Number(value);\r\n var formattedValue = isNaN(number) ? \"\" : this._applyDisplayValueFormatter(value);\r\n this._renderDisplayText(formattedValue)\r\n },\r\n _applyDisplayValueFormatter: function(value) {\r\n return this.option(\"displayValueFormatter\")(value)\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._input().prop({\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n step: this.option(\"step\")\r\n });\r\n this.setAria({\r\n valuemin: ensureDefined(this.option(\"min\"), \"\"),\r\n valuemax: ensureDefined(this.option(\"max\"), \"\")\r\n })\r\n },\r\n _spinButtonsPointerDownHandler: function() {\r\n var $input = this._input();\r\n if (!this.option(\"useLargeSpinButtons\") && domAdapter.getActiveElement() !== $input[0]) {\r\n eventsEngine.trigger($input, \"focus\")\r\n }\r\n },\r\n _spinUpChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(1, e.event || e)\r\n }\r\n },\r\n _spinDownChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(-1, e.event || e)\r\n }\r\n },\r\n _spinValueChange: function(sign, dxEvent) {\r\n var step = parseFloat(this.option(\"step\"));\r\n if (0 === step) {\r\n return\r\n }\r\n var value = parseFloat(this._normalizeInputValue()) || 0;\r\n value = this._correctRounding(value, step * sign);\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if (isDefined(min)) {\r\n value = Math.max(min, value)\r\n }\r\n if (isDefined(max)) {\r\n value = Math.min(max, value)\r\n }\r\n this._saveValueChangeEvent(dxEvent);\r\n this.option(\"value\", value)\r\n },\r\n _correctRounding: function(value, step) {\r\n var regex = /[,.](.*)/;\r\n var isFloatValue = regex.test(value);\r\n var isFloatStep = regex.test(step);\r\n if (isFloatValue || isFloatStep) {\r\n var valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0;\r\n var stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0;\r\n var accuracy = math.max(valueAccuracy, stepAccuracy);\r\n value = this._round(value + step, accuracy);\r\n return value\r\n }\r\n return value + step\r\n },\r\n _round: function(value, precision) {\r\n precision = precision || 0;\r\n var multiplier = Math.pow(10, precision);\r\n value *= multiplier;\r\n value = Math.round(value) / multiplier;\r\n return value\r\n },\r\n _renderValueChangeEvent: function() {\r\n this.callBase();\r\n var forceValueChangeEvent = addNamespace(\"focusout\", FORCE_VALUECHANGE_EVENT_NAMESPACE);\r\n eventsEngine.off(this.element(), forceValueChangeEvent);\r\n eventsEngine.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this))\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (\"number\" === this.option(\"mode\")) {\r\n return\r\n }\r\n var $input = this._input();\r\n var formattedValue = this._applyDisplayValueFormatter(this.option(\"value\"));\r\n $input.val(null);\r\n $input.val(formattedValue)\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var $input = this._input();\r\n var inputValue = this._normalizeText();\r\n var value = this._parseValue(inputValue);\r\n var valueHasDigits = \".\" !== inputValue && \"-\" !== inputValue;\r\n if (this._isValueValid() && !this._validateValue(value)) {\r\n $input.val(this._applyDisplayValueFormatter(value));\r\n return\r\n }\r\n if (valueHasDigits) {\r\n this.callBase(e, isNaN(value) ? null : value)\r\n }\r\n this._applyValueBoundaries(inputValue, value);\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n })\r\n },\r\n _applyValueBoundaries: function(inputValue, parsedValue) {\r\n var isValueIncomplete = this._isValueIncomplete(inputValue);\r\n var isValueCorrect = this._isValueInRange(inputValue);\r\n if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) {\r\n if (Number(inputValue) !== parsedValue) {\r\n this._input().val(this._applyDisplayValueFormatter(parsedValue))\r\n }\r\n }\r\n },\r\n _replaceCommaWithPoint: function(value) {\r\n return value.replace(\",\", \".\")\r\n },\r\n _inputIsInvalid: function() {\r\n var isNumberMode = \"number\" === this.option(\"mode\");\r\n var validityState = this._input().get(0).validity;\r\n return isNumberMode && validityState && validityState.badInput\r\n },\r\n _renderDisplayText: function(text) {\r\n if (this._inputIsInvalid()) {\r\n return\r\n }\r\n this.callBase(text)\r\n },\r\n _isValueIncomplete: function(value) {\r\n return /(^-$)|(^-?\\d*\\.$)|(\\d+e-?$)/i.test(value)\r\n },\r\n _isValueInRange: function(value) {\r\n return inRange(value, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _isNumber: function(value) {\r\n return null !== this._parseValue(value)\r\n },\r\n _validateValue: function(value) {\r\n var inputValue = this._normalizeText();\r\n var isValueValid = this._isValueValid();\r\n var isValid = true;\r\n var isNumber = this._isNumber(inputValue);\r\n if (isNaN(Number(value))) {\r\n isValid = false\r\n }\r\n if (!value && isValueValid) {\r\n isValid = true\r\n } else if (!isNumber && !isValueValid) {\r\n isValid = false\r\n }\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: this.option(\"invalidValueMessage\")\r\n }\r\n });\r\n return isValid\r\n },\r\n _normalizeInputValue: function() {\r\n return this._parseValue(this._normalizeText())\r\n },\r\n _normalizeText: function() {\r\n var value = this._input().val().trim();\r\n return this._replaceCommaWithPoint(value)\r\n },\r\n _parseValue: function(value) {\r\n var number = parseFloat(value);\r\n if (isNaN(number)) {\r\n return null\r\n }\r\n return fitIntoRange(number, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _clearValue: function() {\r\n if (this._inputIsInvalid()) {\r\n this._input().val(\"\");\r\n this._validateValue()\r\n }\r\n this.callBase()\r\n },\r\n reset: function() {\r\n if (null === this.option(\"value\")) {\r\n this.option(\"text\", \"\");\r\n this._renderValue()\r\n } else {\r\n this.option(\"value\", null)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._validateValue(args.value);\r\n this._setSubmitValue(args.value);\r\n this.callBase(args);\r\n this._resumeValueChangeAction();\r\n break;\r\n case \"step\":\r\n this._renderProps();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._renderProps();\r\n this.option(\"value\", this._parseValue(this.option(\"value\")));\r\n break;\r\n case \"showSpinButtons\":\r\n case \"useLargeSpinButtons\":\r\n this._updateButtons([\"spins\"]);\r\n break;\r\n case \"invalidValueMessage\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default NumberBoxBase;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.mask.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isNumeric,\r\n isDefined,\r\n isFunction,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n fitIntoRange,\r\n inRange\r\n} from \"../../core/utils/math\";\r\nimport number from \"../../localization/number\";\r\nimport {\r\n getCaretWithOffset,\r\n isCaretInBoundaries,\r\n getCaretInBoundaries,\r\n getCaretBoundaries,\r\n getCaretAfterFormat,\r\n getCaretOffset\r\n} from \"./number_box.caret\";\r\nimport {\r\n getFormat as getLDMLFormat\r\n} from \"../../localization/ldml/number\";\r\nimport NumberBoxBase from \"./number_box.base\";\r\nimport {\r\n addNamespace,\r\n getChar,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n ensureDefined,\r\n escapeRegExp\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getRealSeparatorIndex,\r\n getNthOccurrence,\r\n splitByIndex\r\n} from \"./utils\";\r\nvar NUMBER_FORMATTER_NAMESPACE = \"dxNumberFormatter\";\r\nvar MOVE_FORWARD = 1;\r\nvar MOVE_BACKWARD = -1;\r\nvar MINUS = \"-\";\r\nvar MINUS_KEY = \"minus\";\r\nvar NUMPUD_MINUS_KEY_IE = \"Subtract\";\r\nvar INPUT_EVENT = \"input\";\r\nvar CARET_TIMEOUT_DURATION = browser.msie ? 300 : 0;\r\nvar NumberBoxMask = NumberBoxBase.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n useMaskBehavior: true,\r\n format: null\r\n })\r\n },\r\n _isDeleteKey: function(key) {\r\n return \"del\" === key\r\n },\r\n _supportedKeys: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n return extend(this.callBase(), {\r\n minus: this._revertSign.bind(this),\r\n del: this._removeHandler.bind(this),\r\n backspace: this._removeHandler.bind(this),\r\n leftArrow: this._arrowHandler.bind(this, MOVE_BACKWARD),\r\n rightArrow: this._arrowHandler.bind(this, MOVE_FORWARD),\r\n home: this._moveCaretToBoundaryEventHandler.bind(this, MOVE_FORWARD),\r\n enter: this._updateFormattedValue.bind(this),\r\n end: this._moveCaretToBoundaryEventHandler.bind(this, MOVE_BACKWARD)\r\n })\r\n },\r\n _getTextSeparatorIndex: function(text) {\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var realSeparatorOccurrenceIndex = getRealSeparatorIndex(this.option(\"format\")).occurrence;\r\n return getNthOccurrence(text, decimalSeparator, realSeparatorOccurrenceIndex)\r\n },\r\n _focusInHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n this.clearCaretTimeout();\r\n this._caretTimeout = setTimeout(function() {\r\n this._caretTimeout = null;\r\n var caret = this._caret();\r\n if (caret.start === caret.end && this._useMaskBehavior()) {\r\n var text = this._getInputVal();\r\n var decimalSeparatorIndex = this._getTextSeparatorIndex(text);\r\n if (decimalSeparatorIndex >= 0) {\r\n this._caret({\r\n start: decimalSeparatorIndex,\r\n end: decimalSeparatorIndex\r\n })\r\n } else {\r\n this._moveCaretToBoundaryEventHandler(MOVE_BACKWARD, e)\r\n }\r\n }\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n this.callBase(e)\r\n },\r\n _focusOutHandler: function(e) {\r\n var shouldHandleEvent = !this._preventNestedFocusEvent(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = true;\r\n if (this._useMaskBehavior()) {\r\n this._updateFormattedValue()\r\n }\r\n }\r\n this.callBase(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = false\r\n }\r\n },\r\n _hasValueBeenChanged(inputValue) {\r\n var format = this._getFormatPattern();\r\n var value = this.option(\"value\");\r\n var formatted = this._format(value, format) || \"\";\r\n return formatted !== inputValue\r\n },\r\n _updateFormattedValue: function() {\r\n var inputValue = this._getInputVal();\r\n if (this._hasValueBeenChanged(inputValue)) {\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this._setTextByParsedValue();\r\n if (this._parsedValue !== this.option(\"value\")) {\r\n eventsEngine.trigger(this._input(), \"change\")\r\n }\r\n }\r\n },\r\n _arrowHandler: function(step, e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this._getInputVal();\r\n var format = this._getFormatPattern();\r\n var nextCaret = getCaretWithOffset(this._caret(), step);\r\n if (!isCaretInBoundaries(nextCaret, text, format)) {\r\n nextCaret = step === MOVE_FORWARD ? nextCaret.end : nextCaret.start;\r\n e.preventDefault();\r\n this._caret(getCaretInBoundaries(nextCaret, text, format))\r\n }\r\n },\r\n _moveCaretToBoundary: function(direction) {\r\n var boundaries = getCaretBoundaries(this._getInputVal(), this._getFormatPattern());\r\n var newCaret = getCaretWithOffset(direction === MOVE_FORWARD ? boundaries.start : boundaries.end, 0);\r\n this._caret(newCaret)\r\n },\r\n _moveCaretToBoundaryEventHandler: function(direction, e) {\r\n if (!this._useMaskBehavior() || e && e.shiftKey) {\r\n return\r\n }\r\n this._moveCaretToBoundary(direction);\r\n e && e.preventDefault()\r\n },\r\n _shouldMoveCaret: function(text, caret) {\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator;\r\n var isZeroNext = \"0\" === text.charAt(caret.end);\r\n var moveToFloat = (this._lastKey === decimalSeparator || \".\" === this._lastKey) && isDecimalSeparatorNext;\r\n var zeroToZeroReplace = \"0\" === this._lastKey && isZeroNext;\r\n return moveToFloat || zeroToZeroReplace\r\n },\r\n _getInputVal: function() {\r\n return number.convertDigits(this._input().val(), true)\r\n },\r\n _keyboardHandler: function(e) {\r\n this.clearCaretTimeout();\r\n this._lastKey = number.convertDigits(getChar(e), true);\r\n this._lastKeyName = normalizeKeyName(e);\r\n if (!this._shouldHandleKey(e.originalEvent)) {\r\n return this.callBase(e)\r\n }\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var enteredChar = this._lastKeyName === MINUS_KEY ? \"\" : this._lastKey;\r\n var newValue = this._tryParse(normalizedText, caret, enteredChar);\r\n if (this._shouldMoveCaret(normalizedText, caret)) {\r\n this._moveCaret(1);\r\n e.originalEvent.preventDefault()\r\n }\r\n if (void 0 === newValue) {\r\n if (this._lastKeyName !== MINUS_KEY) {\r\n e.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._parsedValue = newValue\r\n }\r\n return this.callBase(e)\r\n },\r\n _keyPressHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n this.callBase(e)\r\n }\r\n },\r\n _removeHandler: function(e) {\r\n var caret = this._caret();\r\n var text = this._getInputVal();\r\n var start = caret.start;\r\n var end = caret.end;\r\n this._lastKey = getChar(e);\r\n this._lastKeyName = normalizeKeyName(e);\r\n var isDeleteKey = this._isDeleteKey(this._lastKeyName);\r\n var isBackspaceKey = !isDeleteKey;\r\n if (start === end) {\r\n var caretPosition = start;\r\n var canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length;\r\n if (canDelete) {\r\n isDeleteKey && end++;\r\n isBackspaceKey && start--\r\n } else {\r\n e.preventDefault();\r\n return\r\n }\r\n }\r\n var char = text.slice(start, end);\r\n if (this._isStub(char)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n if (this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0) {\r\n this._revertSign(e);\r\n this._setTextByParsedValue()\r\n }\r\n e.preventDefault();\r\n return\r\n }\r\n var decimalSeparator = number.getDecimalSeparator();\r\n if (char === decimalSeparator) {\r\n var decimalSeparatorIndex = text.indexOf(decimalSeparator);\r\n if (this._isNonStubAfter(decimalSeparatorIndex + 1)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n e.preventDefault()\r\n }\r\n return\r\n }\r\n if (end - start < text.length) {\r\n var editedText = this._replaceSelectedText(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n var noDigits = editedText.search(/[0-9]/) < 0;\r\n if (noDigits && this._isValueInRange(0)) {\r\n this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0 ? -0 : 0;\r\n return\r\n }\r\n }\r\n var valueAfterRemoving = this._tryParse(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n if (void 0 === valueAfterRemoving) {\r\n e.preventDefault()\r\n } else {\r\n this._parsedValue = valueAfterRemoving\r\n }\r\n },\r\n _isPercentFormat: function() {\r\n var format = this._getFormatPattern();\r\n var noEscapedFormat = format.replace(/'[^']+'/g, \"\");\r\n return -1 !== noEscapedFormat.indexOf(\"%\")\r\n },\r\n _parse: function(text, format) {\r\n var formatOption = this.option(\"format\");\r\n var isCustomParser = isFunction(formatOption.parser);\r\n var parser = isCustomParser ? formatOption.parser : number.parse;\r\n var integerPartStartIndex = 0;\r\n if (!isCustomParser) {\r\n var formatPointIndex = getRealSeparatorIndex(format).index;\r\n var textPointIndex = this._getTextSeparatorIndex(text);\r\n var formatIntegerPartLength = -1 !== formatPointIndex ? formatPointIndex : format.length;\r\n var textIntegerPartLength = -1 !== textPointIndex ? textPointIndex : text.length;\r\n if (textIntegerPartLength > formatIntegerPartLength && -1 === format.indexOf(\"#\")) {\r\n integerPartStartIndex = textIntegerPartLength - formatIntegerPartLength\r\n }\r\n }\r\n text = this._removeStubs(text, true);\r\n text = text.substr(integerPartStartIndex);\r\n return parser(text, format)\r\n },\r\n _format: function(value, format) {\r\n var formatOption = this.option(\"format\");\r\n var isCustomFormatter = isFunction(null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter);\r\n var formatter = isCustomFormatter ? formatOption.formatter : number.format;\r\n return formatter(value, format)\r\n },\r\n _getFormatPattern: function() {\r\n if (!this._currentFormat) {\r\n this._updateFormat()\r\n }\r\n return this._currentFormat\r\n },\r\n _updateFormat: function() {\r\n var format = this.option(\"format\");\r\n var isCustomParser = isFunction(null === format || void 0 === format ? void 0 : format.parser);\r\n var isLDMLPattern = isString(format) && (format.indexOf(\"0\") >= 0 || format.indexOf(\"#\") >= 0);\r\n this._currentFormat = isCustomParser || isLDMLPattern ? format : getLDMLFormat(value => {\r\n var text = this._format(value, format);\r\n return number.convertDigits(text, true)\r\n })\r\n },\r\n _getFormatForSign: function(text) {\r\n var format = this._getFormatPattern();\r\n if (isString(format)) {\r\n var signParts = format.split(\";\");\r\n var sign = number.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n return sign < 0 ? signParts[1] : signParts[0]\r\n } else {\r\n var _sign = number.getSign(text);\r\n return _sign < 0 ? \"-\" : \"\"\r\n }\r\n },\r\n _removeStubs: function(text, excludeComma) {\r\n var format = this._getFormatForSign(text);\r\n var thousandsSeparator = number.getThousandsSeparator();\r\n var stubs = this._getStubs(format);\r\n var result = text;\r\n if (stubs.length) {\r\n var prefixStubs = stubs[0];\r\n var postfixRegex = new RegExp(\"(\" + escapeRegExp(stubs[1] || \"\") + \")$\", \"g\");\r\n var decoratorsRegex = new RegExp(\"[-\" + escapeRegExp(excludeComma ? \"\" : thousandsSeparator) + \"]\", \"g\");\r\n result = result.replace(prefixStubs, \"\").replace(postfixRegex, \"\").replace(decoratorsRegex, \"\")\r\n }\r\n return result\r\n },\r\n _getStubs: function(format) {\r\n var regExpResult = /[^']([#0.,]+)/g.exec(format);\r\n var pattern = regExpResult && regExpResult[0].trim();\r\n return format.split(pattern).map((function(stub) {\r\n return stub.replace(/'/g, \"\")\r\n }))\r\n },\r\n _truncateToPrecision: function(value, maxPrecision) {\r\n if (isDefined(value)) {\r\n var strValue = value.toString();\r\n var decimalSeparatorIndex = strValue.indexOf(\".\");\r\n if (strValue && decimalSeparatorIndex > -1) {\r\n var parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1));\r\n return isNaN(parsedValue) ? value : parsedValue\r\n }\r\n }\r\n return value\r\n },\r\n _tryParse: function(text, selection, char) {\r\n var editedText = this._replaceSelectedText(text, selection, char);\r\n var format = this._getFormatPattern();\r\n var isTextSelected = selection.start !== selection.end;\r\n var parsedValue = this._getParsedValue(editedText, format);\r\n var maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max;\r\n var isValueChanged = parsedValue !== this._parsedValue;\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision;\r\n var isUselessCharRestricted = !isTextSelected && !isValueChanged && char !== MINUS && !this._isValueIncomplete(editedText) && this._isStub(char);\r\n if (isDecimalPointRestricted || isUselessCharRestricted) {\r\n return\r\n }\r\n if (\"\" === this._removeStubs(editedText)) {\r\n parsedValue = Math.abs(0 * this._parsedValue)\r\n }\r\n if (isNaN(parsedValue)) {\r\n return\r\n }\r\n var value = null === parsedValue ? this._parsedValue : parsedValue;\r\n parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue;\r\n return !format.parser && this._isPercentFormat() ? parsedValue && parsedValue / 100 : parsedValue\r\n },\r\n _getParsedValue: function(text, format) {\r\n var sign = number.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format);\r\n var parsedValue = this._parse(text, format);\r\n var parsedValueSign = parsedValue < 0 ? -1 : 1;\r\n var parsedValueWithSign = isNumeric(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue;\r\n return parsedValueWithSign\r\n },\r\n _isValueIncomplete: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n var caret = this._caret();\r\n var point = number.getDecimalSeparator();\r\n var pointIndex = this._getTextSeparatorIndex(text);\r\n var isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start;\r\n var textParts = this._removeStubs(text, true).split(point);\r\n if (!isCaretOnFloat || 2 !== textParts.length) {\r\n return false\r\n }\r\n var floatLength = textParts[1].length;\r\n var format = this._getFormatPattern();\r\n var isCustomParser = !!format.parser;\r\n var precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern(), text);\r\n var isPrecisionInRange = isCustomParser ? true : inRange(floatLength, precision.min, precision.max);\r\n var endsWithZero = \"0\" === textParts[1].charAt(floatLength - 1);\r\n return isPrecisionInRange && (endsWithZero || !floatLength)\r\n },\r\n _isValueInRange: function(value) {\r\n var min = ensureDefined(this.option(\"min\"), -1 / 0);\r\n var max = ensureDefined(this.option(\"max\"), 1 / 0);\r\n return inRange(value, min, max)\r\n },\r\n _setInputText: function(text) {\r\n var normalizedText = number.convertDigits(text, true);\r\n var newCaret = getCaretAfterFormat(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern());\r\n this._input().val(text);\r\n this._toggleEmptinessEventHandler();\r\n this._formattedValue = text;\r\n if (!this._focusOutOccurs) {\r\n this._caret(newCaret)\r\n }\r\n },\r\n _useMaskBehavior: function() {\r\n return !!this.option(\"format\") && this.option(\"useMaskBehavior\")\r\n },\r\n _renderInputType: function() {\r\n var isNumberType = \"number\" === this.option(\"mode\");\r\n var isDesktop = \"desktop\" === devices.real().deviceType;\r\n if (this._useMaskBehavior() && isNumberType) {\r\n this._setInputType(isDesktop || this._isSupportInputMode() ? \"text\" : \"tel\")\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _isChar: function(str) {\r\n return isString(str) && 1 === str.length\r\n },\r\n _moveCaret: function(offset) {\r\n if (!offset) {\r\n return\r\n }\r\n var newCaret = getCaretWithOffset(this._caret(), offset);\r\n var adjustedCaret = getCaretInBoundaries(newCaret, this._getInputVal(), this._getFormatPattern());\r\n this._caret(adjustedCaret)\r\n },\r\n _shouldHandleKey: function(e) {\r\n var keyName = normalizeKeyName(e);\r\n var isSpecialChar = isCommandKeyPressed(e) || e.altKey || e.shiftKey || !this._isChar(keyName);\r\n var isMinusKey = keyName === MINUS_KEY;\r\n var useMaskBehavior = this._useMaskBehavior();\r\n return useMaskBehavior && !isSpecialChar && !isMinusKey\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderFormatter()\r\n },\r\n _renderFormatter: function() {\r\n this._clearCache();\r\n this._detachFormatterEvents();\r\n if (this._useMaskBehavior()) {\r\n this._attachFormatterEvents()\r\n }\r\n },\r\n _detachFormatterEvents: function() {\r\n eventsEngine.off(this._input(), \".\" + NUMBER_FORMATTER_NAMESPACE)\r\n },\r\n _isInputFromPaste: function(e) {\r\n var inputType = e.originalEvent && e.originalEvent.inputType;\r\n if (isDefined(inputType)) {\r\n return \"insertFromPaste\" === inputType\r\n } else {\r\n return this._isValuePasted\r\n }\r\n },\r\n _attachFormatterEvents: function() {\r\n var $input = this._input();\r\n eventsEngine.on($input, addNamespace(INPUT_EVENT, NUMBER_FORMATTER_NAMESPACE), function(e) {\r\n this._formatValue(e);\r\n this._isValuePasted = false\r\n }.bind(this));\r\n if (browser.msie && browser.version < 12) {\r\n eventsEngine.on($input, addNamespace(\"paste\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n this._isValuePasted = true\r\n }.bind(this))\r\n }\r\n eventsEngine.on($input, addNamespace(\"dxclick\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n if (!this._caretTimeout) {\r\n this._caretTimeout = setTimeout(function() {\r\n this._caret(getCaretInBoundaries(this._caret(), this._getInputVal(), this._getFormatPattern()))\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n }.bind(this));\r\n eventsEngine.on($input, \"dxdblclick\", function() {\r\n this.clearCaretTimeout()\r\n }.bind(this))\r\n },\r\n clearCaretTimeout: function() {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = null\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n },\r\n _isNonStubAfter: function(index) {\r\n var text = this._getInputVal().slice(index);\r\n return text && !this._isStub(text, true)\r\n },\r\n _isStub: function(str, isString) {\r\n var escapedDecimalSeparator = escapeRegExp(number.getDecimalSeparator());\r\n var regExpString = \"^[^0-9\" + escapedDecimalSeparator + \"]+$\";\r\n var stubRegExp = new RegExp(regExpString, \"g\");\r\n return stubRegExp.test(str) && (isString || this._isChar(str))\r\n },\r\n _parseValue: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n return this._parsedValue\r\n },\r\n _getPrecisionLimits: function(text) {\r\n var currentFormat = this._getFormatForSign(text);\r\n var realSeparatorIndex = getRealSeparatorIndex(currentFormat).index;\r\n var floatPart = (splitByIndex(currentFormat, realSeparatorIndex)[1] || \"\").replace(/[^#0]/g, \"\");\r\n var minPrecision = floatPart.replace(/^(0*)#*/, \"$1\").length;\r\n var maxPrecision = floatPart.length;\r\n return {\r\n min: minPrecision,\r\n max: maxPrecision\r\n }\r\n },\r\n _revertSign: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var caret = this._caret();\r\n if (caret.start !== caret.end) {\r\n if (normalizeKeyName(e) === MINUS_KEY) {\r\n this._applyRevertedSign(e, caret, true);\r\n return\r\n } else {\r\n this._caret(getCaretInBoundaries(0, this._getInputVal(), this._getFormatPattern()))\r\n }\r\n }\r\n this._applyRevertedSign(e, caret)\r\n },\r\n _applyRevertedSign: function(e, caret, preserveSelectedText) {\r\n var newValue = -1 * ensureDefined(this._parsedValue, null);\r\n if (this._isValueInRange(newValue)) {\r\n this._parsedValue = newValue;\r\n if (preserveSelectedText) {\r\n var format = this._getFormatPattern();\r\n var previousText = this._getInputVal();\r\n this._setTextByParsedValue();\r\n e.preventDefault();\r\n var currentText = this._getInputVal();\r\n var offset = getCaretOffset(previousText, currentText, format);\r\n caret = getCaretWithOffset(caret, offset);\r\n var caretInBoundaries = getCaretInBoundaries(caret, currentText, format);\r\n if (browser.msie) {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = setTimeout(this._caret.bind(this, caretInBoundaries))\r\n } else {\r\n this._caret(caretInBoundaries)\r\n }\r\n }\r\n if (e.key === NUMPUD_MINUS_KEY_IE) {\r\n eventsEngine.trigger(this._input(), INPUT_EVENT)\r\n }\r\n }\r\n },\r\n _removeMinusFromText: function(text, caret) {\r\n var isMinusPressed = this._lastKeyName === MINUS_KEY && text.charAt(caret.start - 1) === MINUS;\r\n return isMinusPressed ? this._replaceSelectedText(text, {\r\n start: caret.start - 1,\r\n end: caret.start\r\n }, \"\") : text\r\n },\r\n _setTextByParsedValue: function() {\r\n var format = this._getFormatPattern();\r\n var parsed = this._parseValue();\r\n var formatted = this._format(parsed, format) || \"\";\r\n this._setInputText(formatted)\r\n },\r\n _formatValue: function(e) {\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var textWithoutMinus = this._removeMinusFromText(normalizedText, caret);\r\n var wasMinusRemoved = textWithoutMinus !== normalizedText;\r\n normalizedText = textWithoutMinus;\r\n if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) {\r\n this._formattedValue = normalizedText;\r\n if (wasMinusRemoved) {\r\n this._setTextByParsedValue()\r\n }\r\n return\r\n }\r\n var textWasChanged = number.convertDigits(this._formattedValue, true) !== normalizedText;\r\n if (textWasChanged) {\r\n var value = this._tryParse(normalizedText, caret, \"\");\r\n if (isDefined(value)) {\r\n this._parsedValue = value\r\n }\r\n }\r\n this._setTextByParsedValue()\r\n },\r\n _renderDisplayText: function() {\r\n if (this._useMaskBehavior()) {\r\n this._toggleEmptinessEventHandler()\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this._useMaskBehavior()) {\r\n this._parsedValue = this.option(\"value\");\r\n this._setTextByParsedValue()\r\n }\r\n return this.callBase()\r\n },\r\n _updateParsedValue: function() {\r\n var inputValue = this._getInputVal();\r\n this._parsedValue = this._tryParse(inputValue, this._caret())\r\n },\r\n _adjustParsedValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var clearedText = this._removeStubs(this._getInputVal());\r\n var parsedValue = clearedText ? this._parseValue() : null;\r\n if (!isNumeric(parsedValue)) {\r\n this._parsedValue = parsedValue;\r\n return\r\n }\r\n this._parsedValue = fitIntoRange(parsedValue, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(e)\r\n }\r\n var caret = this._caret();\r\n this._saveValueChangeEvent(e);\r\n this._lastKey = null;\r\n this._lastKeyName = null;\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this.option(\"value\", this._parsedValue);\r\n if (caret) {\r\n this._caret(caret)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"format\":\r\n case \"useMaskBehavior\":\r\n this._renderInputType();\r\n this._updateFormat();\r\n this._renderFormatter();\r\n this._renderValue();\r\n this._refreshValueChangeEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._adjustParsedValue();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearCache: function() {\r\n delete this._formattedValue;\r\n delete this._lastKey;\r\n delete this._lastKeyName;\r\n delete this._parsedValue;\r\n delete this._focusOutOccurs;\r\n clearTimeout(this._caretTimeout);\r\n delete this._caretTimeout\r\n },\r\n _clean: function() {\r\n this._clearCache();\r\n this.callBase()\r\n }\r\n});\r\nexport default NumberBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport NumberBoxMask from \"./number_box.mask\";\r\nregisterComponent(\"dxNumberBox\", NumberBoxMask);\r\nexport default NumberBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/number_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport NumberBox from \"./number_box/number_box\";\r\nexport default NumberBox;\r\n","/**\r\n * DevExtreme (esm/ui/check_box.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport devices from \"../core/devices\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n render\r\n} from \"./widget/utils.ink_ripple\";\r\nimport Editor from \"./editor/editor\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../events/click\";\r\nvar CHECKBOX_CLASS = \"dx-checkbox\";\r\nvar CHECKBOX_ICON_CLASS = \"dx-checkbox-icon\";\r\nvar CHECKBOX_CHECKED_CLASS = \"dx-checkbox-checked\";\r\nvar CHECKBOX_CONTAINER_CLASS = \"dx-checkbox-container\";\r\nvar CHECKBOX_TEXT_CLASS = \"dx-checkbox-text\";\r\nvar CHECKBOX_HAS_TEXT_CLASS = \"dx-checkbox-has-text\";\r\nvar CHECKBOX_INDETERMINATE_CLASS = \"dx-checkbox-indeterminate\";\r\nvar CHECKBOX_FEEDBACK_HIDE_TIMEOUT = 100;\r\nvar CheckBox = Editor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n this._clickAction({\r\n event: e\r\n })\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n value: false,\r\n text: \"\",\r\n useInkRipple: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _canValueBeChangedByClick: function() {\r\n return true\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _feedbackHideTimeout: CHECKBOX_FEEDBACK_HIDE_TIMEOUT,\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this._$container = $(\"
    \").addClass(CHECKBOX_CONTAINER_CLASS);\r\n this.setAria(\"role\", \"checkbox\");\r\n this.$element().addClass(CHECKBOX_CLASS);\r\n this._renderValue();\r\n this._renderIcon();\r\n this._renderText();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.$element().append(this._$container);\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this._renderClick();\r\n this.callBase()\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render({\r\n waveSizeCoefficient: 2.5,\r\n useHoldAnimation: false,\r\n wavesNumber: 2,\r\n isCentered: true\r\n })\r\n },\r\n _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: element,\r\n event: dxEvent,\r\n wave: waveIndex\r\n };\r\n if (doRender) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _updateFocusState: function(e, value) {\r\n this.callBase.apply(this, arguments);\r\n this._renderInkWave(this._$icon, e, value, 0)\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n this._renderInkWave(this._$icon, e, value, 1)\r\n },\r\n _renderIcon: function() {\r\n this._$icon = $(\"\").addClass(CHECKBOX_ICON_CLASS).prependTo(this._$container)\r\n },\r\n _renderText: function() {\r\n var textValue = this.option(\"text\");\r\n if (!textValue) {\r\n if (this._$text) {\r\n this._$text.remove();\r\n this.$element().removeClass(CHECKBOX_HAS_TEXT_CLASS)\r\n }\r\n return\r\n }\r\n if (!this._$text) {\r\n this._$text = $(\"\").addClass(CHECKBOX_TEXT_CLASS)\r\n }\r\n this._$text.text(textValue);\r\n this._$container.append(this._$text);\r\n this.$element().addClass(CHECKBOX_HAS_TEXT_CLASS)\r\n },\r\n _renderClick: function() {\r\n var that = this;\r\n var eventName = addNamespace(clickEventName, that.NAME);\r\n that._clickAction = that._createAction(that._clickHandler);\r\n eventsEngine.off(that.$element(), eventName);\r\n eventsEngine.on(that.$element(), eventName, (function(e) {\r\n that._clickAction({\r\n event: e\r\n })\r\n }))\r\n },\r\n _clickHandler: function(args) {\r\n var that = args.component;\r\n that._saveValueChangeEvent(args.event);\r\n that.option(\"value\", !that.option(\"value\"))\r\n },\r\n _renderValue: function() {\r\n var $element = this.$element();\r\n var checked = this.option(\"value\");\r\n var indeterminate = void 0 === checked;\r\n $element.toggleClass(CHECKBOX_CHECKED_CLASS, Boolean(checked));\r\n $element.toggleClass(CHECKBOX_INDETERMINATE_CLASS, indeterminate);\r\n this._getSubmitElement().val(checked);\r\n this.setAria(\"checked\", indeterminate ? \"mixed\" : checked || \"false\")\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"value\":\r\n this._renderValue();\r\n this.callBase(args);\r\n break;\r\n case \"text\":\r\n this._renderText();\r\n this._renderDimensions();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n delete this._inkRipple;\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxCheckBox\", CheckBox);\r\nexport default CheckBox;\r\n","/**\r\n * DevExtreme (esm/events/utils/event_nodes_disposing.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../core/events_engine\";\r\nvar REMOVE_EVENT_NAME = \"dxremove\";\r\n\r\nfunction nodesByEvent(event) {\r\n return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].filter(node => !!node)\r\n}\r\nexport var subscribeNodesDisposing = (event, callback) => {\r\n eventsEngine.one(nodesByEvent(event), REMOVE_EVENT_NAME, callback)\r\n};\r\nexport var unsubscribeNodesDisposing = (event, callback) => {\r\n eventsEngine.off(nodesByEvent(event), REMOVE_EVENT_NAME, callback)\r\n};\r\n","/**\r\n * DevExtreme (esm/events/click.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport devices from \"../core/devices\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n resetActiveElement,\r\n contains,\r\n closestCommonParent\r\n} from \"../core/utils/dom\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../animation/frame\";\r\nimport {\r\n addNamespace,\r\n fireEvent,\r\n eventDelta,\r\n eventData\r\n} from \"./utils/index\";\r\nimport {\r\n subscribeNodesDisposing,\r\n unsubscribeNodesDisposing\r\n} from \"./utils/event_nodes_disposing\";\r\nimport pointerEvents from \"./pointer\";\r\nimport Emitter from \"./core/emitter\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../core/utils/version\";\r\nvar CLICK_EVENT_NAME = \"dxclick\";\r\nvar TOUCH_BOUNDARY = 10;\r\nvar abs = Math.abs;\r\nvar isInput = function(element) {\r\n return $(element).is(\"input, textarea, select, button ,:focus, :focus *\")\r\n};\r\nvar misc = {\r\n requestAnimationFrame: requestAnimationFrame,\r\n cancelAnimationFrame: cancelAnimationFrame\r\n};\r\nvar ClickEmitter = Emitter.inherit({\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this._makeElementClickable($(element))\r\n },\r\n _makeElementClickable: function($element) {\r\n if (!$element.attr(\"onclick\")) {\r\n $element.attr(\"onclick\", \"void(0)\")\r\n }\r\n },\r\n start: function(e) {\r\n this._blurPrevented = e.isDefaultPrevented();\r\n this._startTarget = e.target;\r\n this._startEventData = eventData(e)\r\n },\r\n end: function(e) {\r\n if (this._eventOutOfElement(e, this.getElement().get(0)) || e.type === pointerEvents.cancel) {\r\n this._cancel(e);\r\n return\r\n }\r\n if (!isInput(e.target) && !this._blurPrevented) {\r\n resetActiveElement()\r\n }\r\n this._accept(e);\r\n this._clickAnimationFrame = misc.requestAnimationFrame(function() {\r\n this._fireClickEvent(e)\r\n }.bind(this))\r\n },\r\n _eventOutOfElement: function(e, element) {\r\n var target = e.target;\r\n var targetChanged = !contains(element, target) && element !== target;\r\n var gestureDelta = eventDelta(eventData(e), this._startEventData);\r\n var boundsExceeded = abs(gestureDelta.x) > TOUCH_BOUNDARY || abs(gestureDelta.y) > TOUCH_BOUNDARY;\r\n return targetChanged || boundsExceeded\r\n },\r\n _fireClickEvent: function(e) {\r\n this._fireEvent(CLICK_EVENT_NAME, e, {\r\n target: closestCommonParent(this._startTarget, e.target)\r\n })\r\n },\r\n dispose: function() {\r\n misc.cancelAnimationFrame(this._clickAnimationFrame)\r\n }\r\n});\r\nvar realDevice = devices.real();\r\nvar useNativeClick = realDevice.generic || realDevice.ios && compareVersions(realDevice.version, [9, 3]) >= 0 || realDevice.android && compareVersions(realDevice.version, [5]) >= 0;\r\n! function() {\r\n var isNativeClickEvent = function(target) {\r\n return useNativeClick || $(target).closest(\".dx-native-click\").length\r\n };\r\n var prevented = null;\r\n var lastFiredEvent = null;\r\n\r\n function onNodeRemove() {\r\n lastFiredEvent = null\r\n }\r\n var clickHandler = function(e) {\r\n var originalEvent = e.originalEvent;\r\n var eventAlreadyFired = lastFiredEvent === originalEvent || originalEvent && originalEvent.DXCLICK_FIRED;\r\n var leftButton = !e.which || 1 === e.which;\r\n if (leftButton && !prevented && isNativeClickEvent(e.target) && !eventAlreadyFired) {\r\n if (originalEvent) {\r\n originalEvent.DXCLICK_FIRED = true\r\n }\r\n unsubscribeNodesDisposing(lastFiredEvent, onNodeRemove);\r\n lastFiredEvent = originalEvent;\r\n subscribeNodesDisposing(lastFiredEvent, onNodeRemove);\r\n fireEvent({\r\n type: CLICK_EVENT_NAME,\r\n originalEvent: e\r\n })\r\n }\r\n };\r\n ClickEmitter = ClickEmitter.inherit({\r\n _makeElementClickable: function($element) {\r\n if (!isNativeClickEvent($element)) {\r\n this.callBase($element)\r\n }\r\n eventsEngine.on($element, \"click\", clickHandler)\r\n },\r\n configure: function(data) {\r\n this.callBase(data);\r\n if (data.useNative) {\r\n this.getElement().addClass(\"dx-native-click\")\r\n }\r\n },\r\n start: function(e) {\r\n prevented = null;\r\n if (!isNativeClickEvent(e.target)) {\r\n this.callBase(e)\r\n }\r\n },\r\n end: function(e) {\r\n if (!isNativeClickEvent(e.target)) {\r\n this.callBase(e)\r\n }\r\n },\r\n cancel: function() {\r\n prevented = true\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n eventsEngine.off(this.getElement(), \"click\", clickHandler)\r\n }\r\n })\r\n}();\r\n! function() {\r\n var desktopDevice = devices.real().generic;\r\n if (!desktopDevice) {\r\n var startTarget = null;\r\n var blurPrevented = false;\r\n var document = domAdapter.getDocument();\r\n eventsEngine.subscribeGlobal(document, addNamespace(pointerEvents.down, \"NATIVE_CLICK_FIXER\"), (function(e) {\r\n startTarget = e.target;\r\n blurPrevented = e.isDefaultPrevented()\r\n }));\r\n eventsEngine.subscribeGlobal(document, addNamespace(\"click\", \"NATIVE_CLICK_FIXER\"), (function(e) {\r\n var $target = $(e.target);\r\n if (!blurPrevented && startTarget && !$target.is(startTarget) && !$(startTarget).is(\"label\") && isInput($target)) {\r\n resetActiveElement()\r\n }\r\n startTarget = null;\r\n blurPrevented = false\r\n }))\r\n }\r\n}();\r\nregisterEmitter({\r\n emitter: ClickEmitter,\r\n bubble: true,\r\n events: [CLICK_EVENT_NAME]\r\n});\r\nexport {\r\n CLICK_EVENT_NAME as name\r\n};\r\n","/**\r\n * DevExtreme (esm/data/store_helper.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport arrayQuery from \"./array_query\";\r\nimport dataUtils from \"./utils\";\r\n\r\nfunction multiLevelGroup(query, groupInfo) {\r\n query = query.groupBy(groupInfo[0].selector);\r\n if (groupInfo.length > 1) {\r\n query = query.select((function(g) {\r\n return extend({}, g, {\r\n items: multiLevelGroup(arrayQuery(g.items), groupInfo.slice(1)).toArray()\r\n })\r\n }))\r\n }\r\n return query\r\n}\r\n\r\nfunction arrangeSortingInfo(groupInfo, sortInfo) {\r\n var filteredGroup = [];\r\n each(groupInfo, (function(_, group) {\r\n var collision = grep(sortInfo, (function(sort) {\r\n return group.selector === sort.selector\r\n }));\r\n if (collision.length < 1) {\r\n filteredGroup.push(group)\r\n }\r\n }));\r\n return filteredGroup.concat(sortInfo)\r\n}\r\n\r\nfunction queryByOptions(query, options, isCountQuery) {\r\n options = options || {};\r\n var filter = options.filter;\r\n if (filter) {\r\n query = query.filter(filter)\r\n }\r\n if (isCountQuery) {\r\n return query\r\n }\r\n var sort = options.sort;\r\n var select = options.select;\r\n var group = options.group;\r\n var skip = options.skip;\r\n var take = options.take;\r\n if (group) {\r\n group = dataUtils.normalizeSortingInfo(group);\r\n group.keepInitialKeyOrder = !!options.group.keepInitialKeyOrder\r\n }\r\n if (sort || group) {\r\n sort = dataUtils.normalizeSortingInfo(sort || []);\r\n if (group && !group.keepInitialKeyOrder) {\r\n sort = arrangeSortingInfo(group, sort)\r\n }\r\n each(sort, (function(index) {\r\n query = query[index ? \"thenBy\" : \"sortBy\"](this.selector, this.desc, this.compare)\r\n }))\r\n }\r\n if (select) {\r\n query = query.select(select)\r\n }\r\n if (group) {\r\n query = multiLevelGroup(query, group)\r\n }\r\n if (take || skip) {\r\n query = query.slice(skip || 0, take)\r\n }\r\n return query\r\n}\r\nexport default {\r\n multiLevelGroup: multiLevelGroup,\r\n arrangeSortingInfo: arrangeSortingInfo,\r\n queryByOptions: queryByOptions\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/date_serialization.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../config\";\r\nimport {\r\n getFormatter as getLDMLFormatter\r\n} from \"../../localization/ldml/date.formatter\";\r\nimport defaultDateNames from \"../../localization/default_date_names\";\r\nimport {\r\n isString,\r\n isDate,\r\n isNumeric as isNumber\r\n} from \"./type\";\r\nimport browser from \"./browser\";\r\nvar NUMBER_SERIALIZATION_FORMAT = \"number\";\r\nvar DATE_SERIALIZATION_FORMAT = \"yyyy/MM/dd\";\r\nvar DATETIME_SERIALIZATION_FORMAT = \"yyyy/MM/dd HH:mm:ss\";\r\nvar ISO8601_PATTERN = /^(\\d{4,})(-)?(\\d{2})(-)?(\\d{2})(?:T(\\d{2})(:)?(\\d{2})?(:)?(\\d{2}(?:\\.(\\d{1,3})\\d*)?)?)?(Z|([+-])(\\d{2})(:)?(\\d{2})?)?$/;\r\nvar ISO8601_TIME_PATTERN = /^(\\d{2}):(\\d{2})(:(\\d{2}))?$/;\r\nvar ISO8601_PATTERN_PARTS = [\"\", \"yyyy\", \"\", \"MM\", \"\", \"dd\", \"THH\", \"\", \"mm\", \"\", \"ss\", \".SSS\"];\r\nvar DATE_SERIALIZATION_PATTERN = /^(\\d{4})\\/(\\d{2})\\/(\\d{2})$/;\r\nvar MILLISECOND_LENGHT = 3;\r\nvar isIE11 = browser.msie && parseInt(browser.version) <= 11;\r\nvar dateParser = function(text, skipISO8601Parsing) {\r\n var result;\r\n if (isString(text) && !skipISO8601Parsing) {\r\n result = parseISO8601String(text)\r\n }\r\n return result || parseDate(text)\r\n};\r\n\r\nfunction getTimePart(part) {\r\n return +part || 0\r\n}\r\n\r\nfunction parseDate(text) {\r\n var isDefaultSerializationFormat = getDateSerializationFormat(text) === DATE_SERIALIZATION_FORMAT;\r\n var parsedValue = !isDate(text) && Date.parse(text);\r\n if ((!parsedValue || isIE11) && isDefaultSerializationFormat) {\r\n var parts = text.match(DATE_SERIALIZATION_PATTERN);\r\n if (parts) {\r\n var newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3]));\r\n newDate.setFullYear(getTimePart(parts[1]));\r\n newDate.setMonth(getTimePart(parts[2]) - 1);\r\n newDate.setDate(getTimePart(parts[3]));\r\n return newDate\r\n }\r\n }\r\n return isNumber(parsedValue) ? new Date(parsedValue) : text\r\n}\r\n\r\nfunction parseISO8601String(text) {\r\n var parts = text.match(ISO8601_PATTERN);\r\n if (!parts) {\r\n parts = text.match(ISO8601_TIME_PATTERN);\r\n if (parts) {\r\n return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4]))\r\n }\r\n return\r\n }\r\n var year = parts[1];\r\n var month = --parts[3];\r\n var day = parts[5];\r\n var timeZoneHour = 0;\r\n var timeZoneMinute = 0;\r\n timeZoneHour = getTimePart(parts[14]);\r\n timeZoneMinute = getTimePart(parts[16]);\r\n if (\"-\" === parts[13]) {\r\n timeZoneHour = -timeZoneHour;\r\n timeZoneMinute = -timeZoneMinute\r\n }\r\n var hour = getTimePart(parts[6]) - timeZoneHour;\r\n var minute = getTimePart(parts[8]) - timeZoneMinute;\r\n var second = getTimePart(parts[10]);\r\n var millisecond = function(part) {\r\n part = part || \"\";\r\n return getTimePart(part) * Math.pow(10, MILLISECOND_LENGHT - part.length)\r\n }(parts[11]);\r\n if (parts[12]) {\r\n return new Date(Date.UTC(year, month, day, hour, minute, second, millisecond))\r\n }\r\n return new Date(year, month, day, hour, minute, second, millisecond)\r\n}\r\nvar getIso8601Format = function(text, useUtc) {\r\n var parts = text.match(ISO8601_PATTERN);\r\n var result = \"\";\r\n if (!parts) {\r\n parts = text.match(ISO8601_TIME_PATTERN);\r\n if (parts) {\r\n return parts[3] ? \"HH:mm:ss\" : \"HH:mm\"\r\n }\r\n return\r\n }\r\n for (var i = 1; i < ISO8601_PATTERN_PARTS.length; i++) {\r\n if (parts[i]) {\r\n result += ISO8601_PATTERN_PARTS[i] || parts[i]\r\n }\r\n }\r\n if (\"Z\" === parts[12]) {\r\n result += \"'Z'\"\r\n }\r\n if (parts[14]) {\r\n if (parts[15]) {\r\n result += \"xxx\"\r\n } else if (parts[16]) {\r\n result += \"xx\"\r\n } else {\r\n result += \"x\"\r\n }\r\n }\r\n return result\r\n};\r\nvar deserializeDate = function(value) {\r\n if (\"number\" === typeof value) {\r\n return new Date(value)\r\n }\r\n return dateParser(value, !config().forceIsoDateParsing)\r\n};\r\nvar serializeDate = function(value, serializationFormat) {\r\n if (!serializationFormat) {\r\n return value\r\n }\r\n if (!isDate(value)) {\r\n return null\r\n }\r\n if (serializationFormat === NUMBER_SERIALIZATION_FORMAT) {\r\n return value && value.valueOf ? value.valueOf() : null\r\n }\r\n return getLDMLFormatter(serializationFormat, defaultDateNames)(value)\r\n};\r\nvar getDateSerializationFormat = function(value) {\r\n if (\"number\" === typeof value) {\r\n return NUMBER_SERIALIZATION_FORMAT\r\n } else if (isString(value)) {\r\n var format;\r\n if (config().forceIsoDateParsing) {\r\n format = getIso8601Format(value)\r\n }\r\n if (format) {\r\n return format\r\n } else if (value.indexOf(\":\") >= 0) {\r\n return DATETIME_SERIALIZATION_FORMAT\r\n } else {\r\n return DATE_SERIALIZATION_FORMAT\r\n }\r\n } else if (value) {\r\n return null\r\n }\r\n};\r\nexport default {\r\n dateParser: dateParser,\r\n deserializeDate: deserializeDate,\r\n serializeDate: serializeDate,\r\n getDateSerializationFormat: getDateSerializationFormat\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/date.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject,\r\n isString,\r\n isDate,\r\n isDefined,\r\n isNumeric\r\n} from \"./type\";\r\nimport {\r\n adjust\r\n} from \"./math\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n camelize\r\n} from \"./inflector\";\r\nimport browser from \"./browser\";\r\nvar isIE11 = browser.msie && parseInt(browser.version) <= 11;\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\", \"year\"];\r\nvar toMilliseconds = function toMilliseconds(value) {\r\n switch (value) {\r\n case \"millisecond\":\r\n return 1;\r\n case \"second\":\r\n return 1e3 * toMilliseconds(\"millisecond\");\r\n case \"minute\":\r\n return 60 * toMilliseconds(\"second\");\r\n case \"hour\":\r\n return 60 * toMilliseconds(\"minute\");\r\n case \"day\":\r\n return 24 * toMilliseconds(\"hour\");\r\n case \"week\":\r\n return 7 * toMilliseconds(\"day\");\r\n case \"month\":\r\n return 30 * toMilliseconds(\"day\");\r\n case \"quarter\":\r\n return 3 * toMilliseconds(\"month\");\r\n case \"year\":\r\n return 365 * toMilliseconds(\"day\");\r\n default:\r\n return 0\r\n }\r\n};\r\nvar getDatesInterval = function(startDate, endDate, intervalUnit) {\r\n var delta = endDate.getTime() - startDate.getTime();\r\n var millisecondCount = toMilliseconds(intervalUnit) || 1;\r\n return Math.floor(delta / millisecondCount)\r\n};\r\nvar getNextDateUnit = function(unit, withWeeks) {\r\n var interval = getDateUnitInterval(unit);\r\n switch (interval) {\r\n case \"millisecond\":\r\n return \"second\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"hour\":\r\n return \"day\";\r\n case \"day\":\r\n return withWeeks ? \"week\" : \"month\";\r\n case \"week\":\r\n return \"month\";\r\n case \"month\":\r\n return \"quarter\";\r\n case \"quarter\":\r\n case \"year\":\r\n return \"year\";\r\n default:\r\n return 0\r\n }\r\n};\r\nvar convertMillisecondsToDateUnits = function(value) {\r\n var i;\r\n var dateUnitCount;\r\n var dateUnitInterval;\r\n var dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n var result = {};\r\n for (i = dateUnitIntervals.length - 1; i >= 0; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n dateUnitCount = Math.floor(value / toMilliseconds(dateUnitInterval));\r\n if (dateUnitCount > 0) {\r\n result[dateUnitInterval + \"s\"] = dateUnitCount;\r\n value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount)\r\n }\r\n }\r\n return result\r\n};\r\nvar dateToMilliseconds = function(tickInterval) {\r\n var milliseconds = 0;\r\n if (isObject(tickInterval)) {\r\n each(tickInterval, (function(key, value) {\r\n milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value)\r\n }))\r\n }\r\n if (isString(tickInterval)) {\r\n milliseconds = convertDateUnitToMilliseconds(tickInterval, 1)\r\n }\r\n return milliseconds\r\n};\r\n\r\nfunction convertDateUnitToMilliseconds(dateUnit, count) {\r\n return toMilliseconds(dateUnit) * count\r\n}\r\n\r\nfunction getDateUnitInterval(tickInterval) {\r\n var maxInterval = -1;\r\n var i;\r\n if (isString(tickInterval)) {\r\n return tickInterval\r\n }\r\n if (isObject(tickInterval)) {\r\n each(tickInterval, (function(key, value) {\r\n for (i = 0; i < dateUnitIntervals.length; i++) {\r\n if (value && (key === dateUnitIntervals[i] + \"s\" || key === dateUnitIntervals[i]) && maxInterval < i) {\r\n maxInterval = i\r\n }\r\n }\r\n }));\r\n return dateUnitIntervals[maxInterval]\r\n }\r\n return \"\"\r\n}\r\nvar tickIntervalToFormatMap = {\r\n millisecond: \"millisecond\",\r\n second: \"longtime\",\r\n minute: \"shorttime\",\r\n hour: \"shorttime\",\r\n day: \"day\",\r\n week: \"day\",\r\n month: \"month\",\r\n quarter: \"quarter\",\r\n year: \"year\"\r\n};\r\n\r\nfunction getDateFormatByTickInterval(tickInterval) {\r\n return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || \"\"\r\n}\r\nvar getQuarter = function(month) {\r\n return Math.floor(month / 3)\r\n};\r\nvar getFirstQuarterMonth = function(month) {\r\n return 3 * getQuarter(month)\r\n};\r\n\r\nfunction correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) {\r\n date = new Date(date.getTime());\r\n var oldDate = new Date(date.getTime());\r\n var firstQuarterMonth;\r\n var month;\r\n var dateUnitInterval = getDateUnitInterval(dateInterval);\r\n switch (dateUnitInterval) {\r\n case \"second\":\r\n date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3));\r\n break;\r\n case \"minute\":\r\n date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4));\r\n break;\r\n case \"hour\":\r\n date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5));\r\n break;\r\n case \"year\":\r\n date.setMonth(0);\r\n case \"month\":\r\n date.setDate(1);\r\n case \"day\":\r\n date.setHours(0, 0, 0, 0);\r\n break;\r\n case \"week\":\r\n date = getFirstWeekDate(date, firstDayOfWeek || 0);\r\n date.setHours(0, 0, 0, 0);\r\n break;\r\n case \"quarter\":\r\n firstQuarterMonth = getFirstQuarterMonth(date.getMonth());\r\n month = date.getMonth();\r\n date.setDate(1);\r\n date.setHours(0, 0, 0, 0);\r\n if (month !== firstQuarterMonth) {\r\n date.setMonth(firstQuarterMonth)\r\n }\r\n }\r\n if (withCorrection && \"hour\" !== dateUnitInterval && \"minute\" !== dateUnitInterval && \"second\" !== dateUnitInterval) {\r\n fixTimezoneGap(oldDate, date)\r\n }\r\n return date\r\n}\r\n\r\nfunction trimTime(date) {\r\n return correctDateWithUnitBeginning(date, \"day\")\r\n}\r\nvar setToDayEnd = function(date) {\r\n var result = trimTime(date);\r\n result.setDate(result.getDate() + 1);\r\n return new Date(result.getTime() - 1)\r\n};\r\nvar getDatesDifferences = function(date1, date2) {\r\n var counter = 0;\r\n var differences = {\r\n year: date1.getFullYear() !== date2.getFullYear(),\r\n month: date1.getMonth() !== date2.getMonth(),\r\n day: date1.getDate() !== date2.getDate(),\r\n hour: date1.getHours() !== date2.getHours(),\r\n minute: date1.getMinutes() !== date2.getMinutes(),\r\n second: date1.getSeconds() !== date2.getSeconds(),\r\n millisecond: date1.getMilliseconds() !== date2.getMilliseconds()\r\n };\r\n each(differences, (function(key, value) {\r\n if (value) {\r\n counter++\r\n }\r\n }));\r\n if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) {\r\n differences.hour = true;\r\n counter++\r\n }\r\n differences.count = counter;\r\n return differences\r\n};\r\n\r\nfunction addDateInterval(value, interval, dir) {\r\n var result = new Date(value.getTime());\r\n var intervalObject = isString(interval) ? getDateIntervalByString(interval.toLowerCase()) : isNumeric(interval) ? convertMillisecondsToDateUnits(interval) : interval;\r\n if (intervalObject.years) {\r\n result.setFullYear(result.getFullYear() + intervalObject.years * dir)\r\n }\r\n if (intervalObject.quarters) {\r\n result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir)\r\n }\r\n if (intervalObject.months) {\r\n result.setMonth(result.getMonth() + intervalObject.months * dir)\r\n }\r\n if (intervalObject.weeks) {\r\n result.setDate(result.getDate() + 7 * intervalObject.weeks * dir)\r\n }\r\n if (intervalObject.days) {\r\n result.setDate(result.getDate() + intervalObject.days * dir)\r\n }\r\n if (intervalObject.hours) {\r\n result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir)\r\n }\r\n if (intervalObject.minutes) {\r\n result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir)\r\n }\r\n if (intervalObject.seconds) {\r\n result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir)\r\n }\r\n if (intervalObject.milliseconds) {\r\n result.setTime(result.getTime() + intervalObject.milliseconds * dir)\r\n }\r\n return result\r\n}\r\nvar addInterval = function(value, interval, isNegative) {\r\n var dir = isNegative ? -1 : 1;\r\n return isDate(value) ? addDateInterval(value, interval, dir) : adjust(value + interval * dir, interval)\r\n};\r\nvar getSequenceByInterval = function(min, max, interval) {\r\n var intervals = [];\r\n var cur;\r\n intervals.push(isDate(min) ? new Date(min.getTime()) : min);\r\n cur = min;\r\n while (cur < max) {\r\n cur = addInterval(cur, interval);\r\n intervals.push(cur)\r\n }\r\n return intervals\r\n};\r\nvar getViewFirstCellDate = function(viewType, date) {\r\n if (\"month\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n }\r\n if (\"year\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), 0, date.getDate())\r\n }\r\n if (\"decade\" === viewType) {\r\n return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate())\r\n }\r\n if (\"century\" === viewType) {\r\n return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate())\r\n }\r\n};\r\nvar getViewLastCellDate = function(viewType, date) {\r\n if (\"month\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date))\r\n }\r\n if (\"year\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), 11, date.getDate())\r\n }\r\n if (\"decade\" === viewType) {\r\n return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate())\r\n }\r\n if (\"century\" === viewType) {\r\n return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate())\r\n }\r\n};\r\nvar getViewMinBoundaryDate = function(viewType, date) {\r\n var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1);\r\n if (\"month\" === viewType) {\r\n return resultDate\r\n }\r\n resultDate.setMonth(0);\r\n if (\"year\" === viewType) {\r\n return resultDate\r\n }\r\n if (\"decade\" === viewType) {\r\n resultDate.setFullYear(getFirstYearInDecade(date))\r\n }\r\n if (\"century\" === viewType) {\r\n resultDate.setFullYear(getFirstDecadeInCentury(date))\r\n }\r\n return resultDate\r\n};\r\nvar getViewMaxBoundaryDate = function(viewType, date) {\r\n var resultDate = new Date(date);\r\n resultDate.setDate(getLastMonthDay(date));\r\n if (\"month\" === viewType) {\r\n return resultDate\r\n }\r\n resultDate.setMonth(11);\r\n resultDate.setDate(getLastMonthDay(resultDate));\r\n if (\"year\" === viewType) {\r\n return resultDate\r\n }\r\n if (\"decade\" === viewType) {\r\n resultDate.setFullYear(getFirstYearInDecade(date) + 9)\r\n }\r\n if (\"century\" === viewType) {\r\n resultDate.setFullYear(getFirstDecadeInCentury(date) + 99)\r\n }\r\n return resultDate\r\n};\r\n\r\nfunction getLastMonthDay(date) {\r\n var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0);\r\n return resultDate.getDate()\r\n}\r\nvar getViewUp = function(typeView) {\r\n switch (typeView) {\r\n case \"month\":\r\n return \"year\";\r\n case \"year\":\r\n return \"decade\";\r\n case \"decade\":\r\n return \"century\"\r\n }\r\n};\r\nvar getViewDown = function(typeView) {\r\n switch (typeView) {\r\n case \"century\":\r\n return \"decade\";\r\n case \"decade\":\r\n return \"year\";\r\n case \"year\":\r\n return \"month\"\r\n }\r\n};\r\nvar getDifferenceInMonth = function(typeView) {\r\n var difference = 1;\r\n if (\"year\" === typeView) {\r\n difference = 12\r\n }\r\n if (\"decade\" === typeView) {\r\n difference = 120\r\n }\r\n if (\"century\" === typeView) {\r\n difference = 1200\r\n }\r\n return difference\r\n};\r\nvar getDifferenceInMonthForCells = function(typeView) {\r\n var difference = 1;\r\n if (\"decade\" === typeView) {\r\n difference = 12\r\n }\r\n if (\"century\" === typeView) {\r\n difference = 120\r\n }\r\n return difference\r\n};\r\n\r\nfunction getDateIntervalByString(intervalString) {\r\n var result = {};\r\n switch (intervalString) {\r\n case \"year\":\r\n result.years = 1;\r\n break;\r\n case \"month\":\r\n result.months = 1;\r\n break;\r\n case \"quarter\":\r\n result.months = 3;\r\n break;\r\n case \"week\":\r\n result.weeks = 1;\r\n break;\r\n case \"day\":\r\n result.days = 1;\r\n break;\r\n case \"hour\":\r\n result.hours = 1;\r\n break;\r\n case \"minute\":\r\n result.minutes = 1;\r\n break;\r\n case \"second\":\r\n result.seconds = 1;\r\n break;\r\n case \"millisecond\":\r\n result.milliseconds = 1\r\n }\r\n return result\r\n}\r\n\r\nfunction sameDate(date1, date2) {\r\n return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate()\r\n}\r\n\r\nfunction sameMonthAndYear(date1, date2) {\r\n return sameYear(date1, date2) && date1.getMonth() === date2.getMonth()\r\n}\r\n\r\nfunction sameYear(date1, date2) {\r\n return date1 && date2 && date1.getFullYear() === date2.getFullYear()\r\n}\r\nvar sameDecade = function(date1, date2) {\r\n if (!isDefined(date1) || !isDefined(date2)) {\r\n return\r\n }\r\n var startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;\r\n var startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;\r\n return date1 && date2 && startDecadeDate1 === startDecadeDate2\r\n};\r\nvar sameCentury = function(date1, date2) {\r\n if (!isDefined(date1) || !isDefined(date2)) {\r\n return\r\n }\r\n var startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;\r\n var startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;\r\n return date1 && date2 && startCenturyDate1 === startCenturyDate2\r\n};\r\n\r\nfunction getFirstDecadeInCentury(date) {\r\n return date && date.getFullYear() - date.getFullYear() % 100\r\n}\r\n\r\nfunction getFirstYearInDecade(date) {\r\n return date && date.getFullYear() - date.getFullYear() % 10\r\n}\r\nvar getShortDateFormat = function() {\r\n return \"yyyy/MM/dd\"\r\n};\r\nvar getFirstMonthDate = function(date) {\r\n if (!isDefined(date)) {\r\n return\r\n }\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n};\r\nvar getLastMonthDate = function(date) {\r\n if (!isDefined(date)) {\r\n return\r\n }\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0)\r\n};\r\n\r\nfunction getFirstWeekDate(date, firstDayOfWeek) {\r\n var delta = (date.getDay() - firstDayOfWeek + 7) % 7;\r\n var result = new Date(date);\r\n result.setDate(date.getDate() - delta);\r\n return result\r\n}\r\nvar normalizeDateByWeek = function(date, currentDate) {\r\n var differenceInDays = dateUtils.getDatesInterval(date, currentDate, \"day\");\r\n var resultDate = new Date(date);\r\n if (differenceInDays >= 6) {\r\n resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7))\r\n }\r\n return resultDate\r\n};\r\nvar dateInRange = function(date, min, max, format) {\r\n if (\"date\" === format) {\r\n min = min && dateUtils.correctDateWithUnitBeginning(min, \"day\");\r\n max = max && dateUtils.correctDateWithUnitBeginning(max, \"day\");\r\n date = date && dateUtils.correctDateWithUnitBeginning(date, \"day\")\r\n }\r\n return normalizeDate(date, min, max) === date\r\n};\r\nvar intervalsOverlap = function(options) {\r\n var {\r\n firstMin: firstMin,\r\n firstMax: firstMax,\r\n secondMin: secondMin,\r\n secondMax: secondMax\r\n } = options;\r\n return firstMin <= secondMin && secondMin <= firstMax || firstMin > secondMin && firstMin < secondMax || firstMin < secondMax && firstMax > secondMax\r\n};\r\nvar dateTimeFromDecimal = function(number) {\r\n var hours = Math.floor(number);\r\n var minutes = number % 1 * 60;\r\n return {\r\n hours: hours,\r\n minutes: minutes\r\n }\r\n};\r\nvar roundDateByStartDayHour = function(date, startDayHour) {\r\n var startTime = this.dateTimeFromDecimal(startDayHour);\r\n var result = new Date(date);\r\n if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) {\r\n result.setHours(startTime.hours, startTime.minutes, 0, 0)\r\n }\r\n return result\r\n};\r\n\r\nfunction normalizeDate(date, min, max) {\r\n var normalizedDate = date;\r\n if (!isDefined(date)) {\r\n return date\r\n }\r\n if (isDefined(min) && date < min) {\r\n normalizedDate = min\r\n }\r\n if (isDefined(max) && date > max) {\r\n normalizedDate = max\r\n }\r\n return normalizedDate\r\n}\r\n\r\nfunction fixTimezoneGap(oldDate, newDate) {\r\n if (!isDefined(oldDate)) {\r\n return\r\n }\r\n var diff = newDate.getHours() - oldDate.getHours();\r\n if (0 === diff) {\r\n return\r\n }\r\n var sign = 1 === diff || -23 === diff ? -1 : 1;\r\n var trial = new Date(newDate.getTime() + 36e5 * sign);\r\n if (sign > 0 || trial.getDate() === newDate.getDate()) {\r\n newDate.setTime(trial.getTime())\r\n }\r\n}\r\nvar roundToHour = function(date) {\r\n date.setHours(date.getHours() + 1);\r\n date.setMinutes(0);\r\n return date\r\n};\r\n\r\nfunction getTimezonesDifference(min, max) {\r\n return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3\r\n}\r\nvar makeDate = function(date) {\r\n return new Date(date)\r\n};\r\nvar getDatesOfInterval = function(startDate, endDate, step) {\r\n var result = [];\r\n var currentDate = new Date(startDate.getTime());\r\n while (currentDate < endDate) {\r\n result.push(new Date(currentDate.getTime()));\r\n currentDate = this.addInterval(currentDate, step)\r\n }\r\n return result\r\n};\r\nvar createDate = function(date) {\r\n return new Date(isIE11 && isDate(date) ? date.getTime() : date)\r\n};\r\nvar createDateWithFullYear = function(year) {\r\n var result = new Date(...arguments);\r\n result.setFullYear(year);\r\n return result\r\n};\r\nvar dateUtils = {\r\n dateUnitIntervals: dateUnitIntervals,\r\n convertMillisecondsToDateUnits: convertMillisecondsToDateUnits,\r\n dateToMilliseconds: dateToMilliseconds,\r\n getNextDateUnit: getNextDateUnit,\r\n convertDateUnitToMilliseconds: convertDateUnitToMilliseconds,\r\n getDateUnitInterval: getDateUnitInterval,\r\n getDateFormatByTickInterval: getDateFormatByTickInterval,\r\n getDatesDifferences: getDatesDifferences,\r\n correctDateWithUnitBeginning: correctDateWithUnitBeginning,\r\n trimTime: trimTime,\r\n setToDayEnd: setToDayEnd,\r\n roundDateByStartDayHour: roundDateByStartDayHour,\r\n dateTimeFromDecimal: dateTimeFromDecimal,\r\n addDateInterval: addDateInterval,\r\n addInterval: addInterval,\r\n getSequenceByInterval: getSequenceByInterval,\r\n getDateIntervalByString: getDateIntervalByString,\r\n sameDate: sameDate,\r\n sameMonthAndYear: sameMonthAndYear,\r\n sameMonth: sameMonthAndYear,\r\n sameYear: sameYear,\r\n sameDecade: sameDecade,\r\n sameCentury: sameCentury,\r\n getDifferenceInMonth: getDifferenceInMonth,\r\n getDifferenceInMonthForCells: getDifferenceInMonthForCells,\r\n getFirstYearInDecade: getFirstYearInDecade,\r\n getFirstDecadeInCentury: getFirstDecadeInCentury,\r\n getShortDateFormat: getShortDateFormat,\r\n getViewFirstCellDate: getViewFirstCellDate,\r\n getViewLastCellDate: getViewLastCellDate,\r\n getViewDown: getViewDown,\r\n getViewUp: getViewUp,\r\n getLastMonthDay: getLastMonthDay,\r\n getLastMonthDate: getLastMonthDate,\r\n getFirstMonthDate: getFirstMonthDate,\r\n getFirstWeekDate: getFirstWeekDate,\r\n normalizeDateByWeek: normalizeDateByWeek,\r\n getQuarter: getQuarter,\r\n getFirstQuarterMonth: getFirstQuarterMonth,\r\n dateInRange: dateInRange,\r\n intervalsOverlap: intervalsOverlap,\r\n roundToHour: roundToHour,\r\n normalizeDate: normalizeDate,\r\n getViewMinBoundaryDate: getViewMinBoundaryDate,\r\n getViewMaxBoundaryDate: getViewMaxBoundaryDate,\r\n fixTimezoneGap: fixTimezoneGap,\r\n getTimezonesDifference: getTimezonesDifference,\r\n makeDate: makeDate,\r\n getDatesInterval: getDatesInterval,\r\n getDatesOfInterval: getDatesOfInterval,\r\n createDate: createDate,\r\n createDateWithFullYear: createDateWithFullYear\r\n};\r\ndateUtils.sameView = function(view, date1, date2) {\r\n return dateUtils[camelize(\"same \" + view)](date1, date2)\r\n};\r\nexport default dateUtils;\r\n","/**\r\n * DevExtreme (esm/core/utils/array_compare.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"./type\";\r\nvar getKeyWrapper = function(item, getKey) {\r\n var key = getKey(item);\r\n if (isObject(key)) {\r\n try {\r\n return JSON.stringify(key)\r\n } catch (e) {\r\n return key\r\n }\r\n }\r\n return key\r\n};\r\nvar getSameNewByOld = function(oldItem, newItems, newIndexByKey, getKey) {\r\n var key = getKeyWrapper(oldItem, getKey);\r\n return newItems[newIndexByKey[key]]\r\n};\r\nexport var isKeysEqual = function(oldKeys, newKeys) {\r\n if (oldKeys.length !== newKeys.length) {\r\n return false\r\n }\r\n for (var i = 0; i < newKeys.length; i++) {\r\n if (oldKeys[i] !== newKeys[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n};\r\nexport var findChanges = function(oldItems, newItems, getKey, isItemEquals) {\r\n var oldIndexByKey = {};\r\n var newIndexByKey = {};\r\n var addedCount = 0;\r\n var removeCount = 0;\r\n var result = [];\r\n oldItems.forEach((function(item, index) {\r\n var key = getKeyWrapper(item, getKey);\r\n oldIndexByKey[key] = index\r\n }));\r\n newItems.forEach((function(item, index) {\r\n var key = getKeyWrapper(item, getKey);\r\n newIndexByKey[key] = index\r\n }));\r\n var itemCount = Math.max(oldItems.length, newItems.length);\r\n for (var index = 0; index < itemCount + addedCount; index++) {\r\n var newItem = newItems[index];\r\n var oldNextIndex = index - addedCount + removeCount;\r\n var nextOldItem = oldItems[oldNextIndex];\r\n var isRemoved = !newItem || nextOldItem && !getSameNewByOld(nextOldItem, newItems, newIndexByKey, getKey);\r\n if (isRemoved) {\r\n if (nextOldItem) {\r\n result.push({\r\n type: \"remove\",\r\n key: getKey(nextOldItem),\r\n index: index,\r\n oldItem: nextOldItem\r\n });\r\n removeCount++;\r\n index--\r\n }\r\n } else {\r\n var key = getKeyWrapper(newItem, getKey);\r\n var oldIndex = oldIndexByKey[key];\r\n var oldItem = oldItems[oldIndex];\r\n if (!oldItem) {\r\n addedCount++;\r\n result.push({\r\n type: \"insert\",\r\n data: newItem,\r\n index: index\r\n })\r\n } else if (oldIndex === oldNextIndex) {\r\n if (!isItemEquals(oldItem, newItem)) {\r\n result.push({\r\n type: \"update\",\r\n data: newItem,\r\n key: getKey(newItem),\r\n index: index,\r\n oldItem: oldItem\r\n })\r\n }\r\n } else {\r\n return\r\n }\r\n }\r\n }\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/context_menu/ui.menu_base.edit.strategy.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport PlainEditStrategy from \"../collection/ui.collection_widget.edit.strategy.plain\";\r\nclass MenuBaseEditStrategy extends PlainEditStrategy {\r\n _getPlainItems() {\r\n return map(this._collectionWidget.option(\"items\"), (function getMenuItems(item) {\r\n return item.items ? [item].concat(map(item.items, getMenuItems)) : item\r\n }))\r\n }\r\n _stringifyItem(item) {\r\n return JSON.stringify(item, (key, value) => {\r\n if (\"template\" === key) {\r\n return this._getTemplateString(value)\r\n }\r\n return value\r\n })\r\n }\r\n _getTemplateString(template) {\r\n var result;\r\n if (\"object\" === typeof template) {\r\n result = $(template).text()\r\n } else {\r\n result = template.toString()\r\n }\r\n return result\r\n }\r\n}\r\nexport default MenuBaseEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/context_menu/ui.menu_base.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop,\r\n asyncNoop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport HierarchicalCollectionWidget from \"../hierarchical_collection/ui.hierarchical_collection_widget\";\r\nimport MenuBaseEditStrategy from \"./ui.menu_base.edit.strategy\";\r\nimport devices from \"../../core/devices\";\r\nimport MenuItem from \"../collection/item\";\r\nvar DX_MENU_CLASS = \"dx-menu\";\r\nvar DX_MENU_NO_ICONS_CLASS = DX_MENU_CLASS + \"-no-icons\";\r\nvar DX_MENU_BASE_CLASS = \"dx-menu-base\";\r\nvar ITEM_CLASS = DX_MENU_CLASS + \"-item\";\r\nvar DX_ITEM_CONTENT_CLASS = ITEM_CLASS + \"-content\";\r\nvar DX_MENU_SELECTED_ITEM_CLASS = ITEM_CLASS + \"-selected\";\r\nvar DX_MENU_ITEM_WRAPPER_CLASS = ITEM_CLASS + \"-wrapper\";\r\nvar DX_MENU_ITEMS_CONTAINER_CLASS = DX_MENU_CLASS + \"-items-container\";\r\nvar DX_MENU_ITEM_EXPANDED_CLASS = ITEM_CLASS + \"-expanded\";\r\nvar DX_MENU_SEPARATOR_CLASS = DX_MENU_CLASS + \"-separator\";\r\nvar DX_MENU_ITEM_LAST_GROUP_ITEM = DX_MENU_CLASS + \"-last-group-item\";\r\nvar DX_ITEM_HAS_TEXT = ITEM_CLASS + \"-has-text\";\r\nvar DX_ITEM_HAS_ICON = ITEM_CLASS + \"-has-icon\";\r\nvar DX_ITEM_HAS_SUBMENU = ITEM_CLASS + \"-has-submenu\";\r\nvar DX_MENU_ITEM_POPOUT_CLASS = ITEM_CLASS + \"-popout\";\r\nvar DX_MENU_ITEM_POPOUT_CONTAINER_CLASS = DX_MENU_ITEM_POPOUT_CLASS + \"-container\";\r\nvar DX_MENU_ITEM_CAPTION_CLASS = ITEM_CLASS + \"-text\";\r\nvar SINGLE_SELECTION_MODE = \"single\";\r\nvar DEFAULT_DELAY = {\r\n show: 50,\r\n hide: 300\r\n};\r\nclass MenuBase extends HierarchicalCollectionWidget {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n items: [],\r\n cssClass: \"\",\r\n activeStateEnabled: true,\r\n showSubmenuMode: {\r\n name: \"onHover\",\r\n delay: {\r\n show: 50,\r\n hide: 300\r\n }\r\n },\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1,\r\n duration: 100\r\n },\r\n hide: {\r\n type: \"fade\",\r\n from: 1,\r\n to: 0,\r\n duration: 100\r\n }\r\n },\r\n selectByClick: false,\r\n focusOnSelectedItem: false,\r\n keyExpr: null,\r\n _itemAttributes: {\r\n role: \"menuitem\"\r\n },\r\n useInkRipple: false\r\n })\r\n }\r\n _itemDataKey() {\r\n return \"dxMenuItemDataKey\"\r\n }\r\n _itemClass() {\r\n return ITEM_CLASS\r\n }\r\n _setAriaSelected() {}\r\n _selectedItemClass() {\r\n return DX_MENU_SELECTED_ITEM_CLASS\r\n }\r\n _widgetClass() {\r\n return DX_MENU_BASE_CLASS\r\n }\r\n _focusTarget() {\r\n return this._itemContainer()\r\n }\r\n _clean() {\r\n this.option(\"focusedElement\", null);\r\n super._clean()\r\n }\r\n _supportedKeys() {\r\n return extend(super._supportedKeys(), {\r\n space: () => {\r\n var $item = $(this.option(\"focusedElement\"));\r\n if (!$item.length || !this._isSelectionEnabled()) {\r\n return\r\n }\r\n this.selectItem($item[0])\r\n },\r\n pageUp: noop,\r\n pageDown: noop\r\n })\r\n }\r\n _isSelectionEnabled() {\r\n return this.option(\"selectionMode\") === SINGLE_SELECTION_MODE\r\n }\r\n _init() {\r\n this._activeStateUnit = \".\".concat(ITEM_CLASS);\r\n super._init();\r\n this._renderSelectedItem();\r\n this._initActions()\r\n }\r\n _getTextContainer(itemData) {\r\n var itemText = itemData.text;\r\n var $itemContainer = $(\"\").addClass(DX_MENU_ITEM_CAPTION_CLASS);\r\n var itemContent = isPlainObject(itemData) ? itemText : String(itemData);\r\n return itemText && $itemContainer.text(itemContent)\r\n }\r\n _getPopoutContainer(itemData) {\r\n var items = itemData.items;\r\n var $popOutContainer;\r\n if (items && items.length) {\r\n var $popOutImage = $(\"
    \").addClass(DX_MENU_ITEM_POPOUT_CLASS);\r\n $popOutContainer = $(\"\").addClass(DX_MENU_ITEM_POPOUT_CONTAINER_CLASS).append($popOutImage)\r\n }\r\n return $popOutContainer\r\n }\r\n _getDataAdapterOptions() {\r\n return {\r\n rootValue: 0,\r\n multipleSelection: false,\r\n recursiveSelection: false,\r\n recursiveExpansion: false,\r\n searchValue: \"\"\r\n }\r\n }\r\n _selectByItem(selectedItem) {\r\n if (!selectedItem) {\r\n return\r\n }\r\n var nodeToSelect = this._dataAdapter.getNodeByItem(selectedItem);\r\n this._dataAdapter.toggleSelection(nodeToSelect.internalFields.key, true)\r\n }\r\n _renderSelectedItem() {\r\n var selectedKeys = this._dataAdapter.getSelectedNodesKeys();\r\n var selectedKey = selectedKeys.length && selectedKeys[0];\r\n var selectedItem = this.option(\"selectedItem\");\r\n if (!selectedKey) {\r\n this._selectByItem(selectedItem);\r\n return\r\n }\r\n var node = this._dataAdapter.getNodeByKey(selectedKey);\r\n if (false === node.selectable) {\r\n return\r\n }\r\n if (!selectedItem) {\r\n this.option(\"selectedItem\", node.internalFields.item);\r\n return\r\n }\r\n if (selectedItem !== node.internalFields.item) {\r\n this._dataAdapter.toggleSelection(selectedKey, false);\r\n this._selectByItem(selectedItem)\r\n }\r\n }\r\n _initActions() {}\r\n _initMarkup() {\r\n super._initMarkup();\r\n this._addCustomCssClass(this.$element());\r\n this.option(\"useInkRipple\") && this._renderInkRipple()\r\n }\r\n _renderInkRipple() {\r\n this._inkRipple = render()\r\n }\r\n _toggleActiveState($element, value, e) {\r\n super._toggleActiveState.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n }\r\n _getShowSubmenuMode() {\r\n var optionValue = this.option(\"showSubmenuMode\");\r\n optionValue = isObject(optionValue) ? optionValue.name : optionValue;\r\n return this._isDesktopDevice() ? optionValue : \"onClick\"\r\n }\r\n _initSelectedItems() {}\r\n _isDesktopDevice() {\r\n return \"desktop\" === devices.real().deviceType\r\n }\r\n _initEditStrategy() {\r\n var Strategy = MenuBaseEditStrategy;\r\n this._editStrategy = new Strategy(this)\r\n }\r\n _addCustomCssClass($element) {\r\n $element.addClass(this.option(\"cssClass\"))\r\n }\r\n _itemWrapperSelector() {\r\n return \".\".concat(DX_MENU_ITEM_WRAPPER_CLASS)\r\n }\r\n _hoverStartHandler(e) {\r\n var $itemElement = this._getItemElementByEventArgs(e);\r\n if (!$itemElement || this._isItemDisabled($itemElement)) {\r\n return\r\n }\r\n e.stopPropagation();\r\n if (\"onHover\" === this._getShowSubmenuMode()) {\r\n clearTimeout(this._showSubmenusTimeout);\r\n this._showSubmenusTimeout = setTimeout(this._showSubmenu.bind(this, $itemElement), this._getSubmenuDelay(\"show\"))\r\n }\r\n }\r\n _getAvailableItems($itemElements) {\r\n return super._getAvailableItems($itemElements).filter((function() {\r\n return \"hidden\" !== $(this).css(\"visibility\")\r\n }))\r\n }\r\n _isItemDisabled($item) {\r\n return this._disabledGetter($item.data(this._itemDataKey()))\r\n }\r\n _showSubmenu($itemElement) {\r\n this._addExpandedClass($itemElement)\r\n }\r\n _addExpandedClass(itemElement) {\r\n $(itemElement).addClass(DX_MENU_ITEM_EXPANDED_CLASS)\r\n }\r\n _getSubmenuDelay(action) {\r\n var {\r\n delay: delay\r\n } = this.option(\"showSubmenuMode\");\r\n if (!isDefined(delay)) {\r\n return DEFAULT_DELAY[action]\r\n }\r\n return isObject(delay) ? delay[action] : delay\r\n }\r\n _getItemElementByEventArgs(eventArgs) {\r\n var $target = $(eventArgs.target);\r\n if ($target.hasClass(this._itemClass()) || $target.get(0) === eventArgs.currentTarget) {\r\n return $target\r\n }\r\n while (!$target.hasClass(this._itemClass())) {\r\n $target = $target.parent();\r\n if ($target.hasClass(\"dx-submenu\")) {\r\n return null\r\n }\r\n }\r\n return $target\r\n }\r\n _hoverEndHandler() {\r\n clearTimeout(this._showSubmenusTimeout)\r\n }\r\n _hasSubmenu(node) {\r\n return node && node.internalFields.childrenKeys.length\r\n }\r\n _renderContentImpl() {\r\n this._renderItems(this._dataAdapter.getRootNodes())\r\n }\r\n _renderItems(nodes, submenuContainer) {\r\n if (nodes.length) {\r\n this.hasIcons = false;\r\n var $nodeContainer = this._renderContainer(this.$element(), submenuContainer);\r\n var firstVisibleIndex = -1;\r\n var nextGroupFirstIndex = -1;\r\n each(nodes, (index, node) => {\r\n var isVisibleNode = false !== node.visible;\r\n if (isVisibleNode && firstVisibleIndex < 0) {\r\n firstVisibleIndex = index\r\n }\r\n var isBeginGroup = firstVisibleIndex < index && (node.beginGroup || index === nextGroupFirstIndex);\r\n if (isBeginGroup) {\r\n nextGroupFirstIndex = isVisibleNode ? index : index + 1\r\n }\r\n if (index === nextGroupFirstIndex && firstVisibleIndex < index) {\r\n this._renderSeparator($nodeContainer)\r\n }\r\n this._renderItem(index, node, $nodeContainer)\r\n });\r\n if (!this.hasIcons) {\r\n $nodeContainer.addClass(DX_MENU_NO_ICONS_CLASS)\r\n }\r\n }\r\n }\r\n _renderContainer($wrapper) {\r\n var $container = $(\"
      \");\r\n this.setAria(\"role\", \"none\", $container);\r\n return $container.appendTo($wrapper).addClass(DX_MENU_ITEMS_CONTAINER_CLASS)\r\n }\r\n _createDOMElement($nodeContainer) {\r\n var $node = $(\"
    • \");\r\n this.setAria(\"role\", \"none\", $node);\r\n return $node.appendTo($nodeContainer).addClass(DX_MENU_ITEM_WRAPPER_CLASS)\r\n }\r\n _renderItem(index, node, $nodeContainer, $nodeElement) {\r\n var items = this.option(\"items\");\r\n var $node = $nodeElement || this._createDOMElement($nodeContainer);\r\n if (items[index + 1] && items[index + 1].beginGroup) {\r\n $node.addClass(DX_MENU_ITEM_LAST_GROUP_ITEM)\r\n }\r\n var $itemFrame = super._renderItem(index, node.internalFields.item, $node);\r\n if (node.internalFields.item === this.option(\"selectedItem\")) {\r\n $itemFrame.addClass(DX_MENU_SELECTED_ITEM_CLASS)\r\n }\r\n $itemFrame.attr(\"tabIndex\", -1);\r\n if (this._hasSubmenu(node)) {\r\n this.setAria(\"haspopup\", \"true\", $itemFrame)\r\n }\r\n }\r\n _renderItemFrame(index, itemData, $itemContainer) {\r\n var $itemFrame = $itemContainer.children(\".\".concat(ITEM_CLASS));\r\n return $itemFrame.length ? $itemFrame : super._renderItemFrame.apply(this, arguments)\r\n }\r\n _refreshItem($item, item) {\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n var index = $item.data(this._itemIndexKey());\r\n var $nodeContainer = $item.closest(\"ul\");\r\n var $nodeElement = $item.closest(\"li\");\r\n this._renderItem(index, node, $nodeContainer, $nodeElement)\r\n }\r\n _addContentClasses(itemData, $itemFrame) {\r\n var hasText = itemData.text ? !!itemData.text.length : false;\r\n var hasIcon = !!itemData.icon;\r\n var hasSubmenu = itemData.items ? !!itemData.items.length : false;\r\n $itemFrame.toggleClass(DX_ITEM_HAS_TEXT, hasText);\r\n $itemFrame.toggleClass(DX_ITEM_HAS_ICON, hasIcon);\r\n if (!this.hasIcons) {\r\n this.hasIcons = hasIcon\r\n }\r\n $itemFrame.toggleClass(DX_ITEM_HAS_SUBMENU, hasSubmenu)\r\n }\r\n _getItemContent($itemFrame) {\r\n var $itemContent = super._getItemContent($itemFrame);\r\n if (!$itemContent.length) {\r\n $itemContent = $itemFrame.children(\".\".concat(DX_ITEM_CONTENT_CLASS))\r\n }\r\n return $itemContent\r\n }\r\n _postprocessRenderItem(args) {\r\n var $itemElement = $(args.itemElement);\r\n var selectedIndex = this._dataAdapter.getSelectedNodesKeys();\r\n if (!selectedIndex.length || !this._selectedGetter(args.itemData) || !this._isItemSelectable(args.itemData)) {\r\n this._setAriaSelected($itemElement, \"false\");\r\n return\r\n }\r\n var node = this._dataAdapter.getNodeByItem(args.itemData);\r\n if (node.internalFields.key === selectedIndex[0]) {\r\n $itemElement.addClass(this._selectedItemClass());\r\n this._setAriaSelected($itemElement, \"true\")\r\n } else {\r\n this._setAriaSelected($itemElement, \"false\")\r\n }\r\n }\r\n _isItemSelectable(item) {\r\n return false !== item.selectable\r\n }\r\n _renderSeparator($itemsContainer) {\r\n $(\"
    • \").appendTo($itemsContainer).addClass(DX_MENU_SEPARATOR_CLASS)\r\n }\r\n _itemClickHandler(e) {\r\n if (e._skipHandling) {\r\n return\r\n }\r\n var itemClickActionHandler = this._createAction(this._updateSubmenuVisibilityOnClick.bind(this));\r\n this._itemDXEventHandler(e, \"onItemClick\", {}, {\r\n afterExecute: itemClickActionHandler.bind(this)\r\n });\r\n e._skipHandling = true\r\n }\r\n _updateSubmenuVisibilityOnClick(actionArgs) {\r\n this._updateSelectedItemOnClick(actionArgs);\r\n if (\"onClick\" === this._getShowSubmenuMode()) {\r\n this._addExpandedClass(actionArgs.args[0].itemElement)\r\n }\r\n }\r\n _updateSelectedItemOnClick(actionArgs) {\r\n var args = actionArgs.args ? actionArgs.args[0] : actionArgs;\r\n if (!this._isItemSelectionAllowed(args.itemData)) {\r\n return\r\n }\r\n var selectedItemKey = this._dataAdapter.getSelectedNodesKeys();\r\n var selectedNode = selectedItemKey.length && this._dataAdapter.getNodeByKey(selectedItemKey[0]);\r\n if (selectedNode) {\r\n this._toggleItemSelection(selectedNode, false)\r\n }\r\n if (!selectedNode || selectedNode.internalFields.item !== args.itemData) {\r\n this.selectItem(args.itemData)\r\n } else {\r\n this._fireSelectionChangeEvent(null, this.option(\"selectedItem\"));\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n }\r\n _isItemSelectionAllowed(item) {\r\n var isSelectionByClickEnabled = this._isSelectionEnabled() && this.option(\"selectByClick\");\r\n return !this._isContainerEmpty() && isSelectionByClickEnabled && this._isItemSelectable(item) && !this._itemsGetter(item)\r\n }\r\n _isContainerEmpty() {\r\n return this._itemContainer().is(\":empty\")\r\n }\r\n _syncSelectionOptions() {\r\n return asyncNoop()\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"showSubmenuMode\":\r\n break;\r\n case \"selectedItem\":\r\n var node = this._dataAdapter.getNodeByItem(args.value);\r\n var selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];\r\n if (node && node.internalFields.key !== selectedKey) {\r\n if (false === node.selectable) {\r\n break\r\n }\r\n if (selectedKey) {\r\n this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)\r\n }\r\n this._toggleItemSelection(node, true);\r\n this._updateSelectedItems()\r\n }\r\n break;\r\n case \"cssClass\":\r\n case \"position\":\r\n case \"selectByClick\":\r\n case \"animation\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _toggleItemSelection(node, value) {\r\n var itemElement = this._getElementByItem(node.internalFields.item);\r\n itemElement && $(itemElement).toggleClass(DX_MENU_SELECTED_ITEM_CLASS);\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value)\r\n }\r\n _getElementByItem(itemData) {\r\n var result;\r\n each(this._itemElements(), (_, itemElement) => {\r\n if ($(itemElement).data(this._itemDataKey()) !== itemData) {\r\n return true\r\n }\r\n result = itemElement;\r\n return false\r\n });\r\n return result\r\n }\r\n _updateSelectedItems(oldSelection, newSelection) {\r\n if (oldSelection || newSelection) {\r\n this._fireSelectionChangeEvent(newSelection, oldSelection)\r\n }\r\n }\r\n _fireSelectionChangeEvent(addedSelection, removedSelection) {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })({\r\n addedItems: [addedSelection],\r\n removedItems: [removedSelection]\r\n })\r\n }\r\n selectItem(itemElement) {\r\n var itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;\r\n var selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];\r\n var selectedItem = this.option(\"selectedItem\");\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n if (node.internalFields.key !== selectedKey) {\r\n if (selectedKey) {\r\n this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)\r\n }\r\n this._toggleItemSelection(node, true);\r\n this._updateSelectedItems(selectedItem, itemData);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", itemData)\r\n }\r\n }\r\n unselectItem(itemElement) {\r\n var itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;\r\n var node = this._dataAdapter.getNodeByItem(itemData);\r\n var selectedItem = this.option(\"selectedItem\");\r\n if (node.internalFields.selected) {\r\n this._toggleItemSelection(node, false);\r\n this._updateSelectedItems(selectedItem, null);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n }\r\n}\r\nMenuBase.ItemClass = MenuItem;\r\nexport default MenuBase;\r\n","/**\r\n * DevExtreme (esm/ui/sortable.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport Draggable from \"./draggable\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport {\r\n resetPosition\r\n} from \"../animation/translator\";\r\nimport fx from \"../animation/fx\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar window = getWindow();\r\nvar SORTABLE = \"dxSortable\";\r\nvar PLACEHOLDER_CLASS = \"placeholder\";\r\nvar CLONE_CLASS = \"clone\";\r\nvar isElementVisible = itemElement => $(itemElement).is(\":visible\");\r\nvar animate = (element, config) => {\r\n var _config$to, _config$to2;\r\n if (!element) {\r\n return\r\n }\r\n var left = (null === (_config$to = config.to) || void 0 === _config$to ? void 0 : _config$to.left) || 0;\r\n var top = (null === (_config$to2 = config.to) || void 0 === _config$to2 ? void 0 : _config$to2.top) || 0;\r\n element.style.transform = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\r\n element.style.transition = fx.off ? \"\" : \"transform \".concat(config.duration, \"ms \").concat(config.easing)\r\n};\r\nvar stopAnimation = element => {\r\n if (!element) {\r\n return\r\n }\r\n element.style.transform = \"\";\r\n element.style.transition = \"\"\r\n};\r\n\r\nfunction getScrollableBoundary($scrollable) {\r\n var offset = $scrollable.offset();\r\n var style = $scrollable[0].style;\r\n var paddingLeft = parseFloat(style.paddingLeft) || 0;\r\n var paddingRight = parseFloat(style.paddingRight) || 0;\r\n var paddingTop = parseFloat(style.paddingTop) || 0;\r\n var width = $scrollable[0].clientWidth - (paddingLeft + paddingRight);\r\n var height = $scrollable.height();\r\n var left = offset.left + paddingLeft;\r\n var top = offset.top + paddingTop;\r\n return {\r\n left: left,\r\n right: left + width,\r\n top: top,\r\n bottom: top + height\r\n }\r\n}\r\nvar Sortable = Draggable.inherit({\r\n _init: function() {\r\n this.callBase();\r\n this._sourceScrollHandler = this._handleSourceScroll.bind(this);\r\n this._sourceScrollableInfo = null\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n clone: true,\r\n filter: \"> *\",\r\n itemOrientation: \"vertical\",\r\n dropFeedbackMode: \"push\",\r\n allowDropInsideItem: false,\r\n allowReordering: true,\r\n moveItemOnDrop: false,\r\n onDragChange: null,\r\n onAdd: null,\r\n onRemove: null,\r\n onReorder: null,\r\n onPlaceholderPrepared: null,\r\n animation: {\r\n type: \"slide\",\r\n duration: 300,\r\n easing: \"ease\"\r\n },\r\n fromIndex: null,\r\n toIndex: null,\r\n dropInsideItem: false,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n offset: 0,\r\n autoUpdate: false,\r\n draggableElementSize: 0\r\n })\r\n },\r\n reset: function() {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null,\r\n fromIndex: null,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n draggableElementSize: 0\r\n });\r\n if (this._$placeholderElement) {\r\n this._$placeholderElement.remove()\r\n }\r\n this._$placeholderElement = null;\r\n if (!this._isIndicateMode() && this._$modifiedItem) {\r\n this._$modifiedItem.css(\"marginBottom\", this._modifiedItemMargin);\r\n this._$modifiedItem = null\r\n }\r\n },\r\n _getPrevVisibleItem: function(items, index) {\r\n return items.slice(0, index).reverse().filter(isElementVisible)[0]\r\n },\r\n _dragStartHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (true === e.cancel) {\r\n return\r\n }\r\n var $sourceElement = this._getSourceElement();\r\n this._updateItemPoints();\r\n this._subscribeToSourceScroll(e);\r\n this.option(\"fromIndex\", this._getElementIndex($sourceElement));\r\n this.option(\"fromIndexOffset\", this.option(\"offset\"))\r\n },\r\n _dragEndHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n this._unsubscribeFromSourceScroll()\r\n },\r\n _subscribeToSourceScroll: function(e) {\r\n var $scrollable = this._getScrollable($(e.target));\r\n if ($scrollable) {\r\n this._sourceScrollableInfo = {\r\n element: $scrollable,\r\n scrollLeft: $scrollable.scrollLeft(),\r\n scrollTop: $scrollable.scrollTop()\r\n };\r\n eventsEngine.on($scrollable, \"scroll\", this._sourceScrollHandler)\r\n }\r\n },\r\n _unsubscribeFromSourceScroll: function() {\r\n if (this._sourceScrollableInfo) {\r\n eventsEngine.off(this._sourceScrollableInfo.element, \"scroll\", this._sourceScrollHandler);\r\n this._sourceScrollableInfo = null\r\n }\r\n },\r\n _handleSourceScroll: function(e) {\r\n var sourceScrollableInfo = this._sourceScrollableInfo;\r\n if (sourceScrollableInfo) {\r\n [\"scrollLeft\", \"scrollTop\"].forEach(scrollProp => {\r\n if (e.target[scrollProp] !== sourceScrollableInfo[scrollProp]) {\r\n var scrollBy = e.target[scrollProp] - sourceScrollableInfo[scrollProp];\r\n this._correctItemPoints(scrollBy);\r\n sourceScrollableInfo[scrollProp] = e.target[scrollProp]\r\n }\r\n })\r\n }\r\n },\r\n _dragEnterHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this === this._getSourceDraggable()) {\r\n return\r\n }\r\n this._updateItemPoints();\r\n this.option(\"fromIndex\", -1);\r\n if (!this._isIndicateMode()) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n var lastItemPoint = itemPoints[itemPoints.length - 1];\r\n if (lastItemPoint) {\r\n var $element = this.$element();\r\n var $sourceElement = this._getSourceElement();\r\n var isVertical = this._isVerticalOrientation();\r\n var sourceElementSize = isVertical ? $sourceElement.outerHeight(true) : $sourceElement.outerWidth(true);\r\n var scrollSize = $element.get(0)[isVertical ? \"scrollHeight\" : \"scrollWidth\"];\r\n var scrollPosition = $element.get(0)[isVertical ? \"scrollTop\" : \"scrollLeft\"];\r\n var positionProp = isVertical ? \"top\" : \"left\";\r\n var lastPointPosition = lastItemPoint[positionProp];\r\n var elementPosition = $element.offset()[positionProp];\r\n var freeSize = elementPosition + scrollSize - scrollPosition - lastPointPosition;\r\n if (freeSize < sourceElementSize) {\r\n if (isVertical) {\r\n var items = this._getItems();\r\n var $lastItem = $(this._getPrevVisibleItem(items));\r\n this._$modifiedItem = $lastItem;\r\n this._modifiedItemMargin = $lastItem.get(0).style.marginBottom;\r\n $lastItem.css(\"marginBottom\", sourceElementSize - freeSize);\r\n var $sortable = $lastItem.closest(\".dx-sortable\");\r\n var sortable = $sortable.data(\"dxScrollable\") || $sortable.data(\"dxScrollView\");\r\n sortable && sortable.update()\r\n }\r\n }\r\n }\r\n }\r\n },\r\n dragEnter: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", -1)\r\n }\r\n },\r\n dragLeave: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", this.option(\"fromIndex\"))\r\n }\r\n },\r\n _isInsideTargetDraggable: function(event) {\r\n var $targetDraggable = this._getTargetDraggable().$element();\r\n var $scrollable = this._getScrollable($targetDraggable);\r\n if ($scrollable) {\r\n var {\r\n left: left,\r\n right: right,\r\n top: top,\r\n bottom: bottom\r\n } = getScrollableBoundary($scrollable);\r\n var validX = left <= event.pageX && event.pageX <= right;\r\n var validY = top <= event.pageY && event.pageY <= bottom;\r\n return validY && validX\r\n }\r\n return true\r\n },\r\n dragEnd: function(sourceEvent) {\r\n var $sourceElement = this._getSourceElement();\r\n var sourceDraggable = this._getSourceDraggable();\r\n var isSourceDraggable = sourceDraggable.NAME !== this.NAME;\r\n var toIndex = this.option(\"toIndex\");\r\n var isInsideTargetDraggable = this._isInsideTargetDraggable(sourceEvent.event);\r\n if (null !== toIndex && toIndex >= 0 && isInsideTargetDraggable) {\r\n var cancelAdd;\r\n var cancelRemove;\r\n if (sourceDraggable !== this) {\r\n cancelAdd = this._fireAddEvent(sourceEvent);\r\n if (!cancelAdd) {\r\n cancelRemove = this._fireRemoveEvent(sourceEvent)\r\n }\r\n }\r\n if (isSourceDraggable) {\r\n resetPosition($sourceElement)\r\n }\r\n if (this.option(\"moveItemOnDrop\")) {\r\n !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove)\r\n }\r\n if (sourceDraggable === this) {\r\n return this._fireReorderEvent(sourceEvent)\r\n }\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n dragMove: function(e) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (!itemPoints) {\r\n return\r\n }\r\n var isVertical = this._isVerticalOrientation();\r\n var axisName = isVertical ? \"top\" : \"left\";\r\n var cursorPosition = isVertical ? e.pageY : e.pageX;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var itemPoint;\r\n for (var i = itemPoints.length - 1; i >= 0; i--) {\r\n var centerPosition = itemPoints[i + 1] && (itemPoints[i][axisName] + itemPoints[i + 1][axisName]) / 2;\r\n if ((!isVertical && rtlEnabled ? cursorPosition > centerPosition : centerPosition > cursorPosition) || void 0 === centerPosition) {\r\n itemPoint = itemPoints[i]\r\n } else {\r\n break\r\n }\r\n }\r\n if (itemPoint) {\r\n this._updatePlaceholderPosition(e, itemPoint);\r\n if (this._verticalScrollHelper.isScrolling() && this._isIndicateMode()) {\r\n this._movePlaceholder()\r\n }\r\n }\r\n },\r\n _isIndicateMode: function() {\r\n return \"indicate\" === this.option(\"dropFeedbackMode\") || this.option(\"allowDropInsideItem\")\r\n },\r\n _createPlaceholder: function() {\r\n var $placeholderContainer;\r\n if (this._isIndicateMode()) {\r\n $placeholderContainer = $(\"
      \").addClass(this._addWidgetPrefix(PLACEHOLDER_CLASS)).insertBefore(this._getSourceDraggable()._$dragElement)\r\n }\r\n this._$placeholderElement = $placeholderContainer;\r\n return $placeholderContainer\r\n },\r\n _getItems: function() {\r\n var itemsSelector = this._getItemsSelector();\r\n return this._$content().find(itemsSelector).not(\".\" + this._addWidgetPrefix(PLACEHOLDER_CLASS)).not(\".\" + this._addWidgetPrefix(CLONE_CLASS)).toArray()\r\n },\r\n _allowReordering: function() {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return sourceDraggable !== targetDraggable || this.option(\"allowReordering\")\r\n },\r\n _isValidPoint: function(visibleIndex, draggableVisibleIndex, dropInsideItem) {\r\n var allowDropInsideItem = this.option(\"allowDropInsideItem\");\r\n var allowReordering = dropInsideItem || this._allowReordering();\r\n if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) {\r\n return false\r\n }\r\n if (!this._isIndicateMode()) {\r\n return true\r\n }\r\n return -1 === draggableVisibleIndex || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1)\r\n },\r\n _getItemPoints: function() {\r\n var result = [];\r\n var $item;\r\n var offset;\r\n var itemWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isVertical = this._isVerticalOrientation();\r\n var itemElements = this._getItems();\r\n var visibleItemElements = itemElements.filter(isElementVisible);\r\n var visibleItemCount = visibleItemElements.length;\r\n var $draggableItem = this._getDraggableElement();\r\n var draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0));\r\n if (visibleItemCount) {\r\n for (var i = 0; i <= visibleItemCount; i++) {\r\n var needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount;\r\n var needCorrectTopPosition = isVertical && i === visibleItemCount;\r\n if (i < visibleItemCount) {\r\n $item = $(visibleItemElements[i]);\r\n offset = $item.offset();\r\n itemWidth = $item.outerWidth()\r\n }\r\n result.push({\r\n dropInsideItem: false,\r\n left: offset.left + (needCorrectLeftPosition ? itemWidth : 0),\r\n top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0),\r\n index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)),\r\n $item: $item,\r\n width: $item.outerWidth(),\r\n height: $item.outerHeight(),\r\n isValid: this._isValidPoint(i, draggableVisibleIndex)\r\n })\r\n }\r\n if (this.option(\"allowDropInsideItem\")) {\r\n var points = result;\r\n result = [];\r\n for (var _i = 0; _i < points.length; _i++) {\r\n result.push(points[_i]);\r\n if (points[_i + 1]) {\r\n result.push(extend({}, points[_i], {\r\n dropInsideItem: true,\r\n top: Math.floor((points[_i].top + points[_i + 1].top) / 2),\r\n left: Math.floor((points[_i].left + points[_i + 1].left) / 2),\r\n isValid: this._isValidPoint(_i, draggableVisibleIndex, true)\r\n }))\r\n }\r\n }\r\n }\r\n } else {\r\n result.push({\r\n dropInsideItem: false,\r\n index: 0,\r\n isValid: true\r\n })\r\n }\r\n return result\r\n },\r\n _updateItemPoints: function(forceUpdate) {\r\n if (forceUpdate || this.option(\"autoUpdate\") || !this.option(\"itemPoints\")) {\r\n this.option(\"itemPoints\", this._getItemPoints())\r\n }\r\n },\r\n _correctItemPoints: function(scrollBy) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (scrollBy && itemPoints && !this.option(\"autoUpdate\")) {\r\n var isVertical = this._isVerticalOrientation();\r\n var positionPropName = isVertical ? \"top\" : \"left\";\r\n itemPoints.forEach(itemPoint => {\r\n itemPoint[positionPropName] -= scrollBy\r\n })\r\n }\r\n },\r\n _getElementIndex: function($itemElement) {\r\n return this._getItems().indexOf($itemElement.get(0))\r\n },\r\n _getDragTemplateArgs: function($element) {\r\n var args = this.callBase.apply(this, arguments);\r\n args.model.fromIndex = this._getElementIndex($element);\r\n return args\r\n },\r\n _togglePlaceholder: function(value) {\r\n this._$placeholderElement && this._$placeholderElement.toggle(value)\r\n },\r\n _isVerticalOrientation: function() {\r\n return \"vertical\" === this.option(\"itemOrientation\")\r\n },\r\n _normalizeToIndex: function(toIndex, dropInsideItem) {\r\n var isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable();\r\n var fromIndex = this.option(\"fromIndex\");\r\n if (null === toIndex) {\r\n return fromIndex\r\n }\r\n return Math.max(isAnotherDraggable || fromIndex >= toIndex || dropInsideItem ? toIndex : toIndex - 1, 0)\r\n },\r\n _updatePlaceholderPosition: function(e, itemPoint) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem);\r\n var eventArgs = extend(this._getEventArgs(e), {\r\n toIndex: toIndex,\r\n dropInsideItem: itemPoint.dropInsideItem\r\n });\r\n itemPoint.isValid && this._getAction(\"onDragChange\")(eventArgs);\r\n if (eventArgs.cancel || !itemPoint.isValid) {\r\n if (!itemPoint.isValid) {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null\r\n })\r\n }\r\n return\r\n }\r\n this.option({\r\n dropInsideItem: itemPoint.dropInsideItem,\r\n toIndex: itemPoint.index\r\n });\r\n this._getAction(\"onPlaceholderPrepared\")(extend(this._getEventArgs(e), {\r\n placeholderElement: getPublicElement(this._$placeholderElement),\r\n dragElement: getPublicElement(sourceDraggable._$dragElement)\r\n }));\r\n this._updateItemPoints()\r\n },\r\n _makeWidthCorrection: function($item, width) {\r\n this._$scrollable = this._getScrollable($item);\r\n if (this._$scrollable && this._$scrollable.width() < width) {\r\n var scrollableWidth = this._$scrollable.width();\r\n var offsetLeft = $item.offset().left - this._$scrollable.offset().left;\r\n var offsetRight = scrollableWidth - $item.outerWidth() - offsetLeft;\r\n if (offsetLeft > 0) {\r\n width = scrollableWidth - offsetLeft\r\n } else if (offsetRight > 0) {\r\n width = scrollableWidth - offsetRight\r\n } else {\r\n width = scrollableWidth\r\n }\r\n }\r\n return width\r\n },\r\n _updatePlaceholderSizes: function($placeholderElement, itemElement) {\r\n var dropInsideItem = this.option(\"dropInsideItem\");\r\n var $item = $(itemElement);\r\n var isVertical = this._isVerticalOrientation();\r\n var width = \"\";\r\n var height = \"\";\r\n $placeholderElement.toggleClass(this._addWidgetPrefix(\"placeholder-inside\"), dropInsideItem);\r\n if (isVertical || dropInsideItem) {\r\n width = $item.outerWidth()\r\n }\r\n if (!isVertical || dropInsideItem) {\r\n height = $item.outerHeight()\r\n }\r\n width = this._makeWidthCorrection($item, width);\r\n $placeholderElement.css({\r\n width: width,\r\n height: height\r\n })\r\n },\r\n _moveItem: function($itemElement, index, cancelRemove) {\r\n var $prevTargetItemElement;\r\n var $itemElements = this._getItems();\r\n var $targetItemElement = $itemElements[index];\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (cancelRemove) {\r\n $itemElement = $itemElement.clone();\r\n sourceDraggable._toggleDragSourceClass(false, $itemElement)\r\n }\r\n if (!$targetItemElement) {\r\n $prevTargetItemElement = $itemElements[index - 1]\r\n }\r\n this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement)\r\n },\r\n _moveItemCore: function($targetItem, item, prevItem) {\r\n if (!item && !prevItem) {\r\n $targetItem.appendTo(this.$element())\r\n } else if (prevItem) {\r\n $targetItem.insertAfter($(prevItem))\r\n } else {\r\n $targetItem.insertBefore($(item))\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n return extend(this.callBase.apply(this, arguments), {\r\n fromIndex: this._getElementIndex($itemElement)\r\n })\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n var dropInsideItem = targetDraggable.option(\"dropInsideItem\");\r\n return extend(this.callBase.apply(this, arguments), {\r\n fromIndex: sourceDraggable.option(\"fromIndex\"),\r\n toIndex: this._normalizeToIndex(targetDraggable.option(\"toIndex\"), dropInsideItem),\r\n dropInsideItem: dropInsideItem\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragChange\":\r\n case \"onPlaceholderPrepared\":\r\n case \"onAdd\":\r\n case \"onRemove\":\r\n case \"onReorder\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"itemOrientation\":\r\n case \"allowDropInsideItem\":\r\n case \"moveItemOnDrop\":\r\n case \"dropFeedbackMode\":\r\n case \"itemPoints\":\r\n case \"animation\":\r\n case \"allowReordering\":\r\n case \"fromIndexOffset\":\r\n case \"offset\":\r\n case \"draggableElementSize\":\r\n case \"autoUpdate\":\r\n break;\r\n case \"fromIndex\":\r\n [false, true].forEach(isDragSource => {\r\n var fromIndex = isDragSource ? args.value : args.previousValue;\r\n if (null !== fromIndex) {\r\n var $fromElement = $(this._getItems()[fromIndex]);\r\n this._toggleDragSourceClass(isDragSource, $fromElement)\r\n }\r\n });\r\n break;\r\n case \"dropInsideItem\":\r\n this._optionChangedDropInsideItem(args);\r\n break;\r\n case \"toIndex\":\r\n this._optionChangedToIndex(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _optionChangedDropInsideItem: function() {\r\n if (this._isIndicateMode() && this._$placeholderElement) {\r\n this._movePlaceholder()\r\n }\r\n },\r\n _isPositionVisible: function(position) {\r\n var $element = this.$element();\r\n var scrollContainer;\r\n if (\"hidden\" !== $element.css(\"overflow\")) {\r\n scrollContainer = $element.get(0)\r\n } else {\r\n $element.parents().each((function() {\r\n if (\"visible\" !== $(this).css(\"overflow\")) {\r\n scrollContainer = this;\r\n return false\r\n }\r\n }))\r\n }\r\n if (scrollContainer) {\r\n var clientRect = getBoundingRect(scrollContainer);\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var start = isVerticalOrientation ? \"top\" : \"left\";\r\n var end = isVerticalOrientation ? \"bottom\" : \"right\";\r\n var pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset;\r\n if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _optionChangedToIndex: function(args) {\r\n var toIndex = args.value;\r\n if (this._isIndicateMode()) {\r\n var showPlaceholder = null !== toIndex && toIndex >= 0;\r\n this._togglePlaceholder(showPlaceholder);\r\n if (showPlaceholder) {\r\n this._movePlaceholder()\r\n }\r\n } else {\r\n this._moveItems(args.previousValue, args.value, args.fullUpdate)\r\n }\r\n },\r\n update: function() {\r\n if (null === this.option(\"fromIndex\") && null === this.option(\"toIndex\")) {\r\n return\r\n }\r\n this._updateItemPoints(true);\r\n this._updateDragSourceClass();\r\n var toIndex = this.option(\"toIndex\");\r\n this._optionChangedToIndex({\r\n value: toIndex,\r\n fullUpdate: true\r\n })\r\n },\r\n _updateDragSourceClass: function() {\r\n var fromIndex = this._getActualFromIndex();\r\n var $fromElement = $(this._getItems()[fromIndex]);\r\n if ($fromElement.length) {\r\n this._$sourceElement = $fromElement;\r\n this._toggleDragSourceClass(true, $fromElement)\r\n }\r\n },\r\n _makeLeftCorrection: function(left, leftMargin) {\r\n var $scrollable = this._$scrollable;\r\n if ($scrollable && this._isVerticalOrientation() && $scrollable.scrollLeft() > leftMargin) {\r\n left += $scrollable.scrollLeft() - leftMargin\r\n }\r\n return left\r\n },\r\n _movePlaceholder: function() {\r\n var $placeholderElement = this._$placeholderElement || this._createPlaceholder();\r\n var items = this._getItems();\r\n var toIndex = this.option(\"toIndex\");\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var dropInsideItem = this.option(\"dropInsideItem\");\r\n var position = null;\r\n var leftMargin = 0;\r\n var itemElement = items[toIndex];\r\n if (itemElement) {\r\n var $itemElement = $(itemElement);\r\n position = $itemElement.offset();\r\n leftMargin = parseFloat($itemElement.css(\"marginLeft\"));\r\n if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) {\r\n position.left += $itemElement.outerWidth(true)\r\n }\r\n } else {\r\n var prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex);\r\n if (prevVisibleItemElement) {\r\n position = $(prevVisibleItemElement).offset();\r\n if (isVerticalOrientation) {\r\n position.top += $(prevVisibleItemElement).outerHeight(true)\r\n } else if (!rtlEnabled) {\r\n position.left += $(prevVisibleItemElement).outerWidth(true)\r\n }\r\n }\r\n }\r\n this._updatePlaceholderSizes($placeholderElement, itemElement);\r\n if (position && !this._isPositionVisible(position)) {\r\n position = null\r\n }\r\n if (position) {\r\n position.left = this._makeLeftCorrection(position.left, leftMargin);\r\n this._move(position, $placeholderElement)\r\n }\r\n $placeholderElement.toggle(!!position)\r\n },\r\n _getPositions: function(items, elementSize, fromIndex, toIndex) {\r\n var positions = [];\r\n for (var i = 0; i < items.length; i++) {\r\n var position = 0;\r\n if (null === toIndex || null === fromIndex) {\r\n positions.push(position);\r\n continue\r\n }\r\n if (-1 === fromIndex) {\r\n if (i >= toIndex) {\r\n position = elementSize\r\n }\r\n } else if (-1 === toIndex) {\r\n if (i > fromIndex) {\r\n position = -elementSize\r\n }\r\n } else if (fromIndex < toIndex) {\r\n if (i > fromIndex && i < toIndex) {\r\n position = -elementSize\r\n }\r\n } else if (fromIndex > toIndex) {\r\n if (i >= toIndex && i < fromIndex) {\r\n position = elementSize\r\n }\r\n }\r\n positions.push(position)\r\n }\r\n return positions\r\n },\r\n _getDraggableElementSize: function(isVerticalOrientation) {\r\n var $draggableItem = this._getDraggableElement();\r\n var size = this.option(\"draggableElementSize\");\r\n if (!size) {\r\n size = isVerticalOrientation ? ($draggableItem.outerHeight() + $draggableItem.outerHeight(true)) / 2 : ($draggableItem.outerWidth() + $draggableItem.outerWidth(true)) / 2;\r\n if (!this.option(\"autoUpdate\")) {\r\n this.option(\"draggableElementSize\", size)\r\n }\r\n }\r\n return size\r\n },\r\n _getActualFromIndex: function() {\r\n var {\r\n fromIndex: fromIndex,\r\n fromIndexOffset: fromIndexOffset,\r\n offset: offset\r\n } = this.option();\r\n return null == fromIndex ? null : fromIndex + fromIndexOffset - offset\r\n },\r\n _moveItems: function(prevToIndex, toIndex, fullUpdate) {\r\n var fromIndex = this._getActualFromIndex();\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var positionPropName = isVerticalOrientation ? \"top\" : \"left\";\r\n var elementSize = this._getDraggableElementSize(isVerticalOrientation);\r\n var items = this._getItems();\r\n var prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex);\r\n var positions = this._getPositions(items, elementSize, fromIndex, toIndex);\r\n var animationConfig = this.option(\"animation\");\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n for (var i = 0; i < items.length; i++) {\r\n var itemElement = items[i];\r\n var prevPosition = prevPositions[i];\r\n var position = positions[i];\r\n if (null === toIndex || null === fromIndex) {\r\n stopAnimation(itemElement)\r\n } else if (prevPosition !== position || fullUpdate && position) {\r\n animate(itemElement, extend({}, animationConfig, {\r\n to: {\r\n [positionPropName]: !isVerticalOrientation && rtlEnabled ? -position : position\r\n }\r\n }))\r\n }\r\n }\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n this.callBase.apply(this, arguments);\r\n if (!this._isIndicateMode()) {\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source-hidden\"), value)\r\n }\r\n },\r\n _dispose: function() {\r\n this.reset();\r\n this.callBase()\r\n },\r\n _fireAddEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onAdd\")(args);\r\n return args.cancel\r\n },\r\n _fireRemoveEvent: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var args = this._getEventArgs(sourceEvent);\r\n sourceDraggable._getAction(\"onRemove\")(args);\r\n return args.cancel\r\n },\r\n _fireReorderEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onReorder\")(args);\r\n return args.promise || (new Deferred).resolve()\r\n }\r\n});\r\nregisterComponent(SORTABLE, Sortable);\r\nexport default Sortable;\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.widget.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Action from \"../../core/action\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n active,\r\n focus,\r\n hover,\r\n keyboard\r\n} from \"../../events/short\";\r\nimport {\r\n deferRender,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focusable as focusableSelector\r\n} from \"./selectors\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport \"../../events/click\";\r\nimport \"../../events/core/emitter.feedback\";\r\nimport \"../../events/hover\";\r\n\r\nfunction setAttribute(name, value, target) {\r\n name = \"role\" === name || \"id\" === name ? name : \"aria-\".concat(name);\r\n value = isDefined(value) ? value.toString() : null;\r\n target.attr(name, value)\r\n}\r\nvar Widget = DOMComponent.inherit({\r\n _feedbackHideTimeout: 400,\r\n _feedbackShowTimeout: 30,\r\n _supportedKeys: () => ({}),\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n hoveredElement: null,\r\n isActive: false,\r\n disabled: false,\r\n visible: true,\r\n hint: void 0,\r\n activeStateEnabled: false,\r\n onContentReady: null,\r\n hoverStateEnabled: false,\r\n focusStateEnabled: false,\r\n tabIndex: 0,\r\n accessKey: void 0,\r\n onFocusIn: null,\r\n onFocusOut: null,\r\n onKeyboardHandled: null,\r\n ignoreParentReadOnly: false\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initContentReadyAction()\r\n },\r\n _innerWidgetOptionChanged: function(innerWidget, args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n innerWidget && innerWidget.option(options);\r\n this._options.cache(args.name, options)\r\n },\r\n _bindInnerWidgetOptions(innerWidget, optionsContainer) {\r\n var syncOptions = () => this._options.silent(optionsContainer, extend({}, innerWidget.option()));\r\n syncOptions();\r\n innerWidget.on(\"optionChanged\", syncOptions)\r\n },\r\n _getAriaTarget() {\r\n return this._focusTarget()\r\n },\r\n _initContentReadyAction() {\r\n this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initMarkup() {\r\n var {\r\n disabled: disabled,\r\n visible: visible\r\n } = this.option();\r\n this.$element().addClass(\"dx-widget\");\r\n this._toggleDisabledState(disabled);\r\n this._toggleVisibility(visible);\r\n this._renderHint();\r\n this._isFocusable() && this._renderFocusTarget();\r\n this.callBase()\r\n },\r\n _render() {\r\n this.callBase();\r\n this._renderContent();\r\n this._renderFocusState();\r\n this._attachFeedbackEvents();\r\n this._attachHoverEvents();\r\n this._toggleIndependentState()\r\n },\r\n _renderHint() {\r\n var {\r\n hint: hint\r\n } = this.option();\r\n this.$element().attr(\"title\", hint || null)\r\n },\r\n _renderContent() {\r\n deferRender(() => !this._disposed ? this._renderContentImpl() : void 0).done(() => !this._disposed ? this._fireContentReadyAction() : void 0)\r\n },\r\n _renderContentImpl: noop,\r\n _fireContentReadyAction: deferRenderer((function() {\r\n return this._contentReadyAction()\r\n })),\r\n _dispose() {\r\n this._contentReadyAction = null;\r\n this._detachKeyboardEvents();\r\n this.callBase()\r\n },\r\n _resetActiveState() {\r\n this._toggleActiveState(this._eventBindingTarget(), false)\r\n },\r\n _clean() {\r\n this._cleanFocusState();\r\n this._resetActiveState();\r\n this.callBase();\r\n this.$element().empty()\r\n },\r\n _toggleVisibility(visible) {\r\n this.$element().toggleClass(\"dx-state-invisible\", !visible);\r\n this.setAria(\"hidden\", !visible || void 0)\r\n },\r\n _renderFocusState() {\r\n this._attachKeyboardEvents();\r\n if (this._isFocusable()) {\r\n this._renderFocusTarget();\r\n this._attachFocusEvents();\r\n this._renderAccessKey()\r\n }\r\n },\r\n _renderAccessKey() {\r\n var $el = this._focusTarget();\r\n var {\r\n accessKey: accessKey\r\n } = this.option();\r\n $el.attr(\"accesskey\", accessKey)\r\n },\r\n _isFocusable() {\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n disabled: disabled\r\n } = this.option();\r\n return focusStateEnabled && !disabled\r\n },\r\n _eventBindingTarget() {\r\n return this.$element()\r\n },\r\n _focusTarget() {\r\n return this._getActiveElement()\r\n },\r\n _getActiveElement() {\r\n var activeElement = this._eventBindingTarget();\r\n if (this._activeStateUnit) {\r\n return activeElement.find(this._activeStateUnit).not(\".dx-state-disabled\")\r\n }\r\n return activeElement\r\n },\r\n _renderFocusTarget() {\r\n var {\r\n tabIndex: tabIndex\r\n } = this.option();\r\n this._focusTarget().attr(\"tabIndex\", tabIndex)\r\n },\r\n _keyboardEventBindingTarget() {\r\n return this._eventBindingTarget()\r\n },\r\n _refreshFocusEvent() {\r\n this._detachFocusEvents();\r\n this._attachFocusEvents()\r\n },\r\n _focusEventTarget() {\r\n return this._focusTarget()\r\n },\r\n _focusInHandler(event) {\r\n if (!event.isDefaultPrevented()) {\r\n this._createActionByOption(\"onFocusIn\", {\r\n beforeExecute: () => this._updateFocusState(event, true),\r\n excludeValidators: [\"readOnly\"]\r\n })({\r\n event: event\r\n })\r\n }\r\n },\r\n _focusOutHandler(event) {\r\n if (!event.isDefaultPrevented()) {\r\n this._createActionByOption(\"onFocusOut\", {\r\n beforeExecute: () => this._updateFocusState(event, false),\r\n excludeValidators: [\"readOnly\", \"disabled\"]\r\n })({\r\n event: event\r\n })\r\n }\r\n },\r\n _updateFocusState(_ref, isFocused) {\r\n var {\r\n target: target\r\n } = _ref;\r\n if (-1 !== inArray(target, this._focusTarget())) {\r\n this._toggleFocusClass(isFocused, $(target))\r\n }\r\n },\r\n _toggleFocusClass(isFocused, $element) {\r\n var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n $focusTarget.toggleClass(\"dx-state-focused\", isFocused)\r\n },\r\n _hasFocusClass(element) {\r\n var $focusTarget = $(element || this._focusTarget());\r\n return $focusTarget.hasClass(\"dx-state-focused\")\r\n },\r\n _isFocused() {\r\n return this._hasFocusClass()\r\n },\r\n _getKeyboardListeners: () => [],\r\n _attachKeyboardEvents() {\r\n this._detachKeyboardEvents();\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n onKeyboardHandled: onKeyboardHandled\r\n } = this.option();\r\n var hasChildListeners = this._getKeyboardListeners().length;\r\n var hasKeyboardEventHandler = !!onKeyboardHandled;\r\n var shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler;\r\n if (shouldAttach) {\r\n this._keyboardListenerId = keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), opts => this._keyboardHandler(opts))\r\n }\r\n },\r\n _keyboardHandler(options, onlyChildProcessing) {\r\n if (!onlyChildProcessing) {\r\n var {\r\n originalEvent: originalEvent,\r\n keyName: keyName,\r\n which: which\r\n } = options;\r\n var keys = this._supportedKeys(originalEvent);\r\n var func = keys[keyName] || keys[which];\r\n if (void 0 !== func) {\r\n var handler = func.bind(this);\r\n var result = handler(originalEvent, options);\r\n if (!result) {\r\n return false\r\n }\r\n }\r\n }\r\n var keyboardListeners = this._getKeyboardListeners();\r\n var {\r\n onKeyboardHandled: onKeyboardHandled\r\n } = this.option();\r\n keyboardListeners.forEach(listener => listener && listener._keyboardHandler(options));\r\n onKeyboardHandled && onKeyboardHandled(options);\r\n return true\r\n },\r\n _refreshFocusState() {\r\n this._cleanFocusState();\r\n this._renderFocusState()\r\n },\r\n _cleanFocusState() {\r\n var $element = this._focusTarget();\r\n $element.removeAttr(\"tabIndex\");\r\n this._toggleFocusClass(false);\r\n this._detachFocusEvents();\r\n this._detachKeyboardEvents()\r\n },\r\n _detachKeyboardEvents() {\r\n keyboard.off(this._keyboardListenerId);\r\n this._keyboardListenerId = null\r\n },\r\n _attachHoverEvents() {\r\n var {\r\n hoverStateEnabled: hoverStateEnabled\r\n } = this.option();\r\n var selector = this._activeStateUnit;\r\n var $el = this._eventBindingTarget();\r\n hover.off($el, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n });\r\n if (hoverStateEnabled) {\r\n hover.on($el, new Action(_ref2 => {\r\n var {\r\n event: event,\r\n element: element\r\n } = _ref2;\r\n this._hoverStartHandler(event);\r\n this.option(\"hoveredElement\", $(element))\r\n }, {\r\n excludeValidators: [\"readOnly\"]\r\n }), event => {\r\n this.option(\"hoveredElement\", null);\r\n this._hoverEndHandler(event)\r\n }, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n },\r\n _attachFeedbackEvents() {\r\n var {\r\n activeStateEnabled: activeStateEnabled\r\n } = this.option();\r\n var selector = this._activeStateUnit;\r\n var $el = this._eventBindingTarget();\r\n active.off($el, {\r\n namespace: \"UIFeedback\",\r\n selector: selector\r\n });\r\n if (activeStateEnabled) {\r\n active.on($el, new Action(_ref3 => {\r\n var {\r\n event: event,\r\n element: element\r\n } = _ref3;\r\n return this._toggleActiveState($(element), true, event)\r\n }), new Action(_ref4 => {\r\n var {\r\n event: event,\r\n element: element\r\n } = _ref4;\r\n return this._toggleActiveState($(element), false, event)\r\n }, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }), {\r\n showTimeout: this._feedbackShowTimeout,\r\n hideTimeout: this._feedbackHideTimeout,\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n },\r\n _detachFocusEvents() {\r\n var $el = this._focusEventTarget();\r\n focus.off($el, {\r\n namespace: \"\".concat(this.NAME, \"Focus\")\r\n })\r\n },\r\n _attachFocusEvents() {\r\n var $el = this._focusEventTarget();\r\n focus.on($el, e => this._focusInHandler(e), e => this._focusOutHandler(e), {\r\n namespace: \"\".concat(this.NAME, \"Focus\"),\r\n isFocusable: (index, el) => $(el).is(focusableSelector)\r\n })\r\n },\r\n _hoverStartHandler: noop,\r\n _hoverEndHandler: noop,\r\n _toggleActiveState($element, value) {\r\n this.option(\"isActive\", value);\r\n $element.toggleClass(\"dx-state-active\", value)\r\n },\r\n _updatedHover() {\r\n var hoveredElement = this._options.silent(\"hoveredElement\");\r\n this._hover(hoveredElement, hoveredElement)\r\n },\r\n _findHoverTarget($el) {\r\n return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget())\r\n },\r\n _hover($el, $previous) {\r\n var {\r\n hoverStateEnabled: hoverStateEnabled,\r\n disabled: disabled,\r\n isActive: isActive\r\n } = this.option();\r\n $previous = this._findHoverTarget($previous);\r\n $previous && $previous.toggleClass(\"dx-state-hover\", false);\r\n if ($el && hoverStateEnabled && !disabled && !isActive) {\r\n var newHoveredElement = this._findHoverTarget($el);\r\n newHoveredElement && newHoveredElement.toggleClass(\"dx-state-hover\", true)\r\n }\r\n },\r\n _toggleDisabledState(value) {\r\n this.$element().toggleClass(\"dx-state-disabled\", Boolean(value));\r\n this.setAria(\"disabled\", value || void 0)\r\n },\r\n _toggleIndependentState() {\r\n this.$element().toggleClass(\"dx-state-independent\", this.option(\"ignoreParentReadOnly\"))\r\n },\r\n _setWidgetOption(widgetName, args) {\r\n if (!this[widgetName]) {\r\n return\r\n }\r\n if (isPlainObject(args[0])) {\r\n each(args[0], (option, value) => this._setWidgetOption(widgetName, [option, value]));\r\n return\r\n }\r\n var optionName = args[0];\r\n var value = args[1];\r\n if (1 === args.length) {\r\n value = this.option(optionName)\r\n }\r\n var widgetOptionMap = this[\"\".concat(widgetName, \"OptionMap\")];\r\n this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value)\r\n },\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n switch (name) {\r\n case \"disabled\":\r\n this._toggleDisabledState(value);\r\n this._updatedHover();\r\n this._refreshFocusState();\r\n break;\r\n case \"hint\":\r\n this._renderHint();\r\n break;\r\n case \"ignoreParentReadOnly\":\r\n this._toggleIndependentState();\r\n break;\r\n case \"activeStateEnabled\":\r\n this._attachFeedbackEvents();\r\n break;\r\n case \"hoverStateEnabled\":\r\n this._attachHoverEvents();\r\n this._updatedHover();\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._refreshFocusState();\r\n break;\r\n case \"onFocusIn\":\r\n case \"onFocusOut\":\r\n break;\r\n case \"accessKey\":\r\n this._renderAccessKey();\r\n break;\r\n case \"hoveredElement\":\r\n this._hover(value, previousValue);\r\n break;\r\n case \"isActive\":\r\n this._updatedHover();\r\n break;\r\n case \"visible\":\r\n this._toggleVisibility(value);\r\n if (this._isVisibilityChangeSupported()) {\r\n this._checkVisibilityChanged(value ? \"shown\" : \"hiding\")\r\n }\r\n break;\r\n case \"onKeyboardHandled\":\r\n this._attachKeyboardEvents();\r\n break;\r\n case \"onContentReady\":\r\n this._initContentReadyAction();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _isVisible() {\r\n var {\r\n visible: visible\r\n } = this.option();\r\n return this.callBase() && visible\r\n },\r\n beginUpdate() {\r\n this._ready(false);\r\n this.callBase()\r\n },\r\n endUpdate() {\r\n this.callBase();\r\n if (this._initialized) {\r\n this._ready(true)\r\n }\r\n },\r\n _ready(value) {\r\n if (0 === arguments.length) {\r\n return this._isReady\r\n }\r\n this._isReady = value\r\n },\r\n setAria() {\r\n if (!isPlainObject(arguments.length <= 0 ? void 0 : arguments[0])) {\r\n setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget())\r\n } else {\r\n var target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget();\r\n each(arguments.length <= 0 ? void 0 : arguments[0], (name, value) => setAttribute(name, value, target))\r\n }\r\n },\r\n isReady() {\r\n return this._ready()\r\n },\r\n repaint() {\r\n this._refresh()\r\n },\r\n focus() {\r\n focus.trigger(this._focusTarget())\r\n },\r\n registerKeyHandler(key, handler) {\r\n var currentKeys = this._supportedKeys();\r\n this._supportedKeys = () => extend(currentKeys, {\r\n [key]: handler\r\n })\r\n }\r\n});\r\nWidget.getOptionsFromContainer = _ref5 => {\r\n var {\r\n name: name,\r\n fullName: fullName,\r\n value: value\r\n } = _ref5;\r\n var options = {};\r\n if (name === fullName) {\r\n options = value\r\n } else {\r\n var option = fullName.split(\".\").pop();\r\n options[option] = value\r\n }\r\n return options\r\n};\r\nexport default Widget;\r\n","/**\r\n * DevExtreme (esm/core/element_data.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport WeakMap from \"./polyfills/weak_map\";\r\nimport domAdapter from \"./dom_adapter\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport MemorizedCallbacks from \"./memorized_callbacks\";\r\nvar dataMap = new WeakMap;\r\nvar strategy;\r\nexport var strategyChanging = new MemorizedCallbacks;\r\nvar beforeCleanDataFunc = function() {};\r\nvar afterCleanDataFunc = function() {};\r\nexport var setDataStrategy = function(value) {\r\n strategyChanging.fire(value);\r\n strategy = value;\r\n var cleanData = strategy.cleanData;\r\n strategy.cleanData = function(nodes) {\r\n beforeCleanDataFunc(nodes);\r\n var result = cleanData.call(this, nodes);\r\n afterCleanDataFunc(nodes);\r\n return result\r\n }\r\n};\r\nsetDataStrategy({\r\n data: function() {\r\n var element = arguments[0];\r\n var key = arguments[1];\r\n var value = arguments[2];\r\n if (!element) {\r\n return\r\n }\r\n var elementData = dataMap.get(element);\r\n if (!elementData) {\r\n elementData = {};\r\n dataMap.set(element, elementData)\r\n }\r\n if (void 0 === key) {\r\n return elementData\r\n }\r\n if (2 === arguments.length) {\r\n return elementData[key]\r\n }\r\n elementData[key] = value;\r\n return value\r\n },\r\n removeData: function(element, key) {\r\n if (!element) {\r\n return\r\n }\r\n if (void 0 === key) {\r\n dataMap.delete(element)\r\n } else {\r\n var elementData = dataMap.get(element);\r\n if (elementData) {\r\n delete elementData[key]\r\n }\r\n }\r\n },\r\n cleanData: function(elements) {\r\n for (var i = 0; i < elements.length; i++) {\r\n eventsEngine.off(elements[i]);\r\n dataMap.delete(elements[i])\r\n }\r\n }\r\n});\r\nexport function getDataStrategy() {\r\n return strategy\r\n}\r\nexport function data() {\r\n return strategy.data.apply(this, arguments)\r\n}\r\nexport function beforeCleanData(callback) {\r\n beforeCleanDataFunc = callback\r\n}\r\nexport function afterCleanData(callback) {\r\n afterCleanDataFunc = callback\r\n}\r\nexport function cleanData(nodes) {\r\n return strategy.cleanData.call(this, nodes)\r\n}\r\nexport function removeData(element, key) {\r\n return strategy.removeData.call(this, element, key)\r\n}\r\nexport function cleanDataRecursive(element, cleanSelf) {\r\n if (!domAdapter.isElementNode(element)) {\r\n return\r\n }\r\n var childElements = element.getElementsByTagName(\"*\");\r\n strategy.cleanData(childElements);\r\n if (cleanSelf) {\r\n strategy.cleanData([element])\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/size.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n isWindow,\r\n isString,\r\n isNumeric\r\n} from \"../utils/type\";\r\nvar window = getWindow();\r\nvar SPECIAL_HEIGHT_VALUES = [\"auto\", \"none\", \"inherit\", \"initial\"];\r\nvar getSizeByStyles = function(elementStyles, styles) {\r\n var result = 0;\r\n styles.forEach((function(style) {\r\n result += parseFloat(elementStyles[style]) || 0\r\n }));\r\n return result\r\n};\r\nvar getElementBoxParams = function(name, elementStyles) {\r\n var beforeName = \"width\" === name ? \"Left\" : \"Top\";\r\n var afterName = \"width\" === name ? \"Right\" : \"Bottom\";\r\n return {\r\n padding: getSizeByStyles(elementStyles, [\"padding\" + beforeName, \"padding\" + afterName]),\r\n border: getSizeByStyles(elementStyles, [\"border\" + beforeName + \"Width\", \"border\" + afterName + \"Width\"]),\r\n margin: getSizeByStyles(elementStyles, [\"margin\" + beforeName, \"margin\" + afterName])\r\n }\r\n};\r\nvar getBoxSizingOffset = function(name, elementStyles, boxParams) {\r\n var size = elementStyles[name];\r\n if (\"border-box\" === elementStyles.boxSizing && size.length && \"%\" !== size[size.length - 1]) {\r\n return boxParams.border + boxParams.padding\r\n }\r\n return 0\r\n};\r\nvar getSize = function(element, name, include) {\r\n var elementStyles = window.getComputedStyle(element);\r\n var boxParams = getElementBoxParams(name, elementStyles);\r\n var clientRect = element.getClientRects().length;\r\n var boundingClientRect = element.getBoundingClientRect()[name];\r\n var result = clientRect ? boundingClientRect : 0;\r\n if (result <= 0) {\r\n result = parseFloat(elementStyles[name] || element.style[name]) || 0;\r\n result -= getBoxSizingOffset(name, elementStyles, boxParams)\r\n } else {\r\n result -= boxParams.padding + boxParams.border\r\n }\r\n if (include.paddings) {\r\n result += boxParams.padding\r\n }\r\n if (include.borders) {\r\n result += boxParams.border\r\n }\r\n if (include.margins) {\r\n result += boxParams.margin\r\n }\r\n return result\r\n};\r\nvar getContainerHeight = function(container) {\r\n return isWindow(container) ? container.innerHeight : container.offsetHeight\r\n};\r\nvar parseHeight = function(value, container) {\r\n if (value.indexOf(\"px\") > 0) {\r\n value = parseInt(value.replace(\"px\", \"\"))\r\n } else if (value.indexOf(\"%\") > 0) {\r\n value = parseInt(value.replace(\"%\", \"\")) * getContainerHeight(container) / 100\r\n } else if (!isNaN(value)) {\r\n value = parseInt(value)\r\n }\r\n return value\r\n};\r\nvar getHeightWithOffset = function(value, offset, container) {\r\n if (!value) {\r\n return null\r\n }\r\n if (SPECIAL_HEIGHT_VALUES.indexOf(value) > -1) {\r\n return offset ? null : value\r\n }\r\n if (isString(value)) {\r\n value = parseHeight(value, container)\r\n }\r\n if (isNumeric(value)) {\r\n return Math.max(0, value + offset)\r\n }\r\n var operationString = offset < 0 ? \" - \" : \" \";\r\n return \"calc(\" + value + operationString + Math.abs(offset) + \"px)\"\r\n};\r\nvar addOffsetToMaxHeight = function(value, offset, container) {\r\n var maxHeight = getHeightWithOffset(value, offset, container);\r\n return null !== maxHeight ? maxHeight : \"none\"\r\n};\r\nvar addOffsetToMinHeight = function(value, offset, container) {\r\n var minHeight = getHeightWithOffset(value, offset, container);\r\n return null !== minHeight ? minHeight : 0\r\n};\r\nvar getVerticalOffsets = function(element, withMargins) {\r\n if (!element) {\r\n return 0\r\n }\r\n var boxParams = getElementBoxParams(\"height\", window.getComputedStyle(element));\r\n return boxParams.padding + boxParams.border + (withMargins ? boxParams.margin : 0)\r\n};\r\nvar getVisibleHeight = function(element) {\r\n if (element) {\r\n var boundingClientRect = element.getBoundingClientRect();\r\n if (boundingClientRect.height) {\r\n return boundingClientRect.height\r\n }\r\n }\r\n return 0\r\n};\r\nexport {\r\n getSize,\r\n getElementBoxParams,\r\n addOffsetToMaxHeight,\r\n addOffsetToMinHeight,\r\n getVerticalOffsets,\r\n getVisibleHeight,\r\n parseHeight\r\n};\r\n","/**\r\n * DevExtreme (esm/core/class.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"./errors\";\r\nimport {\r\n isWindow\r\n} from \"./utils/type\";\r\nvar wrapOverridden = function(baseProto, methodName, method) {\r\n return function() {\r\n var prevCallBase = this.callBase;\r\n this.callBase = baseProto[methodName];\r\n try {\r\n return method.apply(this, arguments)\r\n } finally {\r\n this.callBase = prevCallBase\r\n }\r\n }\r\n};\r\nvar clonePrototype = function(obj) {\r\n var func = function() {};\r\n func.prototype = obj.prototype;\r\n return new func\r\n};\r\nvar redefine = function(members) {\r\n var overridden;\r\n var memberName;\r\n var member;\r\n if (!members) {\r\n return this\r\n }\r\n for (memberName in members) {\r\n member = members[memberName];\r\n overridden = \"function\" === typeof this.prototype[memberName] && \"function\" === typeof member;\r\n this.prototype[memberName] = overridden ? wrapOverridden(this.parent.prototype, memberName, member) : member\r\n }\r\n return this\r\n};\r\nvar include = function() {\r\n var classObj = this;\r\n var argument;\r\n var name;\r\n var i;\r\n var hasClassObjOwnProperty = Object.prototype.hasOwnProperty.bind(classObj);\r\n var isES6Class = !hasClassObjOwnProperty(\"_includedCtors\") && !hasClassObjOwnProperty(\"_includedPostCtors\");\r\n if (isES6Class) {\r\n classObj._includedCtors = classObj._includedCtors.slice(0);\r\n classObj._includedPostCtors = classObj._includedPostCtors.slice(0)\r\n }\r\n for (i = 0; i < arguments.length; i++) {\r\n argument = arguments[i];\r\n if (argument.ctor) {\r\n classObj._includedCtors.push(argument.ctor)\r\n }\r\n if (argument.postCtor) {\r\n classObj._includedPostCtors.push(argument.postCtor)\r\n }\r\n for (name in argument) {\r\n if (\"ctor\" === name || \"postCtor\" === name || \"default\" === name) {\r\n continue\r\n }\r\n classObj.prototype[name] = argument[name]\r\n }\r\n }\r\n return classObj\r\n};\r\nvar subclassOf = function(parentClass) {\r\n var hasParentProperty = Object.prototype.hasOwnProperty.bind(this)(\"parent\");\r\n var isES6Class = !hasParentProperty && this.parent;\r\n if (isES6Class) {\r\n var baseClass = Object.getPrototypeOf(this);\r\n return baseClass === parentClass || baseClass.subclassOf(parentClass)\r\n } else {\r\n if (this.parent === parentClass) {\r\n return true\r\n }\r\n if (!this.parent || !this.parent.subclassOf) {\r\n return false\r\n }\r\n return this.parent.subclassOf(parentClass)\r\n }\r\n};\r\nvar abstract = function() {\r\n throw errors.Error(\"E0001\")\r\n};\r\nvar copyStatic = function() {\r\n var hasOwn = Object.prototype.hasOwnProperty;\r\n return function(source, destination) {\r\n for (var key in source) {\r\n if (!hasOwn.call(source, key)) {\r\n return\r\n }\r\n destination[key] = source[key]\r\n }\r\n }\r\n}();\r\nvar classImpl = function() {};\r\nclassImpl.inherit = function(members) {\r\n var inheritor = function() {\r\n if (!this || isWindow(this) || \"function\" !== typeof this.constructor) {\r\n throw errors.Error(\"E0003\")\r\n }\r\n var instance = this;\r\n var ctor = instance.ctor;\r\n var includedCtors = instance.constructor._includedCtors;\r\n var includedPostCtors = instance.constructor._includedPostCtors;\r\n var i;\r\n for (i = 0; i < includedCtors.length; i++) {\r\n includedCtors[i].call(instance)\r\n }\r\n if (ctor) {\r\n ctor.apply(instance, arguments)\r\n }\r\n for (i = 0; i < includedPostCtors.length; i++) {\r\n includedPostCtors[i].call(instance)\r\n }\r\n };\r\n inheritor.prototype = clonePrototype(this);\r\n copyStatic(this, inheritor);\r\n inheritor.inherit = this.inherit;\r\n inheritor.abstract = abstract;\r\n inheritor.redefine = redefine;\r\n inheritor.include = include;\r\n inheritor.subclassOf = subclassOf;\r\n inheritor.parent = this;\r\n inheritor._includedCtors = this._includedCtors ? this._includedCtors.slice(0) : [];\r\n inheritor._includedPostCtors = this._includedPostCtors ? this._includedPostCtors.slice(0) : [];\r\n inheritor.prototype.constructor = inheritor;\r\n inheritor.redefine(members);\r\n return inheritor\r\n};\r\nclassImpl.abstract = abstract;\r\nexport default classImpl;\r\n","/**\r\n * DevExtreme (esm/events/hover.js)\r\n * Version: 21.1.4\r\n * Build date: Mon Jun 21 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n removeData,\r\n data as elementData\r\n} from \"../core/element_data\";\r\nimport Class from \"../core/class\";\r\nimport devices from \"../core/devices\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n addNamespace,\r\n isTouchEvent,\r\n fireEvent\r\n} from \"./utils/index\";\r\nimport pointerEvents from \"./pointer\";\r\nvar HOVERSTART_NAMESPACE = \"dxHoverStart\";\r\nvar HOVERSTART = \"dxhoverstart\";\r\nvar POINTERENTER_NAMESPACED_EVENT_NAME = addNamespace(pointerEvents.enter, HOVERSTART_NAMESPACE);\r\nvar HOVEREND_NAMESPACE = \"dxHoverEnd\";\r\nvar HOVEREND = \"dxhoverend\";\r\nvar POINTERLEAVE_NAMESPACED_EVENT_NAME = addNamespace(pointerEvents.leave, HOVEREND_NAMESPACE);\r\nvar Hover = Class.inherit({\r\n noBubble: true,\r\n ctor: function() {\r\n this._handlerArrayKeyPath = this._eventNamespace + \"_HandlerStore\"\r\n },\r\n setup: function(element) {\r\n elementData(element, this._handlerArrayKeyPath, {})\r\n },\r\n add: function(element, handleObj) {\r\n var that = this;\r\n var handler = function(e) {\r\n that._handler(e)\r\n };\r\n eventsEngine.on(element, this._originalEventName, handleObj.selector, handler);\r\n elementData(element, this._handlerArrayKeyPath)[handleObj.guid] = handler\r\n },\r\n _handler: function(e) {\r\n if (isTouchEvent(e) || devices.isSimulator()) {\r\n return\r\n }\r\n fireEvent({\r\n type: this._eventName,\r\n originalEvent: e,\r\n delegateTarget: e.delegateTarget\r\n })\r\n },\r\n remove: function(element, handleObj) {\r\n var handler = elementData(element, this._handlerArrayKeyPath)[handleObj.guid];\r\n eventsEngine.off(element, this._originalEventName, handleObj.selector, handler)\r\n },\r\n teardown: function(element) {\r\n removeData(element, this._handlerArrayKeyPath)\r\n }\r\n});\r\nvar HoverStart = Hover.inherit({\r\n ctor: function() {\r\n this._eventNamespace = HOVERSTART_NAMESPACE;\r\n this._eventName = HOVERSTART;\r\n this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME;\r\n this.callBase()\r\n },\r\n _handler: function(e) {\r\n var pointers = e.pointers || [];\r\n if (!pointers.length) {\r\n this.callBase(e)\r\n }\r\n }\r\n});\r\nvar HoverEnd = Hover.inherit({\r\n ctor: function() {\r\n this._eventNamespace = HOVEREND_NAMESPACE;\r\n this._eventName = HOVEREND;\r\n this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME;\r\n this.callBase()\r\n }\r\n});\r\nregisterEvent(HOVERSTART, new HoverStart);\r\nregisterEvent(HOVEREND, new HoverEnd);\r\nexport {\r\n HOVERSTART as start, HOVEREND as end\r\n};\r\n"],"sourceRoot":""}