{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/splitter.js","webpack:///./node_modules/devextreme/ui/slider.js","webpack:///./node_modules/devextreme/ui/slider/ui.slider_handle.js","webpack:///./node_modules/devextreme/ui/slide_out_view.js","webpack:///./node_modules/devextreme/ui/selection/selection.strategy.deferred.js","webpack:///./node_modules/devextreme/ui/selection/selection.strategy.standard.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.native.pull_down.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.native.swipe_down.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scroll_view.simulated.js","webpack:///./node_modules/devextreme/ui/scroll_view.js","webpack:///./node_modules/devextreme/ui/slider/ui.slider.js","webpack:///./node_modules/devextreme/ui/slide_out.js","webpack:///./node_modules/devextreme/ui/slide_out_view/ui.slide_out_view.animation.js","webpack:///./node_modules/devextreme/ui/speed_dial_action.js","webpack:///./node_modules/devextreme/ui/speed_dial_action/speed_dial_action.js","webpack:///./node_modules/devextreme/ui/speed_dial_action/speed_dial_main_item.js","webpack:///./node_modules/devextreme/ui/speed_dial_action/speed_dial_item.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.js","webpack:///./node_modules/devextreme/ui/select_box.js","webpack:///./node_modules/devextreme/ui/shared/accessibility.js","webpack:///./node_modules/devextreme/ui/shared/filtering.js","webpack:///./node_modules/devextreme/ui/selection/selection.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.events.emitter.gesture.scroll.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.native.js","webpack:///./node_modules/devextreme/ui/shared/grouped_data_converter_mixin.js","webpack:///./node_modules/devextreme/ui/sortable.js","webpack:///./node_modules/devextreme/ui/selection/selection.strategy.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.simulated.js","webpack:///./node_modules/devextreme/ui/scroll_view/animator.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollbar.js","webpack:///./node_modules/devextreme/ui/scroll_view/ui.scrollable.device.js","webpack:///./node_modules/devextreme/ui/shared/ui.editor_factory_mixin.js"],"names":["exports","default","_renderer","_interopRequireDefault","_ui","_dom_adapter","_events_engine","_pointer","_window","_index","obj","__esModule","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","window","getWindow","SPLITTER_WRAPPER_CLASS","concat","SPLITTER_INACTIVE_CLASS","SPLITTER_BORDER_CLASS","SPLITTER_INITIAL_STATE_CLASS","SPLITTER_POINTER_DOWN_EVENT_NAME","addNamespace","down","SPLITTER_POINTER_MOVE_EVENT_NAME","move","SPLITTER_POINTER_UP_EVENT_NAME","up","SplitterControl","_Widget","subClass","superClass","apply","this","arguments","prototype","create","constructor","_proto","_initMarkup","call","_initActions","_$container","option","_$leftElement","_$rightElement","$element","addClass","_$splitterBorder","appendTo","_$splitter","_actions","onApplyPanelSize","_createActionByOption","onActiveStateChanged","_render","_detachEventHandlers","_attachEventHandlers","_clean","document","getDocument","on","_onMouseDownHandler","bind","_onMouseMoveHandler","_onMouseUpHandler","off","_dimensionChanged","dimension","_containerWidth","get","clientWidth","_setSplitterPositionLeft","needUpdatePanels","usePercentagePanelsWidth","e","preventDefault","_offsetX","pageX","offset","left","_getSplitterBorderWidth","removeClass","_toggleActive","_isSplitterActive","splitterPositionLeft","_getNewSplitterPositionLeft","_leftPanelPercentageWidth","newSplitterPositionLeft","_getContainerLeftOffset","Math","max","_getSplitterOffset","min","_getSplitterWidth","offsetLeft","style","getComputedStyle","parseFloat","paddingLeft","borderLeftWidth","_getLeftPanelWidth","isActive","toggleClass","toggleDisabled","isDisabled","isSplitterMoved","hasClass","disableSplitterCalculation","value","_isSplitterCalculationDisabled","_ref","length","_ref$splitterPosition","_ref$needUpdatePanels","_ref$usePercentagePan","leftPanelWidth","rightPanelWidth","css","_convertToPercentage","rightPanelPercentageWidth","_convertToPixels","_optionChanged","args","name","repaint","pixelWidth","percentageWidth","module","_default","_tooltip","_translator","_position","_math","_type","_extend","_position2","_number","POSITION_ALIASES","top","my","at","collision","bottom","right","inherit","_getDefaultOptions","extend","callBase","hoverStateEnabled","tooltipEnabled","tooltipFormat","v","tooltipPosition","tooltipShowMode","tooltipFitIn","setAria","role","valuenow","_renderTooltip","_$tooltip","_$slider","closest","_updateTooltip","_removeTooltip","_createTooltip","_createComponent","visible","target","closeOnOutsideClick","container","hideTopOverlayHandler","closeOnTargetScroll","onPositioned","_saveTooltipElements","component","_saveTooltipLocation","_centeredTooltipPosition","animation","arrowPosition","templatesRenderAsynchronously","_fixedPosition","remove","_renderTooltipPosition","position","_resetTooltipPosition","type","boundary","boundaryOffset","h","tooltip","_$tooltipContent","$content","parent","_$tooltipArrow","find","resetPosition","_contentLocate","locate","outerWidth","outerWidthWithoutRounding","getBoundingRect","width","tooltipOuterWidth","ceil","roundedTooltipOuterWidth","tooltipCenter","marginLeft","_fitTooltip","of","calculatePosition","calculate","isLeftSide","collisionSide","arrowLeft","oversize","arrowMinLeft","arrowMaxRight","fitIntoRange","_getFormattedValue","format","_renderValue","html","hoverMode","test","_ensureTooltipIsCentered","previousValue","isDefined","toString","fitTooltipPosition","updateTooltip","_visibilityChanged","_common","_click","_element","_hide_callback","_component_registrator","_swipeable","_empty_template","_deferred","_uiSlide_out_view","SlideOutView","ctor","element","options","_logDeprecatedComponentWarning","menuPosition","menuVisible","swipeEnabled","menuTemplate","contentTemplate","contentOffset","_defaultOptionsRules","device","android","_device","platform","deviceType","win","phone","_init","_whenAnimationComplete","_whenMenuRendered","_initHideTopOverlayHandler","_hideMenuHandler","hideMenu","_getAnonymousTemplateName","_initTemplates","_templateManager","addDefaultTemplates","menu","EmptyTemplate","content","_this","_renderMarkup","Deferred","_getTemplate","render","menuContent","onRendered","resolve","contentTemplateOption","transclude","anonymousTemplateName","noModel","_renderShield","_toggleMenuPositionClass","_this2","always","_initSwipeHandlers","$wrapper","_$menu","append","noop","_$shield","_toggleShieldVisibility","disabled","elastic","itemSizeFunc","_getMenuWidth","onStart","_swipeStartHandler","onUpdated","_swipeUpdateHandler","onEnd","_swipeEndHandler","_isRightMenuPosition","invertedPosition","rtl","complete","event","maxLeftOffset","maxRightOffset","_getRTLSignCorrection","_renderPosition","targetOffset","SLIDEOUTVIEW_CLASS","animate","hasWindow","pos","_calculatePixelOffset","_toggleHideMenuCallback","moveTo","_animationCompleteHandler","_menuWidth","maxMenuWidth","currentMenuWidth","resolveWith","subscribe","hideCallback","add","_dispose","_invalidate","getPublicElement","showMenu","toggleMenuVisibility","showing","promise","_selection","_query","getSelectedItems","_loadFilteredData","selectionFilter","getSelectedItemKeys","d","that","key","select","isString","done","items","keys","map","item","keyOf","fail","reject","selectedItemKeys","preserve","isDeselect","isSelectAll","filter","JSON","stringify","_setOption","_addSelectionFilter","i","removeSelectedItem","addSelectedItem","onSelectionChanged","setSelectedItems","isItemDataSelected","itemData","isItemKeySelected","toArray","_getKeyExpr","keyField","Array","isArray","_normalizeKey","keyExpr","_getFilterByKey","push","validate","Error","_findSubFilter","filterString","index","subFilter","_isLastSubFilter","_addFilterOperator","filterOperator","_denormalizeFilter","currentFilter","currentOperation","needAddFilter","_removeSameFilter","filterIndex","isKeyOperatorsAfterRemoved","_isKeyFilter","_hasKeyFiltersOnlyStartingFromIndex","_normalizeFilter","_removeFilterByIndex","operation","splice","_isSimpleKeyFilter","inverted","_filterIndex","getSelectAllState","_array","_array_compare","_selection_filter","_initSelectedItemKeyHash","equalByReference","slice","selectedItems","_preserveSelectionUpdate","keyIndicesToRemoveMap","keyIndex","isBatchDeselect","_batchRemoveSelectedItems","updateSelectedItemKeyHash","_loadSelectedItemsCore","deferred","selectionFilterCreator","SelectionFilterCreator","combinedFilter","getCombinedFilter","deselectedItems","filteredItems","plainItems","isSelectableItem","getItemData","localFilter","getLocalFilter","equalKeys","_replaceSelectionUpdate","internalKeys","_warnOnIncorrectKeys","allowNullValue","log","_isMultiSelectEnabled","mode","_requestInProgress","_this$_lastLoadDeferr","_lastLoadDeferred","state","_concatRequestsItems","oldRequestItems","addedItems","added","removeDuplicates","removedItems","removed","_collectLastRequestData","isDeselectAll","multiSelectEnabled","lastRequestData","_lastRequestData","isKeysEqual","_updateKeysByLastRequestData","_this$_lastRequestDat","_this$_lastRequestDat2","currentKeys","uniqueValues","_loadSelectedItems","when","disabledItemKeys","indexOf","keyHash","_getKeyHash","_indexOfSelectedItemKey","isObject","keyHashIndices","addedItemKeys","_getSelectedIndexByKey","ignoreIndicesMap","_getSelectedIndexByHash","indices","_shiftSelectedKeyIndices","currentKeyIndex","currentKey","currentKeyHash","getKeyHash","currentKeyIndices","removedItemKeys","keyIndices","shift","_updateAddedItemKeys","_updateRemovedItemKeys","oldSelectedKeys","oldSelectedItems","_isItemSelectionInProgress","checkPending","result","visibleOnly","_getVisibleSelectAllState","_getFullSelectAllState","_devices","_message","_uiScroll_viewNative","_uiScroll_viewNative2","_uiScroll_view","_load_indicator","_themes","_load_panel","refreshStrategies","pullDown","swipeDown","simulated","isServerSide","scrollViewServerConfig","finishLoading","release","refresh","ScrollView","pullingDownText","pulledDownText","refreshingText","reachBottomText","onPullDown","onReachBottom","refreshStrategy","real","isMaterial","_loadingIndicatorEnabled","_initScrollableMarkup","_initContent","_initTopPocket","_initBottomPocket","_initLoadPanel","SCROLLVIEW_CLASS","_$content","wrapInner","$topPocket","_$topPocket","$pullDown","_$pullDown","prepend","$bottomPocket","_$bottomPocket","$reachBottom","_$reachBottom","$loadContainer","SCROLLVIEW_REACHBOTTOM_CLASS","$loadIndicator","$text","_$reachBottomText","_updateReachBottomText","$loadPanelElement","loadPanelOptions","shading","delay","message","_loadPanel","text","_createStrategy","strategyName","strategyClass","_strategy","pullDownCallbacks","_pullDownHandler","releaseCallbacks","_releaseHandler","reachBottomCallbacks","_reachBottomHandler","_createActions","_pullDownAction","_reachBottomAction","_tryRefreshPocketState","_pullDownEnable","hasActionSubscription","_reachBottomEnable","eventName","enabled","_pullDownEnabled","toggle","pullDownEnable","_reachBottomEnabled","reachBottomEnable","_loadingIndicator","_pullDownLoading","startLoading","_reachBottomLoading","isEmpty","children","eq","preventReachBottom","toggleLoading","showOrHide","isFull","height","pendingRelease","is","show","_lock","hide","_unlock","dispose","_callbacks","_uiScrollable","_iterator","_browser","scrollView","_$refreshingText","_$scrollViewContent","_initCallbacks","_renderPullDown","_releaseState","$image","_$pullDownText","_$pullingDownText","_$pulledDownText","empty","_state","_refreshPullDownText","_pushBackFromBoundary","_isLocked","_component","pullDownTextItems","visibleState","each","_","action","update","_setTopPocketOffset","_updateDimensions","_topPocketSize","_bottomPocketSize","msie","_scrollOffset","round","_allowedDirections","allowedDirections","vertical","handleEnd","_complete","handleStop","_setPullDownOffset","clearTimeout","_pullDownRefreshTimeout","setTimeout","_pullDownRefreshing","handleScroll","currentLocation","location","scrollDelta","_location","_isPullDown","_pullDownReady","_isReachBottom","_reachBottom","_stateReleased","fire","_releaseTimeout","_updateAction","_$icon","_releasePullDown","opacity","handleInit","_startClientY","eventData","originalEvent","y","handleMove","_deltaY","_movePullDown","pullDownHeight","_getPullDownHeight","_getPullDownStartPosition","angle","transform","_$element","outerHeight","_pullDownRefreshHandler","_refreshPullDown","math","ScrollViewScroller","Scroller","_updateBounds","considerPockets","_direction","_dimension","_bottomBound","_minOffset","_updateScrollbar","_scrollbar","containerSize","_containerSize","contentSize","_contentSize","scaleRatio","_getScaleRatio","_moveContent","_reachBottomReady","_moveScrollbar","_scrollComplete","_inBounds","_getMinOffset","_getMaxOffset","_maxOffset","_moveToBounds","_update","_releaseTask","abort","executeAsync","_release","_reachBottomEnablingHandler","_pullDownEnablingHandler","_considerTopPocketChange","_updateHandler","_move","_pendingReleaseHandler","SimulatedStrategy","_eventHandler","_createScroller","direction","scroller","_scrollers","_scrollerOptions","$pullDownText","$pullingDownText","$pulledDownText","$refreshingText","_emitter","_track_bar","_utils","Slider","_activeStateUnit","_supportedKeys","isRTL","roundedValue","isLeftDirection","_valueStep","step","currentPosition","remainder","getRemainderByDivision","_getValueExponentLength","_roundToExponentLength","moveHandleRight","moveHandleLeft","leftArrow","_processKeyboardEvent","rightArrow","pageUp","pageDown","home","end","stopPropagation","_saveValueChangeEvent","activeStateEnabled","showRange","showMode","label","keyStep","useInkRipple","validationMessageOffset","focusStateEnabled","_toggleValidationMessage","isSimulator","themeName","current","_renderSubmitElement","_renderInkRipple","_renderLabels","_renderStartHandler","_renderAriaMinAndMax","_attachFocusEvents","namespace","NAME","focusInEvent","focusOutEvent","$focusTarget","_focusTarget","_detachFocusEvents","_repaintHandle","_$submitElement","attr","_getSubmitElement","_inkRipple","waveSizeCoefficient","isCentered","wavesNumber","useHoldAnimation","_renderInkWave","dxEvent","doRender","waveIndex","config","wave","showWave","hideWave","_renderWrapper","_$wrapper","immediate","_itemWidthFunc","_renderContainer","_$bar","_renderRange","_$range","_renderHandle","_renderRangeVisibility","Boolean","_$handle","_renderHandleImpl","$handle","SLIDER_TOOLTIP_POSITION_CLASS_PREFIX","valuemin","valuemax","_hoverStartHandler","getInstance","currentTarget","_toggleActiveState","_toggleFocusClass","isFocused","_disposed","SLIDER_LABEL_POSITION_CLASS_PREFIX","labelFormat","_$minLabel","_$maxLabel","pointerDownEventName","clickEventName","startAction","_createAction","_startHandler","isMouseEvent","_activeHandle","trigger","_itemWidthRatio","rtlEnabled","isTouchEvent","_feedbackDeferred","lock","_startOffset","_currentRatio","startOffset","_swipePixelRatio","endOffset","_needPreventAnimation","offsetDirection","_changeValueOnSwipe","_updateHandlePosition","newRatio","isNaN","_this$option","getExponentLength","valueExponentLength","roundFloatPart","ratio","newValue","_setValueOnSwipe","stepCount","x","val","applyServerDecimalSeparator","_setRangeStyles","_callHandlerMethod","_refresh","_toggleRTLDirection","_renderDimensions","_uiCollection_widgetEditStrategy","_slide_out_view","_uiCollection_widget","_list","_child_default_template","_grouped_data_converter_mixin","SlideOut","menuItemTemplate","menuGrouped","menuGroupTemplate","onMenuItemRendered","onMenuGroupRendered","selectionMode","selectedIndex","selectionRequired","_itemClass","_itemDataKey","_itemContainer","_slideOutView","_selectedItemContentRendered","_initSlideOutView","menuItem","ChildDefaultTemplate","menuGroup","_initEditStrategy","strategy","_getPlainItems","reduce","group","_editStrategy","integrationOptions","onOptionChanged","_slideOutViewOptionChanged","_renderList","_renderContentTemplate","$list","_renderItemClickAction","itemTemplateProperty","indicateLoading","onItemClick","_listItemClickHandler","dataSource","_dataSource","itemTemplate","_getTemplateByOption","grouped","groupTemplate","onItemRendered","onGroupRendered","onContentReady","_updateSlideOutView","_getGroupedOption","_itemClickAction","itemElement","_singleContent","itemsLength","_itemClickHandler","_renderContentImpl","selectedItem","getItemByIndex","_renderItems","_renderItem","_selectedItemElement","_itemElements","_updateSelection","_prepareContent","_renderContent","_getListWidth","_changeMenuOption","_cleanItemContainer","beginUpdate","endUpdate","include","_fx","completeAction","to","duration","stop","_guid","_ready_callbacks","_speed_dial_main_item","getSwatchContainer","ready","SpeedDialAction","icon","onClick","easing","from","scale","id","initAction","_toggleVisibility","disposeAction","_options","silent","newAction","isActionExist","speedDialMainItem","savedActions","forEach","modifyActionOptions","actions","_getPosition","_getCurrentOptions","_getVisibleActions","$fabMainElement","SpeedDialMainItem","actionId","savedActionsCount","visibleActions","closeIcon","maxSpeedDialActionCount","_config","_swatch_container","_speed_dial_item","onInitialized","onDisposing","_SpeedDialItem","hint","indent","childIndent","childOffset","callOverlayRenderShading","floatingActionButtonConfig","_moveToContainer","_renderCloseIcon","_renderClick","_renderLabel","_$label","_$closeIcon","_renderButtonIcon","_clickAction","_getActionComponent","_clickHandler","_setClickAction","_actionItems","sort","nextAction","lastActionIndex","_getActionAnimation","_getActionPosition","_isShadingShown","_updateZIndexStackPosition","_overlayStack","_renderActions","actionItem","$actionElement","_getDirectionIndex","contentHeight","actionsHeight","initialOption","offsetTop","_getContainer","actionOffsetXValue","actionOffsetX","_isPositionLeft","actionOffsetYValue","actionOffsetY","actionPositionAtMy","_outsideClickHandler","_setPosition","_hide","_show","_getInkRippleContainer","_isVisible","_renderIcon","_icon","_overlay","_Overlay","SpeedDialItem","zIndex","labelText","prependTo","split","iconClass","$iconElement","getImageContainer","_initContentReadyAction","_contentReadyAction","excludeValidators","_fireContentReadyAction","actionElement","_fixWrapperPosition","$container","_isWindow","overlayContent","clickActionArgs","_defaultActionArgs","_currentVisible","_support","_dom_component","_selectors","_uiEventsEmitterGesture","_uiScrollable2","_uiScrollable3","SCROLLABLE","VERTICAL","Scrollable","onScroll","showScrollbar","useNative","bounceEnabled","scrollByContent","scrollByThumb","onBounce","onStop","useSimulatedScrollbar","useKeyboard","inertiaEnabled","pushBackValue","updateManually","deviceDependentOptions","nativeScrolling","mozilla","_initOptions","_setUseSimulatedScrollbar","_locked","_getWindowDevicePixelRatio","devicePixelRatio","_updateRtlPosition","_savedScrollOffset","scrollTo","scrollOffset","hasDocumentProperty","version","focusable","contents","_renderDirection","_renderStrategy","_renderDisabledState","_rtlConfig","scrollRight","_container","windowPixelRatio","_isHorizontalAndRtlEnabled","deferUpdate","scrollLeft","deferRender","skipUpdating","_this$_container$get","scrollWidth","scrollHeight","clientHeight","updateBounds","initEventData","getDirection","_validate","isNative","scrollTarget","init","_initHandler","start","handleStart","cancel","handleCancel","_updateRtlConfig","_this$_container$get2","_updateIfNeed","data","createActions","_resetInactiveDirection","disabledChanged","inactiveProp","_getInactiveProp","_normalizeLocation","isPlainObject","ensureDefined","_isDirection","_updateAllowedDirection","horizontal","_allowedDirectionValue","_allowedDirection","_getScrollOffset","scrollTop","verticalOffset","scrollBy","distance","targetLocation","_applyScaleRatio","scrollToElement","elementInsideContent","elementIsInsideContent","parents","scrollPosition","getScrollElementPosition","scrollToElementTopLeft","leftPosition","_elementPositionRelativeToContent","isVertical","pushBackOffset","elementPosition","elementSize","scrollLocation","startDistance","endDistance","abs","prop","_hasScrollContent","offsetParent","_useTemplates","_errors","SelectBox","clearSelectBox","_isEditable","_valueSubstituted","_preventFiltering","reset","_savedTextRemoveEvent","_preventSubstitution","searchIfNeeded","_searchHandler","tab","_resetCaretPosition","_cancelSearchIfNeed","upArrow","_setNextValue","downArrow","escape","_cancelEditing","enter","isOpened","inputText","_input","trim","isCustomText","close","_toggleOpenState","_valueChangeEventHandler","space","isSearchEnabled","acceptCustomValue","backspace","del","placeholder","fieldTemplate","valueChangeEvent","onCustomItemCreating","customItem","showSelectionControls","allowClearing","openOnFieldClick","showDropDownButton","displayCustomValue","useHiddenSubmitElement","_initCustomItemCreatingAction","_inputWrapper","_createPopup","_popup","_popupWrapperClass","_focusListElement","_updateField","_renderOpenedState","_scrollToSelectedItem","_focusSelectedElement","_searchValue","$listItems","inArray","focusedElement","_isCustomItemSelected","_renderFocusedElement","not","_preventInputValueRender","scrollToItem","_listContentReadyHandler","paginate","_needPopupRepaint","_renderInputValue","_setSubmitValue","_renderInputValueAsync","_renderInputValueImpl","_refreshSelected","_renderField","_setNextItem","_calcNextItem","_valueGetter","_setValue","isLoaded","load","_getSelectedIndex","hasPages","pageSize","isLastPage","isLastItem","_items","normalizeKeyName","isLoading","_loadNextPage","_setSelectedItem","isUnknownItem","_isCustomValueAllowed","_setListOption","_displayValue","_listConfig","pageLoadMode","_getSelectionChangeHandler","onFocusedItemChanged","_listFocusedItemChangeHandler","selectionByClick","list","focusedItem","_getItemData","_displayGetter","_renderDisplayText","_selectionChangeHandler","addedItem","_getActualSearchValue","searchValue","isVisible","_shouldClearFilter","_restoreInputText","_wasSearch","showDataImmediately","_searchTimer","_filterDataSource","_isValueEqualInputText","initialSelectedItem","String","_popupHidingHandler","_popupHiddenHandler","_shouldCancelSearch","_searchCanceled","saveEditingValue","_loadItemDeferred","_clearFilter","_clearTextValue","newSelectedItem","_focusOutHandler","_preventNestedFocusEvent","_isOverlayNestedTarget","relatedTarget","_clearSearchTimer","_this$_popup","searchEnabled","isOverlayTarget","_hideAnimationProcessing","_shouldCancelSearchValue","_shouldOpenPopup","_needPassDataSourceToList","_isFocused","activeElement","getActiveElement","_renderValueChangeEvent","_fieldRenderData","$listFocused","_isSelectedValue","_isValueEquals","_shouldCloseOnItemClick","_getCurrentValue","_completeSelection","_loadItem","cache","_loadInputValue","callback","selectedItemText","_isValueChanging","_customItemAddedHandler","_customItemCreatingAction","_createCustomItem","params","actionResult","isPromise","fromPromise","_setCustomItem","_clearValueHandler","_wasSearchValue","_dataSourceFiltered","_renderInputSubstitution","input","isAllSelected","selectionStart","selectionEnd","inputHasSelection","_shouldSubstitutionBeRendered","$input","valueLength","inputElement","displayValue","_caret","subscribeVisibilityChange","onDocumentVisibilityChange","unsubscribeVisibilityChange","hiddenFocus","isHiddenFocusing","focus","registerKeyboardAction","viewName","instance","selector","executeKeyDown","$mainElement","keyDownHandler","executeAction","handled","fireKeyDownEvent","keyName","$target","ariaLabel","targetIndex","getActiveAccessibleElements","focusedElementInfo","viewInstance","saveFocusedElementInfo","selectView","processKeyDown","mouseDownHandler","isMouseDown","focusinHandler","restoreFocus","$targetElement","setTabIndex","GRID_CELL_SELECTOR","TREELIST_CELL_SELECTOR","viewItemSelectorMap","groupPanel","columnHeaders","filterRow","rowsView","footer","filterPanel","pager","viewElement","$viewElement","findFocusedViewElement","viewSelectors","$focusViewElement","first","visibilityState","ctrlKey","viewNames","viewItemIndex","_viewName","getFilterSelector","getFilterExpressionByRange","getFilterExpressionForDate","getFilterExpressionForNumber","DEFAULT_DATE_INTERVAL","DEFAULT_DATETIME_INTERVAL","isDateType","dataType","getGroupInterval","column","dateIntervals","groupInterval","headerFilter","interval","dataField","displayField","calculateDisplayValue","filterValue","endFilterValue","startFilterExpression","endFilterExpression","date","getHours","getMinutes","getSeconds","getMilliseconds","Date","getTime","setDate","getDate","selectedFilterOperation","dateStart","dateEnd","dateInterval","dateValue","values","isDate","getFullYear","getMonth","Number","defaultCalculateFilterExpression","isSearchByDisplayValue","lookup","_class","_selectionStrategy","_selectionStrategy2","selectedKeys","_focusedItemIndex","maxFilterLengthInRequest","totalCount","isItemSelected","dataFields","filterIsChanged","setSelection","deselect","_keys","clearSelection","_addSelectedItem","_removeSelectedItem","_setSelectedItems","changeItemSelection","itemIndex","isSelectedItemsChanged","isSelectable","isDataItem","itemKey","changeItemSelectionWhenShiftKeyPressed","control","_resetItemSelectionWhenShiftKeyPressed","isSelected","clearSelectedItems","arg","_shiftFocusedItemIndex","_resetFocusedItemIndex","itemIndexStep","focusedData","focusedKey","isFocusedItemSelected","selectAll","isOnePage","_onePageSelectAll","deselectAll","getSelectableItems","_emitter_registrator","_frame","_version","NAMESPACED_SCROLL_EVENT","ios8_greater","android5_greater","abstract","realDevice","Locker","_proxiedScroll","_scroll","check","TimeoutLocker","timeout","_timeout","_prepare","_forget","_timer","_clearTimer","WheelLocker","_lastWheelDirection","_checkDirectionChanged","isDxMouseWheelEvent","shiftKey","directionChange","PointerLocker","ios","compare","cancelAnimationFrame","_scrollFrame","requestAnimationFrame","_checkFrame","FRAME_DURATION","ScrollEmitter","_pointerLocker","_wheelLocker","configure","_accept","skipCheck","_fireEvent","_prevEventData","isScrollingEvent","_start","_savedEventData","currentEventData","delta","eventDelta","time","_end","endEventDelta","velocity","velocityMultiplier","_stop","_clearSelection","_toggleGestureCover","emitter","events","scrollable","_useSimulatedScrollbar","_showScrollbar","_renderPushBackOffset","SCROLLABLE_NATIVE_CLASS","_renderScrollbars","_lastPushBackValue","paddingTop","paddingBottom","_scrollbars","_hideScrollbarTimeout","_renderScrollbar","expandable","_disablePushBack","_eachScrollbar","scrollbar","_scrollAction","_createActionArgs","_this$location","_eventForUserAction","reachedLeft","_isReachedLeft","reachedRight","_isReachedRight","reachedTop","reachedBottom","_isScrollLocationChanged","_moveScrollbars","_lastLocation","stopImmediatePropagation","scrollTopPos","lastLocation","isTopChanged","isLeftChanged","_hideScrollbars","_updateScrollbars","_componentContentSize","className","scrollableNativeRegexp","RegExp","match","join","_removeScrollbars","_isScrolledInMaxDirection","_getSpecificDataSourceOption","hasSimpleItems","every","isCorrectStructure","accumulator","innerItem","store","keepInitialKeyOrder","searchExpr","_draggable","isElementVisible","_config$to","_config$to2","transition","Sortable","_sourceScrollHandler","_handleSourceScroll","_sourceScrollableInfo","clone","itemOrientation","dropFeedbackMode","allowDropInsideItem","allowReordering","moveItemOnDrop","onDragChange","onAdd","onRemove","onReorder","onPlaceholderPrepared","fromIndex","toIndex","dropInsideItem","itemPoints","fromIndexOffset","autoUpdate","draggableElementSize","_$placeholderElement","_isIndicateMode","_$modifiedItem","_modifiedItemMargin","_getPrevVisibleItem","reverse","_dragStartHandler","$sourceElement","_getSourceElement","_updateItemPoints","_subscribeToSourceScroll","_getElementIndex","_dragEndHandler","_unsubscribeFromSourceScroll","$scrollable","_getScrollable","sourceScrollableInfo","scrollProp","_correctItemPoints","_dragEnterHandler","_getSourceDraggable","lastItemPoint","_isVerticalOrientation","sourceElementSize","scrollSize","positionProp","lastPointPosition","freeSize","_getItems","$lastItem","marginBottom","$sortable","sortable","dragEnter","_getTargetDraggable","dragLeave","_isInsideTargetDraggable","$targetDraggable","_getScrollableBoundar","paddingRight","getScrollableBoundary","validX","pageY","dragEnd","sourceEvent","cancelAdd","cancelRemove","sourceDraggable","isSourceDraggable","isInsideTargetDraggable","_fireAddEvent","_fireRemoveEvent","_moveItem","_fireReorderEvent","dragMove","itemPoint","axisName","cursorPosition","centerPosition","_updatePlaceholderPosition","_verticalScrollHelper","isScrolling","_movePlaceholder","_createPlaceholder","$placeholderContainer","_addWidgetPrefix","insertBefore","_$dragElement","itemsSelector","_getItemsSelector","_allowReordering","_isValidPoint","visibleIndex","draggableVisibleIndex","_getItemPoints","$item","itemWidth","itemElements","visibleItemElements","visibleItemCount","$draggableItem","_getDraggableElement","needCorrectLeftPosition","needCorrectTopPosition","isValid","points","_i","floor","forceUpdate","positionPropName","$itemElement","_getDragTemplateArgs","model","_togglePlaceholder","_normalizeToIndex","isAnotherDraggable","eventArgs","_getEventArgs","_getAction","placeholderElement","dragElement","_makeWidthCorrection","_$scrollable","scrollableWidth","offsetRight","_updatePlaceholderSizes","$placeholderElement","$prevTargetItemElement","$itemElements","$targetItemElement","_toggleDragSourceClass","_moveItemCore","$targetItem","prevItem","insertAfter","_getDragStartArgs","targetDraggable","isDragSource","$fromElement","_optionChangedDropInsideItem","_optionChangedToIndex","_isPositionVisible","scrollContainer","clientRect","isVerticalOrientation","pageOffset","pageYOffset","pageXOffset","showPlaceholder","_moveItems","fullUpdate","_updateDragSourceClass","_getActualFromIndex","_$sourceElement","_makeLeftCorrection","leftMargin","prevVisibleItemElement","_getPositions","positions","_getDraggableElementSize","size","prevToIndex","prevPositions","animationConfig","prevPosition","defineProperty","enumerable","configurable","writable","_clearItemKeys","key1","key2","equalByValue","remoteFilter","filterLength","encodeURI","needLoadAllData","loadOptions","_isAnyItemSelected","dataFilter","selectedItemsLength","hasSelectedItems","hasUnselectedItems","_inflector","_animator","hoveredScrollable","activeScrollable","isSluggishPlatform","HORIZONTAL","ACCELERATION","BOUNCE_FRAMES","BOUNCE_ACCELERATION_SUM","pow","KEY_CODES","InertiaAnimator","VELOCITY_LIMIT","_isFinished","_velocity","_step","_scrollStep","_acceleration","_stopComplete","BounceAnimator","MIN_VELOCITY_LIMIT","_crossBoundOnNextStep","_bounceLocation","_initAnimators","_initScrollbar","_topReached","_bottomReached","_axis","_prop","_scrollProp","optionName","optionValue","_inertiaAnimator","_bounceAnimator","_scrollByThumb","visibilityMode","_visibilityModeNormalize","_scrollbarVisible","_$scrollbar","prevLocation","_suppressBounce","triggerHandler","_bounceEnabled","_boundLocation","_moveContentByTranslator","_scaleRatio","realDimension","_getRealDimension","baseDimension","_getBaseDimension","titleize","translateOffset","minOffset","_maxScrollPropValue","_translateOffset","_hideScrollbar","_completeDeferred","_scrollToBounds","_bounceAction","_setupBounce","bounceDistance","nextLocation","_stopDeferred","_stopScrolling","_prepareThumbScrolling","deferRenderer","scrollbarClicked","_isScrollbar","_moveToMouseLocation","_thumbScrolling","_isThumb","_crossThumbScrolling","_isAnyThumbScrolling","feedbackOn","_isThumbScrollingHandler","mouseLocation","toUpperCase","_containerToContentRatio","_moveHandler","_scrollBy","_scrollByHandler","containerToContentRatio","_endHandler","_inertiaHandler","_resetThumbScrolling","_suppressInertia","_inertiaEnabled","_stopHandler","_disposeHandler","_resetScaleRatio","_updateLocation","deferUpdater","_this3","baseContainerSize","baseContentSize","locationChanged","_createActionsHandler","scroll","bounce","isOverflowHidden","containerScrollSize","_validateEvent","_isContent","isThumb","_scrollByContent","_reachedMin","_reachedMax","_cursorEnterHandler","cursorEnter","_cursorLeaveHandler","cursorLeave","_createScrollers","_attachKeyboardHandler","_attachCursorHandlers","scrollbarVisible","isAnyThumbScrolling","_getPropByDirection","isThumbScrollingVertical","isThumbScrollingHorizontal","_suppressDirections","_stopAction","_prepareDirections","_eachScroller","_validDirections","_startAction","_saveActive","_resetActive","_adjustDistance","_tryGetDevicePixelRatio","_refreshCursorState","_endAction","SCROLLABLE_SIMULATED","_keyDownHandler","_this4","_updateHandlerTimeout","_scrollByLine","_scrollByPage","_scrollToHome","_scrollToEnd","lines","page","_wheelProp","_dimensionByProp","_createActionHandler","_createScrollerActions","_arguments","_this5","actionHandler","_this$_scrollers","scrollerX","scrollerY","deferreds","_isHoverMode","_hoverHandled","targetScrollable","_this6","touchDirection","verticalScroller","horizontalScroller","isCommandKeyPressed","_validateWheel","_validateMove","_this7","_wheelDirection","reachedMin","reachedMax","contentGreaterThanContainer","locatedNotAtBound","scrollFromMin","scrollFromMax","validated","_validateWheelTimer","_finished","_stopped","_proxiedStepCore","_stepCore","_stepAnimationFrame","_isStopped","inProgress","SCROLLABLE_SCROLLBAR_ACTIVE_CLASS","SCROLLBAR_VISIBLE","activeScrollbar","Scrollbar","_isHovered","_renderThumb","_attachPointerDownHandler","_$thumb","feedbackOff","_needScrollbar","_adjustVisibility","_baseContainerToContentRatio","_isHidden","scrollBarLocation","_calculateScrollBarPosition","_thumbRatio","_realContainerToContentRatio","thumbSize","_normalizeSize","subscribeGlobal","touch","_variable_wrapper","_data","isWrapped","getResultConfig","readOnly","inputAttr","tabIndex","editorOptions","checkEnterBug","getTextEditorConfig","isEnterBug","sharedData","onValueChanged","needDelayedUpdate","parentType","isInputOrKeyUpEvent","updateValue","notFireEvent","setValue","valueChangeTimeout","updateValueTimeout","onKeyDown","prepareBooleanEditor","prepareSelectBox","displayExpr","trueText","falseText","editorName","elementAttr","prepareCheckBox","displayGetter","postProcess","isFilterRow","compileGetter","isFunction","row","watch","selectBox","stopWatch","watchLookupDataSource","normalizeDataSourceOptions","pageIndex","unshift","valueExpr","showClearButton","showAllText","createEditor","editorElement","blur","displayFormat","dateSerializationFormat","prepareDateBox","prepareNumberBox","isSearching","editorType","prepareTextBox","isOnForm","showValidationMark","$editorElement","addWidgetPrefix","dxTextBox","registerKeyHandler","dateBox","dxDateBox","defaultEnterKeyHandler","dxTextArea","createEditorCore"],"mappings":"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","file":"vendors~ccc41438.47ef55c49d4496fb5a85.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/splitter.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _index = require(\"../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar SPLITTER_CLASS = \"dx-splitter\";\r\nvar SPLITTER_WRAPPER_CLASS = \"\".concat(SPLITTER_CLASS, \"-wrapper\");\r\nvar SPLITTER_INACTIVE_CLASS = \"\".concat(SPLITTER_CLASS, \"-inactive\");\r\nvar SPLITTER_BORDER_CLASS = \"\".concat(SPLITTER_CLASS, \"-border\");\r\nvar SPLITTER_INITIAL_STATE_CLASS = \"\".concat(SPLITTER_CLASS, \"-initial\");\r\nvar STATE_DISABLED_CLASS = \"dx-state-disabled\";\r\nvar SPLITTER_MODULE_NAMESPACE = \"dxSplitterResizing\";\r\nvar SPLITTER_POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, SPLITTER_MODULE_NAMESPACE);\r\nvar SPLITTER_POINTER_MOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, SPLITTER_MODULE_NAMESPACE);\r\nvar SPLITTER_POINTER_UP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, SPLITTER_MODULE_NAMESPACE);\r\nvar SplitterControl = function(_Widget) {\r\n _inheritsLoose(SplitterControl, _Widget);\r\n\r\n function SplitterControl() {\r\n return _Widget.apply(this, arguments) || this\r\n }\r\n var _proto = SplitterControl.prototype;\r\n _proto._initMarkup = function() {\r\n _Widget.prototype._initMarkup.call(this);\r\n this._initActions();\r\n this._$container = this.option(\"container\");\r\n this._$leftElement = this.option(\"leftElement\");\r\n this._$rightElement = this.option(\"rightElement\");\r\n this.$element().addClass(SPLITTER_WRAPPER_CLASS).addClass(SPLITTER_INITIAL_STATE_CLASS);\r\n this._$splitterBorder = (0, _renderer.default)(\"
\").addClass(SPLITTER_BORDER_CLASS).appendTo(this.$element());\r\n this._$splitter = (0, _renderer.default)(\"
\").addClass(SPLITTER_CLASS).addClass(SPLITTER_INACTIVE_CLASS).appendTo(this._$splitterBorder)\r\n };\r\n _proto._initActions = function() {\r\n this._actions = {\r\n onApplyPanelSize: this._createActionByOption(\"onApplyPanelSize\"),\r\n onActiveStateChanged: this._createActionByOption(\"onActiveStateChanged\")\r\n }\r\n };\r\n _proto._render = function() {\r\n _Widget.prototype._render.call(this);\r\n this._detachEventHandlers();\r\n this._attachEventHandlers()\r\n };\r\n _proto._clean = function() {\r\n this._detachEventHandlers();\r\n _Widget.prototype._clean.call(this)\r\n };\r\n _proto._attachEventHandlers = function() {\r\n var document = _dom_adapter.default.getDocument();\r\n _events_engine.default.on(this._$splitterBorder, SPLITTER_POINTER_DOWN_EVENT_NAME, this._onMouseDownHandler.bind(this));\r\n _events_engine.default.on(document, SPLITTER_POINTER_MOVE_EVENT_NAME, this._onMouseMoveHandler.bind(this));\r\n _events_engine.default.on(document, SPLITTER_POINTER_UP_EVENT_NAME, this._onMouseUpHandler.bind(this))\r\n };\r\n _proto._detachEventHandlers = function() {\r\n var document = _dom_adapter.default.getDocument();\r\n _events_engine.default.off(this._$splitterBorder, SPLITTER_POINTER_DOWN_EVENT_NAME);\r\n _events_engine.default.off(document, SPLITTER_POINTER_MOVE_EVENT_NAME);\r\n _events_engine.default.off(document, SPLITTER_POINTER_UP_EVENT_NAME)\r\n };\r\n _proto._dimensionChanged = function(dimension) {\r\n if (!dimension || \"height\" !== dimension) {\r\n this._containerWidth = this._$container.get(0).clientWidth;\r\n this._setSplitterPositionLeft({\r\n needUpdatePanels: true,\r\n usePercentagePanelsWidth: true\r\n })\r\n }\r\n };\r\n _proto._onMouseDownHandler = function(e) {\r\n e.preventDefault();\r\n this._offsetX = e.pageX - this._$splitterBorder.offset().left <= this._getSplitterBorderWidth() ? e.pageX - this._$splitterBorder.offset().left : 0;\r\n this._containerWidth = this._$container.get(0).clientWidth;\r\n this.$element().removeClass(SPLITTER_INITIAL_STATE_CLASS);\r\n this._toggleActive(true);\r\n this._setSplitterPositionLeft({\r\n needUpdatePanels: true\r\n })\r\n };\r\n _proto._onMouseMoveHandler = function(e) {\r\n if (!this._isSplitterActive) {\r\n return\r\n }\r\n this._setSplitterPositionLeft({\r\n splitterPositionLeft: this._getNewSplitterPositionLeft(e),\r\n needUpdatePanels: true\r\n })\r\n };\r\n _proto._onMouseUpHandler = function() {\r\n if (!this._isSplitterActive) {\r\n return\r\n }\r\n this._leftPanelPercentageWidth = null;\r\n this._toggleActive(false);\r\n this._setSplitterPositionLeft({\r\n needUpdatePanels: true,\r\n usePercentagePanelsWidth: true\r\n })\r\n };\r\n _proto._getNewSplitterPositionLeft = function(e) {\r\n var newSplitterPositionLeft = e.pageX - this._getContainerLeftOffset() - this._offsetX;\r\n newSplitterPositionLeft = Math.max(0 - this._getSplitterOffset(), newSplitterPositionLeft);\r\n newSplitterPositionLeft = Math.min(this._containerWidth - this._getSplitterOffset() - this._getSplitterWidth(), newSplitterPositionLeft);\r\n return newSplitterPositionLeft\r\n };\r\n _proto._getContainerLeftOffset = function() {\r\n var offsetLeft = this._$container.offset().left;\r\n if (window) {\r\n var style = window.getComputedStyle(this._$container.get(0));\r\n var paddingLeft = parseFloat(style.paddingLeft) || 0;\r\n var borderLeft = parseFloat(style.borderLeftWidth) || 0;\r\n offsetLeft += paddingLeft + borderLeft\r\n }\r\n return offsetLeft\r\n };\r\n _proto._getSplitterOffset = function() {\r\n return (this._getSplitterBorderWidth() - this._getSplitterWidth()) / 2\r\n };\r\n _proto._getSplitterWidth = function() {\r\n return this._$splitter.get(0).clientWidth\r\n };\r\n _proto._getSplitterBorderWidth = function() {\r\n return this._$splitterBorder.get(0).clientWidth\r\n };\r\n _proto._getLeftPanelWidth = function() {\r\n return this._$leftElement.get(0).clientWidth\r\n };\r\n _proto._toggleActive = function(isActive) {\r\n this.$element().toggleClass(SPLITTER_INACTIVE_CLASS, !isActive);\r\n this._$splitter.toggleClass(SPLITTER_INACTIVE_CLASS, !isActive);\r\n this._isSplitterActive = isActive;\r\n this._actions.onActiveStateChanged({\r\n isActive: isActive\r\n })\r\n };\r\n _proto.toggleDisabled = function(isDisabled) {\r\n this.$element().toggleClass(STATE_DISABLED_CLASS, isDisabled);\r\n this._$splitter.toggleClass(STATE_DISABLED_CLASS, isDisabled)\r\n };\r\n _proto.isSplitterMoved = function() {\r\n return !this.$element().hasClass(SPLITTER_INITIAL_STATE_CLASS)\r\n };\r\n _proto.disableSplitterCalculation = function(value) {\r\n this._isSplitterCalculationDisabled = value\r\n };\r\n _proto._setSplitterPositionLeft = function() {\r\n var _ref = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\r\n _ref$splitterPosition = _ref.splitterPositionLeft,\r\n splitterPositionLeft = void 0 === _ref$splitterPosition ? null : _ref$splitterPosition,\r\n _ref$needUpdatePanels = _ref.needUpdatePanels,\r\n needUpdatePanels = void 0 === _ref$needUpdatePanels ? false : _ref$needUpdatePanels,\r\n _ref$usePercentagePan = _ref.usePercentagePanelsWidth,\r\n usePercentagePanelsWidth = void 0 === _ref$usePercentagePan ? false : _ref$usePercentagePan;\r\n splitterPositionLeft = splitterPositionLeft || this._getLeftPanelWidth() - this._getSplitterOffset();\r\n var leftPanelWidth = splitterPositionLeft + this._getSplitterOffset();\r\n var rightPanelWidth = this._containerWidth - leftPanelWidth;\r\n if (!this._isSplitterCalculationDisabled) {\r\n this.$element().css(\"left\", splitterPositionLeft)\r\n }\r\n this._leftPanelPercentageWidth = this._leftPanelPercentageWidth || this._convertToPercentage(leftPanelWidth);\r\n var rightPanelPercentageWidth = this._convertToPercentage(this._containerWidth - this._convertToPixels(this._leftPanelPercentageWidth));\r\n if (!needUpdatePanels) {\r\n return\r\n }\r\n this._actions.onApplyPanelSize({\r\n leftPanelWidth: usePercentagePanelsWidth ? \"\".concat(this._leftPanelPercentageWidth, \"%\") : leftPanelWidth,\r\n rightPanelWidth: usePercentagePanelsWidth ? \"\".concat(rightPanelPercentageWidth, \"%\") : rightPanelWidth\r\n })\r\n };\r\n _proto._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"initialLeftPanelWidth\":\r\n this._leftPanelPercentageWidth = this._convertToPercentage(args.value);\r\n this._dimensionChanged();\r\n break;\r\n case \"leftElement\":\r\n this.repaint();\r\n break;\r\n case \"onActiveStateChanged\":\r\n case \"onApplyPanelSize\":\r\n this._actions[args.name] = this._createActionByOption(args.name);\r\n break;\r\n default:\r\n _Widget.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._convertToPercentage = function(pixelWidth) {\r\n return pixelWidth / this._$container.get(0).clientWidth * 100\r\n };\r\n _proto._convertToPixels = function(percentageWidth) {\r\n return percentageWidth / 100 * this._$container.get(0).clientWidth\r\n };\r\n return SplitterControl\r\n}(_ui.default);\r\nexports.default = SplitterControl;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/slider.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./slider/ui.slider\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/slider/ui.slider_handle.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _tooltip = _interopRequireDefault(require(\"../tooltip\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position2 = require(\"../../core/utils/position\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SLIDER_CLASS = \"dx-slider\";\r\nvar SLIDER_HANDLE_CLASS = \"dx-slider-handle\";\r\nvar POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"none\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"none\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"none\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"none\"\r\n }\r\n};\r\nvar SliderHandle = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n hoverStateEnabled: false,\r\n value: 0,\r\n tooltipEnabled: false,\r\n tooltipFormat: function(v) {\r\n return v\r\n },\r\n tooltipPosition: \"top\",\r\n tooltipShowMode: \"onHover\",\r\n tooltipFitIn: null\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(SLIDER_HANDLE_CLASS);\r\n this.setAria({\r\n role: \"slider\",\r\n valuenow: this.option(\"value\")\r\n })\r\n },\r\n _render: function() {\r\n this._renderTooltip();\r\n this.callBase()\r\n },\r\n _renderTooltip: function() {\r\n if (this.option(\"tooltipEnabled\")) {\r\n if (!this._$tooltip) {\r\n this._$tooltip = (0, _renderer.default)(\"
\").appendTo(this.$element())\r\n }\r\n this._$slider = this.$element().closest(\".\" + SLIDER_CLASS);\r\n this._updateTooltip()\r\n } else {\r\n this._removeTooltip()\r\n }\r\n },\r\n _createTooltip: function() {\r\n if (this._tooltip) {\r\n return false\r\n }\r\n this._tooltip = this._createComponent(this._$tooltip, _tooltip.default, {\r\n visible: true,\r\n target: this.$element(),\r\n closeOnOutsideClick: false,\r\n container: this.$element(),\r\n hideTopOverlayHandler: null,\r\n closeOnTargetScroll: false,\r\n onPositioned: function(args) {\r\n this._saveTooltipElements(args.component);\r\n this._saveTooltipLocation();\r\n this._centeredTooltipPosition()\r\n }.bind(this),\r\n animation: null,\r\n arrowPosition: null,\r\n templatesRenderAsynchronously: false,\r\n _fixedPosition: false\r\n });\r\n return true\r\n },\r\n _removeTooltip: function() {\r\n if (!this._$tooltip) {\r\n return\r\n }\r\n this._$tooltip.remove();\r\n delete this._$tooltip;\r\n delete this._tooltip\r\n },\r\n _renderTooltipPosition: function() {\r\n if (!this._tooltip) {\r\n return\r\n }\r\n var position = this.option(\"tooltipPosition\");\r\n this._saveTooltipElements();\r\n this._resetTooltipPosition();\r\n if (\"string\" === (0, _type.type)(position)) {\r\n position = (0, _extend.extend)({\r\n boundary: this._$slider,\r\n boundaryOffset: {\r\n h: 1,\r\n v: 1\r\n }\r\n }, POSITION_ALIASES[position])\r\n }\r\n this._tooltip.option(\"position\", position);\r\n this._saveTooltipLocation()\r\n },\r\n _saveTooltipElements: function(tooltip) {\r\n tooltip = this._tooltip || tooltip;\r\n this._$tooltipContent = tooltip.$content().parent();\r\n this._$tooltipArrow = this._$tooltipContent.find(\".dx-popover-arrow\")\r\n },\r\n _resetTooltipPosition: function() {\r\n (0, _translator.resetPosition)(this._$tooltipContent);\r\n (0, _translator.resetPosition)(this._$tooltipArrow)\r\n },\r\n _saveTooltipLocation: function() {\r\n this._contentLocate = (0, _translator.locate)(this._$tooltipContent)\r\n },\r\n _centeredTooltipPosition: function() {\r\n if (!this._tooltip) {\r\n return\r\n }\r\n this._$tooltipContent.outerWidth(\"auto\");\r\n var outerWidthWithoutRounding = (0, _position2.getBoundingRect)(this._$tooltipContent.get(0)).width;\r\n var tooltipOuterWidth = Math.ceil(outerWidthWithoutRounding);\r\n var roundedTooltipOuterWidth = tooltipOuterWidth % 2 + tooltipOuterWidth;\r\n this._$tooltipContent.outerWidth(roundedTooltipOuterWidth);\r\n var tooltipCenter = (roundedTooltipOuterWidth - this.$element().width()) / 2;\r\n this._contentLocate.left = -tooltipCenter;\r\n this._$tooltipArrow.css({\r\n marginLeft: -this._$tooltipArrow.outerWidth() / 2,\r\n left: \"50%\"\r\n });\r\n this._fitTooltip()\r\n },\r\n _fitTooltip: function() {\r\n if (!this._tooltip) {\r\n return\r\n }\r\n var position = this.option(\"tooltipPosition\");\r\n if (\"string\" === (0, _type.type)(position)) {\r\n position = (0, _extend.extend)({\r\n of: this.$element(),\r\n boundary: this._$slider,\r\n boundaryOffset: {\r\n h: 2,\r\n v: 1\r\n }\r\n }, POSITION_ALIASES[position], {\r\n collision: \"fit none\"\r\n })\r\n }\r\n var calculatePosition = _position.default.calculate(this._$tooltipContent, position);\r\n var isLeftSide = \"left\" === calculatePosition.h.collisionSide;\r\n var arrowLeft = (isLeftSide ? -1 : 1) * calculatePosition.h.oversize;\r\n var arrowMinLeft = this._contentLocate.left;\r\n var arrowMaxRight = this._contentLocate.left + this._$tooltipContent.outerWidth() - this._$tooltipArrow.outerWidth();\r\n (0, _translator.move)(this._$tooltipContent, {\r\n left: this._contentLocate.left + (isLeftSide ? 1 : -1) * calculatePosition.h.oversize\r\n });\r\n (0, _translator.move)(this._$tooltipArrow, {\r\n left: (0, _math.fitIntoRange)(arrowLeft, arrowMinLeft, arrowMaxRight)\r\n })\r\n },\r\n _getFormattedValue: function(value) {\r\n return _number.default.format(value, this.option(\"tooltipFormat\"))\r\n },\r\n _renderValue: function() {\r\n if (!this._tooltip) {\r\n return\r\n }\r\n var value = this.option(\"value\");\r\n this._tooltip.$content().html(this._getFormattedValue(value));\r\n this._fitTooltip()\r\n },\r\n _updateTooltip: function() {\r\n var hoverMode = /^onhover$/i.test(this.option(\"tooltipShowMode\"));\r\n if (!hoverMode) {\r\n this._createTooltip()\r\n }\r\n this.$element().toggleClass(\"dx-slider-tooltip-on-hover\", hoverMode);\r\n this._renderTooltipPosition();\r\n this._renderValue();\r\n this._centeredTooltipPosition()\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n delete this._$tooltip;\r\n delete this._tooltip\r\n },\r\n _ensureTooltipIsCentered: function(value, previousValue) {\r\n if ((0, _type.isDefined)(value) && (0, _type.isDefined)(previousValue) && value.toString().length !== previousValue.toString().length) {\r\n this._centeredTooltipPosition()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"tooltipFormat\":\r\n this._renderValue();\r\n break;\r\n case \"value\":\r\n this._renderValue();\r\n var value = this._getFormattedValue(args.value);\r\n var previousValue = this._getFormattedValue(args.previousValue);\r\n this._ensureTooltipIsCentered(value, previousValue);\r\n this.setAria(\"valuenow\", args.value);\r\n break;\r\n case \"tooltipEnabled\":\r\n this._renderTooltip();\r\n break;\r\n case \"tooltipPosition\":\r\n this._renderTooltipPosition();\r\n this._centeredTooltipPosition();\r\n break;\r\n case \"tooltipShowMode\":\r\n this._updateTooltip();\r\n break;\r\n case \"tooltipFitIn\":\r\n this._fitTooltip();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n fitTooltipPosition: function() {\r\n this._fitTooltip()\r\n },\r\n updateTooltip: function() {\r\n if (!this._createTooltip()) {\r\n return\r\n }\r\n this._renderTooltipPosition();\r\n this._renderValue();\r\n this._centeredTooltipPosition()\r\n },\r\n repaint: function() {\r\n this._renderTooltipPosition();\r\n this._centeredTooltipPosition();\r\n if (this._tooltip) {\r\n this._tooltip._visibilityChanged(true)\r\n }\r\n }\r\n});\r\nvar _default = SliderHandle;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/slide_out_view.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _click = require(\"../events/click\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _element = require(\"../core/element\");\r\nvar _hide_callback = require(\"../mobile/hide_callback\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _swipeable = _interopRequireDefault(require(\"../events/gesture/swipeable\"));\r\nvar _empty_template = require(\"../core/templates/empty_template\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _uiSlide_out_view = require(\"./slide_out_view/ui.slide_out_view.animation\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SLIDEOUTVIEW_CLASS = \"dx-slideoutview\";\r\nvar SLIDEOUTVIEW_WRAPPER_CLASS = \"dx-slideoutview-wrapper\";\r\nvar SLIDEOUTVIEW_MENU_CONTENT_CLASS = \"dx-slideoutview-menu-content\";\r\nvar SLIDEOUTVIEW_CONTENT_CLASS = \"dx-slideoutview-content\";\r\nvar SLIDEOUTVIEW_SHIELD_CLASS = \"dx-slideoutview-shield\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar SlideOutView = _ui.default.inherit({\r\n ctor: function(element, options) {\r\n this.callBase(element, options);\r\n this._logDeprecatedComponentWarning(\"20.1\", \"dxDrawer\")\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n menuPosition: \"normal\",\r\n menuVisible: false,\r\n swipeEnabled: true,\r\n menuTemplate: \"menu\",\r\n contentTemplate: \"content\",\r\n contentOffset: 45\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n android: true\r\n },\r\n options: {\r\n contentOffset: 54\r\n }\r\n }, {\r\n device: function(_device) {\r\n return \"generic\" === _device.platform && \"desktop\" !== _device.deviceType\r\n },\r\n options: {\r\n contentOffset: 56\r\n }\r\n }, {\r\n device: {\r\n win: true,\r\n phone: false\r\n },\r\n options: {\r\n contentOffset: 76\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(SLIDEOUTVIEW_CLASS);\r\n this._whenAnimationComplete = void 0;\r\n this._whenMenuRendered = void 0;\r\n this._initHideTopOverlayHandler()\r\n },\r\n _initHideTopOverlayHandler: function() {\r\n this._hideMenuHandler = this.hideMenu.bind(this)\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 menu: new _empty_template.EmptyTemplate,\r\n content: new _empty_template.EmptyTemplate\r\n });\r\n this.callBase()\r\n },\r\n _initMarkup: function() {\r\n var _this = this;\r\n this.callBase();\r\n this._renderMarkup();\r\n this._whenMenuRendered = new _deferred.Deferred;\r\n var menuTemplate = this._getTemplate(this.option(\"menuTemplate\"));\r\n menuTemplate && menuTemplate.render({\r\n container: this.menuContent(),\r\n onRendered: function() {\r\n _this._whenMenuRendered.resolve()\r\n }\r\n });\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: this.content(),\r\n noModel: true,\r\n transclude: transclude\r\n });\r\n this._renderShield();\r\n this._toggleMenuPositionClass()\r\n },\r\n _render: function() {\r\n var _this2 = this;\r\n this.callBase();\r\n this._whenMenuRendered.always(function() {\r\n _this2._initSwipeHandlers();\r\n _this2._dimensionChanged()\r\n })\r\n },\r\n _renderMarkup: function() {\r\n var $wrapper = (0, _renderer.default)(\"
\").addClass(SLIDEOUTVIEW_WRAPPER_CLASS);\r\n this._$menu = (0, _renderer.default)(\"
\").addClass(SLIDEOUTVIEW_MENU_CONTENT_CLASS);\r\n this._$container = (0, _renderer.default)(\"
\").addClass(SLIDEOUTVIEW_CONTENT_CLASS);\r\n $wrapper.append(this._$menu);\r\n $wrapper.append(this._$container);\r\n this.$element().append($wrapper);\r\n _events_engine.default.on(this._$container, \"MSPointerDown\", _common.noop)\r\n },\r\n _renderShield: function() {\r\n this._$shield = this._$shield || (0, _renderer.default)(\"
\").addClass(SLIDEOUTVIEW_SHIELD_CLASS);\r\n this._$shield.appendTo(this.content());\r\n _events_engine.default.off(this._$shield, _click.name);\r\n _events_engine.default.on(this._$shield, _click.name, this.hideMenu.bind(this));\r\n this._toggleShieldVisibility(this.option(\"menuVisible\"))\r\n },\r\n _initSwipeHandlers: function() {\r\n this._createComponent((0, _renderer.default)(this.content()), _swipeable.default, {\r\n disabled: !this.option(\"swipeEnabled\"),\r\n elastic: false,\r\n itemSizeFunc: this._getMenuWidth.bind(this),\r\n onStart: this._swipeStartHandler.bind(this),\r\n onUpdated: this._swipeUpdateHandler.bind(this),\r\n onEnd: this._swipeEndHandler.bind(this)\r\n })\r\n },\r\n _isRightMenuPosition: function() {\r\n var invertedPosition = \"inverted\" === this.option(\"menuPosition\");\r\n var rtl = this.option(\"rtlEnabled\");\r\n return rtl && !invertedPosition || !rtl && invertedPosition\r\n },\r\n _swipeStartHandler: function(e) {\r\n _uiSlide_out_view.animation.complete((0, _renderer.default)(this.content()));\r\n var event = e.event;\r\n var menuVisible = this.option(\"menuVisible\");\r\n var rtl = this._isRightMenuPosition();\r\n event.maxLeftOffset = +(rtl ? !menuVisible : menuVisible);\r\n event.maxRightOffset = +(rtl ? menuVisible : !menuVisible);\r\n this._toggleShieldVisibility(true)\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n var event = e.event;\r\n var offset = this.option(\"menuVisible\") ? event.offset + 1 * this._getRTLSignCorrection() : event.offset;\r\n offset *= this._getRTLSignCorrection();\r\n this._renderPosition(offset, false)\r\n },\r\n _swipeEndHandler: function(e) {\r\n var targetOffset = e.event.targetOffset * this._getRTLSignCorrection() + this.option(\"menuVisible\");\r\n var menuVisible = 0 !== targetOffset;\r\n if (this.option(\"menuVisible\") === menuVisible) {\r\n this._renderPosition(this.option(\"menuVisible\"), true)\r\n } else {\r\n this.option(\"menuVisible\", menuVisible)\r\n }\r\n },\r\n _toggleMenuPositionClass: function() {\r\n var left = SLIDEOUTVIEW_CLASS + \"-left\";\r\n var right = SLIDEOUTVIEW_CLASS + \"-right\";\r\n var menuPosition = this._isRightMenuPosition() ? \"right\" : \"left\";\r\n this._$menu.removeClass(left + \" \" + right);\r\n this._$menu.addClass(SLIDEOUTVIEW_CLASS + \"-\" + menuPosition)\r\n },\r\n _renderPosition: function(offset, animate) {\r\n if (!(0, _window.hasWindow)()) {\r\n return\r\n }\r\n var pos = this._calculatePixelOffset(offset) * this._getRTLSignCorrection();\r\n this._toggleHideMenuCallback(offset);\r\n if (animate) {\r\n this._toggleShieldVisibility(true);\r\n _uiSlide_out_view.animation.moveTo((0, _renderer.default)(this.content()), pos, this._animationCompleteHandler.bind(this))\r\n } else {\r\n (0, _translator.move)((0, _renderer.default)(this.content()), {\r\n left: pos\r\n })\r\n }\r\n },\r\n _calculatePixelOffset: function(offset) {\r\n offset = offset || 0;\r\n return offset * this._getMenuWidth()\r\n },\r\n _getMenuWidth: function() {\r\n if (!this._menuWidth) {\r\n var maxMenuWidth = this.$element().width() - this.option(\"contentOffset\");\r\n var menuContent = (0, _renderer.default)(this.menuContent());\r\n menuContent.css(\"maxWidth\", maxMenuWidth < 0 ? 0 : maxMenuWidth);\r\n var currentMenuWidth = menuContent.width();\r\n this._menuWidth = Math.min(currentMenuWidth, maxMenuWidth)\r\n }\r\n return this._menuWidth\r\n },\r\n _animationCompleteHandler: function() {\r\n this._toggleShieldVisibility(this.option(\"menuVisible\"));\r\n if (this._whenAnimationComplete) {\r\n this._whenAnimationComplete.resolveWith(this)\r\n }\r\n },\r\n _toggleHideMenuCallback: function(subscribe) {\r\n if (subscribe) {\r\n _hide_callback.hideCallback.add(this._hideMenuHandler)\r\n } else {\r\n _hide_callback.hideCallback.remove(this._hideMenuHandler)\r\n }\r\n },\r\n _getRTLSignCorrection: function() {\r\n return this._isRightMenuPosition() ? -1 : 1\r\n },\r\n _dispose: function() {\r\n _uiSlide_out_view.animation.complete((0, _renderer.default)(this.content()));\r\n this._toggleHideMenuCallback(false);\r\n this.callBase()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n delete this._menuWidth;\r\n this._renderPosition(this.option(\"menuVisible\"), false)\r\n },\r\n _toggleShieldVisibility: function(visible) {\r\n this._$shield.toggleClass(INVISIBLE_STATE_CLASS, !visible)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n this.callBase(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"contentOffset\":\r\n this._dimensionChanged();\r\n break;\r\n case \"menuVisible\":\r\n this._renderPosition(args.value, true);\r\n break;\r\n case \"menuPosition\":\r\n this._renderPosition(this.option(\"menuVisible\"), true);\r\n this._toggleMenuPositionClass();\r\n break;\r\n case \"swipeEnabled\":\r\n this._initSwipeHandlers();\r\n break;\r\n case \"contentTemplate\":\r\n case \"menuTemplate\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n menuContent: function() {\r\n return (0, _element.getPublicElement)(this._$menu)\r\n },\r\n content: function() {\r\n return (0, _element.getPublicElement)(this._$container)\r\n },\r\n showMenu: function() {\r\n return this.toggleMenuVisibility(true)\r\n },\r\n hideMenu: function() {\r\n return this.toggleMenuVisibility(false)\r\n },\r\n toggleMenuVisibility: function(showing) {\r\n showing = void 0 === showing ? !this.option(\"menuVisible\") : showing;\r\n this._whenAnimationComplete = new _deferred.Deferred;\r\n this.option(\"menuVisible\", showing);\r\n return this._whenAnimationComplete.promise()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxSlideOutView\", SlideOutView);\r\nvar _default = SlideOutView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/selection/selection.strategy.deferred.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _selection = _interopRequireDefault(require(\"./selection.strategy\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _selection.default.inherit({\r\n getSelectedItems: function() {\r\n return this._loadFilteredData(this.options.selectionFilter)\r\n },\r\n getSelectedItemKeys: function() {\r\n var d = new _deferred.Deferred;\r\n var that = this;\r\n var key = this.options.key();\r\n var select = (0, _type.isString)(key) ? [key] : key;\r\n this._loadFilteredData(this.options.selectionFilter, null, select).done(function(items) {\r\n var keys = items.map(function(item) {\r\n return that.options.keyOf(item)\r\n });\r\n d.resolve(keys)\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n if (isSelectAll) {\r\n var filter = this.options.filter();\r\n var needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect;\r\n if (needResetSelectionFilter) {\r\n this._setOption(\"selectionFilter\", isDeselect ? [] : null)\r\n } else {\r\n this._addSelectionFilter(isDeselect, filter, isSelectAll)\r\n }\r\n } else {\r\n if (!preserve) {\r\n this._setOption(\"selectionFilter\", [])\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (isDeselect) {\r\n this.removeSelectedItem(keys[i])\r\n } else {\r\n this.addSelectedItem(keys[i])\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n setSelectedItems: function(keys) {\r\n this._setOption(\"selectionFilter\", null);\r\n for (var i = 0; i < keys.length; i++) {\r\n this.addSelectedItem(keys[i])\r\n }\r\n },\r\n isItemDataSelected: function(itemData) {\r\n return this.isItemKeySelected(itemData)\r\n },\r\n isItemKeySelected: function(itemData) {\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n return !!(0, _query.default)([itemData]).filter(selectionFilter).toArray().length\r\n },\r\n _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 _ui.default.Error(\"E1042\", \"Deferred selection\")\r\n }\r\n },\r\n _findSubFilter: function(selectionFilter, filter) {\r\n if (!selectionFilter) {\r\n return -1\r\n }\r\n var filterString = JSON.stringify(filter);\r\n for (var index = 0; index < selectionFilter.length; index++) {\r\n var subFilter = selectionFilter[index];\r\n if (subFilter && JSON.stringify(subFilter) === filterString) {\r\n return index\r\n }\r\n }\r\n return -1\r\n },\r\n _isLastSubFilter: function(selectionFilter, filter) {\r\n if (selectionFilter && filter) {\r\n return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter)\r\n }\r\n return false\r\n },\r\n _addFilterOperator: function(selectionFilter, filterOperator) {\r\n if (selectionFilter.length > 1 && (0, _type.isString)(selectionFilter[1]) && selectionFilter[1] !== filterOperator) {\r\n selectionFilter = [selectionFilter]\r\n }\r\n if (selectionFilter.length) {\r\n selectionFilter.push(filterOperator)\r\n }\r\n return selectionFilter\r\n },\r\n _denormalizeFilter: function(filter) {\r\n if (filter && (0, _type.isString)(filter[0])) {\r\n filter = [filter]\r\n }\r\n return filter\r\n },\r\n _addSelectionFilter: function(isDeselect, filter, isSelectAll) {\r\n var that = this;\r\n var currentFilter = isDeselect ? [\"!\", filter] : filter;\r\n var currentOperation = isDeselect ? \"and\" : \"or\";\r\n var needAddFilter = true;\r\n var selectionFilter = that.options.selectionFilter || [];\r\n selectionFilter = that._denormalizeFilter(selectionFilter);\r\n if (selectionFilter && selectionFilter.length) {\r\n that._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll);\r\n var filterIndex = that._removeSameFilter(selectionFilter, filter, !isDeselect);\r\n var isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex);\r\n needAddFilter = filter.length && !isKeyOperatorsAfterRemoved;\r\n if (needAddFilter) {\r\n selectionFilter = that._addFilterOperator(selectionFilter, currentOperation)\r\n }\r\n }\r\n if (needAddFilter) {\r\n selectionFilter.push(currentFilter)\r\n }\r\n selectionFilter = that._normalizeFilter(selectionFilter);\r\n that._setOption(\"selectionFilter\", !isDeselect && !selectionFilter.length ? null : selectionFilter)\r\n },\r\n _normalizeFilter: function(filter) {\r\n if (filter && 1 === filter.length) {\r\n filter = filter[0]\r\n }\r\n return filter\r\n },\r\n _removeFilterByIndex: function(filter, filterIndex, isSelectAll) {\r\n var operation = filter[1];\r\n if (filterIndex > 0) {\r\n filter.splice(filterIndex - 1, 2)\r\n } else {\r\n filter.splice(filterIndex, 2)\r\n }\r\n if (isSelectAll && \"and\" === operation) {\r\n filter.splice(0, filter.length)\r\n }\r\n },\r\n _isSimpleKeyFilter: function(filter, key) {\r\n return 3 === filter.length && filter[0] === key && \"=\" === filter[1]\r\n },\r\n _isKeyFilter: function(filter) {\r\n if (2 === filter.length && \"!\" === filter[0]) {\r\n return this._isKeyFilter(filter[1])\r\n }\r\n var keyField = this._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 {\r\n if (1 === selectionFilter[i].length) {\r\n selectionFilter[i] = selectionFilter[i][0]\r\n }\r\n }\r\n return _filterIndex\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n },\r\n getSelectAllState: function() {\r\n var filter = this.options.filter();\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n if (!selectionFilter.length) {\r\n return false\r\n }\r\n if (!filter || !filter.length) {\r\n return\r\n }\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (this._isLastSubFilter(selectionFilter, filter)) {\r\n return true\r\n }\r\n if (this._isLastSubFilter(selectionFilter, [\"!\", filter])) {\r\n return false\r\n }\r\n return\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/selection/selection.strategy.standard.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _array_compare = require(\"../../core/utils/array_compare\");\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _selection_filter = require(\"../../core/utils/selection_filter\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _selection = _interopRequireDefault(require(\"./selection.strategy\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _selection.default.inherit({\r\n ctor: function(options) {\r\n this.callBase(options);\r\n this._initSelectedItemKeyHash()\r\n },\r\n _initSelectedItemKeyHash: function() {\r\n this._setOption(\"keyHashIndices\", this.options.equalByReference ? null : {})\r\n },\r\n getSelectedItemKeys: function() {\r\n return this.options.selectedItemKeys.slice(0)\r\n },\r\n getSelectedItems: function() {\r\n return this.options.selectedItems.slice(0)\r\n },\r\n _preserveSelectionUpdate: function(items, isDeselect) {\r\n var keyOf = this.options.keyOf;\r\n var keyIndicesToRemoveMap;\r\n var keyIndex;\r\n var i;\r\n if (!keyOf) {\r\n return\r\n }\r\n var isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference;\r\n if (isBatchDeselect) {\r\n keyIndicesToRemoveMap = {}\r\n }\r\n for (i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n if (isDeselect) {\r\n keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap);\r\n if (keyIndicesToRemoveMap && keyIndex >= 0) {\r\n keyIndicesToRemoveMap[keyIndex] = true\r\n }\r\n } else {\r\n this.addSelectedItem(key, item)\r\n }\r\n }\r\n if (isBatchDeselect) {\r\n this._batchRemoveSelectedItems(keyIndicesToRemoveMap)\r\n }\r\n },\r\n _batchRemoveSelectedItems: function(keyIndicesToRemoveMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys.slice(0);\r\n var selectedItems = this.options.selectedItems.slice(0);\r\n this.options.selectedItemKeys.length = 0;\r\n this.options.selectedItems.length = 0;\r\n for (var i = 0; i < selectedItemKeys.length; i++) {\r\n if (!keyIndicesToRemoveMap[i]) {\r\n this.options.selectedItemKeys.push(selectedItemKeys[i]);\r\n this.options.selectedItems.push(selectedItems[i])\r\n }\r\n }\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n },\r\n _loadSelectedItemsCore: function(keys, isDeselect, isSelectAll) {\r\n var deferred = new _deferred.Deferred;\r\n var key = this.options.key();\r\n if (!keys.length && !isSelectAll) {\r\n deferred.resolve([]);\r\n return deferred\r\n }\r\n var filter = this.options.filter();\r\n if (isSelectAll && isDeselect && !filter) {\r\n deferred.resolve(this.getSelectedItems());\r\n return deferred\r\n }\r\n var selectionFilterCreator = new _selection_filter.SelectionFilterCreator(keys, isSelectAll);\r\n var combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter);\r\n var deselectedItems = [];\r\n if (isDeselect) {\r\n deselectedItems = combinedFilter ? (0, _query.default)(this.options.selectedItems).filter(combinedFilter).toArray() : this.options.selectedItems.slice(0)\r\n }\r\n var filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData);\r\n var localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key);\r\n filteredItems = filteredItems.filter(localFilter);\r\n if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) {\r\n deferred.resolve(filteredItems)\r\n } else {\r\n deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll)\r\n }\r\n return deferred\r\n },\r\n _replaceSelectionUpdate: function(items) {\r\n var internalKeys = [];\r\n var keyOf = this.options.keyOf;\r\n if (!keyOf) {\r\n return\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n internalKeys.push(key)\r\n }\r\n this.setSelectedItems(internalKeys, items)\r\n },\r\n _warnOnIncorrectKeys: function(keys) {\r\n var allowNullValue = this.options.allowNullValue;\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) {\r\n _ui.default.log(\"W1002\", key)\r\n }\r\n }\r\n },\r\n _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((0, _array.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 {\r\n if (!(0, _array_compare.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 }\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 = (0, _array.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 = (0, _array.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.Deferred;\r\n this._lastRequestData = this._collectLastRequestData(keys, isDeselect, isSelectAll);\r\n (0, _deferred.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 ((0, _type.isDefined)(itemData) && itemData.disabled) {\r\n if (this.options.disabledItemKeys.indexOf(key) === -1) {\r\n this.options.disabledItemKeys.push(key)\r\n }\r\n return\r\n }\r\n var keyHash = this._getKeyHash(key);\r\n if (this._indexOfSelectedItemKey(keyHash) === -1) {\r\n if (!(0, _type.isObject)(keyHash) && this.options.keyHashIndices) {\r\n this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length]\r\n }\r\n this.options.selectedItemKeys.push(key);\r\n this.options.addedItemKeys.push(key);\r\n this.options.addedItems.push(itemData);\r\n this.options.selectedItems.push(itemData)\r\n }\r\n },\r\n _getSelectedIndexByKey: function(key, ignoreIndicesMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n for (var index = 0; index < selectedItemKeys.length; index++) {\r\n if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) {\r\n return index\r\n }\r\n }\r\n return -1\r\n },\r\n _getSelectedIndexByHash: function(key, ignoreIndicesMap) {\r\n var indices = this.options.keyHashIndices[key];\r\n if (indices && indices.length > 1 && ignoreIndicesMap) {\r\n indices = indices.filter(function(index) {\r\n return !ignoreIndicesMap[index]\r\n })\r\n }\r\n return indices && indices[0] >= 0 ? indices[0] : -1\r\n },\r\n _indexOfSelectedItemKey: function(key, ignoreIndicesMap) {\r\n var selectedIndex;\r\n if (this.options.equalByReference) {\r\n selectedIndex = this.options.selectedItemKeys.indexOf(key)\r\n } else {\r\n if ((0, _type.isObject)(key)) {\r\n selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap)\r\n } else {\r\n selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap)\r\n }\r\n }\r\n return selectedIndex\r\n },\r\n _shiftSelectedKeyIndices: function(keyIndex) {\r\n for (var currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) {\r\n var currentKey = this.options.selectedItemKeys[currentKeyIndex];\r\n var currentKeyHash = (0, _common.getKeyHash)(currentKey);\r\n var currentKeyIndices = this.options.keyHashIndices[currentKeyHash];\r\n if (!currentKeyIndices) {\r\n continue\r\n }\r\n for (var i = 0; i < currentKeyIndices.length; i++) {\r\n if (currentKeyIndices[i] > keyIndex) {\r\n currentKeyIndices[i]--\r\n }\r\n }\r\n }\r\n },\r\n removeSelectedItem: function(key, keyIndicesToRemoveMap) {\r\n var keyHash = this._getKeyHash(key);\r\n var isBatchDeselect = !!keyIndicesToRemoveMap;\r\n var keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap);\r\n if (keyIndex < 0) {\r\n return keyIndex\r\n }\r\n this.options.removedItemKeys.push(key);\r\n this.options.removedItems.push(this.options.selectedItems[keyIndex]);\r\n if (isBatchDeselect) {\r\n return keyIndex\r\n }\r\n this.options.selectedItemKeys.splice(keyIndex, 1);\r\n this.options.selectedItems.splice(keyIndex, 1);\r\n if ((0, _type.isObject)(keyHash) || !this.options.keyHashIndices) {\r\n return keyIndex\r\n }\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n if (!keyIndices) {\r\n return keyIndex\r\n }\r\n keyIndices.shift();\r\n if (!keyIndices.length) {\r\n delete this.options.keyHashIndices[keyHash]\r\n }\r\n this._shiftSelectedKeyIndices(keyIndex);\r\n return keyIndex\r\n },\r\n _updateAddedItemKeys: function(keys, items) {\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!this.isItemKeySelected(keys[i])) {\r\n this.options.addedItemKeys.push(keys[i]);\r\n this.options.addedItems.push(items[i])\r\n }\r\n }\r\n },\r\n _updateRemovedItemKeys: function(keys, oldSelectedKeys, oldSelectedItems) {\r\n for (var i = 0; i < oldSelectedKeys.length; i++) {\r\n if (!this.isItemKeySelected(oldSelectedKeys[i])) {\r\n this.options.removedItemKeys.push(oldSelectedKeys[i]);\r\n this.options.removedItems.push(oldSelectedItems[i])\r\n }\r\n }\r\n },\r\n _isItemSelectionInProgress: function(key, checkPending) {\r\n var shouldCheckPending = checkPending && this._lastRequestData && this._requestInProgress();\r\n if (shouldCheckPending) {\r\n return this._lastRequestData.addedItems && this._lastRequestData.addedItems.indexOf(key) !== -1\r\n } else {\r\n return false\r\n }\r\n },\r\n _getKeyHash: function(key) {\r\n return this.options.equalByReference ? key : (0, _common.getKeyHash)(key)\r\n },\r\n setSelectedItems: function(keys, items) {\r\n this._updateAddedItemKeys(keys, items);\r\n var oldSelectedKeys = this.options.selectedItemKeys;\r\n var oldSelectedItems = this.options.selectedItems;\r\n if (!this.options.equalByReference) {\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(keys)\r\n }\r\n this._setOption(\"selectedItemKeys\", keys);\r\n this._setOption(\"selectedItems\", items);\r\n this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems)\r\n },\r\n isItemDataSelected: function(itemData) {\r\n var 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 = index !== -1\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\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiScroll_viewNative = _interopRequireDefault(require(\"./ui.scroll_view.native.pull_down\"));\r\nvar _uiScroll_viewNative2 = _interopRequireDefault(require(\"./ui.scroll_view.native.swipe_down\"));\r\nvar _uiScroll_view = _interopRequireDefault(require(\"./ui.scroll_view.simulated\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.scrollable\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _themes = require(\"./../themes\");\r\nvar _load_panel = _interopRequireDefault(require(\"../load_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLVIEW_CLASS = \"dx-scrollview\";\r\nvar SCROLLVIEW_CONTENT_CLASS = SCROLLVIEW_CLASS + \"-content\";\r\nvar SCROLLVIEW_TOP_POCKET_CLASS = SCROLLVIEW_CLASS + \"-top-pocket\";\r\nvar SCROLLVIEW_BOTTOM_POCKET_CLASS = SCROLLVIEW_CLASS + \"-bottom-pocket\";\r\nvar SCROLLVIEW_PULLDOWN_CLASS = SCROLLVIEW_CLASS + \"-pull-down\";\r\nvar SCROLLVIEW_REACHBOTTOM_CLASS = SCROLLVIEW_CLASS + \"-scrollbottom\";\r\nvar SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-indicator\";\r\nvar SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-text\";\r\nvar SCROLLVIEW_LOADPANEL = SCROLLVIEW_CLASS + \"-loadpanel\";\r\nvar refreshStrategies = {\r\n pullDown: _uiScroll_viewNative.default,\r\n swipeDown: _uiScroll_viewNative2.default,\r\n simulated: _uiScroll_view.default\r\n};\r\nvar isServerSide = !(0, _window.hasWindow)();\r\nvar scrollViewServerConfig = {\r\n finishLoading: _common.noop,\r\n release: _common.noop,\r\n refresh: _common.noop,\r\n _optionChanged: function(args) {\r\n if (\"onUpdated\" !== args.name) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n};\r\nvar ScrollView = _ui.default.inherit(isServerSide ? scrollViewServerConfig : {\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n pullingDownText: _message.default.format(\"dxScrollView-pullingDownText\"),\r\n pulledDownText: _message.default.format(\"dxScrollView-pulledDownText\"),\r\n refreshingText: _message.default.format(\"dxScrollView-refreshingText\"),\r\n reachBottomText: _message.default.format(\"dxScrollView-reachBottomText\"),\r\n onPullDown: null,\r\n onReachBottom: null,\r\n refreshStrategy: \"pullDown\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = _devices.default.real();\r\n return \"android\" === realDevice.platform\r\n },\r\n options: {\r\n refreshStrategy: \"swipeDown\"\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n reachBottomText: \"\"\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._loadingIndicatorEnabled = true\r\n },\r\n _initScrollableMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(SCROLLVIEW_CLASS);\r\n this._initContent();\r\n this._initTopPocket();\r\n this._initBottomPocket();\r\n this._initLoadPanel()\r\n },\r\n _initContent: function() {\r\n var $content = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_CONTENT_CLASS);\r\n this._$content.wrapInner($content)\r\n },\r\n _initTopPocket: function() {\r\n var $topPocket = this._$topPocket = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_TOP_POCKET_CLASS);\r\n var $pullDown = this._$pullDown = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_CLASS);\r\n $topPocket.append($pullDown);\r\n this._$content.prepend($topPocket)\r\n },\r\n _initBottomPocket: function() {\r\n var $bottomPocket = this._$bottomPocket = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_BOTTOM_POCKET_CLASS);\r\n var $reachBottom = this._$reachBottom = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_CLASS);\r\n var $loadContainer = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS);\r\n var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"
\")).$element();\r\n var $text = this._$reachBottomText = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_TEXT_CLASS);\r\n this._updateReachBottomText();\r\n $reachBottom.append($loadContainer.append($loadIndicator)).append($text);\r\n $bottomPocket.append($reachBottom);\r\n this._$content.append($bottomPocket)\r\n },\r\n _initLoadPanel: function() {\r\n var $loadPanelElement = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_LOADPANEL).appendTo(this.$element());\r\n var loadPanelOptions = {\r\n shading: false,\r\n delay: 400,\r\n message: this.option(\"refreshingText\"),\r\n position: {\r\n of: this.$element()\r\n }\r\n };\r\n this._loadPanel = this._createComponent($loadPanelElement, _load_panel.default, loadPanelOptions)\r\n },\r\n _updateReachBottomText: function() {\r\n this._$reachBottomText.text(this.option(\"reachBottomText\"))\r\n },\r\n _createStrategy: function() {\r\n var strategyName = this.option(\"useNative\") ? this.option(\"refreshStrategy\") : \"simulated\";\r\n var strategyClass = refreshStrategies[strategyName];\r\n if (!strategyClass) {\r\n throw Error(\"E1030\", this.option(\"refreshStrategy\"))\r\n }\r\n this._strategy = new strategyClass(this);\r\n this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));\r\n this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));\r\n this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))\r\n },\r\n _createActions: function() {\r\n this.callBase();\r\n this._pullDownAction = this._createActionByOption(\"onPullDown\");\r\n this._reachBottomAction = this._createActionByOption(\"onReachBottom\");\r\n this._tryRefreshPocketState()\r\n },\r\n _tryRefreshPocketState: function() {\r\n this._pullDownEnable(this.hasActionSubscription(\"onPullDown\"));\r\n this._reachBottomEnable(this.hasActionSubscription(\"onReachBottom\"))\r\n },\r\n on: function(eventName) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (\"pullDown\" === eventName || \"reachBottom\" === eventName) {\r\n this._tryRefreshPocketState()\r\n }\r\n return result\r\n },\r\n _pullDownEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._pullDownEnabled\r\n }\r\n if (this._$pullDown && this._strategy) {\r\n this._$pullDown.toggle(enabled);\r\n this._strategy.pullDownEnable(enabled);\r\n this._pullDownEnabled = enabled\r\n }\r\n },\r\n _reachBottomEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._reachBottomEnabled\r\n }\r\n if (this._$reachBottom && this._strategy) {\r\n this._$reachBottom.toggle(enabled);\r\n this._strategy.reachBottomEnable(enabled);\r\n this._reachBottomEnabled = enabled\r\n }\r\n },\r\n _pullDownHandler: function() {\r\n this._loadingIndicator(false);\r\n this._pullDownLoading()\r\n },\r\n _loadingIndicator: function(value) {\r\n if (arguments.length < 1) {\r\n return this._loadingIndicatorEnabled\r\n }\r\n this._loadingIndicatorEnabled = value\r\n },\r\n _pullDownLoading: function() {\r\n this.startLoading();\r\n this._pullDownAction()\r\n },\r\n _reachBottomHandler: function() {\r\n this._loadingIndicator(false);\r\n this._reachBottomLoading()\r\n },\r\n _reachBottomLoading: function() {\r\n this.startLoading();\r\n this._reachBottomAction()\r\n },\r\n _releaseHandler: function() {\r\n this.finishLoading();\r\n this._loadingIndicator(true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onPullDown\":\r\n case \"onReachBottom\":\r\n this._createActions();\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"refreshStrategy\":\r\n this._invalidate();\r\n break;\r\n case \"reachBottomText\":\r\n this._updateReachBottomText();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n isEmpty: function() {\r\n return !(0, _renderer.default)(this.content()).children().length\r\n },\r\n content: function() {\r\n return (0, _element.getPublicElement)(this._$content.children().eq(1))\r\n },\r\n release: function(preventReachBottom) {\r\n if (void 0 !== preventReachBottom) {\r\n this.toggleLoading(!preventReachBottom)\r\n }\r\n return this._strategy.release()\r\n },\r\n toggleLoading: function(showOrHide) {\r\n this._reachBottomEnable(showOrHide)\r\n },\r\n isFull: function() {\r\n return (0, _renderer.default)(this.content()).height() > this._$container.height()\r\n },\r\n refresh: function() {\r\n if (!this.hasActionSubscription(\"onPullDown\")) {\r\n return\r\n }\r\n this._strategy.pendingRelease();\r\n this._pullDownLoading()\r\n },\r\n startLoading: function() {\r\n if (this._loadingIndicator() && this.$element().is(\":visible\")) {\r\n this._loadPanel.show()\r\n }\r\n this._lock()\r\n },\r\n finishLoading: function() {\r\n this._loadPanel.hide();\r\n this._unlock()\r\n },\r\n _dispose: function() {\r\n this._strategy.dispose();\r\n this.callBase();\r\n if (this._loadPanel) {\r\n this._loadPanel.$element().remove()\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxScrollView\", ScrollView);\r\nvar _default = ScrollView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.native.pull_down.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _uiScrollable = _interopRequireDefault(require(\"./ui.scrollable.native\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar PULLDOWN_RELEASE_TIME = 400;\r\nvar PullDownNativeScrollViewStrategy = _uiScrollable.default.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._$refreshingText = scrollView._$refreshingText;\r\n this._$scrollViewContent = (0, _renderer.default)(scrollView.content());\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = (0, _callbacks.default)();\r\n this.releaseCallbacks = (0, _callbacks.default)();\r\n this.reachBottomCallbacks = (0, _callbacks.default)()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $image = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"
\")).$element();\r\n var $text = this._$pullDownText = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = (0, _renderer.default)(\"
\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = (0, _renderer.default)(\"
\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = (0, _renderer.default)(\"
\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _pushBackFromBoundary: function() {\r\n if (!this._isLocked() && !this._component.isEmpty()) {\r\n this.callBase()\r\n }\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n (0, _iterator.each)(pullDownTextItems, function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n })\r\n },\r\n update: function() {\r\n this.callBase();\r\n this._setTopPocketOffset()\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.height();\r\n this._bottomPocketSize = this._$bottomPocket.height();\r\n if (_browser.default.msie) {\r\n this._scrollOffset = Math.round(100 * (this._$container.height() - this._$content.height())) / 100\r\n } else {\r\n this._scrollOffset = this._$container.height() - this._$content.height()\r\n }\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n _setTopPocketOffset: function() {\r\n this._$topPocket.css({\r\n top: -this._topPocketSize\r\n })\r\n },\r\n handleEnd: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_READY) {\r\n this._setPullDownOffset(this._topPocketSize);\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n this._pullDownRefreshTimeout = setTimeout(function() {\r\n this._pullDownRefreshing()\r\n }.bind(this), 400)\r\n }\r\n },\r\n _setPullDownOffset: function(offset) {\r\n (0, _translator.move)(this._$topPocket, {\r\n top: offset\r\n });\r\n (0, _translator.move)(this._$scrollViewContent, {\r\n top: offset\r\n })\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = (this._location || 0) - currentLocation;\r\n this._location = currentLocation;\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else {\r\n if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n }\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= this._topPocketSize\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && this._location - (this._scrollOffset + this._bottomPocketSize) <= .5\r\n },\r\n _reachBottom: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n pullDownEnable: function(enabled) {\r\n if (enabled) {\r\n this._updateDimensions();\r\n this._setTopPocketOffset()\r\n }\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new _deferred.Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n if (this._state === STATE_LOADING) {\r\n this._state = STATE_RELEASED\r\n }\r\n this._releaseTimeout = setTimeout(function() {\r\n this._setPullDownOffset(0);\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), PULLDOWN_RELEASE_TIME);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nvar _default = PullDownNativeScrollViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.native.swipe_down.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiScrollable = _interopRequireDefault(require(\"./ui.scrollable.native\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-refreshing\";\r\nvar PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_TOUCHED = 4;\r\nvar STATE_PULLED = 5;\r\nvar SwipeDownNativeScrollViewStrategy = _uiScrollable.default.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$scrollViewContent = scrollView.content();\r\n this._initCallbacks();\r\n this._location = 0\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = (0, _callbacks.default)();\r\n this.releaseCallbacks = (0, _callbacks.default)();\r\n this.reachBottomCallbacks = (0, _callbacks.default)()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $loadContainer = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"
\")).$element();\r\n this._$icon = (0, _renderer.default)(\"
\").addClass(PULLDOWN_ICON_CLASS);\r\n this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._releasePullDown();\r\n this._updateDimensions()\r\n },\r\n _releasePullDown: function() {\r\n this._$pullDown.css({\r\n opacity: 0\r\n })\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.height();\r\n this._bottomPocketSize = this._$bottomPocket.height();\r\n this._scrollOffset = this._$container.height() - this._$content.height()\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n handleInit: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_RELEASED && 0 === this._location) {\r\n this._startClientY = (0, _index.eventData)(e.originalEvent).y;\r\n this._state = STATE_TOUCHED\r\n }\r\n },\r\n handleMove: function(e) {\r\n this.callBase(e);\r\n this._deltaY = (0, _index.eventData)(e.originalEvent).y - this._startClientY;\r\n if (this._state === STATE_TOUCHED) {\r\n if (this._pullDownEnabled && this._deltaY > 0) {\r\n this._state = STATE_PULLED\r\n } else {\r\n this._complete()\r\n }\r\n }\r\n if (this._state === STATE_PULLED) {\r\n e.preventDefault();\r\n this._movePullDown()\r\n }\r\n },\r\n _movePullDown: function() {\r\n var pullDownHeight = this._getPullDownHeight();\r\n var top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());\r\n var angle = 180 * top / pullDownHeight / 3;\r\n this._$pullDown.css({\r\n opacity: 1\r\n }).toggleClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS, top < pullDownHeight);\r\n (0, _translator.move)(this._$pullDown, {\r\n top: top\r\n });\r\n this._$icon.css({\r\n transform: \"rotate(\" + angle + \"deg)\"\r\n })\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._state === STATE_PULLED && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()\r\n },\r\n _getPullDownHeight: function() {\r\n return Math.round(.05 * this._$element.outerHeight())\r\n },\r\n _getPullDownStartPosition: function() {\r\n return -Math.round(1.5 * this._$pullDown.outerHeight())\r\n },\r\n handleEnd: function() {\r\n if (this._isPullDown()) {\r\n this._pullDownRefreshing()\r\n }\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_TOUCHED || this._state === STATE_PULLED) {\r\n this._releaseState()\r\n }\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = this._location - currentLocation;\r\n this._location = currentLocation;\r\n if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && this._location <= this._scrollOffset + this._bottomPocketSize\r\n },\r\n _reachBottom: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n this._state = STATE_REFRESHING;\r\n this._pullDownRefreshHandler()\r\n },\r\n _pullDownRefreshHandler: function() {\r\n this._refreshPullDown();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _refreshPullDown: function() {\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n (0, _translator.move)(this._$pullDown, {\r\n top: this._getPullDownHeight()\r\n })\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._$topPocket.toggle(enabled);\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new _deferred.Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n this._releaseTimeout = setTimeout(function() {\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), 800);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nvar _default = SwipeDownNativeScrollViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scroll_view.simulated.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiScrollable = require(\"./ui.scrollable.simulated\");\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar math = Math;\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar ScrollViewScroller = _uiScrollable.Scroller.inherit({\r\n ctor: function() {\r\n this._topPocketSize = 0;\r\n this.callBase.apply(this, arguments);\r\n this._initCallbacks();\r\n this._releaseState()\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n (0, _iterator.each)(pullDownTextItems, function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n })\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = (0, _callbacks.default)();\r\n this.releaseCallbacks = (0, _callbacks.default)();\r\n this.reachBottomCallbacks = (0, _callbacks.default)()\r\n },\r\n _updateBounds: function() {\r\n var considerPockets = \"horizontal\" !== this._direction;\r\n this._topPocketSize = considerPockets ? Math.round(this._$topPocket[this._dimension]()) : 0;\r\n this._bottomPocketSize = considerPockets ? Math.round(this._$bottomPocket[this._dimension]()) : 0;\r\n this.callBase();\r\n this._bottomBound = this._minOffset + this._bottomPocketSize\r\n },\r\n _updateScrollbar: function() {\r\n this._scrollbar.option({\r\n containerSize: this._containerSize(),\r\n contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n },\r\n _moveContent: function() {\r\n this.callBase();\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else {\r\n if (this._isReachBottom()) {\r\n this._reachBottomReady()\r\n } else {\r\n if (this._state !== STATE_RELEASED) {\r\n this._stateReleased()\r\n }\r\n }\r\n }\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._topPocketSize + this._location)\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= 0\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && this._location - this._bottomBound <= .5\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds() && this._state === STATE_READY) {\r\n this._pullDownRefreshing()\r\n } else {\r\n if (this._inBounds() && this._state === STATE_LOADING) {\r\n this._reachBottomLoading()\r\n } else {\r\n this.callBase()\r\n }\r\n }\r\n },\r\n _reachBottomReady: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return -this._topPocketSize\r\n },\r\n _getMinOffset: function() {\r\n return math.min(this.callBase(), -this._topPocketSize)\r\n },\r\n _reachBottomLoading: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._maxOffset = 0;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._releaseState();\r\n this._updateBounds();\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this.releaseCallbacks.fire()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _releaseHandler: function() {\r\n if (this._state === STATE_RELEASED) {\r\n this._moveToBounds()\r\n }\r\n this._update();\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this._releaseTask = (0, _common.executeAsync)(this._release.bind(this));\r\n return this._releaseTask.promise\r\n },\r\n _release: function() {\r\n this._stateReleased();\r\n this._scrollComplete()\r\n },\r\n _reachBottomEnablingHandler: function(enabled) {\r\n if (this._reachBottomEnabled === enabled) {\r\n return\r\n }\r\n this._reachBottomEnabled = enabled;\r\n this._updateBounds()\r\n },\r\n _pullDownEnablingHandler: function(enabled) {\r\n if (this._pullDownEnabled === enabled) {\r\n return\r\n }\r\n this._pullDownEnabled = enabled;\r\n this._considerTopPocketChange();\r\n this._updateHandler()\r\n },\r\n _considerTopPocketChange: function() {\r\n this._location -= this._$topPocket.height() || -this._topPocketSize;\r\n this._maxOffset = 0;\r\n this._move()\r\n },\r\n _pendingReleaseHandler: function() {\r\n this._state = STATE_READY\r\n },\r\n dispose: function() {\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this.callBase()\r\n }\r\n});\r\nvar SimulatedScrollViewStrategy = _uiScrollable.SimulatedStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = (0, _callbacks.default)();\r\n this.releaseCallbacks = (0, _callbacks.default)();\r\n this.reachBottomCallbacks = (0, _callbacks.default)()\r\n },\r\n render: function() {\r\n this._renderPullDown();\r\n this.callBase()\r\n },\r\n _renderPullDown: function() {\r\n var $image = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new _load_indicator.default((0, _renderer.default)(\"
\")).$element();\r\n var $text = this._$pullDownText = (0, _renderer.default)(\"
\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = (0, _renderer.default)(\"
\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = (0, _renderer.default)(\"
\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = (0, _renderer.default)(\"
\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._eventHandler(\"pullDownEnabling\", enabled)\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._eventHandler(\"reachBottomEnabling\", enabled)\r\n },\r\n _createScroller: function(direction) {\r\n var that = this;\r\n var scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));\r\n scroller.pullDownCallbacks.add(function() {\r\n that.pullDownCallbacks.fire()\r\n });\r\n scroller.releaseCallbacks.add(function() {\r\n that.releaseCallbacks.fire()\r\n });\r\n scroller.reachBottomCallbacks.add(function() {\r\n that.reachBottomCallbacks.fire()\r\n })\r\n },\r\n _scrollerOptions: function(direction) {\r\n return (0, _extend.extend)(this.callBase(direction), {\r\n $topPocket: this._$topPocket,\r\n $bottomPocket: this._$bottomPocket,\r\n $pullDown: this._$pullDown,\r\n $pullDownText: this._$pullDownText,\r\n $pullingDownText: this._$pullingDownText,\r\n $pulledDownText: this._$pulledDownText,\r\n $refreshingText: this._$refreshingText\r\n })\r\n },\r\n pendingRelease: function() {\r\n this._eventHandler(\"pendingRelease\")\r\n },\r\n release: function() {\r\n return this._eventHandler(\"release\").done(this._updateAction)\r\n },\r\n location: function location() {\r\n var location = this.callBase();\r\n location.top += this._$topPocket.height();\r\n return location\r\n },\r\n dispose: function() {\r\n (0, _iterator.each)(this._scrollers, function() {\r\n this.dispose()\r\n });\r\n this.callBase()\r\n }\r\n});\r\nvar _default = SimulatedScrollViewStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./scroll_view/ui.scroll_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/slider/ui.slider.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _click = require(\"../../events/click\");\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _swipeable = _interopRequireDefault(require(\"../../events/gesture/swipeable\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _themes = require(\"../themes\");\r\nvar _track_bar = _interopRequireDefault(require(\"../track_bar\"));\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.slider_handle\"));\r\nvar _math = require(\"../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SLIDER_CLASS = \"dx-slider\";\r\nvar SLIDER_WRAPPER_CLASS = \"dx-slider-wrapper\";\r\nvar SLIDER_HANDLE_SELECTOR = \".dx-slider-handle\";\r\nvar SLIDER_BAR_CLASS = \"dx-slider-bar\";\r\nvar SLIDER_RANGE_CLASS = \"dx-slider-range\";\r\nvar SLIDER_RANGE_VISIBLE_CLASS = \"dx-slider-range-visible\";\r\nvar SLIDER_LABEL_CLASS = \"dx-slider-label\";\r\nvar SLIDER_LABEL_POSITION_CLASS_PREFIX = \"dx-slider-label-position-\";\r\nvar SLIDER_TOOLTIP_POSITION_CLASS_PREFIX = \"dx-slider-tooltip-position-\";\r\nvar INVALID_MESSAGE_VISIBLE_CLASS = \"dx-invalid-message-visible\";\r\nvar SLIDER_VALIDATION_NAMESPACE = \"Validation\";\r\nvar Slider = _track_bar.default.inherit({\r\n _activeStateUnit: SLIDER_HANDLE_SELECTOR,\r\n _supportedKeys: function() {\r\n var _this = this;\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var roundedValue = function(offset, isLeftDirection) {\r\n offset = _this._valueStep(offset);\r\n var step = _this.option(\"step\");\r\n var value = _this.option(\"value\");\r\n var currentPosition = value - _this.option(\"min\");\r\n var remainder = (0, _math.getRemainderByDivision)(currentPosition, step, _this._getValueExponentLength());\r\n var result = isLeftDirection ? value - offset + (remainder ? step - remainder : 0) : value + offset - remainder;\r\n var min = _this.option(\"min\");\r\n var max = _this.option(\"max\");\r\n if (result < min) {\r\n result = min\r\n } else {\r\n if (result > max) {\r\n result = max\r\n }\r\n }\r\n return _this._roundToExponentLength(result)\r\n };\r\n var moveHandleRight = function(offset) {\r\n _this.option(\"value\", roundedValue(offset, isRTL))\r\n };\r\n var moveHandleLeft = function(offset) {\r\n _this.option(\"value\", roundedValue(offset, !isRTL))\r\n };\r\n return (0, _extend.extend)(this.callBase(), {\r\n leftArrow: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleLeft(this.option(\"step\"))\r\n },\r\n rightArrow: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleRight(this.option(\"step\"))\r\n },\r\n pageUp: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleRight(this.option(\"step\") * this.option(\"keyStep\"))\r\n },\r\n pageDown: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleLeft(this.option(\"step\") * this.option(\"keyStep\"))\r\n },\r\n home: function(e) {\r\n this._processKeyboardEvent(e);\r\n var min = this.option(\"min\");\r\n this.option(\"value\", min)\r\n },\r\n end: function(e) {\r\n this._processKeyboardEvent(e);\r\n var max = this.option(\"max\");\r\n this.option(\"value\", max)\r\n }\r\n })\r\n },\r\n _processKeyboardEvent: function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e)\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n value: 50,\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n step: 1,\r\n showRange: true,\r\n tooltip: {\r\n enabled: false,\r\n format: function(value) {\r\n return value\r\n },\r\n position: \"top\",\r\n showMode: \"onHover\"\r\n },\r\n label: {\r\n visible: false,\r\n position: \"bottom\",\r\n format: function(value) {\r\n return value\r\n }\r\n },\r\n keyStep: 1,\r\n useInkRipple: false,\r\n validationMessageOffset: (0, _themes.isMaterial)() ? {\r\n h: 18,\r\n v: 0\r\n } : {\r\n h: 7,\r\n v: 4\r\n },\r\n focusStateEnabled: true\r\n })\r\n },\r\n _toggleValidationMessage: function(visible) {\r\n if (!this.option(\"isValid\")) {\r\n this.$element().toggleClass(INVALID_MESSAGE_VISIBLE_CLASS, visible)\r\n }\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n var themeName = (0, _themes.current)();\r\n return (0, _themes.isMaterial)(themeName)\r\n },\r\n options: {\r\n useInkRipple: true\r\n }\r\n }])\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(SLIDER_CLASS);\r\n this._renderSubmitElement();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.callBase();\r\n this._renderLabels();\r\n this._renderStartHandler();\r\n this._renderAriaMinAndMax()\r\n },\r\n _attachFocusEvents: function() {\r\n this.callBase();\r\n var namespace = this.NAME + SLIDER_VALIDATION_NAMESPACE;\r\n var focusInEvent = (0, _index.addNamespace)(\"focusin\", namespace);\r\n var focusOutEvent = (0, _index.addNamespace)(\"focusout\", namespace);\r\n var $focusTarget = this._focusTarget();\r\n _events_engine.default.on($focusTarget, focusInEvent, this._toggleValidationMessage.bind(this, true));\r\n _events_engine.default.on($focusTarget, focusOutEvent, this._toggleValidationMessage.bind(this, false))\r\n },\r\n _detachFocusEvents: function() {\r\n this.callBase();\r\n var $focusTarget = this._focusTarget();\r\n this._toggleValidationMessage(false);\r\n _events_engine.default.off($focusTarget, this.NAME + SLIDER_VALIDATION_NAMESPACE)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._repaintHandle()\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = (0, _renderer.default)(\"\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = (0, _utils.render)({\r\n waveSizeCoefficient: .7,\r\n isCentered: true,\r\n wavesNumber: 2,\r\n useHoldAnimation: false\r\n })\r\n },\r\n _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: element,\r\n event: dxEvent,\r\n wave: waveIndex\r\n };\r\n if (doRender) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _visibilityChanged: function() {\r\n this.repaint()\r\n },\r\n _renderWrapper: function() {\r\n this.callBase();\r\n this._$wrapper.addClass(SLIDER_WRAPPER_CLASS);\r\n this._createComponent(this._$wrapper, _swipeable.default, {\r\n elastic: false,\r\n immediate: true,\r\n onStart: this._swipeStartHandler.bind(this),\r\n onUpdated: this._swipeUpdateHandler.bind(this),\r\n onEnd: this._swipeEndHandler.bind(this),\r\n itemSizeFunc: this._itemWidthFunc.bind(this)\r\n })\r\n },\r\n _renderContainer: function() {\r\n this.callBase();\r\n this._$bar.addClass(SLIDER_BAR_CLASS)\r\n },\r\n _renderRange: function() {\r\n this.callBase();\r\n this._$range.addClass(SLIDER_RANGE_CLASS);\r\n this._renderHandle();\r\n this._renderRangeVisibility()\r\n },\r\n _renderRangeVisibility: function() {\r\n this._$range.toggleClass(SLIDER_RANGE_VISIBLE_CLASS, Boolean(this.option(\"showRange\")))\r\n },\r\n _renderHandle: function() {\r\n this._$handle = this._renderHandleImpl(this.option(\"value\"), this._$handle)\r\n },\r\n _renderHandleImpl: function(value, $element) {\r\n var $handle = $element || (0, _renderer.default)(\"
\").appendTo(this._$range);\r\n var format = this.option(\"tooltip.format\");\r\n var tooltipEnabled = this.option(\"tooltip.enabled\");\r\n var tooltipPosition = this.option(\"tooltip.position\");\r\n this.$element().toggleClass(SLIDER_TOOLTIP_POSITION_CLASS_PREFIX + \"bottom\", tooltipEnabled && \"bottom\" === tooltipPosition).toggleClass(SLIDER_TOOLTIP_POSITION_CLASS_PREFIX + \"top\", tooltipEnabled && \"top\" === tooltipPosition);\r\n this._createComponent($handle, _ui.default, {\r\n value: value,\r\n tooltipEnabled: tooltipEnabled,\r\n tooltipPosition: tooltipPosition,\r\n tooltipFormat: format,\r\n tooltipShowMode: this.option(\"tooltip.showMode\"),\r\n tooltipFitIn: this.$element()\r\n });\r\n return $handle\r\n },\r\n _renderAriaMinAndMax: function() {\r\n this.setAria({\r\n valuemin: this.option(\"min\"),\r\n valuemax: this.option(\"max\")\r\n }, this._$handle)\r\n },\r\n _hoverStartHandler: function(e) {\r\n _ui.default.getInstance((0, _renderer.default)(e.currentTarget)).updateTooltip()\r\n },\r\n _toggleActiveState: function($element, value) {\r\n this.callBase($element, value);\r\n if (value) {\r\n _ui.default.getInstance($element).updateTooltip()\r\n }\r\n this._renderInkWave($element, null, !!value, 1)\r\n },\r\n _toggleFocusClass: function(isFocused, $element) {\r\n this.callBase(isFocused, $element);\r\n if (this._disposed) {\r\n return\r\n }\r\n var $focusTarget = (0, _renderer.default)($element || this._focusTarget());\r\n this._renderInkWave($focusTarget, null, isFocused, 0)\r\n },\r\n _renderLabels: function() {\r\n this.$element().removeClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + \"bottom\").removeClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + \"top\");\r\n if (this.option(\"label.visible\")) {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var position = this.option(\"label.position\");\r\n var labelFormat = this.option(\"label.format\");\r\n if (!this._$minLabel) {\r\n this._$minLabel = (0, _renderer.default)(\"
\").addClass(SLIDER_LABEL_CLASS).appendTo(this._$wrapper)\r\n }\r\n this._$minLabel.html(_number.default.format(min, labelFormat));\r\n if (!this._$maxLabel) {\r\n this._$maxLabel = (0, _renderer.default)(\"
\").addClass(SLIDER_LABEL_CLASS).appendTo(this._$wrapper)\r\n }\r\n this._$maxLabel.html(_number.default.format(max, labelFormat));\r\n this.$element().addClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + position)\r\n } else {\r\n if (this._$minLabel) {\r\n this._$minLabel.remove();\r\n delete this._$minLabel\r\n }\r\n if (this._$maxLabel) {\r\n this._$maxLabel.remove();\r\n delete this._$maxLabel\r\n }\r\n }\r\n },\r\n _renderStartHandler: function() {\r\n var _this2 = this;\r\n var pointerDownEventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n var clickEventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n var startAction = this._createAction(this._startHandler.bind(this));\r\n var $element = this.$element();\r\n _events_engine.default.off($element, pointerDownEventName);\r\n _events_engine.default.on($element, pointerDownEventName, function(e) {\r\n if ((0, _index.isMouseEvent)(e)) {\r\n startAction({\r\n event: e\r\n })\r\n }\r\n });\r\n _events_engine.default.off($element, clickEventName);\r\n _events_engine.default.on($element, clickEventName, function(e) {\r\n var $handle = _this2._activeHandle();\r\n if ($handle) {\r\n _events_engine.default.trigger($handle, \"focusin\");\r\n _events_engine.default.trigger($handle, \"focus\")\r\n }\r\n startAction({\r\n event: e\r\n })\r\n })\r\n },\r\n _itemWidthFunc: function() {\r\n return this._itemWidthRatio\r\n },\r\n _swipeStartHandler: function(e) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if ((0, _index.isTouchEvent)(e.event)) {\r\n this._createAction(this._startHandler.bind(this))({\r\n event: e.event\r\n })\r\n }\r\n this._feedbackDeferred = new _deferred.Deferred;\r\n (0, _emitter.lock)(this._feedbackDeferred);\r\n this._toggleActiveState(this._activeHandle(), this.option(\"activeStateEnabled\"));\r\n this._startOffset = this._currentRatio;\r\n var startOffset = this._startOffset * this._swipePixelRatio();\r\n var endOffset = (1 - this._startOffset) * this._swipePixelRatio();\r\n e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset;\r\n e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset;\r\n this._itemWidthRatio = this.$element().width() / this._swipePixelRatio();\r\n this._needPreventAnimation = true\r\n },\r\n _swipeEndHandler: function(e) {\r\n this._feedbackDeferred.resolve();\r\n this._toggleActiveState(this._activeHandle(), false);\r\n var offsetDirection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n delete this._needPreventAnimation;\r\n this._saveValueChangeEvent(e.event);\r\n this._changeValueOnSwipe(this._startOffset + offsetDirection * e.event.targetOffset / this._swipePixelRatio());\r\n delete this._startOffset;\r\n this._renderValue()\r\n },\r\n _activeHandle: function() {\r\n return this._$handle\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n this._saveValueChangeEvent(e.event);\r\n this._updateHandlePosition(e)\r\n },\r\n _updateHandlePosition: function(e) {\r\n var offsetDirection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n var newRatio = Math.min(this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio(), 1);\r\n this._$range.width(100 * newRatio + \"%\");\r\n _ui.default.getInstance(this._activeHandle()).fitTooltipPosition;\r\n this._changeValueOnSwipe(newRatio)\r\n },\r\n _swipePixelRatio: function() {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var step = this._valueStep(this.option(\"step\"));\r\n return (max - min) / step\r\n },\r\n _valueStep: function(step) {\r\n if (!step || isNaN(step)) {\r\n step = 1\r\n }\r\n return step\r\n },\r\n _getValueExponentLength: function() {\r\n var _this$option = this.option(),\r\n step = _this$option.step,\r\n min = _this$option.min;\r\n return Math.max((0, _math.getExponentLength)(step), (0, _math.getExponentLength)(min))\r\n },\r\n _roundToExponentLength: function(value) {\r\n var valueExponentLength = this._getValueExponentLength();\r\n return (0, _math.roundFloatPart)(value, valueExponentLength)\r\n },\r\n _changeValueOnSwipe: function(ratio) {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var step = this._valueStep(this.option(\"step\"));\r\n var newChange = ratio * (max - min);\r\n var newValue = min + newChange;\r\n if (step < 0) {\r\n return\r\n }\r\n if (newValue === max || newValue === min) {\r\n this._setValueOnSwipe(newValue)\r\n } else {\r\n var stepCount = Math.round((newValue - min) / step);\r\n newValue = this._roundToExponentLength(stepCount * step + min);\r\n this._setValueOnSwipe(Math.max(Math.min(newValue, max), min))\r\n }\r\n },\r\n _setValueOnSwipe: function(value) {\r\n this.option(\"value\", value);\r\n this._saveValueChangeEvent(void 0)\r\n },\r\n _startHandler: function(args) {\r\n var e = args.event;\r\n this._currentRatio = ((0, _index.eventData)(e).x - this._$bar.offset().left) / this._$bar.width();\r\n if (this.option(\"rtlEnabled\")) {\r\n this._currentRatio = 1 - this._currentRatio\r\n }\r\n this._saveValueChangeEvent(e);\r\n this._changeValueOnSwipe(this._currentRatio)\r\n },\r\n _renderValue: function() {\r\n this.callBase();\r\n var value = this.option(\"value\");\r\n this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value));\r\n _ui.default.getInstance(this._activeHandle()).option(\"value\", value)\r\n },\r\n _setRangeStyles: function(options) {\r\n options && this._$range.css(options)\r\n },\r\n _callHandlerMethod: function(name, args) {\r\n _ui.default.getInstance(this._$handle)[name](args)\r\n },\r\n _repaintHandle: function() {\r\n this._callHandlerMethod(\"repaint\")\r\n },\r\n _fitTooltip: function() {\r\n this._callHandlerMethod(\"fitTooltipPosition\")\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"visible\":\r\n this.callBase(args);\r\n this._renderHandle();\r\n this._repaintHandle();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._renderValue();\r\n this.callBase(args);\r\n this._renderLabels();\r\n this._renderAriaMinAndMax();\r\n this._fitTooltip();\r\n break;\r\n case \"step\":\r\n this._renderValue();\r\n break;\r\n case \"keyStep\":\r\n break;\r\n case \"showRange\":\r\n this._renderRangeVisibility();\r\n break;\r\n case \"tooltip\":\r\n this._renderHandle();\r\n break;\r\n case \"label\":\r\n this._renderLabels();\r\n break;\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _refresh: function() {\r\n this._toggleRTLDirection(this.option(\"rtlEnabled\"));\r\n this._renderDimensions();\r\n this._renderValue();\r\n this._renderHandle();\r\n this._repaintHandle()\r\n },\r\n _clean: function() {\r\n delete this._inkRipple;\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxSlider\", Slider);\r\nvar _default = Slider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/slide_out.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _element = require(\"../core/element\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _uiCollection_widgetEditStrategy = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit.strategy.plain\"));\r\nvar _slide_out_view = _interopRequireDefault(require(\"./slide_out_view\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\nvar _list = _interopRequireDefault(require(\"./list\"));\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\nvar _empty_template = require(\"../core/templates/empty_template\");\r\nvar _grouped_data_converter_mixin = _interopRequireDefault(require(\"./shared/grouped_data_converter_mixin\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SLIDEOUT_CLASS = \"dx-slideout\";\r\nvar SLIDEOUT_ITEM_CONTAINER_CLASS = \"dx-slideout-item-container\";\r\nvar SLIDEOUT_MENU = \"dx-slideout-menu\";\r\nvar SLIDEOUT_ITEM_CLASS = \"dx-slideout-item\";\r\nvar SLIDEOUT_ITEM_DATA_KEY = \"dxSlideoutItemData\";\r\nvar SlideOut = _uiCollection_widget.default.inherit({\r\n ctor: function(element, options) {\r\n this.callBase(element, options);\r\n this._logDeprecatedComponentWarning(\"20.1\", \"dxDrawer\")\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n activeStateEnabled: false,\r\n menuItemTemplate: \"menuItem\",\r\n swipeEnabled: true,\r\n menuVisible: false,\r\n menuPosition: \"normal\",\r\n menuGrouped: false,\r\n menuGroupTemplate: \"menuGroup\",\r\n onMenuItemRendered: null,\r\n onMenuGroupRendered: null,\r\n contentTemplate: \"content\",\r\n selectionMode: \"single\",\r\n selectedIndex: 0,\r\n selectionRequired: true\r\n })\r\n },\r\n _itemClass: function() {\r\n return SLIDEOUT_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return SLIDEOUT_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return (0, _renderer.default)(this._slideOutView.content())\r\n },\r\n _init: function() {\r\n this._selectedItemContentRendered = false;\r\n this.callBase();\r\n this.$element().addClass(SLIDEOUT_CLASS);\r\n this._initSlideOutView()\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n menuItem: new _child_default_template.ChildDefaultTemplate(\"item\"),\r\n menuGroup: new _child_default_template.ChildDefaultTemplate(\"group\"),\r\n content: new _empty_template.EmptyTemplate\r\n })\r\n },\r\n _initEditStrategy: function() {\r\n if (this.option(\"menuGrouped\")) {\r\n var strategy = _uiCollection_widgetEditStrategy.default.inherit({\r\n _getPlainItems: function() {\r\n return this.callBase().reduce(function(result, group) {\r\n result.push.apply(result, group.items);\r\n return result\r\n }, [])\r\n }\r\n });\r\n this._editStrategy = new strategy(this)\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _initSlideOutView: function() {\r\n this._slideOutView = this._createComponent(this.$element(), _slide_out_view.default, {\r\n integrationOptions: {},\r\n menuVisible: this.option(\"menuVisible\"),\r\n swipeEnabled: this.option(\"swipeEnabled\"),\r\n menuPosition: this.option(\"menuPosition\"),\r\n onOptionChanged: this._slideOutViewOptionChanged.bind(this)\r\n });\r\n this._itemContainer().addClass(SLIDEOUT_ITEM_CONTAINER_CLASS)\r\n },\r\n _slideOutViewOptionChanged: function(args) {\r\n if (\"menuVisible\" === args.name) {\r\n this.option(args.name, args.value)\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._renderList();\r\n this._renderContentTemplate();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this._slideOutView._renderShield();\r\n this.callBase()\r\n },\r\n _renderList: function() {\r\n var $list = this._list && this._list.$element() || (0, _renderer.default)(\"
\").addClass(SLIDEOUT_MENU).appendTo((0, _renderer.default)(this._slideOutView.menuContent()));\r\n this._renderItemClickAction();\r\n this._list = this._createComponent($list, _list.default, {\r\n itemTemplateProperty: \"menuTemplate\",\r\n selectionMode: this.option(\"selectionMode\"),\r\n selectionRequired: this.option(\"selectionRequired\"),\r\n indicateLoading: false,\r\n onItemClick: this._listItemClickHandler.bind(this),\r\n items: this.option(\"items\"),\r\n dataSource: this._dataSource,\r\n itemTemplate: this._getTemplateByOption(\"menuItemTemplate\"),\r\n grouped: this.option(\"menuGrouped\"),\r\n groupTemplate: this._getTemplateByOption(\"menuGroupTemplate\"),\r\n onItemRendered: this.option(\"onMenuItemRendered\"),\r\n onGroupRendered: this.option(\"onMenuGroupRendered\"),\r\n onContentReady: this._updateSlideOutView.bind(this)\r\n });\r\n this._list.option(\"selectedIndex\", this.option(\"selectedIndex\"))\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"menuGrouped\")\r\n },\r\n _updateSlideOutView: function() {\r\n this._slideOutView._dimensionChanged()\r\n },\r\n _renderItemClickAction: function() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n },\r\n _listItemClickHandler: function(e) {\r\n var selectedIndex = this._list.$element().find(\".dx-list-item\").index(e.itemElement);\r\n this.option(\"selectedIndex\", selectedIndex);\r\n this._itemClickAction(e)\r\n },\r\n _renderContentTemplate: function() {\r\n if ((0, _type.isDefined)(this._singleContent)) {\r\n return\r\n }\r\n var itemsLength = this._itemContainer().html().length;\r\n this._getTemplateByOption(\"contentTemplate\").render({\r\n container: (0, _element.getPublicElement)(this._itemContainer())\r\n });\r\n this._singleContent = this._itemContainer().html().length !== itemsLength\r\n },\r\n _itemClickHandler: _common.noop,\r\n _renderContentImpl: function() {\r\n if (this._singleContent) {\r\n return\r\n }\r\n var items = this.option(\"items\");\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (items.length && selectedIndex > -1) {\r\n this._selectedItemContentRendered = true;\r\n var selectedItem = this._list.getItemByIndex(selectedIndex);\r\n this._renderItems([selectedItem])\r\n }\r\n },\r\n _renderItem: function(index, item) {\r\n this._itemContainer().find(\".\" + SLIDEOUT_ITEM_CLASS).remove();\r\n this.callBase(index, item)\r\n },\r\n _selectedItemElement: function() {\r\n return this._itemElements().eq(0)\r\n },\r\n _updateSelection: function() {\r\n this._prepareContent();\r\n this._renderContent()\r\n },\r\n _getListWidth: function() {\r\n return this._slideOutView._getMenuWidth()\r\n },\r\n _changeMenuOption: function(name, value) {\r\n this._list.option(name, value);\r\n this._updateSlideOutView()\r\n },\r\n _cleanItemContainer: function() {\r\n if (this._singleContent) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n beginUpdate: function() {\r\n this.callBase();\r\n this._list && this._list.beginUpdate()\r\n },\r\n endUpdate: function() {\r\n this._list && this._list.endUpdate();\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n switch (name) {\r\n case \"menuVisible\":\r\n case \"swipeEnabled\":\r\n case \"rtlEnabled\":\r\n case \"menuPosition\":\r\n this._slideOutView.option(name, value);\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._updateSlideOutView();\r\n break;\r\n case \"menuItemTemplate\":\r\n this._changeMenuOption(\"itemTemplate\", this._getTemplate(value));\r\n break;\r\n case \"items\":\r\n this._changeMenuOption(\"items\", this.option(\"items\"));\r\n if (!this._selectedItemContentRendered) {\r\n this._updateSelection()\r\n }\r\n break;\r\n case \"dataSource\":\r\n case \"selectedIndex\":\r\n case \"selectedItem\":\r\n this._changeMenuOption(name, value);\r\n this.callBase(args);\r\n break;\r\n case \"menuGrouped\":\r\n this._initEditStrategy();\r\n this._changeMenuOption(\"grouped\", value);\r\n break;\r\n case \"menuGroupTemplate\":\r\n this._changeMenuOption(\"groupTemplate\", this._getTemplate(value));\r\n break;\r\n case \"onMenuItemRendered\":\r\n this._changeMenuOption(\"onItemRendered\", value);\r\n break;\r\n case \"onMenuGroupRendered\":\r\n this._changeMenuOption(\"onGroupRendered\", value);\r\n break;\r\n case \"onItemClick\":\r\n this._renderItemClickAction();\r\n break;\r\n case \"contentTemplate\":\r\n this._singleContent = null;\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n showMenu: function() {\r\n return this._slideOutView.toggleMenuVisibility(true)\r\n },\r\n hideMenu: function() {\r\n return this._slideOutView.toggleMenuVisibility(false)\r\n },\r\n toggleMenuVisibility: function(showing) {\r\n return this._slideOutView.toggleMenuVisibility(showing)\r\n }\r\n}).include(_grouped_data_converter_mixin.default);\r\n(0, _component_registrator.default)(\"dxSlideOut\", SlideOut);\r\nvar _default = SlideOut;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/slide_out_view/ui.slide_out_view.animation.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.animation = void 0;\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ANIMATION_DURATION = 400;\r\nvar animation = {\r\n moveTo: function($element, position, completeAction) {\r\n _fx.default.animate($element, {\r\n type: \"slide\",\r\n to: {\r\n left: position\r\n },\r\n duration: ANIMATION_DURATION,\r\n complete: completeAction\r\n })\r\n },\r\n complete: function($element) {\r\n _fx.default.stop($element, true)\r\n }\r\n};\r\nexports.animation = animation;\r\n","/**\r\n * DevExtreme (ui/speed_dial_action.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _speed_dial_action = _interopRequireDefault(require(\"./speed_dial_action/speed_dial_action\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _speed_dial_action.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/speed_dial_action/speed_dial_action.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _speed_dial_main_item = require(\"./speed_dial_main_item\");\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar getSwatchContainer = _swatch_container.default.getSwatchContainer;\r\nvar ready = _ready_callbacks.default.add;\r\nvar SpeedDialAction = function(_Widget) {\r\n _inheritsLoose(SpeedDialAction, _Widget);\r\n\r\n function SpeedDialAction() {\r\n return _Widget.apply(this, arguments) || this\r\n }\r\n var _proto = SpeedDialAction.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {\r\n icon: \"\",\r\n onClick: null,\r\n label: \"\",\r\n visible: true,\r\n index: 0,\r\n onContentReady: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 200,\r\n easing: \"cubic-bezier(0.4, 0, 0.2, 1)\",\r\n from: {\r\n scale: 0,\r\n opacity: 0\r\n },\r\n to: {\r\n scale: 1,\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 200,\r\n easing: \"cubic-bezier(0.4, 0, 0.2, 1)\",\r\n from: {\r\n scale: 1,\r\n opacity: 1\r\n },\r\n to: {\r\n scale: 0,\r\n opacity: 0\r\n }\r\n }\r\n },\r\n id: new _guid.default\r\n })\r\n };\r\n _proto._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"onClick\":\r\n case \"icon\":\r\n case \"label\":\r\n case \"visible\":\r\n case \"index\":\r\n case \"onInitializing\":\r\n (0, _speed_dial_main_item.initAction)(this);\r\n break;\r\n case \"animation\":\r\n case \"id\":\r\n break;\r\n default:\r\n _Widget.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n _proto._render = function() {\r\n var _this = this;\r\n this._toggleVisibility(false);\r\n if (!getSwatchContainer(this.$element())) {\r\n ready(function() {\r\n return (0, _speed_dial_main_item.initAction)(_this)\r\n })\r\n } else {\r\n (0, _speed_dial_main_item.initAction)(this)\r\n }\r\n };\r\n _proto._dispose = function() {\r\n (0, _speed_dial_main_item.disposeAction)(this._options.silent(\"id\"));\r\n _Widget.prototype._dispose.call(this)\r\n };\r\n return SpeedDialAction\r\n}(_ui.default);\r\n(0, _component_registrator.default)(\"dxSpeedDialAction\", SpeedDialAction);\r\nvar _default = SpeedDialAction;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/speed_dial_action/speed_dial_main_item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.initAction = initAction;\r\nexports.disposeAction = disposeAction;\r\nexports.repaint = repaint;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _config = _interopRequireDefault(require(\"../../core/config\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\nvar _speed_dial_item = _interopRequireDefault(require(\"./speed_dial_item\"));\r\nvar _themes = require(\"../themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar getSwatchContainer = _swatch_container.default.getSwatchContainer;\r\nvar FAB_MAIN_CLASS = \"dx-fa-button-main\";\r\nvar FAB_MAIN_CLASS_WITH_LABEL = \"dx-fa-button-with-label\";\r\nvar FAB_CLOSE_ICON_CLASS = \"dx-fa-button-icon-close\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar speedDialMainItem = null;\r\nvar modifyActionOptions = function(action) {\r\n return (0, _extend.extend)({}, action._options.silent(), {\r\n onInitialized: null,\r\n onDisposing: null\r\n })\r\n};\r\nvar SpeedDialMainItem = function(_SpeedDialItem) {\r\n _inheritsLoose(SpeedDialMainItem, _SpeedDialItem);\r\n\r\n function SpeedDialMainItem() {\r\n return _SpeedDialItem.apply(this, arguments) || this\r\n }\r\n var _proto = SpeedDialMainItem.prototype;\r\n _proto._getDefaultOptions = function() {\r\n var defaultOptions = {\r\n icon: \"add\",\r\n closeIcon: \"close\",\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 hint: \"\",\r\n label: \"\",\r\n direction: \"auto\",\r\n actions: [],\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n indent: 55,\r\n childIndent: 40,\r\n childOffset: 9,\r\n callOverlayRenderShading: true,\r\n closeOnOutsideClick: true\r\n };\r\n return (0, _extend.extend)(_SpeedDialItem.prototype._getDefaultOptions.call(this), (0, _extend.extend)(defaultOptions, (0, _config.default)().floatingActionButtonConfig, {\r\n shading: false\r\n }))\r\n };\r\n _proto._defaultOptionsRules = function() {\r\n return _SpeedDialItem.prototype._defaultOptionsRules.call(this).concat([{\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n indent: 72,\r\n childIndent: 56,\r\n childOffset: 8\r\n }\r\n }])\r\n };\r\n _proto._render = function() {\r\n this.$element().addClass(FAB_MAIN_CLASS);\r\n _SpeedDialItem.prototype._render.call(this);\r\n this._moveToContainer();\r\n this._renderCloseIcon();\r\n this._renderClick()\r\n };\r\n _proto._renderLabel = function() {\r\n _SpeedDialItem.prototype._renderLabel.call(this);\r\n this.$element().toggleClass(FAB_MAIN_CLASS_WITH_LABEL, !!this._$label)\r\n };\r\n _proto._renderCloseIcon = function() {\r\n this._$closeIcon = this._renderButtonIcon(this._$closeIcon, this._options.silent(\"closeIcon\"), FAB_CLOSE_ICON_CLASS);\r\n this._$closeIcon.addClass(INVISIBLE_STATE_CLASS)\r\n };\r\n _proto._renderClick = function() {\r\n this._clickAction = 1 === this._getVisibleActions().length ? this._getActionComponent()._createActionByOption(\"onClick\") : this._createAction(this._clickHandler.bind(this));\r\n this._setClickAction()\r\n };\r\n _proto._getVisibleActions = function(actions) {\r\n var currentActions = actions || this.option(\"actions\");\r\n return currentActions.filter(function(action) {\r\n return action.option(\"visible\")\r\n })\r\n };\r\n _proto._getCurrentOptions = function(actions) {\r\n var visibleActions = speedDialMainItem._getVisibleActions(actions);\r\n return 1 === visibleActions.length ? (0, _extend.extend)(visibleActions[0]._options.silent(), {\r\n position: this._getPosition()\r\n }) : (0, _extend.extend)(this._getDefaultOptions(), {\r\n visible: 0 !== visibleActions.length\r\n })\r\n };\r\n _proto._clickHandler = function() {\r\n var actions = this._actionItems.filter(function(action) {\r\n return action.option(\"actionVisible\")\r\n }).sort(function(action, nextAction) {\r\n return action.option(\"index\") - nextAction.option(\"index\")\r\n });\r\n if (1 === actions.length) {\r\n return\r\n }\r\n var lastActionIndex = actions.length - 1;\r\n for (var i = 0; i < actions.length; i++) {\r\n actions[i].option(\"animation\", this._getActionAnimation(actions[i], i, lastActionIndex));\r\n actions[i].option(\"position\", this._getActionPosition(actions, i));\r\n actions[i]._$wrapper.css(\"position\", this._$wrapper.css(\"position\"));\r\n actions[i].toggle()\r\n }\r\n if ((0, _config.default)().floatingActionButtonConfig.shading) {\r\n this._isShadingShown = !this.option(\"shading\");\r\n this.option(\"shading\", this._isShadingShown)\r\n }\r\n this._$icon.toggleClass(INVISIBLE_STATE_CLASS);\r\n this._$closeIcon.toggleClass(INVISIBLE_STATE_CLASS)\r\n };\r\n _proto._updateZIndexStackPosition = function() {\r\n _SpeedDialItem.prototype._updateZIndexStackPosition.call(this);\r\n var overlayStack = this._overlayStack();\r\n overlayStack.push(this)\r\n };\r\n _proto._renderActions = function() {\r\n var _this = this;\r\n var actions = this.option(\"actions\");\r\n var minActionButtonCount = 1;\r\n if (this._actionItems && this._actionItems.length) {\r\n this._actionItems.forEach(function(actionItem) {\r\n actionItem.dispose();\r\n actionItem.$element().remove()\r\n });\r\n this._actionItems = []\r\n }\r\n this._actionItems = [];\r\n if (actions.length === minActionButtonCount) {\r\n return\r\n }\r\n for (var i = 0; i < actions.length; i++) {\r\n var action = actions[i];\r\n var $actionElement = (0, _renderer.default)(\"
\").appendTo(getSwatchContainer(action.$element()));\r\n _events_engine.default.off($actionElement, \"click\");\r\n _events_engine.default.on($actionElement, \"click\", function() {\r\n _this._clickHandler()\r\n });\r\n action._options.silent(\"actionComponent\", action);\r\n action._options.silent(\"parentPosition\", this._getPosition());\r\n action._options.silent(\"actionVisible\", action._options.silent(\"visible\"));\r\n this._actionItems.push(this._createComponent($actionElement, _speed_dial_item.default, (0, _extend.extend)({}, modifyActionOptions(action), {\r\n visible: false\r\n })))\r\n }\r\n };\r\n _proto._getActionAnimation = function(action, index, lastActionIndex) {\r\n var actionAnimationDelay = 30;\r\n action._options.silent(\"animation.show.delay\", actionAnimationDelay * index);\r\n action._options.silent(\"animation.hide.delay\", actionAnimationDelay * (lastActionIndex - index));\r\n return action._options.silent(\"animation\")\r\n };\r\n _proto._getDirectionIndex = function(actions, direction) {\r\n var directionIndex = 1;\r\n if (\"auto\" === direction) {\r\n var contentHeight = this.$content().height();\r\n var actionsHeight = this.initialOption(\"indent\") + this.initialOption(\"childIndent\") * actions.length - contentHeight;\r\n var offsetTop = this.$content().offset().top;\r\n if (actionsHeight < offsetTop) {\r\n return -directionIndex\r\n } else {\r\n var offsetBottom = this._getContainer().height() - contentHeight - offsetTop;\r\n return offsetTop >= offsetBottom ? -directionIndex : directionIndex\r\n }\r\n }\r\n return \"down\" !== direction ? -directionIndex : directionIndex\r\n };\r\n _proto._getActionPosition = function(actions, index) {\r\n var action = actions[index];\r\n var actionOffsetXValue = this.initialOption(\"childOffset\");\r\n var actionOffsetX = action._options.silent(\"label\") && !this._$label ? this._isPositionLeft(this._getPosition()) ? actionOffsetXValue : -actionOffsetXValue : 0;\r\n var actionOffsetYValue = this.initialOption(\"indent\") + this.initialOption(\"childIndent\") * index;\r\n var actionOffsetY = this._getDirectionIndex(actions, this.option(\"direction\")) * actionOffsetYValue;\r\n var actionPositionAtMy = action._options.silent(\"label\") ? this._isPositionLeft(this._getPosition()) ? \"left\" : \"right\" : \"center\";\r\n return {\r\n of: this.$content(),\r\n at: actionPositionAtMy,\r\n my: actionPositionAtMy,\r\n offset: {\r\n x: actionOffsetX,\r\n y: actionOffsetY\r\n }\r\n }\r\n };\r\n _proto._outsideClickHandler = function(e) {\r\n if (this._isShadingShown) {\r\n var isShadingClick = (0, _renderer.default)(e.target)[0] === this._$wrapper[0];\r\n if (isShadingClick) {\r\n e.preventDefault();\r\n this._clickHandler()\r\n }\r\n }\r\n };\r\n _proto._setPosition = function() {\r\n if (this.option(\"visible\")) {\r\n this._hide();\r\n this._show()\r\n }\r\n };\r\n _proto._getPosition = function() {\r\n return this._getDefaultOptions().position\r\n };\r\n _proto._getInkRippleContainer = function() {\r\n return this.$content()\r\n };\r\n _proto._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"actions\":\r\n if (this._isVisible()) {\r\n this._renderIcon()\r\n }\r\n this._renderCloseIcon();\r\n this._renderClick();\r\n this._renderActions();\r\n break;\r\n case \"maxSpeedDialActionCount\":\r\n this._renderActions();\r\n break;\r\n case \"closeIcon\":\r\n this._renderCloseIcon();\r\n break;\r\n case \"position\":\r\n this._setPosition();\r\n break;\r\n case \"label\":\r\n if (this._isVisible()) {\r\n this._renderLabel()\r\n }\r\n this._setPosition();\r\n break;\r\n case \"icon\":\r\n if (this._isVisible()) {\r\n this._renderIcon()\r\n }\r\n break;\r\n default:\r\n _SpeedDialItem.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n return SpeedDialMainItem\r\n}(_speed_dial_item.default);\r\n\r\nfunction initAction(newAction) {\r\n newAction._options.silent(\"onInitializing\", null);\r\n var isActionExist = false;\r\n if (!speedDialMainItem) {\r\n var $fabMainElement = (0, _renderer.default)(\"
\").appendTo(getSwatchContainer(newAction.$element()));\r\n speedDialMainItem = newAction._createComponent($fabMainElement, SpeedDialMainItem, (0, _extend.extend)({}, modifyActionOptions(newAction), {\r\n actions: [newAction]\r\n }))\r\n } else {\r\n var savedActions = speedDialMainItem.option(\"actions\");\r\n savedActions.forEach(function(action) {\r\n if (action._options.silent(\"id\") === newAction._options.silent(\"id\")) {\r\n isActionExist = true;\r\n return newAction\r\n }\r\n });\r\n delete speedDialMainItem._options.silent(\"position\");\r\n if (!isActionExist) {\r\n if (speedDialMainItem._getVisibleActions(savedActions).length >= speedDialMainItem.option(\"maxSpeedDialActionCount\")) {\r\n newAction.dispose();\r\n _ui.default.log(\"W1014\");\r\n return\r\n }\r\n savedActions.push(newAction);\r\n speedDialMainItem.option((0, _extend.extend)(speedDialMainItem._getCurrentOptions(savedActions), {\r\n actions: savedActions\r\n }))\r\n } else {\r\n if (1 === savedActions.length) {\r\n speedDialMainItem.option((0, _extend.extend)({}, modifyActionOptions(savedActions[0]), {\r\n actions: savedActions,\r\n position: speedDialMainItem._getPosition()\r\n }))\r\n } else {\r\n speedDialMainItem.option((0, _extend.extend)(speedDialMainItem._getCurrentOptions(savedActions), {\r\n actions: savedActions\r\n }))\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction disposeAction(actionId) {\r\n if (!speedDialMainItem) {\r\n return\r\n }\r\n var savedActions = speedDialMainItem.option(\"actions\");\r\n var savedActionsCount = savedActions.length;\r\n savedActions = savedActions.filter(function(action) {\r\n return action._options.silent(\"id\") !== actionId\r\n });\r\n if (savedActionsCount === savedActions.length) {\r\n return\r\n }\r\n if (!savedActions.length) {\r\n speedDialMainItem.dispose();\r\n speedDialMainItem.$element().remove();\r\n speedDialMainItem = null\r\n } else {\r\n if (1 === savedActions.length) {\r\n speedDialMainItem.option((0, _extend.extend)({}, modifyActionOptions(savedActions[0]), {\r\n actions: savedActions\r\n }))\r\n } else {\r\n speedDialMainItem.option({\r\n actions: savedActions\r\n })\r\n }\r\n }\r\n}\r\n\r\nfunction repaint() {\r\n if (!speedDialMainItem) {\r\n return\r\n }\r\n var visibleActions = speedDialMainItem._getVisibleActions();\r\n var icon = 1 === visibleActions.length ? visibleActions[0].option(\"icon\") : speedDialMainItem._getDefaultOptions().icon;\r\n var label = 1 === visibleActions.length ? visibleActions[0].option(\"label\") : speedDialMainItem._getDefaultOptions().label;\r\n speedDialMainItem.option({\r\n actions: speedDialMainItem.option(\"actions\"),\r\n icon: icon,\r\n closeIcon: speedDialMainItem._getDefaultOptions().closeIcon,\r\n position: speedDialMainItem._getPosition(),\r\n label: label,\r\n maxSpeedDialActionCount: speedDialMainItem._getDefaultOptions().maxSpeedDialActionCount,\r\n direction: speedDialMainItem._getDefaultOptions().direction\r\n })\r\n}\r\n","/**\r\n * DevExtreme (ui/speed_dial_action/speed_dial_item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _click = require(\"../../events/click\");\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _overlay = _interopRequireDefault(require(\"../overlay\"));\r\nvar _utils = require(\"../widget/utils.ink_ripple\");\r\nvar _themes = require(\"../themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar FAB_CLASS = \"dx-fa-button\";\r\nvar FAB_ICON_CLASS = \"dx-fa-button-icon\";\r\nvar FAB_LABEL_CLASS = \"dx-fa-button-label\";\r\nvar FAB_LABEL_WRAPPER_CLASS = \"dx-fa-button-label-wrapper\";\r\nvar FAB_CONTENT_REVERSE_CLASS = \"dx-fa-button-content-reverse\";\r\nvar OVERLAY_CONTENT_SELECTOR = \".dx-overlay-content\";\r\nvar SpeedDialItem = function(_Overlay) {\r\n _inheritsLoose(SpeedDialItem, _Overlay);\r\n\r\n function SpeedDialItem() {\r\n return _Overlay.apply(this, arguments) || this\r\n }\r\n var _proto = SpeedDialItem.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return (0, _extend.extend)(_Overlay.prototype._getDefaultOptions.call(this), {\r\n shading: false,\r\n useInkRipple: false,\r\n callOverlayRenderShading: false,\r\n width: \"auto\",\r\n zIndex: 1500\r\n })\r\n };\r\n _proto._defaultOptionsRules = function() {\r\n return _Overlay.prototype._defaultOptionsRules.call(this).concat([{\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n useInkRipple: true\r\n }\r\n }])\r\n };\r\n _proto._render = function() {\r\n this.$element().addClass(FAB_CLASS);\r\n this._renderIcon();\r\n this._renderLabel();\r\n _Overlay.prototype._render.call(this);\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this._renderClick()\r\n };\r\n _proto._renderLabel = function() {\r\n !!this._$label && this._$label.remove();\r\n var labelText = this.option(\"label\");\r\n if (!labelText) {\r\n this._$label = null;\r\n return\r\n }\r\n var $element = (0, _renderer.default)(\"
\").addClass(FAB_LABEL_CLASS);\r\n var $wrapper = (0, _renderer.default)(\"
\").addClass(FAB_LABEL_WRAPPER_CLASS);\r\n this._$label = $wrapper.prependTo(this.$content()).append($element.text(labelText));\r\n this.$content().toggleClass(FAB_CONTENT_REVERSE_CLASS, this._isPositionLeft(this.option(\"parentPosition\")))\r\n };\r\n _proto._isPositionLeft = function(position) {\r\n var currentLocation = position ? position.at ? position.at.x ? position.at.x : position.at : \"string\" === typeof position ? position : \"\" : \"\";\r\n return \"left\" === currentLocation.split(\" \")[0]\r\n };\r\n _proto._renderButtonIcon = function($element, icon, iconClass) {\r\n !!$element && $element.remove();\r\n $element = (0, _renderer.default)(\"
\").addClass(iconClass);\r\n var $iconElement = (0, _icon.getImageContainer)(icon);\r\n $element.append($iconElement).appendTo(this.$content());\r\n return $element\r\n };\r\n _proto._renderIcon = function() {\r\n this._$icon = this._renderButtonIcon(this._$icon, this._options.silent(\"icon\"), FAB_ICON_CLASS)\r\n };\r\n _proto._renderWrapper = function() {\r\n if (this._options.silent(\"callOverlayRenderShading\")) {\r\n _Overlay.prototype._renderWrapper.call(this)\r\n }\r\n };\r\n _proto._getVisibleActions = function(actions) {\r\n var currentActions = actions || this.option(\"actions\") || [];\r\n return currentActions.filter(function(action) {\r\n return action.option(\"visible\")\r\n })\r\n };\r\n _proto._getActionComponent = function() {\r\n if (1 === this._getVisibleActions().length) {\r\n return this._getVisibleActions()[0]\r\n } else {\r\n return this.option(\"actionComponent\") || this.option(\"actions\")[0]\r\n }\r\n };\r\n _proto._initContentReadyAction = function() {\r\n this._contentReadyAction = this._getActionComponent()._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }, true)\r\n };\r\n _proto._fireContentReadyAction = function() {\r\n this._contentReadyAction({\r\n actionElement: this.$element()\r\n })\r\n };\r\n _proto._updateZIndexStackPosition = function() {\r\n var zIndex = this.option(\"zIndex\");\r\n this._$wrapper.css(\"zIndex\", zIndex);\r\n this._$content.css(\"zIndex\", zIndex)\r\n };\r\n _proto._fixWrapperPosition = function() {\r\n var $wrapper = this._$wrapper;\r\n var $container = this._getContainer();\r\n $wrapper.css(\"position\", this._isWindow($container) ? \"fixed\" : \"absolute\")\r\n };\r\n _proto._setClickAction = function() {\r\n var _this = this;\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n var overlayContent = this.$element().find(OVERLAY_CONTENT_SELECTOR);\r\n _events_engine.default.off(overlayContent, eventName);\r\n _events_engine.default.on(overlayContent, eventName, function(e) {\r\n var clickActionArgs = {\r\n event: e,\r\n actionElement: _this.element(),\r\n element: _this._getActionComponent().$element()\r\n };\r\n _this._clickAction(clickActionArgs)\r\n })\r\n };\r\n _proto._defaultActionArgs = function() {\r\n return {\r\n component: this._getActionComponent()\r\n }\r\n };\r\n _proto._renderClick = function() {\r\n this._clickAction = this._getActionComponent()._createActionByOption(\"onClick\");\r\n this._setClickAction()\r\n };\r\n _proto._renderInkRipple = function() {\r\n this._inkRipple = (0, _utils.render)()\r\n };\r\n _proto._getInkRippleContainer = function() {\r\n return this._$icon\r\n };\r\n _proto._toggleActiveState = function($element, value, e) {\r\n _Overlay.prototype._toggleActiveState.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: this._getInkRippleContainer(),\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 _proto._optionChanged = function(args) {\r\n switch (args.name) {\r\n case \"icon\":\r\n this._renderIcon();\r\n break;\r\n case \"onClick\":\r\n this._renderClick();\r\n break;\r\n case \"label\":\r\n this._renderLabel();\r\n break;\r\n case \"visible\":\r\n this._currentVisible = args.previousValue;\r\n args.value ? this._show() : this._hide();\r\n break;\r\n case \"useInkRipple\":\r\n this._render();\r\n break;\r\n default:\r\n _Overlay.prototype._optionChanged.call(this, args)\r\n }\r\n };\r\n return SpeedDialItem\r\n}(_overlay.default);\r\nvar _default = SpeedDialItem;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _support = require(\"../../core/utils/support\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _element = require(\"../../core/element\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiEventsEmitterGesture = _interopRequireDefault(require(\"./ui.events.emitter.gesture.scroll\"));\r\nvar _uiScrollable = require(\"./ui.scrollable.simulated\");\r\nvar _uiScrollable2 = _interopRequireDefault(require(\"./ui.scrollable.native\"));\r\nvar _uiScrollable3 = require(\"./ui.scrollable.device\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLABLE = \"dxScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_CLASS = \"dx-scrollable\";\r\nvar SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nvar SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar BOTH = \"both\";\r\nvar Scrollable = _dom_component.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n disabled: false,\r\n onScroll: null,\r\n direction: VERTICAL,\r\n showScrollbar: \"onScroll\",\r\n useNative: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n onUpdated: null,\r\n onStart: null,\r\n onEnd: null,\r\n onBounce: null,\r\n onStop: null,\r\n useSimulatedScrollbar: false,\r\n useKeyboard: true,\r\n inertiaEnabled: true,\r\n pushBackValue: 0,\r\n updateManually: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat((0, _uiScrollable3.deviceDependentOptions)(), [{\r\n device: function() {\r\n return _support.nativeScrolling && \"android\" === _devices.default.real().platform && !_browser.default.mozilla\r\n },\r\n options: {\r\n useSimulatedScrollbar: true\r\n }\r\n }, {\r\n device: function() {\r\n return \"ios\" === _devices.default.real().platform\r\n },\r\n options: {\r\n pushBackValue: 1\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this.callBase(options);\r\n if (!(\"useSimulatedScrollbar\" in options)) {\r\n this._setUseSimulatedScrollbar()\r\n }\r\n },\r\n _setUseSimulatedScrollbar: function() {\r\n if (!this.initialOption(\"useSimulatedScrollbar\")) {\r\n this.option(\"useSimulatedScrollbar\", !this.option(\"useNative\"))\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initScrollableMarkup();\r\n this._locked = false\r\n },\r\n _getWindowDevicePixelRatio: function() {\r\n return (0, _window.hasWindow)() ? (0, _window.getWindow)().devicePixelRatio : 1\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.update();\r\n this._updateRtlPosition();\r\n this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);\r\n delete this._savedScrollOffset\r\n } else {\r\n this._savedScrollOffset = this.scrollOffset()\r\n }\r\n },\r\n _initScrollableMarkup: function() {\r\n var $element = this.$element().addClass(SCROLLABLE_CLASS);\r\n var $container = this._$container = (0, _renderer.default)(\"
\").addClass(SCROLLABLE_CONTAINER_CLASS);\r\n var $wrapper = this._$wrapper = (0, _renderer.default)(\"
\").addClass(SCROLLABLE_WRAPPER_CLASS);\r\n var $content = this._$content = (0, _renderer.default)(\"
\").addClass(SCROLLABLE_CONTENT_CLASS);\r\n if (_dom_adapter.default.hasDocumentProperty(\"onbeforeactivate\") && _browser.default.msie && _browser.default.version < 12) {\r\n _events_engine.default.on($element, (0, _index.addNamespace)(\"beforeactivate\", SCROLLABLE), function(e) {\r\n if (!(0, _renderer.default)(e.target).is(_selectors.focusable)) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n $content.append($element.contents()).appendTo($container);\r\n $container.appendTo($wrapper);\r\n $wrapper.appendTo($element)\r\n },\r\n _dimensionChanged: function() {\r\n this.update();\r\n this._updateRtlPosition()\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderDirection()\r\n },\r\n _render: function() {\r\n this._renderStrategy();\r\n this._attachEventHandlers();\r\n this._renderDisabledState();\r\n this._createActions();\r\n this.update();\r\n this.callBase();\r\n this._rtlConfig = {\r\n scrollRight: 0,\r\n clientWidth: this._container().get(0).clientWidth,\r\n windowPixelRatio: this._getWindowDevicePixelRatio()\r\n };\r\n this._updateRtlPosition()\r\n },\r\n _isHorizontalAndRtlEnabled: function() {\r\n return this.option(\"rtlEnabled\") && this.option(\"direction\") !== VERTICAL\r\n },\r\n _updateRtlPosition: function() {\r\n var _this = this;\r\n this._updateBounds();\r\n if (this._isHorizontalAndRtlEnabled()) {\r\n (0, _common.deferUpdate)(function() {\r\n var 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 }(0, _common.deferRender)(function() {\r\n if (_this.scrollLeft() !== scrollLeft) {\r\n _this._rtlConfig.skipUpdating = true;\r\n _this.scrollTo({\r\n left: scrollLeft\r\n });\r\n _this._rtlConfig.skipUpdating = false\r\n }\r\n })\r\n })\r\n }\r\n },\r\n _getMaxOffset: function() {\r\n var _this$_container$get = this._container().get(0),\r\n scrollWidth = _this$_container$get.scrollWidth,\r\n clientWidth = _this$_container$get.clientWidth,\r\n scrollHeight = _this$_container$get.scrollHeight,\r\n clientHeight = _this$_container$get.clientHeight;\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 _events_engine.default.off(this._$wrapper, \".\" + SCROLLABLE);\r\n _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.init, SCROLLABLE), initEventData, this._initHandler.bind(this));\r\n _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.start, SCROLLABLE), strategy.handleStart.bind(strategy));\r\n _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.move, SCROLLABLE), strategy.handleMove.bind(strategy));\r\n _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.end, SCROLLABLE), strategy.handleEnd.bind(strategy));\r\n _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));\r\n _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_uiEventsEmitterGesture.default.stop, SCROLLABLE), strategy.handleStop.bind(strategy));\r\n _events_engine.default.off(this._$container, \".\" + SCROLLABLE);\r\n _events_engine.default.on(this._$container, (0, _index.addNamespace)(\"scroll\", SCROLLABLE), strategy.handleScroll.bind(strategy))\r\n },\r\n _updateRtlConfig: function() {\r\n if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {\r\n var _this$_container$get2 = this._container().get(0),\r\n clientWidth = _this$_container$get2.clientWidth,\r\n scrollLeft = _this$_container$get2.scrollLeft;\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 _uiScrollable2.default(this) : new _uiScrollable.SimulatedStrategy(this)\r\n },\r\n _createActions: function() {\r\n this._strategy && this._strategy.createActions()\r\n },\r\n _clean: function() {\r\n this._strategy && this._strategy.dispose()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onStart\":\r\n case \"onEnd\":\r\n case \"onStop\":\r\n case \"onUpdated\":\r\n case \"onScroll\":\r\n case \"onBounce\":\r\n this._createActions();\r\n break;\r\n case \"direction\":\r\n this._resetInactiveDirection();\r\n this._invalidate();\r\n break;\r\n case \"useNative\":\r\n this._setUseSimulatedScrollbar();\r\n this._invalidate();\r\n break;\r\n case \"inertiaEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"bounceEnabled\":\r\n case \"useKeyboard\":\r\n case \"showScrollbar\":\r\n case \"useSimulatedScrollbar\":\r\n case \"pushBackValue\":\r\n this._invalidate();\r\n break;\r\n case \"disabled\":\r\n this._renderDisabledState();\r\n this._strategy && this._strategy.disabledChanged();\r\n break;\r\n case \"updateManually\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._updateRtlPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _resetInactiveDirection: function() {\r\n var inactiveProp = this._getInactiveProp();\r\n if (!inactiveProp || !(0, _window.hasWindow)()) {\r\n return\r\n }\r\n var scrollOffset = this.scrollOffset();\r\n scrollOffset[inactiveProp] = 0;\r\n this.scrollTo(scrollOffset)\r\n },\r\n _getInactiveProp: function() {\r\n var direction = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return \"left\"\r\n }\r\n if (direction === HORIZONTAL) {\r\n return \"top\"\r\n }\r\n },\r\n _location: function() {\r\n return this._strategy.location()\r\n },\r\n _normalizeLocation: function(location) {\r\n if ((0, _type.isPlainObject)(location)) {\r\n var left = (0, _common.ensureDefined)(location.left, location.x);\r\n var top = (0, _common.ensureDefined)(location.top, location.y);\r\n return {\r\n left: (0, _type.isDefined)(left) ? -left : void 0,\r\n top: (0, _type.isDefined)(top) ? -top : void 0\r\n }\r\n } else {\r\n var direction = this.option(\"direction\");\r\n return {\r\n left: direction !== VERTICAL ? -location : void 0,\r\n top: direction !== HORIZONTAL ? -location : void 0\r\n }\r\n }\r\n },\r\n _isLocked: function() {\r\n return this._locked\r\n },\r\n _lock: function() {\r\n this._locked = true\r\n },\r\n _unlock: function() {\r\n if (!this.option(\"disabled\")) {\r\n this._locked = false\r\n }\r\n },\r\n _isDirection: function(direction) {\r\n var current = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return current !== HORIZONTAL\r\n }\r\n if (direction === HORIZONTAL) {\r\n return current !== VERTICAL\r\n }\r\n return current === direction\r\n },\r\n _updateAllowedDirection: function() {\r\n var allowedDirections = this._strategy._allowedDirections();\r\n if (this._isDirection(BOTH) && allowedDirections.vertical && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = BOTH\r\n } else {\r\n if (this._isDirection(HORIZONTAL) && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = HORIZONTAL\r\n } else {\r\n if (this._isDirection(VERTICAL) && allowedDirections.vertical) {\r\n this._allowedDirectionValue = VERTICAL\r\n } else {\r\n this._allowedDirectionValue = null\r\n }\r\n }\r\n }\r\n },\r\n _allowedDirection: function() {\r\n return this._allowedDirectionValue\r\n },\r\n _container: function() {\r\n return this._$container\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n content: function() {\r\n return (0, _element.getPublicElement)(this._$content)\r\n },\r\n scrollOffset: function() {\r\n return this._getScrollOffset()\r\n },\r\n _getScrollOffset: function() {\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() - 2 * this._strategy.verticalOffset()\r\n },\r\n clientWidth: function() {\r\n return this._$container.width()\r\n },\r\n scrollWidth: function() {\r\n return this.$content().outerWidth()\r\n },\r\n update: function() {\r\n if (!this._strategy) {\r\n return\r\n }\r\n return (0, _deferred.when)(this._strategy.update()).done(function() {\r\n this._updateAllowedDirection()\r\n }.bind(this))\r\n },\r\n scrollBy: function(distance) {\r\n distance = this._normalizeLocation(distance);\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._updateIfNeed();\r\n this._strategy.scrollBy(distance);\r\n this._updateRtlConfig()\r\n },\r\n scrollTo: function(targetLocation) {\r\n targetLocation = this._normalizeLocation(targetLocation);\r\n this._updateIfNeed();\r\n var location = this._location();\r\n if (!this.option(\"useNative\")) {\r\n targetLocation = this._strategy._applyScaleRatio(targetLocation);\r\n location = this._strategy._applyScaleRatio(location)\r\n }\r\n var distance = this._normalizeLocation({\r\n left: location.left - (0, _common.ensureDefined)(targetLocation.left, location.left),\r\n top: location.top - (0, _common.ensureDefined)(targetLocation.top, location.top)\r\n });\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._strategy.scrollBy(distance);\r\n this._updateRtlConfig()\r\n },\r\n scrollToElement: function(element, offset) {\r\n var $element = (0, _renderer.default)(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n scrollPosition.left = this.getScrollElementPosition($element, HORIZONTAL, offset)\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this.getScrollElementPosition($element, VERTICAL, offset)\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n scrollToElementTopLeft: function(element) {\r\n var $element = (0, _renderer.default)(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n var leftPosition = this._elementPositionRelativeToContent($element, \"left\");\r\n scrollPosition.left = true === this.option(\"rtlEnabled\") ? leftPosition + $element.width() - this.clientWidth() : leftPosition\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this._elementPositionRelativeToContent($element, \"top\")\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n getScrollElementPosition: function($element, direction, offset) {\r\n offset = offset || {};\r\n var isVertical = direction === VERTICAL;\r\n var startOffset = (isVertical ? offset.top : offset.left) || 0;\r\n var endOffset = (isVertical ? offset.bottom : offset.right) || 0;\r\n var pushBackOffset = isVertical ? this._strategy.verticalOffset() : 0;\r\n var elementPositionRelativeToContent = this._elementPositionRelativeToContent($element, isVertical ? \"top\" : \"left\");\r\n var elementPosition = elementPositionRelativeToContent - pushBackOffset;\r\n var elementSize = $element[isVertical ? \"outerHeight\" : \"outerWidth\"]();\r\n var scrollLocation = isVertical ? this.scrollTop() : this.scrollLeft();\r\n var clientSize = this._container().get(0)[isVertical ? \"clientHeight\" : \"clientWidth\"];\r\n var startDistance = scrollLocation - elementPosition + startOffset;\r\n var endDistance = scrollLocation - elementPosition - elementSize + clientSize - endOffset;\r\n if (startDistance <= 0 && endDistance >= 0) {\r\n return scrollLocation\r\n }\r\n return scrollLocation - (Math.abs(startDistance) > Math.abs(endDistance) ? endDistance : startDistance)\r\n },\r\n _elementPositionRelativeToContent: function($element, prop) {\r\n var result = 0;\r\n while (this._hasScrollContent($element)) {\r\n result += $element.position()[prop];\r\n $element = $element.offsetParent()\r\n }\r\n return result\r\n },\r\n _hasScrollContent: function($element) {\r\n var $content = this.$content();\r\n return $element.closest($content).length && !$element.is($content)\r\n },\r\n _updateIfNeed: function() {\r\n if (!this.option(\"updateManually\")) {\r\n this.update()\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\n(0, _component_registrator.default)(SCROLLABLE, Scrollable);\r\nvar _default = Scrollable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/select_box.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _element = require(\"../core/element\");\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _utils = require(\"./widget/utils.ink_ripple\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"./drop_down_editor/ui.drop_down_list\"));\r\nvar _index = require(\"../events/utils/index\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DISABLED_STATE_SELECTOR = \".dx-state-disabled\";\r\nvar SELECTBOX_CLASS = \"dx-selectbox\";\r\nvar SELECTBOX_POPUP_CLASS = \"dx-selectbox-popup\";\r\nvar SELECTBOX_CONTAINER_CLASS = \"dx-selectbox-container\";\r\nvar SELECTBOX_POPUP_WRAPPER_CLASS = \"dx-selectbox-popup-wrapper\";\r\nvar SelectBox = _ui.default.inherit({\r\n _supportedKeys: function() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var clearSelectBox = function(e) {\r\n var isEditable = this._isEditable();\r\n if (!isEditable) {\r\n if (this.option(\"showClearButton\")) {\r\n e.preventDefault();\r\n this.reset()\r\n }\r\n } else {\r\n if (this._valueSubstituted()) {\r\n this._preventFiltering = true\r\n }\r\n }\r\n this._savedTextRemoveEvent = e;\r\n this._preventSubstitution = true\r\n };\r\n var searchIfNeeded = function() {\r\n if (that.option(\"searchEnabled\") && that._valueSubstituted()) {\r\n that._searchHandler()\r\n }\r\n };\r\n return (0, _extend.extend)({}, parent, {\r\n tab: function() {\r\n if (this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")) {\r\n this._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 && (0, _type.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 (0, _extend.extend)(this.callBase(), {\r\n placeholder: _message.default.format(\"Select\"),\r\n fieldTemplate: null,\r\n valueChangeEvent: \"change\",\r\n acceptCustomValue: false,\r\n onCustomItemCreating: function(e) {\r\n if (!(0, _type.isDefined)(e.customItem)) {\r\n e.customItem = e.text\r\n }\r\n },\r\n showSelectionControls: false,\r\n allowClearing: true,\r\n tooltipEnabled: false,\r\n openOnFieldClick: true,\r\n showDropDownButton: true,\r\n displayCustomValue: false,\r\n useInkRipple: false,\r\n useHiddenSubmitElement: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initCustomItemCreatingAction()\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(SELECTBOX_CLASS);\r\n this._renderTooltip();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.callBase();\r\n this._$container.addClass(SELECTBOX_CONTAINER_CLASS)\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = (0, _utils.render)()\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._inkRipple || this._isEditable()) {\r\n return\r\n }\r\n var config = {\r\n element: this._inputWrapper(),\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._popup.$element().addClass(SELECTBOX_POPUP_CLASS);\r\n this._popup.overlayContent().attr(\"tabindex\", -1)\r\n },\r\n _popupWrapperClass: function() {\r\n return this.callBase() + \" \" + SELECTBOX_POPUP_WRAPPER_CLASS\r\n },\r\n _cancelEditing: function() {\r\n if (!this.option(\"searchEnabled\") && this._list) {\r\n this._focusListElement(null);\r\n this._updateField(this.option(\"selectedItem\"))\r\n }\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n if (this.option(\"opened\")) {\r\n this._scrollToSelectedItem();\r\n this._focusSelectedElement()\r\n }\r\n },\r\n _focusSelectedElement: function() {\r\n var searchValue = this._searchValue();\r\n if (!searchValue) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var index = (0, _array.inArray)(this.option(\"selectedItem\"), this.option(\"items\"));\r\n var focusedElement = index >= 0 && !this._isCustomItemSelected() ? $listItems.eq(index) : null;\r\n this._focusListElement(focusedElement)\r\n },\r\n _renderFocusedElement: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n var searchValue = this._searchValue();\r\n if (!searchValue || this.option(\"acceptCustomValue\")) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var focusedElement = $listItems.not(DISABLED_STATE_SELECTOR).eq(0);\r\n this._focusListElement(focusedElement)\r\n },\r\n _focusListElement: function(element) {\r\n this._preventInputValueRender = true;\r\n this._list.option(\"focusedElement\", (0, _element.getPublicElement)(element));\r\n delete this._preventInputValueRender\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._list && this._list.scrollToItem(this._list.option(\"selectedItem\"))\r\n },\r\n _listContentReadyHandler: function() {\r\n this.callBase();\r\n var isPaginate = this._dataSource && this._dataSource.paginate();\r\n if (isPaginate && this._needPopupRepaint()) {\r\n return\r\n }\r\n this._scrollToSelectedItem()\r\n },\r\n _renderValue: function() {\r\n this._renderInputValue();\r\n this._setSubmitValue();\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n _renderInputValue: function() {\r\n return this.callBase().always(function() {\r\n this._renderInputValueAsync()\r\n }.bind(this))\r\n },\r\n _renderInputValueAsync: function() {\r\n this._renderTooltip();\r\n this._renderInputValueImpl().always(function() {\r\n this._refreshSelected()\r\n }.bind(this))\r\n },\r\n _renderInputValueImpl: function() {\r\n this._renderField();\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n _setNextItem: function(step) {\r\n var item = this._calcNextItem(step);\r\n var value = this._valueGetter(item);\r\n this._setValue(value)\r\n },\r\n _setNextValue: function(e) {\r\n var dataSourceIsLoaded = this._dataSource.isLoaded() ? (new _deferred.Deferred).resolve() : this._dataSource.load();\r\n dataSourceIsLoaded.done(function() {\r\n var selectedIndex = this._getSelectedIndex();\r\n var hasPages = this._dataSource.pageSize();\r\n var isLastPage = this._dataSource.isLastPage();\r\n var isLastItem = selectedIndex === this._items().length - 1;\r\n this._saveValueChangeEvent(e);\r\n var step = \"downArrow\" === (0, _index.normalizeKeyName)(e) ? 1 : -1;\r\n if (hasPages && !isLastPage && isLastItem && step > 0) {\r\n if (!this._popup) {\r\n this._createPopup()\r\n }\r\n if (!this._dataSource.isLoading()) {\r\n this._list._loadNextPage().done(this._setNextItem.bind(this, step))\r\n }\r\n } else {\r\n this._setNextItem(step)\r\n }\r\n }.bind(this))\r\n },\r\n _setSelectedItem: function(item) {\r\n var isUnknownItem = !this._isCustomValueAllowed() && void 0 === item;\r\n this.callBase(isUnknownItem ? null : item);\r\n if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) {\r\n this._setListOption(\"selectedItem\", this.option(\"selectedItem\"))\r\n }\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"acceptCustomValue\") || this.callBase()\r\n },\r\n _displayValue: function(item) {\r\n item = !(0, _type.isDefined)(item) && this._isCustomValueAllowed() ? this.option(\"value\") : item;\r\n return this.callBase(item)\r\n },\r\n _listConfig: function() {\r\n var result = (0, _extend.extend)(this.callBase(), {\r\n pageLoadMode: \"scrollBottom\",\r\n onSelectionChanged: this._getSelectionChangeHandler(),\r\n selectedItem: this.option(\"selectedItem\"),\r\n onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this)\r\n });\r\n if (this.option(\"showSelectionControls\")) {\r\n (0, _extend.extend)(result, {\r\n showSelectionControls: true,\r\n selectionByClick: true\r\n })\r\n }\r\n return result\r\n },\r\n _listFocusedItemChangeHandler: function(e) {\r\n if (this._preventInputValueRender) {\r\n return\r\n }\r\n var list = e.component;\r\n var focusedElement = (0, _renderer.default)(list.option(\"focusedElement\"));\r\n var focusedItem = list._getItemData(focusedElement);\r\n this._updateField(focusedItem)\r\n },\r\n _updateField: function(item) {\r\n var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n if (!(fieldTemplate && this.option(\"fieldTemplate\"))) {\r\n var text = this._displayGetter(item);\r\n this.option(\"text\", text);\r\n this._renderDisplayText(text);\r\n return\r\n }\r\n this._renderField()\r\n },\r\n _getSelectionChangeHandler: function() {\r\n return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : _common.noop\r\n },\r\n _selectionChangeHandler: function(e) {\r\n (0, _iterator.each)(e.addedItems || [], function(_, addedItem) {\r\n this._setValue(this._valueGetter(addedItem))\r\n }.bind(this))\r\n },\r\n _getActualSearchValue: function() {\r\n return this._dataSource.searchValue()\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n if (!isVisible && !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 = (0, _common.ensureDefined)(selectedItem, initialSelectedItem);\r\n this._setSelectedItem(newSelectedItem);\r\n this._updateField(newSelectedItem);\r\n this._clearFilter()\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n _focusOutHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n var isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget);\r\n if (!isOverlayTarget) {\r\n this._restoreInputText();\r\n this._clearSearchTimer()\r\n }\r\n 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 _this$option = this.option(),\r\n searchEnabled = _this$option.searchEnabled;\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 !!(0, _renderer.default)(target).closest(\".\".concat(SELECTBOX_POPUP_WRAPPER_CLASS)).length\r\n },\r\n _clearTextValue: function() {\r\n if (this.option(\"selectedItem\")) {\r\n if (this._savedTextRemoveEvent) {\r\n this._saveValueChangeEvent(this._savedTextRemoveEvent)\r\n }\r\n this.option(\"value\", null)\r\n }\r\n delete this._savedTextRemoveEvent\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._needPassDataSourceToList() && this._wasSearch()\r\n },\r\n _isFocused: function() {\r\n var activeElement = _dom_adapter.default.getActiveElement();\r\n return this.callBase() && (0, _renderer.default)(activeElement).closest(this._input()).length > 0\r\n },\r\n _renderValueChangeEvent: function() {\r\n if (this._isEditable()) {\r\n this.callBase()\r\n }\r\n },\r\n _fieldRenderData: function() {\r\n var $listFocused = this._list && this.option(\"opened\") && (0, _renderer.default)(this._list.option(\"focusedElement\"));\r\n if ($listFocused && $listFocused.length) {\r\n return this._list._getItemData($listFocused)\r\n }\r\n return this.option(\"selectedItem\")\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _shouldCloseOnItemClick: function() {\r\n return !(this.option(\"showSelectionControls\") && \"single\" !== this.option(\"selectionMode\"))\r\n },\r\n _listItemClickHandler: function(e) {\r\n var previousValue = this._getCurrentValue();\r\n this._focusListElement((0, _renderer.default)(e.itemElement));\r\n this._saveValueChangeEvent(e.event);\r\n 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.Deferred;\r\n this.callBase(value, cache).done(function(item) {\r\n deferred.resolve(item)\r\n }.bind(this)).fail(function() {\r\n var selectedItem = that.option(\"selectedItem\");\r\n if (that.option(\"acceptCustomValue\") && value === that._valueGetter(selectedItem)) {\r\n deferred.resolve(selectedItem)\r\n } else {\r\n deferred.reject()\r\n }\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _loadInputValue: function(value, callback) {\r\n this._loadItemDeferred = this._loadItem(value).always(callback);\r\n return this._loadItemDeferred\r\n },\r\n _isCustomItemSelected: function() {\r\n var selectedItem = this.option(\"selectedItem\");\r\n var searchValue = this._searchValue();\r\n var selectedItemText = this._displayGetter(selectedItem);\r\n return !selectedItemText || searchValue !== selectedItemText.toString()\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (this.option(\"acceptCustomValue\") && this._isCustomItemSelected() && !this._isValueChanging) {\r\n this._isValueChanging = true;\r\n this._customItemAddedHandler(e);\r\n this._isValueChanging = false\r\n }\r\n },\r\n _initCustomItemCreatingAction: function() {\r\n this._customItemCreatingAction = this._createActionByOption(\"onCustomItemCreating\")\r\n },\r\n _createCustomItem: function(text) {\r\n var params = {\r\n text: text\r\n };\r\n var actionResult = this._customItemCreatingAction(params);\r\n var item = (0, _common.ensureDefined)(actionResult, params.customItem);\r\n if ((0, _type.isDefined)(actionResult)) {\r\n _errors.default.log(\"W0015\", \"onCustomItemCreating\", \"customItem\")\r\n }\r\n return item\r\n },\r\n _customItemAddedHandler: function(e) {\r\n var searchValue = this._searchValue();\r\n var item = this._createCustomItem(searchValue);\r\n this._saveValueChangeEvent(e);\r\n if (void 0 === item) {\r\n this._renderValue();\r\n throw _errors.default.Error(\"E0121\")\r\n }\r\n if ((0, _type.isPromise)(item)) {\r\n (0, _deferred.fromPromise)(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null))\r\n } else {\r\n this._setCustomItem(item)\r\n }\r\n },\r\n _setCustomItem: function(item) {\r\n if (this._disposed) {\r\n return\r\n }\r\n item = item || null;\r\n this.option(\"selectedItem\", item);\r\n 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 = _common.noop;\r\n delete this._loadItemDeferred;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onCustomItemCreating\":\r\n this._initCustomItemCreatingAction();\r\n break;\r\n case \"tooltipEnabled\":\r\n this._renderTooltip();\r\n break;\r\n case \"displayCustomValue\":\r\n case \"acceptCustomValue\":\r\n case \"showSelectionControls\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"allowClearing\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n delete this._inkRipple;\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxSelectBox\", SelectBox);\r\nvar _default = SelectBox;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/shared/accessibility.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.subscribeVisibilityChange = subscribeVisibilityChange;\r\nexports.unsubscribeVisibilityChange = unsubscribeVisibilityChange;\r\nexports.hiddenFocus = hiddenFocus;\r\nexports.registerKeyboardAction = registerKeyboardAction;\r\nexports.restoreFocus = restoreFocus;\r\nexports.selectView = selectView;\r\nexports.setTabIndex = setTabIndex;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _common = require(\"../../core/utils/common\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FOCUS_STATE_CLASS = \"dx-state-focused\";\r\nvar FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar FOCUSED_ROW_SELECTOR = \".dx-row-focused\";\r\nvar GRID_ROW_SELECTOR = \".dx-datagrid-rowsview .dx-row\";\r\nvar GRID_CELL_SELECTOR = \"\".concat(GRID_ROW_SELECTOR, \" > td\");\r\nvar TREELIST_ROW_SELECTOR = \".dx-treelist-rowsview .dx-row\";\r\nvar TREELIST_CELL_SELECTOR = \"\".concat(TREELIST_ROW_SELECTOR, \" > td\");\r\nvar viewItemSelectorMap = {\r\n groupPanel: [\".dx-datagrid-group-panel .dx-group-panel-item[tabindex]\"],\r\n columnHeaders: [\".dx-datagrid-headers .dx-header-row > td.dx-datagrid-action\", \".dx-treelist-headers .dx-header-row > td.dx-treelist-action\"],\r\n filterRow: [\".dx-datagrid-headers .dx-datagrid-filter-row .dx-editor-cell .dx-texteditor-input\", \".dx-treelist-headers .dx-treelist-filter-row .dx-editor-cell .dx-texteditor-input\"],\r\n rowsView: [\"\".concat(FOCUSED_ROW_SELECTOR), \"\".concat(GRID_ROW_SELECTOR, \"[tabindex]\"), \"\".concat(GRID_CELL_SELECTOR, \"[tabindex]\"), \"\".concat(GRID_CELL_SELECTOR), \"\".concat(TREELIST_ROW_SELECTOR, \"[tabindex]\"), \"\".concat(TREELIST_CELL_SELECTOR, \"[tabindex]\"), \"\".concat(TREELIST_CELL_SELECTOR)],\r\n footer: [\".dx-datagrid-total-footer .dx-datagrid-summary-item\", \".dx-treelist-total-footer .dx-treelist-summary-item\"],\r\n filterPanel: [\".dx-datagrid-filter-panel .dx-icon-filter\", \".dx-treelist-filter-panel .dx-icon-filter\"],\r\n pager: [\".dx-datagrid-pager [tabindex]\", \".dx-treelist-pager [tabindex]\"]\r\n};\r\nvar isMouseDown = false;\r\nvar isHiddenFocusing = false;\r\nvar focusedElementInfo = null;\r\n\r\nfunction processKeyDown(viewName, instance, event, action, $mainElement, executeKeyDown) {\r\n var isHandled = fireKeyDownEvent(instance, event.originalEvent, executeKeyDown);\r\n if (isHandled) {\r\n return\r\n }\r\n var keyName = (0, _index.normalizeKeyName)(event);\r\n if (\"enter\" === keyName || \"space\" === keyName) {\r\n saveFocusedElementInfo(event.target, instance);\r\n action && action({\r\n event: event\r\n })\r\n } else {\r\n if (\"tab\" === keyName) {\r\n $mainElement.addClass(FOCUS_STATE_CLASS)\r\n } else {\r\n selectView(viewName, instance, event)\r\n }\r\n }\r\n}\r\n\r\nfunction saveFocusedElementInfo(target, instance) {\r\n var $target = (0, _renderer.default)(target);\r\n var ariaLabel = $target.attr(\"aria-label\");\r\n var $activeElements = getActiveAccessibleElements(ariaLabel, instance.element());\r\n var targetIndex = $activeElements.index($target);\r\n focusedElementInfo = (0, _extend.extend)({}, {\r\n ariaLabel: ariaLabel,\r\n index: targetIndex\r\n }, {\r\n viewInstance: instance\r\n })\r\n}\r\n\r\nfunction getActiveAccessibleElements(ariaLabel, viewElement) {\r\n var $viewElement = (0, _renderer.default)(viewElement);\r\n var $activeElements;\r\n if (ariaLabel) {\r\n $activeElements = $viewElement.find('[aria-label=\"'.concat(ariaLabel, '\"][tabindex]'))\r\n } else {\r\n $activeElements = $viewElement.find(\"[tabindex]\")\r\n }\r\n return $activeElements\r\n}\r\n\r\nfunction findFocusedViewElement(viewSelectors) {\r\n for (var index in viewSelectors) {\r\n var selector = viewSelectors[index];\r\n var $focusViewElement = (0, _renderer.default)(selector).first();\r\n if ($focusViewElement.length) {\r\n return $focusViewElement\r\n }\r\n }\r\n}\r\n\r\nfunction fireKeyDownEvent(instance, event, executeAction) {\r\n var args = {\r\n event: event,\r\n handled: false\r\n };\r\n if (executeAction) {\r\n executeAction(args)\r\n } else {\r\n instance._createActionByOption(\"onKeyDown\")(args)\r\n }\r\n return args.handled\r\n}\r\n\r\nfunction onDocumentVisibilityChange() {\r\n isHiddenFocusing = \"visible\" === _dom_adapter.default.getDocument().visibilityState\r\n}\r\n\r\nfunction subscribeVisibilityChange() {\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\n\r\nfunction unsubscribeVisibilityChange() {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), \"visibilitychange\", onDocumentVisibilityChange)\r\n}\r\n\r\nfunction hiddenFocus(element) {\r\n isHiddenFocusing = true;\r\n element.focus();\r\n isHiddenFocusing = false\r\n}\r\n\r\nfunction registerKeyboardAction(viewName, instance, $element, selector, action, executeKeyDown) {\r\n if (instance.option(\"useLegacyKeyboardNavigation\")) {\r\n return _common.noop\r\n }\r\n var $mainElement = (0, _renderer.default)(instance.element());\r\n var keyDownHandler = function(e) {\r\n return processKeyDown(viewName, instance, e, action, $mainElement, executeKeyDown)\r\n };\r\n var mouseDownHandler = function() {\r\n isMouseDown = true;\r\n $mainElement.removeClass(FOCUS_STATE_CLASS)\r\n };\r\n var focusinHandler = function() {\r\n var needShowOverlay = !isMouseDown && !isHiddenFocusing;\r\n if (needShowOverlay) {\r\n $mainElement.addClass(FOCUS_STATE_CLASS)\r\n }\r\n isMouseDown = false\r\n };\r\n _events_engine.default.on($element, \"keydown\", selector, keyDownHandler);\r\n _events_engine.default.on($element, \"mousedown\", selector, mouseDownHandler);\r\n _events_engine.default.on($element, \"focusin\", selector, focusinHandler);\r\n return function() {\r\n _events_engine.default.off($element, \"keydown\", selector, keyDownHandler);\r\n _events_engine.default.off($element, \"mousedown\", selector, mouseDownHandler);\r\n _events_engine.default.off($element, \"focusin\", selector, focusinHandler)\r\n }\r\n}\r\n\r\nfunction restoreFocus(instance) {\r\n if (!instance.option(\"useLegacyKeyboardNavigation\") && focusedElementInfo) {\r\n var viewInstance = focusedElementInfo.viewInstance;\r\n if (viewInstance) {\r\n var $activeElements = getActiveAccessibleElements(focusedElementInfo.ariaLabel, viewInstance.element());\r\n var $targetElement = $activeElements.eq(focusedElementInfo.index);\r\n focusedElementInfo = null;\r\n _events_engine.default.trigger($targetElement, \"focus\")\r\n }\r\n }\r\n}\r\n\r\nfunction selectView(viewName, instance, event) {\r\n var keyName = (0, _index.normalizeKeyName)(event);\r\n if (event.ctrlKey && (\"upArrow\" === keyName || \"downArrow\" === keyName)) {\r\n var viewNames = Object.keys(viewItemSelectorMap);\r\n var viewItemIndex = viewNames.indexOf(viewName);\r\n while (viewItemIndex >= 0 && viewItemIndex < viewNames.length) {\r\n viewItemIndex = \"upArrow\" === keyName ? --viewItemIndex : ++viewItemIndex;\r\n var _viewName = viewNames[viewItemIndex];\r\n var viewSelectors = viewItemSelectorMap[_viewName];\r\n var $focusViewElement = findFocusedViewElement(viewSelectors);\r\n if ($focusViewElement && $focusViewElement.length) {\r\n $focusViewElement.attr(\"tabindex\", instance.option(\"tabindex\") || 0);\r\n _events_engine.default.trigger($focusViewElement, \"focus\");\r\n $focusViewElement.removeClass(FOCUS_DISABLED_CLASS);\r\n break\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction setTabIndex(instance, $element) {\r\n if (!instance.option(\"useLegacyKeyboardnavigation\")) {\r\n $element.attr(\"tabindex\", instance.option(\"tabindex\") || 0)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (ui/shared/filtering.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar DEFAULT_DATE_INTERVAL = [\"year\", \"month\", \"day\"];\r\nvar DEFAULT_DATETIME_INTERVAL = [\"year\", \"month\", \"day\", \"hour\", \"minute\"];\r\nvar isDateType = function(dataType) {\r\n return \"date\" === dataType || \"datetime\" === dataType\r\n};\r\nvar getGroupInterval = function(column) {\r\n var index;\r\n var result = [];\r\n var dateIntervals = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\"];\r\n var groupInterval = column.headerFilter && column.headerFilter.groupInterval;\r\n var interval = \"quarter\" === groupInterval ? \"month\" : groupInterval;\r\n if (isDateType(column.dataType) && null !== groupInterval) {\r\n result = \"datetime\" === column.dataType ? DEFAULT_DATETIME_INTERVAL : DEFAULT_DATE_INTERVAL;\r\n index = (0, _array.inArray)(interval, dateIntervals);\r\n if (index >= 0) {\r\n result = dateIntervals.slice(0, index);\r\n result.push(groupInterval);\r\n return result\r\n }\r\n return result\r\n } else {\r\n if ((0, _type.isDefined)(groupInterval)) {\r\n return Array.isArray(groupInterval) ? groupInterval : [groupInterval]\r\n }\r\n }\r\n};\r\nvar _default = function() {\r\n var getFilterSelector = function(column, target) {\r\n var selector = column.dataField || column.selector;\r\n if (\"search\" === target) {\r\n selector = column.displayField || column.calculateDisplayValue || selector\r\n }\r\n return selector\r\n };\r\n var isZeroTime = function(date) {\r\n return date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1\r\n };\r\n var getDateValues = function(dateValue) {\r\n if ((0, _type.isDate)(dateValue)) {\r\n return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]\r\n }\r\n return (0, _iterator.map)((\"\" + dateValue).split(\"/\"), function(value, index) {\r\n return 1 === index ? Number(value) - 1 : Number(value)\r\n })\r\n };\r\n var getFilterExpressionByRange = function(filterValue, target) {\r\n var column = this;\r\n var endFilterValue;\r\n var startFilterExpression;\r\n var endFilterExpression;\r\n var selector = getFilterSelector(column, target);\r\n if (Array.isArray(filterValue) && (0, _type.isDefined)(filterValue[0]) && (0, _type.isDefined)(filterValue[1])) {\r\n startFilterExpression = [selector, \">=\", filterValue[0]];\r\n endFilterExpression = [selector, \"<=\", filterValue[1]];\r\n if (isDateType(column.dataType) && isZeroTime(filterValue[1])) {\r\n endFilterValue = new Date(filterValue[1].getTime());\r\n if (\"date\" === column.dataType) {\r\n endFilterValue.setDate(filterValue[1].getDate() + 1)\r\n }\r\n endFilterExpression = [selector, \"<\", endFilterValue]\r\n }\r\n return [startFilterExpression, \"and\", endFilterExpression]\r\n }\r\n };\r\n var getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) {\r\n var column = this;\r\n var dateStart;\r\n var dateEnd;\r\n var dateInterval;\r\n var values = getDateValues(filterValue);\r\n var selector = getFilterSelector(column, target);\r\n if (\"headerFilter\" === target) {\r\n dateInterval = getGroupInterval(column)[values.length - 1]\r\n } else {\r\n if (\"datetime\" === column.dataType) {\r\n dateInterval = \"minute\"\r\n }\r\n }\r\n switch (dateInterval) {\r\n case \"year\":\r\n dateStart = new Date(values[0], 0, 1);\r\n dateEnd = new Date(values[0] + 1, 0, 1);\r\n break;\r\n case \"month\":\r\n dateStart = new Date(values[0], values[1], 1);\r\n dateEnd = new Date(values[0], values[1] + 1, 1);\r\n break;\r\n case \"quarter\":\r\n dateStart = new Date(values[0], 3 * values[1], 1);\r\n dateEnd = new Date(values[0], 3 * values[1] + 3, 1);\r\n break;\r\n case \"hour\":\r\n dateStart = new Date(values[0], values[1], values[2], values[3]);\r\n dateEnd = new Date(values[0], values[1], values[2], values[3] + 1);\r\n break;\r\n case \"minute\":\r\n dateStart = new Date(values[0], values[1], values[2], values[3], values[4]);\r\n dateEnd = new Date(values[0], values[1], values[2], values[3], values[4] + 1);\r\n break;\r\n case \"second\":\r\n dateStart = new Date(values[0], values[1], values[2], values[3], values[4], values[5]);\r\n dateEnd = new Date(values[0], values[1], values[2], values[3], values[4], values[5] + 1);\r\n break;\r\n default:\r\n dateStart = new Date(values[0], values[1], values[2]);\r\n dateEnd = new Date(values[0], values[1], values[2] + 1)\r\n }\r\n switch (selectedFilterOperation) {\r\n case \"<\":\r\n return [selector, \"<\", dateStart];\r\n case \"<=\":\r\n return [selector, \"<\", dateEnd];\r\n case \">\":\r\n return [selector, \">=\", dateEnd];\r\n case \">=\":\r\n return [selector, \">=\", dateStart];\r\n case \"<>\":\r\n return [\r\n [selector, \"<\", dateStart], \"or\", [selector, \">=\", dateEnd]\r\n ];\r\n default:\r\n return [\r\n [selector, \">=\", dateStart], \"and\", [selector, \"<\", dateEnd]\r\n ]\r\n }\r\n };\r\n var getFilterExpressionForNumber = function(filterValue, selectedFilterOperation, target) {\r\n var column = this;\r\n var selector = getFilterSelector(column, target);\r\n var groupInterval = getGroupInterval(column);\r\n if (\"headerFilter\" === target && groupInterval && (0, _type.isDefined)(filterValue)) {\r\n var values = (\"\" + filterValue).split(\"/\");\r\n var value = Number(values[values.length - 1]);\r\n var interval = groupInterval[values.length - 1];\r\n var startFilterValue = [selector, \">=\", value];\r\n var endFilterValue = [selector, \"<\", value + interval];\r\n var condition = [startFilterValue, \"and\", endFilterValue];\r\n return condition\r\n }\r\n return [selector, selectedFilterOperation || \"=\", filterValue]\r\n };\r\n return {\r\n defaultCalculateFilterExpression: function(filterValue, selectedFilterOperation, target) {\r\n var column = this;\r\n var selector = getFilterSelector(column, target);\r\n var isSearchByDisplayValue = column.calculateDisplayValue && \"search\" === target;\r\n var dataType = isSearchByDisplayValue && column.lookup && column.lookup.dataType || column.dataType;\r\n var filter = null;\r\n if ((\"headerFilter\" === target || \"filterBuilder\" === target) && null === filterValue) {\r\n filter = [selector, selectedFilterOperation || \"=\", null];\r\n if (\"string\" === dataType) {\r\n filter = [filter, \"=\" === selectedFilterOperation ? \"or\" : \"and\", [selector, selectedFilterOperation || \"=\", \"\"]]\r\n }\r\n } else {\r\n if (\"string\" === dataType && (!column.lookup || isSearchByDisplayValue)) {\r\n filter = [selector, selectedFilterOperation || \"contains\", filterValue]\r\n } else {\r\n if (\"between\" === selectedFilterOperation) {\r\n return getFilterExpressionByRange.apply(column, [filterValue, target])\r\n } else {\r\n if (isDateType(dataType) && (0, _type.isDefined)(filterValue)) {\r\n return getFilterExpressionForDate.apply(column, arguments)\r\n } else {\r\n if (\"number\" === dataType) {\r\n return getFilterExpressionForNumber.apply(column, arguments)\r\n } else {\r\n if (\"object\" !== dataType) {\r\n filter = [selector, selectedFilterOperation || \"=\", filterValue]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return filter\r\n },\r\n getGroupInterval: getGroupInterval\r\n }\r\n}();\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/selection/selection.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _selectionStrategy = _interopRequireDefault(require(\"./selection.strategy.deferred\"));\r\nvar _selectionStrategy2 = _interopRequireDefault(require(\"./selection.strategy.standard\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _class.default.inherit({\r\n ctor: function(options) {\r\n this.options = (0, _extend.extend)(this._getDefaultOptions(), options, {\r\n selectedItemKeys: options.selectedKeys || []\r\n });\r\n this._selectionStrategy = this.options.deferred ? new _selectionStrategy.default(this.options) : new _selectionStrategy2.default(this.options);\r\n this._focusedItemIndex = -1;\r\n if (!this.options.equalByReference) {\r\n this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n }\r\n },\r\n _getDefaultOptions: function() {\r\n return {\r\n allowNullValue: false,\r\n deferred: false,\r\n equalByReference: false,\r\n mode: \"multiple\",\r\n selectedItems: [],\r\n selectionFilter: [],\r\n maxFilterLengthInRequest: 0,\r\n onSelectionChanged: _common.noop,\r\n key: _common.noop,\r\n keyOf: function(item) {\r\n return item\r\n },\r\n load: function() {\r\n return (new _deferred.Deferred).resolve([])\r\n },\r\n totalCount: function() {\r\n return -1\r\n },\r\n isSelectableItem: function() {\r\n return true\r\n },\r\n isItemSelected: function() {\r\n return false\r\n },\r\n getItemData: function(item) {\r\n return item\r\n },\r\n dataFields: _common.noop,\r\n filter: _common.noop\r\n }\r\n },\r\n validate: function() {\r\n this._selectionStrategy.validate()\r\n },\r\n getSelectedItemKeys: function() {\r\n return this._selectionStrategy.getSelectedItemKeys()\r\n },\r\n getSelectedItems: function() {\r\n return this._selectionStrategy.getSelectedItems()\r\n },\r\n selectionFilter: function(value) {\r\n if (void 0 === value) {\r\n return this.options.selectionFilter\r\n }\r\n var filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value);\r\n this.options.selectionFilter = value;\r\n filterIsChanged && this.onSelectionChanged()\r\n },\r\n setSelection: function(keys) {\r\n return this.selectedItemKeys(keys)\r\n },\r\n select: function(keys) {\r\n return this.selectedItemKeys(keys, true)\r\n },\r\n deselect: function(keys) {\r\n return this.selectedItemKeys(keys, true, true)\r\n },\r\n selectedItemKeys: function(keys, preserve, isDeselect, isSelectAll) {\r\n var _keys;\r\n var that = this;\r\n keys = null !== (_keys = keys) && void 0 !== _keys ? _keys : [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n that.validate();\r\n return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n },\r\n clearSelection: function() {\r\n return this.selectedItemKeys([])\r\n },\r\n _addSelectedItem: function(itemData, key) {\r\n this._selectionStrategy.addSelectedItem(key, itemData)\r\n },\r\n _removeSelectedItem: function(key) {\r\n this._selectionStrategy.removeSelectedItem(key)\r\n },\r\n _setSelectedItems: function(keys, items) {\r\n this._selectionStrategy.setSelectedItems(keys, items)\r\n },\r\n onSelectionChanged: function() {\r\n this._selectionStrategy.onSelectionChanged()\r\n },\r\n changeItemSelection: function(itemIndex, keys) {\r\n var isSelectedItemsChanged;\r\n var items = this.options.plainItems();\r\n var item = items[itemIndex];\r\n if (!this.isSelectable() || !this.isDataItem(item)) {\r\n return false\r\n }\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n keys = keys || {};\r\n if (keys.shift && \"multiple\" === this.options.mode && this._focusedItemIndex >= 0) {\r\n isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items)\r\n } else {\r\n if (keys.control) {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n var isSelected = this._selectionStrategy.isItemDataSelected(itemData);\r\n if (\"single\" === this.options.mode) {\r\n this.clearSelectedItems()\r\n }\r\n if (isSelected) {\r\n this._removeSelectedItem(itemKey)\r\n } else {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n isSelectedItemsChanged = true\r\n } else {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n var isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey);\r\n if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) {\r\n this._setSelectedItems([itemKey], [itemData]);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (isSelectedItemsChanged) {\r\n this._focusedItemIndex = itemIndex;\r\n this.onSelectionChanged();\r\n return true\r\n }\r\n },\r\n isDataItem: function(item) {\r\n return this.options.isSelectableItem(item)\r\n },\r\n isSelectable: function() {\r\n return \"single\" === this.options.mode || \"multiple\" === this.options.mode\r\n },\r\n isItemDataSelected: function(data) {\r\n return this._selectionStrategy.isItemDataSelected(data, {\r\n 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 (!(0, _type.isDefined)(this._shiftFocusedItemIndex)) {\r\n this._shiftFocusedItemIndex = this._focusedItemIndex\r\n }\r\n var data;\r\n var itemKey;\r\n if (this._shiftFocusedItemIndex !== this._focusedItemIndex) {\r\n itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n for (index = this._focusedItemIndex; index !== this._shiftFocusedItemIndex; index += itemIndexStep) {\r\n if (this.isDataItem(items[index])) {\r\n itemKey = keyOf(this.options.getItemData(items[index]));\r\n this._removeSelectedItem(itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (itemIndex !== this._shiftFocusedItemIndex) {\r\n itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n for (index = itemIndex; index !== this._shiftFocusedItemIndex; index += itemIndexStep) {\r\n if (this.isDataItem(items[index])) {\r\n data = this.options.getItemData(items[index]);\r\n itemKey = keyOf(data);\r\n this._addSelectedItem(data, itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (this.isDataItem(focusedItem) && !isFocusedItemSelected) {\r\n this._addSelectedItem(focusedData, focusedKey);\r\n isSelectedItemsChanged = true\r\n }\r\n return isSelectedItemsChanged\r\n },\r\n clearSelectedItems: function() {\r\n this._setSelectedItems([], [])\r\n },\r\n selectAll: function(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(false)\r\n } else {\r\n return this.selectedItemKeys([], true, false, true)\r\n }\r\n },\r\n deselectAll: function(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(true)\r\n } else {\r\n return this.selectedItemKeys([], true, true, true)\r\n }\r\n },\r\n _onePageSelectAll: function(isDeselect) {\r\n var items = this._selectionStrategy.getSelectableItems(this.options.plainItems());\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (this.isDataItem(item)) {\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n var isSelected = this.isItemSelected(itemKey);\r\n if (!isSelected && !isDeselect) {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n if (isSelected && isDeselect) {\r\n this._removeSelectedItem(itemKey)\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n getSelectAllState: function(visibleOnly) {\r\n return this._selectionStrategy.getSelectAllState(visibleOnly)\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.events.emitter.gesture.scroll.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _emitter = _interopRequireDefault(require(\"../../events/gesture/emitter.gesture\"));\r\nvar _emitter_registrator = _interopRequireDefault(require(\"../../events/core/emitter_registrator\"));\r\nvar _frame = require(\"../../animation/frame\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _version = require(\"../../core/utils/version\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar realDevice = _devices.default.real();\r\nvar SCROLL_INIT_EVENT = \"dxscrollinit\";\r\nvar SCROLL_START_EVENT = \"dxscrollstart\";\r\nvar SCROLL_MOVE_EVENT = \"dxscroll\";\r\nvar SCROLL_END_EVENT = \"dxscrollend\";\r\nvar SCROLL_STOP_EVENT = \"dxscrollstop\";\r\nvar SCROLL_CANCEL_EVENT = \"dxscrollcancel\";\r\nvar Locker = _class.default.inherit(function() {\r\n var NAMESPACED_SCROLL_EVENT = (0, _index.addNamespace)(\"scroll\", \"dxScrollEmitter\");\r\n return {\r\n ctor: function(element) {\r\n this._element = element;\r\n this._locked = false;\r\n var that = this;\r\n this._proxiedScroll = function(e) {\r\n that._scroll(e)\r\n };\r\n _events_engine.default.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n },\r\n _scroll: abstract,\r\n check: function(e, callback) {\r\n if (this._locked) {\r\n callback()\r\n }\r\n },\r\n dispose: function() {\r\n _events_engine.default.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n }\r\n }\r\n}());\r\nvar TimeoutLocker = Locker.inherit(function() {\r\n return {\r\n ctor: function(element, timeout) {\r\n this.callBase(element);\r\n this._timeout = timeout\r\n },\r\n _scroll: function() {\r\n this._prepare();\r\n this._forget()\r\n },\r\n _prepare: function() {\r\n if (this._timer) {\r\n this._clearTimer()\r\n }\r\n this._locked = true\r\n },\r\n _clearTimer: function() {\r\n clearTimeout(this._timer);\r\n this._locked = false;\r\n this._timer = null\r\n },\r\n _forget: function() {\r\n var that = this;\r\n this._timer = setTimeout(function() {\r\n that._clearTimer()\r\n }, this._timeout)\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._clearTimer()\r\n }\r\n }\r\n}());\r\nvar WheelLocker = TimeoutLocker.inherit(function() {\r\n var WHEEL_UNLOCK_TIMEOUT = 400;\r\n return {\r\n ctor: function(element) {\r\n this.callBase(element, WHEEL_UNLOCK_TIMEOUT);\r\n this._lastWheelDirection = null\r\n },\r\n check: function(e, callback) {\r\n this._checkDirectionChanged(e);\r\n this.callBase(e, callback)\r\n },\r\n _checkDirectionChanged: function(e) {\r\n if (!(0, _index.isDxMouseWheelEvent)(e)) {\r\n this._lastWheelDirection = null;\r\n return\r\n }\r\n var direction = e.shiftKey || false;\r\n var directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;\r\n this._lastWheelDirection = direction;\r\n this._locked = this._locked && !directionChange\r\n }\r\n }\r\n}());\r\nvar PointerLocker = TimeoutLocker.inherit(function() {\r\n var POINTER_UNLOCK_TIMEOUT = 400;\r\n return {\r\n ctor: function(element) {\r\n this.callBase(element, POINTER_UNLOCK_TIMEOUT)\r\n }\r\n }\r\n}());\r\n! function() {\r\n var ios8_greater = realDevice.ios && (0, _version.compare)(realDevice.version, [8]) >= 0;\r\n var android5_greater = realDevice.android && (0, _version.compare)(realDevice.version, [5]) >= 0;\r\n if (!(ios8_greater || android5_greater)) {\r\n return\r\n }\r\n PointerLocker = Locker.inherit(function() {\r\n return {\r\n _scroll: function() {\r\n this._locked = true;\r\n var that = this;\r\n (0, _frame.cancelAnimationFrame)(this._scrollFrame);\r\n this._scrollFrame = (0, _frame.requestAnimationFrame)(function() {\r\n that._locked = false\r\n })\r\n },\r\n check: function(e, callback) {\r\n (0, _frame.cancelAnimationFrame)(this._scrollFrame);\r\n (0, _frame.cancelAnimationFrame)(this._checkFrame);\r\n var that = this;\r\n var callBase = this.callBase;\r\n this._checkFrame = (0, _frame.requestAnimationFrame)(function() {\r\n callBase.call(that, e, callback);\r\n that._locked = false\r\n })\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n (0, _frame.cancelAnimationFrame)(this._scrollFrame);\r\n (0, _frame.cancelAnimationFrame)(this._checkFrame)\r\n }\r\n }\r\n }())\r\n}();\r\nvar ScrollEmitter = _emitter.default.inherit(function() {\r\n var INERTIA_TIMEOUT = 100;\r\n var VELOCITY_CALC_TIMEOUT = 200;\r\n var FRAME_DURATION = Math.round(1e3 / 60);\r\n return {\r\n ctor: function(element) {\r\n this.callBase.apply(this, arguments);\r\n this.direction = \"both\";\r\n this._pointerLocker = new PointerLocker(element);\r\n this._wheelLocker = new WheelLocker(element)\r\n },\r\n validate: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n if (data.scrollTarget) {\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose();\r\n this._pointerLocker = new PointerLocker(data.scrollTarget);\r\n this._wheelLocker = new WheelLocker(data.scrollTarget)\r\n }\r\n this.callBase(data)\r\n },\r\n _init: function(e) {\r\n this._wheelLocker.check(e, function() {\r\n if ((0, _index.isDxMouseWheelEvent)(e)) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._pointerLocker.check(e, function() {\r\n var skipCheck = this.isNative && (0, _index.isMouseEvent)(e);\r\n if (!(0, _index.isDxMouseWheelEvent)(e) && !skipCheck) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._fireEvent(SCROLL_INIT_EVENT, e);\r\n this._prevEventData = (0, _index.eventData)(e)\r\n },\r\n move: function(e) {\r\n this.callBase.apply(this, arguments);\r\n e.isScrollingEvent = this.isNative || e.isScrollingEvent\r\n },\r\n _start: function(e) {\r\n this._savedEventData = (0, _index.eventData)(e);\r\n this._fireEvent(SCROLL_START_EVENT, e);\r\n this._prevEventData = (0, _index.eventData)(e)\r\n },\r\n _move: function(e) {\r\n var currentEventData = (0, _index.eventData)(e);\r\n this._fireEvent(SCROLL_MOVE_EVENT, e, {\r\n delta: (0, _index.eventDelta)(this._prevEventData, currentEventData)\r\n });\r\n var delta = (0, _index.eventDelta)(this._savedEventData, currentEventData);\r\n if (delta.time > VELOCITY_CALC_TIMEOUT) {\r\n this._savedEventData = this._prevEventData\r\n }\r\n this._prevEventData = (0, _index.eventData)(e)\r\n },\r\n _end: function(e) {\r\n var endEventDelta = (0, _index.eventDelta)(this._prevEventData, (0, _index.eventData)(e));\r\n var velocity = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (!(0, _index.isDxMouseWheelEvent)(e) && endEventDelta.time < INERTIA_TIMEOUT) {\r\n var delta = (0, _index.eventDelta)(this._savedEventData, this._prevEventData);\r\n var velocityMultiplier = FRAME_DURATION / delta.time;\r\n velocity = {\r\n x: delta.x * velocityMultiplier,\r\n y: delta.y * velocityMultiplier\r\n }\r\n }\r\n this._fireEvent(SCROLL_END_EVENT, e, {\r\n velocity: velocity\r\n })\r\n },\r\n _stop: function(e) {\r\n this._fireEvent(SCROLL_STOP_EVENT, e)\r\n },\r\n cancel: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._fireEvent(SCROLL_CANCEL_EVENT, e)\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose()\r\n },\r\n _clearSelection: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleGestureCover: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n}());\r\n(0, _emitter_registrator.default)({\r\n emitter: ScrollEmitter,\r\n events: [SCROLL_INIT_EVENT, SCROLL_START_EVENT, SCROLL_MOVE_EVENT, SCROLL_END_EVENT, SCROLL_STOP_EVENT, SCROLL_CANCEL_EVENT]\r\n});\r\nvar _default = {\r\n init: SCROLL_INIT_EVENT,\r\n start: SCROLL_START_EVENT,\r\n move: SCROLL_MOVE_EVENT,\r\n end: SCROLL_END_EVENT,\r\n stop: SCROLL_STOP_EVENT,\r\n cancel: SCROLL_CANCEL_EVENT\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.native.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _ui = _interopRequireDefault(require(\"./ui.scrollbar\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLABLE_NATIVE = \"dxNativeScrollable\";\r\nvar SCROLLABLE_NATIVE_CLASS = \"dx-scrollable-native\";\r\nvar SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar HIDE_SCROLLBAR_TIMEOUT = 500;\r\nvar NativeStrategy = _class.default.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = scrollable._$container;\r\n this._$content = scrollable._$content;\r\n this._direction = scrollable.option(\"direction\");\r\n this._useSimulatedScrollbar = scrollable.option(\"useSimulatedScrollbar\");\r\n this._showScrollbar = scrollable.option(\"showScrollbar\");\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getScrollOffset = scrollable._getScrollOffset.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)\r\n },\r\n render: function() {\r\n this._renderPushBackOffset();\r\n var device = _devices.default.real();\r\n var deviceType = device.platform;\r\n this._$element.addClass(SCROLLABLE_NATIVE_CLASS).addClass(SCROLLABLE_NATIVE_CLASS + \"-\" + deviceType).toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this._showScrollbar);\r\n if (this._showScrollbar && this._useSimulatedScrollbar) {\r\n this._renderScrollbars()\r\n }\r\n },\r\n updateBounds: _common.noop,\r\n _renderPushBackOffset: function() {\r\n var pushBackValue = this.option(\"pushBackValue\");\r\n if (!pushBackValue && !this._component._lastPushBackValue) {\r\n return\r\n }\r\n this._$content.css({\r\n paddingTop: pushBackValue,\r\n paddingBottom: pushBackValue\r\n });\r\n this._component._lastPushBackValue = pushBackValue\r\n },\r\n _renderScrollbars: function() {\r\n this._scrollbars = {};\r\n this._hideScrollbarTimeout = 0;\r\n this._$element.addClass(SCROLLABLE_SCROLLBAR_SIMULATED);\r\n this._renderScrollbar(VERTICAL);\r\n this._renderScrollbar(HORIZONTAL)\r\n },\r\n _renderScrollbar: function(direction) {\r\n if (!this._isDirection(direction)) {\r\n return\r\n }\r\n this._scrollbars[direction] = new _ui.default((0, _renderer.default)(\"
\").appendTo(this._$element), {\r\n direction: direction,\r\n expandable: this._component.option(\"scrollByThumb\")\r\n })\r\n },\r\n handleInit: _common.noop,\r\n handleStart: function() {\r\n this._disablePushBack = true\r\n },\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._allowedDirection()) {\r\n e.originalEvent.isScrollingEvent = true\r\n }\r\n },\r\n handleEnd: function() {\r\n this._disablePushBack = false\r\n },\r\n handleCancel: _common.noop,\r\n handleStop: _common.noop,\r\n _eachScrollbar: function(callback) {\r\n callback = callback.bind(this);\r\n (0, _iterator.each)(this._scrollbars || {}, function(direction, scrollbar) {\r\n callback(scrollbar, direction)\r\n })\r\n },\r\n createActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._updateAction = this._createActionByOption(\"onUpdated\")\r\n },\r\n _createActionArgs: function() {\r\n var _this$location = this.location(),\r\n left = _this$location.left,\r\n top = _this$location.top;\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 - 2 * this.option(\"pushBackValue\") : 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 if (!this._isScrollLocationChanged()) {\r\n e.stopImmediatePropagation();\r\n return\r\n }\r\n this._eventForUserAction = e;\r\n this._moveScrollbars();\r\n this._scrollAction(this._createActionArgs());\r\n this._lastLocation = this.location();\r\n this._pushBackFromBoundary()\r\n },\r\n _pushBackFromBoundary: function() {\r\n var pushBackValue = this.option(\"pushBackValue\");\r\n if (!pushBackValue || this._disablePushBack) {\r\n return\r\n }\r\n var scrollOffset = this._containerSize.height - this._contentSize.height;\r\n var scrollTopPos = this._$container.scrollTop();\r\n var scrollBottomPos = scrollOffset + scrollTopPos - 2 * pushBackValue;\r\n if (!scrollTopPos) {\r\n this._$container.scrollTop(pushBackValue)\r\n } else {\r\n if (!scrollBottomPos) {\r\n this._$container.scrollTop(pushBackValue - scrollOffset)\r\n }\r\n }\r\n },\r\n _isScrollLocationChanged: function() {\r\n var currentLocation = this.location();\r\n var lastLocation = this._lastLocation || {};\r\n var isTopChanged = lastLocation.top !== currentLocation.top;\r\n var isLeftChanged = lastLocation.left !== currentLocation.left;\r\n return isTopChanged || isLeftChanged\r\n },\r\n _moveScrollbars: function() {\r\n this._eachScrollbar(function(scrollbar) {\r\n scrollbar.moveTo(this.location());\r\n scrollbar.option(\"visible\", true)\r\n });\r\n this._hideScrollbars()\r\n },\r\n _hideScrollbars: function() {\r\n clearTimeout(this._hideScrollbarTimeout);\r\n this._hideScrollbarTimeout = setTimeout(function() {\r\n this._eachScrollbar(function(scrollbar) {\r\n scrollbar.option(\"visible\", false)\r\n })\r\n }.bind(this), HIDE_SCROLLBAR_TIMEOUT)\r\n },\r\n location: function() {\r\n return {\r\n left: -this._$container.scrollLeft(),\r\n top: this.option(\"pushBackValue\") - this._$container.scrollTop()\r\n }\r\n },\r\n disabledChanged: _common.noop,\r\n update: function() {\r\n this._update();\r\n this._updateAction(this._createActionArgs())\r\n },\r\n _update: function() {\r\n this._updateDimensions();\r\n this._updateScrollbars()\r\n },\r\n _updateDimensions: function() {\r\n this._containerSize = {\r\n height: this._$container.height(),\r\n width: this._$container.width()\r\n };\r\n this._componentContentSize = {\r\n height: this._component.$content().height(),\r\n width: this._component.$content().width()\r\n };\r\n this._contentSize = {\r\n height: this._$content.height(),\r\n width: this._$content.width()\r\n };\r\n this._pushBackFromBoundary()\r\n },\r\n _updateScrollbars: function() {\r\n this._eachScrollbar(function(scrollbar, direction) {\r\n var dimension = direction === VERTICAL ? \"height\" : \"width\";\r\n scrollbar.option({\r\n containerSize: this._containerSize[dimension],\r\n contentSize: this._componentContentSize[dimension]\r\n });\r\n scrollbar.update()\r\n })\r\n },\r\n _allowedDirections: function() {\r\n return {\r\n vertical: this._isDirection(VERTICAL) && this._contentSize.height > this._containerSize.height,\r\n horizontal: this._isDirection(HORIZONTAL) && this._contentSize.width > this._containerSize.width\r\n }\r\n },\r\n dispose: function() {\r\n var className = this._$element.get(0).className;\r\n var scrollableNativeRegexp = new RegExp(SCROLLABLE_NATIVE_CLASS + \"\\\\S*\", \"g\");\r\n if (scrollableNativeRegexp.test(className)) {\r\n this._$element.removeClass(className.match(scrollableNativeRegexp).join(\" \"))\r\n }\r\n _events_engine.default.off(this._$element, \".\" + SCROLLABLE_NATIVE);\r\n _events_engine.default.off(this._$container, \".\" + SCROLLABLE_NATIVE);\r\n this._removeScrollbars();\r\n clearTimeout(this._hideScrollbarTimeout)\r\n },\r\n _removeScrollbars: function() {\r\n this._eachScrollbar(function(scrollbar) {\r\n scrollbar.$element().remove()\r\n })\r\n },\r\n scrollBy: function(distance) {\r\n var location = this.location();\r\n this._$container.scrollTop(Math.round(-location.top - distance.top + this.option(\"pushBackValue\")));\r\n this._$container.scrollLeft(Math.round(-location.left - distance.left))\r\n },\r\n validate: function(e) {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if ((0, _index.isDxMouseWheelEvent)(e) && this._isScrolledInMaxDirection(e)) {\r\n return false\r\n }\r\n return !!this._allowedDirection()\r\n },\r\n _isScrolledInMaxDirection: function(e) {\r\n var container = this._$container.get(0);\r\n var result;\r\n if (e.delta > 0) {\r\n result = e.shiftKey ? !container.scrollLeft : !container.scrollTop\r\n } else {\r\n if (e.shiftKey) {\r\n result = container.scrollLeft >= this._getMaxOffset().left\r\n } else {\r\n result = container.scrollTop >= this._getMaxOffset().top\r\n }\r\n }\r\n return result\r\n },\r\n getDirection: function() {\r\n return this._allowedDirection()\r\n },\r\n verticalOffset: function() {\r\n return this.option(\"pushBackValue\")\r\n }\r\n});\r\nvar _default = NativeStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/shared/grouped_data_converter_mixin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar isCorrectStructure = function(data) {\r\n return Array.isArray(data) && data.every(function(item) {\r\n var hasTwoFields = 2 === Object.keys(item).length;\r\n var hasCorrectFields = \"key\" in item && \"items\" in item;\r\n return hasTwoFields && hasCorrectFields && Array.isArray(item.items)\r\n })\r\n};\r\nvar _default = {\r\n _getSpecificDataSourceOption: function() {\r\n var groupKey = \"key\";\r\n var dataSource = this.option(\"dataSource\");\r\n var hasSimpleItems = false;\r\n var data = {};\r\n if (this._getGroupedOption() && isCorrectStructure(dataSource)) {\r\n data = dataSource.reduce(function(accumulator, item) {\r\n var items = item.items.map(function(innerItem) {\r\n if (!(0, _type.isObject)(innerItem)) {\r\n innerItem = {\r\n text: innerItem\r\n };\r\n hasSimpleItems = true\r\n }\r\n if (!(groupKey in innerItem)) {\r\n innerItem[groupKey] = item.key\r\n }\r\n return innerItem\r\n });\r\n return accumulator.concat(items)\r\n }, []);\r\n dataSource = {\r\n store: {\r\n type: \"array\",\r\n data: data\r\n },\r\n group: {\r\n selector: \"key\",\r\n keepInitialKeyOrder: true\r\n }\r\n };\r\n if (hasSimpleItems) {\r\n dataSource.searchExpr = \"text\"\r\n }\r\n }\r\n return dataSource\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/sortable.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _draggable = _interopRequireDefault(require(\"./draggable\"));\r\nvar _element = require(\"../core/element\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _fx = _interopRequireDefault(require(\"../animation/fx\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar SORTABLE = \"dxSortable\";\r\nvar PLACEHOLDER_CLASS = \"placeholder\";\r\nvar CLONE_CLASS = \"clone\";\r\nvar isElementVisible = function(itemElement) {\r\n return (0, _renderer.default)(itemElement).is(\":visible\")\r\n};\r\nvar animate = function(element, config) {\r\n var _config$to, _config$to2;\r\n if (!element) {\r\n return\r\n }\r\n var left = (null === (_config$to = config.to) || void 0 === _config$to ? void 0 : _config$to.left) || 0;\r\n var top = (null === (_config$to2 = config.to) || void 0 === _config$to2 ? void 0 : _config$to2.top) || 0;\r\n element.style.transform = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\r\n element.style.transition = _fx.default.off ? \"\" : \"transform \".concat(config.duration, \"ms \").concat(config.easing)\r\n};\r\nvar stopAnimation = function(element) {\r\n if (!element) {\r\n return\r\n }\r\n element.style.transform = \"\";\r\n element.style.transition = \"\"\r\n};\r\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.default.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 (0, _extend.extend)(this.callBase(), {\r\n clone: true,\r\n filter: \"> *\",\r\n itemOrientation: \"vertical\",\r\n dropFeedbackMode: \"push\",\r\n allowDropInsideItem: false,\r\n allowReordering: true,\r\n moveItemOnDrop: false,\r\n onDragChange: null,\r\n onAdd: null,\r\n onRemove: null,\r\n onReorder: null,\r\n onPlaceholderPrepared: null,\r\n animation: {\r\n type: \"slide\",\r\n duration: 300,\r\n easing: \"ease\"\r\n },\r\n fromIndex: null,\r\n toIndex: null,\r\n dropInsideItem: false,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n offset: 0,\r\n autoUpdate: false,\r\n draggableElementSize: 0\r\n })\r\n },\r\n reset: function() {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null,\r\n fromIndex: null,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n draggableElementSize: 0\r\n });\r\n if (this._$placeholderElement) {\r\n this._$placeholderElement.remove()\r\n }\r\n this._$placeholderElement = null;\r\n if (!this._isIndicateMode() && this._$modifiedItem) {\r\n this._$modifiedItem.css(\"marginBottom\", this._modifiedItemMargin);\r\n this._$modifiedItem = null\r\n }\r\n },\r\n _getPrevVisibleItem: function(items, index) {\r\n return items.slice(0, index).reverse().filter(isElementVisible)[0]\r\n },\r\n _dragStartHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (true === e.cancel) {\r\n return\r\n }\r\n var $sourceElement = this._getSourceElement();\r\n this._updateItemPoints();\r\n this._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((0, _renderer.default)(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 _events_engine.default.on($scrollable, \"scroll\", this._sourceScrollHandler)\r\n }\r\n },\r\n _unsubscribeFromSourceScroll: function() {\r\n if (this._sourceScrollableInfo) {\r\n _events_engine.default.off(this._sourceScrollableInfo.element, \"scroll\", this._sourceScrollHandler);\r\n this._sourceScrollableInfo = null\r\n }\r\n },\r\n _handleSourceScroll: function(e) {\r\n var _this = this;\r\n var sourceScrollableInfo = this._sourceScrollableInfo;\r\n if (sourceScrollableInfo) {\r\n [\"scrollLeft\", \"scrollTop\"].forEach(function(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 = (0, _renderer.default)(this._getPrevVisibleItem(items));\r\n this._$modifiedItem = $lastItem;\r\n this._modifiedItemMargin = $lastItem.get(0).style.marginBottom;\r\n $lastItem.css(\"marginBottom\", sourceElementSize - freeSize);\r\n var $sortable = $lastItem.closest(\".dx-sortable\");\r\n var sortable = $sortable.data(\"dxScrollable\") || $sortable.data(\"dxScrollView\");\r\n sortable && sortable.update()\r\n }\r\n }\r\n }\r\n }\r\n },\r\n dragEnter: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", -1)\r\n }\r\n },\r\n dragLeave: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", this.option(\"fromIndex\"))\r\n }\r\n },\r\n _isInsideTargetDraggable: function(event) {\r\n var $targetDraggable = this._getTargetDraggable().$element();\r\n var $scrollable = this._getScrollable($targetDraggable);\r\n if ($scrollable) {\r\n var _getScrollableBoundar = getScrollableBoundary($scrollable),\r\n left = _getScrollableBoundar.left,\r\n right = _getScrollableBoundar.right,\r\n top = _getScrollableBoundar.top,\r\n bottom = _getScrollableBoundar.bottom;\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 (0, _translator.resetPosition)($sourceElement)\r\n }\r\n if (this.option(\"moveItemOnDrop\")) {\r\n !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove)\r\n }\r\n if (sourceDraggable === this) {\r\n return this._fireReorderEvent(sourceEvent)\r\n }\r\n }\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n dragMove: function(e) {\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 = (0, _renderer.default)(\"
\").addClass(this._addWidgetPrefix(PLACEHOLDER_CLASS)).insertBefore(this._getSourceDraggable()._$dragElement)\r\n }\r\n this._$placeholderElement = $placeholderContainer;\r\n return $placeholderContainer\r\n },\r\n _getItems: function() {\r\n var itemsSelector = this._getItemsSelector();\r\n return this._$content().find(itemsSelector).not(\".\" + this._addWidgetPrefix(PLACEHOLDER_CLASS)).not(\".\" + this._addWidgetPrefix(CLONE_CLASS)).toArray()\r\n },\r\n _allowReordering: function() {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return sourceDraggable !== targetDraggable || this.option(\"allowReordering\")\r\n },\r\n _isValidPoint: function(visibleIndex, draggableVisibleIndex, dropInsideItem) {\r\n var allowDropInsideItem = this.option(\"allowDropInsideItem\");\r\n var allowReordering = dropInsideItem || this._allowReordering();\r\n if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) {\r\n return false\r\n }\r\n if (!this._isIndicateMode()) {\r\n return true\r\n }\r\n return draggableVisibleIndex === -1 || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1)\r\n },\r\n _getItemPoints: function() {\r\n var that = this;\r\n var result = [];\r\n var $item;\r\n var offset;\r\n var itemWidth;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var isVertical = that._isVerticalOrientation();\r\n var itemElements = that._getItems();\r\n var visibleItemElements = itemElements.filter(isElementVisible);\r\n var visibleItemCount = visibleItemElements.length;\r\n var $draggableItem = this._getDraggableElement();\r\n var draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0));\r\n if (visibleItemCount) {\r\n for (var i = 0; i <= visibleItemCount; i++) {\r\n var needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount;\r\n var needCorrectTopPosition = isVertical && i === visibleItemCount;\r\n if (i < visibleItemCount) {\r\n $item = (0, _renderer.default)(visibleItemElements[i]);\r\n offset = $item.offset();\r\n itemWidth = $item.outerWidth()\r\n }\r\n result.push({\r\n dropInsideItem: false,\r\n left: offset.left + (needCorrectLeftPosition ? itemWidth : 0),\r\n top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0),\r\n index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)),\r\n $item: $item,\r\n width: $item.outerWidth(),\r\n height: $item.outerHeight(),\r\n isValid: that._isValidPoint(i, draggableVisibleIndex)\r\n })\r\n }\r\n if (this.option(\"allowDropInsideItem\")) {\r\n var points = result;\r\n result = [];\r\n for (var _i = 0; _i < points.length; _i++) {\r\n result.push(points[_i]);\r\n if (points[_i + 1]) {\r\n result.push((0, _extend.extend)({}, points[_i], {\r\n dropInsideItem: true,\r\n top: Math.floor((points[_i].top + points[_i + 1].top) / 2),\r\n left: Math.floor((points[_i].left + points[_i + 1].left) / 2),\r\n isValid: this._isValidPoint(_i, draggableVisibleIndex, true)\r\n }))\r\n }\r\n }\r\n }\r\n } else {\r\n result.push({\r\n dropInsideItem: false,\r\n index: 0,\r\n isValid: true\r\n })\r\n }\r\n return result\r\n },\r\n _updateItemPoints: function(forceUpdate) {\r\n if (forceUpdate || this.option(\"autoUpdate\") || !this.option(\"itemPoints\")) {\r\n this.option(\"itemPoints\", this._getItemPoints())\r\n }\r\n },\r\n _correctItemPoints: function(scrollBy) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (scrollBy && itemPoints && !this.option(\"autoUpdate\")) {\r\n var isVertical = this._isVerticalOrientation();\r\n var positionPropName = isVertical ? \"top\" : \"left\";\r\n itemPoints.forEach(function(itemPoint) {\r\n itemPoint[positionPropName] -= scrollBy\r\n })\r\n }\r\n },\r\n _getElementIndex: function($itemElement) {\r\n return this._getItems().indexOf($itemElement.get(0))\r\n },\r\n _getDragTemplateArgs: function($element) {\r\n var args = this.callBase.apply(this, arguments);\r\n args.model.fromIndex = this._getElementIndex($element);\r\n return args\r\n },\r\n _togglePlaceholder: function(value) {\r\n this._$placeholderElement && this._$placeholderElement.toggle(value)\r\n },\r\n _isVerticalOrientation: function() {\r\n return \"vertical\" === this.option(\"itemOrientation\")\r\n },\r\n _normalizeToIndex: function(toIndex, dropInsideItem) {\r\n var isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable();\r\n var fromIndex = this.option(\"fromIndex\");\r\n if (null === toIndex) {\r\n return fromIndex\r\n }\r\n return Math.max(isAnotherDraggable || fromIndex >= toIndex || dropInsideItem ? toIndex : toIndex - 1, 0)\r\n },\r\n _updatePlaceholderPosition: function(e, itemPoint) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem);\r\n var eventArgs = (0, _extend.extend)(this._getEventArgs(e), {\r\n toIndex: toIndex,\r\n dropInsideItem: itemPoint.dropInsideItem\r\n });\r\n itemPoint.isValid && this._getAction(\"onDragChange\")(eventArgs);\r\n if (eventArgs.cancel || !itemPoint.isValid) {\r\n if (!itemPoint.isValid) {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null\r\n })\r\n }\r\n return\r\n }\r\n this.option({\r\n dropInsideItem: itemPoint.dropInsideItem,\r\n toIndex: itemPoint.index\r\n });\r\n this._getAction(\"onPlaceholderPrepared\")((0, _extend.extend)(this._getEventArgs(e), {\r\n placeholderElement: (0, _element.getPublicElement)(this._$placeholderElement),\r\n dragElement: (0, _element.getPublicElement)(sourceDraggable._$dragElement)\r\n }));\r\n this._updateItemPoints()\r\n },\r\n _makeWidthCorrection: function($item, width) {\r\n this._$scrollable = this._getScrollable($item);\r\n if (this._$scrollable && this._$scrollable.width() < width) {\r\n var scrollableWidth = this._$scrollable.width();\r\n var offsetLeft = $item.offset().left - this._$scrollable.offset().left;\r\n var offsetRight = scrollableWidth - $item.outerWidth() - offsetLeft;\r\n if (offsetLeft > 0) {\r\n width = scrollableWidth - offsetLeft\r\n } else {\r\n if (offsetRight > 0) {\r\n width = scrollableWidth - offsetRight\r\n } else {\r\n width = scrollableWidth\r\n }\r\n }\r\n }\r\n return width\r\n },\r\n _updatePlaceholderSizes: function($placeholderElement, itemElement) {\r\n var that = this;\r\n var dropInsideItem = that.option(\"dropInsideItem\");\r\n var $item = (0, _renderer.default)(itemElement);\r\n var isVertical = that._isVerticalOrientation();\r\n var width = \"\";\r\n var height = \"\";\r\n $placeholderElement.toggleClass(that._addWidgetPrefix(\"placeholder-inside\"), dropInsideItem);\r\n if (isVertical || dropInsideItem) {\r\n width = $item.outerWidth()\r\n }\r\n if (!isVertical || dropInsideItem) {\r\n height = $item.outerHeight()\r\n }\r\n width = that._makeWidthCorrection($item, width);\r\n $placeholderElement.css({\r\n width: width,\r\n height: height\r\n })\r\n },\r\n _moveItem: function($itemElement, index, cancelRemove) {\r\n var $prevTargetItemElement;\r\n var $itemElements = this._getItems();\r\n var $targetItemElement = $itemElements[index];\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (cancelRemove) {\r\n $itemElement = $itemElement.clone();\r\n sourceDraggable._toggleDragSourceClass(false, $itemElement)\r\n }\r\n if (!$targetItemElement) {\r\n $prevTargetItemElement = $itemElements[index - 1]\r\n }\r\n this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement)\r\n },\r\n _moveItemCore: function($targetItem, item, prevItem) {\r\n if (!item && !prevItem) {\r\n $targetItem.appendTo(this.$element())\r\n } else {\r\n if (prevItem) {\r\n $targetItem.insertAfter((0, _renderer.default)(prevItem))\r\n } else {\r\n $targetItem.insertBefore((0, _renderer.default)(item))\r\n }\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n return (0, _extend.extend)(this.callBase.apply(this, arguments), {\r\n fromIndex: this._getElementIndex($itemElement)\r\n })\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n var dropInsideItem = targetDraggable.option(\"dropInsideItem\");\r\n return (0, _extend.extend)(this.callBase.apply(this, arguments), {\r\n fromIndex: sourceDraggable.option(\"fromIndex\"),\r\n toIndex: this._normalizeToIndex(targetDraggable.option(\"toIndex\"), dropInsideItem),\r\n dropInsideItem: dropInsideItem\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var _this2 = this;\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragChange\":\r\n case \"onPlaceholderPrepared\":\r\n case \"onAdd\":\r\n case \"onRemove\":\r\n case \"onReorder\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"itemOrientation\":\r\n case \"allowDropInsideItem\":\r\n case \"moveItemOnDrop\":\r\n case \"dropFeedbackMode\":\r\n case \"itemPoints\":\r\n case \"animation\":\r\n case \"allowReordering\":\r\n case \"fromIndexOffset\":\r\n case \"offset\":\r\n case \"draggableElementSize\":\r\n case \"autoUpdate\":\r\n break;\r\n case \"fromIndex\":\r\n [false, true].forEach(function(isDragSource) {\r\n var fromIndex = isDragSource ? args.value : args.previousValue;\r\n if (null !== fromIndex) {\r\n var $fromElement = (0, _renderer.default)(_this2._getItems()[fromIndex]);\r\n _this2._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\" !== (0, _renderer.default)(this).css(\"overflow\")) {\r\n scrollContainer = this;\r\n return false\r\n }\r\n })\r\n }\r\n if (scrollContainer) {\r\n var clientRect = (0, _position.getBoundingRect)(scrollContainer);\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var start = isVerticalOrientation ? \"top\" : \"left\";\r\n var end = isVerticalOrientation ? \"bottom\" : \"right\";\r\n var pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset;\r\n if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _optionChangedToIndex: function(args) {\r\n var toIndex = args.value;\r\n if (this._isIndicateMode()) {\r\n var showPlaceholder = null !== toIndex && toIndex >= 0;\r\n this._togglePlaceholder(showPlaceholder);\r\n if (showPlaceholder) {\r\n this._movePlaceholder()\r\n }\r\n } else {\r\n this._moveItems(args.previousValue, args.value, args.fullUpdate)\r\n }\r\n },\r\n update: function() {\r\n if (null === this.option(\"fromIndex\") && null === this.option(\"toIndex\")) {\r\n return\r\n }\r\n this._updateItemPoints(true);\r\n this._updateDragSourceClass();\r\n var toIndex = this.option(\"toIndex\");\r\n this._optionChangedToIndex({\r\n value: toIndex,\r\n fullUpdate: true\r\n })\r\n },\r\n _updateDragSourceClass: function() {\r\n var fromIndex = this._getActualFromIndex();\r\n var $fromElement = (0, _renderer.default)(this._getItems()[fromIndex]);\r\n if ($fromElement.length) {\r\n this._$sourceElement = $fromElement;\r\n this._toggleDragSourceClass(true, $fromElement)\r\n }\r\n },\r\n _makeLeftCorrection: function(left, leftMargin) {\r\n var that = this;\r\n var $scrollable = that._$scrollable;\r\n if ($scrollable && that._isVerticalOrientation() && $scrollable.scrollLeft() > leftMargin) {\r\n left += $scrollable.scrollLeft() - leftMargin\r\n }\r\n return left\r\n },\r\n _movePlaceholder: function() {\r\n var that = this;\r\n var $placeholderElement = that._$placeholderElement || that._createPlaceholder();\r\n var items = that._getItems();\r\n var toIndex = that.option(\"toIndex\");\r\n var isVerticalOrientation = that._isVerticalOrientation();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var dropInsideItem = that.option(\"dropInsideItem\");\r\n var position = null;\r\n var leftMargin = 0;\r\n var itemElement = items[toIndex];\r\n if (itemElement) {\r\n var $itemElement = (0, _renderer.default)(itemElement);\r\n position = $itemElement.offset();\r\n leftMargin = parseFloat($itemElement.css(\"marginLeft\"));\r\n if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) {\r\n position.left += $itemElement.outerWidth(true)\r\n }\r\n } else {\r\n var prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex);\r\n if (prevVisibleItemElement) {\r\n position = (0, _renderer.default)(prevVisibleItemElement).offset();\r\n if (isVerticalOrientation) {\r\n position.top += (0, _renderer.default)(prevVisibleItemElement).outerHeight(true)\r\n } else {\r\n if (!rtlEnabled) {\r\n position.left += (0, _renderer.default)(prevVisibleItemElement).outerWidth(true)\r\n }\r\n }\r\n }\r\n }\r\n that._updatePlaceholderSizes($placeholderElement, itemElement);\r\n if (position && !that._isPositionVisible(position)) {\r\n position = null\r\n }\r\n if (position) {\r\n position.left = that._makeLeftCorrection(position.left, leftMargin);\r\n that._move(position, $placeholderElement)\r\n }\r\n $placeholderElement.toggle(!!position)\r\n },\r\n _getPositions: function(items, elementSize, fromIndex, toIndex) {\r\n var positions = [];\r\n for (var i = 0; i < items.length; i++) {\r\n var position = 0;\r\n if (null === toIndex || null === fromIndex) {\r\n positions.push(position);\r\n continue\r\n }\r\n if (fromIndex === -1) {\r\n if (i >= toIndex) {\r\n position = elementSize\r\n }\r\n } else {\r\n if (toIndex === -1) {\r\n if (i > fromIndex) {\r\n position = -elementSize\r\n }\r\n } else {\r\n if (fromIndex < toIndex) {\r\n if (i > fromIndex && i < toIndex) {\r\n position = -elementSize\r\n }\r\n } else {\r\n if (fromIndex > toIndex) {\r\n if (i >= toIndex && i < fromIndex) {\r\n position = elementSize\r\n }\r\n }\r\n }\r\n }\r\n }\r\n positions.push(position)\r\n }\r\n return positions\r\n },\r\n _getDraggableElementSize: function(isVerticalOrientation) {\r\n var $draggableItem = this._getDraggableElement();\r\n var size = this.option(\"draggableElementSize\");\r\n if (!size) {\r\n size = isVerticalOrientation ? ($draggableItem.outerHeight() + $draggableItem.outerHeight(true)) / 2 : ($draggableItem.outerWidth() + $draggableItem.outerWidth(true)) / 2;\r\n if (!this.option(\"autoUpdate\")) {\r\n this.option(\"draggableElementSize\", size)\r\n }\r\n }\r\n return size\r\n },\r\n _getActualFromIndex: function() {\r\n var _this$option = this.option(),\r\n fromIndex = _this$option.fromIndex,\r\n fromIndexOffset = _this$option.fromIndexOffset,\r\n offset = _this$option.offset;\r\n return null == fromIndex ? null : fromIndex + fromIndexOffset - offset\r\n },\r\n _moveItems: function(prevToIndex, toIndex, fullUpdate) {\r\n var fromIndex = this._getActualFromIndex();\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var positionPropName = isVerticalOrientation ? \"top\" : \"left\";\r\n var elementSize = this._getDraggableElementSize(isVerticalOrientation);\r\n var items = this._getItems();\r\n var prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex);\r\n var positions = this._getPositions(items, elementSize, fromIndex, toIndex);\r\n var animationConfig = this.option(\"animation\");\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n for (var i = 0; i < items.length; i++) {\r\n var itemElement = items[i];\r\n var prevPosition = prevPositions[i];\r\n var position = positions[i];\r\n if (null === toIndex || null === fromIndex) {\r\n stopAnimation(itemElement)\r\n } else {\r\n if (prevPosition !== position || fullUpdate && position) {\r\n animate(itemElement, (0, _extend.extend)({}, animationConfig, {\r\n to: _defineProperty({}, positionPropName, !isVerticalOrientation && rtlEnabled ? -position : position)\r\n }))\r\n }\r\n }\r\n }\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n this.callBase.apply(this, arguments);\r\n if (!this._isIndicateMode()) {\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source-hidden\"), value)\r\n }\r\n },\r\n _dispose: function() {\r\n this.reset();\r\n this.callBase()\r\n },\r\n _fireAddEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onAdd\")(args);\r\n return args.cancel\r\n },\r\n _fireRemoveEvent: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var args = this._getEventArgs(sourceEvent);\r\n sourceDraggable._getAction(\"onRemove\")(args);\r\n return args.cancel\r\n },\r\n _fireReorderEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onReorder\")(args);\r\n return args.promise || (new _deferred.Deferred).resolve()\r\n }\r\n});\r\n(0, _component_registrator.default)(SORTABLE, Sortable);\r\nvar _default = Sortable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/selection/selection.strategy.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _class.default.inherit({\r\n ctor: function(options) {\r\n this.options = options;\r\n this._setOption(\"disabledItemKeys\", []);\r\n this._clearItemKeys()\r\n },\r\n _clearItemKeys: function() {\r\n this._setOption(\"addedItemKeys\", []);\r\n this._setOption(\"removedItemKeys\", []);\r\n this._setOption(\"removedItems\", []);\r\n this._setOption(\"addedItems\", [])\r\n },\r\n validate: _common.noop,\r\n _setOption: function(name, value) {\r\n this.options[name] = value\r\n },\r\n onSelectionChanged: function onSelectionChanged() {\r\n var addedItemKeys = this.options.addedItemKeys;\r\n var removedItemKeys = this.options.removedItemKeys;\r\n var addedItems = this.options.addedItems;\r\n var removedItems = this.options.removedItems;\r\n var selectedItems = this.options.selectedItems;\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n var onSelectionChanged = this.options.onSelectionChanged || _common.noop;\r\n this._clearItemKeys();\r\n onSelectionChanged({\r\n selectedItems: selectedItems,\r\n selectedItemKeys: selectedItemKeys,\r\n addedItemKeys: addedItemKeys,\r\n removedItemKeys: removedItemKeys,\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n equalKeys: function(key1, key2) {\r\n if (this.options.equalByReference) {\r\n if ((0, _type.isObject)(key1) && (0, _type.isObject)(key2)) {\r\n return key1 === key2\r\n }\r\n }\r\n return (0, _common.equalByValue)(key1, key2)\r\n },\r\n getSelectableItems: function(items) {\r\n return items.filter(function(item) {\r\n return !item.disabled\r\n })\r\n },\r\n _clearSelection: function(keys, preserve, isDeselect, isSelectAll) {\r\n keys = keys || [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n },\r\n _loadFilteredData: function(remoteFilter, localFilter, select, isSelectAll) {\r\n var filterLength = encodeURI(JSON.stringify(remoteFilter)).length;\r\n var needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest;\r\n var deferred = new _deferred.Deferred;\r\n var loadOptions = {\r\n filter: needLoadAllData ? void 0 : remoteFilter,\r\n select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields()\r\n };\r\n if (remoteFilter && 0 === remoteFilter.length) {\r\n deferred.resolve([])\r\n } else {\r\n this.options.load(loadOptions).done(function(items) {\r\n var filteredItems = (0, _type.isPlainObject)(items) ? items.data : items;\r\n if (localFilter && !isSelectAll) {\r\n filteredItems = filteredItems.filter(localFilter)\r\n } else {\r\n if (needLoadAllData) {\r\n filteredItems = (0, _query.default)(filteredItems).filter(remoteFilter).toArray()\r\n }\r\n }\r\n deferred.resolve(filteredItems)\r\n }).fail(deferred.reject.bind(deferred))\r\n }\r\n return deferred\r\n },\r\n updateSelectedItemKeyHash: function(keys) {\r\n for (var i = 0; i < keys.length; i++) {\r\n var keyHash = (0, _common.getKeyHash)(keys[i]);\r\n if (!(0, _type.isObject)(keyHash)) {\r\n this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || [];\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n keyIndices.push(i)\r\n }\r\n }\r\n },\r\n _isAnyItemSelected: function(items) {\r\n for (var i = 0; i < items.length; i++) {\r\n if (this.options.isItemSelected(items[i])) {\r\n return\r\n }\r\n }\r\n return false\r\n },\r\n _getFullSelectAllState: function() {\r\n var items = this.options.plainItems();\r\n var dataFilter = this.options.filter();\r\n var selectedItems = this.options.selectedItems;\r\n if (dataFilter) {\r\n selectedItems = (0, _query.default)(selectedItems).filter(dataFilter).toArray()\r\n }\r\n var selectedItemsLength = selectedItems.length;\r\n if (!selectedItemsLength) {\r\n return this._isAnyItemSelected(items)\r\n }\r\n if (selectedItemsLength >= this.options.totalCount() - this.options.disabledItemKeys.length) {\r\n return true\r\n }\r\n return\r\n },\r\n _getVisibleSelectAllState: function() {\r\n var items = this.getSelectableItems(this.options.plainItems());\r\n var hasSelectedItems = false;\r\n var hasUnselectedItems = false;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var itemData = this.options.getItemData(item);\r\n var key = this.options.keyOf(itemData);\r\n if (this.options.isSelectableItem(item)) {\r\n if (this.isItemKeySelected(key)) {\r\n hasSelectedItems = true\r\n } else {\r\n hasUnselectedItems = true\r\n }\r\n }\r\n }\r\n if (hasSelectedItems) {\r\n return !hasUnselectedItems ? true : void 0\r\n } else {\r\n return false\r\n }\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.simulated.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SimulatedStrategy = exports.Scroller = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _animator = _interopRequireDefault(require(\"./animator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _ui = _interopRequireDefault(require(\"./ui.scrollbar\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar realDevice = _devices.default.real;\r\nvar isSluggishPlatform = \"android\" === realDevice.platform;\r\nvar SCROLLABLE_SIMULATED = \"dxSimulatedScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_SIMULATED_CURSOR = SCROLLABLE_SIMULATED + \"Cursor\";\r\nvar SCROLLABLE_SIMULATED_KEYBOARD = SCROLLABLE_SIMULATED + \"Keyboard\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar ACCELERATION = isSluggishPlatform ? .95 : .92;\r\nvar OUT_BOUNDS_ACCELERATION = .5;\r\nvar MIN_VELOCITY_LIMIT = 1;\r\nvar FRAME_DURATION = Math.round(1e3 / 60);\r\nvar SCROLL_LINE_HEIGHT = 40;\r\nvar VALIDATE_WHEEL_TIMEOUT = 500;\r\nvar BOUNCE_MIN_VELOCITY_LIMIT = MIN_VELOCITY_LIMIT / 5;\r\nvar BOUNCE_DURATION = isSluggishPlatform ? 300 : 400;\r\nvar BOUNCE_FRAMES = BOUNCE_DURATION / FRAME_DURATION;\r\nvar BOUNCE_ACCELERATION_SUM = (1 - Math.pow(ACCELERATION, BOUNCE_FRAMES)) / (1 - ACCELERATION);\r\nvar KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\",\r\n TAB: \"tab\"\r\n};\r\nvar InertiaAnimator = _animator.default.inherit({\r\n ctor: function(scroller) {\r\n this.callBase();\r\n this.scroller = scroller\r\n },\r\n VELOCITY_LIMIT: MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT\r\n },\r\n _step: function() {\r\n this.scroller._scrollStep(this.scroller._velocity);\r\n this.scroller._velocity *= this._acceleration()\r\n },\r\n _acceleration: function() {\r\n return this.scroller._inBounds() ? ACCELERATION : OUT_BOUNDS_ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._scrollComplete()\r\n },\r\n _stop: function() {\r\n this.scroller._stopComplete()\r\n }\r\n});\r\nvar BounceAnimator = InertiaAnimator.inherit({\r\n VELOCITY_LIMIT: BOUNCE_MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return this.scroller._crossBoundOnNextStep() || this.callBase()\r\n },\r\n _acceleration: function() {\r\n return ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._move(this.scroller._bounceLocation);\r\n this.callBase()\r\n }\r\n});\r\nvar Scroller = _class.default.inherit({\r\n ctor: function(options) {\r\n this._initOptions(options);\r\n this._initAnimators();\r\n this._initScrollbar()\r\n },\r\n _initOptions: function(options) {\r\n var _this = this;\r\n this._location = 0;\r\n this._topReached = false;\r\n this._bottomReached = false;\r\n this._axis = options.direction === HORIZONTAL ? \"x\" : \"y\";\r\n this._prop = options.direction === HORIZONTAL ? \"left\" : \"top\";\r\n this._dimension = options.direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._scrollProp = options.direction === HORIZONTAL ? \"scrollLeft\" : \"scrollTop\";\r\n (0, _iterator.each)(options, function(optionName, optionValue) {\r\n _this[\"_\" + optionName] = optionValue\r\n })\r\n },\r\n _initAnimators: function() {\r\n this._inertiaAnimator = new InertiaAnimator(this);\r\n this._bounceAnimator = new BounceAnimator(this)\r\n },\r\n _initScrollbar: function() {\r\n this._scrollbar = new _ui.default((0, _renderer.default)(\"
\").appendTo(this._$container), {\r\n direction: this._direction,\r\n visible: this._scrollByThumb,\r\n visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),\r\n expandable: this._scrollByThumb\r\n });\r\n this._$scrollbar = this._scrollbar.$element()\r\n },\r\n _visibilityModeNormalize: function(mode) {\r\n return true === mode ? \"onScroll\" : false === mode ? \"never\" : mode\r\n },\r\n _scrollStep: function(delta) {\r\n var prevLocation = this._location;\r\n this._location += delta;\r\n this._suppressBounce();\r\n this._move();\r\n if (Math.abs(prevLocation - this._location) < 1) {\r\n return\r\n }\r\n _events_engine.default.triggerHandler(this._$container, {\r\n type: \"scroll\"\r\n })\r\n },\r\n _suppressBounce: function() {\r\n if (this._bounceEnabled || this._inBounds(this._location)) {\r\n return\r\n }\r\n this._velocity = 0;\r\n this._location = this._boundLocation()\r\n },\r\n _boundLocation: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return Math.max(Math.min(location, this._maxOffset), this._minOffset)\r\n },\r\n _move: function(location) {\r\n this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;\r\n this._moveContent();\r\n this._moveScrollbar()\r\n },\r\n _moveContent: function() {\r\n var location = this._location;\r\n this._$container[this._scrollProp](-location / this._getScaleRatio());\r\n this._moveContentByTranslator(location)\r\n },\r\n _getScaleRatio: function() {\r\n if ((0, _window.hasWindow)() && !this._scaleRatio) {\r\n var element = this._$element.get(0);\r\n var realDimension = this._getRealDimension(element, this._dimension);\r\n var baseDimension = this._getBaseDimension(element, this._dimension);\r\n this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100\r\n }\r\n return this._scaleRatio || 1\r\n },\r\n _getRealDimension: function(element, dimension) {\r\n return Math.round((0, _position.getBoundingRect)(element)[dimension])\r\n },\r\n _getBaseDimension: function(element, dimension) {\r\n var dimensionName = \"offset\" + (0, _inflector.titleize)(dimension);\r\n return element[dimensionName]\r\n },\r\n _moveContentByTranslator: function(location) {\r\n var translateOffset;\r\n var minOffset = -this._maxScrollPropValue;\r\n if (location > 0) {\r\n translateOffset = location\r\n } else {\r\n if (location <= minOffset) {\r\n translateOffset = location - minOffset\r\n } else {\r\n translateOffset = location % 1\r\n }\r\n }\r\n if (this._translateOffset === translateOffset) {\r\n return\r\n }\r\n var targetLocation = {};\r\n targetLocation[this._prop] = translateOffset;\r\n this._translateOffset = translateOffset;\r\n if (0 === translateOffset) {\r\n (0, _translator.resetPosition)(this._$content);\r\n return\r\n }(0, _translator.move)(this._$content, targetLocation)\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._location)\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds()) {\r\n this._hideScrollbar();\r\n if (this._completeDeferred) {\r\n this._completeDeferred.resolve()\r\n }\r\n }\r\n this._scrollToBounds()\r\n },\r\n _scrollToBounds: function() {\r\n if (this._inBounds()) {\r\n return\r\n }\r\n this._bounceAction();\r\n this._setupBounce();\r\n this._bounceAnimator.start()\r\n },\r\n _setupBounce: function() {\r\n var boundLocation = this._bounceLocation = this._boundLocation();\r\n var bounceDistance = boundLocation - this._location;\r\n this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM\r\n },\r\n _inBounds: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return this._boundLocation(location) === location\r\n },\r\n _crossBoundOnNextStep: function() {\r\n var location = this._location;\r\n var nextLocation = location + this._velocity;\r\n return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset\r\n },\r\n _initHandler: function(e) {\r\n this._stopDeferred = new _deferred.Deferred;\r\n this._stopScrolling();\r\n this._prepareThumbScrolling(e);\r\n return this._stopDeferred.promise()\r\n },\r\n _stopScrolling: (0, _common.deferRenderer)(function() {\r\n this._hideScrollbar();\r\n this._inertiaAnimator.stop();\r\n this._bounceAnimator.stop()\r\n }),\r\n _prepareThumbScrolling: function(e) {\r\n if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {\r\n return\r\n }\r\n var $target = (0, _renderer.default)(e.originalEvent.target);\r\n var scrollbarClicked = this._isScrollbar($target);\r\n if (scrollbarClicked) {\r\n this._moveToMouseLocation(e)\r\n }\r\n this._thumbScrolling = scrollbarClicked || this._isThumb($target);\r\n this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);\r\n if (this._thumbScrolling) {\r\n this._scrollbar.feedbackOn()\r\n }\r\n },\r\n _isThumbScrollingHandler: function($target) {\r\n return this._isThumb($target)\r\n },\r\n _moveToMouseLocation: function(e) {\r\n var mouseLocation = e[\"page\" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];\r\n var location = this._location + mouseLocation / this._containerToContentRatio() - this._$container.height() / 2;\r\n this._scrollStep(-Math.round(location))\r\n },\r\n _stopComplete: function() {\r\n if (this._stopDeferred) {\r\n this._stopDeferred.resolve()\r\n }\r\n },\r\n _startHandler: function() {\r\n this._showScrollbar()\r\n },\r\n _moveHandler: function(delta) {\r\n if (this._crossThumbScrolling) {\r\n return\r\n }\r\n if (this._thumbScrolling) {\r\n delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())\r\n }\r\n this._scrollBy(delta)\r\n },\r\n _scrollBy: function(delta) {\r\n delta = delta[this._axis];\r\n if (!this._inBounds()) {\r\n delta *= OUT_BOUNDS_ACCELERATION\r\n }\r\n this._scrollStep(delta)\r\n },\r\n _scrollByHandler: function(delta) {\r\n this._scrollBy(delta);\r\n this._scrollComplete()\r\n },\r\n _containerToContentRatio: function() {\r\n return this._scrollbar.containerToContentRatio()\r\n },\r\n _endHandler: function(velocity) {\r\n this._completeDeferred = new _deferred.Deferred;\r\n this._velocity = velocity[this._axis];\r\n this._inertiaHandler();\r\n this._resetThumbScrolling();\r\n return this._completeDeferred.promise()\r\n },\r\n _inertiaHandler: function() {\r\n this._suppressInertia();\r\n this._inertiaAnimator.start()\r\n },\r\n _suppressInertia: function() {\r\n if (!this._inertiaEnabled || this._thumbScrolling) {\r\n this._velocity = 0\r\n }\r\n },\r\n _resetThumbScrolling: function() {\r\n this._thumbScrolling = false;\r\n this._crossThumbScrolling = false\r\n },\r\n _stopHandler: function() {\r\n if (this._thumbScrolling) {\r\n this._scrollComplete()\r\n }\r\n this._resetThumbScrolling();\r\n this._scrollToBounds()\r\n },\r\n _disposeHandler: function() {\r\n this._stopScrolling();\r\n this._$scrollbar.remove()\r\n },\r\n _updateHandler: function() {\r\n this._update();\r\n this._moveToBounds()\r\n },\r\n _update: function() {\r\n var _this2 = this;\r\n this._stopScrolling();\r\n return (0, _common.deferUpdate)(function() {\r\n _this2._resetScaleRatio();\r\n _this2._updateLocation();\r\n _this2._updateBounds();\r\n _this2._updateScrollbar();\r\n (0, _common.deferRender)(function() {\r\n _this2._moveScrollbar();\r\n _this2._scrollbar.update()\r\n })\r\n })\r\n },\r\n _resetScaleRatio: function() {\r\n this._scaleRatio = null\r\n },\r\n _updateLocation: function() {\r\n this._location = ((0, _translator.locate)(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()\r\n },\r\n _updateBounds: function() {\r\n this._maxOffset = Math.round(this._getMaxOffset());\r\n this._minOffset = Math.round(this._getMinOffset())\r\n },\r\n _getMaxOffset: function() {\r\n return 0\r\n },\r\n _getMinOffset: function() {\r\n this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);\r\n return -this._maxScrollPropValue\r\n },\r\n _updateScrollbar: (0, _common.deferUpdater)(function() {\r\n var _this3 = this;\r\n var containerSize = this._containerSize();\r\n var contentSize = this._contentSize();\r\n var baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);\r\n var baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);\r\n (0, _common.deferRender)(function() {\r\n _this3._scrollbar.option({\r\n containerSize: containerSize,\r\n contentSize: contentSize,\r\n baseContainerSize: baseContainerSize,\r\n baseContentSize: baseContentSize,\r\n scaleRatio: _this3._getScaleRatio()\r\n })\r\n })\r\n }),\r\n _moveToBounds: (0, _common.deferRenderer)((0, _common.deferUpdater)((0, _common.deferRenderer)(function() {\r\n var location = this._boundLocation();\r\n var locationChanged = location !== this._location;\r\n this._location = location;\r\n this._move();\r\n if (locationChanged) {\r\n this._scrollAction()\r\n }\r\n }))),\r\n _createActionsHandler: function(actions) {\r\n this._scrollAction = actions.scroll;\r\n this._bounceAction = actions.bounce\r\n },\r\n _showScrollbar: function() {\r\n this._scrollbar.option(\"visible\", true)\r\n },\r\n _hideScrollbar: function() {\r\n this._scrollbar.option(\"visible\", false)\r\n },\r\n _containerSize: function() {\r\n return this._getRealDimension(this._$container.get(0), this._dimension)\r\n },\r\n _contentSize: function() {\r\n var isOverflowHidden = \"hidden\" === this._$content.css(\"overflow\" + this._axis.toUpperCase());\r\n var contentSize = this._getRealDimension(this._$content.get(0), this._dimension);\r\n if (!isOverflowHidden) {\r\n var containerScrollSize = this._$content[0][\"scroll\" + (0, _inflector.titleize)(this._dimension)] * this._getScaleRatio();\r\n contentSize = Math.max(containerScrollSize, contentSize)\r\n }\r\n return contentSize\r\n },\r\n _validateEvent: function(e) {\r\n var $target = (0, _renderer.default)(e.originalEvent.target);\r\n return this._isThumb($target) || this._isScrollbar($target) || this._isContent($target)\r\n },\r\n _isThumb: function($element) {\r\n return this._scrollByThumb && this._scrollbar.isThumb($element)\r\n },\r\n _isScrollbar: function($element) {\r\n return this._scrollByThumb && $element && $element.is(this._$scrollbar)\r\n },\r\n _isContent: function($element) {\r\n return this._scrollByContent && !!$element.closest(this._$element).length\r\n },\r\n _reachedMin: function() {\r\n return this._location <= this._minOffset\r\n },\r\n _reachedMax: function() {\r\n return this._location >= this._maxOffset\r\n },\r\n _cursorEnterHandler: function() {\r\n this._resetScaleRatio();\r\n this._updateScrollbar();\r\n this._scrollbar.cursorEnter()\r\n },\r\n _cursorLeaveHandler: function() {\r\n this._scrollbar.cursorLeave()\r\n },\r\n dispose: _common.noop\r\n});\r\nexports.Scroller = Scroller;\r\nvar hoveredScrollable;\r\nvar activeScrollable;\r\nvar SimulatedStrategy = _class.default.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = scrollable._$container;\r\n this._$wrapper = scrollable._$wrapper;\r\n this._$content = scrollable._$content;\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n 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 this._$element.toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this.option(\"showScrollbar\"))\r\n },\r\n _createScroller: function(direction) {\r\n this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return {\r\n direction: direction,\r\n $content: this._$content,\r\n $container: this._$container,\r\n $wrapper: this._$wrapper,\r\n $element: this._$element,\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n scrollbarVisible: this.option(\"showScrollbar\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n inertiaEnabled: this.option(\"inertiaEnabled\"),\r\n isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)\r\n }\r\n },\r\n _applyScaleRatio: function(targetLocation) {\r\n for (var direction in this._scrollers) {\r\n var prop = this._getPropByDirection(direction);\r\n if ((0, _type.isDefined)(targetLocation[prop])) {\r\n var scroller = this._scrollers[direction];\r\n targetLocation[prop] *= scroller._getScaleRatio()\r\n }\r\n }\r\n return targetLocation\r\n },\r\n _isAnyThumbScrolling: function($target) {\r\n var result = false;\r\n this._eventHandler(\"isThumbScrolling\", $target).done(function(isThumbScrollingVertical, isThumbScrollingHorizontal) {\r\n result = isThumbScrollingVertical || isThumbScrollingHorizontal\r\n });\r\n return result\r\n },\r\n handleInit: function(e) {\r\n this._suppressDirections(e);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"init\", e).done(this._stopAction)\r\n },\r\n _suppressDirections: function(e) {\r\n if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {\r\n this._prepareDirections(true);\r\n return\r\n }\r\n this._prepareDirections();\r\n this._eachScroller(function(scroller, direction) {\r\n var isValid = scroller._validateEvent(e);\r\n this._validDirections[direction] = isValid\r\n })\r\n },\r\n _prepareDirections: function(value) {\r\n value = value || false;\r\n this._validDirections = {};\r\n this._validDirections[HORIZONTAL] = value;\r\n this._validDirections[VERTICAL] = value\r\n },\r\n _eachScroller: function(callback) {\r\n callback = callback.bind(this);\r\n (0, _iterator.each)(this._scrollers, function(direction, scroller) {\r\n callback(scroller, direction)\r\n })\r\n },\r\n handleStart: function(e) {\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"start\").done(this._startAction)\r\n },\r\n _saveActive: function() {\r\n activeScrollable = this\r\n },\r\n _resetActive: function() {\r\n if (activeScrollable === this) {\r\n activeScrollable = null\r\n }\r\n },\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n this._resetActive();\r\n return\r\n }\r\n this._saveActive();\r\n e.preventDefault && e.preventDefault();\r\n this._adjustDistance(e, e.delta);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"move\", e.delta)\r\n },\r\n _adjustDistance: function(e, distance) {\r\n distance.x *= this._validDirections[HORIZONTAL];\r\n distance.y *= this._validDirections[VERTICAL];\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n if (devicePixelRatio && (0, _index.isDxMouseWheelEvent)(e.originalEvent)) {\r\n distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;\r\n distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100\r\n }\r\n },\r\n _tryGetDevicePixelRatio: function() {\r\n if ((0, _window.hasWindow)()) {\r\n return (0, _window.getWindow)().devicePixelRatio\r\n }\r\n },\r\n handleEnd: function(e) {\r\n this._resetActive();\r\n this._refreshCursorState(e.originalEvent && e.originalEvent.target);\r\n this._adjustDistance(e, e.velocity);\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", e.velocity).done(this._endAction)\r\n },\r\n handleCancel: function(e) {\r\n this._resetActive();\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", {\r\n x: 0,\r\n y: 0\r\n })\r\n },\r\n handleStop: function() {\r\n this._resetActive();\r\n this._eventHandler(\"stop\")\r\n },\r\n handleScroll: function() {\r\n this._component._updateRtlConfig();\r\n this._scrollAction()\r\n },\r\n _attachKeyboardHandler: function() {\r\n _events_engine.default.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD));\r\n if (!this.option(\"disabled\") && this.option(\"useKeyboard\")) {\r\n _events_engine.default.on(this._$element, (0, _index.addNamespace)(\"keydown\", SCROLLABLE_SIMULATED_KEYBOARD), this._keyDownHandler.bind(this))\r\n }\r\n },\r\n _keyDownHandler: function(e) {\r\n var _this4 = this;\r\n clearTimeout(this._updateHandlerTimeout);\r\n this._updateHandlerTimeout = setTimeout(function() {\r\n if ((0, _index.normalizeKeyName)(e) === KEY_CODES.TAB) {\r\n _this4._eachScroller(function(scroller) {\r\n scroller._updateHandler()\r\n })\r\n }\r\n });\r\n if (!this._$container.is(_dom_adapter.default.getActiveElement())) {\r\n return\r\n }\r\n var handled = true;\r\n switch ((0, _index.normalizeKeyName)(e)) {\r\n case KEY_CODES.DOWN:\r\n this._scrollByLine({\r\n y: 1\r\n });\r\n break;\r\n case KEY_CODES.UP:\r\n this._scrollByLine({\r\n y: -1\r\n });\r\n break;\r\n case KEY_CODES.RIGHT:\r\n this._scrollByLine({\r\n x: 1\r\n });\r\n break;\r\n case KEY_CODES.LEFT:\r\n this._scrollByLine({\r\n x: -1\r\n });\r\n break;\r\n case KEY_CODES.PAGE_DOWN:\r\n this._scrollByPage(1);\r\n break;\r\n case KEY_CODES.PAGE_UP:\r\n this._scrollByPage(-1);\r\n break;\r\n case KEY_CODES.HOME:\r\n this._scrollToHome();\r\n break;\r\n case KEY_CODES.END:\r\n this._scrollToEnd();\r\n break;\r\n default:\r\n handled = false\r\n }\r\n if (handled) {\r\n e.stopPropagation();\r\n e.preventDefault()\r\n }\r\n },\r\n _scrollByLine: function(lines) {\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n var scrollOffset = SCROLL_LINE_HEIGHT;\r\n if (devicePixelRatio) {\r\n scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100\r\n }\r\n this.scrollBy({\r\n top: (lines.y || 0) * -scrollOffset,\r\n left: (lines.x || 0) * -scrollOffset\r\n })\r\n },\r\n _scrollByPage: function(page) {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n distance[prop] = page * -this._$container[dimension]();\r\n this.scrollBy(distance)\r\n },\r\n _dimensionByProp: function(prop) {\r\n return \"left\" === prop ? \"width\" : \"height\"\r\n },\r\n _getPropByDirection: function(direction) {\r\n return direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _scrollToHome: function() {\r\n var prop = this._wheelProp();\r\n var distance = {};\r\n distance[prop] = 0;\r\n this._component.scrollTo(distance)\r\n },\r\n _scrollToEnd: function() {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n distance[prop] = this._$content[dimension]() - this._$container[dimension]();\r\n this._component.scrollTo(distance)\r\n },\r\n createActions: function() {\r\n this._startAction = this._createActionHandler(\"onStart\");\r\n this._stopAction = this._createActionHandler(\"onStop\");\r\n this._endAction = this._createActionHandler(\"onEnd\");\r\n this._updateAction = this._createActionHandler(\"onUpdated\");\r\n this._createScrollerActions()\r\n },\r\n _createScrollerActions: function() {\r\n this._scrollAction = this._createActionHandler(\"onScroll\");\r\n this._bounceAction = this._createActionHandler(\"onBounce\");\r\n this._eventHandler(\"createActions\", {\r\n scroll: this._scrollAction,\r\n bounce: this._bounceAction\r\n })\r\n },\r\n _createActionHandler: function(optionName) {\r\n var _arguments = arguments,\r\n _this5 = this;\r\n var actionHandler = this._createActionByOption(optionName);\r\n return function() {\r\n actionHandler((0, _extend.extend)(_this5._createActionArgs(), _arguments))\r\n }\r\n },\r\n _createActionArgs: function() {\r\n var _this$_scrollers = this._scrollers,\r\n scrollerX = _this$_scrollers.horizontal,\r\n scrollerY = _this$_scrollers.vertical;\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 = (0, _iterator.map)(this._scrollers, function(scroller) {\r\n return scroller[\"_\" + eventName + \"Handler\"].apply(scroller, args)\r\n });\r\n return _deferred.when.apply(_renderer.default, deferreds).promise()\r\n },\r\n location: function location() {\r\n var location = (0, _translator.locate)(this._$content);\r\n location.top -= this._$container.scrollTop();\r\n location.left -= this._$container.scrollLeft();\r\n return location\r\n },\r\n disabledChanged: function() {\r\n this._attachCursorHandlers()\r\n },\r\n _attachCursorHandlers: function() {\r\n _events_engine.default.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n if (!this.option(\"disabled\") && this._isHoverMode()) {\r\n _events_engine.default.on(this._$element, (0, _index.addNamespace)(\"mouseenter\", SCROLLABLE_SIMULATED_CURSOR), this._cursorEnterHandler.bind(this));\r\n _events_engine.default.on(this._$element, (0, _index.addNamespace)(\"mouseleave\", SCROLLABLE_SIMULATED_CURSOR), this._cursorLeaveHandler.bind(this))\r\n }\r\n },\r\n _isHoverMode: function() {\r\n return \"onHover\" === this.option(\"showScrollbar\")\r\n },\r\n _cursorEnterHandler: function(e) {\r\n e = e || {};\r\n e.originalEvent = e.originalEvent || {};\r\n if (activeScrollable || e.originalEvent._hoverHandled) {\r\n return\r\n }\r\n if (hoveredScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n hoveredScrollable = this;\r\n this._eventHandler(\"cursorEnter\");\r\n e.originalEvent._hoverHandled = true\r\n },\r\n _cursorLeaveHandler: function(e) {\r\n if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {\r\n return\r\n }\r\n this._eventHandler(\"cursorLeave\");\r\n hoveredScrollable = null;\r\n this._refreshCursorState(e && e.relatedTarget)\r\n },\r\n _refreshCursorState: function(target) {\r\n if (!this._isHoverMode() && (!target || activeScrollable)) {\r\n return\r\n }\r\n var $target = (0, _renderer.default)(target);\r\n var $scrollable = $target.closest(\".\".concat(SCROLLABLE_SIMULATED_CLASS, \":not(.dx-state-disabled)\"));\r\n var targetScrollable = $scrollable.length && $scrollable.data(SCROLLABLE_STRATEGY);\r\n if (hoveredScrollable && hoveredScrollable !== targetScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n if (targetScrollable) {\r\n targetScrollable._cursorEnterHandler()\r\n }\r\n },\r\n update: function() {\r\n var _this6 = this;\r\n var result = this._eventHandler(\"update\").done(this._updateAction);\r\n return (0, _deferred.when)(result, (0, _common.deferUpdate)(function() {\r\n var allowedDirections = _this6._allowedDirections();\r\n (0, _common.deferRender)(function() {\r\n var touchDirection = allowedDirections.vertical ? \"pan-x\" : \"\";\r\n touchDirection = allowedDirections.horizontal ? \"pan-y\" : touchDirection;\r\n touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? \"none\" : touchDirection;\r\n _this6._$container.css(\"touchAction\", touchDirection)\r\n });\r\n return (0, _deferred.when)().promise()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n var bounceEnabled = this.option(\"bounceEnabled\");\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n return {\r\n vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),\r\n horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)\r\n }\r\n },\r\n updateBounds: function() {\r\n this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()\r\n },\r\n scrollBy: function(distance) {\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n if (verticalScroller) {\r\n distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location\r\n }\r\n if (horizontalScroller) {\r\n distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location\r\n }\r\n this._prepareDirections(true);\r\n this._startAction();\r\n this._eventHandler(\"scrollBy\", {\r\n x: distance.left,\r\n y: distance.top\r\n });\r\n this._endAction()\r\n },\r\n validate: function(e) {\r\n if ((0, _index.isDxMouseWheelEvent)(e) && (0, _index.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 (0, _index.isDxMouseWheelEvent)(e) ? this._validateWheel(e) : this._validateMove(e)\r\n },\r\n _validateWheel: function(e) {\r\n var _this7 = this;\r\n var scroller = this._scrollers[this._wheelDirection(e)];\r\n var reachedMin = scroller._reachedMin();\r\n var reachedMax = scroller._reachedMax();\r\n var contentGreaterThanContainer = !reachedMin || !reachedMax;\r\n var locatedNotAtBound = !reachedMin && !reachedMax;\r\n var scrollFromMin = reachedMin && e.delta > 0;\r\n var scrollFromMax = reachedMax && e.delta < 0;\r\n var validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);\r\n validated = validated || void 0 !== this._validateWheelTimer;\r\n if (validated) {\r\n clearTimeout(this._validateWheelTimer);\r\n this._validateWheelTimer = setTimeout(function() {\r\n _this7._validateWheelTimer = void 0\r\n }, VALIDATE_WHEEL_TIMEOUT)\r\n }\r\n return validated\r\n },\r\n _validateMove: function(e) {\r\n if (!this.option(\"scrollByContent\") && !(0, _renderer.default)(e.target).closest(\".\".concat(SCROLLABLE_SCROLLBAR_CLASS)).length) {\r\n return false\r\n }\r\n return this._allowedDirection()\r\n },\r\n getDirection: function(e) {\r\n return (0, _index.isDxMouseWheelEvent)(e) ? this._wheelDirection(e) : this._allowedDirection()\r\n },\r\n _wheelProp: function() {\r\n return this._wheelDirection() === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _wheelDirection: function(e) {\r\n switch (this.option(\"direction\")) {\r\n case HORIZONTAL:\r\n return HORIZONTAL;\r\n case VERTICAL:\r\n return VERTICAL;\r\n default:\r\n return e && e.shiftKey ? HORIZONTAL : VERTICAL\r\n }\r\n },\r\n verticalOffset: function() {\r\n return 0\r\n },\r\n dispose: function() {\r\n this._resetActive();\r\n if (hoveredScrollable === this) {\r\n hoveredScrollable = null\r\n }\r\n this._eventHandler(\"dispose\");\r\n this._detachEventHandlers();\r\n this._$element.removeClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._eventForUserAction = null;\r\n clearTimeout(this._validateWheelTimer);\r\n clearTimeout(this._updateHandlerTimeout)\r\n },\r\n _detachEventHandlers: function() {\r\n _events_engine.default.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n _events_engine.default.off(this._$container, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD))\r\n }\r\n});\r\nexports.SimulatedStrategy = SimulatedStrategy;\r\n","/**\r\n * DevExtreme (ui/scroll_view/animator.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _frame = require(\"../../animation/frame\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar Animator = _class.default.inherit({\r\n ctor: function() {\r\n this._finished = true;\r\n this._stopped = false;\r\n this._proxiedStepCore = this._stepCore.bind(this)\r\n },\r\n start: function() {\r\n this._stopped = false;\r\n this._finished = false;\r\n this._stepCore()\r\n },\r\n stop: function() {\r\n this._stopped = true;\r\n (0, _frame.cancelAnimationFrame)(this._stepAnimationFrame)\r\n },\r\n _stepCore: function() {\r\n if (this._isStopped()) {\r\n this._stop();\r\n return\r\n }\r\n if (this._isFinished()) {\r\n this._finished = true;\r\n this._complete();\r\n return\r\n }\r\n this._step();\r\n this._stepAnimationFrame = (0, _frame.requestAnimationFrame)(this._proxiedStepCore)\r\n },\r\n _step: abstract,\r\n _isFinished: _common.noop,\r\n _stop: _common.noop,\r\n _complete: _common.noop,\r\n _isStopped: function() {\r\n return this._stopped\r\n },\r\n inProgress: function() {\r\n return !(this._stopped || this._finished)\r\n }\r\n});\r\nvar _default = Animator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollbar.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SCROLLBAR = \"dxScrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"\".concat(SCROLLABLE_SCROLLBAR_CLASS, \"-active\");\r\nvar SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nvar SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nvar HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar THUMB_MIN_SIZE = 15;\r\nvar SCROLLBAR_VISIBLE = {\r\n onScroll: \"onScroll\",\r\n onHover: \"onHover\",\r\n always: \"always\",\r\n never: \"never\"\r\n};\r\nvar activeScrollbar = null;\r\nvar Scrollbar = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n direction: null,\r\n visible: false,\r\n activeStateEnabled: false,\r\n visibilityMode: SCROLLBAR_VISIBLE.onScroll,\r\n containerSize: 0,\r\n contentSize: 0,\r\n expandable: true,\r\n scaleRatio: 1\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._isHovered = false\r\n },\r\n _initMarkup: function() {\r\n this._renderThumb();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderDirection();\r\n this._update();\r\n this._attachPointerDownHandler();\r\n this.option(\"hoverStateEnabled\", this._isHoverMode());\r\n this.$element().toggleClass(HOVER_ENABLED_STATE, this.option(\"hoverStateEnabled\"))\r\n },\r\n _renderThumb: function() {\r\n this._$thumb = (0, _renderer.default)(\"
\").addClass(SCROLLABLE_SCROLL_CLASS);\r\n (0, _renderer.default)(\"
\").addClass(SCROLLABLE_SCROLL_CONTENT_CLASS).appendTo(this._$thumb);\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_CLASS).append(this._$thumb)\r\n },\r\n isThumb: function($element) {\r\n return !!this.$element().find($element).length\r\n },\r\n _isHoverMode: function() {\r\n var visibilityMode = this.option(\"visibilityMode\");\r\n return (visibilityMode === SCROLLBAR_VISIBLE.onHover || visibilityMode === SCROLLBAR_VISIBLE.always) && this.option(\"expandable\")\r\n },\r\n _renderDirection: function() {\r\n var direction = this.option(\"direction\");\r\n this.$element().addClass(\"dx-scrollbar-\" + direction);\r\n this._dimension = direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._prop = direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _attachPointerDownHandler: function() {\r\n _events_engine.default.on(this._$thumb, (0, _index.addNamespace)(_pointer.default.down, SCROLLBAR), this.feedbackOn.bind(this))\r\n },\r\n feedbackOn: function() {\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = this\r\n },\r\n feedbackOff: function() {\r\n this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = null\r\n },\r\n cursorEnter: function() {\r\n this._isHovered = true;\r\n if (this._needScrollbar()) {\r\n this.option(\"visible\", true)\r\n }\r\n },\r\n cursorLeave: function() {\r\n this._isHovered = false;\r\n this.option(\"visible\", false)\r\n },\r\n _renderDimensions: function() {\r\n this._$thumb.css({\r\n width: this.option(\"width\"),\r\n height: this.option(\"height\")\r\n })\r\n },\r\n _toggleVisibility: function(visible) {\r\n if (this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.onScroll) {\r\n this._$thumb.css(\"opacity\")\r\n }\r\n visible = this._adjustVisibility(visible);\r\n this.option().visible = visible;\r\n this._$thumb.toggleClass(\"dx-state-invisible\", !visible)\r\n },\r\n _adjustVisibility: function(visible) {\r\n if (this._baseContainerToContentRatio && !this._needScrollbar()) {\r\n return false\r\n }\r\n switch (this.option(\"visibilityMode\")) {\r\n case SCROLLBAR_VISIBLE.onScroll:\r\n break;\r\n case SCROLLBAR_VISIBLE.onHover:\r\n visible = visible || !!this._isHovered;\r\n break;\r\n case SCROLLBAR_VISIBLE.never:\r\n visible = false;\r\n break;\r\n case SCROLLBAR_VISIBLE.always:\r\n visible = true\r\n }\r\n return visible\r\n },\r\n moveTo: function(location) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n if ((0, _type.isPlainObject)(location)) {\r\n location = location[this._prop] || 0\r\n }\r\n var scrollBarLocation = {};\r\n scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);\r\n (0, _translator.move)(this._$thumb, scrollBarLocation)\r\n },\r\n _calculateScrollBarPosition: function(location) {\r\n return -location * this._thumbRatio\r\n },\r\n _update: function() {\r\n var containerSize = Math.round(this.option(\"containerSize\"));\r\n var contentSize = Math.round(this.option(\"contentSize\"));\r\n var baseContainerSize = Math.round(this.option(\"baseContainerSize\"));\r\n var baseContentSize = Math.round(this.option(\"baseContentSize\"));\r\n if (isNaN(baseContainerSize)) {\r\n baseContainerSize = containerSize;\r\n baseContentSize = contentSize\r\n }\r\n this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;\r\n this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;\r\n var thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), THUMB_MIN_SIZE));\r\n this._thumbRatio = (containerSize - thumbSize) / (this.option(\"scaleRatio\") * (contentSize - containerSize));\r\n this.option(this._dimension, thumbSize / this.option(\"scaleRatio\"));\r\n this.$element().css(\"display\", this._needScrollbar() ? \"\" : \"none\")\r\n },\r\n _isHidden: function() {\r\n return this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.never\r\n },\r\n _needScrollbar: function() {\r\n return !this._isHidden() && this._baseContainerToContentRatio < 1\r\n },\r\n containerToContentRatio: function() {\r\n return this._realContainerToContentRatio\r\n },\r\n _normalizeSize: function(size) {\r\n return (0, _type.isPlainObject)(size) ? size[this._dimension] || 0 : size\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n if (this === activeScrollbar) {\r\n activeScrollbar = null\r\n }\r\n _events_engine.default.off(this._$thumb, \".\" + SCROLLBAR)\r\n },\r\n _optionChanged: function(args) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"containerSize\":\r\n case \"contentSize\":\r\n this.option()[args.name] = this._normalizeSize(args.value);\r\n this._update();\r\n break;\r\n case \"baseContentSize\":\r\n case \"baseContainerSize\":\r\n this._update();\r\n break;\r\n case \"visibilityMode\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"scaleRatio\":\r\n this._update();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n update: (0, _common.deferRenderer)(function() {\r\n this._adjustVisibility() && this.option(\"visible\", true)\r\n })\r\n});\r\n_ready_callbacks.default.add(function() {\r\n _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, SCROLLBAR), function() {\r\n if (activeScrollbar) {\r\n activeScrollbar.feedbackOff()\r\n }\r\n })\r\n});\r\nvar _default = Scrollbar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/scroll_view/ui.scrollable.device.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.deviceDependentOptions = void 0;\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _support = require(\"../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar deviceDependentOptions = function() {\r\n return [{\r\n device: function() {\r\n return !_support.nativeScrolling\r\n },\r\n options: {\r\n useNative: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !_devices.default.isSimulator() && \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n bounceEnabled: false,\r\n scrollByThumb: true,\r\n scrollByContent: _support.touch,\r\n showScrollbar: \"onHover\"\r\n }\r\n }]\r\n};\r\nexports.deviceDependentOptions = deviceDependentOptions;\r\n","/**\r\n * DevExtreme (ui/shared/ui.editor_factory_mixin.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _variable_wrapper = _interopRequireDefault(require(\"../../core/utils/variable_wrapper\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _utils = require(\"../../data/data_source/utils\");\r\nvar _index = require(\"../../events/utils/index\");\r\nrequire(\"../text_box\");\r\nrequire(\"../number_box\");\r\nrequire(\"../check_box\");\r\nrequire(\"../select_box\");\r\nrequire(\"../date_box\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar isWrapped = _variable_wrapper.default.isWrapped;\r\nvar CHECKBOX_SIZE_CLASS = \"checkbox-size\";\r\nvar EDITOR_INLINE_BLOCK = \"dx-editor-inline-block\";\r\nvar EditorFactoryMixin = function() {\r\n var getResultConfig = function(config, options) {\r\n return (0, _extend.extend)(config, {\r\n readOnly: options.readOnly,\r\n placeholder: options.placeholder,\r\n inputAttr: {\r\n id: options.id\r\n },\r\n tabIndex: options.tabIndex\r\n }, options.editorOptions)\r\n };\r\n var checkEnterBug = function() {\r\n return _browser.default.msie || _browser.default.mozilla || _devices.default.real().ios\r\n };\r\n var getTextEditorConfig = function(options) {\r\n var data = {};\r\n var isEnterBug = checkEnterBug();\r\n var sharedData = options.sharedData || data;\r\n return getResultConfig({\r\n placeholder: options.placeholder,\r\n width: options.width,\r\n value: options.value,\r\n onValueChanged: function(e) {\r\n var needDelayedUpdate = \"filterRow\" === options.parentType || \"searchPanel\" === options.parentType;\r\n var isInputOrKeyUpEvent = e.event && (\"input\" === e.event.type || \"keyup\" === e.event.type);\r\n var updateValue = function(e, notFireEvent) {\r\n options && options.setValue(e.value, notFireEvent)\r\n };\r\n clearTimeout(data.valueChangeTimeout);\r\n if (isInputOrKeyUpEvent && needDelayedUpdate) {\r\n sharedData.valueChangeTimeout = data.valueChangeTimeout = setTimeout(function() {\r\n updateValue(e, data.valueChangeTimeout !== sharedData.valueChangeTimeout)\r\n }, (0, _type.isDefined)(options.updateValueTimeout) ? options.updateValueTimeout : 0)\r\n } else {\r\n updateValue(e)\r\n }\r\n },\r\n onKeyDown: function(e) {\r\n if (isEnterBug && \"enter\" === (0, _index.normalizeKeyName)(e.event)) {\r\n _events_engine.default.trigger((0, _renderer.default)(e.component._input()), \"change\")\r\n }\r\n },\r\n valueChangeEvent: \"change\" + (\"filterRow\" === options.parentType ? \" keyup input\" : \"\")\r\n }, options)\r\n };\r\n var prepareDateBox = function(options) {\r\n options.editorName = \"dxDateBox\";\r\n options.editorOptions = getResultConfig({\r\n value: options.value,\r\n onValueChanged: function(args) {\r\n options.setValue(args.value)\r\n },\r\n onKeyDown: function(e) {\r\n if (checkEnterBug() && \"enter\" === (0, _index.normalizeKeyName)(e.event)) {\r\n e.component.blur();\r\n e.component.focus()\r\n }\r\n },\r\n displayFormat: options.format,\r\n type: options.dataType,\r\n dateSerializationFormat: null,\r\n width: \"filterBuilder\" === options.parentType ? void 0 : \"auto\"\r\n }, options)\r\n };\r\n var prepareTextBox = function(options) {\r\n var config = getTextEditorConfig(options);\r\n var isSearching = \"searchPanel\" === options.parentType;\r\n var toString = function(value) {\r\n return (0, _type.isDefined)(value) ? value.toString() : \"\"\r\n };\r\n if (options.editorType && \"dxTextBox\" !== options.editorType) {\r\n config.value = options.value\r\n } else {\r\n config.value = toString(options.value)\r\n }\r\n config.valueChangeEvent += isSearching ? \" keyup input search\" : \"\";\r\n config.mode = config.mode || (isSearching ? \"search\" : \"text\");\r\n options.editorName = \"dxTextBox\";\r\n options.editorOptions = config\r\n };\r\n var prepareNumberBox = function(options) {\r\n var config = getTextEditorConfig(options);\r\n config.value = (0, _type.isDefined)(options.value) ? options.value : null;\r\n options.editorName = \"dxNumberBox\";\r\n options.editorOptions = config\r\n };\r\n var prepareBooleanEditor = function(options) {\r\n if (\"filterRow\" === options.parentType || \"filterBuilder\" === options.parentType) {\r\n prepareSelectBox((0, _extend.extend)(options, {\r\n lookup: {\r\n displayExpr: function(data) {\r\n if (true === data) {\r\n return options.trueText || \"true\"\r\n } else {\r\n if (false === data) {\r\n return options.falseText || \"false\"\r\n }\r\n }\r\n },\r\n dataSource: [true, false]\r\n }\r\n }))\r\n } else {\r\n prepareCheckBox(options)\r\n }\r\n };\r\n\r\n function watchLookupDataSource(options) {\r\n if (options.row && options.row.watch && \"dataRow\" === options.parentType) {\r\n var editorOptions = options.editorOptions || {};\r\n options.editorOptions = editorOptions;\r\n var selectBox;\r\n var onInitialized = editorOptions.onInitialized;\r\n editorOptions.onInitialized = function(e) {\r\n onInitialized && onInitialized.apply(this, arguments);\r\n selectBox = e.component;\r\n selectBox.on(\"disposing\", stopWatch)\r\n };\r\n var dataSource;\r\n var stopWatch = options.row.watch(function() {\r\n dataSource = options.lookup.dataSource(options.row);\r\n return dataSource && dataSource.filter\r\n }, function() {\r\n selectBox.option(\"dataSource\", dataSource)\r\n }, function(row) {\r\n options.row = row\r\n })\r\n }\r\n }\r\n\r\n function prepareSelectBox(options) {\r\n var lookup = options.lookup;\r\n var displayGetter;\r\n var dataSource;\r\n var postProcess;\r\n var isFilterRow = \"filterRow\" === options.parentType;\r\n if (lookup) {\r\n displayGetter = (0, _data.compileGetter)(lookup.displayExpr);\r\n dataSource = lookup.dataSource;\r\n if ((0, _type.isFunction)(dataSource) && !isWrapped(dataSource)) {\r\n dataSource = dataSource(options.row || {});\r\n watchLookupDataSource(options)\r\n }\r\n if ((0, _type.isObject)(dataSource) || Array.isArray(dataSource)) {\r\n dataSource = (0, _utils.normalizeDataSourceOptions)(dataSource);\r\n if (isFilterRow) {\r\n postProcess = dataSource.postProcess;\r\n dataSource.postProcess = function(items) {\r\n if (0 === this.pageIndex()) {\r\n items = items.slice(0);\r\n items.unshift(null)\r\n }\r\n if (postProcess) {\r\n return postProcess.call(this, items)\r\n }\r\n return items\r\n }\r\n }\r\n }\r\n var allowClearing = Boolean(lookup.allowClearing && !isFilterRow);\r\n options.editorName = \"dxSelectBox\";\r\n options.editorOptions = getResultConfig({\r\n searchEnabled: true,\r\n value: options.value,\r\n valueExpr: options.lookup.valueExpr,\r\n searchExpr: options.lookup.searchExpr || options.lookup.displayExpr,\r\n allowClearing: allowClearing,\r\n showClearButton: allowClearing,\r\n displayExpr: function(data) {\r\n if (null === data) {\r\n return options.showAllText\r\n }\r\n return displayGetter(data)\r\n },\r\n dataSource: dataSource,\r\n onValueChanged: function(e) {\r\n var params = [e.value];\r\n !isFilterRow && params.push(e.component.option(\"text\"));\r\n options.setValue.apply(this, params)\r\n }\r\n }, options)\r\n }\r\n }\r\n\r\n function prepareCheckBox(options) {\r\n options.editorName = \"dxCheckBox\";\r\n options.editorOptions = getResultConfig({\r\n elementAttr: {\r\n id: options.id\r\n },\r\n value: (0, _type.isDefined)(options.value) ? options.value : void 0,\r\n hoverStateEnabled: !options.readOnly,\r\n focusStateEnabled: !options.readOnly,\r\n activeStateEnabled: false,\r\n onValueChanged: function(e) {\r\n options.setValue && options.setValue(e.value, e)\r\n }\r\n }, options)\r\n }\r\n var createEditorCore = function(that, options) {\r\n var $editorElement = (0, _renderer.default)(options.editorElement);\r\n if (options.editorName && options.editorOptions && $editorElement[options.editorName]) {\r\n if (\"dxCheckBox\" === options.editorName || \"dxSwitch\" === options.editorName) {\r\n if (!options.isOnForm) {\r\n $editorElement.addClass(that.addWidgetPrefix(CHECKBOX_SIZE_CLASS));\r\n $editorElement.parent().addClass(EDITOR_INLINE_BLOCK)\r\n }\r\n }\r\n that._createComponent($editorElement, options.editorName, options.editorOptions);\r\n if (\"dxTextBox\" === options.editorName) {\r\n $editorElement.dxTextBox(\"instance\").registerKeyHandler(\"enter\", _common.noop)\r\n }\r\n if (\"dxDateBox\" === options.editorName) {\r\n var dateBox = $editorElement.dxDateBox(\"instance\");\r\n var defaultEnterKeyHandler = dateBox._supportedKeys().enter;\r\n dateBox.registerKeyHandler(\"enter\", function(e) {\r\n if (dateBox.option(\"opened\")) {\r\n defaultEnterKeyHandler(e)\r\n }\r\n return true\r\n })\r\n }\r\n if (\"dxTextArea\" === options.editorName) {\r\n $editorElement.dxTextArea(\"instance\").registerKeyHandler(\"enter\", function(event) {\r\n if (\"enter\" === (0, _index.normalizeKeyName)(event) && !event.ctrlKey && !event.shiftKey) {\r\n event.stopPropagation()\r\n }\r\n })\r\n }\r\n }\r\n };\r\n return {\r\n createEditor: function($container, options) {\r\n options.cancel = false;\r\n options.editorElement = (0, _element.getPublicElement)($container);\r\n if (!(0, _type.isDefined)(options.tabIndex)) {\r\n options.tabIndex = this.option(\"tabIndex\")\r\n }\r\n if (options.lookup) {\r\n prepareSelectBox(options)\r\n } else {\r\n switch (options.dataType) {\r\n case \"date\":\r\n case \"datetime\":\r\n prepareDateBox(options);\r\n break;\r\n case \"boolean\":\r\n prepareBooleanEditor(options);\r\n break;\r\n case \"number\":\r\n prepareNumberBox(options);\r\n break;\r\n default:\r\n prepareTextBox(options)\r\n }\r\n }\r\n var editorName = options.editorName;\r\n this.executeAction(\"onEditorPreparing\", options);\r\n if (options.cancel) {\r\n return\r\n } else {\r\n if (\"dataRow\" === options.parentType && options.editorType && editorName === options.editorName) {\r\n options.editorName = options.editorType\r\n }\r\n }\r\n if (\"dataRow\" === options.parentType && !options.isOnForm && !(0, _type.isDefined)(options.editorOptions.showValidationMark)) {\r\n options.editorOptions.showValidationMark = false\r\n }\r\n createEditorCore(this, options);\r\n this.executeAction(\"onEditorPrepared\", options)\r\n }\r\n }\r\n}();\r\nvar _default = EditorFactoryMixin;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n"],"sourceRoot":""}