{"version":3,"sources":["webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/utils.js","webpack:///./node_modules/devextreme/esm/ui/load_panel.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.base.js","webpack:///./node_modules/devextreme/esm/ui/list/item.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator_registry.js","webpack:///./node_modules/devextreme/esm/renovation/utils/get_computed_style.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_element_location_internal.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_button.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_editor.js","webpack:///./node_modules/devextreme/esm/ui/collection/ui.collection_widget.live_update.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/animator.js","webpack:///./node_modules/devextreme/esm/ui/editor/ui.data_expression.js","webpack:///./node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_list.js","webpack:///./node_modules/devextreme/esm/ui/select_box.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.native.pull_down.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.native.swipe_down.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.simulated.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view.js","webpack:///./node_modules/devextreme/esm/ui/shared/grouped_data_converter_mixin.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/utils/get_updated_options.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/dom_component_wrapper.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_relative_offset.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/common/consts.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.native.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollbar.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.strategy.grouped.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.provider.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.search.js","webpack:///./node_modules/devextreme/esm/ui/list_light.js","webpack:///./node_modules/devextreme/esm/ui/radio_group/radio_button.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.selection.js","webpack:///./node_modules/devextreme/esm/events/gesture/emitter.gesture.scroll.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.device.js","webpack:///./node_modules/devextreme/esm/core/utils/stubs.js","webpack:///./node_modules/devextreme/esm/ui/widget/ui.search_box_mixin.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.simulated.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/editors/editor.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/editors/check_box.js","webpack:///./node_modules/devextreme/esm/renovation/ui/overlays/validation_message.js","webpack:///./node_modules/devextreme/esm/renovation/ui/editors/internal/editor.js","webpack:///./node_modules/devextreme/esm/renovation/ui/editors/check_box/utils.js","webpack:///./node_modules/devextreme/esm/renovation/ui/editors/check_box/check_box_icon.js","webpack:///./node_modules/devextreme/esm/renovation/ui/editors/check_box/check_box.js","webpack:///./node_modules/devextreme/esm/renovation/ui/editors/check_box/check_box.j.js","webpack:///./node_modules/devextreme/esm/ui/check_box.js"],"names":["getElementWidth","$element","getSizeValue","size","LOADPANEL_CLASS","LOADPANEL_WRAPPER_CLASS","LOADPANEL_INDICATOR_CLASS","LOADPANEL_MESSAGE_CLASS","LOADPANEL_CONTENT_CLASS","LOADPANEL_CONTENT_WRAPPER_CLASS","LOADPANEL_PANE_HIDDEN_CLASS","LoadPanel","inherit","_supportedKeys","this","callBase","escape","_getDefaultOptions","message","format","width","height","animation","showIndicator","indicatorSrc","showPane","delay","templatesRenderAsynchronously","hideTopOverlayHandler","resizeEnabled","focusStateEnabled","_defaultOptionsRules","concat","device","platform","options","shadingColor","maxHeight","maxWidth","_init","apply","arguments","_render","addClass","$wrapper","_renderContentImpl","$content","_$loadPanelContentWrapper","appendTo","_togglePaneVisible","_cleanPreviousContent","_renderLoadIndicator","_renderMessage","_show","option","deferred","bind","_clearShowTimeout","_showTimeout","setTimeout","done","resolve","promise","_hide","clearTimeout","$message","text","append","_$indicator","_createComponent","find","remove","toggleClass","_optionChanged","args","name","_dispose","_scrollView","LIST_ITEM_BADGE_CONTAINER_CLASS","LIST_ITEM_BADGE_CLASS","BADGE_CLASS","LIST_ITEM_CHEVRON_CONTAINER_CLASS","LIST_ITEM_CHEVRON_CLASS","ListItem","_renderWatchers","_startWatcher","_renderBadge","_renderShowChevron","badge","_$element","children","$badge","$chevron","first","length","insertBefore","showChevron","$chevronContainer","LIST_CLASS","LIST_ITEM_CLASS","LIST_ITEM_SELECTOR","LIST_ITEM_ICON_CONTAINER_CLASS","LIST_ITEM_ICON_CLASS","LIST_GROUP_CLASS","LIST_GROUP_HEADER_CLASS","LIST_GROUP_BODY_CLASS","LIST_COLLAPSIBLE_GROUPS_CLASS","LIST_GROUP_COLLAPSED_CLASS","LIST_GROUP_HEADER_INDICATOR_CLASS","LIST_HAS_NEXT_CLASS","LIST_NEXT_BUTTON_CLASS","WRAP_ITEM_TEXT_CLASS","SELECT_ALL_ITEM_SELECTOR","LIST_ITEM_DATA_KEY","LIST_FEEDBACK_SHOW_TIMEOUT","groupItemsGetter","ListBase","_activeStateUnit","join","that","moveFocusPerPage","direction","$item","getEdgeVisibleItem","isFocusedItem","is","resultPosition","position","top","scrollTo","scrollToItem","scrollTop","containerHeight","isItemVisible","$nextItem","nextItemLocation","extend","leftArrow","rightArrow","pageUp","pageDown","hoverStateEnabled","pullRefreshEnabled","scrollingEnabled","showScrollbar","useNativeScrolling","bounceEnabled","scrollByContent","scrollByThumb","pullingDownText","pulledDownText","refreshingText","pageLoadingText","onScroll","onPullRefresh","onPageLoading","pageLoadMode","nextButtonText","onItemSwipe","grouped","onGroupRendered","collapsibleGroups","groupTemplate","indicateLoading","activeStateEnabled","_itemAttributes","role","_listAttributes","useInkRipple","wrapItemText","_swipeEnabled","_revertPageOnEmptyLoad","showChevronExpr","data","badgeExpr","themeName","_device","devices","isSimulator","real","deviceType","_visibilityChanged","visible","_updateLoadingState","_itemClass","_itemDataKey","_itemContainer","_$container","_saveSelectionChangeEvent","e","_selectionChangeEventInstance","_getSelectionChangeEvent","_refreshItemElements","_itemElementsCache","_itemSelector","_modifyByChanges","reorderItem","itemElement","toItemElement","deleteItem","_itemElements","_itemSelectHandler","isItemSelected","currentTarget","_allowDynamicItemsAppend","_resetDataSourcePageIndex","currentDataSource","getDataSource","pageIndex","load","_initScrollView","_feedbackShowTimeout","_createGroupRenderAction","_scrollBottomMode","_nextButtonMode","_dataSourceOptions","scrollBottom","nextButton","paginate","_getGroupedOption","_getGroupContainerByIndex","groupIndex","eq","_dataSourceFromUrlLoadMode","autoPagingEnabled","_dataSource","getScrollView","disabled","_scrollHandler","onPullDown","_pullDownHandler","onReachBottom","_scrollBottomHandler","useNative","reachBottomText","useKeyboard","content","_createScrollViewActions","_scrollAction","_createActionByOption","_pullRefreshAction","_pageLoadingAction","_initTemplates","_templateManager","addDefaultTemplates","group","$container","key","String","_prepareDefaultItemTemplate","icon","$icon","$iconContainer","prepend","_getBindableFields","tryLoadMore","isDataLoaded","_isLastPage","scrollBottomMode","stopLoading","hideLoadIndicator","_isDataSourceLoading","_scrollViewIsFull","release","_toggleNextButton","_shouldRenderNextButton","_loadIndicationSuppressed","_infiniteDataLoading","isLoaded","_isDataSourceFirstLoadCompleted","newValue","_isFirstLoadCompleted","_dataSourceLoadingChangedHandler","isLoading","_showLoadingIndicatorTimer","_this$_scrollView","isEmpty","shouldIndicateLoading","startLoading","finishLoading","_dataSourceChangedHandler","_shouldAppendItems","_refreshContent","_prepareContent","_fireContentReadyAction","_hideLoadingIfLoadIndicationOff","value","_isLoadIndicationSuppressed","scrollView","container","_clearSelectedItems","reload","isElementVisible","_loadNextPageTimer","_loadNextPage","_setPreviousPageIfNewIsEmpty","result","dataSource","_renderItems","items","_renderGroup","_attachGroupCollapseEvent","_renderEmptyMessage","attachGroupHeaderInkRippleEvents","eventName","click","NAME","selector","off","on","_createAction","$group","event","parent","_collapseGroupHandler","validatingTargetName","toggle","hasClass","$groupBody","startHeight","endHeight","fx","animate","type","from","to","duration","complete","updateDimensions","_dataSourceLoadErrorHandler","_forgetNextPageLoading","_initialized","_initMarkup","_renderInkRipple","setAria","_inkRipple","_toggleActiveState","config","element","_inkRippleTimer","showWave","hideWave","_postprocessRenderItem","_attachSwipeEvent","$itemElement","endEventName","swipe","_itemSwipeEndHandler","_itemDXEventHandler","offset","_nextButtonHandler","source","toggleLoading","_$nextButton","detach","index","$groupElement","$groupHeaderElement","groupTemplateName","_getTemplate","template","renderArgs","itemData","_createItemByTemplate","prependTo","_renderingGroupIndex","itemIndex","item","_renderItem","_groupRenderAction","groupElement","groupData","downInkRippleHandler","upInkRippleHandler","_downInkRippleHandler","_upInkRippleHandler","downArguments","upArguments","_clean","_holdTimer","_toggleDisabledState","$nextButton","_getNextButton","_createNextButton","$result","$button","onClick","integrationOptions","_moveFocus","_refresh","_invalidate","update","_extendActionArgs","closest","expandGroup","resolveWith","collapseGroup","repaint","scrollOffset","clientHeight","scrollHeight","scrollBy","distance","location","_editStrategy","getItemElement","scrollToElement","get","_dimensionChanged","include","ItemClass","registry","register","decoratorClass","decoratorsRegistry","decoratorConfig","window","getElementComputedStyle","el","_window$getComputedSt","getComputedStyle","call","getElementLocationInternal","targetElement","containerElement","additionalOffset","left","right","bottom","isVertical","prop","inverseProp","dimension","containerOffsetSize","containerClientSize","containerSize","getBoundingClientRect","elementSize","scale","Math","abs","relativeElementOffset","containerScrollOffset","relativeStartOffset","relativeEndOffset","SCROLLABLE","SCROLLABLE_STRATEGY","SCROLLABLE_CLASS","SCROLLABLE_DISABLED_CLASS","SCROLLABLE_CONTAINER_CLASS","SCROLLABLE_WRAPPER_CLASS","SCROLLABLE_CONTENT_CLASS","VERTICAL","HORIZONTAL","BOTH","Scrollable","onUpdated","onStart","onEnd","onBounce","useSimulatedScrollbar","inertiaEnabled","updateManually","browser","mozilla","_initOptions","_setUseSimulatedScrollbar","initialOption","_initScrollableMarkup","_locked","_updateRtlPosition","_savedScrollOffset","_$wrapper","_$content","contents","_renderDirection","_renderStrategy","_attachEventHandlers","_renderDisabledState","_createActions","needInitializeRtlConfig","_strategy","updateRtlPosition","_getMaxOffset","scrollWidth","clientWidth","strategy","initEventData","getDirection","validate","_validate","isNative","scrollTarget","init","_initHandler","start","handleStart","move","handleMove","end","handleEnd","cancel","handleCancel","stop","handleStop","handleScroll","_isLocked","_updateIfNeed","_moveIsAllowed","_prepareDirections","handleInit","_lock","_unlock","removeClass","_createStrategy","render","createActions","dispose","_resetInactiveDirection","disabledChanged","inactiveProp","_getInactiveProp","_location","_normalizeLocation","x","y","_isDirection","current","_updateAllowedDirection","allowedDirections","_allowedDirections","vertical","horizontal","_allowedDirectionValue","_allowedDirection","_getScrollOffset","_isRtlNativeStrategy","rtlEnabled","scrollLeft","targetLocation","_applyScaleRatio","elementInsideContent","elementIsInsideContent","parents","scrollPosition","getScrollElementPosition","_useTemplates","isRenovated","IS_RENOVATED_WIDGET","DROP_DOWN_EDITOR_BUTTON_CLASS","DROP_DOWN_EDITOR_BUTTON_VISIBLE","BUTTON_MESSAGE","editor","super","currentTemplate","instance","_openHandler","preventDefault","_getOptions","_addToContainer","elementAttr","_legacyRender","_isVisible","isReadOnly","_addTemplate","$editor","isVisible","_isSameTemplate","_getTemplateByOption","shouldUpdate","DROP_DOWN_EDITOR_CLASS","DROP_DOWN_EDITOR_INPUT_WRAPPER","DROP_DOWN_EDITOR_BUTTON_ICON","DROP_DOWN_EDITOR_OVERLAY","DROP_DOWN_EDITOR_OVERLAY_FLIPPED","DROP_DOWN_EDITOR_ACTIVE","DROP_DOWN_EDITOR_FIELD_CLICKABLE","DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER","isIOs","DropDownEditor","tab","$focusableElement","shiftKey","_getLastPopupElement","_getFirstPopupElement","trigger","close","upArrow","stopPropagation","altKey","downArrow","_validatedOpening","enter","_valueChangeEventHandler","_getDefaultButtons","Ctor","onOpened","onClosed","opened","acceptCustomValue","applyValueMode","deferRendering","dropDownButtonTemplate","fieldTemplate","openOnFieldClick","showDropDownButton","buttons","dropDownOptions","showTitle","popupPosition","_getDefaultPopupPosition","onPopupInitialized","applyButtonText","cancelButtonText","buttonsLocation","useHiddenSubmitElement","isRtlEnabled","h","v","my","at","collision","isGeneric","_inputWrapper","_initVisibilityActions","_initPopupInitializedAction","_updatePopupPosition","_options","cache","currentPosition","_openAction","excludeValidators","_closeAction","_popupInitializedAction","_renderSubmitElement","_renderOpenHandler","_attachFocusOutHandler","_renderOpenedState","_createPopup","_renderInput","_wrapInput","_setDefaultAria","wrapInner","haspopup","autocomplete","_readOnlyPropValue","_isEditable","_cleanFocusState","_detachFocusEvents","_getFieldTemplate","_renderMask","_renderField","_renderTemplatedField","_fieldRenderData","_renderPlaceholder","hasFieldTemplate","_renderValue","_setSubmitValue","always","isFocused","_input","_detachKeyboardEvents","_refreshButtonsContainer","_detachWrapperContent","empty","$templateWrapper","model","onRendered","$input","Error","_integrateInput","_attachWrapperContent","_this$_$submitElement","_this$_$beforeButtons","_this$_$afterButtonsC","_$submitElement","beforeButtonsContainerParent","_$beforeButtonsContainer","parentNode","afterButtonsContainerParent","_$afterButtonsContainer","removeChild","_this$_$submitElement2","_$buttonsContainer","_renderFocusState","_refreshValueChangeEvent","_refreshEvents","_refreshEmptinessEvent","_toggleEmptinessEventHandler","_renderEmptinessEvent","dropDownButton","$inputWrapper","_getInputClickHandler","_openOnFieldClickAction","_detachFocusOutEvents","newTarget","relatedTarget","popupWrapper","_$popup","isNewTargetOutside","_executeOpenAction","_focusInput","_toggleOpenState","_keyboardEventBindingTarget","_resetCaretPosition","ignoreEditable","inputElement","caretPosition","_caret","_setPopupOption","expanded","_popupContentId","_renderPopup","_renderPopupContent","popupConfig","_popupConfig","_popup","showing","_popupShowingHandler","shown","_popupShownHandler","hiding","_popupHidingHandler","hidden","_popupHiddenHandler","contentReady","_contentReadyHandler","_setPopupContentId","_bindInnerWidgetOptions","$popupContent","onInitialized","_popupInitializedHandler","of","_ignoreFunctionValueDeprecation","shading","wrapperAttr","class","hideOnParentScroll","closeOnOutsideClick","_closeOutsideDropDownHandler","show","hide","showCloseButton","dragEnabled","toolbarItems","_getPopupToolbarItems","onPositioned","_popupPositionedHandler","fullScreen","contentTemplate","popup","component","popupWidth","$overlayContent","flip","_this$_validationMess","$popupOverlayContent","_label","$label","parseInt","css","_validationMessage","_getValidationMessagePositionRequest","_this$_validationMess2","positionRequest","myTop","setup","popupTop","_ref","target","$target","getButton","$dropDownButton","isInputClicked","isDropDownButtonClicked","isOutsideClick","optionName","_setWidgetOption","_popupToolbarItemsConfig","_popupElementTabHandler","_popupElementEscHandler","_popupButtonInitializedHandler","registerKeyHandler","buttonsConfig","shortcut","_applyButtonHandler","_cancelButtonHandler","_applyButtonsLocation","resultConfig","_","toolbar","focus","_popupOptionChanged","getOptionsFromContainer","optionsKeys","Object","keys","indexOf","attr","_getSubmitElement","val","_this$_popup","_updateButtons","open","field","PRIVATE_KEY_FIELD","repaintChangesOnly","ctor","_customizeStoreLoadOptions","_correctionIndex","storeLoadOptions","skip","_refreshItemsCache","_findItemElementByKey","keyExpr","itemElements","each","_getItemData","keyOf","_isItemEquals","newItems","changes","item1","item2","JSON","stringify","_isItemStrictEquals","_shouldAddNewGroup","i","change","_partialRefresh","_itemsCache","itemsGetter","map","itemCache","_updateByChange","keyInfo","isPartialRefresh","changedItem","_insertByChange","_change$index","_beforeItemElementInserted","$itemContainer","_getItemContainer","_afterItemElementInserted","changeData","_updateSelectionAfterRemoveByChange","removeIndex","selectedIndex","_normalizeSelectedItems","_removeByChange","removedItem","oldItem","$removedItemElement","deletedActionArgs","_waitDeletingPrepare","_updateIndicesAfterIndex","_afterItemElementDeleted","_deleteItemElementByIndex","filter","forEach","_renderedItemsCount","_appendItemToContainer","$itemFrame","nextSiblingElement","insertElement","isItemsUpdated","abstract","Animator","_finished","_stopped","_proxiedStepCore","_stepCore","_stepAnimationFrame","_isStopped","_stop","_isFinished","_complete","_step","inProgress","DataExpressionMixin","_dataExpressionDefaultOptions","itemTemplate","valueExpr","displayExpr","_initDataExpressions","_compileValueGetter","_compileDisplayGetter","_initDynamicTemplates","_initDataSource","_itemsToDataSource","store","pageSize","_displayGetter","_displayGetterExpr","_valueGetter","_valueGetterExpr","_loadValue","_unwrappedValue","_loadSingle","_isValueEquals","reject","fail","_loadValueDeferred","_rejectValueLoading","_this$_loadValueDefer","shouldSkipCallback","_getCurrentValue","_value","_getItemKey","unwrap","Array","isArray","n","value1","value2","dataSourceKey","_compareValues","_compareByCompositeKey","_compareByKey","isObject","unwrapObservable","valueKey1","valueKey2","_setCollectionWidgetItemTemplate","_setCollectionWidgetOption","_getCollectionKeyExpr","isValueExprField","_dataExpressionOptionChanged","DROPDOWNLIST_POPUP_WRAPPER_CLASS","SKIP_GESTURE_EVENT_CLASS","SEARCH_EVENT","SEARCH_MODES","DropDownList","_allowSelectItemByTab","_saveValueChangeEvent","$focusedItem","_list","_setSelectedElement","space","home","_setValue","displayValue","searchEnabled","searchMode","searchTimeout","minSearchLength","searchExpr","valueChangeEvent","selectedItem","noDataText","onSelectionChanged","onItemClick","showDataBeforeSearch","useItemTextAsTitle","_setOptionsByReference","_optionsByReference","_initActions","_setListDataSource","_validateSearchMode","_clearSelectedItem","_initItems","_setListFocusedElementOptionChange","_updateParentActiveDescendant","_updateActiveDescendant","_initContentReadyAction","_initSelectionChangedAction","_initItemClickAction","_contentReadyAction","_selectionChangedAction","_itemClickAction","_saveFocusOnWidget","_fitIntoRange","_items","_getPlainItems","availableItems","toArray","_calcNextItem","step","nextIndex","_getSelectedIndex","_updateCustomBoundaryContainer","_popupWrapperClass","customContainer","$containerWithParents","slice","unshift","overflowY","_$customBoundaryContainer","_renderInputValue","_loadInputValue","_setSelectedItem","callback","_loadItem","_getItemFromPlain","plainItems","itemByValue","push","_this$_list","listFocusedItemId","getFocusedItemId","isElementOnDom","activedescendant","_displayValue","_refreshSelected","_listItemElements","itemValue","_isSelectedValue","selectItem","unselectItem","_setFocusPolicy","normalizedSearchMode","toLowerCase","_processDataSourceChanging","_isCustomValueAllowed","reset","_clearFilter","_$list","autoResizeEnabled","_getMaxHeight","_renderList","canListHaveFocus","_canListHaveFocus","_setAriaTargetForList","_getAriaTarget","_listId","$list","_listConfig","_refreshList","_renderPreventBlur","controls","owns","_shouldRefreshDataSource","dataSourceProvided","_needPassDataSourceToList","_isDesktopDevice","selectionMode","_templates","templateProvider","onContentReady","_listContentReadyHandler","_listItemClickAction","_getDataSource","tabIndex","dxList","_setListOption","_listItemClickHandler","_isMinSearchLengthExceeded","_searchValue","toString","_needClearFilter","_canKeepDataSource","_this$_dataSource","isMinSearchLengthExceeded","_isLastMinSearchLengthExceeded","_getSearchEvent","_getCompositionStartEvent","_getCompositionEndEvent","_getSetFocusPolicyEvent","_renderEvents","_shouldRenderSearchEvent","_searchHandler","_isTextCompositionInProgress","_isTextComposition","searchValue","_clearSearchTimer","_searchTimer","_searchDataSource","_searchCanceled","_filterDataSource","searchOperation","_dataSourceFiltered","_refreshPopupVisibility","_shouldOpenPopup","_hasItemsToShow","shouldOpenPopup","_isFocused","resultItems","resultAmount","_updatePopupDimensions","_needPopupRepaint","currentPageIndex","needRepaint","_pageIndex","$customBoundaryContainer","offsetTop","windowHeight","min","max","submitValue","_shouldUseDisplayValue","previousValue","DISABLED_STATE_SELECTOR","SELECTBOX_CLASS","SELECTBOX_POPUP_CLASS","SELECTBOX_CONTAINER_CLASS","SELECTBOX_POPUP_WRAPPER_CLASS","SelectBox","clearSelectBox","isEditable","_valueSubstituted","_preventFiltering","_savedTextRemoveEvent","_preventSubstitution","searchIfNeeded","_cancelSearchIfNeed","_setNextValue","_cancelEditing","isOpened","inputText","trim","isCustomText","isSearchEnabled","backspace","del","placeholder","onCustomItemCreating","customItem","showSelectionControls","allowClearing","tooltipEnabled","displayCustomValue","_initCustomItemCreatingAction","_renderTooltip","_focusListElement","_updateField","_scrollToSelectedItem","_focusSelectedElement","$listItems","focusedElement","_isCustomItemSelected","_renderFocusedElement","not","_preventInputValueRender","isPaginate","_renderInputValueAsync","_renderInputValueImpl","_setNextItem","dataSourceIsLoaded","hasPages","isLastPage","isLastItem","isUnknownItem","_getSelectionChangeHandler","onFocusedItemChanged","_listFocusedItemChangeHandler","selectionByClick","list","focusedItem","_renderDisplayText","_selectionChangeHandler","addedItems","addedItem","_getActualSearchValue","_shouldClearFilter","_restoreInputText","_wasSearch","showDataImmediately","_renderDimensions","_isValueEqualInputText","initialSelectedItem","_shouldCancelSearch","saveEditingValue","_loadItemDeferred","_clearTextValue","newSelectedItem","_focusOutHandler","_preventNestedFocusEvent","isOverlayTarget","_isOverlayNestedTarget","shouldCancelSearch","isPopupVisible","_hideAnimationProcessing","_shouldCancelSearchValue","activeElement","getActiveElement","_renderValueChangeEvent","$listFocused","_shouldCloseOnItemClick","_completeSelection","selectedItemText","_isValueChanging","_customItemAddedHandler","_customItemCreatingAction","_createCustomItem","params","actionResult","errors","log","_setCustomItem","_disposed","_clearValueHandler","_wasSearchValue","_renderInputSubstitution","input","isAllSelected","selectionStart","selectionEnd","inputHasSelection","_shouldSubstitutionBeRendered","valueLength","SCROLLVIEW_PULLDOWN_REFRESHING_CLASS","SCROLLVIEW_PULLDOWN_READY_CLASS","SCROLLVIEW_PULLDOWN_IMAGE_CLASS","SCROLLVIEW_PULLDOWN_INDICATOR_CLASS","SCROLLVIEW_PULLDOWN_TEXT_CLASS","SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS","STATE_RELEASED","STATE_READY","STATE_REFRESHING","STATE_LOADING","PULLDOWN_RELEASE_TIME","PullDownNativeScrollViewStrategy","_$topPocket","_$pullDown","_$refreshingText","_$scrollViewContent","_initCallbacks","pullDownCallbacks","releaseCallbacks","reachBottomCallbacks","_renderPullDown","_releaseState","$image","$loadContainer","$loadIndicator","$text","_$pullDownText","_$pullingDownText","_$pulledDownText","_state","_refreshPullDownText","pullDownTextItems","visibleState","action","_setTopPocketOffset","_updateDimensions","_topPocketSize","contentEl","containerEl","_bottomBoundary","_pullDownEnabled","_setPullDownOffset","_pullDownRefreshTimeout","_pullDownRefreshing","currentLocation","scrollDelta","_isPullDown","_pullDownReady","_isReachBottom","_reachBottom","_stateReleased","_reachBottomEnabled","round","floor","fire","pullDownEnable","enabled","reachBottomEnable","pendingRelease","_releaseTimeout","_updateAction","SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS","PULLDOWN_ICON_CLASS","STATE_TOUCHED","STATE_PULLED","SwipeDownNativeScrollViewStrategy","_$icon","_releasePullDown","opacity","_startClientY","originalEvent","_deltaY","_movePullDown","pullDownHeight","_getPullDownHeight","_getPullDownStartPosition","angle","transform","_pullDownRefreshHandler","_refreshPullDown","math","ScrollViewScroller","_bottomPocketSize","_updateBounds","considerPockets","_direction","_$bottomPocket","scrollTopMax","_updateScrollbar","_scrollbar","_containerSize","contentSize","_contentSize","scaleRatio","_getScaleRatio","_moveContent","_reachBottomReady","_moveScrollbar","moveTo","ceil","_scrollComplete","_inBounds","_reachBottomLoading","_minOffset","_getMinOffset","_maxOffset","_releaseHandler","_moveToBounds","_update","_releaseTask","abort","_release","_reachBottomEnablingHandler","_pullDownEnablingHandler","_considerTopPocketChange","_updateHandler","_move","_pendingReleaseHandler","SimulatedScrollViewStrategy","_eventHandler","_createScroller","scroller","_scrollers","_scrollerOptions","add","$topPocket","$bottomPocket","$pullDown","$pullDownText","$pullingDownText","$pulledDownText","$refreshingText","SCROLLVIEW_CLASS","SCROLLVIEW_CONTENT_CLASS","SCROLLVIEW_TOP_POCKET_CLASS","SCROLLVIEW_BOTTOM_POCKET_CLASS","SCROLLVIEW_PULLDOWN_CLASS","SCROLLVIEW_REACHBOTTOM_CLASS","SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS","SCROLLVIEW_REACHBOTTOM_TEXT_CLASS","SCROLLVIEW_LOADPANEL","refreshStrategies","pullDown","swipeDown","simulated","isServerSide","scrollViewServerConfig","refresh","ScrollView","refreshStrategy","realDevice","_loadingIndicatorEnabled","_initContent","_initTopPocket","_initBottomPocket","_initLoadPanel","$reachBottom","_$reachBottom","_$reachBottomText","_updateReachBottomText","$loadPanelElement","loadPanelOptions","_loadPanel","strategyName","strategyClass","_reachBottomHandler","_pullDownAction","_reachBottomAction","_tryRefreshPocketState","_pullDownEnable","hasActionSubscription","_reachBottomEnable","_loadingIndicator","_pullDownLoading","preventReachBottom","showOrHide","isCorrectStructure","every","hasTwoFields","hasCorrectFields","_getSpecificDataSourceOption","hasSimpleItems","reduce","accumulator","innerItem","keepInitialKeyOrder","defaultNotDeepCopyArrays","propsToIgnore","getDiffItem","path","compare","resultPaths","fullPropName","notDeepCopyArrays","type1","type2","diffPaths","objectDiffs","notDeepCopy","some","includes","_diffPaths","objectDiffsFiltered","propsEnumerator","oldProps","props","processItem","propName","prototype","hasOwnProperty","reactProps","ref","style","objectDiffsWithoutReactProps","p","getUpdatedOptions","_excluded","_excluded2","viewFunction","componentProps","className","restAttributes","widgetRef","DomComponentWrapperProps","state","getInstance","setupWidget","setRootElementRef","updateWidget","context","ConfigContext","templateNames","_this$_effects$","_effects","componentInstance","componentType","properties","rootElementRef","updatedOptions","prevProps","beginUpdate","_ref2","endUpdate","_this$config","_this$props$component","valueChange","restProps","onValueChanged","_ref3","templates","_this$props","defaultProps","getRelativeOffset","targetElementClass","sourceElement","_element","offsetParent","classList","contains","parentElement","elementRect","parentElementRect","LIST_EDIT_DECORATOR","SWIPE_START_EVENT_NAME","SWIPE_UPDATE_EVENT_NAME","SWIPE_END_EVENT_NAME","EditDecorator","_shouldHandleSwipe","swipeConfig","itemSizeFunc","_clearSwipeCache","_itemWidthCache","_itemSwipeStartHandler","_itemSwipeUpdateHandler","_swipeStartHandler","_swipeUpdateHandler","_swipeEndHandler","beforeBag","afterBag","_commonOptions","modifyElement","afterRender","handleClick","handleKeyboardEvents","handleEnterPressing","handleContextMenu","visibilityChange","getExcludedSelectors","DIRECTION_VERTICAL","DIRECTION_HORIZONTAL","DIRECTION_BOTH","SCROLLABLE_NATIVE","SCROLLABLE_NATIVE_CLASS","SCROLLABLE_SCROLLBAR_SIMULATED","SCROLLABLE_SCROLLBARS_HIDDEN","HIDE_SCROLLBAR_TIMEOUT","NativeStrategy","scrollable","_component","_useSimulatedScrollbar","_isScrollbarVisible","_renderScrollbars","isFirstRender","_moveScrollbars","_scrollbars","_hideScrollbarTimeout","_renderScrollbar","expandable","isScrollingEvent","_eachScrollbar","scrollbar","_createActionArgs","_eventForUserAction","reachedLeft","_isReachedRight","_isReachedLeft","reachedRight","reachedTop","reachedBottom","_normalizeOffsetLeft","_hideScrollbars","_updateScrollbars","_componentContentSize","scrollableNativeRegexp","RegExp","test","match","_removeScrollbars","_isScrolledInMaxDirection","delta","SCROLLBAR","SCROLLABLE_SCROLLBAR_CLASS","SCROLLABLE_SCROLLBAR_ACTIVE_CLASS","SCROLLABLE_SCROLL_CLASS","SCROLLABLE_SCROLL_CONTENT_CLASS","HOVER_ENABLED_STATE","THUMB_MIN_SIZE","SCROLLBAR_VISIBLE","onHover","never","activeScrollbar","Scrollbar","visibilityMode","_isHovered","_renderThumb","_attachPointerDownHandler","_isHoverMode","_$thumb","isThumb","_dimension","_prop","down","feedbackOn","feedbackOff","cursorEnter","_needScrollbar","cursorLeave","_toggleVisibility","_adjustVisibility","_baseContainerToContentRatio","_isHidden","scrollBarLocation","_calculateScrollBarPosition","_thumbRatio","baseContainerSize","baseContentSize","isNaN","_realContainerToContentRatio","thumbSize","containerToContentRatio","_normalizeSize","subscribeGlobal","getDocument","up","SELECTION_SHIFT","SELECTION_MASK","combineIndex","indices","splitIndex","combinedIndex","GroupedEditStrategy","_groupElements","_collectionWidget","_groupItemElements","getIndexByItemData","groups","getItemDataByIndex","deleteItemAtIndex","itemGroup","splice","getKeysByItems","getIndexByKey","itemKey","_equalKeys","_getGroups","queryByOptions","query","getItemsByKeys","groupItemByKeyMap","getItemMeta","groupKey","itemMeta","selectedGroup","moveItemAtIndexToIndex","movingIndex","destinationIndex","movingIndices","destinationIndices","movingItemGroup","destinationItemGroup","movedItemData","_isItemIndex","_getNormalizedItemIndex","_normalizeItemIndex","_denormalizeItemIndex","_getItemByNormalizedIndex","_itemsFromSameParent","firstIndex","secondIndex","editOptionsRegistry","registerOption","enabledFunc","decoratorTypeFunc","decoratorSubTypeFunc","decoratorType","decoratorSubType","mode","LIST_ITEM_BEFORE_BAG_CLASS","LIST_ITEM_AFTER_BAG_CLASS","DECORATOR_BEFORE_BAG_CREATE_METHOD","DECORATOR_AFTER_BAG_CREATE_METHOD","DECORATOR_MODIFY_ELEMENT_METHOD","DECORATOR_AFTER_RENDER_METHOD","DECORATOR_GET_EXCLUDED_SELECTORS_METHOD","EditProvider","_fetchRequiredDecorators","_decorators","decorator","optionEnabled","_createDecorator","subType","_findDecorator","_registry$type","foundDecorator","modifyItemElement","_prependBeforeBags","_appendAfterBags","_applyDecorators","afterItemsRendered","$beforeBags","_collectDecoratorsMarkup","$afterBags","method","containerClass","$collector","_handlerExists","decorators","response","currentFocusedIndex","moveFocusUp","contextMenuHandlerExists","getExcludedItemSelectors","excludedSelectors","LIST_ITEM_SELECTED_CLASS","LIST_ITEM_RESPONSE_WAIT_CLASS","ListEdit","moveFocusedItem","moveUp","editStrategy","focusedItemIndex","getNormalizedIndex","isLastIndexFocused","_getLastItemIndex","nextItemIndex","editProvider","_editProvider","isInternalMoving","privateKey","__dx_key__","_selection","selectAllMode","onSelectAllValueChanged","selectAllText","menuItems","menuMode","allowItemDeleting","itemDeleteMode","itemDragging","_initEditProvider","_isPageSelectAll","requireTotalCount","_disposeEditProvider","_refreshEditProvider","_selectedItemClass","_itemResponseWaitClass","handledByEditProvider","_this$_editStrategy$g","_initEditStrategy","selectAll","deselectAll","getSelectAllState","flatIndex","$itemElements","ListSearch","_addWidgetPrefix","_getCombinedFilter","_addSearchFilter","expr","getOperationBySearchMode","RADIO_BUTTON_CLASS","RADIO_BUTTON_ICON_CLASS","RADIO_BUTTON_ICON_DOT_CLASS","RADIO_BUTTON_CHECKED_CLASS","RADIO_BUTTON_ICON_CHECKED_CLASS","RadioButton","_clickAction","_canValueBeChangedByClick","_renderIcon","_renderCheckedState","_renderClick","checked","_clickHandler","SELECT_DECORATOR_ENABLED_CLASS","SELECT_DECORATOR_SELECT_ALL_CLASS","SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS","SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS","SELECT_CHECKBOX_CONTAINER_CLASS","SELECT_CHECKBOX_CLASS","SELECT_RADIO_BUTTON_CONTAINER_CLASS","SELECT_RADIO_BUTTON_CLASS","FOCUSED_STATE_CLASS","CLICK_EVENT_NAME","_singleStrategy","_containerClass","_controlClass","_controlWidget","$control","_isSelected","_processCheckedState","control","_updateSelectAllState","_$selectAll","_selectAllCheckBox","isSelectAll","_renderSelectAll","moveFocusDown","$selectAll","lastItemIndex","isFocusOutOfList","hasSelectAllItem","downArrowHandler","itemsContainer","_attachSelectAllHandler","_selectAllHandler","_selectAllClickHandler","isSelectedAll","_selectAllItems","_unselectAllItems","_checkSelectAllCapability","_disposeSelectAll","SCROLL_EVENT","SCROLL_INIT_EVENT","SCROLL_START_EVENT","SCROLL_MOVE_EVENT","SCROLL_END_EVENT","SCROLL_STOP_EVENT","SCROLL_CANCEL_EVENT","Locker","NAMESPACED_SCROLL_EVENT","_proxiedScroll","_scroll","check","TimeoutLocker","timeout","_timeout","_prepare","_forget","_timer","_clearTimer","WheelLocker","_lastWheelDirection","_checkDirectionChanged","directionChange","PointerLocker","ios8_greater","ios","version","android5_greater","android","_scrollFrame","_checkFrame","ScrollEmitter","FRAME_DURATION","_pointerLocker","_wheelLocker","configure","_accept","skipCheck","_fireEvent","_prevEventData","_start","_savedEventData","currentEventData","time","_end","endEventDelta","velocity","velocityMultiplier","_clearSelection","_toggleGestureCover","emitter","events","scroll","deviceDependentOptions","stubComponent","componentName","EditorClass","searchEditorOptions","_renderSearch","searchBoxClassName","rootElementClassName","_removeSearchBox","editorOptions","_getSearchEditorOptions","_searchEditor","_$searchEditorElement","userEditorOptions","searchText","inputAttr","_valueChangeDeferred","_valueChangeTimeout","_focusTarget","_updateFocusState","_toggleFocusClass","_cleanAria","setEditorClass","hoveredScrollable","activeScrollable","SCROLLABLE_SIMULATED","SCROLLABLE_SIMULATED_CURSOR","SCROLLABLE_SIMULATED_KEYBOARD","SCROLLABLE_SIMULATED_CLASS","SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE","ACCELERATION","OUT_BOUNDS_ACCELERATION","MIN_VELOCITY_LIMIT","SCROLL_LINE_HEIGHT","VALIDATE_WHEEL_TIMEOUT","BOUNCE_MIN_VELOCITY_LIMIT","BOUNCE_DURATION","BOUNCE_FRAMES","BOUNCE_ACCELERATION_SUM","pow","KEY_CODES","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","TAB","InertiaAnimator","VELOCITY_LIMIT","_velocity","_scrollStep","_acceleration","BounceAnimator","_crossBoundOnNextStep","_bounceLocation","Scroller","_initAnimators","_initScrollbar","_topReached","_bottomReached","_axis","_scrollProp","optionValue","_inertiaAnimator","_bounceAnimator","_scrollByThumb","_visibilityModeNormalize","_scrollbarVisible","_$scrollbar","prevLocation","_suppressBounce","triggerHandler","_bounceEnabled","_boundLocation","_moveContentByTranslator","_scaleRatio","realDimension","_getRealDimension","baseDimension","_getBaseDimension","dimensionName","translateOffset","minOffset","_maxScrollPropValue","_translateOffset","_hideScrollbar","_completeDeferred","_scrollToBounds","_bounceAction","_setupBounce","boundLocation","bounceDistance","nextLocation","_stopScrolling","_prepareThumbScrolling","scrollbarClicked","_isScrollbar","_moveToMouseLocation","_thumbScrolling","_isThumb","_crossThumbScrolling","_isAnyThumbScrolling","_isThumbScrollingHandler","mouseLocation","toUpperCase","_containerToContentRatio","_startHandler","_showScrollbar","_moveHandler","_scrollBy","_scrollByHandler","_endHandler","_inertiaHandler","_resetThumbScrolling","_suppressInertia","_inertiaEnabled","_stopHandler","_disposeHandler","_resetScaleRatio","_updateLocation","locationChanged","_createActionsHandler","actions","bounce","isOverflowHidden","containerScrollSize","_validateEvent","_isContent","_scrollByContent","_reachedMin","_reachedMax","_cursorEnterHandler","_cursorLeaveHandler","SimulatedStrategy","_createScrollers","_attachKeyboardHandler","_attachCursorHandlers","scrollbarVisible","isAnyThumbScrolling","_getPropByDirection","isThumbScrollingVertical","isThumbScrollingHorizontal","_suppressDirections","_eachScroller","isValid","_validDirections","_startAction","_saveActive","_resetActive","_adjustDistance","devicePixelRatio","_tryGetDevicePixelRatio","_refreshCursorState","_endAction","_updateRtlConfig","_keyDownHandler","_updateHandlerTimeout","handled","_scrollByLine","_scrollByPage","_scrollToHome","_scrollToEnd","lines","page","_wheelProp","_dimensionByProp","getter","_createActionHandler","_createScrollerActions","actionHandler","scrollerX","scrollerY","_scrollOffset","deferreds","_hoverHandled","$scrollable","targetScrollable","touchDirection","verticalScroller","horizontalScroller","_isHorizontalAndRtlEnabled","_rtlConfig","scrollRight","windowPixelRatio","_getWindowDevicePixelRatio","skipUpdating","_validateWheel","_validateMove","_wheelDirection","reachedMin","reachedMax","contentGreaterThanContainer","locatedNotAtBound","scrollFromMin","scrollFromMax","validated","_validateWheelTimer","_detachEventHandlers","INVALID_MESSAGE_AUTO","VALIDATION_TARGET","getProps","onFocusIn","isValidationMessageShownOnFocus","$validationMessageWrapper","showValidationMessageTimeout","saveValueChangeEvent","_valueChangeEventInstance","_createElement","validationRequest","_this$option","_valueChangeAction","initValidationOptions","validationMessageOffset","validationTooltipOptions","innerWidget","optionsContainer","innerWidgetOptions","syncOptions","_silent","areValuesEmpty","_this$_valueChangeAct","_getActionConfigs","_addAction","_raiseValidation","_raiseValueChangeAction","synchronizeValidationOptions","prevIsEditor","isEditor","newIsEditor","focusTarget","Boolean","ValidationMessageProps","create","getOwnPropertyDescriptors","isReactComponentWrapper","getCssClasses","classes","readOnly","classesMap","viewModel","aria","cssClasses","isValidationMessageVisible","accessKey","hint","onKeyDown","validationMessageMode","validationErrors","validationMessageGuid","validationMessageTarget","boundary","contentId","EditorProps","validationError","validationStatus","defaultValue","EditorPropsType","__getterCache","updateValidationMessageVisibility","blur","setState","__state_argument","shouldShowValidationMessage","_this$validationError","isEditorValid","readonly","invalid","describedBy","allValidationErrors","_this$rootElementRef","_this$props$value","nextProps","nextState","componentWillUpdate","defaultIconSizes","defaultFontSizes","getThemeType","theme","isMaterialTheme","isCompactTheme","getDefaultIconSize","getDefaultFontSize","isChecked","getFontSizeByIconSize","iconSize","defaultFontSize","defaultIconSize","fontToIconSizeRatio","cssStyles","elementRef","CheckBoxIconProps","updateFontSize","setIconFontSize","getIconSize","getComputedIconSize","newIconSize","newFontSize","fontSize","endsWith","iconComputedStyle","computedIconSize","indeterminate","editorRef","keyDown","onWidgetClick","CheckBoxProps","CheckBoxPropsType","defaultOptionRules","__newValue","keyName","which","twoWayProps","propValue","defaultPropName","charAt","rule","_wrapKeyDownHandler","_this$viewRef","viewRef","_this$viewRef2","twoWay","allowNull","elements","defaultOptions"],"mappings":"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","file":"js/chunk-f9930040.ffc483a8.js","sourcesContent":["/**\r\n * DevExtreme (esm/ui/drop_down_editor/utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar getElementWidth = function($element) {\r\n if (hasWindow()) {\r\n return getOuterWidth($element)\r\n }\r\n};\r\nvar getSizeValue = function(size) {\r\n if (null === size) {\r\n size = void 0\r\n }\r\n if (\"function\" === typeof size) {\r\n size = size()\r\n }\r\n return size\r\n};\r\nexport {\r\n getElementWidth,\r\n getSizeValue\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/load_panel.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport LoadIndicator from \"./load_indicator\";\r\nimport Overlay from \"./overlay/ui.overlay\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n isMaterial\r\n} from \"./themes\";\r\nvar LOADPANEL_CLASS = \"dx-loadpanel\";\r\nvar LOADPANEL_WRAPPER_CLASS = \"dx-loadpanel-wrapper\";\r\nvar LOADPANEL_INDICATOR_CLASS = \"dx-loadpanel-indicator\";\r\nvar LOADPANEL_MESSAGE_CLASS = \"dx-loadpanel-message\";\r\nvar LOADPANEL_CONTENT_CLASS = \"dx-loadpanel-content\";\r\nvar LOADPANEL_CONTENT_WRAPPER_CLASS = \"dx-loadpanel-content-wrapper\";\r\nvar LOADPANEL_PANE_HIDDEN_CLASS = \"dx-loadpanel-pane-hidden\";\r\nvar LoadPanel = Overlay.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n escape: noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n message: messageLocalization.format(\"Loading\"),\r\n width: 222,\r\n height: 90,\r\n animation: null,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true,\r\n delay: 0,\r\n templatesRenderAsynchronously: false,\r\n hideTopOverlayHandler: null,\r\n resizeEnabled: false,\r\n focusStateEnabled: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n shadingColor: \"transparent\"\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n message: \"\",\r\n width: 60,\r\n height: 60,\r\n maxHeight: 60,\r\n maxWidth: 60\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADPANEL_CLASS);\r\n this.$wrapper().addClass(LOADPANEL_WRAPPER_CLASS)\r\n },\r\n _renderContentImpl: function() {\r\n this.callBase();\r\n this.$content().addClass(LOADPANEL_CONTENT_CLASS);\r\n this._$loadPanelContentWrapper = $(\"
\").addClass(LOADPANEL_CONTENT_WRAPPER_CLASS);\r\n this._$loadPanelContentWrapper.appendTo(this.$content());\r\n this._togglePaneVisible();\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage()\r\n },\r\n _show: function() {\r\n var delay = this.option(\"delay\");\r\n if (!delay) {\r\n return this.callBase()\r\n }\r\n var deferred = new Deferred;\r\n var callBase = this.callBase.bind(this);\r\n this._clearShowTimeout();\r\n this._showTimeout = setTimeout((function() {\r\n callBase().done((function() {\r\n deferred.resolve()\r\n }))\r\n }), delay);\r\n return deferred.promise()\r\n },\r\n _hide: function() {\r\n this._clearShowTimeout();\r\n return this.callBase()\r\n },\r\n _clearShowTimeout: function() {\r\n clearTimeout(this._showTimeout)\r\n },\r\n _renderMessage: function() {\r\n if (!this._$loadPanelContentWrapper) {\r\n return\r\n }\r\n var message = this.option(\"message\");\r\n if (!message) {\r\n return\r\n }\r\n var $message = $(\"
\").addClass(LOADPANEL_MESSAGE_CLASS).text(message);\r\n this._$loadPanelContentWrapper.append($message)\r\n },\r\n _renderLoadIndicator: function() {\r\n if (!this._$loadPanelContentWrapper || !this.option(\"showIndicator\")) {\r\n return\r\n }\r\n if (!this._$indicator) {\r\n this._$indicator = $(\"
\").addClass(LOADPANEL_INDICATOR_CLASS).appendTo(this._$loadPanelContentWrapper)\r\n }\r\n this._createComponent(this._$indicator, LoadIndicator, {\r\n indicatorSrc: this.option(\"indicatorSrc\")\r\n })\r\n },\r\n _cleanPreviousContent: function() {\r\n this.$content().find(\".\" + LOADPANEL_MESSAGE_CLASS).remove();\r\n this.$content().find(\".\" + LOADPANEL_INDICATOR_CLASS).remove();\r\n delete this._$indicator\r\n },\r\n _togglePaneVisible: function() {\r\n this.$content().toggleClass(LOADPANEL_PANE_HIDDEN_CLASS, !this.option(\"showPane\"))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"delay\":\r\n break;\r\n case \"message\":\r\n case \"showIndicator\":\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage();\r\n break;\r\n case \"showPane\":\r\n this._togglePaneVisible();\r\n break;\r\n case \"indicatorSrc\":\r\n this._renderLoadIndicator();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dispose: function() {\r\n this._clearShowTimeout();\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxLoadPanel\", LoadPanel);\r\nexport default LoadPanel;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.base.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n setHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getImageContainer\r\n} from \"../../core/utils/icon\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n end as swipeEventEnd\r\n} from \"../../events/swipe\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport devices from \"../../core/devices\";\r\nimport ListItem from \"./item\";\r\nimport Button from \"../button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n current,\r\n isMaterial\r\n} from \"../themes\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport ScrollView from \"../scroll_view\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"../scroll_view/ui.scrollable.device\";\r\nimport CollectionWidget from \"../collection/ui.collection_widget.live_update\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport DataConverterMixin from \"../shared/grouped_data_converter_mixin\";\r\nvar LIST_CLASS = \"dx-list\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTOR = \".\" + LIST_ITEM_CLASS;\r\nvar LIST_ITEM_ICON_CONTAINER_CLASS = \"dx-list-item-icon-container\";\r\nvar LIST_ITEM_ICON_CLASS = \"dx-list-item-icon\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar LIST_GROUP_HEADER_CLASS = \"dx-list-group-header\";\r\nvar LIST_GROUP_BODY_CLASS = \"dx-list-group-body\";\r\nvar LIST_COLLAPSIBLE_GROUPS_CLASS = \"dx-list-collapsible-groups\";\r\nvar LIST_GROUP_COLLAPSED_CLASS = \"dx-list-group-collapsed\";\r\nvar LIST_GROUP_HEADER_INDICATOR_CLASS = \"dx-list-group-header-indicator\";\r\nvar LIST_HAS_NEXT_CLASS = \"dx-has-next\";\r\nvar LIST_NEXT_BUTTON_CLASS = \"dx-list-next-button\";\r\nvar WRAP_ITEM_TEXT_CLASS = \"dx-wrap-item-text\";\r\nvar SELECT_ALL_ITEM_SELECTOR = \".dx-list-select-all\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar LIST_FEEDBACK_SHOW_TIMEOUT = 70;\r\nvar groupItemsGetter = compileGetter(\"items\");\r\nvar _scrollView;\r\nexport var ListBase = CollectionWidget.inherit({\r\n _activeStateUnit: [LIST_ITEM_SELECTOR, SELECT_ALL_ITEM_SELECTOR].join(\",\"),\r\n _supportedKeys: function() {\r\n var that = this;\r\n var moveFocusPerPage = function(direction) {\r\n var $item = getEdgeVisibleItem(direction);\r\n var isFocusedItem = $item.is(that.option(\"focusedElement\"));\r\n if (isFocusedItem) {\r\n ! function($item, direction) {\r\n var resultPosition = $item.position().top;\r\n if (\"prev\" === direction) {\r\n resultPosition = $item.position().top - getHeight(that.$element()) + getOuterHeight($item)\r\n }\r\n that.scrollTo(resultPosition)\r\n }($item, direction);\r\n $item = getEdgeVisibleItem(direction)\r\n }\r\n that.option(\"focusedElement\", getPublicElement($item));\r\n that.scrollToItem($item)\r\n };\r\n\r\n function getEdgeVisibleItem(direction) {\r\n var scrollTop = that.scrollTop();\r\n var containerHeight = getHeight(that.$element());\r\n var $item = $(that.option(\"focusedElement\"));\r\n var isItemVisible = true;\r\n if (!$item.length) {\r\n return $()\r\n }\r\n while (isItemVisible) {\r\n var $nextItem = $item[direction]();\r\n if (!$nextItem.length) {\r\n break\r\n }\r\n var nextItemLocation = $nextItem.position().top + getOuterHeight($nextItem) / 2;\r\n isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop;\r\n if (isItemVisible) {\r\n $item = $nextItem\r\n }\r\n }\r\n return $item\r\n }\r\n return extend(this.callBase(), {\r\n leftArrow: noop,\r\n rightArrow: noop,\r\n pageUp: function() {\r\n moveFocusPerPage(\"prev\");\r\n return false\r\n },\r\n pageDown: function() {\r\n moveFocusPerPage(\"next\");\r\n return false\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n pullRefreshEnabled: false,\r\n scrollingEnabled: true,\r\n showScrollbar: \"onScroll\",\r\n useNativeScrolling: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n pullingDownText: messageLocalization.format(\"dxList-pullingDownText\"),\r\n pulledDownText: messageLocalization.format(\"dxList-pulledDownText\"),\r\n refreshingText: messageLocalization.format(\"dxList-refreshingText\"),\r\n pageLoadingText: messageLocalization.format(\"dxList-pageLoadingText\"),\r\n onScroll: null,\r\n onPullRefresh: null,\r\n onPageLoading: null,\r\n pageLoadMode: \"scrollBottom\",\r\n nextButtonText: messageLocalization.format(\"dxList-nextButtonText\"),\r\n onItemSwipe: null,\r\n grouped: false,\r\n onGroupRendered: null,\r\n collapsibleGroups: false,\r\n groupTemplate: \"group\",\r\n indicateLoading: true,\r\n activeStateEnabled: true,\r\n _itemAttributes: {\r\n role: \"option\"\r\n },\r\n _listAttributes: {\r\n role: \"listbox\"\r\n },\r\n useInkRipple: false,\r\n wrapItemText: false,\r\n _swipeEnabled: true,\r\n _revertPageOnEmptyLoad: false,\r\n showChevronExpr: function(data) {\r\n return data ? data.showChevron : void 0\r\n },\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = current();\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNativeScrolling: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !nativeScrolling && !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n showScrollbar: \"onHover\",\r\n pageLoadMode: \"nextButton\"\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n pageLoadingText: \"\",\r\n useInkRipple: true\r\n }\r\n }])\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateLoadingState(true)\r\n }\r\n },\r\n _itemClass: function() {\r\n return LIST_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return LIST_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$container\r\n },\r\n _saveSelectionChangeEvent: function(e) {\r\n this._selectionChangeEventInstance = e\r\n },\r\n _getSelectionChangeEvent: function() {\r\n return this._selectionChangeEventInstance\r\n },\r\n _refreshItemElements: function() {\r\n if (!this.option(\"grouped\")) {\r\n this._itemElementsCache = this._itemContainer().children(this._itemSelector())\r\n } else {\r\n this._itemElementsCache = this._itemContainer().children(\".\" + LIST_GROUP_CLASS).children(\".\" + LIST_GROUP_BODY_CLASS).children(this._itemSelector())\r\n }\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var promise = this.callBase(itemElement, toItemElement);\r\n return promise.done((function() {\r\n this._refreshItemElements()\r\n }))\r\n },\r\n deleteItem: function(itemElement) {\r\n var promise = this.callBase(itemElement);\r\n return promise.done((function() {\r\n this._refreshItemElements()\r\n }))\r\n },\r\n _itemElements: function() {\r\n return this._itemElementsCache\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n return this.callBase(e)\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return true\r\n },\r\n _resetDataSourcePageIndex: function() {\r\n var currentDataSource = this.getDataSource();\r\n if (currentDataSource && 0 !== currentDataSource.pageIndex()) {\r\n currentDataSource.pageIndex(0);\r\n currentDataSource.load()\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._resetDataSourcePageIndex();\r\n this._$container = this.$element();\r\n this._initScrollView();\r\n this._feedbackShowTimeout = LIST_FEEDBACK_SHOW_TIMEOUT;\r\n this._createGroupRenderAction()\r\n },\r\n _scrollBottomMode: function() {\r\n return \"scrollBottom\" === this.option(\"pageLoadMode\")\r\n },\r\n _nextButtonMode: function() {\r\n return \"nextButton\" === this.option(\"pageLoadMode\")\r\n },\r\n _dataSourceOptions: function() {\r\n var scrollBottom = this._scrollBottomMode();\r\n var nextButton = this._nextButtonMode();\r\n return extend(this.callBase(), {\r\n paginate: ensureDefined(scrollBottom || nextButton, true)\r\n })\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _getGroupContainerByIndex: function(groupIndex) {\r\n return this._itemContainer().find(\".\".concat(LIST_GROUP_CLASS)).eq(groupIndex).find(\".\".concat(LIST_GROUP_BODY_CLASS))\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _initScrollView: function() {\r\n var scrollingEnabled = this.option(\"scrollingEnabled\");\r\n var pullRefreshEnabled = scrollingEnabled && this.option(\"pullRefreshEnabled\");\r\n var autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataSource;\r\n this._scrollView = this._createComponent(this.$element(), getScrollView(), {\r\n disabled: this.option(\"disabled\") || !scrollingEnabled,\r\n onScroll: this._scrollHandler.bind(this),\r\n onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null,\r\n onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null,\r\n showScrollbar: this.option(\"showScrollbar\"),\r\n useNative: this.option(\"useNativeScrolling\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n pullingDownText: this.option(\"pullingDownText\"),\r\n pulledDownText: this.option(\"pulledDownText\"),\r\n refreshingText: this.option(\"refreshingText\"),\r\n reachBottomText: this.option(\"pageLoadingText\"),\r\n useKeyboard: false\r\n });\r\n this._$container = $(this._scrollView.content());\r\n if (this.option(\"wrapItemText\")) {\r\n this._$container.addClass(WRAP_ITEM_TEXT_CLASS)\r\n }\r\n this._createScrollViewActions()\r\n },\r\n _createScrollViewActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\");\r\n this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n },\r\n _scrollHandler: function(e) {\r\n this._scrollAction && this._scrollAction(e)\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n group: new BindableTemplate((function($container, data) {\r\n if (isPlainObject(data)) {\r\n if (data.key) {\r\n $container.text(data.key)\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n }), [\"key\"], this.option(\"integrationOptions.watchMethod\"))\r\n });\r\n this.callBase()\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n this.callBase(data, $container);\r\n if (data.icon) {\r\n var $icon = getImageContainer(data.icon).addClass(LIST_ITEM_ICON_CLASS);\r\n var $iconContainer = $(\"
\").addClass(LIST_ITEM_ICON_CONTAINER_CLASS);\r\n $iconContainer.append($icon);\r\n $container.prepend($iconContainer)\r\n }\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\", \"icon\"]\r\n },\r\n _updateLoadingState: function(tryLoadMore) {\r\n var isDataLoaded = !tryLoadMore || this._isLastPage();\r\n var scrollBottomMode = this._scrollBottomMode();\r\n var stopLoading = isDataLoaded || !scrollBottomMode;\r\n var hideLoadIndicator = stopLoading && !this._isDataSourceLoading();\r\n if (stopLoading || this._scrollViewIsFull()) {\r\n this._scrollView.release(hideLoadIndicator);\r\n this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());\r\n this._loadIndicationSuppressed(false)\r\n } else {\r\n this._infiniteDataLoading()\r\n }\r\n },\r\n _shouldRenderNextButton: function() {\r\n return this._nextButtonMode() && this._dataSource && this._dataSource.isLoaded()\r\n },\r\n _isDataSourceFirstLoadCompleted: function(newValue) {\r\n if (isDefined(newValue)) {\r\n this._isFirstLoadCompleted = newValue\r\n }\r\n return this._isFirstLoadCompleted\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n if (this._loadIndicationSuppressed()) {\r\n return\r\n }\r\n if (isLoading && this.option(\"indicateLoading\")) {\r\n this._showLoadingIndicatorTimer = setTimeout(function() {\r\n var isEmpty = !this._itemElements().length;\r\n var shouldIndicateLoading = !isEmpty || this._isDataSourceFirstLoadCompleted();\r\n if (shouldIndicateLoading) {\r\n var _this$_scrollView;\r\n null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView ? void 0 : _this$_scrollView.startLoading()\r\n }\r\n }.bind(this))\r\n } else {\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this._scrollView && this._scrollView.finishLoading()\r\n }\r\n if (!isLoading) {\r\n this._isDataSourceFirstLoadCompleted(false)\r\n }\r\n },\r\n _dataSourceChangedHandler: function() {\r\n if (!this._shouldAppendItems() && hasWindow()) {\r\n this._scrollView && this._scrollView.scrollTo(0)\r\n }\r\n this.callBase.apply(this, arguments);\r\n this._isDataSourceFirstLoadCompleted(true)\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._fireContentReadyAction()\r\n },\r\n _hideLoadingIfLoadIndicationOff: function() {\r\n if (!this.option(\"indicateLoading\")) {\r\n this._dataSourceLoadingChangedHandler(false)\r\n }\r\n },\r\n _loadIndicationSuppressed: function(value) {\r\n if (!arguments.length) {\r\n return this._isLoadIndicationSuppressed\r\n }\r\n this._isLoadIndicationSuppressed = value\r\n },\r\n _scrollViewIsFull: function() {\r\n var scrollView = this._scrollView;\r\n return !scrollView || getHeight(scrollView.content()) > getHeight(scrollView.container())\r\n },\r\n _pullDownHandler: function(e) {\r\n this._pullRefreshAction(e);\r\n if (this._dataSource && !this._isDataSourceLoading()) {\r\n this._clearSelectedItems();\r\n this._dataSource.pageIndex(0);\r\n this._dataSource.reload()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _infiniteDataLoading: function() {\r\n var isElementVisible = this.$element().is(\":visible\");\r\n if (isElementVisible && !this._scrollViewIsFull() && !this._isDataSourceLoading() && !this._isLastPage()) {\r\n clearTimeout(this._loadNextPageTimer);\r\n this._loadNextPageTimer = setTimeout(() => {\r\n this._loadNextPage().done(this._setPreviousPageIfNewIsEmpty.bind(this))\r\n })\r\n }\r\n },\r\n _setPreviousPageIfNewIsEmpty: function(result) {\r\n if (this.option(\"_revertPageOnEmptyLoad\")) {\r\n var dataSource = this.getDataSource();\r\n var pageIndex = null === dataSource || void 0 === dataSource ? void 0 : dataSource.pageIndex();\r\n if (0 === (null === result || void 0 === result ? void 0 : result.length) && pageIndex > 0) {\r\n this._fireContentReadyAction();\r\n dataSource.pageIndex(pageIndex - 1)\r\n }\r\n }\r\n },\r\n _scrollBottomHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n if (!this._isDataSourceLoading() && !this._isLastPage()) {\r\n this._loadNextPage()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (this.option(\"grouped\")) {\r\n each(items, this._renderGroup.bind(this));\r\n this._attachGroupCollapseEvent();\r\n this._renderEmptyMessage();\r\n if (isMaterial()) {\r\n this.attachGroupHeaderInkRippleEvents()\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n _attachGroupCollapseEvent: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n var collapsibleGroups = this.option(\"collapsibleGroups\");\r\n $element.toggleClass(LIST_COLLAPSIBLE_GROUPS_CLASS, collapsibleGroups);\r\n eventsEngine.off($element, eventName, selector);\r\n if (collapsibleGroups) {\r\n eventsEngine.on($element, eventName, selector, function(e) {\r\n this._createAction(function(e) {\r\n var $group = $(e.event.currentTarget).parent();\r\n this._collapseGroupHandler($group);\r\n if (this.option(\"focusStateEnabled\")) {\r\n this.option(\"focusedElement\", getPublicElement($group.find(\".\" + LIST_ITEM_CLASS).eq(0)))\r\n }\r\n }.bind(this), {\r\n validatingTargetName: \"element\"\r\n })({\r\n event: e\r\n })\r\n }.bind(this))\r\n }\r\n },\r\n _collapseGroupHandler: function($group, toggle) {\r\n var deferred = new Deferred;\r\n if ($group.hasClass(LIST_GROUP_COLLAPSED_CLASS) === toggle) {\r\n return deferred.resolve()\r\n }\r\n var $groupBody = $group.children(\".\" + LIST_GROUP_BODY_CLASS);\r\n var startHeight = getOuterHeight($groupBody);\r\n var endHeight = 0;\r\n if (0 === startHeight) {\r\n setHeight($groupBody, \"auto\");\r\n endHeight = getOuterHeight($groupBody)\r\n }\r\n $group.toggleClass(LIST_GROUP_COLLAPSED_CLASS, toggle);\r\n fx.animate($groupBody, {\r\n type: \"custom\",\r\n from: {\r\n height: startHeight\r\n },\r\n to: {\r\n height: endHeight\r\n },\r\n duration: 200,\r\n complete: function() {\r\n this.updateDimensions();\r\n this._updateLoadingState();\r\n deferred.resolve()\r\n }.bind(this)\r\n });\r\n return deferred.promise()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n if (this._initialized) {\r\n this._renderEmptyMessage();\r\n this._updateLoadingState()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._itemElementsCache = $();\r\n this.$element().addClass(LIST_CLASS);\r\n this.callBase();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.setAria(\"role\", this.option(\"_listAttributes\").role)\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render()\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n var that = this;\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n if (isMaterial()) {\r\n this._inkRippleTimer = setTimeout((function() {\r\n that._inkRipple.showWave(config)\r\n }), LIST_FEEDBACK_SHOW_TIMEOUT / 2)\r\n } else {\r\n that._inkRipple.showWave(config)\r\n }\r\n } else {\r\n clearTimeout(this._inkRippleTimer);\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this._refreshItemElements();\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"_swipeEnabled\")) {\r\n this._attachSwipeEvent($(args.itemElement))\r\n }\r\n },\r\n _attachSwipeEvent: function($itemElement) {\r\n var endEventName = addNamespace(swipeEventEnd, this.NAME);\r\n eventsEngine.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n this._itemDXEventHandler(e, \"onItemSwipe\", {\r\n direction: e.offset < 0 ? \"left\" : \"right\"\r\n })\r\n },\r\n _nextButtonHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n var source = this._dataSource;\r\n if (source && !source.isLoading()) {\r\n this._scrollView.toggleLoading(true);\r\n this._$nextButton.detach();\r\n this._loadIndicationSuppressed(true);\r\n this._loadNextPage()\r\n }\r\n },\r\n _renderGroup: function(index, group) {\r\n var $groupElement = $(\"
\").addClass(LIST_GROUP_CLASS).appendTo(this._itemContainer());\r\n var $groupHeaderElement = $(\"
\").addClass(LIST_GROUP_HEADER_CLASS).appendTo($groupElement);\r\n var groupTemplateName = this.option(\"groupTemplate\");\r\n var groupTemplate = this._getTemplate(group.template || groupTemplateName, group, index, $groupHeaderElement);\r\n var renderArgs = {\r\n index: index,\r\n itemData: group,\r\n container: getPublicElement($groupHeaderElement)\r\n };\r\n this._createItemByTemplate(groupTemplate, renderArgs);\r\n if (isMaterial()) {\r\n $(\"
\").addClass(LIST_GROUP_HEADER_INDICATOR_CLASS).prependTo($groupHeaderElement)\r\n }\r\n this._renderingGroupIndex = index;\r\n var $groupBody = $(\"
\").addClass(LIST_GROUP_BODY_CLASS).appendTo($groupElement);\r\n each(groupItemsGetter(group) || [], function(itemIndex, item) {\r\n this._renderItem({\r\n group: index,\r\n item: itemIndex\r\n }, item, $groupBody)\r\n }.bind(this));\r\n this._groupRenderAction({\r\n groupElement: getPublicElement($groupElement),\r\n groupIndex: index,\r\n groupData: group\r\n })\r\n },\r\n downInkRippleHandler: function(e) {\r\n this._toggleActiveState($(e.currentTarget), true, e)\r\n },\r\n upInkRippleHandler: function(e) {\r\n this._toggleActiveState($(e.currentTarget), false)\r\n },\r\n attachGroupHeaderInkRippleEvents: function() {\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this);\r\n this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this);\r\n var downArguments = [$element, \"dxpointerdown\", selector, this._downInkRippleHandler];\r\n var upArguments = [$element, \"dxpointerup dxpointerout\", selector, this._upInkRippleHandler];\r\n eventsEngine.off(...downArguments);\r\n eventsEngine.on(...downArguments);\r\n eventsEngine.off(...upArguments);\r\n eventsEngine.on(...upArguments)\r\n },\r\n _createGroupRenderAction: function() {\r\n this._groupRenderAction = this._createActionByOption(\"onGroupRendered\")\r\n },\r\n _clean: function() {\r\n clearTimeout(this._inkRippleTimer);\r\n if (this._$nextButton) {\r\n this._$nextButton.remove();\r\n this._$nextButton = null\r\n }\r\n delete this._inkRipple;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _dispose: function() {\r\n this._isDataSourceFirstLoadCompleted(false);\r\n clearTimeout(this._holdTimer);\r\n clearTimeout(this._loadNextPageTimer);\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this.callBase()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(value);\r\n this._scrollView.option(\"disabled\", value || !this.option(\"scrollingEnabled\"))\r\n },\r\n _toggleNextButton: function(value) {\r\n var dataSource = this._dataSource;\r\n var $nextButton = this._getNextButton();\r\n this.$element().toggleClass(LIST_HAS_NEXT_CLASS, value);\r\n if (value && dataSource && dataSource.isLoaded()) {\r\n $nextButton.appendTo(this._itemContainer())\r\n }\r\n if (!value) {\r\n $nextButton.detach()\r\n }\r\n },\r\n _getNextButton: function() {\r\n if (!this._$nextButton) {\r\n this._$nextButton = this._createNextButton()\r\n }\r\n return this._$nextButton\r\n },\r\n _createNextButton: function() {\r\n var $result = $(\"
\").addClass(LIST_NEXT_BUTTON_CLASS);\r\n var $button = $(\"
\").appendTo($result);\r\n this._createComponent($button, Button, {\r\n text: this.option(\"nextButtonText\"),\r\n onClick: this._nextButtonHandler.bind(this),\r\n type: isMaterial() ? \"default\" : void 0,\r\n integrationOptions: {}\r\n });\r\n return $result\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _refresh: function() {\r\n if (!hasWindow()) {\r\n this.callBase()\r\n } else {\r\n var scrollTop = this._scrollView.scrollTop();\r\n this.callBase();\r\n scrollTop && this._scrollView.scrollTo(scrollTop)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"pageLoadMode\":\r\n this._toggleNextButton(args.value);\r\n this._initScrollView();\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initScrollView();\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"items\":\r\n this.callBase(args);\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"pageLoadingText\":\r\n case \"showScrollbar\":\r\n case \"bounceEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"useNativeScrolling\":\r\n case \"scrollingEnabled\":\r\n case \"pullRefreshEnabled\":\r\n this._initScrollView();\r\n this._updateLoadingState();\r\n break;\r\n case \"nextButtonText\":\r\n case \"onItemSwipe\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"onScroll\":\r\n case \"onPullRefresh\":\r\n case \"onPageLoading\":\r\n this._createScrollViewActions();\r\n break;\r\n case \"grouped\":\r\n case \"collapsibleGroups\":\r\n case \"groupTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"wrapItemText\":\r\n this._$container.toggleClass(WRAP_ITEM_TEXT_CLASS, args.value);\r\n break;\r\n case \"onGroupRendered\":\r\n this._createGroupRenderAction();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"indicateLoading\":\r\n this._hideLoadingIfLoadIndicationOff();\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"rtlEnabled\":\r\n this._initScrollView();\r\n this.callBase(args);\r\n break;\r\n case \"showChevronExpr\":\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n case \"_swipeEnabled\":\r\n case \"_revertPageOnEmptyLoad\":\r\n case \"_listAttributes\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n if (!this.option(\"grouped\")) {\r\n return this.callBase($itemElement)\r\n }\r\n var $group = $itemElement.closest(\".\" + LIST_GROUP_CLASS);\r\n var $item = $group.find(\".\" + LIST_ITEM_CLASS);\r\n return extend(this.callBase($itemElement), {\r\n itemIndex: {\r\n group: $group.index(),\r\n item: $item.index($itemElement)\r\n }\r\n })\r\n },\r\n expandGroup: function(groupIndex) {\r\n var deferred = new Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, false).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n collapseGroup: function(groupIndex) {\r\n var deferred = new Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, true).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred\r\n },\r\n updateDimensions: function() {\r\n var that = this;\r\n var deferred = new Deferred;\r\n if (that._scrollView) {\r\n that._scrollView.update().done((function() {\r\n !that._scrollViewIsFull() && that._updateLoadingState(true);\r\n deferred.resolveWith(that)\r\n }))\r\n } else {\r\n deferred.resolveWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reload: function() {\r\n this.callBase();\r\n this.scrollTo(0);\r\n this._pullDownHandler()\r\n },\r\n repaint: function() {\r\n this.scrollTo(0);\r\n this.callBase()\r\n },\r\n scrollTop: function() {\r\n return this._scrollView.scrollOffset().top\r\n },\r\n clientHeight: function() {\r\n return this._scrollView.clientHeight()\r\n },\r\n scrollHeight: function() {\r\n return this._scrollView.scrollHeight()\r\n },\r\n scrollBy: function(distance) {\r\n this._scrollView.scrollBy(distance)\r\n },\r\n scrollTo: function(location) {\r\n this._scrollView.scrollTo(location)\r\n },\r\n scrollToItem: function(itemElement) {\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n this._scrollView.scrollToElement(null === $item || void 0 === $item ? void 0 : $item.get(0))\r\n },\r\n _dimensionChanged: function() {\r\n this.updateDimensions()\r\n }\r\n}).include(DataConverterMixin);\r\nListBase.ItemClass = ListItem;\r\n\r\nfunction getScrollView() {\r\n return _scrollView || ScrollView\r\n}\r\nexport function setScrollView(value) {\r\n _scrollView = value\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/item.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nvar LIST_ITEM_BADGE_CONTAINER_CLASS = \"dx-list-item-badge-container\";\r\nvar LIST_ITEM_BADGE_CLASS = \"dx-list-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar LIST_ITEM_CHEVRON_CONTAINER_CLASS = \"dx-list-item-chevron-container\";\r\nvar LIST_ITEM_CHEVRON_CLASS = \"dx-list-item-chevron\";\r\nvar ListItem = CollectionWidgetItem.inherit({\r\n _renderWatchers: function() {\r\n this.callBase();\r\n this._startWatcher(\"badge\", this._renderBadge.bind(this));\r\n this._startWatcher(\"showChevron\", this._renderShowChevron.bind(this))\r\n },\r\n _renderBadge: function(badge) {\r\n this._$element.children(\".\" + LIST_ITEM_BADGE_CONTAINER_CLASS).remove();\r\n if (!badge) {\r\n return\r\n }\r\n var $badge = $(\"
\").addClass(LIST_ITEM_BADGE_CONTAINER_CLASS).append($(\"
\").addClass(LIST_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge));\r\n var $chevron = this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).first();\r\n $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element)\r\n },\r\n _renderShowChevron: function(showChevron) {\r\n this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).remove();\r\n if (!showChevron) {\r\n return\r\n }\r\n var $chevronContainer = $(\"
\").addClass(LIST_ITEM_CHEVRON_CONTAINER_CLASS);\r\n var $chevron = $(\"
\").addClass(LIST_ITEM_CHEVRON_CLASS);\r\n $chevronContainer.append($chevron).appendTo(this._$element)\r\n }\r\n});\r\nexport default ListItem;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator_registry.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport var registry = {};\r\nexport function register(option, type, decoratorClass) {\r\n var decoratorsRegistry = registry;\r\n var decoratorConfig = {};\r\n decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {};\r\n decoratorConfig[option][type] = decoratorClass;\r\n extend(decoratorsRegistry, decoratorConfig)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/utils/get_computed_style.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nexport default function getElementComputedStyle(el) {\r\n var _window$getComputedSt;\r\n return el ? null === (_window$getComputedSt = window.getComputedStyle) || void 0 === _window$getComputedSt ? void 0 : _window$getComputedSt.call(window, el) : null\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_element_location_internal.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n titleize\r\n} from \"../../../../core/utils/inflector\";\r\nimport {\r\n getRelativeOffset\r\n} from \"./get_relative_offset\";\r\nimport {\r\n DIRECTION_VERTICAL,\r\n SCROLLABLE_CONTENT_CLASS\r\n} from \"../common/consts\";\r\nexport function getElementLocationInternal(targetElement, direction, containerElement, scrollOffset, offset) {\r\n var additionalOffset = _extends({\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0\r\n }, offset);\r\n var isVertical = direction === DIRECTION_VERTICAL;\r\n var prop = isVertical ? \"top\" : \"left\";\r\n var inverseProp = isVertical ? \"bottom\" : \"right\";\r\n var dimension = isVertical ? \"height\" : \"width\";\r\n var containerOffsetSize = containerElement[\"offset\".concat(titleize(dimension))];\r\n var containerClientSize = containerElement[\"client\".concat(titleize(dimension))];\r\n var containerSize = containerElement.getBoundingClientRect()[dimension];\r\n var elementSize = targetElement.getBoundingClientRect()[dimension];\r\n var scale = 1;\r\n if (Math.abs(containerSize - containerOffsetSize) > 1) {\r\n scale = containerSize / containerOffsetSize\r\n }\r\n var relativeElementOffset = getRelativeOffset(SCROLLABLE_CONTENT_CLASS, targetElement)[prop] / scale;\r\n var containerScrollOffset = scrollOffset[prop];\r\n var relativeStartOffset = containerScrollOffset - relativeElementOffset + additionalOffset[prop];\r\n var relativeEndOffset = containerScrollOffset - relativeElementOffset - elementSize / scale + containerClientSize - additionalOffset[inverseProp];\r\n if (relativeStartOffset <= 0 && relativeEndOffset >= 0) {\r\n return containerScrollOffset\r\n }\r\n return containerScrollOffset - (Math.abs(relativeStartOffset) > Math.abs(relativeEndOffset) ? relativeEndOffset : relativeStartOffset)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getWidth,\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport devices from \"../../core/devices\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport scrollEvents from \"../../events/gesture/emitter.gesture.scroll\";\r\nimport {\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"./ui.scrollable.device\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n getElementLocationInternal\r\n} from \"../../renovation/ui/scroll_view/utils/get_element_location_internal\";\r\nvar SCROLLABLE = \"dxScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_CLASS = \"dx-scrollable\";\r\nvar SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nvar SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar BOTH = \"both\";\r\nvar Scrollable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n disabled: false,\r\n onScroll: null,\r\n direction: VERTICAL,\r\n showScrollbar: \"onScroll\",\r\n useNative: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n onUpdated: null,\r\n onStart: null,\r\n onEnd: null,\r\n onBounce: null,\r\n useSimulatedScrollbar: false,\r\n useKeyboard: true,\r\n inertiaEnabled: true,\r\n updateManually: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return nativeScrolling && \"android\" === devices.real().platform && !browser.mozilla\r\n },\r\n options: {\r\n useSimulatedScrollbar: true\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this.callBase(options);\r\n if (!(\"useSimulatedScrollbar\" in options)) {\r\n this._setUseSimulatedScrollbar()\r\n }\r\n },\r\n _setUseSimulatedScrollbar: function() {\r\n if (!this.initialOption(\"useSimulatedScrollbar\")) {\r\n this.option(\"useSimulatedScrollbar\", !this.option(\"useNative\"))\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initScrollableMarkup();\r\n this._locked = false\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.update();\r\n this._updateRtlPosition();\r\n this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);\r\n delete this._savedScrollOffset\r\n } else {\r\n this._savedScrollOffset = this.scrollOffset()\r\n }\r\n },\r\n _initScrollableMarkup: function() {\r\n var $element = this.$element().addClass(SCROLLABLE_CLASS);\r\n var $container = this._$container = $(\"
\").addClass(SCROLLABLE_CONTAINER_CLASS);\r\n var $wrapper = this._$wrapper = $(\"
\").addClass(SCROLLABLE_WRAPPER_CLASS);\r\n var $content = this._$content = $(\"
\").addClass(SCROLLABLE_CONTENT_CLASS);\r\n $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._updateRtlPosition(true)\r\n },\r\n _updateRtlPosition: function(needInitializeRtlConfig) {\r\n this._strategy.updateRtlPosition(needInitializeRtlConfig)\r\n },\r\n _getMaxOffset: function() {\r\n var {\r\n scrollWidth: scrollWidth,\r\n clientWidth: clientWidth,\r\n scrollHeight: scrollHeight,\r\n clientHeight: clientHeight\r\n } = $(this.container()).get(0);\r\n return {\r\n left: scrollWidth - clientWidth,\r\n top: scrollHeight - clientHeight\r\n }\r\n },\r\n _attachEventHandlers: function() {\r\n var strategy = this._strategy;\r\n var initEventData = {\r\n getDirection: strategy.getDirection.bind(strategy),\r\n validate: this._validate.bind(this),\r\n isNative: this.option(\"useNative\"),\r\n scrollTarget: this._$container\r\n };\r\n eventsEngine.off(this._$wrapper, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.init, SCROLLABLE), initEventData, this._initHandler.bind(this));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.start, SCROLLABLE), strategy.handleStart.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.move, SCROLLABLE), strategy.handleMove.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.end, SCROLLABLE), strategy.handleEnd.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.stop, SCROLLABLE), strategy.handleStop.bind(strategy));\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$container, addNamespace(\"scroll\", SCROLLABLE), strategy.handleScroll.bind(strategy))\r\n },\r\n _validate: function(e) {\r\n if (this._isLocked()) {\r\n return false\r\n }\r\n this._updateIfNeed();\r\n return this._moveIsAllowed(e)\r\n },\r\n _moveIsAllowed(e) {\r\n return this._strategy.validate(e)\r\n },\r\n handleMove(e) {\r\n this._strategy.handleMove(e)\r\n },\r\n _prepareDirections(value) {\r\n this._strategy._prepareDirections(value)\r\n },\r\n _initHandler: function() {\r\n var strategy = this._strategy;\r\n strategy.handleInit.apply(strategy, arguments)\r\n },\r\n _renderDisabledState: function() {\r\n this.$element().toggleClass(SCROLLABLE_DISABLED_CLASS, this.option(\"disabled\"));\r\n if (this.option(\"disabled\")) {\r\n this._lock()\r\n } else {\r\n this._unlock()\r\n }\r\n },\r\n _renderDirection: function() {\r\n this.$element().removeClass(\"dx-scrollable-\" + HORIZONTAL).removeClass(\"dx-scrollable-\" + VERTICAL).removeClass(\"dx-scrollable-\" + BOTH).addClass(\"dx-scrollable-\" + this.option(\"direction\"))\r\n },\r\n _renderStrategy: function() {\r\n this._createStrategy();\r\n this._strategy.render();\r\n this.$element().data(SCROLLABLE_STRATEGY, this._strategy)\r\n },\r\n _createStrategy: function() {\r\n this._strategy = this.option(\"useNative\") ? new NativeStrategy(this) : new SimulatedStrategy(this)\r\n },\r\n _createActions: function() {\r\n this._strategy && this._strategy.createActions()\r\n },\r\n _clean: function() {\r\n this._strategy && this._strategy.dispose()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onStart\":\r\n case \"onEnd\":\r\n case \"onUpdated\":\r\n case \"onScroll\":\r\n case \"onBounce\":\r\n this._createActions();\r\n break;\r\n case \"direction\":\r\n this._resetInactiveDirection();\r\n this._invalidate();\r\n break;\r\n case \"useNative\":\r\n this._setUseSimulatedScrollbar();\r\n this._invalidate();\r\n break;\r\n case \"inertiaEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"bounceEnabled\":\r\n case \"useKeyboard\":\r\n case \"showScrollbar\":\r\n case \"useSimulatedScrollbar\":\r\n this._invalidate();\r\n break;\r\n case \"disabled\":\r\n this._renderDisabledState();\r\n this._strategy && this._strategy.disabledChanged();\r\n break;\r\n case \"updateManually\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._updateRtlPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _resetInactiveDirection: function() {\r\n var inactiveProp = this._getInactiveProp();\r\n if (!inactiveProp || !hasWindow()) {\r\n return\r\n }\r\n var scrollOffset = this.scrollOffset();\r\n scrollOffset[inactiveProp] = 0;\r\n this.scrollTo(scrollOffset)\r\n },\r\n _getInactiveProp: function() {\r\n var direction = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return \"left\"\r\n }\r\n if (direction === HORIZONTAL) {\r\n return \"top\"\r\n }\r\n },\r\n _location: function() {\r\n return this._strategy.location()\r\n },\r\n _normalizeLocation: function(location) {\r\n if (isPlainObject(location)) {\r\n var left = ensureDefined(location.left, location.x);\r\n var top = ensureDefined(location.top, location.y);\r\n return {\r\n left: isDefined(left) ? -left : void 0,\r\n top: isDefined(top) ? -top : void 0\r\n }\r\n } else {\r\n var direction = this.option(\"direction\");\r\n return {\r\n left: direction !== VERTICAL ? -location : void 0,\r\n top: direction !== HORIZONTAL ? -location : void 0\r\n }\r\n }\r\n },\r\n _isLocked: function() {\r\n return this._locked\r\n },\r\n _lock: function() {\r\n this._locked = true\r\n },\r\n _unlock: function() {\r\n if (!this.option(\"disabled\")) {\r\n this._locked = false\r\n }\r\n },\r\n _isDirection: function(direction) {\r\n var current = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return current !== HORIZONTAL\r\n }\r\n if (direction === HORIZONTAL) {\r\n return current !== VERTICAL\r\n }\r\n return current === direction\r\n },\r\n _updateAllowedDirection: function() {\r\n var allowedDirections = this._strategy._allowedDirections();\r\n if (this._isDirection(BOTH) && allowedDirections.vertical && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = BOTH\r\n } else if (this._isDirection(HORIZONTAL) && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = HORIZONTAL\r\n } else if (this._isDirection(VERTICAL) && allowedDirections.vertical) {\r\n this._allowedDirectionValue = VERTICAL\r\n } else {\r\n this._allowedDirectionValue = null\r\n }\r\n },\r\n _allowedDirection: function() {\r\n return this._allowedDirectionValue\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content)\r\n },\r\n container: function() {\r\n return getPublicElement(this._$container)\r\n },\r\n scrollOffset: function() {\r\n return this._strategy._getScrollOffset()\r\n },\r\n _isRtlNativeStrategy: function() {\r\n var {\r\n useNative: useNative,\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n return useNative && rtlEnabled\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 getHeight(this._$container)\r\n },\r\n scrollHeight: function() {\r\n return getOuterHeight(this.$content())\r\n },\r\n clientWidth: function() {\r\n return getWidth(this._$container)\r\n },\r\n scrollWidth: function() {\r\n return getOuterWidth(this.$content())\r\n },\r\n update: function() {\r\n if (!this._strategy) {\r\n return\r\n }\r\n return when(this._strategy.update()).done(function() {\r\n this._updateAllowedDirection()\r\n }.bind(this))\r\n },\r\n scrollBy: function(distance) {\r\n distance = this._normalizeLocation(distance);\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._updateIfNeed();\r\n this._strategy.scrollBy(distance)\r\n },\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 if (this._isRtlNativeStrategy()) {\r\n location.left = location.left - this._getMaxOffset().left\r\n }\r\n var distance = this._normalizeLocation({\r\n left: location.left - ensureDefined(targetLocation.left, location.left),\r\n top: location.top - ensureDefined(targetLocation.top, location.top)\r\n });\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._strategy.scrollBy(distance)\r\n },\r\n scrollToElement: function(element, offset) {\r\n var $element = $(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n scrollPosition.left = this.getScrollElementPosition($element, HORIZONTAL, offset)\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this.getScrollElementPosition($element, VERTICAL, offset)\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n getScrollElementPosition: function($element, direction, offset) {\r\n var scrollOffset = this.scrollOffset();\r\n return getElementLocationInternal($element.get(0), direction, $(this.container()).get(0), scrollOffset, offset)\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 isRenovated: function() {\r\n return !!Scrollable.IS_RENOVATED_WIDGET\r\n }\r\n});\r\nregisterComponent(SCROLLABLE, Scrollable);\r\nexport default Scrollable;\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_button.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport TextEditorButton from \"../text_box/texteditor_button_collection/button\";\r\nimport Button from \"../button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_CLASS = \"dx-dropdowneditor-button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_VISIBLE = \"dx-dropdowneditor-button-visible\";\r\nvar BUTTON_MESSAGE = \"dxDropDownEditor-selectLabel\";\r\nexport default class DropDownButton extends TextEditorButton {\r\n constructor(name, editor, options) {\r\n super(name, editor, options);\r\n this.currentTemplate = null\r\n }\r\n _attachEvents(instance) {\r\n var {\r\n editor: editor\r\n } = this;\r\n instance.option(\"onClick\", e => {\r\n !editor.option(\"openOnFieldClick\") && editor._openHandler(e)\r\n });\r\n eventsEngine.on(instance.$element(), \"mousedown\", e => {\r\n if (editor.$element().is(\".dx-state-focused\")) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $element = $(\"
\");\r\n var options = this._getOptions();\r\n this._addToContainer($element);\r\n var instance = editor._createComponent($element, Button, extend({}, options, {\r\n elementAttr: {\r\n \"aria-label\": messageLocalization.format(BUTTON_MESSAGE)\r\n }\r\n }));\r\n this._legacyRender(editor.$element(), $element, options.visible);\r\n return {\r\n $element: $element,\r\n instance: instance\r\n }\r\n }\r\n _getOptions() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var visible = this._isVisible();\r\n var isReadOnly = editor.option(\"readOnly\");\r\n var options = {\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n activeStateEnabled: false,\r\n useInkRipple: false,\r\n disabled: isReadOnly,\r\n visible: visible\r\n };\r\n this._addTemplate(options);\r\n return options\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return super._isVisible() && editor.option(\"showDropDownButton\")\r\n }\r\n _legacyRender($editor, $element, isVisible) {\r\n $editor.toggleClass(DROP_DOWN_EDITOR_BUTTON_VISIBLE, isVisible);\r\n if ($element) {\r\n $element.removeClass(\"dx-button\").addClass(DROP_DOWN_EDITOR_BUTTON_CLASS)\r\n }\r\n }\r\n _isSameTemplate() {\r\n return this.editor.option(\"dropDownButtonTemplate\") === this.currentTemplate\r\n }\r\n _addTemplate(options) {\r\n if (!this._isSameTemplate()) {\r\n options.template = this.editor._getTemplateByOption(\"dropDownButtonTemplate\");\r\n this.currentTemplate = this.editor.option(\"dropDownButtonTemplate\")\r\n }\r\n }\r\n update() {\r\n var shouldUpdate = super.update();\r\n if (shouldUpdate) {\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var options = this._getOptions();\r\n null === instance || void 0 === instance ? void 0 : instance.option(options);\r\n this._legacyRender($editor, null === instance || void 0 === instance ? void 0 : instance.$element(), options.visible)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_editor.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../../core/utils/common\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport DropDownButton from \"./ui.drop_down_button\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport TextBox from \"../text_box\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../core/templates/function_template\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getElementWidth,\r\n getSizeValue\r\n} from \"./utils\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../../animation/translator\";\r\nvar DROP_DOWN_EDITOR_CLASS = \"dx-dropdowneditor\";\r\nvar DROP_DOWN_EDITOR_INPUT_WRAPPER = \"dx-dropdowneditor-input-wrapper\";\r\nvar DROP_DOWN_EDITOR_BUTTON_ICON = \"dx-dropdowneditor-icon\";\r\nvar DROP_DOWN_EDITOR_OVERLAY = \"dx-dropdowneditor-overlay\";\r\nvar DROP_DOWN_EDITOR_OVERLAY_FLIPPED = \"dx-dropdowneditor-overlay-flipped\";\r\nvar DROP_DOWN_EDITOR_ACTIVE = \"dx-dropdowneditor-active\";\r\nvar DROP_DOWN_EDITOR_FIELD_CLICKABLE = \"dx-dropdowneditor-field-clickable\";\r\nvar DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER = \"dx-dropdowneditor-field-template-wrapper\";\r\nvar isIOs = \"ios\" === devices.current().platform;\r\nvar DropDownEditor = TextBox.inherit({\r\n _supportedKeys: function() {\r\n return extend({}, this.callBase(), {\r\n tab: function(e) {\r\n if (!this.option(\"opened\")) {\r\n return\r\n }\r\n if (\"instantly\" === this.option(\"applyValueMode\")) {\r\n this.close();\r\n return\r\n }\r\n var $focusableElement = e.shiftKey ? this._getLastPopupElement() : this._getFirstPopupElement();\r\n $focusableElement && eventsEngine.trigger($focusableElement, \"focus\");\r\n e.preventDefault()\r\n },\r\n escape: function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault()\r\n }\r\n this.close();\r\n return true\r\n },\r\n upArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.altKey) {\r\n this.close();\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n downArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.altKey) {\r\n this._validatedOpening();\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n enter: function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault();\r\n this._valueChangeEventHandler(e)\r\n }\r\n return true\r\n }\r\n })\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"dropDown\",\r\n Ctor: DropDownButton\r\n }])\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: null,\r\n onOpened: null,\r\n onClosed: null,\r\n opened: false,\r\n acceptCustomValue: true,\r\n applyValueMode: \"instantly\",\r\n deferRendering: true,\r\n activeStateEnabled: true,\r\n dropDownButtonTemplate: \"dropDownButton\",\r\n fieldTemplate: null,\r\n openOnFieldClick: false,\r\n showDropDownButton: true,\r\n buttons: void 0,\r\n dropDownOptions: {\r\n showTitle: false\r\n },\r\n popupPosition: this._getDefaultPopupPosition(),\r\n onPopupInitialized: null,\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n cancelButtonText: messageLocalization.format(\"Cancel\"),\r\n buttonsLocation: \"default\",\r\n useHiddenSubmitElement: false\r\n })\r\n },\r\n _useTemplates: function() {\r\n return true\r\n },\r\n _getDefaultPopupPosition: function(isRtlEnabled) {\r\n var position = getDefaultAlignment(isRtlEnabled);\r\n return {\r\n offset: {\r\n h: 0,\r\n v: -1\r\n },\r\n my: position + \" top\",\r\n at: position + \" bottom\",\r\n collision: \"flip flip\"\r\n }\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n var isGeneric = \"generic\" === _device.platform;\r\n return isGeneric\r\n },\r\n options: {\r\n popupPosition: {\r\n offset: {\r\n v: 0\r\n }\r\n }\r\n }\r\n }])\r\n },\r\n _inputWrapper: function() {\r\n return this.$element().find(\".\" + DROP_DOWN_EDITOR_INPUT_WRAPPER).first()\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initVisibilityActions();\r\n this._initPopupInitializedAction();\r\n this._updatePopupPosition(this.option(\"rtlEnabled\"));\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"))\r\n },\r\n _updatePopupPosition: function(isRtlEnabled) {\r\n var {\r\n my: my,\r\n at: at\r\n } = this._getDefaultPopupPosition(isRtlEnabled);\r\n var currentPosition = this.option(\"popupPosition\");\r\n this.option(\"popupPosition\", extend({}, currentPosition, {\r\n my: my,\r\n at: at\r\n }))\r\n },\r\n _initVisibilityActions: function() {\r\n this._openAction = this._createActionByOption(\"onOpened\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this._closeAction = this._createActionByOption(\"onClosed\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initPopupInitializedAction: function() {\r\n this._popupInitializedAction = this._createActionByOption(\"onPopupInitialized\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.callBase();\r\n this.$element().addClass(DROP_DOWN_EDITOR_CLASS);\r\n this.setAria(\"role\", \"combobox\")\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderOpenHandler();\r\n this._attachFocusOutHandler();\r\n this._renderOpenedState()\r\n },\r\n _renderContentImpl: function() {\r\n if (!this.option(\"deferRendering\")) {\r\n this._createPopup()\r\n }\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._wrapInput();\r\n this._setDefaultAria()\r\n },\r\n _wrapInput: function() {\r\n this._$container = this.$element().wrapInner($(\"
\").addClass(DROP_DOWN_EDITOR_INPUT_WRAPPER)).children().eq(0)\r\n },\r\n _setDefaultAria: function() {\r\n this.setAria({\r\n haspopup: \"true\",\r\n autocomplete: \"list\"\r\n })\r\n },\r\n _readOnlyPropValue: function() {\r\n return !this._isEditable() || this.callBase()\r\n },\r\n _cleanFocusState: function() {\r\n this.callBase();\r\n if (this.option(\"fieldTemplate\")) {\r\n this._detachFocusEvents()\r\n }\r\n },\r\n _getFieldTemplate: function() {\r\n return this.option(\"fieldTemplate\") && this._getTemplateByOption(\"fieldTemplate\")\r\n },\r\n _renderMask: function() {\r\n if (this.option(\"fieldTemplate\")) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _renderField: function() {\r\n var fieldTemplate = this._getFieldTemplate();\r\n fieldTemplate && this._renderTemplatedField(fieldTemplate, this._fieldRenderData())\r\n },\r\n _renderPlaceholder: function() {\r\n var hasFieldTemplate = !!this._getFieldTemplate();\r\n if (!hasFieldTemplate) {\r\n this.callBase()\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._setSubmitValue()\r\n }\r\n var promise = this.callBase();\r\n promise.always(this._renderField.bind(this))\r\n },\r\n _renderTemplatedField: function(fieldTemplate, data) {\r\n var isFocused = focused(this._input());\r\n var $container = this._$container;\r\n this._detachKeyboardEvents();\r\n this._refreshButtonsContainer();\r\n this._detachWrapperContent();\r\n this._detachFocusEvents();\r\n $container.empty();\r\n var $templateWrapper = $(\"
\").addClass(DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER).appendTo($container);\r\n fieldTemplate.render({\r\n model: data,\r\n container: getPublicElement($templateWrapper),\r\n onRendered: () => {\r\n var $input = this._input();\r\n if (!$input.length) {\r\n throw errors.Error(\"E1010\")\r\n }\r\n this._integrateInput();\r\n isFocused && eventsEngine.trigger($input, \"focus\")\r\n }\r\n });\r\n this._attachWrapperContent($container)\r\n },\r\n _detachWrapperContent() {\r\n var _this$_$submitElement, _this$_$beforeButtons, _this$_$afterButtonsC;\r\n var useHiddenSubmitElement = this.option(\"useHiddenSubmitElement\");\r\n useHiddenSubmitElement && (null === (_this$_$submitElement = this._$submitElement) || void 0 === _this$_$submitElement ? void 0 : _this$_$submitElement.detach());\r\n var beforeButtonsContainerParent = null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons[0].parentNode;\r\n var afterButtonsContainerParent = null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC[0].parentNode;\r\n null === beforeButtonsContainerParent || void 0 === beforeButtonsContainerParent ? void 0 : beforeButtonsContainerParent.removeChild(this._$beforeButtonsContainer[0]);\r\n null === afterButtonsContainerParent || void 0 === afterButtonsContainerParent ? void 0 : afterButtonsContainerParent.removeChild(this._$afterButtonsContainer[0])\r\n },\r\n _attachWrapperContent($container) {\r\n var _this$_$submitElement2;\r\n var useHiddenSubmitElement = this.option(\"useHiddenSubmitElement\");\r\n $container.prepend(this._$beforeButtonsContainer);\r\n useHiddenSubmitElement && (null === (_this$_$submitElement2 = this._$submitElement) || void 0 === _this$_$submitElement2 ? void 0 : _this$_$submitElement2.appendTo($container));\r\n $container.append(this._$afterButtonsContainer)\r\n },\r\n _refreshButtonsContainer() {\r\n this._$buttonsContainer = this.$element().children().eq(0)\r\n },\r\n _integrateInput: function() {\r\n this._renderFocusState();\r\n this._refreshValueChangeEvent();\r\n this._refreshEvents();\r\n this._refreshEmptinessEvent()\r\n },\r\n _refreshEmptinessEvent: function() {\r\n eventsEngine.off(this._input(), \"input blur\", this._toggleEmptinessEventHandler);\r\n this._renderEmptinessEvent()\r\n },\r\n _fieldRenderData: function() {\r\n return this.option(\"value\")\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n dropDownButton: new FunctionTemplate((function(options) {\r\n var $icon = $(\"
\").addClass(DROP_DOWN_EDITOR_BUTTON_ICON);\r\n $(options.container).append($icon)\r\n }))\r\n });\r\n this.callBase()\r\n },\r\n _renderOpenHandler: function() {\r\n var $inputWrapper = this._inputWrapper();\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var openOnFieldClick = this.option(\"openOnFieldClick\");\r\n eventsEngine.off($inputWrapper, eventName);\r\n eventsEngine.on($inputWrapper, eventName, this._getInputClickHandler(openOnFieldClick));\r\n this.$element().toggleClass(DROP_DOWN_EDITOR_FIELD_CLICKABLE, openOnFieldClick);\r\n if (openOnFieldClick) {\r\n this._openOnFieldClickAction = this._createAction(this._openHandler.bind(this))\r\n }\r\n },\r\n _attachFocusOutHandler: function() {\r\n if (isIOs) {\r\n this._detachFocusOutEvents();\r\n eventsEngine.on(this._inputWrapper(), addNamespace(\"focusout\", this.NAME), event => {\r\n var newTarget = event.relatedTarget;\r\n var popupWrapper = this.content ? $(this.content()).closest(\".\" + DROP_DOWN_EDITOR_OVERLAY) : this._$popup;\r\n if (newTarget && this.option(\"opened\")) {\r\n var isNewTargetOutside = 0 === $(newTarget).closest(\".\" + DROP_DOWN_EDITOR_OVERLAY, popupWrapper).length;\r\n if (isNewTargetOutside) {\r\n this.close()\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _detachFocusOutEvents: function() {\r\n isIOs && eventsEngine.off(this._inputWrapper(), addNamespace(\"focusout\", this.NAME))\r\n },\r\n _getInputClickHandler: function(openOnFieldClick) {\r\n return openOnFieldClick ? e => {\r\n this._executeOpenAction(e)\r\n } : e => {\r\n this._focusInput()\r\n }\r\n },\r\n _openHandler: function() {\r\n this._toggleOpenState()\r\n },\r\n _executeOpenAction: function(e) {\r\n this._openOnFieldClickAction({\r\n event: e\r\n })\r\n },\r\n _keyboardEventBindingTarget: function() {\r\n return this._input()\r\n },\r\n _focusInput: function() {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"focusStateEnabled\") && !focused(this._input())) {\r\n this._resetCaretPosition();\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n }\r\n return true\r\n },\r\n _resetCaretPosition: function() {\r\n var ignoreEditable = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n var inputElement = this._input().get(0);\r\n if (inputElement) {\r\n var {\r\n value: value\r\n } = inputElement;\r\n var caretPosition = isDefined(value) && (ignoreEditable || this._isEditable()) ? value.length : 0;\r\n this._caret({\r\n start: caretPosition,\r\n end: caretPosition\r\n }, true)\r\n }\r\n },\r\n _isEditable: function() {\r\n return this.option(\"acceptCustomValue\")\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (!this._focusInput()) {\r\n return\r\n }\r\n if (!this.option(\"readOnly\")) {\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n this.option(\"opened\", isVisible)\r\n }\r\n },\r\n _renderOpenedState: function() {\r\n var opened = this.option(\"opened\");\r\n if (opened) {\r\n this._createPopup()\r\n }\r\n this.$element().toggleClass(DROP_DOWN_EDITOR_ACTIVE, opened);\r\n this._setPopupOption(\"visible\", opened);\r\n this.setAria({\r\n expanded: opened\r\n });\r\n this.setAria(\"owns\", opened ? this._popupContentId : void 0, this.$element())\r\n },\r\n _createPopup: function() {\r\n if (this._$popup) {\r\n return\r\n }\r\n this._$popup = $(\"
\").addClass(DROP_DOWN_EDITOR_OVERLAY).appendTo(this.$element());\r\n this._renderPopup();\r\n this._renderPopupContent()\r\n },\r\n _renderPopupContent: noop,\r\n _renderPopup: function() {\r\n var popupConfig = extend(this._popupConfig(), this._options.cache(\"dropDownOptions\"));\r\n this._popup = this._createComponent(this._$popup, Popup, popupConfig);\r\n this._popup.on({\r\n showing: this._popupShowingHandler.bind(this),\r\n shown: this._popupShownHandler.bind(this),\r\n hiding: this._popupHidingHandler.bind(this),\r\n hidden: this._popupHiddenHandler.bind(this),\r\n contentReady: this._contentReadyHandler.bind(this)\r\n });\r\n this._contentReadyHandler();\r\n this._setPopupContentId(this._popup.$content());\r\n this._bindInnerWidgetOptions(this._popup, \"dropDownOptions\")\r\n },\r\n _setPopupContentId($popupContent) {\r\n this._popupContentId = \"dx-\" + new Guid;\r\n this.setAria(\"id\", this._popupContentId, $popupContent)\r\n },\r\n _contentReadyHandler: noop,\r\n _popupConfig: function() {\r\n return {\r\n onInitialized: this._popupInitializedHandler(),\r\n position: extend(this.option(\"popupPosition\"), {\r\n of: this.$element()\r\n }),\r\n showTitle: this.option(\"dropDownOptions.showTitle\"),\r\n _ignoreFunctionValueDeprecation: true,\r\n width: () => getElementWidth(this.$element()),\r\n height: \"auto\",\r\n shading: false,\r\n wrapperAttr: {\r\n class: DROP_DOWN_EDITOR_OVERLAY\r\n },\r\n hideOnParentScroll: true,\r\n closeOnOutsideClick: this._closeOutsideDropDownHandler.bind(this),\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n duration: 0,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n deferRendering: false,\r\n focusStateEnabled: false,\r\n showCloseButton: false,\r\n dragEnabled: false,\r\n toolbarItems: this._getPopupToolbarItems(),\r\n onPositioned: this._popupPositionedHandler.bind(this),\r\n fullScreen: false,\r\n contentTemplate: null\r\n }\r\n },\r\n _popupInitializedHandler: function() {\r\n if (!this.option(\"onPopupInitialized\")) {\r\n return null\r\n }\r\n return e => {\r\n this._popupInitializedAction({\r\n popup: e.component\r\n })\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n var popupWidth = getSizeValue(this.option(\"dropDownOptions.width\"));\r\n if (void 0 === popupWidth) {\r\n this._setPopupOption(\"width\", () => getElementWidth(this.$element()))\r\n }\r\n },\r\n _popupPositionedHandler: function(e) {\r\n e.position && this._popup.$overlayContent().toggleClass(DROP_DOWN_EDITOR_OVERLAY_FLIPPED, e.position.v.flip)\r\n },\r\n _popupShowingHandler: noop,\r\n _popupHidingHandler: function() {\r\n this.option(\"opened\", false)\r\n },\r\n _popupShownHandler: function() {\r\n var _this$_validationMess;\r\n this._openAction();\r\n var $popupOverlayContent = this._popup.$overlayContent();\r\n var position = locate($popupOverlayContent);\r\n if (this._label.isVisible() && $popupOverlayContent.hasClass(DROP_DOWN_EDITOR_OVERLAY_FLIPPED)) {\r\n var $label = this._label.$element();\r\n move($popupOverlayContent, {\r\n top: position.top - parseInt($label.css(\"fontSize\"))\r\n })\r\n }\r\n null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n },\r\n _popupHiddenHandler: function() {\r\n var _this$_validationMess2;\r\n this._closeAction();\r\n null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n },\r\n _getValidationMessagePositionRequest: function() {\r\n var positionRequest = \"below\";\r\n if (this._popup && this._popup.option(\"visible\")) {\r\n var {\r\n top: myTop\r\n } = animationPosition.setup(this.$element());\r\n var {\r\n top: popupTop\r\n } = animationPosition.setup(this._popup.$content());\r\n positionRequest = myTop + this.option(\"popupPosition\").offset.v > popupTop ? \"below\" : \"above\"\r\n }\r\n return positionRequest\r\n },\r\n _closeOutsideDropDownHandler: function(_ref) {\r\n var {\r\n target: target\r\n } = _ref;\r\n var $target = $(target);\r\n var dropDownButton = this.getButton(\"dropDown\");\r\n var $dropDownButton = dropDownButton && dropDownButton.$element();\r\n var isInputClicked = !!$target.closest(this.$element()).length;\r\n var isDropDownButtonClicked = !!$target.closest($dropDownButton).length;\r\n var isOutsideClick = !isInputClicked && !isDropDownButtonClicked;\r\n return isOutsideClick\r\n },\r\n _clean: function() {\r\n delete this._openOnFieldClickAction;\r\n if (this._$popup) {\r\n this._$popup.remove();\r\n delete this._$popup;\r\n delete this._popup\r\n }\r\n this.callBase()\r\n },\r\n _setPopupOption: function(optionName, value) {\r\n this._setWidgetOption(\"_popup\", arguments)\r\n },\r\n _validatedOpening: function() {\r\n if (!this.option(\"readOnly\")) {\r\n this._toggleOpenState(true)\r\n }\r\n },\r\n _getPopupToolbarItems: function() {\r\n return \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : []\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-done.dx-button\")\r\n },\r\n _getLastPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-cancel.dx-button\")\r\n },\r\n _popupElementTabHandler: function(e) {\r\n var $element = $(e.currentTarget);\r\n if (e.shiftKey && $element.is(this._getFirstPopupElement()) || !e.shiftKey && $element.is(this._getLastPopupElement())) {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n e.preventDefault()\r\n }\r\n },\r\n _popupElementEscHandler: function() {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n this.close()\r\n },\r\n _popupButtonInitializedHandler: function(e) {\r\n e.component.registerKeyHandler(\"tab\", this._popupElementTabHandler.bind(this));\r\n e.component.registerKeyHandler(\"escape\", this._popupElementEscHandler.bind(this))\r\n },\r\n _popupToolbarItemsConfig: function() {\r\n var buttonsConfig = [{\r\n shortcut: \"done\",\r\n options: {\r\n onClick: this._applyButtonHandler.bind(this),\r\n text: this.option(\"applyButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }, {\r\n shortcut: \"cancel\",\r\n options: {\r\n onClick: this._cancelButtonHandler.bind(this),\r\n text: this.option(\"cancelButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }];\r\n return this._applyButtonsLocation(buttonsConfig)\r\n },\r\n _applyButtonsLocation: function(buttonsConfig) {\r\n var buttonsLocation = this.option(\"buttonsLocation\");\r\n var resultConfig = buttonsConfig;\r\n if (\"default\" !== buttonsLocation) {\r\n var position = splitPair(buttonsLocation);\r\n each(resultConfig, (function(_, element) {\r\n extend(element, {\r\n toolbar: position[0],\r\n location: position[1]\r\n })\r\n }))\r\n }\r\n return resultConfig\r\n },\r\n _applyButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _cancelButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _popupOptionChanged: function(args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n this._setPopupOption(options);\r\n var optionsKeys = Object.keys(options);\r\n if (-1 !== optionsKeys.indexOf(\"width\") || -1 !== optionsKeys.indexOf(\"height\")) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _renderSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n }\r\n },\r\n _setSubmitValue: function() {\r\n this._getSubmitElement().val(this.option(\"value\"))\r\n },\r\n _getSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n return this._$submitElement\r\n } else {\r\n return this.callBase()\r\n }\r\n },\r\n _dispose: function() {\r\n this._detachFocusOutEvents();\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n var _this$_popup;\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();\r\n break;\r\n case \"opened\":\r\n this._renderOpenedState();\r\n break;\r\n case \"onOpened\":\r\n case \"onClosed\":\r\n this._initVisibilityActions();\r\n break;\r\n case \"onPopupInitialized\":\r\n this._initPopupInitializedAction();\r\n break;\r\n case \"fieldTemplate\":\r\n if (isDefined(args.value)) {\r\n this._renderField()\r\n } else {\r\n this._invalidate()\r\n }\r\n break;\r\n case \"acceptCustomValue\":\r\n case \"openOnFieldClick\":\r\n this._invalidate();\r\n break;\r\n case \"dropDownButtonTemplate\":\r\n case \"showDropDownButton\":\r\n this._updateButtons([\"dropDown\"]);\r\n break;\r\n case \"dropDownOptions\":\r\n this._popupOptionChanged(args);\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"));\r\n break;\r\n case \"popupPosition\":\r\n break;\r\n case \"deferRendering\":\r\n if (hasWindow()) {\r\n this._createPopup()\r\n }\r\n break;\r\n case \"applyValueMode\":\r\n case \"applyButtonText\":\r\n case \"cancelButtonText\":\r\n case \"buttonsLocation\":\r\n this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n break;\r\n case \"useHiddenSubmitElement\":\r\n if (this._$submitElement) {\r\n this._$submitElement.remove();\r\n this._$submitElement = void 0\r\n }\r\n this._renderSubmitElement();\r\n break;\r\n case \"rtlEnabled\":\r\n this._updatePopupPosition(args.value);\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n open: function() {\r\n this.option(\"opened\", true)\r\n },\r\n close: function() {\r\n this.option(\"opened\", false)\r\n },\r\n field: function() {\r\n return getPublicElement(this._input())\r\n },\r\n content: function() {\r\n return this._popup ? this._popup.content() : null\r\n }\r\n});\r\nregisterComponent(\"dxDropDownEditor\", DropDownEditor);\r\nexport default DropDownEditor;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.live_update.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidget from \"./ui.collection_widget.edit\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n update,\r\n insert,\r\n indexByKey\r\n} from \"../../data/array_utils\";\r\nimport {\r\n keysEqual\r\n} from \"../../data/utils\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n findChanges\r\n} from \"../../core/utils/array_compare\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar PRIVATE_KEY_FIELD = \"__dx_key__\";\r\nexport default CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n repaintChangesOnly: false\r\n })\r\n },\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n this._customizeStoreLoadOptions = e => {\r\n var dataSource = this._dataSource;\r\n if (dataSource && !dataSource.isLoaded()) {\r\n this._correctionIndex = 0\r\n }\r\n if (this._correctionIndex && e.storeLoadOptions) {\r\n e.storeLoadOptions.skip += this._correctionIndex\r\n }\r\n }, this._dataSource && this._dataSource.on(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions)\r\n },\r\n reload: function() {\r\n this._correctionIndex = 0\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._refreshItemsCache();\r\n this._correctionIndex = 0\r\n },\r\n _findItemElementByKey: function(key) {\r\n var result = $();\r\n var keyExpr = this.key();\r\n this.itemElements().each((_, item) => {\r\n var $item = $(item);\r\n var itemData = this._getItemData($item);\r\n if (keyExpr ? keysEqual(keyExpr, this.keyOf(itemData), key) : this._isItemEquals(itemData, key)) {\r\n result = $item;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n _dataSourceChangedHandler: function(newItems, e) {\r\n if (null !== e && void 0 !== e && e.changes) {\r\n this._modifyByChanges(e.changes)\r\n } else {\r\n this.callBase(newItems, e);\r\n this._refreshItemsCache()\r\n }\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (item1 && item1[PRIVATE_KEY_FIELD]) {\r\n item1 = item1.data\r\n }\r\n try {\r\n return JSON.stringify(item1) === JSON.stringify(item2)\r\n } catch (e) {\r\n return item1 === item2\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n return this._isItemEquals(item1, item2)\r\n },\r\n _shouldAddNewGroup: function(changes, items) {\r\n var result = false;\r\n if (this.option(\"grouped\")) {\r\n if (!changes.length) {\r\n result = true\r\n }\r\n each(changes, (i, change) => {\r\n if (\"insert\" === change.type) {\r\n result = true;\r\n each(items, (_, item) => {\r\n if (void 0 !== change.data.key && change.data.key === item.key) {\r\n result = false;\r\n return false\r\n }\r\n })\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n _partialRefresh: function() {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var result = findChanges(this._itemsCache, this._editStrategy.itemsGetter(), data => {\r\n if (data && void 0 !== data[PRIVATE_KEY_FIELD]) {\r\n return data[PRIVATE_KEY_FIELD]\r\n }\r\n return this.keyOf(data)\r\n }, this._isItemStrictEquals.bind(this));\r\n if (result && this._itemsCache.length && !this._shouldAddNewGroup(result, this._itemsCache)) {\r\n this._modifyByChanges(result, true);\r\n this._renderEmptyMessage();\r\n return true\r\n } else {\r\n this._refreshItemsCache()\r\n }\r\n }\r\n return false\r\n },\r\n _refreshItemsCache: function() {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var items = this._editStrategy.itemsGetter();\r\n try {\r\n this._itemsCache = extend(true, [], items);\r\n if (!this.key()) {\r\n this._itemsCache = this._itemsCache.map((itemCache, index) => ({\r\n [PRIVATE_KEY_FIELD]: items[index],\r\n data: itemCache\r\n }))\r\n }\r\n } catch (e) {\r\n this._itemsCache = extend([], items)\r\n }\r\n }\r\n },\r\n _dispose: function() {\r\n this._dataSource && this._dataSource.off(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions);\r\n this.callBase()\r\n },\r\n _updateByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n if (isPartialRefresh) {\r\n this._renderItem(change.index, change.data, null, this._findItemElementByKey(change.key))\r\n } else {\r\n var changedItem = items[indexByKey(keyInfo, items, change.key)];\r\n if (changedItem) {\r\n update(keyInfo, items, change.key, change.data).done(() => {\r\n this._renderItem(items.indexOf(changedItem), changedItem, null, this._findItemElementByKey(change.key))\r\n })\r\n }\r\n }\r\n },\r\n _insertByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n when(isPartialRefresh || insert(keyInfo, items, change.data, change.index)).done(() => {\r\n var _change$index;\r\n this._beforeItemElementInserted(change);\r\n var $itemContainer = this._getItemContainer(change.data);\r\n this._renderItem(null !== (_change$index = change.index) && void 0 !== _change$index ? _change$index : items.length, change.data, $itemContainer);\r\n this._afterItemElementInserted();\r\n this._correctionIndex++\r\n })\r\n },\r\n _getItemContainer: function(changeData) {\r\n return this._itemContainer()\r\n },\r\n _updateSelectionAfterRemoveByChange: function(removeIndex) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (selectedIndex > removeIndex) {\r\n this.option(\"selectedIndex\", selectedIndex - 1)\r\n } else if (selectedIndex === removeIndex && 1 === this.option(\"selectedItems\").length) {\r\n this.option(\"selectedItems\", [])\r\n } else {\r\n this._normalizeSelectedItems()\r\n }\r\n },\r\n _beforeItemElementInserted: function(change) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (change.index <= selectedIndex) {\r\n this.option(\"selectedIndex\", selectedIndex + 1)\r\n }\r\n },\r\n _afterItemElementInserted: noop,\r\n _removeByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n var index = isPartialRefresh ? change.index : indexByKey(keyInfo, items, change.key);\r\n var removedItem = isPartialRefresh ? change.oldItem : items[index];\r\n if (removedItem) {\r\n var $removedItemElement = this._findItemElementByKey(change.key);\r\n var deletedActionArgs = this._extendActionArgs($removedItemElement);\r\n this._waitDeletingPrepare($removedItemElement).done(() => {\r\n if (isPartialRefresh) {\r\n this._updateIndicesAfterIndex(index - 1);\r\n this._afterItemElementDeleted($removedItemElement, deletedActionArgs);\r\n this._updateSelectionAfterRemoveByChange(index)\r\n } else {\r\n this._deleteItemElementByIndex(index);\r\n this._afterItemElementDeleted($removedItemElement, deletedActionArgs)\r\n }\r\n });\r\n this._correctionIndex--\r\n }\r\n },\r\n _modifyByChanges: function(changes, isPartialRefresh) {\r\n var items = this._editStrategy.itemsGetter();\r\n var keyInfo = {\r\n key: this.key.bind(this),\r\n keyOf: this.keyOf.bind(this)\r\n };\r\n var dataSource = this._dataSource;\r\n var paginate = dataSource && dataSource.paginate();\r\n var group = dataSource && dataSource.group();\r\n if (paginate || group) {\r\n changes = changes.filter(item => \"insert\" !== item.type || void 0 !== item.index)\r\n }\r\n changes.forEach(change => this[\"_\".concat(change.type, \"ByChange\")](keyInfo, items, change, isPartialRefresh));\r\n this._renderedItemsCount = items.length;\r\n this._refreshItemsCache();\r\n this._fireContentReadyAction()\r\n },\r\n _appendItemToContainer: function($container, $itemFrame, index) {\r\n var nextSiblingElement = $container.children(this._itemSelector()).get(index);\r\n domAdapter.insertElement($container.get(0), $itemFrame.get(0), nextSiblingElement)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n var isItemsUpdated = this._partialRefresh(args.value);\r\n if (!isItemsUpdated) {\r\n this.callBase(args)\r\n }\r\n break;\r\n case \"dataSource\":\r\n if (!this.option(\"repaintChangesOnly\") || !args.value) {\r\n this.option(\"items\", [])\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"repaintChangesOnly\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/animator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nvar Animator = Class.inherit({\r\n ctor: function() {\r\n this._finished = true;\r\n this._stopped = false;\r\n this._proxiedStepCore = this._stepCore.bind(this)\r\n },\r\n start: function() {\r\n this._stopped = false;\r\n this._finished = false;\r\n this._stepCore()\r\n },\r\n stop: function() {\r\n this._stopped = true;\r\n cancelAnimationFrame(this._stepAnimationFrame)\r\n },\r\n _stepCore: function() {\r\n if (this._isStopped()) {\r\n this._stop();\r\n return\r\n }\r\n if (this._isFinished()) {\r\n this._finished = true;\r\n this._complete();\r\n return\r\n }\r\n this._step();\r\n this._stepAnimationFrame = requestAnimationFrame(this._proxiedStepCore)\r\n },\r\n _step: abstract,\r\n _isFinished: noop,\r\n _stop: noop,\r\n _complete: noop,\r\n _isStopped: function() {\r\n return this._stopped\r\n },\r\n inProgress: function() {\r\n return !(this._stopped || this._finished)\r\n }\r\n});\r\nexport default Animator;\r\n","/**\r\n * DevExtreme (esm/ui/editor/ui.data_expression.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n compileGetter,\r\n toComparable\r\n} from \"../../core/utils/data\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isObject as isObjectType,\r\n isString,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport ArrayStore from \"../../data/array_store\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar DataExpressionMixin = extend({}, DataHelperMixin, {\r\n _dataExpressionDefaultOptions: function() {\r\n return {\r\n items: [],\r\n dataSource: null,\r\n itemTemplate: \"item\",\r\n value: null,\r\n valueExpr: \"this\",\r\n displayExpr: void 0\r\n }\r\n },\r\n _initDataExpressions: function() {\r\n this._compileValueGetter();\r\n this._compileDisplayGetter();\r\n this._initDynamicTemplates();\r\n this._initDataSource();\r\n this._itemsToDataSource()\r\n },\r\n _itemsToDataSource: function() {\r\n if (!this.option(\"dataSource\")) {\r\n this._dataSource = new DataSource({\r\n store: new ArrayStore(this.option(\"items\")),\r\n pageSize: 0\r\n })\r\n }\r\n },\r\n _compileDisplayGetter: function() {\r\n this._displayGetter = compileGetter(this._displayGetterExpr())\r\n },\r\n _displayGetterExpr: function() {\r\n return this.option(\"displayExpr\")\r\n },\r\n _compileValueGetter: function() {\r\n this._valueGetter = compileGetter(this._valueGetterExpr())\r\n },\r\n _valueGetterExpr: function() {\r\n return this.option(\"valueExpr\") || \"this\"\r\n },\r\n _loadValue: function(value) {\r\n var deferred = new Deferred;\r\n value = this._unwrappedValue(value);\r\n if (!isDefined(value)) {\r\n return deferred.reject().promise()\r\n }\r\n this._loadSingle(this._valueGetterExpr(), value).done(function(item) {\r\n this._isValueEquals(this._valueGetter(item), value) ? deferred.resolve(item) : deferred.reject()\r\n }.bind(this)).fail((function() {\r\n deferred.reject()\r\n }));\r\n this._loadValueDeferred = deferred;\r\n return deferred.promise()\r\n },\r\n _rejectValueLoading: function() {\r\n var _this$_loadValueDefer;\r\n null === (_this$_loadValueDefer = this._loadValueDeferred) || void 0 === _this$_loadValueDefer ? void 0 : _this$_loadValueDefer.reject({\r\n shouldSkipCallback: true\r\n })\r\n },\r\n _getCurrentValue: function() {\r\n return this.option(\"value\")\r\n },\r\n _unwrappedValue: function(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this._getCurrentValue();\r\n if (value && this._dataSource && \"this\" === this._valueGetterExpr()) {\r\n value = this._getItemKey(value)\r\n }\r\n return variableWrapper.unwrap(value)\r\n },\r\n _getItemKey: function(value) {\r\n var key = this._dataSource.key();\r\n if (Array.isArray(key)) {\r\n var result = {};\r\n for (var i = 0, n = key.length; i < n; i++) {\r\n result[key[i]] = value[key[i]]\r\n }\r\n return result\r\n }\r\n if (key && \"object\" === typeof value) {\r\n value = value[key]\r\n }\r\n return value\r\n },\r\n _isValueEquals: function(value1, value2) {\r\n var dataSourceKey = this._dataSource && this._dataSource.key();\r\n var result = this._compareValues(value1, value2);\r\n if (!result && dataSourceKey && isDefined(value1) && isDefined(value2)) {\r\n if (Array.isArray(dataSourceKey)) {\r\n result = this._compareByCompositeKey(value1, value2, dataSourceKey)\r\n } else {\r\n result = this._compareByKey(value1, value2, dataSourceKey)\r\n }\r\n }\r\n return result\r\n },\r\n _compareByCompositeKey: function(value1, value2, key) {\r\n var isObject = isObjectType;\r\n if (!isObject(value1) || !isObject(value2)) {\r\n return false\r\n }\r\n for (var i = 0, n = key.length; i < n; i++) {\r\n if (value1[key[i]] !== value2[key[i]]) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _compareByKey: function(value1, value2, key) {\r\n var unwrapObservable = variableWrapper.unwrap;\r\n var valueKey1 = ensureDefined(unwrapObservable(value1[key]), value1);\r\n var valueKey2 = ensureDefined(unwrapObservable(value2[key]), value2);\r\n return this._compareValues(valueKey1, valueKey2)\r\n },\r\n _compareValues: function(value1, value2) {\r\n return toComparable(value1, true) === toComparable(value2, true)\r\n },\r\n _initDynamicTemplates: noop,\r\n _setCollectionWidgetItemTemplate: function() {\r\n this._initDynamicTemplates();\r\n this._setCollectionWidgetOption(\"itemTemplate\", this.option(\"itemTemplate\"))\r\n },\r\n _getCollectionKeyExpr: function() {\r\n var valueExpr = this.option(\"valueExpr\");\r\n var isValueExprField = isString(valueExpr) && \"this\" !== valueExpr || isFunction(valueExpr);\r\n return isValueExprField ? valueExpr : null\r\n },\r\n _dataExpressionOptionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n this._itemsToDataSource();\r\n this._setCollectionWidgetOption(\"items\");\r\n break;\r\n case \"dataSource\":\r\n this._initDataSource();\r\n break;\r\n case \"itemTemplate\":\r\n this._setCollectionWidgetItemTemplate();\r\n break;\r\n case \"valueExpr\":\r\n this._compileValueGetter();\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._initDynamicTemplates();\r\n this._setCollectionWidgetOption(\"displayExpr\")\r\n }\r\n }\r\n});\r\nexport default DataExpressionMixin;\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_list.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop,\r\n ensureDefined,\r\n grep\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isWindow,\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport DropDownEditor from \"./ui.drop_down_editor\";\r\nimport List from \"../list_light\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport devices from \"../../core/devices\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport DataExpressionMixin from \"../editor/ui.data_expression\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n ChildDefaultTemplate\r\n} from \"../../core/templates/child_default_template\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport DataConverterMixin from \"../shared/grouped_data_converter_mixin\";\r\nvar LIST_ITEM_SELECTOR = \".dx-list-item\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar DROPDOWNLIST_POPUP_WRAPPER_CLASS = \"dx-dropdownlist-popup-wrapper\";\r\nvar SKIP_GESTURE_EVENT_CLASS = \"dx-skip-gesture-event\";\r\nvar SEARCH_EVENT = \"input\";\r\nvar SEARCH_MODES = [\"startswith\", \"contains\", \"endwith\", \"notcontains\"];\r\nvar DropDownList = DropDownEditor.inherit({\r\n _supportedKeys: function() {\r\n var parent = this.callBase();\r\n return extend({}, parent, {\r\n tab: function(e) {\r\n if (this._allowSelectItemByTab()) {\r\n this._saveValueChangeEvent(e);\r\n var $focusedItem = $(this._list.option(\"focusedElement\"));\r\n $focusedItem.length && this._setSelectedElement($focusedItem)\r\n }\r\n parent.tab.apply(this, arguments)\r\n },\r\n space: noop,\r\n home: noop,\r\n end: noop\r\n })\r\n },\r\n _allowSelectItemByTab: function() {\r\n return this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")\r\n },\r\n _setSelectedElement: function($element) {\r\n var value = this._valueGetter(this._list._getItemData($element));\r\n this._setValue(value)\r\n },\r\n _setValue: function(value) {\r\n this.option(\"value\", value)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), extend(DataExpressionMixin._dataExpressionDefaultOptions(), {\r\n displayValue: void 0,\r\n searchEnabled: false,\r\n searchMode: \"contains\",\r\n searchTimeout: 500,\r\n minSearchLength: 0,\r\n searchExpr: null,\r\n valueChangeEvent: \"input change keyup\",\r\n selectedItem: null,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n onSelectionChanged: null,\r\n onItemClick: noop,\r\n showDataBeforeSearch: false,\r\n grouped: false,\r\n groupTemplate: \"group\",\r\n popupPosition: {\r\n my: \"left top\",\r\n at: \"left bottom\",\r\n offset: {\r\n h: 0,\r\n v: 0\r\n },\r\n collision: \"flip\"\r\n },\r\n wrapItemText: false,\r\n useItemTextAsTitle: false\r\n }))\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n popupPosition: {\r\n offset: {\r\n v: -1\r\n }\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom center\"\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n value: true,\r\n selectedItem: true,\r\n displayValue: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initDataExpressions();\r\n this._initActions();\r\n this._setListDataSource();\r\n this._validateSearchMode();\r\n this._clearSelectedItem();\r\n this._initItems()\r\n },\r\n _setListFocusedElementOptionChange: function() {\r\n this._list._updateParentActiveDescendant = this._updateActiveDescendant.bind(this)\r\n },\r\n _initItems: function() {\r\n var items = this.option().items;\r\n if (items && !items.length && this._dataSource) {\r\n this.option().items = this._dataSource.items()\r\n }\r\n },\r\n _initActions: function() {\r\n this._initContentReadyAction();\r\n this._initSelectionChangedAction();\r\n this._initItemClickAction()\r\n },\r\n _initContentReadyAction: function() {\r\n this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initSelectionChangedAction: function() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initItemClickAction: function() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new ChildDefaultTemplate(\"item\")\r\n })\r\n },\r\n _isEditable: function() {\r\n return this.callBase() || this.option(\"searchEnabled\")\r\n },\r\n _saveFocusOnWidget: function(e) {\r\n if (this._list && this._list.initialOption(\"focusStateEnabled\")) {\r\n this._focusInput()\r\n }\r\n },\r\n _fitIntoRange: function(value, start, end) {\r\n if (value > end) {\r\n return start\r\n }\r\n if (value < start) {\r\n return end\r\n }\r\n return value\r\n },\r\n _items: function() {\r\n var items = this._getPlainItems(!this._list && this._dataSource.items());\r\n var availableItems = new dataQuery(items).filter(\"disabled\", \"<>\", true).toArray();\r\n return availableItems\r\n },\r\n _calcNextItem: function(step) {\r\n var items = this._items();\r\n var nextIndex = this._fitIntoRange(this._getSelectedIndex() + step, 0, items.length - 1);\r\n return items[nextIndex]\r\n },\r\n _getSelectedIndex: function() {\r\n var items = this._items();\r\n var selectedItem = this.option(\"selectedItem\");\r\n var result = -1;\r\n each(items, function(index, item) {\r\n if (this._isValueEquals(item, selectedItem)) {\r\n result = index;\r\n return false\r\n }\r\n }.bind(this));\r\n return result\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._updateCustomBoundaryContainer();\r\n this._popup.$wrapper().addClass(this._popupWrapperClass());\r\n var $popupContent = this._popup.$content();\r\n eventsEngine.off($popupContent, \"mouseup\");\r\n eventsEngine.on($popupContent, \"mouseup\", this._saveFocusOnWidget.bind(this));\r\n var that = this;\r\n this._popup.on({\r\n shown: function() {\r\n that.$element().addClass(SKIP_GESTURE_EVENT_CLASS)\r\n },\r\n hidden: function() {\r\n that.$element().removeClass(SKIP_GESTURE_EVENT_CLASS)\r\n }\r\n })\r\n },\r\n _updateCustomBoundaryContainer: function() {\r\n var customContainer = this.option(\"dropDownOptions.container\");\r\n var $container = customContainer && $(customContainer);\r\n if ($container && $container.length && !isWindow($container.get(0))) {\r\n var $containerWithParents = [].slice.call($container.parents());\r\n $containerWithParents.unshift($container.get(0));\r\n each($containerWithParents, function(i, parent) {\r\n if (parent === $(\"body\").get(0)) {\r\n return false\r\n } else if (\"hidden\" === window.getComputedStyle(parent).overflowY) {\r\n this._$customBoundaryContainer = $(parent);\r\n return false\r\n }\r\n }.bind(this))\r\n }\r\n },\r\n _popupWrapperClass: function() {\r\n return DROPDOWNLIST_POPUP_WRAPPER_CLASS\r\n },\r\n _renderInputValue: function() {\r\n var value = this._getCurrentValue();\r\n this._rejectValueLoading();\r\n return this._loadInputValue(value, this._setSelectedItem.bind(this)).always(this.callBase.bind(this, value))\r\n },\r\n _loadInputValue: function(value, callback) {\r\n return this._loadItem(value).always(callback)\r\n },\r\n _getItemFromPlain: function(value, cache) {\r\n var plainItems;\r\n var selectedItem;\r\n if (cache && \"object\" !== typeof value) {\r\n if (!cache.itemByValue) {\r\n cache.itemByValue = {};\r\n plainItems = this._getPlainItems();\r\n plainItems.forEach((function(item) {\r\n cache.itemByValue[this._valueGetter(item)] = item\r\n }), this)\r\n }\r\n selectedItem = cache.itemByValue[value]\r\n }\r\n if (!selectedItem) {\r\n plainItems = this._getPlainItems();\r\n selectedItem = grep(plainItems, function(item) {\r\n return this._isValueEquals(this._valueGetter(item), value)\r\n }.bind(this))[0]\r\n }\r\n return selectedItem\r\n },\r\n _loadItem: function(value, cache) {\r\n var selectedItem = this._getItemFromPlain(value, cache);\r\n return void 0 !== selectedItem ? (new Deferred).resolve(selectedItem).promise() : this._loadValue(value)\r\n },\r\n _getPlainItems: function(items) {\r\n var plainItems = [];\r\n items = items || this.option(\"items\") || this._dataSource.items() || [];\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n return plainItems\r\n },\r\n _updateActiveDescendant() {\r\n var _this$_list;\r\n var opened = this.option(\"opened\");\r\n var listFocusedItemId = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.getFocusedItemId();\r\n var isElementOnDom = $(\"#\".concat(listFocusedItemId)).length > 0;\r\n var activedescendant = opened && isElementOnDom && listFocusedItemId;\r\n this.setAria({\r\n activedescendant: activedescendant || null\r\n })\r\n },\r\n _setSelectedItem: function(item) {\r\n var displayValue = this._displayValue(item);\r\n this.option(\"selectedItem\", ensureDefined(item, null));\r\n this.option(\"displayValue\", displayValue)\r\n },\r\n _displayValue: function(item) {\r\n return this._displayGetter(item)\r\n },\r\n _refreshSelected: function() {\r\n var cache = {};\r\n this._listItemElements().each(function(_, itemElement) {\r\n var $itemElement = $(itemElement);\r\n var itemValue = this._valueGetter($itemElement.data(LIST_ITEM_DATA_KEY));\r\n var isItemSelected = this._isSelectedValue(itemValue, cache);\r\n if (isItemSelected) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n }.bind(this))\r\n },\r\n _popupShownHandler: function() {\r\n this.callBase();\r\n this._setFocusPolicy()\r\n },\r\n _setFocusPolicy: function() {\r\n if (!this.option(\"focusStateEnabled\") || !this._list) {\r\n return\r\n }\r\n this._list.option(\"focusedElement\", null)\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _validateSearchMode: function() {\r\n var searchMode = this.option(\"searchMode\");\r\n var normalizedSearchMode = searchMode.toLowerCase();\r\n if (inArray(normalizedSearchMode, SEARCH_MODES) < 0) {\r\n throw errors.Error(\"E1019\", searchMode)\r\n }\r\n },\r\n _clearSelectedItem: function() {\r\n this.option(\"selectedItem\", null)\r\n },\r\n _processDataSourceChanging: function() {\r\n this._setListDataSource();\r\n this._renderInputValue().fail(function() {\r\n if (this._isCustomValueAllowed()) {\r\n return\r\n }\r\n this._clearSelectedItem()\r\n }.bind(this))\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"displayCustomValue\")\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this._clearFilter();\r\n this._clearSelectedItem()\r\n },\r\n _listItemElements: function() {\r\n return this._$list ? this._$list.find(LIST_ITEM_SELECTOR) : $()\r\n },\r\n _popupConfig: function() {\r\n return extend(this.callBase(), {\r\n templatesRenderAsynchronously: false,\r\n autoResizeEnabled: false,\r\n maxHeight: this._getMaxHeight.bind(this)\r\n })\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._renderList()\r\n },\r\n _getKeyboardListeners() {\r\n var canListHaveFocus = this._canListHaveFocus();\r\n return this.callBase().concat([!canListHaveFocus && this._list])\r\n },\r\n _setAriaTargetForList: function() {\r\n this._list._getAriaTarget = this._getAriaTarget.bind(this)\r\n },\r\n _renderList: function() {\r\n this._listId = \"dx-\" + (new Guid)._value;\r\n var $list = this._$list = $(\"
\").attr(\"id\", this._listId).appendTo(this._popup.$content());\r\n this._list = this._createComponent($list, List, this._listConfig());\r\n this._refreshList();\r\n this._setAriaTargetForList();\r\n this._list.option(\"_listAttributes\", {\r\n role: \"combobox\"\r\n });\r\n this._renderPreventBlur(this._$list);\r\n this._setListFocusedElementOptionChange()\r\n },\r\n _renderPreventBlur: function($target) {\r\n var eventName = addNamespace(\"mousedown\", \"dxDropDownList\");\r\n eventsEngine.off($target, eventName);\r\n eventsEngine.on($target, eventName, function(e) {\r\n e.preventDefault()\r\n }.bind(this))\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n this._list && this._updateActiveDescendant();\r\n this.setAria({\r\n controls: this._list && this._listId,\r\n owns: this._popup && this._popupContentId\r\n })\r\n },\r\n _setDefaultAria: function() {\r\n this.setAria({\r\n haspopup: \"listbox\",\r\n autocomplete: \"list\"\r\n })\r\n },\r\n _refreshList: function() {\r\n if (this._list && this._shouldRefreshDataSource()) {\r\n this._setListDataSource()\r\n }\r\n },\r\n _shouldRefreshDataSource: function() {\r\n var dataSourceProvided = !!this._list.option(\"dataSource\");\r\n return dataSourceProvided !== this._needPassDataSourceToList()\r\n },\r\n _isDesktopDevice: function() {\r\n return \"desktop\" === devices.real().deviceType\r\n },\r\n _listConfig: function() {\r\n var options = {\r\n selectionMode: \"single\",\r\n _templates: this.option(\"_templates\"),\r\n templateProvider: this.option(\"templateProvider\"),\r\n noDataText: this.option(\"noDataText\"),\r\n grouped: this.option(\"grouped\"),\r\n wrapItemText: this.option(\"wrapItemText\"),\r\n useItemTextAsTitle: this.option(\"useItemTextAsTitle\"),\r\n onContentReady: this._listContentReadyHandler.bind(this),\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n indicateLoading: false,\r\n keyExpr: this._getCollectionKeyExpr(),\r\n displayExpr: this._displayGetterExpr(),\r\n groupTemplate: this.option(\"groupTemplate\"),\r\n onItemClick: this._listItemClickAction.bind(this),\r\n dataSource: this._getDataSource(),\r\n _revertPageOnEmptyLoad: true,\r\n hoverStateEnabled: this._isDesktopDevice() ? this.option(\"hoverStateEnabled\") : false,\r\n focusStateEnabled: this._isDesktopDevice() ? this.option(\"focusStateEnabled\") : false\r\n };\r\n if (!this._canListHaveFocus()) {\r\n options.tabIndex = null\r\n }\r\n return options\r\n },\r\n _canListHaveFocus: () => false,\r\n _getDataSource: function() {\r\n return this._needPassDataSourceToList() ? this._dataSource : null\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _listContentReadyHandler: function() {\r\n this._list = this._list || this._$list.dxList(\"instance\");\r\n if (!this.option(\"deferRendering\")) {\r\n this._refreshSelected()\r\n }\r\n this._dimensionChanged();\r\n this._contentReadyAction()\r\n },\r\n _setListOption: function(optionName, value) {\r\n this._setWidgetOption(\"_list\", arguments)\r\n },\r\n _listItemClickAction: function(e) {\r\n this._listItemClickHandler(e);\r\n this._itemClickAction(e)\r\n },\r\n _listItemClickHandler: noop,\r\n _setListDataSource: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n this._setListOption(\"dataSource\", this._getDataSource());\r\n if (!this._needPassDataSourceToList()) {\r\n this._setListOption(\"items\", [])\r\n }\r\n },\r\n _needPassDataSourceToList: function() {\r\n return this.option(\"showDataBeforeSearch\") || this._isMinSearchLengthExceeded()\r\n },\r\n _isMinSearchLengthExceeded: function() {\r\n return this._searchValue().toString().length >= this.option(\"minSearchLength\")\r\n },\r\n _needClearFilter: function() {\r\n return this._canKeepDataSource() ? false : this._needPassDataSourceToList()\r\n },\r\n _canKeepDataSource: function() {\r\n var _this$_dataSource;\r\n var isMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n return (null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.isLoaded()) && this.option(\"showDataBeforeSearch\") && this.option(\"minSearchLength\") && !isMinSearchLengthExceeded && !this._isLastMinSearchLengthExceeded\r\n },\r\n _searchValue: function() {\r\n return this._input().val() || \"\"\r\n },\r\n _getSearchEvent: function() {\r\n return addNamespace(SEARCH_EVENT, this.NAME + \"Search\")\r\n },\r\n _getCompositionStartEvent: function() {\r\n return addNamespace(\"compositionstart\", this.NAME + \"CompositionStart\")\r\n },\r\n _getCompositionEndEvent: function() {\r\n return addNamespace(\"compositionend\", this.NAME + \"CompositionEnd\")\r\n },\r\n _getSetFocusPolicyEvent: function() {\r\n return addNamespace(\"input\", this.NAME + \"FocusPolicy\")\r\n },\r\n _renderEvents: function() {\r\n this.callBase();\r\n eventsEngine.on(this._input(), this._getSetFocusPolicyEvent(), () => {\r\n this._setFocusPolicy()\r\n });\r\n if (this._shouldRenderSearchEvent()) {\r\n eventsEngine.on(this._input(), this._getSearchEvent(), e => {\r\n this._searchHandler(e)\r\n });\r\n eventsEngine.on(this._input(), this._getCompositionStartEvent(), () => {\r\n this._isTextCompositionInProgress(true)\r\n });\r\n eventsEngine.on(this._input(), this._getCompositionEndEvent(), e => {\r\n this._isTextCompositionInProgress(void 0);\r\n this._searchHandler(e, this._searchValue())\r\n })\r\n }\r\n },\r\n _shouldRenderSearchEvent: function() {\r\n return this.option(\"searchEnabled\")\r\n },\r\n _refreshEvents: function() {\r\n eventsEngine.off(this._input(), this._getSearchEvent());\r\n eventsEngine.off(this._input(), this._getSetFocusPolicyEvent());\r\n eventsEngine.off(this._input(), this._getCompositionStartEvent());\r\n eventsEngine.off(this._input(), this._getCompositionEndEvent());\r\n this.callBase()\r\n },\r\n _isTextCompositionInProgress: function(value) {\r\n if (arguments.length) {\r\n this._isTextComposition = value\r\n } else {\r\n return this._isTextComposition\r\n }\r\n },\r\n _searchHandler: function(e, searchValue) {\r\n if (this._isTextCompositionInProgress()) {\r\n return\r\n }\r\n if (!this._isMinSearchLengthExceeded()) {\r\n this._searchCanceled();\r\n return\r\n }\r\n var searchTimeout = this.option(\"searchTimeout\");\r\n if (searchTimeout) {\r\n this._clearSearchTimer();\r\n this._searchTimer = setTimeout(() => {\r\n this._searchDataSource(searchValue)\r\n }, searchTimeout)\r\n } else {\r\n this._searchDataSource(searchValue)\r\n }\r\n },\r\n _searchCanceled: function() {\r\n this._clearSearchTimer();\r\n if (this._needClearFilter()) {\r\n this._filterDataSource(null)\r\n }\r\n this._refreshList()\r\n },\r\n _searchDataSource: function() {\r\n var searchValue = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._searchValue();\r\n this._filterDataSource(searchValue)\r\n },\r\n _filterDataSource: function(searchValue) {\r\n this._clearSearchTimer();\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n dataSource.searchExpr(this.option(\"searchExpr\") || this._displayGetterExpr());\r\n dataSource.searchOperation(this.option(\"searchMode\"));\r\n dataSource.searchValue(searchValue);\r\n dataSource.load().done(this._dataSourceFiltered.bind(this, searchValue))\r\n }\r\n },\r\n _clearFilter: function() {\r\n var dataSource = this._dataSource;\r\n dataSource && dataSource.searchValue() && dataSource.searchValue(null)\r\n },\r\n _dataSourceFiltered: function() {\r\n this._isLastMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n this._refreshList();\r\n this._refreshPopupVisibility()\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._hasItemsToShow()\r\n },\r\n _refreshPopupVisibility: function() {\r\n if (this.option(\"readOnly\") || !this._searchValue()) {\r\n return\r\n }\r\n var shouldOpenPopup = this._shouldOpenPopup();\r\n if (shouldOpenPopup && !this._isFocused()) {\r\n return\r\n }\r\n this.option(\"opened\", shouldOpenPopup);\r\n if (shouldOpenPopup) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n if (0 === this._dataSource.pageIndex()) {\r\n this.option().items = newItems\r\n } else {\r\n this.option().items = this.option().items.concat(newItems)\r\n }\r\n },\r\n _hasItemsToShow: function() {\r\n var resultItems = this._dataSource && this._dataSource.items() || [];\r\n var resultAmount = resultItems.length;\r\n var isMinSearchLengthExceeded = this._needPassDataSourceToList();\r\n return !!(isMinSearchLengthExceeded && resultAmount)\r\n },\r\n _clearSearchTimer: function() {\r\n clearTimeout(this._searchTimer);\r\n delete this._searchTimer\r\n },\r\n _popupShowingHandler: function() {\r\n this._dimensionChanged()\r\n },\r\n _dimensionChanged: function() {\r\n this.callBase(arguments);\r\n this._popup && this._updatePopupDimensions()\r\n },\r\n _needPopupRepaint: function() {\r\n if (!this._dataSource) {\r\n return false\r\n }\r\n var currentPageIndex = this._dataSource.pageIndex();\r\n var needRepaint = isDefined(this._pageIndex) && currentPageIndex <= this._pageIndex;\r\n this._pageIndex = currentPageIndex;\r\n return needRepaint\r\n },\r\n _updatePopupDimensions: function() {\r\n if (this._needPopupRepaint()) {\r\n this._popup.repaint()\r\n }\r\n this._list && this._list.updateDimensions()\r\n },\r\n _getMaxHeight: function() {\r\n var $element = this.$element();\r\n var $customBoundaryContainer = this._$customBoundaryContainer;\r\n var offsetTop = $element.offset().top - ($customBoundaryContainer ? $customBoundaryContainer.offset().top : 0);\r\n var windowHeight = getOuterHeight(window);\r\n var containerHeight = $customBoundaryContainer ? Math.min(getOuterHeight($customBoundaryContainer), windowHeight) : windowHeight;\r\n var maxHeight = Math.max(offsetTop, containerHeight - offsetTop - getOuterHeight($element));\r\n return Math.min(.5 * containerHeight, maxHeight)\r\n },\r\n _clean: function() {\r\n if (this._list) {\r\n delete this._list\r\n }\r\n delete this._isLastMinSearchLengthExceeded;\r\n this.callBase()\r\n },\r\n _dispose: function() {\r\n this._clearSearchTimer();\r\n this.callBase()\r\n },\r\n _setCollectionWidgetOption: function() {\r\n this._setListOption.apply(this, arguments)\r\n },\r\n _setSubmitValue: function() {\r\n var value = this.option(\"value\");\r\n var submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;\r\n this._getSubmitElement().val(submitValue)\r\n },\r\n _shouldUseDisplayValue: function(value) {\r\n return \"this\" === this.option(\"valueExpr\") && isObject(value)\r\n },\r\n _optionChanged: function(args) {\r\n this._dataExpressionOptionChanged(args);\r\n switch (args.name) {\r\n case \"hoverStateEnabled\":\r\n case \"focusStateEnabled\":\r\n this._isDesktopDevice() && this._setListOption(args.name, args.value);\r\n this.callBase(args);\r\n break;\r\n case \"items\":\r\n if (!this.option(\"dataSource\")) {\r\n this._processDataSourceChanging()\r\n }\r\n break;\r\n case \"dataSource\":\r\n this._processDataSourceChanging();\r\n break;\r\n case \"valueExpr\":\r\n this._renderValue();\r\n this._setListOption(\"keyExpr\", this._getCollectionKeyExpr());\r\n break;\r\n case \"displayExpr\":\r\n this._renderValue();\r\n this._setListOption(\"displayExpr\", this._displayGetterExpr());\r\n break;\r\n case \"searchMode\":\r\n this._validateSearchMode();\r\n break;\r\n case \"minSearchLength\":\r\n this._refreshList();\r\n break;\r\n case \"searchEnabled\":\r\n case \"showDataBeforeSearch\":\r\n case \"searchExpr\":\r\n this._invalidate();\r\n break;\r\n case \"onContentReady\":\r\n this._initContentReadyAction();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._initSelectionChangedAction();\r\n break;\r\n case \"onItemClick\":\r\n this._initItemClickAction();\r\n break;\r\n case \"grouped\":\r\n case \"groupTemplate\":\r\n case \"wrapItemText\":\r\n case \"noDataText\":\r\n case \"useItemTextAsTitle\":\r\n this._setListOption(args.name);\r\n break;\r\n case \"displayValue\":\r\n this.option(\"text\", args.value);\r\n break;\r\n case \"itemTemplate\":\r\n case \"searchTimeout\":\r\n break;\r\n case \"selectedItem\":\r\n if (args.previousValue !== args.value) {\r\n this._selectionChangedAction({\r\n selectedItem: args.value\r\n })\r\n }\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n}).include(DataExpressionMixin, DataConverterMixin);\r\nregisterComponent(\"dxDropDownList\", DropDownList);\r\nexport default DropDownList;\r\n","/**\r\n * DevExtreme (esm/ui/select_box.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPromise\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n Deferred,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport errors from \"../core/errors\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DropDownList from \"./drop_down_editor/ui.drop_down_list\";\r\nimport \"./list/modules/selection\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../events/utils/index\";\r\nvar DISABLED_STATE_SELECTOR = \".dx-state-disabled\";\r\nvar SELECTBOX_CLASS = \"dx-selectbox\";\r\nvar SELECTBOX_POPUP_CLASS = \"dx-selectbox-popup\";\r\nvar SELECTBOX_CONTAINER_CLASS = \"dx-selectbox-container\";\r\nvar SELECTBOX_POPUP_WRAPPER_CLASS = \"dx-selectbox-popup-wrapper\";\r\nvar SelectBox = DropDownList.inherit({\r\n _supportedKeys: function() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var clearSelectBox = function(e) {\r\n var isEditable = this._isEditable();\r\n if (!isEditable) {\r\n if (this.option(\"showClearButton\")) {\r\n e.preventDefault();\r\n this.reset()\r\n }\r\n } else if (this._valueSubstituted()) {\r\n this._preventFiltering = true\r\n }\r\n this._savedTextRemoveEvent = e;\r\n this._preventSubstitution = true\r\n };\r\n var searchIfNeeded = function() {\r\n if (that.option(\"searchEnabled\") && that._valueSubstituted()) {\r\n that._searchHandler()\r\n }\r\n };\r\n return extend({}, parent, {\r\n tab: function() {\r\n if (this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")) {\r\n this._resetCaretPosition(true)\r\n }\r\n parent.tab && parent.tab.apply(this, arguments);\r\n this._cancelSearchIfNeed()\r\n },\r\n upArrow: function(e) {\r\n if (parent.upArrow && parent.upArrow.apply(this, arguments)) {\r\n if (!this.option(\"opened\")) {\r\n this._setNextValue(e)\r\n }\r\n return true\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (parent.downArrow && parent.downArrow.apply(this, arguments)) {\r\n if (!this.option(\"opened\")) {\r\n this._setNextValue(e)\r\n }\r\n return true\r\n }\r\n },\r\n leftArrow: function() {\r\n searchIfNeeded();\r\n parent.leftArrow && parent.leftArrow.apply(this, arguments)\r\n },\r\n rightArrow: function() {\r\n searchIfNeeded();\r\n parent.rightArrow && parent.rightArrow.apply(this, arguments)\r\n },\r\n home: function() {\r\n searchIfNeeded();\r\n parent.home && parent.home.apply(this, arguments)\r\n },\r\n end: function() {\r\n searchIfNeeded();\r\n parent.end && parent.end.apply(this, arguments)\r\n },\r\n escape: function() {\r\n var result = parent.escape && parent.escape.apply(this, arguments);\r\n this._cancelEditing();\r\n return null !== result && void 0 !== result ? result : true\r\n },\r\n enter: function(e) {\r\n var isOpened = this.option(\"opened\");\r\n var inputText = this._input().val().trim();\r\n var isCustomText = inputText && this._list && !this._list.option(\"focusedElement\");\r\n if (!inputText && isDefined(this.option(\"value\")) && this.option(\"allowClearing\")) {\r\n this._saveValueChangeEvent(e);\r\n this.option({\r\n selectedItem: null,\r\n value: null\r\n });\r\n this.close()\r\n } else {\r\n if (this.option(\"acceptCustomValue\")) {\r\n e.preventDefault();\r\n if (isCustomText) {\r\n if (isOpened) {\r\n this._toggleOpenState()\r\n }\r\n this._valueChangeEventHandler(e)\r\n }\r\n return isOpened\r\n }\r\n if (parent.enter && parent.enter.apply(this, arguments)) {\r\n return isOpened\r\n }\r\n }\r\n },\r\n space: function(e) {\r\n var isOpened = this.option(\"opened\");\r\n var isSearchEnabled = this.option(\"searchEnabled\");\r\n var acceptCustomValue = this.option(\"acceptCustomValue\");\r\n if (!isOpened || isSearchEnabled || acceptCustomValue) {\r\n return\r\n }\r\n e.preventDefault();\r\n this._valueChangeEventHandler(e);\r\n return true\r\n },\r\n backspace: clearSelectBox,\r\n del: clearSelectBox\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n placeholder: messageLocalization.format(\"Select\"),\r\n fieldTemplate: null,\r\n valueChangeEvent: \"change\",\r\n acceptCustomValue: false,\r\n onCustomItemCreating: function(e) {\r\n if (!isDefined(e.customItem)) {\r\n e.customItem = e.text\r\n }\r\n },\r\n showSelectionControls: false,\r\n allowClearing: true,\r\n tooltipEnabled: false,\r\n openOnFieldClick: true,\r\n showDropDownButton: true,\r\n displayCustomValue: false,\r\n 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.callBase();\r\n this._$container.addClass(SELECTBOX_CONTAINER_CLASS)\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._popup.$element().addClass(SELECTBOX_POPUP_CLASS);\r\n this._popup.$overlayContent().attr(\"tabindex\", -1)\r\n },\r\n _popupWrapperClass: function() {\r\n return this.callBase() + \" \" + SELECTBOX_POPUP_WRAPPER_CLASS\r\n },\r\n _cancelEditing: function() {\r\n if (!this.option(\"searchEnabled\") && this._list) {\r\n this._focusListElement(null);\r\n this._updateField(this.option(\"selectedItem\"))\r\n }\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n if (this.option(\"opened\")) {\r\n this._scrollToSelectedItem();\r\n this._focusSelectedElement()\r\n }\r\n },\r\n _focusSelectedElement: function() {\r\n var searchValue = this._searchValue();\r\n if (!searchValue) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var index = inArray(this.option(\"selectedItem\"), this.option(\"items\"));\r\n var focusedElement = index >= 0 && !this._isCustomItemSelected() ? $listItems.eq(index) : null;\r\n this._focusListElement(focusedElement)\r\n },\r\n _renderFocusedElement: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n var searchValue = this._searchValue();\r\n if (!searchValue || this.option(\"acceptCustomValue\")) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var focusedElement = $listItems.not(DISABLED_STATE_SELECTOR).eq(0);\r\n this._focusListElement(focusedElement)\r\n },\r\n _focusListElement: function(element) {\r\n this._preventInputValueRender = true;\r\n this._list.option(\"focusedElement\", getPublicElement(element));\r\n delete this._preventInputValueRender\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._list && this._list.scrollToItem(this._list.option(\"selectedItem\"))\r\n },\r\n _listContentReadyHandler: function() {\r\n this.callBase();\r\n var isPaginate = this._dataSource && this._dataSource.paginate();\r\n if (isPaginate && this._needPopupRepaint()) {\r\n return\r\n }\r\n this._scrollToSelectedItem()\r\n },\r\n _renderValue: function() {\r\n this._renderInputValue();\r\n this._setSubmitValue();\r\n return (new Deferred).resolve()\r\n },\r\n _renderInputValue: function() {\r\n return this.callBase().always(function() {\r\n this._renderInputValueAsync()\r\n }.bind(this))\r\n },\r\n _renderInputValueAsync: function() {\r\n this._renderTooltip();\r\n this._renderInputValueImpl().always(function() {\r\n this._refreshSelected()\r\n }.bind(this))\r\n },\r\n _renderInputValueImpl: function() {\r\n this._renderField();\r\n return (new Deferred).resolve()\r\n },\r\n _setNextItem: function(step) {\r\n var item = this._calcNextItem(step);\r\n var value = this._valueGetter(item);\r\n this._setValue(value)\r\n },\r\n _setNextValue: function(e) {\r\n var dataSourceIsLoaded = this._dataSource.isLoaded() ? (new Deferred).resolve() : this._dataSource.load();\r\n dataSourceIsLoaded.done(function() {\r\n var selectedIndex = this._getSelectedIndex();\r\n var hasPages = this._dataSource.pageSize();\r\n var isLastPage = this._dataSource.isLastPage();\r\n var isLastItem = selectedIndex === this._items().length - 1;\r\n this._saveValueChangeEvent(e);\r\n var step = \"downArrow\" === normalizeKeyName(e) ? 1 : -1;\r\n if (hasPages && !isLastPage && isLastItem && step > 0) {\r\n if (!this._popup) {\r\n this._createPopup()\r\n }\r\n if (!this._dataSource.isLoading()) {\r\n this._list._loadNextPage().done(this._setNextItem.bind(this, step))\r\n }\r\n } else {\r\n this._setNextItem(step)\r\n }\r\n }.bind(this))\r\n },\r\n _setSelectedItem: function(item) {\r\n var isUnknownItem = !this._isCustomValueAllowed() && void 0 === item;\r\n this.callBase(isUnknownItem ? null : item);\r\n if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) {\r\n this._setListOption(\"selectedItem\", this.option(\"selectedItem\"))\r\n }\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"acceptCustomValue\") || this.callBase()\r\n },\r\n _displayValue: function(item) {\r\n item = !isDefined(item) && this._isCustomValueAllowed() ? this.option(\"value\") : item;\r\n return this.callBase(item)\r\n },\r\n _listConfig: function() {\r\n var result = extend(this.callBase(), {\r\n pageLoadMode: \"scrollBottom\",\r\n onSelectionChanged: this._getSelectionChangeHandler(),\r\n selectedItem: this.option(\"selectedItem\"),\r\n onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this)\r\n });\r\n if (this.option(\"showSelectionControls\")) {\r\n extend(result, {\r\n showSelectionControls: true,\r\n selectionByClick: true\r\n })\r\n }\r\n return result\r\n },\r\n _listFocusedItemChangeHandler: function(e) {\r\n if (this._preventInputValueRender) {\r\n return\r\n }\r\n var list = e.component;\r\n var focusedElement = $(list.option(\"focusedElement\"));\r\n var focusedItem = list._getItemData(focusedElement);\r\n this._updateField(focusedItem)\r\n },\r\n _updateField: function(item) {\r\n var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n if (!(fieldTemplate && this.option(\"fieldTemplate\"))) {\r\n var text = this._displayGetter(item);\r\n this.option(\"text\", text);\r\n this._renderDisplayText(text);\r\n return\r\n }\r\n this._renderField()\r\n },\r\n _getSelectionChangeHandler: function() {\r\n return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : noop\r\n },\r\n _selectionChangeHandler: function(e) {\r\n each(e.addedItems || [], function(_, addedItem) {\r\n this._setValue(this._valueGetter(addedItem))\r\n }.bind(this))\r\n },\r\n _getActualSearchValue: function() {\r\n return this._dataSource.searchValue()\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n if (!isVisible && !this._shouldClearFilter()) {\r\n this._restoreInputText(true)\r\n }\r\n if (this._wasSearch() && isVisible) {\r\n this._wasSearch(false);\r\n var showDataImmediately = this.option(\"showDataBeforeSearch\") || this._isMinSearchLengthExceeded();\r\n if (showDataImmediately && this._dataSource) {\r\n if (this._searchTimer) {\r\n return\r\n }\r\n var searchValue = this._getActualSearchValue();\r\n searchValue && this._wasSearch(true);\r\n this._filterDataSource(searchValue || null)\r\n } else {\r\n this._setListOption(\"items\", [])\r\n }\r\n }\r\n if (isVisible) {\r\n this._scrollToSelectedItem()\r\n }\r\n this.callBase(isVisible)\r\n },\r\n _renderTooltip: function() {\r\n if (this.option(\"tooltipEnabled\")) {\r\n this.$element().attr(\"title\", this.option(\"displayValue\"))\r\n }\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this._dimensionChanged()\r\n },\r\n _isValueEqualInputText: function() {\r\n var initialSelectedItem = this.option(\"selectedItem\");\r\n if (null === initialSelectedItem) {\r\n return false\r\n }\r\n var value = this._displayGetter(initialSelectedItem);\r\n var displayValue = value ? String(value) : \"\";\r\n var inputText = this._searchValue();\r\n return displayValue === inputText\r\n },\r\n _popupHidingHandler: function() {\r\n if (this._isValueEqualInputText()) {\r\n this._cancelEditing()\r\n }\r\n this.callBase()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n if (this._shouldCancelSearch()) {\r\n this._wasSearch(false);\r\n this._searchCanceled();\r\n this._shouldCancelSearch(false)\r\n }\r\n },\r\n _restoreInputText: function(saveEditingValue) {\r\n if (this.option(\"readOnly\")) {\r\n return\r\n }\r\n this._loadItemDeferred && this._loadItemDeferred.always(function() {\r\n var initialSelectedItem = this.option(\"selectedItem\");\r\n if (this.option(\"acceptCustomValue\")) {\r\n if (!saveEditingValue) {\r\n this._updateField(initialSelectedItem);\r\n this._clearFilter()\r\n }\r\n return\r\n }\r\n if (this.option(\"searchEnabled\")) {\r\n if (!this._searchValue() && this.option(\"allowClearing\")) {\r\n this._clearTextValue();\r\n return\r\n }\r\n }\r\n if (this._isValueEqualInputText()) {\r\n return\r\n }\r\n this._renderInputValue().always(function(selectedItem) {\r\n var newSelectedItem = ensureDefined(selectedItem, initialSelectedItem);\r\n this._setSelectedItem(newSelectedItem);\r\n this._updateField(newSelectedItem);\r\n this._clearFilter()\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n _focusOutHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n var isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget);\r\n if (!isOverlayTarget) {\r\n this._restoreInputText();\r\n this._clearSearchTimer()\r\n }\r\n this._cancelSearchIfNeed(e)\r\n }\r\n e.target = this._input().get(0);\r\n this.callBase(e)\r\n },\r\n _cancelSearchIfNeed: function(e) {\r\n var {\r\n searchEnabled: searchEnabled\r\n } = this.option();\r\n var isOverlayTarget = this._isOverlayNestedTarget(null === e || void 0 === e ? void 0 : e.relatedTarget);\r\n var shouldCancelSearch = this._wasSearch() && searchEnabled && !isOverlayTarget;\r\n if (shouldCancelSearch) {\r\n var _this$_popup;\r\n var isPopupVisible = null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup._hideAnimationProcessing;\r\n this._clearSearchTimer();\r\n if (isPopupVisible) {\r\n this._shouldCancelSearch(true)\r\n } else {\r\n this._wasSearch(false);\r\n this._searchCanceled()\r\n }\r\n }\r\n },\r\n _shouldCancelSearch: function(value) {\r\n if (!arguments.length) {\r\n return this._shouldCancelSearchValue\r\n }\r\n this._shouldCancelSearchValue = value\r\n },\r\n _isOverlayNestedTarget: function(target) {\r\n return !!$(target).closest(\".\".concat(SELECTBOX_POPUP_WRAPPER_CLASS)).length\r\n },\r\n _clearTextValue: function() {\r\n if (this.option(\"selectedItem\")) {\r\n if (this._savedTextRemoveEvent) {\r\n this._saveValueChangeEvent(this._savedTextRemoveEvent)\r\n }\r\n this.option(\"value\", null)\r\n }\r\n delete this._savedTextRemoveEvent\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._needPassDataSourceToList() && this._wasSearch()\r\n },\r\n _isFocused: function() {\r\n var activeElement = domAdapter.getActiveElement();\r\n return this.callBase() && $(activeElement).closest(this._input()).length > 0\r\n },\r\n _renderValueChangeEvent: function() {\r\n if (this._isEditable()) {\r\n this.callBase()\r\n }\r\n },\r\n _fieldRenderData: function() {\r\n var $listFocused = this._list && this.option(\"opened\") && $(this._list.option(\"focusedElement\"));\r\n if ($listFocused && $listFocused.length) {\r\n return this._list._getItemData($listFocused)\r\n }\r\n return this.option(\"selectedItem\")\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _shouldCloseOnItemClick: function() {\r\n return !(this.option(\"showSelectionControls\") && \"single\" !== this.option(\"selectionMode\"))\r\n },\r\n _listItemClickHandler: function(e) {\r\n var previousValue = this._getCurrentValue();\r\n this._focusListElement($(e.itemElement));\r\n this._saveValueChangeEvent(e.event);\r\n this._completeSelection(this._valueGetter(e.itemData));\r\n if (this._shouldCloseOnItemClick()) {\r\n this.option(\"opened\", false)\r\n }\r\n if (this.option(\"searchEnabled\") && previousValue === this._valueGetter(e.itemData)) {\r\n this._updateField(e.itemData)\r\n }\r\n if (this._shouldClearFilter()) {\r\n this._cancelSearchIfNeed()\r\n }\r\n },\r\n _shouldClearFilter: function() {\r\n return this._wasSearch()\r\n },\r\n _completeSelection: function(value) {\r\n this._setValue(value)\r\n },\r\n _loadItem: function(value, cache) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n this.callBase(value, cache).done(function(item) {\r\n deferred.resolve(item)\r\n }.bind(this)).fail(function(args) {\r\n if (null !== args && void 0 !== args && args.shouldSkipCallback) {\r\n return\r\n }\r\n var selectedItem = that.option(\"selectedItem\");\r\n if (that.option(\"acceptCustomValue\") && value === that._valueGetter(selectedItem)) {\r\n deferred.resolve(selectedItem)\r\n } else {\r\n deferred.reject()\r\n }\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _loadInputValue: function(value, callback) {\r\n this._loadItemDeferred = this._loadItem(value).always(callback);\r\n return this._loadItemDeferred\r\n },\r\n _isCustomItemSelected: function() {\r\n var selectedItem = this.option(\"selectedItem\");\r\n var searchValue = this._searchValue();\r\n var selectedItemText = this._displayGetter(selectedItem);\r\n return !selectedItemText || searchValue !== selectedItemText.toString()\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (this.option(\"acceptCustomValue\") && this._isCustomItemSelected() && !this._isValueChanging) {\r\n this._isValueChanging = true;\r\n this._customItemAddedHandler(e);\r\n this._isValueChanging = false\r\n }\r\n },\r\n _initCustomItemCreatingAction: function() {\r\n this._customItemCreatingAction = this._createActionByOption(\"onCustomItemCreating\")\r\n },\r\n _createCustomItem: function(text) {\r\n var params = {\r\n text: text\r\n };\r\n var actionResult = this._customItemCreatingAction(params);\r\n var item = ensureDefined(actionResult, params.customItem);\r\n if (isDefined(actionResult)) {\r\n errors.log(\"W0015\", \"onCustomItemCreating\", \"customItem\")\r\n }\r\n return item\r\n },\r\n _customItemAddedHandler: function(e) {\r\n var searchValue = this._searchValue();\r\n var item = this._createCustomItem(searchValue);\r\n this._saveValueChangeEvent(e);\r\n if (void 0 === item) {\r\n this._renderValue();\r\n throw errors.Error(\"E0121\")\r\n }\r\n if (isPromise(item)) {\r\n fromPromise(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null))\r\n } else {\r\n this._setCustomItem(item)\r\n }\r\n },\r\n _setCustomItem: function(item) {\r\n if (this._disposed) {\r\n return\r\n }\r\n item = item || null;\r\n this.option(\"selectedItem\", item);\r\n this._cancelSearchIfNeed();\r\n this._setValue(this._valueGetter(item));\r\n this._renderDisplayText(this._displayGetter(item))\r\n },\r\n _clearValueHandler: function(e) {\r\n this._preventFiltering = true;\r\n this.callBase(e);\r\n this._searchCanceled();\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() {\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(arguments)\r\n },\r\n _dataSourceFiltered: function(searchValue) {\r\n this.callBase();\r\n if (null !== searchValue) {\r\n this._renderInputSubstitution();\r\n this._renderFocusedElement()\r\n }\r\n },\r\n _valueSubstituted: function() {\r\n var input = this._input().get(0);\r\n var isAllSelected = 0 === input.selectionStart && input.selectionEnd === this._searchValue().length;\r\n var inputHasSelection = input.selectionStart !== input.selectionEnd;\r\n return this._wasSearch() && inputHasSelection && !isAllSelected\r\n },\r\n _shouldSubstitutionBeRendered: function() {\r\n return !this._preventSubstitution && this.option(\"searchEnabled\") && !this.option(\"acceptCustomValue\") && \"startswith\" === this.option(\"searchMode\")\r\n },\r\n _renderInputSubstitution: function() {\r\n if (!this._shouldSubstitutionBeRendered()) {\r\n delete this._preventSubstitution;\r\n return\r\n }\r\n var item = this._list && this._getPlainItems(this._list.option(\"items\"))[0];\r\n if (!item) {\r\n return\r\n }\r\n var $input = this._input();\r\n var valueLength = $input.val().length;\r\n if (0 === valueLength) {\r\n return\r\n }\r\n var inputElement = $input.get(0);\r\n var displayValue = this._displayGetter(item).toString();\r\n inputElement.value = displayValue;\r\n this._caret({\r\n start: valueLength,\r\n end: displayValue.length\r\n })\r\n },\r\n _dispose: function() {\r\n this._renderInputValueAsync = noop;\r\n delete this._loadItemDeferred;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onCustomItemCreating\":\r\n this._initCustomItemCreatingAction();\r\n break;\r\n case \"tooltipEnabled\":\r\n this._renderTooltip();\r\n break;\r\n case \"displayCustomValue\":\r\n case \"acceptCustomValue\":\r\n case \"showSelectionControls\":\r\n 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});\r\nregisterComponent(\"dxSelectBox\", SelectBox);\r\nexport default SelectBox;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.native.pull_down.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar PULLDOWN_RELEASE_TIME = 400;\r\nvar PullDownNativeScrollViewStrategy = NativeStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$refreshingText = scrollView._$refreshingText;\r\n this._$scrollViewContent = $(scrollView.content());\r\n this._$container = $(scrollView.container());\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $image = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n var $text = this._$pullDownText = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = $(\"
\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = $(\"
\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = $(\"
\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n each(pullDownTextItems, (function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n }))\r\n },\r\n update: function() {\r\n this.callBase();\r\n this._setTopPocketOffset()\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.get(0).clientHeight;\r\n var contentEl = this._$scrollViewContent.get(0);\r\n var containerEl = this._$container.get(0);\r\n this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n _setTopPocketOffset: function() {\r\n this._$topPocket.css({\r\n top: -this._topPocketSize\r\n })\r\n },\r\n handleEnd: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_READY) {\r\n this._setPullDownOffset(this._topPocketSize);\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n this._pullDownRefreshTimeout = setTimeout(function() {\r\n this._pullDownRefreshing()\r\n }.bind(this), 400)\r\n }\r\n },\r\n _setPullDownOffset: function(offset) {\r\n move(this._$topPocket, {\r\n top: offset\r\n });\r\n move(this._$scrollViewContent, {\r\n top: offset\r\n })\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = (this._location || 0) - currentLocation;\r\n this._location = currentLocation;\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= this._topPocketSize\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1\r\n },\r\n _reachBottom: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n pullDownEnable: function(enabled) {\r\n if (enabled) {\r\n this._updateDimensions();\r\n this._setTopPocketOffset()\r\n }\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n if (this._state === STATE_LOADING) {\r\n this._state = STATE_RELEASED\r\n }\r\n this._releaseTimeout = setTimeout(function() {\r\n this._setPullDownOffset(0);\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), PULLDOWN_RELEASE_TIME);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nexport default PullDownNativeScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.native.swipe_down.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport {\r\n eventData\r\n} from \"../../events/utils/index\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-refreshing\";\r\nvar PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_TOUCHED = 4;\r\nvar STATE_PULLED = 5;\r\nvar SwipeDownNativeScrollViewStrategy = NativeStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$scrollViewContent = $(scrollView.content());\r\n this._$container = $(scrollView.container());\r\n this._initCallbacks();\r\n this._location = 0\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n this._$icon = $(\"
\").addClass(PULLDOWN_ICON_CLASS);\r\n this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._releasePullDown();\r\n this._updateDimensions()\r\n },\r\n _releasePullDown: function() {\r\n this._$pullDown.css({\r\n opacity: 0\r\n })\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.get(0).clientHeight;\r\n var contentEl = this._$scrollViewContent.get(0);\r\n var containerEl = this._$container.get(0);\r\n this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n handleInit: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_RELEASED && 0 === this._location) {\r\n this._startClientY = eventData(e.originalEvent).y;\r\n this._state = STATE_TOUCHED\r\n }\r\n },\r\n handleMove: function(e) {\r\n this.callBase(e);\r\n this._deltaY = eventData(e.originalEvent).y - this._startClientY;\r\n if (this._state === STATE_TOUCHED) {\r\n if (this._pullDownEnabled && this._deltaY > 0) {\r\n this._state = STATE_PULLED\r\n } else {\r\n this._complete()\r\n }\r\n }\r\n if (this._state === STATE_PULLED) {\r\n e.preventDefault();\r\n this._movePullDown()\r\n }\r\n },\r\n _movePullDown: function() {\r\n var pullDownHeight = this._getPullDownHeight();\r\n var top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());\r\n var angle = 180 * top / pullDownHeight / 3;\r\n this._$pullDown.css({\r\n opacity: 1\r\n }).toggleClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS, top < pullDownHeight);\r\n move(this._$pullDown, {\r\n top: top\r\n });\r\n this._$icon.css({\r\n transform: \"rotate(\" + angle + \"deg)\"\r\n })\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._state === STATE_PULLED && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()\r\n },\r\n _getPullDownHeight: function() {\r\n return Math.round(.05 * getOuterHeight(this._$element))\r\n },\r\n _getPullDownStartPosition: function() {\r\n return -Math.round(1.5 * getOuterHeight(this._$pullDown))\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 && Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1\r\n },\r\n _reachBottom: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n this._state = STATE_REFRESHING;\r\n this._pullDownRefreshHandler()\r\n },\r\n _pullDownRefreshHandler: function() {\r\n this._refreshPullDown();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _refreshPullDown: function() {\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n move(this._$pullDown, {\r\n top: this._getPullDownHeight()\r\n })\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._$topPocket.toggle(enabled);\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n this._releaseTimeout = setTimeout(function() {\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), 800);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nexport default SwipeDownNativeScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.simulated.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n executeAsync\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar math = Math;\r\nimport {\r\n Scroller,\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar ScrollViewScroller = Scroller.inherit({\r\n ctor: function() {\r\n this._topPocketSize = 0;\r\n this._bottomPocketSize = 0;\r\n this.callBase.apply(this, arguments);\r\n this._initCallbacks();\r\n this._releaseState()\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n each(pullDownTextItems, (function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n }))\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n _updateBounds: function() {\r\n var considerPockets = \"horizontal\" !== this._direction;\r\n if (considerPockets) {\r\n this._topPocketSize = this._$topPocket.get(0).clientHeight;\r\n this._bottomPocketSize = this._$bottomPocket.get(0).clientHeight;\r\n var containerEl = this._$container.get(0);\r\n var contentEl = this._$content.get(0);\r\n var scrollTopMax = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0);\r\n this._bottomBoundary = scrollTopMax - this._topPocketSize - this._bottomPocketSize\r\n }\r\n this.callBase()\r\n },\r\n _updateScrollbar: function() {\r\n this._scrollbar.option({\r\n containerSize: this._containerSize(),\r\n contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n },\r\n _moveContent: function() {\r\n this.callBase();\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else if (this._isReachBottom()) {\r\n this._reachBottomReady()\r\n } else if (this._state !== STATE_RELEASED) {\r\n this._stateReleased()\r\n }\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._topPocketSize + this._location)\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= 0\r\n },\r\n _isReachBottom: function() {\r\n var containerEl = this._$container.get(0);\r\n return this._reachBottomEnabled && Math.round(this._bottomBoundary - Math.ceil(containerEl.scrollTop)) <= 1\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds() && this._state === STATE_READY) {\r\n this._pullDownRefreshing()\r\n } else if (this._inBounds() && this._state === STATE_LOADING) {\r\n this._reachBottomLoading()\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _reachBottomReady: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return -this._topPocketSize\r\n },\r\n _getMinOffset: function() {\r\n return math.min(this.callBase(), -this._topPocketSize)\r\n },\r\n _reachBottomLoading: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._maxOffset = 0;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._releaseState();\r\n this._updateBounds();\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this.releaseCallbacks.fire()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _releaseHandler: function() {\r\n if (this._state === STATE_RELEASED) {\r\n this._moveToBounds()\r\n }\r\n this._update();\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this._releaseTask = executeAsync(this._release.bind(this));\r\n return this._releaseTask.promise\r\n },\r\n _release: function() {\r\n this._stateReleased();\r\n this._scrollComplete()\r\n },\r\n _reachBottomEnablingHandler: function(enabled) {\r\n if (this._reachBottomEnabled === enabled) {\r\n return\r\n }\r\n this._reachBottomEnabled = enabled;\r\n this._updateBounds()\r\n },\r\n _pullDownEnablingHandler: function(enabled) {\r\n if (this._pullDownEnabled === enabled) {\r\n return\r\n }\r\n this._pullDownEnabled = enabled;\r\n this._considerTopPocketChange();\r\n this._updateHandler()\r\n },\r\n _considerTopPocketChange: function() {\r\n this._location -= getHeight(this._$topPocket) || -this._topPocketSize;\r\n this._maxOffset = 0;\r\n this._move()\r\n },\r\n _pendingReleaseHandler: function() {\r\n this._state = STATE_READY\r\n },\r\n dispose: function() {\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this.callBase()\r\n }\r\n});\r\nvar SimulatedScrollViewStrategy = SimulatedStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this._renderPullDown();\r\n this.callBase()\r\n },\r\n _renderPullDown: function() {\r\n var $image = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n var $text = this._$pullDownText = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = $(\"
\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = $(\"
\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = $(\"
\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._eventHandler(\"pullDownEnabling\", enabled)\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._eventHandler(\"reachBottomEnabling\", enabled)\r\n },\r\n _createScroller: function(direction) {\r\n var that = this;\r\n var scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));\r\n scroller.pullDownCallbacks.add((function() {\r\n that.pullDownCallbacks.fire()\r\n }));\r\n scroller.releaseCallbacks.add((function() {\r\n that.releaseCallbacks.fire()\r\n }));\r\n scroller.reachBottomCallbacks.add((function() {\r\n that.reachBottomCallbacks.fire()\r\n }))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return extend(this.callBase(direction), {\r\n $topPocket: this._$topPocket,\r\n $bottomPocket: this._$bottomPocket,\r\n $pullDown: this._$pullDown,\r\n $pullDownText: this._$pullDownText,\r\n $pullingDownText: this._$pullingDownText,\r\n $pulledDownText: this._$pulledDownText,\r\n $refreshingText: this._$refreshingText\r\n })\r\n },\r\n pendingRelease: function() {\r\n this._eventHandler(\"pendingRelease\")\r\n },\r\n release: function() {\r\n return this._eventHandler(\"release\").done(this._updateAction)\r\n },\r\n location: function() {\r\n var location = this.callBase();\r\n location.top += getHeight(this._$topPocket);\r\n return location\r\n },\r\n dispose: function() {\r\n each(this._scrollers, (function() {\r\n this.dispose()\r\n }));\r\n this.callBase()\r\n }\r\n});\r\nexport default SimulatedScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport PullDownStrategy from \"./ui.scroll_view.native.pull_down\";\r\nimport SwipeDownStrategy from \"./ui.scroll_view.native.swipe_down\";\r\nimport SimulatedStrategy from \"./ui.scroll_view.simulated\";\r\nimport Scrollable from \"./ui.scrollable\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n isMaterial\r\n} from \"./../themes\";\r\nimport LoadPanel from \"../load_panel\";\r\nvar SCROLLVIEW_CLASS = \"dx-scrollview\";\r\nvar SCROLLVIEW_CONTENT_CLASS = SCROLLVIEW_CLASS + \"-content\";\r\nvar SCROLLVIEW_TOP_POCKET_CLASS = SCROLLVIEW_CLASS + \"-top-pocket\";\r\nvar SCROLLVIEW_BOTTOM_POCKET_CLASS = SCROLLVIEW_CLASS + \"-bottom-pocket\";\r\nvar SCROLLVIEW_PULLDOWN_CLASS = SCROLLVIEW_CLASS + \"-pull-down\";\r\nvar SCROLLVIEW_REACHBOTTOM_CLASS = SCROLLVIEW_CLASS + \"-scrollbottom\";\r\nvar SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-indicator\";\r\nvar SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-text\";\r\nvar SCROLLVIEW_LOADPANEL = SCROLLVIEW_CLASS + \"-loadpanel\";\r\nvar refreshStrategies = {\r\n pullDown: PullDownStrategy,\r\n swipeDown: SwipeDownStrategy,\r\n simulated: SimulatedStrategy\r\n};\r\nvar isServerSide = !hasWindow();\r\nvar scrollViewServerConfig = {\r\n finishLoading: noop,\r\n release: noop,\r\n refresh: noop,\r\n _optionChanged: function(args) {\r\n if (\"onUpdated\" !== args.name) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n};\r\nvar ScrollView = Scrollable.inherit(isServerSide ? scrollViewServerConfig : {\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n pullingDownText: messageLocalization.format(\"dxScrollView-pullingDownText\"),\r\n pulledDownText: messageLocalization.format(\"dxScrollView-pulledDownText\"),\r\n refreshingText: messageLocalization.format(\"dxScrollView-refreshingText\"),\r\n reachBottomText: messageLocalization.format(\"dxScrollView-reachBottomText\"),\r\n onPullDown: null,\r\n onReachBottom: null,\r\n refreshStrategy: \"pullDown\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = devices.real();\r\n return \"android\" === realDevice.platform\r\n },\r\n options: {\r\n refreshStrategy: \"swipeDown\"\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n reachBottomText: \"\"\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._loadingIndicatorEnabled = true\r\n },\r\n _initScrollableMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(SCROLLVIEW_CLASS);\r\n this._initContent();\r\n this._initTopPocket();\r\n this._initBottomPocket();\r\n this._initLoadPanel()\r\n },\r\n _initContent: function() {\r\n var $content = $(\"
\").addClass(SCROLLVIEW_CONTENT_CLASS);\r\n this._$content.wrapInner($content)\r\n },\r\n _initTopPocket: function() {\r\n var $topPocket = this._$topPocket = $(\"
\").addClass(SCROLLVIEW_TOP_POCKET_CLASS);\r\n var $pullDown = this._$pullDown = $(\"
\").addClass(SCROLLVIEW_PULLDOWN_CLASS);\r\n $topPocket.append($pullDown);\r\n this._$content.prepend($topPocket)\r\n },\r\n _initBottomPocket: function() {\r\n var $bottomPocket = this._$bottomPocket = $(\"
\").addClass(SCROLLVIEW_BOTTOM_POCKET_CLASS);\r\n var $reachBottom = this._$reachBottom = $(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_CLASS);\r\n var $loadContainer = $(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"
\")).$element();\r\n var $text = this._$reachBottomText = $(\"
\").addClass(SCROLLVIEW_REACHBOTTOM_TEXT_CLASS);\r\n this._updateReachBottomText();\r\n $reachBottom.append($loadContainer.append($loadIndicator)).append($text);\r\n $bottomPocket.append($reachBottom);\r\n this._$content.append($bottomPocket)\r\n },\r\n _initLoadPanel: function() {\r\n var $loadPanelElement = $(\"
\").addClass(SCROLLVIEW_LOADPANEL).appendTo(this.$element());\r\n var loadPanelOptions = {\r\n shading: false,\r\n delay: 400,\r\n message: this.option(\"refreshingText\"),\r\n position: {\r\n of: this.$element()\r\n }\r\n };\r\n this._loadPanel = this._createComponent($loadPanelElement, LoadPanel, loadPanelOptions)\r\n },\r\n _updateReachBottomText: function() {\r\n this._$reachBottomText.text(this.option(\"reachBottomText\"))\r\n },\r\n _createStrategy: function() {\r\n var strategyName = this.option(\"useNative\") ? this.option(\"refreshStrategy\") : \"simulated\";\r\n var strategyClass = refreshStrategies[strategyName];\r\n this._strategy = new strategyClass(this);\r\n this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));\r\n this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));\r\n this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))\r\n },\r\n _createActions: function() {\r\n this.callBase();\r\n this._pullDownAction = this._createActionByOption(\"onPullDown\");\r\n this._reachBottomAction = this._createActionByOption(\"onReachBottom\");\r\n this._tryRefreshPocketState()\r\n },\r\n _tryRefreshPocketState: function() {\r\n this._pullDownEnable(this.hasActionSubscription(\"onPullDown\"));\r\n this._reachBottomEnable(this.hasActionSubscription(\"onReachBottom\"))\r\n },\r\n on: function(eventName) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (\"pullDown\" === eventName || \"reachBottom\" === eventName) {\r\n this._tryRefreshPocketState()\r\n }\r\n return result\r\n },\r\n _pullDownEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._pullDownEnabled\r\n }\r\n if (this._$pullDown && this._strategy) {\r\n this._$pullDown.toggle(enabled);\r\n this._strategy.pullDownEnable(enabled);\r\n this._pullDownEnabled = enabled\r\n }\r\n },\r\n _reachBottomEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._reachBottomEnabled\r\n }\r\n if (this._$reachBottom && this._strategy) {\r\n this._$reachBottom.toggle(enabled);\r\n this._strategy.reachBottomEnable(enabled);\r\n this._reachBottomEnabled = enabled\r\n }\r\n },\r\n _pullDownHandler: function() {\r\n this._loadingIndicator(false);\r\n this._pullDownLoading()\r\n },\r\n _loadingIndicator: function(value) {\r\n if (arguments.length < 1) {\r\n return this._loadingIndicatorEnabled\r\n }\r\n this._loadingIndicatorEnabled = value\r\n },\r\n _pullDownLoading: function() {\r\n this.startLoading();\r\n this._pullDownAction()\r\n },\r\n _reachBottomHandler: function() {\r\n this._loadingIndicator(false);\r\n this._reachBottomLoading()\r\n },\r\n _reachBottomLoading: function() {\r\n this.startLoading();\r\n this._reachBottomAction()\r\n },\r\n _releaseHandler: function() {\r\n this.finishLoading();\r\n this._loadingIndicator(true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onPullDown\":\r\n case \"onReachBottom\":\r\n this._createActions();\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"refreshStrategy\":\r\n this._invalidate();\r\n break;\r\n case \"reachBottomText\":\r\n this._updateReachBottomText();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content.children().eq(1))\r\n },\r\n release: function(preventReachBottom) {\r\n if (void 0 !== preventReachBottom) {\r\n this.toggleLoading(!preventReachBottom)\r\n }\r\n return this._strategy.release()\r\n },\r\n toggleLoading: function(showOrHide) {\r\n this._reachBottomEnable(showOrHide)\r\n },\r\n refresh: function() {\r\n if (!this.hasActionSubscription(\"onPullDown\")) {\r\n return\r\n }\r\n this._strategy.pendingRelease();\r\n this._pullDownLoading()\r\n },\r\n startLoading: function() {\r\n if (this._loadingIndicator() && this.$element().is(\":visible\")) {\r\n this._loadPanel.show()\r\n }\r\n this._lock()\r\n },\r\n finishLoading: function() {\r\n this._loadPanel.hide();\r\n this._unlock()\r\n },\r\n _dispose: function() {\r\n this._strategy.dispose();\r\n this.callBase();\r\n if (this._loadPanel) {\r\n this._loadPanel.$element().remove()\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxScrollView\", ScrollView);\r\nexport default ScrollView;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ScrollView from \"./scroll_view/ui.scroll_view\";\r\nexport default ScrollView;\r\n","/**\r\n * DevExtreme (esm/ui/shared/grouped_data_converter_mixin.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"../../core/utils/type\";\r\nvar isCorrectStructure = data => Array.isArray(data) && data.every(item => {\r\n var hasTwoFields = 2 === Object.keys(item).length;\r\n var hasCorrectFields = \"key\" in item && \"items\" in item;\r\n return hasTwoFields && hasCorrectFields && Array.isArray(item.items)\r\n});\r\nexport default {\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n var hasSimpleItems = false;\r\n var data = {};\r\n if (this._getGroupedOption() && isCorrectStructure(dataSource)) {\r\n data = dataSource.reduce((accumulator, item) => {\r\n var items = item.items.map(innerItem => {\r\n if (!isObject(innerItem)) {\r\n innerItem = {\r\n text: innerItem\r\n };\r\n hasSimpleItems = true\r\n }\r\n if (!(\"key\" in innerItem)) {\r\n innerItem.key = item.key\r\n }\r\n return innerItem\r\n });\r\n return accumulator.concat(items)\r\n }, []);\r\n dataSource = {\r\n store: {\r\n type: \"array\",\r\n data: data\r\n },\r\n group: {\r\n selector: \"key\",\r\n keepInitialKeyOrder: true\r\n }\r\n };\r\n if (hasSimpleItems) {\r\n dataSource.searchExpr = \"text\"\r\n }\r\n }\r\n return dataSource\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/utils/get_updated_options.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isPlainObject,\r\n type\r\n} from \"../../../../core/utils/type\";\r\nvar defaultNotDeepCopyArrays = [\"dataSource\", \"selectedRowKeys\"];\r\nvar propsToIgnore = {\r\n integrationOptions: true\r\n};\r\n\r\nfunction getDiffItem(key, value, previousValue) {\r\n return {\r\n path: key,\r\n value: value,\r\n previousValue: previousValue\r\n }\r\n}\r\n\r\nfunction compare(resultPaths, item1, item2, key, fullPropName, notDeepCopyArrays) {\r\n if (propsToIgnore[key]) {\r\n return\r\n }\r\n var type1 = type(item1);\r\n var type2 = type(item2);\r\n if (item1 === item2) {\r\n return\r\n }\r\n if (type1 !== type2) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else if (\"object\" === type1) {\r\n if (!isPlainObject(item2)) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else {\r\n var diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays);\r\n resultPaths.push(...diffPaths.map(item => _extends({}, item, {\r\n path: \"\".concat(key, \".\").concat(item.path)\r\n })))\r\n }\r\n } else if (\"array\" === type1) {\r\n var notDeepCopy = notDeepCopyArrays.some(prop => fullPropName.includes(prop));\r\n if (notDeepCopy && item1 !== item2) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else if (item1.length !== item2.length) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else {\r\n var _diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays);\r\n [].push.apply(resultPaths, _diffPaths.map(item => _extends({}, item, {\r\n path: \"\".concat(key).concat(item.path)\r\n })))\r\n }\r\n } else {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n }\r\n}\r\nvar objectDiffsFiltered = propsEnumerator => (oldProps, props, fullPropName, notDeepCopyArrays) => {\r\n var resultPaths = [];\r\n var processItem = !Array.isArray(oldProps) ? propName => {\r\n compare(resultPaths, oldProps[propName], props[propName], propName, \"\".concat(fullPropName, \".\").concat(propName), notDeepCopyArrays)\r\n } : propName => {\r\n compare(resultPaths, oldProps[propName], props[propName], \"[\".concat(propName, \"]\"), \"\".concat(fullPropName, \".\").concat(propName), notDeepCopyArrays)\r\n };\r\n propsEnumerator(oldProps).forEach(processItem);\r\n Object.keys(props).filter(propName => !Object.prototype.hasOwnProperty.call(oldProps, propName) && oldProps[propName] !== props[propName]).forEach(propName => {\r\n resultPaths.push({\r\n path: propName,\r\n value: props[propName],\r\n previousValue: oldProps[propName]\r\n })\r\n });\r\n return resultPaths\r\n};\r\nvar objectDiffs = objectDiffsFiltered(oldProps => Object.keys(oldProps));\r\nvar reactProps = {\r\n key: true,\r\n ref: true,\r\n children: true,\r\n style: true\r\n};\r\nvar objectDiffsWithoutReactProps = objectDiffsFiltered(prop => Object.keys(prop).filter(p => !reactProps[p]));\r\nexport function getUpdatedOptions(oldProps, props) {\r\n var notDeepCopyArrays = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : defaultNotDeepCopyArrays;\r\n return objectDiffsWithoutReactProps(oldProps, props, \"\", notDeepCopyArrays)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/dom_component_wrapper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"valueChange\"],\r\n _excluded2 = [\"componentProps\", \"componentType\", \"rootElementRef\", \"templateNames\"];\r\nimport {\r\n createVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n renderTemplate,\r\n hasTemplate\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n ConfigContext\r\n} from \"../../common/config_context\";\r\nimport {\r\n getUpdatedOptions\r\n} from \"./utils/get_updated_options\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n componentProps: {\r\n className: className\r\n }\r\n },\r\n restAttributes: restAttributes,\r\n widgetRef: widgetRef\r\n } = _ref;\r\n return normalizeProps(createVNode(1, \"div\", className, null, 1, _extends({}, restAttributes), null, widgetRef))\r\n};\r\nexport var DomComponentWrapperProps = {};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class DomComponentWrapper extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.widgetRef = infernoCreateRef();\r\n this.getInstance = this.getInstance.bind(this);\r\n this.setupWidget = this.setupWidget.bind(this);\r\n this.setRootElementRef = this.setRootElementRef.bind(this);\r\n this.updateWidget = this.updateWidget.bind(this)\r\n }\r\n get config() {\r\n if (\"ConfigContext\" in this.context) {\r\n return this.context.ConfigContext\r\n }\r\n return ConfigContext\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setupWidget, []), new InfernoEffect(this.setRootElementRef, []), new InfernoEffect(this.updateWidget, [this.props.componentProps, this.config, this.props.templateNames])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[2]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.componentProps, this.config, this.props.templateNames])\r\n }\r\n setupWidget() {\r\n var componentInstance = new this.props.componentType(this.widgetRef.current, this.properties);\r\n this.instance = componentInstance;\r\n return () => {\r\n componentInstance.dispose();\r\n this.instance = null\r\n }\r\n }\r\n setRootElementRef() {\r\n var {\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.widgetRef.current\r\n }\r\n }\r\n updateWidget() {\r\n var instance = this.getInstance();\r\n if (!instance) {\r\n return\r\n }\r\n var updatedOptions = getUpdatedOptions(this.prevProps || {}, this.properties);\r\n if (updatedOptions.length) {\r\n instance.beginUpdate();\r\n updatedOptions.forEach(_ref2 => {\r\n var {\r\n path: path,\r\n value: value\r\n } = _ref2;\r\n instance.option(path, value)\r\n });\r\n instance.endUpdate()\r\n }\r\n this.prevProps = this.properties\r\n }\r\n get properties() {\r\n var _this$config;\r\n var _this$props$component = this.props.componentProps,\r\n {\r\n valueChange: valueChange\r\n } = _this$props$component,\r\n restProps = _objectWithoutPropertiesLoose(_this$props$component, _excluded);\r\n var properties = _extends({\r\n rtlEnabled: !!(null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled)\r\n }, restProps);\r\n if (valueChange) {\r\n properties.onValueChanged = _ref3 => {\r\n var {\r\n value: value\r\n } = _ref3;\r\n return valueChange(value)\r\n }\r\n }\r\n var templates = this.props.templateNames;\r\n templates.forEach(name => {\r\n if (hasTemplate(name, properties, this)) {\r\n properties[name] = (item, index, container) => {\r\n renderTemplate(this.props.componentProps[name], {\r\n item: item,\r\n index: index,\r\n container: container\r\n }, this)\r\n }\r\n }\r\n });\r\n return properties\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2);\r\n return restProps\r\n }\r\n getInstance() {\r\n return this.instance\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n widgetRef: this.widgetRef,\r\n config: this.config,\r\n properties: this.properties,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDomComponentWrapper.defaultProps = DomComponentWrapperProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_relative_offset.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function getRelativeOffset(targetElementClass, sourceElement) {\r\n var offset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var element = sourceElement;\r\n while (null !== (_element = element) && void 0 !== _element && _element.offsetParent && !element.classList.contains(targetElementClass)) {\r\n var _element;\r\n var parentElement = element.offsetParent;\r\n var elementRect = element.getBoundingClientRect();\r\n var parentElementRect = parentElement.getBoundingClientRect();\r\n offset.left += elementRect.left - parentElementRect.left;\r\n offset.top += elementRect.top - parentElementRect.top;\r\n element = element.offsetParent\r\n }\r\n return offset\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../../events/swipe\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar SWIPE_START_EVENT_NAME = addNamespace(swipeEventStart, LIST_EDIT_DECORATOR);\r\nvar SWIPE_UPDATE_EVENT_NAME = addNamespace(swipeEventSwipe, LIST_EDIT_DECORATOR);\r\nvar SWIPE_END_EVENT_NAME = addNamespace(swipeEventEnd, LIST_EDIT_DECORATOR);\r\nvar EditDecorator = Class.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._init()\r\n },\r\n _init: noop,\r\n _shouldHandleSwipe: false,\r\n _attachSwipeEvent: function(config) {\r\n var swipeConfig = {\r\n itemSizeFunc: function() {\r\n if (this._clearSwipeCache) {\r\n this._itemWidthCache = getWidth(this._list.$element());\r\n this._clearSwipeCache = false\r\n }\r\n return this._itemWidthCache\r\n }.bind(this)\r\n };\r\n eventsEngine.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this));\r\n eventsEngine.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this));\r\n eventsEngine.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeStartHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n clearTimeout(this._list._inkRippleTimer);\r\n this._swipeStartHandler($itemElement, e)\r\n },\r\n _itemSwipeUpdateHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n this._swipeUpdateHandler($itemElement, e)\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n this._swipeEndHandler($itemElement, e);\r\n this._clearSwipeCache = true\r\n },\r\n beforeBag: noop,\r\n afterBag: noop,\r\n _commonOptions: function() {\r\n return {\r\n activeStateEnabled: this._list.option(\"activeStateEnabled\"),\r\n hoverStateEnabled: this._list.option(\"hoverStateEnabled\"),\r\n focusStateEnabled: this._list.option(\"focusStateEnabled\")\r\n }\r\n },\r\n modifyElement: function(config) {\r\n if (this._shouldHandleSwipe) {\r\n this._attachSwipeEvent(config);\r\n this._clearSwipeCache = true\r\n }\r\n },\r\n afterRender: noop,\r\n handleClick: noop,\r\n handleKeyboardEvents: noop,\r\n handleEnterPressing: noop,\r\n handleContextMenu: noop,\r\n _swipeStartHandler: noop,\r\n _swipeUpdateHandler: noop,\r\n _swipeEndHandler: noop,\r\n visibilityChange: noop,\r\n getExcludedSelectors: noop,\r\n dispose: noop\r\n});\r\nexport default EditDecorator;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/common/consts.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var SCROLL_LINE_HEIGHT = 40;\r\nexport var DIRECTION_VERTICAL = \"vertical\";\r\nexport var DIRECTION_HORIZONTAL = \"horizontal\";\r\nexport var DIRECTION_BOTH = \"both\";\r\nexport var SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nexport var SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nexport var SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nexport var SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nexport var SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nexport var SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nexport var SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nexport var SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nexport var SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nexport var SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"dx-scrollable-scrollbar-active\";\r\nexport var SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nexport var SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nexport var HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nexport var SCROLLVIEW_CONTENT_CLASS = \"dx-scrollview-content\";\r\nexport var SCROLLVIEW_TOP_POCKET_CLASS = \"dx-scrollview-top-pocket\";\r\nexport var SCROLLVIEW_PULLDOWN = \"dx-scrollview-pull-down\";\r\nexport var SCROLLVIEW_PULLDOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nexport var SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nexport var SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nexport var SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nexport var SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nexport var SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nexport var PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nexport var SCROLLVIEW_BOTTOM_POCKET_CLASS = \"dx-scrollview-bottom-pocket\";\r\nexport var SCROLLVIEW_REACHBOTTOM_CLASS = \"dx-scrollview-scrollbottom\";\r\nexport var SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = \"dx-scrollview-scrollbottom-indicator\";\r\nexport var SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = \"dx-scrollview-scrollbottom-text\";\r\nexport var TopPocketState = {\r\n STATE_RELEASED: 0,\r\n STATE_READY: 1,\r\n STATE_REFRESHING: 2,\r\n STATE_LOADING: 3,\r\n STATE_TOUCHED: 4,\r\n STATE_PULLED: 5\r\n};\r\nexport var ShowScrollbarMode = {\r\n HOVER: \"onHover\",\r\n ALWAYS: \"always\",\r\n NEVER: \"never\",\r\n SCROLL: \"onScroll\"\r\n};\r\nexport var 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};\r\nexport var VALIDATE_WHEEL_TIMEOUT = 500;\r\nexport var HIDE_SCROLLBAR_TIMEOUT = 500;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.native.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDxMouseWheelEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport devices from \"../../core/devices\";\r\nimport Class from \"../../core/class\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nvar SCROLLABLE_NATIVE = \"dxNativeScrollable\";\r\nvar SCROLLABLE_NATIVE_CLASS = \"dx-scrollable-native\";\r\nvar SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar HIDE_SCROLLBAR_TIMEOUT = 500;\r\nvar NativeStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = $(scrollable.container());\r\n this._$content = scrollable.$content();\r\n this._direction = scrollable.option(\"direction\");\r\n this._useSimulatedScrollbar = scrollable.option(\"useSimulatedScrollbar\");\r\n this.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._getMaxOffset = scrollable._getMaxOffset.bind(scrollable);\r\n this._isRtlNativeStrategy = scrollable._isRtlNativeStrategy.bind(scrollable)\r\n },\r\n render: function() {\r\n var device = devices.real();\r\n var deviceType = device.platform;\r\n this._$element.addClass(SCROLLABLE_NATIVE_CLASS).addClass(SCROLLABLE_NATIVE_CLASS + \"-\" + deviceType).toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this._isScrollbarVisible());\r\n if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {\r\n this._renderScrollbars()\r\n }\r\n },\r\n updateRtlPosition: function(isFirstRender) {\r\n if (isFirstRender && this.option(\"rtlEnabled\")) {\r\n if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {\r\n this._moveScrollbars()\r\n }\r\n }\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 Scrollbar($(\"
\").appendTo(this._$element), {\r\n direction: direction,\r\n expandable: this._component.option(\"scrollByThumb\")\r\n })\r\n },\r\n handleInit: noop,\r\n handleStart: noop,\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._allowedDirection()) {\r\n e.originalEvent.isScrollingEvent = true\r\n }\r\n },\r\n handleEnd: noop,\r\n handleCancel: noop,\r\n handleStop: noop,\r\n _eachScrollbar: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollbars || {}, (function(direction, scrollbar) {\r\n callback(scrollbar, direction)\r\n }))\r\n },\r\n createActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._updateAction = this._createActionByOption(\"onUpdated\")\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n left: left,\r\n top: top\r\n } = this.location();\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._getScrollOffset(),\r\n reachedLeft: this._isRtlNativeStrategy() ? this._isReachedRight(-left) : this._isReachedLeft(left),\r\n reachedRight: this._isRtlNativeStrategy() ? this._isReachedLeft(-Math.abs(left)) : this._isReachedRight(left),\r\n reachedTop: this._isDirection(VERTICAL) ? Math.round(top) >= 0 : void 0,\r\n reachedBottom: this._isDirection(VERTICAL) ? Math.round(Math.abs(top) - this._getMaxOffset().top) >= 0 : void 0\r\n }\r\n },\r\n _getScrollOffset: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this.location();\r\n return {\r\n top: -top,\r\n left: this._normalizeOffsetLeft(-left)\r\n }\r\n },\r\n _normalizeOffsetLeft(scrollLeft) {\r\n if (this._isRtlNativeStrategy()) {\r\n return this._getMaxOffset().left + scrollLeft\r\n }\r\n return scrollLeft\r\n },\r\n _isReachedLeft: function(left) {\r\n return this._isDirection(HORIZONTAL) ? Math.round(left) >= 0 : void 0\r\n },\r\n _isReachedRight: function(left) {\r\n return this._isDirection(HORIZONTAL) ? Math.round(Math.abs(left) - this._getMaxOffset().left) >= 0 : void 0\r\n },\r\n _isScrollbarVisible: function() {\r\n var {\r\n showScrollbar: showScrollbar\r\n } = this.option();\r\n return \"never\" !== showScrollbar && false !== showScrollbar\r\n },\r\n handleScroll: function(e) {\r\n this._eventForUserAction = e;\r\n this._moveScrollbars();\r\n this._scrollAction(this._createActionArgs())\r\n },\r\n _moveScrollbars: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this._getScrollOffset();\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.moveTo({\r\n top: -top,\r\n left: -left\r\n });\r\n scrollbar.option(\"visible\", true)\r\n }));\r\n this._hideScrollbars()\r\n },\r\n _hideScrollbars: function() {\r\n clearTimeout(this._hideScrollbarTimeout);\r\n this._hideScrollbarTimeout = setTimeout(function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.option(\"visible\", false)\r\n }))\r\n }.bind(this), HIDE_SCROLLBAR_TIMEOUT)\r\n },\r\n location: function() {\r\n return {\r\n left: -this._$container.scrollLeft(),\r\n top: -this._$container.scrollTop()\r\n }\r\n },\r\n disabledChanged: noop,\r\n update: function() {\r\n this._update();\r\n this._updateAction(this._createActionArgs())\r\n },\r\n _update: function() {\r\n this._updateDimensions();\r\n this._updateScrollbars()\r\n },\r\n _updateDimensions: function() {\r\n this._containerSize = {\r\n height: getHeight(this._$container),\r\n width: getWidth(this._$container)\r\n };\r\n this._componentContentSize = {\r\n height: getHeight(this._component.$content()),\r\n width: getWidth(this._component.$content())\r\n };\r\n this._contentSize = {\r\n height: getHeight(this._$content),\r\n width: getWidth(this._$content)\r\n }\r\n },\r\n _updateScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar, direction) {\r\n var dimension = direction === VERTICAL ? \"height\" : \"width\";\r\n scrollbar.option({\r\n containerSize: this._containerSize[dimension],\r\n contentSize: this._componentContentSize[dimension]\r\n });\r\n scrollbar.update()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n return {\r\n vertical: this._isDirection(VERTICAL) && this._contentSize.height > this._containerSize.height,\r\n horizontal: this._isDirection(HORIZONTAL) && this._contentSize.width > this._containerSize.width\r\n }\r\n },\r\n dispose: function() {\r\n var className = this._$element.get(0).className;\r\n var scrollableNativeRegexp = new RegExp(SCROLLABLE_NATIVE_CLASS + \"\\\\S*\", \"g\");\r\n if (scrollableNativeRegexp.test(className)) {\r\n this._$element.removeClass(className.match(scrollableNativeRegexp).join(\" \"))\r\n }\r\n eventsEngine.off(this._$element, \".\" + SCROLLABLE_NATIVE);\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE_NATIVE);\r\n this._removeScrollbars();\r\n clearTimeout(this._hideScrollbarTimeout)\r\n },\r\n _removeScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.$element().remove()\r\n }))\r\n },\r\n scrollBy: function(distance) {\r\n var location = this.location();\r\n this._$container.scrollTop(Math.round(-location.top - distance.top));\r\n this._$container.scrollLeft(Math.round(-location.left - distance.left))\r\n },\r\n validate: function(e) {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (isDxMouseWheelEvent(e) && this._isScrolledInMaxDirection(e)) {\r\n return false\r\n }\r\n return !!this._allowedDirection()\r\n },\r\n _isScrolledInMaxDirection(e) {\r\n var container = this._$container.get(0);\r\n var result;\r\n if (e.delta > 0) {\r\n result = e.shiftKey ? !container.scrollLeft : !container.scrollTop\r\n } else if (e.shiftKey) {\r\n result = container.scrollLeft >= this._getMaxOffset().left\r\n } else {\r\n result = container.scrollTop >= this._getMaxOffset().top\r\n }\r\n return result\r\n },\r\n getDirection: function() {\r\n return this._allowedDirection()\r\n }\r\n});\r\nexport default NativeStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollbar.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport readyCallback from \"../../core/utils/ready_callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferRenderer\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nvar SCROLLBAR = \"dxScrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"\".concat(SCROLLABLE_SCROLLBAR_CLASS, \"-active\");\r\nvar SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nvar SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nvar HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar THUMB_MIN_SIZE = 15;\r\nvar SCROLLBAR_VISIBLE = {\r\n onScroll: \"onScroll\",\r\n onHover: \"onHover\",\r\n always: \"always\",\r\n never: \"never\"\r\n};\r\nvar activeScrollbar = null;\r\nvar Scrollbar = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n direction: null,\r\n visible: false,\r\n activeStateEnabled: false,\r\n visibilityMode: SCROLLBAR_VISIBLE.onScroll,\r\n containerSize: 0,\r\n contentSize: 0,\r\n expandable: true,\r\n scaleRatio: 1\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._isHovered = false\r\n },\r\n _initMarkup: function() {\r\n this._renderThumb();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderDirection();\r\n this._update();\r\n this._attachPointerDownHandler();\r\n this.option(\"hoverStateEnabled\", this._isHoverMode());\r\n this.$element().toggleClass(HOVER_ENABLED_STATE, this.option(\"hoverStateEnabled\"))\r\n },\r\n _renderThumb: function() {\r\n this._$thumb = $(\"
\").addClass(SCROLLABLE_SCROLL_CLASS);\r\n $(\"
\").addClass(SCROLLABLE_SCROLL_CONTENT_CLASS).appendTo(this._$thumb);\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_CLASS).append(this._$thumb)\r\n },\r\n isThumb: function($element) {\r\n return !!this.$element().find($element).length\r\n },\r\n _isHoverMode: function() {\r\n var visibilityMode = this.option(\"visibilityMode\");\r\n return (visibilityMode === SCROLLBAR_VISIBLE.onHover || visibilityMode === SCROLLBAR_VISIBLE.always) && this.option(\"expandable\")\r\n },\r\n _renderDirection: function() {\r\n var direction = this.option(\"direction\");\r\n this.$element().addClass(\"dx-scrollbar-\" + direction);\r\n this._dimension = direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._prop = direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _attachPointerDownHandler: function() {\r\n eventsEngine.on(this._$thumb, addNamespace(pointerEvents.down, SCROLLBAR), this.feedbackOn.bind(this))\r\n },\r\n feedbackOn: function() {\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = this\r\n },\r\n feedbackOff: function() {\r\n this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = null\r\n },\r\n cursorEnter: function() {\r\n this._isHovered = true;\r\n if (this._needScrollbar()) {\r\n this.option(\"visible\", true)\r\n }\r\n },\r\n cursorLeave: function() {\r\n this._isHovered = false;\r\n this.option(\"visible\", false)\r\n },\r\n _renderDimensions: function() {\r\n this._$thumb.css({\r\n width: this.option(\"width\"),\r\n height: this.option(\"height\")\r\n })\r\n },\r\n _toggleVisibility: function(visible) {\r\n if (this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.onScroll) {\r\n this._$thumb.css(\"opacity\")\r\n }\r\n visible = this._adjustVisibility(visible);\r\n this.option().visible = visible;\r\n this._$thumb.toggleClass(\"dx-state-invisible\", !visible)\r\n },\r\n _adjustVisibility: function(visible) {\r\n if (this._baseContainerToContentRatio && !this._needScrollbar()) {\r\n return false\r\n }\r\n switch (this.option(\"visibilityMode\")) {\r\n case SCROLLBAR_VISIBLE.onScroll:\r\n break;\r\n case SCROLLBAR_VISIBLE.onHover:\r\n visible = visible || !!this._isHovered;\r\n break;\r\n case SCROLLBAR_VISIBLE.never:\r\n visible = false;\r\n break;\r\n case SCROLLBAR_VISIBLE.always:\r\n visible = true\r\n }\r\n return visible\r\n },\r\n moveTo: function(location) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n if (isPlainObject(location)) {\r\n location = location[this._prop] || 0\r\n }\r\n var scrollBarLocation = {};\r\n scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);\r\n move(this._$thumb, scrollBarLocation)\r\n },\r\n _calculateScrollBarPosition: function(location) {\r\n return -location * this._thumbRatio\r\n },\r\n _update: function() {\r\n var containerSize = Math.round(this.option(\"containerSize\"));\r\n var contentSize = Math.round(this.option(\"contentSize\"));\r\n var baseContainerSize = Math.round(this.option(\"baseContainerSize\"));\r\n var baseContentSize = Math.round(this.option(\"baseContentSize\"));\r\n if (isNaN(baseContainerSize)) {\r\n baseContainerSize = containerSize;\r\n baseContentSize = contentSize\r\n }\r\n this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;\r\n this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;\r\n var thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), THUMB_MIN_SIZE));\r\n this._thumbRatio = (containerSize - thumbSize) / (this.option(\"scaleRatio\") * (contentSize - containerSize));\r\n this.option(this._dimension, thumbSize / this.option(\"scaleRatio\"));\r\n this.$element().css(\"display\", this._needScrollbar() ? \"\" : \"none\")\r\n },\r\n _isHidden: function() {\r\n return this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.never\r\n },\r\n _needScrollbar: function() {\r\n return !this._isHidden() && this._baseContainerToContentRatio < 1\r\n },\r\n containerToContentRatio: function() {\r\n return this._realContainerToContentRatio\r\n },\r\n _normalizeSize: function(size) {\r\n return isPlainObject(size) ? size[this._dimension] || 0 : size\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n if (this === activeScrollbar) {\r\n activeScrollbar = null\r\n }\r\n eventsEngine.off(this._$thumb, \".\" + SCROLLBAR)\r\n },\r\n _optionChanged: function(args) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"containerSize\":\r\n case \"contentSize\":\r\n this.option()[args.name] = this._normalizeSize(args.value);\r\n this._update();\r\n break;\r\n case \"baseContentSize\":\r\n case \"baseContainerSize\":\r\n this._update();\r\n break;\r\n case \"visibilityMode\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"scaleRatio\":\r\n this._update();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n update: deferRenderer((function() {\r\n this._adjustVisibility() && this.option(\"visible\", true)\r\n }))\r\n});\r\nreadyCallback.add((function() {\r\n eventsEngine.subscribeGlobal(domAdapter.getDocument(), addNamespace(pointerEvents.up, SCROLLBAR), (function() {\r\n if (activeScrollbar) {\r\n activeScrollbar.feedbackOff()\r\n }\r\n }))\r\n}));\r\nexport default Scrollbar;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.strategy.grouped.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport storeHelper from \"../../data/store_helper\";\r\nimport query from \"../../data/query\";\r\nimport EditStrategy from \"../collection/ui.collection_widget.edit.strategy.plain\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar SELECTION_SHIFT = 20;\r\nvar SELECTION_MASK = (1 << SELECTION_SHIFT) - 1;\r\nvar combineIndex = function(indices) {\r\n return (indices.group << SELECTION_SHIFT) + indices.item\r\n};\r\nvar splitIndex = function(combinedIndex) {\r\n return {\r\n group: combinedIndex >> SELECTION_SHIFT,\r\n item: combinedIndex & SELECTION_MASK\r\n }\r\n};\r\nvar GroupedEditStrategy = EditStrategy.inherit({\r\n _groupElements: function() {\r\n return this._collectionWidget._itemContainer().find(\".\" + LIST_GROUP_CLASS)\r\n },\r\n _groupItemElements: function($group) {\r\n return $group.find(\".\" + LIST_ITEM_CLASS)\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var groups = this._collectionWidget.option(\"items\");\r\n var index = false;\r\n if (!itemData) {\r\n return false\r\n }\r\n if (itemData.items && itemData.items.length) {\r\n itemData = itemData.items[0]\r\n }\r\n each(groups, (function(groupIndex, group) {\r\n if (!group.items) {\r\n return false\r\n }\r\n each(group.items, (function(itemIndex, item) {\r\n if (item !== itemData) {\r\n return true\r\n }\r\n index = {\r\n group: groupIndex,\r\n item: itemIndex\r\n };\r\n return false\r\n }));\r\n if (index) {\r\n return false\r\n }\r\n }));\r\n return index\r\n },\r\n getItemDataByIndex: function(index) {\r\n var items = this._collectionWidget.option(\"items\");\r\n if (isNumeric(index)) {\r\n return this.itemsGetter()[index]\r\n }\r\n return index && items[index.group] && items[index.group].items[index.item] || null\r\n },\r\n itemsGetter: function() {\r\n var resultItems = [];\r\n var items = this._collectionWidget.option(\"items\");\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n resultItems = resultItems.concat(items[i].items)\r\n } else {\r\n resultItems.push(items[i])\r\n }\r\n }\r\n return resultItems\r\n },\r\n deleteItemAtIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var itemGroup = this._collectionWidget.option(\"items\")[indices.group].items;\r\n itemGroup.splice(indices.item, 1)\r\n },\r\n getKeysByItems: function(items) {\r\n var plainItems = [];\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n var result = [];\r\n for (i = 0; i < plainItems.length; i++) {\r\n result.push(this._collectionWidget.keyOf(plainItems[i]))\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key, items) {\r\n var groups = items || this._collectionWidget.option(\"items\");\r\n var index = -1;\r\n var that = this;\r\n each(groups, (function(groupIndex, group) {\r\n if (!group.items) {\r\n return\r\n }\r\n each(group.items, (function(itemIndex, item) {\r\n var itemKey = that._collectionWidget.keyOf(item);\r\n if (that._equalKeys(itemKey, key)) {\r\n index = {\r\n group: groupIndex,\r\n item: itemIndex\r\n };\r\n return false\r\n }\r\n }));\r\n if (-1 !== index) {\r\n return false\r\n }\r\n }));\r\n return index\r\n },\r\n _getGroups: function(items) {\r\n var dataSource = this._collectionWidget.getDataSource();\r\n var group = dataSource && dataSource.group();\r\n if (group) {\r\n return storeHelper.queryByOptions(query(items), {\r\n group: group\r\n }).toArray()\r\n }\r\n return this._collectionWidget.option(\"items\")\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n var result = [];\r\n var groups = this._getGroups(items);\r\n var groupItemByKeyMap = {};\r\n var getItemMeta = key => {\r\n var index = this.getIndexByKey(key, groups);\r\n var group = index && groups[index.group];\r\n if (!group) {\r\n return\r\n }\r\n return {\r\n groupKey: group.key,\r\n item: group.items[index.item]\r\n }\r\n };\r\n each(keys, (function(_, key) {\r\n var itemMeta = getItemMeta(key);\r\n if (!itemMeta) {\r\n return\r\n }\r\n var groupKey = itemMeta.groupKey;\r\n var item = itemMeta.item;\r\n var selectedGroup = groupItemByKeyMap[groupKey];\r\n if (!selectedGroup) {\r\n selectedGroup = {\r\n key: groupKey,\r\n items: []\r\n };\r\n groupItemByKeyMap[groupKey] = selectedGroup;\r\n result.push(selectedGroup)\r\n }\r\n selectedGroup.items.push(item)\r\n }));\r\n return result\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._collectionWidget.option(\"items\");\r\n var movingIndices = splitIndex(movingIndex);\r\n var destinationIndices = splitIndex(destinationIndex);\r\n var movingItemGroup = items[movingIndices.group].items;\r\n var destinationItemGroup = items[destinationIndices.group].items;\r\n var movedItemData = movingItemGroup[movingIndices.item];\r\n movingItemGroup.splice(movingIndices.item, 1);\r\n destinationItemGroup.splice(destinationIndices.item, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return index && isNumeric(index.group) && isNumeric(index.item)\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n var $item = $(itemElement);\r\n var $group = $item.closest(\".\" + LIST_GROUP_CLASS);\r\n if (!$group.length) {\r\n return -1\r\n }\r\n return combineIndex({\r\n group: this._groupElements().index($group),\r\n item: this._groupItemElements($group).index($item)\r\n })\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return combineIndex(index)\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return splitIndex(index)\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var $group = this._groupElements().eq(indices.group);\r\n return this._groupItemElements($group).eq(indices.item)\r\n },\r\n _itemsFromSameParent: function(firstIndex, secondIndex) {\r\n return splitIndex(firstIndex).group === splitIndex(secondIndex).group\r\n }\r\n});\r\nexport default GroupedEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.provider.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n registry\r\n} from \"./ui.list.edit.decorator_registry\";\r\nvar editOptionsRegistry = [];\r\nvar registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) {\r\n editOptionsRegistry.push({\r\n enabled: enabledFunc,\r\n decoratorType: decoratorTypeFunc,\r\n decoratorSubType: decoratorSubTypeFunc\r\n })\r\n};\r\nregisterOption((function() {\r\n return this.option(\"menuItems\").length\r\n}), (function() {\r\n return \"menu\"\r\n}), (function() {\r\n return this.option(\"menuMode\")\r\n}));\r\nregisterOption((function() {\r\n return !this.option(\"menuItems\").length && this.option(\"allowItemDeleting\")\r\n}), (function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n return \"toggle\" === mode || \"slideButton\" === mode || \"swipe\" === mode || \"static\" === mode ? \"delete\" : \"menu\"\r\n}), (function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n if (\"slideItem\" === mode) {\r\n mode = \"slide\"\r\n }\r\n return mode\r\n}));\r\nregisterOption((function() {\r\n return \"none\" !== this.option(\"selectionMode\") && this.option(\"showSelectionControls\")\r\n}), (function() {\r\n return \"selection\"\r\n}), (function() {\r\n return \"default\"\r\n}));\r\nregisterOption((function() {\r\n return this.option(\"itemDragging.allowReordering\") || this.option(\"itemDragging.allowDropInsideItem\") || this.option(\"itemDragging.group\")\r\n}), (function() {\r\n return \"reorder\"\r\n}), (function() {\r\n return \"default\"\r\n}));\r\nvar LIST_ITEM_BEFORE_BAG_CLASS = \"dx-list-item-before-bag\";\r\nvar LIST_ITEM_AFTER_BAG_CLASS = \"dx-list-item-after-bag\";\r\nvar DECORATOR_BEFORE_BAG_CREATE_METHOD = \"beforeBag\";\r\nvar DECORATOR_AFTER_BAG_CREATE_METHOD = \"afterBag\";\r\nvar DECORATOR_MODIFY_ELEMENT_METHOD = \"modifyElement\";\r\nvar DECORATOR_AFTER_RENDER_METHOD = \"afterRender\";\r\nvar DECORATOR_GET_EXCLUDED_SELECTORS_METHOD = \"getExcludedSelectors\";\r\nvar EditProvider = Class.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._fetchRequiredDecorators()\r\n },\r\n dispose: function() {\r\n if (this._decorators && this._decorators.length) {\r\n each(this._decorators, (function(_, decorator) {\r\n decorator.dispose()\r\n }))\r\n }\r\n },\r\n _fetchRequiredDecorators: function() {\r\n this._decorators = [];\r\n each(editOptionsRegistry, function(_, option) {\r\n var optionEnabled = option.enabled.call(this._list);\r\n if (optionEnabled) {\r\n var decoratorType = option.decoratorType.call(this._list);\r\n var decoratorSubType = option.decoratorSubType.call(this._list);\r\n var decorator = this._createDecorator(decoratorType, decoratorSubType);\r\n this._decorators.push(decorator)\r\n }\r\n }.bind(this))\r\n },\r\n _createDecorator: function(type, subType) {\r\n var decoratorClass = this._findDecorator(type, subType);\r\n return new decoratorClass(this._list)\r\n },\r\n _findDecorator: function(type, subType) {\r\n var _registry$type;\r\n var foundDecorator = null === (_registry$type = registry[type]) || void 0 === _registry$type ? void 0 : _registry$type[subType];\r\n if (!foundDecorator) {\r\n throw errors.Error(\"E1012\", type, subType)\r\n }\r\n return foundDecorator\r\n },\r\n modifyItemElement: function(args) {\r\n var $itemElement = $(args.itemElement);\r\n var config = {\r\n $itemElement: $itemElement\r\n };\r\n this._prependBeforeBags($itemElement, config);\r\n this._appendAfterBags($itemElement, config);\r\n this._applyDecorators(DECORATOR_MODIFY_ELEMENT_METHOD, config)\r\n },\r\n afterItemsRendered: function() {\r\n this._applyDecorators(DECORATOR_AFTER_RENDER_METHOD)\r\n },\r\n _prependBeforeBags: function($itemElement, config) {\r\n var $beforeBags = this._collectDecoratorsMarkup(DECORATOR_BEFORE_BAG_CREATE_METHOD, config, LIST_ITEM_BEFORE_BAG_CLASS);\r\n $itemElement.prepend($beforeBags)\r\n },\r\n _appendAfterBags: function($itemElement, config) {\r\n var $afterBags = this._collectDecoratorsMarkup(DECORATOR_AFTER_BAG_CREATE_METHOD, config, LIST_ITEM_AFTER_BAG_CLASS);\r\n $itemElement.append($afterBags)\r\n },\r\n _collectDecoratorsMarkup: function(method, config, containerClass) {\r\n var $collector = $(\"
\");\r\n each(this._decorators, (function() {\r\n var $container = $(\"
\").addClass(containerClass);\r\n this[method](extend({\r\n $container: $container\r\n }, config));\r\n if ($container.children().length) {\r\n $collector.append($container)\r\n }\r\n }));\r\n return $collector.children()\r\n },\r\n _applyDecorators: function(method, config) {\r\n each(this._decorators, (function() {\r\n this[method](config)\r\n }))\r\n },\r\n _handlerExists: function(name) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n if (decorators[i][name] !== noop) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _eventHandler: function(name, $itemElement, e) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var response = false;\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n response = decorators[i][name]($itemElement, e);\r\n if (response) {\r\n break\r\n }\r\n }\r\n return response\r\n },\r\n handleClick: function($itemElement, e) {\r\n return this._eventHandler(\"handleClick\", $itemElement, e)\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n return this._eventHandler(\"handleKeyboardEvents\", currentFocusedIndex, moveFocusUp)\r\n },\r\n handleEnterPressing: function(e) {\r\n return this._eventHandler(\"handleEnterPressing\", e)\r\n },\r\n contextMenuHandlerExists: function() {\r\n return this._handlerExists(\"handleContextMenu\")\r\n },\r\n handleContextMenu: function($itemElement, e) {\r\n return this._eventHandler(\"handleContextMenu\", $itemElement, e)\r\n },\r\n getExcludedItemSelectors: function() {\r\n var excludedSelectors = [];\r\n this._applyDecorators(DECORATOR_GET_EXCLUDED_SELECTORS_METHOD, excludedSelectors);\r\n return excludedSelectors.join(\",\")\r\n }\r\n});\r\nexport default EditProvider;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isTouchEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport GroupedEditStrategy from \"./ui.list.edit.strategy.grouped\";\r\nimport localizationMessage from \"../../localization/message\";\r\nimport EditProvider from \"./ui.list.edit.provider\";\r\nimport {\r\n ListBase\r\n} from \"./ui.list.base\";\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar LIST_ITEM_RESPONSE_WAIT_CLASS = \"dx-list-item-response-wait\";\r\nvar ListEdit = ListBase.inherit({\r\n _supportedKeys() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var moveFocusedItem = (e, moveUp) => {\r\n var editStrategy = this._editStrategy;\r\n var focusedElement = this.option(\"focusedElement\");\r\n var focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement);\r\n var isLastIndexFocused = focusedItemIndex === this._getLastItemIndex();\r\n if (isLastIndexFocused && this._isDataSourceLoading()) {\r\n return\r\n }\r\n if (e.shiftKey && that.option(\"itemDragging.allowReordering\")) {\r\n var nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1);\r\n var $nextItem = editStrategy.getItemElement(nextItemIndex);\r\n this.reorderItem(focusedElement, $nextItem);\r\n this.scrollToItem(focusedElement);\r\n e.preventDefault()\r\n } else {\r\n var editProvider = this._editProvider;\r\n var isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp);\r\n if (!isInternalMoving) {\r\n moveUp ? parent.upArrow(e) : parent.downArrow(e)\r\n }\r\n }\r\n };\r\n return extend({}, parent, {\r\n del: e => {\r\n if (that.option(\"allowItemDeleting\")) {\r\n e.preventDefault();\r\n that.deleteItem(that.option(\"focusedElement\"))\r\n }\r\n },\r\n upArrow: e => moveFocusedItem(e, true),\r\n downArrow: e => moveFocusedItem(e),\r\n enter: function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.enter.apply(this, arguments)\r\n }\r\n },\r\n space: function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.space.apply(this, arguments)\r\n }\r\n }\r\n })\r\n },\r\n _updateSelection() {\r\n this._editProvider.afterItemsRendered();\r\n this.callBase()\r\n },\r\n _getLastItemIndex() {\r\n return this._itemElements().length - 1\r\n },\r\n _refreshItemElements() {\r\n this.callBase();\r\n var excludedSelectors = this._editProvider.getExcludedItemSelectors();\r\n if (excludedSelectors.length) {\r\n this._itemElementsCache = this._itemElementsCache.not(excludedSelectors)\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n var privateKey = item1 && item1.__dx_key__;\r\n if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) {\r\n return false\r\n }\r\n return this.callBase(item1, item2)\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n showSelectionControls: false,\r\n selectionMode: \"none\",\r\n selectAllMode: \"page\",\r\n onSelectAllValueChanged: null,\r\n selectAllText: localizationMessage.format(\"dxList-selectAll\"),\r\n menuItems: [],\r\n menuMode: \"context\",\r\n allowItemDeleting: false,\r\n itemDeleteMode: \"static\",\r\n itemDragging: {}\r\n })\r\n },\r\n _defaultOptionsRules() {\r\n return this.callBase().concat([{\r\n device: _device => \"ios\" === _device.platform,\r\n options: {\r\n menuMode: \"slide\",\r\n itemDeleteMode: \"slideItem\"\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n itemDeleteMode: \"swipe\"\r\n }\r\n }])\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initEditProvider()\r\n },\r\n _initDataSource() {\r\n this.callBase();\r\n if (!this._isPageSelectAll()) {\r\n this._dataSource && this._dataSource.requireTotalCount(true)\r\n }\r\n },\r\n _isPageSelectAll() {\r\n return \"page\" === this.option(\"selectAllMode\")\r\n },\r\n _initEditProvider() {\r\n this._editProvider = new EditProvider(this)\r\n },\r\n _disposeEditProvider() {\r\n if (this._editProvider) {\r\n this._editProvider.dispose()\r\n }\r\n },\r\n _refreshEditProvider() {\r\n this._disposeEditProvider();\r\n this._initEditProvider()\r\n },\r\n _initEditStrategy() {\r\n if (this.option(\"grouped\")) {\r\n this._editStrategy = new GroupedEditStrategy(this)\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _initMarkup() {\r\n this._refreshEditProvider();\r\n this.callBase()\r\n },\r\n _renderItems() {\r\n this.callBase(...arguments);\r\n this._editProvider.afterItemsRendered()\r\n },\r\n _selectedItemClass: () => LIST_ITEM_SELECTED_CLASS,\r\n _itemResponseWaitClass: () => LIST_ITEM_RESPONSE_WAIT_CLASS,\r\n _itemClickHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = this._editProvider.handleClick($itemElement, e);\r\n if (handledByEditProvider) {\r\n return\r\n }\r\n this._saveSelectionChangeEvent(e);\r\n this.callBase(...arguments)\r\n },\r\n _shouldFireContextMenuEvent() {\r\n return this.callBase(...arguments) || this._editProvider.contextMenuHandlerExists()\r\n },\r\n _itemHoldHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = isTouchEvent(e) && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.handledByEditProvider = true;\r\n return\r\n }\r\n this.callBase(...arguments)\r\n },\r\n _getItemContainer: function(changeData) {\r\n if (this.option(\"grouped\")) {\r\n var _this$_editStrategy$g;\r\n var groupIndex = null === (_this$_editStrategy$g = this._editStrategy.getIndexByItemData(changeData)) || void 0 === _this$_editStrategy$g ? void 0 : _this$_editStrategy$g.group;\r\n return this._getGroupContainerByIndex(groupIndex)\r\n } else {\r\n return this.callBase(changeData)\r\n }\r\n },\r\n _itemContextMenuHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.preventDefault();\r\n return\r\n }\r\n this.callBase(...arguments)\r\n },\r\n _postprocessRenderItem(args) {\r\n this.callBase(...arguments);\r\n this._editProvider.modifyItemElement(args)\r\n },\r\n _clean() {\r\n this._disposeEditProvider();\r\n this.callBase()\r\n },\r\n focusListItem(index) {\r\n var $item = this._editStrategy.getItemElement(index);\r\n this.option(\"focusedElement\", $item);\r\n this.focus();\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"selectAllMode\":\r\n this._initDataSource();\r\n this._dataSource.pageIndex(0);\r\n this._dataSource.load();\r\n break;\r\n case \"grouped\":\r\n this._clearSelectedItems();\r\n delete this._renderingGroupIndex;\r\n this._initEditStrategy();\r\n this.callBase(args);\r\n break;\r\n case \"showSelectionControls\":\r\n case \"menuItems\":\r\n case \"menuMode\":\r\n case \"allowItemDeleting\":\r\n case \"itemDeleteMode\":\r\n case \"itemDragging\":\r\n case \"selectAllText\":\r\n this._invalidate();\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n selectAll() {\r\n return this._selection.selectAll(this._isPageSelectAll())\r\n },\r\n unselectAll() {\r\n return this._selection.deselectAll(this._isPageSelectAll())\r\n },\r\n isSelectAll() {\r\n return this._selection.getSelectAllState(this._isPageSelectAll())\r\n },\r\n getFlatIndexByItemElement(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n },\r\n getItemElementByFlatIndex(flatIndex) {\r\n var $itemElements = this._itemElements();\r\n if (flatIndex < 0 || flatIndex >= $itemElements.length) {\r\n return $()\r\n }\r\n return $itemElements.eq(flatIndex)\r\n },\r\n getItemByIndex(index) {\r\n return this._editStrategy.getItemDataByIndex(index)\r\n }\r\n});\r\nexport default ListEdit;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.search.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ListEdit from \"./ui.list.edit\";\r\nimport searchBoxMixin from \"../widget/ui.search_box_mixin\";\r\nvar ListSearch = ListEdit.inherit(searchBoxMixin).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"dx-list-\" + className\r\n },\r\n _getCombinedFilter: function() {\r\n var filter;\r\n var storeLoadOptions;\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n storeLoadOptions = {\r\n filter: dataSource.filter()\r\n };\r\n dataSource._addSearchFilter(storeLoadOptions);\r\n filter = storeLoadOptions.filter\r\n }\r\n return filter\r\n },\r\n _initDataSource: function() {\r\n var value = this.option(\"searchValue\");\r\n var expr = this.option(\"searchExpr\");\r\n var mode = this.option(\"searchMode\");\r\n this.callBase();\r\n if (this._dataSource) {\r\n value && value.length && this._dataSource.searchValue(value);\r\n mode.length && this._dataSource.searchOperation(searchBoxMixin.getOperationBySearchMode(mode));\r\n expr && this._dataSource.searchExpr(expr)\r\n }\r\n }\r\n});\r\nexport default ListSearch;\r\n","/**\r\n * DevExtreme (esm/ui/list_light.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ListEdit from \"./list/ui.list.edit.search\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nregisterComponent(\"dxList\", ListEdit);\r\nexport default ListEdit;\r\n","/**\r\n * DevExtreme (esm/ui/radio_group/radio_button.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nvar RADIO_BUTTON_CLASS = \"dx-radiobutton\";\r\nvar RADIO_BUTTON_ICON_CLASS = \"dx-radiobutton-icon\";\r\nvar RADIO_BUTTON_ICON_DOT_CLASS = \"dx-radiobutton-icon-dot\";\r\nvar RADIO_BUTTON_CHECKED_CLASS = \"dx-radiobutton-checked\";\r\nvar RADIO_BUTTON_ICON_CHECKED_CLASS = \"dx-radiobutton-icon-checked\";\r\nvar RadioButton = Editor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n this._clickAction({\r\n event: e\r\n })\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n value: false\r\n })\r\n },\r\n _canValueBeChangedByClick: function() {\r\n return true\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(RADIO_BUTTON_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderIcon();\r\n this._renderCheckedState(this.option(\"value\"));\r\n this._renderClick();\r\n this.setAria(\"role\", \"radio\")\r\n },\r\n _renderIcon: function() {\r\n this._$icon = $(\"
\").addClass(RADIO_BUTTON_ICON_CLASS);\r\n $(\"
\").addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo(this._$icon);\r\n this.$element().append(this._$icon)\r\n },\r\n _renderCheckedState: function(checked) {\r\n this.$element().toggleClass(RADIO_BUTTON_CHECKED_CLASS, checked).find(\".\" + RADIO_BUTTON_ICON_CLASS).toggleClass(RADIO_BUTTON_ICON_CHECKED_CLASS, checked);\r\n this.setAria(\"checked\", checked)\r\n },\r\n _renderClick: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n this._clickAction = this._createAction(function(args) {\r\n this._clickHandler(args.event)\r\n }.bind(this));\r\n eventsEngine.off(this.$element(), eventName);\r\n eventsEngine.on(this.$element(), eventName, function(e) {\r\n this._clickAction({\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _clickHandler: function(e) {\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._renderCheckedState(args.value);\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxRadioButton\", RadioButton);\r\nexport default RadioButton;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.selection.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport CheckBox from \"../check_box\";\r\nimport RadioButton from \"../radio_group/radio_button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nvar SELECT_DECORATOR_ENABLED_CLASS = \"dx-list-select-decorator-enabled\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CLASS = \"dx-list-select-all\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS = \"dx-list-select-all-checkbox\";\r\nvar SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS = \"dx-list-select-all-label\";\r\nvar SELECT_CHECKBOX_CONTAINER_CLASS = \"dx-list-select-checkbox-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-list-select-checkbox\";\r\nvar SELECT_RADIO_BUTTON_CONTAINER_CLASS = \"dx-list-select-radiobutton-container\";\r\nvar SELECT_RADIO_BUTTON_CLASS = \"dx-list-select-radiobutton\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar CLICK_EVENT_NAME = addNamespace(clickEventName, \"dxListEditDecorator\");\r\nregisterDecorator(\"selection\", \"default\", EditDecorator.inherit({\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectionMode = this._list.option(\"selectionMode\");\r\n this._singleStrategy = \"single\" === selectionMode;\r\n this._containerClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CONTAINER_CLASS : SELECT_CHECKBOX_CONTAINER_CLASS;\r\n this._controlClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CLASS : SELECT_CHECKBOX_CLASS;\r\n this._controlWidget = this._singleStrategy ? RadioButton : CheckBox;\r\n this._list.$element().addClass(SELECT_DECORATOR_ENABLED_CLASS)\r\n },\r\n beforeBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container.addClass(this._containerClass);\r\n var $control = $(\"
\").addClass(this._controlClass).appendTo($container);\r\n new this._controlWidget($control, extend(this._commonOptions(), {\r\n value: this._isSelected($itemElement),\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n onValueChanged: function(e) {\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n this._processCheckedState($itemElement, e.value);\r\n e.event && e.event.stopPropagation()\r\n }.bind(this)\r\n }))\r\n },\r\n modifyElement: function(config) {\r\n this.callBase.apply(this, arguments);\r\n var $itemElement = config.$itemElement;\r\n var control = this._controlWidget.getInstance($itemElement.find(\".\" + this._controlClass));\r\n eventsEngine.on($itemElement, \"stateChanged\", function(e, state) {\r\n control.option(\"value\", state)\r\n }.bind(this))\r\n },\r\n _updateSelectAllState: function() {\r\n if (!this._$selectAll) {\r\n return\r\n }\r\n this._selectAllCheckBox.option(\"value\", this._list.isSelectAll())\r\n },\r\n afterRender: function() {\r\n if (\"all\" !== this._list.option(\"selectionMode\")) {\r\n return\r\n }\r\n if (!this._$selectAll) {\r\n this._renderSelectAll()\r\n } else {\r\n this._updateSelectAllState()\r\n }\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n var moveFocusDown = !moveFocusUp;\r\n var list = this._list;\r\n var $selectAll = this._$selectAll;\r\n var lastItemIndex = list._getLastItemIndex();\r\n var isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex;\r\n var hasSelectAllItem = !!$selectAll;\r\n if (hasSelectAllItem && isFocusOutOfList) {\r\n list.option(\"focusedElement\", $selectAll);\r\n list.scrollToItem(list.option(\"focusedElement\"));\r\n return true\r\n }\r\n return false\r\n },\r\n handleEnterPressing: function(e) {\r\n if (this._$selectAll && this._$selectAll.hasClass(FOCUSED_STATE_CLASS)) {\r\n e.target = this._$selectAll.get(0);\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"));\r\n return true\r\n }\r\n },\r\n _renderSelectAll: function() {\r\n var $selectAll = this._$selectAll = $(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_CLASS);\r\n var list = this._list;\r\n var downArrowHandler = list._supportedKeys().downArrow.bind(list);\r\n this._selectAllCheckBox = list._createComponent($(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS).appendTo($selectAll), CheckBox, {\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false\r\n });\r\n this._selectAllCheckBox.registerKeyHandler(\"downArrow\", downArrowHandler);\r\n $(\"
\").addClass(SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS).text(this._list.option(\"selectAllText\")).appendTo($selectAll);\r\n this._list.itemsContainer().prepend($selectAll);\r\n this._updateSelectAllState();\r\n this._attachSelectAllHandler()\r\n },\r\n _attachSelectAllHandler: function() {\r\n this._selectAllCheckBox.option(\"onValueChanged\", this._selectAllHandler.bind(this));\r\n eventsEngine.off(this._$selectAll, CLICK_EVENT_NAME);\r\n eventsEngine.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllClickHandler.bind(this))\r\n },\r\n _selectAllHandler: function(e) {\r\n e.event && e.event.stopPropagation();\r\n var isSelectedAll = this._selectAllCheckBox.option(\"value\");\r\n var result = this._list._createActionByOption(\"onSelectAllValueChanged\")({\r\n value: isSelectedAll\r\n });\r\n if (false === result) {\r\n return\r\n }\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n if (true === isSelectedAll) {\r\n this._selectAllItems()\r\n } else if (false === isSelectedAll) {\r\n this._unselectAllItems()\r\n }\r\n },\r\n _checkSelectAllCapability: function() {\r\n var list = this._list;\r\n var dataSource = list.getDataSource();\r\n if (\"allPages\" === list.option(\"selectAllMode\") && list.option(\"grouped\") && (!dataSource || !dataSource.group())) {\r\n errors.log(\"W1010\");\r\n return false\r\n }\r\n return true\r\n },\r\n _selectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.selectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _unselectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.deselectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _selectAllClickHandler: function(e) {\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"))\r\n },\r\n _isSelected: function($itemElement) {\r\n return this._list.isItemSelected($itemElement)\r\n },\r\n _processCheckedState: function($itemElement, checked) {\r\n if (checked) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n },\r\n dispose: function() {\r\n this._disposeSelectAll();\r\n this._list.$element().removeClass(SELECT_DECORATOR_ENABLED_CLASS);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _disposeSelectAll: function() {\r\n if (this._$selectAll) {\r\n this._$selectAll.remove();\r\n this._$selectAll = null\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/events/gesture/emitter.gesture.scroll.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n addNamespace,\r\n isDxMouseWheelEvent,\r\n isMouseEvent,\r\n eventData,\r\n eventDelta\r\n} from \"../../events/utils/index\";\r\nimport GestureEmitter from \"../../events/gesture/emitter.gesture\";\r\nimport registerEmitter from \"../../events/core/emitter_registrator\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../../core/utils/version\";\r\nvar realDevice = devices.real();\r\nvar SCROLL_EVENT = \"scroll\";\r\nvar SCROLL_INIT_EVENT = \"dxscrollinit\";\r\nvar SCROLL_START_EVENT = \"dxscrollstart\";\r\nvar SCROLL_MOVE_EVENT = \"dxscroll\";\r\nvar SCROLL_END_EVENT = \"dxscrollend\";\r\nvar SCROLL_STOP_EVENT = \"dxscrollstop\";\r\nvar SCROLL_CANCEL_EVENT = \"dxscrollcancel\";\r\nvar Locker = Class.inherit(function() {\r\n var NAMESPACED_SCROLL_EVENT = addNamespace(SCROLL_EVENT, \"dxScrollEmitter\");\r\n return {\r\n ctor: function(element) {\r\n this._element = element;\r\n this._locked = false;\r\n this._proxiedScroll = e => {\r\n if (!this._disposed) {\r\n this._scroll(e)\r\n }\r\n };\r\n eventsEngine.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n },\r\n _scroll: abstract,\r\n check: function(e, callback) {\r\n if (this._locked) {\r\n callback()\r\n }\r\n },\r\n dispose: function() {\r\n this._disposed = true;\r\n eventsEngine.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n }\r\n }\r\n}());\r\nvar TimeoutLocker = Locker.inherit({\r\n ctor: function(element, timeout) {\r\n this.callBase(element);\r\n this._timeout = timeout\r\n },\r\n _scroll: function() {\r\n this._prepare();\r\n this._forget()\r\n },\r\n _prepare: function() {\r\n if (this._timer) {\r\n this._clearTimer()\r\n }\r\n this._locked = true\r\n },\r\n _clearTimer: function() {\r\n clearTimeout(this._timer);\r\n this._locked = false;\r\n this._timer = null\r\n },\r\n _forget: function() {\r\n var that = this;\r\n this._timer = setTimeout((function() {\r\n that._clearTimer()\r\n }), this._timeout)\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._clearTimer()\r\n }\r\n});\r\nvar WheelLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400);\r\n this._lastWheelDirection = null\r\n },\r\n check: function(e, callback) {\r\n this._checkDirectionChanged(e);\r\n this.callBase(e, callback)\r\n },\r\n _checkDirectionChanged: function(e) {\r\n if (!isDxMouseWheelEvent(e)) {\r\n this._lastWheelDirection = null;\r\n return\r\n }\r\n var direction = e.shiftKey || false;\r\n var directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;\r\n this._lastWheelDirection = direction;\r\n this._locked = this._locked && !directionChange\r\n }\r\n});\r\nvar PointerLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400)\r\n }\r\n});\r\n! function() {\r\n var ios8_greater = realDevice.ios && compareVersions(realDevice.version, [8]) >= 0;\r\n var android5_greater = realDevice.android && compareVersions(realDevice.version, [5]) >= 0;\r\n if (!(ios8_greater || android5_greater)) {\r\n return\r\n }\r\n PointerLocker = Locker.inherit({\r\n _scroll: function() {\r\n this._locked = true;\r\n var that = this;\r\n cancelAnimationFrame(this._scrollFrame);\r\n this._scrollFrame = requestAnimationFrame((function() {\r\n that._locked = false\r\n }))\r\n },\r\n check: function(e, callback) {\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame);\r\n var that = this;\r\n var callBase = this.callBase;\r\n this._checkFrame = requestAnimationFrame((function() {\r\n callBase.call(that, e, callback);\r\n that._locked = false\r\n }))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame)\r\n }\r\n })\r\n}();\r\nvar ScrollEmitter = GestureEmitter.inherit(function() {\r\n var FRAME_DURATION = Math.round(1e3 / 60);\r\n return {\r\n ctor: function(element) {\r\n this.callBase.apply(this, arguments);\r\n this.direction = \"both\";\r\n this._pointerLocker = new PointerLocker(element);\r\n this._wheelLocker = new WheelLocker(element)\r\n },\r\n validate: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n if (data.scrollTarget) {\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose();\r\n this._pointerLocker = new PointerLocker(data.scrollTarget);\r\n this._wheelLocker = new WheelLocker(data.scrollTarget)\r\n }\r\n this.callBase(data)\r\n },\r\n _init: function(e) {\r\n this._wheelLocker.check(e, function() {\r\n if (isDxMouseWheelEvent(e)) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._pointerLocker.check(e, function() {\r\n var skipCheck = this.isNative && isMouseEvent(e);\r\n if (!isDxMouseWheelEvent(e) && !skipCheck) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._fireEvent(SCROLL_INIT_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n move: function(e) {\r\n this.callBase.apply(this, arguments);\r\n e.isScrollingEvent = this.isNative || e.isScrollingEvent\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n this._fireEvent(SCROLL_START_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n _move: function(e) {\r\n var currentEventData = eventData(e);\r\n this._fireEvent(SCROLL_MOVE_EVENT, e, {\r\n delta: eventDelta(this._prevEventData, currentEventData)\r\n });\r\n var delta = eventDelta(this._savedEventData, currentEventData);\r\n if (delta.time > 200) {\r\n this._savedEventData = this._prevEventData\r\n }\r\n this._prevEventData = eventData(e)\r\n },\r\n _end: function(e) {\r\n var endEventDelta = eventDelta(this._prevEventData, eventData(e));\r\n var velocity = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (!isDxMouseWheelEvent(e) && endEventDelta.time < 100) {\r\n var delta = eventDelta(this._savedEventData, this._prevEventData);\r\n var velocityMultiplier = FRAME_DURATION / delta.time;\r\n velocity = {\r\n x: delta.x * velocityMultiplier,\r\n y: delta.y * velocityMultiplier\r\n }\r\n }\r\n this._fireEvent(SCROLL_END_EVENT, e, {\r\n velocity: velocity\r\n })\r\n },\r\n _stop: function(e) {\r\n this._fireEvent(SCROLL_STOP_EVENT, e)\r\n },\r\n cancel: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._fireEvent(SCROLL_CANCEL_EVENT, e)\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose()\r\n },\r\n _clearSelection: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleGestureCover: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n}());\r\nregisterEmitter({\r\n emitter: ScrollEmitter,\r\n events: [SCROLL_INIT_EVENT, SCROLL_START_EVENT, SCROLL_MOVE_EVENT, SCROLL_END_EVENT, SCROLL_STOP_EVENT, SCROLL_CANCEL_EVENT]\r\n});\r\nexport default {\r\n init: SCROLL_INIT_EVENT,\r\n start: SCROLL_START_EVENT,\r\n move: SCROLL_MOVE_EVENT,\r\n end: SCROLL_END_EVENT,\r\n stop: SCROLL_STOP_EVENT,\r\n cancel: SCROLL_CANCEL_EVENT,\r\n scroll: SCROLL_EVENT\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.device.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n nativeScrolling,\r\n touch\r\n} from \"../../core/utils/support\";\r\nexport var deviceDependentOptions = function() {\r\n return [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNative: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n bounceEnabled: false,\r\n scrollByThumb: true,\r\n scrollByContent: touch,\r\n showScrollbar: \"onHover\"\r\n }\r\n }]\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/stubs.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function stubComponent(componentName) {\r\n return class {\r\n constructor() {\r\n throw new Error(\"Module '\".concat(componentName, \"' not found\"))\r\n }\r\n static getInstance() {}\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.search_box_mixin.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n stubComponent\r\n} from \"../../core/utils/stubs\";\r\nvar EditorClass = stubComponent(\"TextBox\");\r\nexport default {\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n searchMode: \"\",\r\n searchExpr: null,\r\n searchValue: \"\",\r\n searchEnabled: false,\r\n searchEditorOptions: {}\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSearch();\r\n this.callBase()\r\n },\r\n _renderSearch: function() {\r\n var $element = this.$element();\r\n var searchEnabled = this.option(\"searchEnabled\");\r\n var searchBoxClassName = this._addWidgetPrefix(\"search\");\r\n var rootElementClassName = this._addWidgetPrefix(\"with-search\");\r\n if (!searchEnabled) {\r\n $element.removeClass(rootElementClassName);\r\n this._removeSearchBox();\r\n return\r\n }\r\n var editorOptions = this._getSearchEditorOptions();\r\n if (this._searchEditor) {\r\n this._searchEditor.option(editorOptions)\r\n } else {\r\n $element.addClass(rootElementClassName);\r\n this._$searchEditorElement = $(\"
\").addClass(searchBoxClassName).prependTo($element);\r\n this._searchEditor = this._createComponent(this._$searchEditorElement, EditorClass, editorOptions)\r\n }\r\n },\r\n _removeSearchBox: function() {\r\n this._$searchEditorElement && this._$searchEditorElement.remove();\r\n delete this._$searchEditorElement;\r\n delete this._searchEditor\r\n },\r\n _getSearchEditorOptions: function() {\r\n var that = this;\r\n var userEditorOptions = that.option(\"searchEditorOptions\");\r\n var searchText = messageLocalization.format(\"Search\");\r\n return extend({\r\n mode: \"search\",\r\n placeholder: searchText,\r\n tabIndex: that.option(\"tabIndex\"),\r\n value: that.option(\"searchValue\"),\r\n valueChangeEvent: \"input\",\r\n inputAttr: {\r\n \"aria-label\": searchText\r\n },\r\n onValueChanged: function(e) {\r\n var searchTimeout = that.option(\"searchTimeout\");\r\n that._valueChangeDeferred = new Deferred;\r\n clearTimeout(that._valueChangeTimeout);\r\n that._valueChangeDeferred.done(function() {\r\n this.option(\"searchValue\", e.value)\r\n }.bind(that));\r\n if (e.event && \"input\" === e.event.type && searchTimeout) {\r\n that._valueChangeTimeout = setTimeout((function() {\r\n that._valueChangeDeferred.resolve()\r\n }), searchTimeout)\r\n } else {\r\n that._valueChangeDeferred.resolve()\r\n }\r\n }\r\n }, userEditorOptions)\r\n },\r\n _getAriaTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.$element()\r\n },\r\n _focusTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.callBase()\r\n },\r\n _updateFocusState: function(e, isFocused) {\r\n if (this.option(\"searchEnabled\")) {\r\n this._toggleFocusClass(isFocused, this.$element())\r\n }\r\n this.callBase(e, isFocused)\r\n },\r\n getOperationBySearchMode: function(searchMode) {\r\n return \"equals\" === searchMode ? \"=\" : searchMode\r\n },\r\n _cleanAria: function($target) {\r\n this.setAria({\r\n role: null,\r\n activedescendant: null\r\n }, $target);\r\n $target.attr(\"tabIndex\", null)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchEnabled\":\r\n case \"searchEditorOptions\":\r\n this._cleanAria(this.option(\"searchEnabled\") ? this.$element() : this._itemContainer());\r\n this._invalidate();\r\n break;\r\n case \"searchExpr\":\r\n case \"searchMode\":\r\n case \"searchValue\":\r\n if (!this._dataSource) {\r\n errors.log(\"W1009\");\r\n return\r\n }\r\n if (\"searchMode\" === args.name) {\r\n this._dataSource.searchOperation(this.getOperationBySearchMode(args.value))\r\n } else {\r\n this._dataSource[args.name](args.value)\r\n }\r\n this._dataSource.load();\r\n break;\r\n case \"searchTimeout\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n focus: function() {\r\n if (!this.option(\"focusedElement\") && this.option(\"searchEnabled\")) {\r\n this._searchEditor && this._searchEditor.focus();\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _refresh: function() {\r\n if (this._valueChangeDeferred) {\r\n this._valueChangeDeferred.resolve()\r\n }\r\n this.callBase()\r\n },\r\n setEditorClass: function(value) {\r\n EditorClass = value\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.simulated.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n titleize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n resetPosition,\r\n move,\r\n locate\r\n} from \"../../animation/translator\";\r\nimport Class from \"../../core/class\";\r\nimport Animator from \"./animator\";\r\nimport {\r\n isDxMouseWheelEvent,\r\n addNamespace as addEventNamespace,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferUpdate,\r\n deferUpdater,\r\n deferRender,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLABLE_SIMULATED = \"dxSimulatedScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_SIMULATED_CURSOR = SCROLLABLE_SIMULATED + \"Cursor\";\r\nvar SCROLLABLE_SIMULATED_KEYBOARD = SCROLLABLE_SIMULATED + \"Keyboard\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar ACCELERATION = .92;\r\nvar OUT_BOUNDS_ACCELERATION = .5;\r\nvar MIN_VELOCITY_LIMIT = 1;\r\nvar FRAME_DURATION = Math.round(1e3 / 60);\r\nvar SCROLL_LINE_HEIGHT = 40;\r\nvar VALIDATE_WHEEL_TIMEOUT = 500;\r\nvar BOUNCE_MIN_VELOCITY_LIMIT = MIN_VELOCITY_LIMIT / 5;\r\nvar BOUNCE_DURATION = 400;\r\nvar BOUNCE_FRAMES = BOUNCE_DURATION / FRAME_DURATION;\r\nvar BOUNCE_ACCELERATION_SUM = (1 - Math.pow(ACCELERATION, BOUNCE_FRAMES)) / (1 - ACCELERATION);\r\nvar KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\",\r\n TAB: \"tab\"\r\n};\r\nvar InertiaAnimator = Animator.inherit({\r\n ctor: function(scroller) {\r\n this.callBase();\r\n this.scroller = scroller\r\n },\r\n VELOCITY_LIMIT: MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT\r\n },\r\n _step: function() {\r\n this.scroller._scrollStep(this.scroller._velocity);\r\n this.scroller._velocity *= this._acceleration()\r\n },\r\n _acceleration: function() {\r\n return this.scroller._inBounds() ? ACCELERATION : OUT_BOUNDS_ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._scrollComplete()\r\n }\r\n});\r\nvar BounceAnimator = InertiaAnimator.inherit({\r\n VELOCITY_LIMIT: BOUNCE_MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return this.scroller._crossBoundOnNextStep() || this.callBase()\r\n },\r\n _acceleration: function() {\r\n return ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._move(this.scroller._bounceLocation);\r\n this.callBase()\r\n }\r\n});\r\nexport var Scroller = Class.inherit({\r\n ctor: function(options) {\r\n this._initOptions(options);\r\n this._initAnimators();\r\n this._initScrollbar()\r\n },\r\n _initOptions: function(options) {\r\n this._location = 0;\r\n this._topReached = false;\r\n this._bottomReached = false;\r\n this._axis = options.direction === HORIZONTAL ? \"x\" : \"y\";\r\n this._prop = options.direction === HORIZONTAL ? \"left\" : \"top\";\r\n this._dimension = options.direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._scrollProp = options.direction === HORIZONTAL ? \"scrollLeft\" : \"scrollTop\";\r\n each(options, (optionName, optionValue) => {\r\n this[\"_\" + optionName] = optionValue\r\n })\r\n },\r\n _initAnimators: function() {\r\n this._inertiaAnimator = new InertiaAnimator(this);\r\n this._bounceAnimator = new BounceAnimator(this)\r\n },\r\n _initScrollbar: function() {\r\n this._scrollbar = new Scrollbar($(\"
\").appendTo(this._$container), {\r\n direction: this._direction,\r\n visible: this._scrollByThumb,\r\n visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),\r\n expandable: this._scrollByThumb\r\n });\r\n this._$scrollbar = this._scrollbar.$element()\r\n },\r\n _visibilityModeNormalize: function(mode) {\r\n return true === mode ? \"onScroll\" : false === mode ? \"never\" : mode\r\n },\r\n _scrollStep: function(delta) {\r\n var prevLocation = this._location;\r\n this._location += delta;\r\n this._suppressBounce();\r\n this._move();\r\n if (Math.abs(prevLocation - this._location) < 1) {\r\n return\r\n }\r\n eventsEngine.triggerHandler(this._$container, {\r\n type: \"scroll\"\r\n })\r\n },\r\n _suppressBounce: function() {\r\n if (this._bounceEnabled || this._inBounds(this._location)) {\r\n return\r\n }\r\n this._velocity = 0;\r\n this._location = this._boundLocation()\r\n },\r\n _boundLocation: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return Math.max(Math.min(location, this._maxOffset), this._minOffset)\r\n },\r\n _move: function(location) {\r\n this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;\r\n this._moveContent();\r\n this._moveScrollbar()\r\n },\r\n _moveContent: function() {\r\n var location = this._location;\r\n this._$container[this._scrollProp](-location / this._getScaleRatio());\r\n this._moveContentByTranslator(location)\r\n },\r\n _getScaleRatio: function() {\r\n if (hasWindow() && !this._scaleRatio) {\r\n var element = this._$element.get(0);\r\n var realDimension = this._getRealDimension(element, this._dimension);\r\n var baseDimension = this._getBaseDimension(element, this._dimension);\r\n this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100\r\n }\r\n return this._scaleRatio || 1\r\n },\r\n _getRealDimension: function(element, dimension) {\r\n return Math.round(getBoundingRect(element)[dimension])\r\n },\r\n _getBaseDimension: function(element, dimension) {\r\n var dimensionName = \"offset\" + titleize(dimension);\r\n return element[dimensionName]\r\n },\r\n _moveContentByTranslator: function(location) {\r\n var translateOffset;\r\n var minOffset = -this._maxScrollPropValue;\r\n if (location > 0) {\r\n translateOffset = location\r\n } else if (location <= minOffset) {\r\n translateOffset = location - minOffset\r\n } else {\r\n translateOffset = location % 1\r\n }\r\n if (this._translateOffset === translateOffset) {\r\n return\r\n }\r\n var targetLocation = {};\r\n targetLocation[this._prop] = translateOffset;\r\n this._translateOffset = translateOffset;\r\n if (0 === translateOffset) {\r\n resetPosition(this._$content);\r\n return\r\n }\r\n move(this._$content, targetLocation)\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._location)\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds()) {\r\n this._hideScrollbar();\r\n if (this._completeDeferred) {\r\n this._completeDeferred.resolve()\r\n }\r\n }\r\n this._scrollToBounds()\r\n },\r\n _scrollToBounds: function() {\r\n if (this._inBounds()) {\r\n return\r\n }\r\n this._bounceAction();\r\n this._setupBounce();\r\n this._bounceAnimator.start()\r\n },\r\n _setupBounce: function() {\r\n var boundLocation = this._bounceLocation = this._boundLocation();\r\n var bounceDistance = boundLocation - this._location;\r\n this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM\r\n },\r\n _inBounds: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return this._boundLocation(location) === location\r\n },\r\n _crossBoundOnNextStep: function() {\r\n var location = this._location;\r\n var nextLocation = location + this._velocity;\r\n return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset\r\n },\r\n _initHandler: function(e) {\r\n this._stopScrolling();\r\n this._prepareThumbScrolling(e)\r\n },\r\n _stopScrolling: deferRenderer((function() {\r\n this._hideScrollbar();\r\n this._inertiaAnimator.stop();\r\n this._bounceAnimator.stop()\r\n })),\r\n _prepareThumbScrolling: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n return\r\n }\r\n var $target = $(e.originalEvent.target);\r\n var scrollbarClicked = this._isScrollbar($target);\r\n if (scrollbarClicked) {\r\n this._moveToMouseLocation(e)\r\n }\r\n this._thumbScrolling = scrollbarClicked || this._isThumb($target);\r\n this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);\r\n if (this._thumbScrolling) {\r\n this._scrollbar.feedbackOn()\r\n }\r\n },\r\n _isThumbScrollingHandler: function($target) {\r\n return this._isThumb($target)\r\n },\r\n _moveToMouseLocation: function(e) {\r\n var mouseLocation = e[\"page\" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];\r\n var location = this._location + mouseLocation / this._containerToContentRatio() - getHeight(this._$container) / 2;\r\n this._scrollStep(-Math.round(location))\r\n },\r\n _startHandler: function() {\r\n this._showScrollbar()\r\n },\r\n _moveHandler: function(delta) {\r\n if (this._crossThumbScrolling) {\r\n return\r\n }\r\n if (this._thumbScrolling) {\r\n delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())\r\n }\r\n this._scrollBy(delta)\r\n },\r\n _scrollBy: function(delta) {\r\n delta = delta[this._axis];\r\n if (!this._inBounds()) {\r\n delta *= OUT_BOUNDS_ACCELERATION\r\n }\r\n this._scrollStep(delta)\r\n },\r\n _scrollByHandler: function(delta) {\r\n this._scrollBy(delta);\r\n this._scrollComplete()\r\n },\r\n _containerToContentRatio: function() {\r\n return this._scrollbar.containerToContentRatio()\r\n },\r\n _endHandler: function(velocity) {\r\n this._completeDeferred = new Deferred;\r\n this._velocity = velocity[this._axis];\r\n this._inertiaHandler();\r\n this._resetThumbScrolling();\r\n return this._completeDeferred.promise()\r\n },\r\n _inertiaHandler: function() {\r\n this._suppressInertia();\r\n this._inertiaAnimator.start()\r\n },\r\n _suppressInertia: function() {\r\n if (!this._inertiaEnabled || this._thumbScrolling) {\r\n this._velocity = 0\r\n }\r\n },\r\n _resetThumbScrolling: function() {\r\n this._thumbScrolling = false;\r\n this._crossThumbScrolling = false\r\n },\r\n _stopHandler: function() {\r\n if (this._thumbScrolling) {\r\n this._scrollComplete()\r\n }\r\n this._resetThumbScrolling();\r\n this._scrollToBounds()\r\n },\r\n _disposeHandler: function() {\r\n this._stopScrolling();\r\n this._$scrollbar.remove()\r\n },\r\n _updateHandler: function() {\r\n this._update();\r\n this._moveToBounds()\r\n },\r\n _update: function() {\r\n this._stopScrolling();\r\n return deferUpdate(() => {\r\n this._resetScaleRatio();\r\n this._updateLocation();\r\n this._updateBounds();\r\n this._updateScrollbar();\r\n deferRender(() => {\r\n this._moveScrollbar();\r\n this._scrollbar.update()\r\n })\r\n })\r\n },\r\n _resetScaleRatio: function() {\r\n this._scaleRatio = null\r\n },\r\n _updateLocation: function() {\r\n this._location = (locate(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()\r\n },\r\n _updateBounds: function() {\r\n this._maxOffset = this._getMaxOffset();\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return 0\r\n },\r\n _getMinOffset: function() {\r\n this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);\r\n return -this._maxScrollPropValue\r\n },\r\n _updateScrollbar: deferUpdater((function() {\r\n var containerSize = this._containerSize();\r\n var contentSize = this._contentSize();\r\n var baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);\r\n var baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);\r\n deferRender(() => {\r\n this._scrollbar.option({\r\n containerSize: containerSize,\r\n contentSize: contentSize,\r\n baseContainerSize: baseContainerSize,\r\n baseContentSize: baseContentSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n })\r\n })),\r\n _moveToBounds: deferRenderer(deferUpdater(deferRenderer((function() {\r\n var location = this._boundLocation();\r\n var locationChanged = location !== this._location;\r\n this._location = location;\r\n this._move();\r\n if (locationChanged) {\r\n this._scrollAction()\r\n }\r\n })))),\r\n _createActionsHandler: function(actions) {\r\n this._scrollAction = actions.scroll;\r\n this._bounceAction = actions.bounce\r\n },\r\n _showScrollbar: function() {\r\n this._scrollbar.option(\"visible\", true)\r\n },\r\n _hideScrollbar: function() {\r\n this._scrollbar.option(\"visible\", false)\r\n },\r\n _containerSize: function() {\r\n return this._getRealDimension(this._$container.get(0), this._dimension)\r\n },\r\n _contentSize: function() {\r\n var isOverflowHidden = \"hidden\" === this._$content.css(\"overflow\" + this._axis.toUpperCase());\r\n var contentSize = this._getRealDimension(this._$content.get(0), this._dimension);\r\n if (!isOverflowHidden) {\r\n var containerScrollSize = this._$content[0][\"scroll\" + titleize(this._dimension)] * this._getScaleRatio();\r\n contentSize = Math.max(containerScrollSize, contentSize)\r\n }\r\n return contentSize\r\n },\r\n _validateEvent: function(e) {\r\n var $target = $(e.originalEvent.target);\r\n return this._isThumb($target) || this._isScrollbar($target) || this._isContent($target)\r\n },\r\n _isThumb: function($element) {\r\n return this._scrollByThumb && this._scrollbar.isThumb($element)\r\n },\r\n _isScrollbar: function($element) {\r\n return this._scrollByThumb && $element && $element.is(this._$scrollbar)\r\n },\r\n _isContent: function($element) {\r\n return this._scrollByContent && !!$element.closest(this._$element).length\r\n },\r\n _reachedMin: function() {\r\n return Math.round(this._location - this._minOffset) <= 0\r\n },\r\n _reachedMax: function() {\r\n return Math.round(this._location - this._maxOffset) >= 0\r\n },\r\n _cursorEnterHandler: function() {\r\n this._resetScaleRatio();\r\n this._updateScrollbar();\r\n this._scrollbar.cursorEnter()\r\n },\r\n _cursorLeaveHandler: function() {\r\n this._scrollbar.cursorLeave()\r\n },\r\n dispose: noop\r\n});\r\nvar hoveredScrollable;\r\nvar activeScrollable;\r\nexport var SimulatedStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = $(scrollable.container());\r\n this._$wrapper = scrollable._$wrapper;\r\n this._$content = scrollable.$content();\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)\r\n },\r\n render: function() {\r\n this._$element.addClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._createScrollers();\r\n if (this.option(\"useKeyboard\")) {\r\n this._$container.prop(\"tabIndex\", 0)\r\n }\r\n this._attachKeyboardHandler();\r\n this._attachCursorHandlers()\r\n },\r\n _createScrollers: function() {\r\n this._scrollers = {};\r\n if (this._isDirection(HORIZONTAL)) {\r\n this._createScroller(HORIZONTAL)\r\n }\r\n if (this._isDirection(VERTICAL)) {\r\n this._createScroller(VERTICAL)\r\n }\r\n this._$element.toggleClass(SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE, \"always\" === this.option(\"showScrollbar\"))\r\n },\r\n _createScroller: function(direction) {\r\n this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return {\r\n direction: direction,\r\n $content: this._$content,\r\n $container: this._$container,\r\n $wrapper: this._$wrapper,\r\n $element: this._$element,\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n scrollbarVisible: this.option(\"showScrollbar\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n inertiaEnabled: this.option(\"inertiaEnabled\"),\r\n isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)\r\n }\r\n },\r\n _applyScaleRatio: function(targetLocation) {\r\n for (var direction in this._scrollers) {\r\n var prop = this._getPropByDirection(direction);\r\n if (isDefined(targetLocation[prop])) {\r\n var scroller = this._scrollers[direction];\r\n targetLocation[prop] *= scroller._getScaleRatio()\r\n }\r\n }\r\n return targetLocation\r\n },\r\n _isAnyThumbScrolling: function($target) {\r\n var result = false;\r\n this._eventHandler(\"isThumbScrolling\", $target).done((function(isThumbScrollingVertical, isThumbScrollingHorizontal) {\r\n result = isThumbScrollingVertical || isThumbScrollingHorizontal\r\n }));\r\n return result\r\n },\r\n handleInit: function(e) {\r\n this._suppressDirections(e);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"init\", e)\r\n },\r\n _suppressDirections: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n this._prepareDirections(true);\r\n return\r\n }\r\n this._prepareDirections();\r\n this._eachScroller((function(scroller, direction) {\r\n var isValid = scroller._validateEvent(e);\r\n this._validDirections[direction] = isValid\r\n }))\r\n },\r\n _prepareDirections: function(value) {\r\n value = value || false;\r\n this._validDirections = {};\r\n this._validDirections[HORIZONTAL] = value;\r\n this._validDirections[VERTICAL] = value\r\n },\r\n _eachScroller: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollers, (function(direction, scroller) {\r\n callback(scroller, direction)\r\n }))\r\n },\r\n handleStart: function(e) {\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"start\").done(this._startAction)\r\n },\r\n _saveActive: function() {\r\n activeScrollable = this\r\n },\r\n _resetActive: function() {\r\n if (activeScrollable === this) {\r\n activeScrollable = null\r\n }\r\n },\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n this._resetActive();\r\n return\r\n }\r\n this._saveActive();\r\n e.preventDefault && e.preventDefault();\r\n this._adjustDistance(e, e.delta);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"move\", e.delta)\r\n },\r\n _adjustDistance: function(e, distance) {\r\n distance.x *= this._validDirections[HORIZONTAL];\r\n distance.y *= this._validDirections[VERTICAL];\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n if (devicePixelRatio && isDxMouseWheelEvent(e.originalEvent)) {\r\n distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;\r\n distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100\r\n }\r\n },\r\n _tryGetDevicePixelRatio: function() {\r\n if (hasWindow()) {\r\n return getWindow().devicePixelRatio\r\n }\r\n },\r\n handleEnd: function(e) {\r\n this._resetActive();\r\n this._refreshCursorState(e.originalEvent && e.originalEvent.target);\r\n this._adjustDistance(e, e.velocity);\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", e.velocity).done(this._endAction)\r\n },\r\n handleCancel: function(e) {\r\n this._resetActive();\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", {\r\n x: 0,\r\n y: 0\r\n })\r\n },\r\n handleStop: function() {\r\n this._resetActive();\r\n this._eventHandler(\"stop\")\r\n },\r\n handleScroll: function() {\r\n this._updateRtlConfig();\r\n this._scrollAction()\r\n },\r\n _attachKeyboardHandler: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD));\r\n if (!this.option(\"disabled\") && this.option(\"useKeyboard\")) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"keydown\", SCROLLABLE_SIMULATED_KEYBOARD), this._keyDownHandler.bind(this))\r\n }\r\n },\r\n _keyDownHandler: function(e) {\r\n clearTimeout(this._updateHandlerTimeout);\r\n this._updateHandlerTimeout = setTimeout(() => {\r\n if (normalizeKeyName(e) === KEY_CODES.TAB) {\r\n this._eachScroller(scroller => {\r\n scroller._updateHandler()\r\n })\r\n }\r\n });\r\n if (!this._$container.is(domAdapter.getActiveElement())) {\r\n return\r\n }\r\n var handled = true;\r\n switch (normalizeKeyName(e)) {\r\n case KEY_CODES.DOWN:\r\n this._scrollByLine({\r\n y: 1\r\n });\r\n break;\r\n case KEY_CODES.UP:\r\n this._scrollByLine({\r\n y: -1\r\n });\r\n break;\r\n case KEY_CODES.RIGHT:\r\n this._scrollByLine({\r\n x: 1\r\n });\r\n break;\r\n case KEY_CODES.LEFT:\r\n this._scrollByLine({\r\n x: -1\r\n });\r\n break;\r\n case KEY_CODES.PAGE_DOWN:\r\n this._scrollByPage(1);\r\n break;\r\n case KEY_CODES.PAGE_UP:\r\n this._scrollByPage(-1);\r\n break;\r\n case KEY_CODES.HOME:\r\n this._scrollToHome();\r\n break;\r\n case KEY_CODES.END:\r\n this._scrollToEnd();\r\n break;\r\n default:\r\n handled = false\r\n }\r\n if (handled) {\r\n e.stopPropagation();\r\n e.preventDefault()\r\n }\r\n },\r\n _scrollByLine: function(lines) {\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n var scrollOffset = SCROLL_LINE_HEIGHT;\r\n if (devicePixelRatio) {\r\n scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100\r\n }\r\n this.scrollBy({\r\n top: (lines.y || 0) * -scrollOffset,\r\n left: (lines.x || 0) * -scrollOffset\r\n })\r\n },\r\n _scrollByPage: function(page) {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n var getter = \"width\" === dimension ? getWidth : getHeight;\r\n distance[prop] = page * -getter(this._$container);\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 var getter = \"width\" === dimension ? getWidth : getHeight;\r\n distance[prop] = getter(this._$content) - getter(this._$container);\r\n this._component.scrollTo(distance)\r\n },\r\n createActions: function() {\r\n this._startAction = this._createActionHandler(\"onStart\");\r\n this._endAction = this._createActionHandler(\"onEnd\");\r\n this._updateAction = this._createActionHandler(\"onUpdated\");\r\n this._createScrollerActions()\r\n },\r\n _createScrollerActions: function() {\r\n this._scrollAction = this._createActionHandler(\"onScroll\");\r\n this._bounceAction = this._createActionHandler(\"onBounce\");\r\n this._eventHandler(\"createActions\", {\r\n scroll: this._scrollAction,\r\n bounce: this._bounceAction\r\n })\r\n },\r\n _createActionHandler: function(optionName) {\r\n var actionHandler = this._createActionByOption(optionName);\r\n return () => {\r\n actionHandler(extend(this._createActionArgs(), arguments))\r\n }\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n horizontal: scrollerX,\r\n vertical: scrollerY\r\n } = this._scrollers;\r\n var offset = this._getScrollOffset();\r\n this._scrollOffset = {\r\n top: scrollerY && offset.top,\r\n left: scrollerX && offset.left\r\n };\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._scrollOffset,\r\n reachedLeft: scrollerX && scrollerX._reachedMax(),\r\n reachedRight: scrollerX && scrollerX._reachedMin(),\r\n reachedTop: scrollerY && scrollerY._reachedMax(),\r\n reachedBottom: scrollerY && scrollerY._reachedMin()\r\n }\r\n },\r\n _getScrollOffset() {\r\n return {\r\n top: -this.location().top,\r\n left: -this.location().left\r\n }\r\n },\r\n _eventHandler: function(eventName) {\r\n var args = [].slice.call(arguments).slice(1);\r\n var deferreds = map(this._scrollers, scroller => scroller[\"_\" + eventName + \"Handler\"].apply(scroller, args));\r\n return when.apply($, deferreds).promise()\r\n },\r\n location: function() {\r\n var location = locate(this._$content);\r\n location.top -= this._$container.scrollTop();\r\n location.left -= this._$container.scrollLeft();\r\n return location\r\n },\r\n disabledChanged: function() {\r\n this._attachCursorHandlers()\r\n },\r\n _attachCursorHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n if (!this.option(\"disabled\") && this._isHoverMode()) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseenter\", SCROLLABLE_SIMULATED_CURSOR), this._cursorEnterHandler.bind(this));\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseleave\", SCROLLABLE_SIMULATED_CURSOR), this._cursorLeaveHandler.bind(this))\r\n }\r\n },\r\n _isHoverMode: function() {\r\n return \"onHover\" === this.option(\"showScrollbar\")\r\n },\r\n _cursorEnterHandler: function(e) {\r\n e = e || {};\r\n e.originalEvent = e.originalEvent || {};\r\n if (activeScrollable || e.originalEvent._hoverHandled) {\r\n return\r\n }\r\n if (hoveredScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n hoveredScrollable = this;\r\n this._eventHandler(\"cursorEnter\");\r\n e.originalEvent._hoverHandled = true\r\n },\r\n _cursorLeaveHandler: function(e) {\r\n if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {\r\n return\r\n }\r\n this._eventHandler(\"cursorLeave\");\r\n hoveredScrollable = null;\r\n this._refreshCursorState(e && e.relatedTarget)\r\n },\r\n _refreshCursorState: function(target) {\r\n if (!this._isHoverMode() && (!target || activeScrollable)) {\r\n return\r\n }\r\n var $target = $(target);\r\n var $scrollable = $target.closest(\".\".concat(SCROLLABLE_SIMULATED_CLASS, \":not(.dx-state-disabled)\"));\r\n var targetScrollable = $scrollable.length && $scrollable.data(SCROLLABLE_STRATEGY);\r\n if (hoveredScrollable && hoveredScrollable !== targetScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n if (targetScrollable) {\r\n targetScrollable._cursorEnterHandler()\r\n }\r\n },\r\n update: function() {\r\n var result = this._eventHandler(\"update\").done(this._updateAction);\r\n return when(result, deferUpdate(() => {\r\n var allowedDirections = this._allowedDirections();\r\n deferRender(() => {\r\n var touchDirection = allowedDirections.vertical ? \"pan-x\" : \"\";\r\n touchDirection = allowedDirections.horizontal ? \"pan-y\" : touchDirection;\r\n touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? \"none\" : touchDirection;\r\n this._$container.css(\"touchAction\", touchDirection)\r\n });\r\n return when().promise()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n var bounceEnabled = this.option(\"bounceEnabled\");\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n return {\r\n vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),\r\n horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)\r\n }\r\n },\r\n _updateBounds: function() {\r\n this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()\r\n },\r\n _isHorizontalAndRtlEnabled: function() {\r\n return this.option(\"rtlEnabled\") && this.option(\"direction\") !== VERTICAL\r\n },\r\n updateRtlPosition: function(needInitializeRtlConfig) {\r\n if (needInitializeRtlConfig) {\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 }\r\n this._updateBounds();\r\n if (this._isHorizontalAndRtlEnabled()) {\r\n deferUpdate(() => {\r\n var scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight;\r\n if (scrollLeft <= 0) {\r\n scrollLeft = 0;\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left\r\n }\r\n deferRender(() => {\r\n if (this._getScrollOffset().left !== scrollLeft) {\r\n this._rtlConfig.skipUpdating = true;\r\n this._component.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 _updateRtlConfig: function() {\r\n if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {\r\n var {\r\n clientWidth: clientWidth,\r\n scrollLeft: scrollLeft\r\n } = this._$container.get(0);\r\n var windowPixelRatio = this._getWindowDevicePixelRatio();\r\n if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft\r\n }\r\n this._rtlConfig.clientWidth = clientWidth;\r\n this._rtlConfig.windowPixelRatio = windowPixelRatio\r\n }\r\n },\r\n _getWindowDevicePixelRatio: function() {\r\n return hasWindow() ? getWindow().devicePixelRatio : 1\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 this._updateRtlConfig()\r\n },\r\n validate: function(e) {\r\n if (isDxMouseWheelEvent(e) && isCommandKeyPressed(e)) {\r\n return false\r\n }\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"bounceEnabled\")) {\r\n return true\r\n }\r\n return isDxMouseWheelEvent(e) ? this._validateWheel(e) : this._validateMove(e)\r\n },\r\n _validateWheel: function(e) {\r\n var scroller = this._scrollers[this._wheelDirection(e)];\r\n var reachedMin = scroller._reachedMin();\r\n var reachedMax = scroller._reachedMax();\r\n var contentGreaterThanContainer = !reachedMin || !reachedMax;\r\n var locatedNotAtBound = !reachedMin && !reachedMax;\r\n var scrollFromMin = reachedMin && e.delta > 0;\r\n var scrollFromMax = reachedMax && e.delta < 0;\r\n var validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);\r\n validated = validated || void 0 !== this._validateWheelTimer;\r\n if (validated) {\r\n clearTimeout(this._validateWheelTimer);\r\n this._validateWheelTimer = setTimeout(() => {\r\n this._validateWheelTimer = void 0\r\n }, VALIDATE_WHEEL_TIMEOUT)\r\n }\r\n return validated\r\n },\r\n _validateMove: function(e) {\r\n if (!this.option(\"scrollByContent\") && !$(e.target).closest(\".\".concat(SCROLLABLE_SCROLLBAR_CLASS)).length) {\r\n return false\r\n }\r\n return this._allowedDirection()\r\n },\r\n getDirection: function(e) {\r\n return isDxMouseWheelEvent(e) ? this._wheelDirection(e) : this._allowedDirection()\r\n },\r\n _wheelProp: function() {\r\n return this._wheelDirection() === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _wheelDirection: function(e) {\r\n switch (this.option(\"direction\")) {\r\n case HORIZONTAL:\r\n return HORIZONTAL;\r\n case VERTICAL:\r\n return VERTICAL;\r\n default:\r\n return e && e.shiftKey ? HORIZONTAL : VERTICAL\r\n }\r\n },\r\n dispose: function() {\r\n this._resetActive();\r\n if (hoveredScrollable === this) {\r\n hoveredScrollable = null\r\n }\r\n this._eventHandler(\"dispose\");\r\n this._detachEventHandlers();\r\n this._$element.removeClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._eventForUserAction = null;\r\n clearTimeout(this._validateWheelTimer);\r\n clearTimeout(this._updateHandlerTimeout)\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n eventsEngine.off(this._$container, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/editors/editor.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport Component from \"../common/component\";\r\nimport ValidationEngine from \"../../../ui/validation_engine\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n data\r\n} from \"../../../core/element_data\";\r\nimport Callbacks from \"../../../core/utils/callbacks\";\r\nimport OldEditor from \"../../../ui/editor/editor\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar VALIDATION_TARGET = \"dx-validation-target\";\r\nexport default class Editor extends Component {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onFocusIn = () => {\r\n var isValidationMessageShownOnFocus = \"auto\" === this.option(\"validationMessageMode\");\r\n if (isValidationMessageShownOnFocus) {\r\n var $validationMessageWrapper = $(\".dx-invalid-message.dx-overlay-wrapper\");\r\n null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass(INVALID_MESSAGE_AUTO);\r\n if (this.showValidationMessageTimeout) {\r\n clearTimeout(this.showValidationMessageTimeout)\r\n }\r\n this.showValidationMessageTimeout = setTimeout(() => {\r\n null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass(INVALID_MESSAGE_AUTO)\r\n }, 150)\r\n }\r\n };\r\n props.saveValueChangeEvent = e => {\r\n this._valueChangeEventInstance = e\r\n };\r\n return props\r\n }\r\n _createElement(element) {\r\n super._createElement(element);\r\n this.showValidationMessageTimeout = void 0;\r\n this.validationRequest = Callbacks();\r\n data(this.$element()[0], VALIDATION_TARGET, this)\r\n }\r\n _render() {\r\n var _this$option;\r\n null === (_this$option = this.option(\"_onMarkupRendered\")) || void 0 === _this$option ? void 0 : _this$option()\r\n }\r\n _init() {\r\n super._init();\r\n this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }\r\n _initOptions(options) {\r\n super._initOptions(options);\r\n this.option(ValidationEngine.initValidationOptions(options))\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n validationMessageOffset: {\r\n h: 0,\r\n v: 0\r\n },\r\n validationTooltipOptions: {}\r\n })\r\n }\r\n _bindInnerWidgetOptions(innerWidget, optionsContainer) {\r\n var innerWidgetOptions = extend({}, innerWidget.option());\r\n var syncOptions = () => this._silent(optionsContainer, innerWidgetOptions);\r\n syncOptions();\r\n innerWidget.on(\"optionChanged\", syncOptions)\r\n }\r\n _raiseValidation(value, previousValue) {\r\n var areValuesEmpty = !isDefined(value) && !isDefined(previousValue);\r\n if (value !== previousValue && !areValuesEmpty) {\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n })\r\n }\r\n }\r\n _raiseValueChangeAction(value, previousValue) {\r\n var _this$_valueChangeAct;\r\n null === (_this$_valueChangeAct = this._valueChangeAction) || void 0 === _this$_valueChangeAct ? void 0 : _this$_valueChangeAct.call(this, {\r\n element: this.$element(),\r\n previousValue: previousValue,\r\n value: value,\r\n event: this._valueChangeEventInstance\r\n });\r\n this._valueChangeEventInstance = void 0\r\n }\r\n _optionChanged(option) {\r\n var {\r\n name: name,\r\n previousValue: previousValue,\r\n value: value\r\n } = option;\r\n if (name && void 0 !== this._getActionConfigs()[name]) {\r\n this._addAction(name)\r\n }\r\n switch (name) {\r\n case \"value\":\r\n this._raiseValidation(value, previousValue);\r\n this._raiseValueChangeAction(value, previousValue);\r\n break;\r\n case \"onValueChanged\":\r\n this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n break;\r\n case \"isValid\":\r\n case \"validationError\":\r\n case \"validationErrors\":\r\n case \"validationStatus\":\r\n this.option(ValidationEngine.synchronizeValidationOptions(option, this.option()))\r\n }\r\n super._optionChanged(option)\r\n }\r\n reset() {\r\n var {\r\n value: value\r\n } = this._getDefaultOptions();\r\n this.option({\r\n value: value\r\n })\r\n }\r\n _dispose() {\r\n super._dispose();\r\n data(this.element(), VALIDATION_TARGET, null);\r\n if (this.showValidationMessageTimeout) {\r\n clearTimeout(this.showValidationMessageTimeout)\r\n }\r\n }\r\n}\r\nvar prevIsEditor = OldEditor.isEditor;\r\nvar newIsEditor = instance => prevIsEditor(instance) || instance instanceof Editor;\r\nEditor.isEditor = newIsEditor;\r\nOldEditor.isEditor = newIsEditor;\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/editors/check_box.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Editor from \"./editor\";\r\nexport default class CheckBox extends Editor {\r\n _useTemplates() {\r\n return false\r\n }\r\n _isFocused() {\r\n var focusTarget = this.$element()[0];\r\n return focusTarget.classList.contains(\"dx-state-focused\")\r\n }\r\n getSupportedKeyNames() {\r\n return [\"space\"]\r\n }\r\n getProps() {\r\n var props = super.getProps();\r\n if (null !== props.value) {\r\n props.value = Boolean(props.value)\r\n }\r\n return props\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/overlays/validation_message.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"boundary\", \"className\", \"container\", \"contentId\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"mode\", \"offset\", \"onClick\", \"onKeyDown\", \"positionRequest\", \"rtlEnabled\", \"tabIndex\", \"target\", \"validationErrors\", \"visible\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport LegacyValidationMessage from \"../../../ui/validation_message\";\r\nimport {\r\n DomComponentWrapper\r\n} from \"../common/dom_component_wrapper\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"../common/base_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: props,\r\n restAttributes: restAttributes\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, DomComponentWrapper, _extends({\r\n componentType: LegacyValidationMessage,\r\n componentProps: props,\r\n templateNames: []\r\n }, restAttributes)))\r\n};\r\nexport var ValidationMessageProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n mode: \"auto\",\r\n get offset() {\r\n return {\r\n h: 0,\r\n v: 0\r\n }\r\n },\r\n isReactComponentWrapper: true\r\n})));\r\nexport class ValidationMessage extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nValidationMessage.defaultProps = ValidationMessageProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/internal/editor.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"aria\", \"children\", \"className\", \"classes\", \"defaultValue\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"isValid\", \"name\", \"onClick\", \"onFocusIn\", \"onKeyDown\", \"readOnly\", \"rtlEnabled\", \"tabIndex\", \"validationError\", \"validationErrors\", \"validationMessageMode\", \"validationStatus\", \"value\", \"valueChange\", \"visible\", \"width\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport Guid from \"../../../../core/guid\";\r\nimport {\r\n Widget,\r\n WidgetProps\r\n} from \"../../common/widget\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"../../common/base_props\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n ValidationMessage\r\n} from \"../../overlays/validation_message\";\r\nvar getCssClasses = model => {\r\n var {\r\n classes: classes,\r\n isValid: isValid,\r\n readOnly: readOnly\r\n } = model;\r\n var classesMap = {\r\n \"dx-state-readonly\": !!readOnly,\r\n \"dx-invalid\": !isValid,\r\n [\"\".concat(classes)]: !!classes\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var {\r\n aria: aria,\r\n cssClasses: classes,\r\n isValidationMessageVisible: isValidationMessageVisible,\r\n onFocusIn: onFocusIn,\r\n props: {\r\n accessKey: accessKey,\r\n activeStateEnabled: activeStateEnabled,\r\n children: children,\r\n className: className,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n height: height,\r\n hint: hint,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onClick: onClick,\r\n onKeyDown: onKeyDown,\r\n rtlEnabled: rtlEnabled,\r\n tabIndex: tabIndex,\r\n validationMessageMode: validationMessageMode,\r\n visible: visible,\r\n width: width\r\n },\r\n restAttributes: restAttributes,\r\n rootElementRef: rootElementRef,\r\n validationErrors: validationErrors,\r\n validationMessageGuid: validationMessageGuid,\r\n validationMessageTarget: validationMessageTarget,\r\n widgetRef: widgetRef\r\n } = viewModel;\r\n return normalizeProps(createComponentVNode(2, Widget, _extends({\r\n rootElementRef: rootElementRef,\r\n aria: aria,\r\n classes: classes,\r\n activeStateEnabled: activeStateEnabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n accessKey: accessKey,\r\n className: className,\r\n rtlEnabled: rtlEnabled,\r\n hint: hint,\r\n disabled: disabled,\r\n height: height,\r\n width: width,\r\n onFocusIn: onFocusIn,\r\n onClick: onClick,\r\n onKeyDown: onKeyDown,\r\n tabIndex: tabIndex,\r\n visible: visible\r\n }, restAttributes, {\r\n children: createFragment([children, isValidationMessageVisible && createComponentVNode(2, ValidationMessage, {\r\n validationErrors: validationErrors,\r\n mode: validationMessageMode,\r\n positionRequest: \"below\",\r\n rtlEnabled: rtlEnabled,\r\n target: validationMessageTarget,\r\n boundary: validationMessageTarget,\r\n container: validationMessageTarget,\r\n contentId: validationMessageGuid\r\n })], 0)\r\n }), null, widgetRef))\r\n};\r\nexport var EditorProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n readOnly: false,\r\n name: \"\",\r\n validationError: null,\r\n validationErrors: null,\r\n validationMessageMode: \"auto\",\r\n validationStatus: \"valid\",\r\n isValid: true,\r\n defaultValue: null,\r\n valueChange: () => {}\r\n})));\r\nexport var EditorPropsType = {\r\n get readOnly() {\r\n return EditorProps.readOnly\r\n },\r\n get name() {\r\n return EditorProps.name\r\n },\r\n get validationError() {\r\n return EditorProps.validationError\r\n },\r\n get validationErrors() {\r\n return EditorProps.validationErrors\r\n },\r\n get validationMessageMode() {\r\n return EditorProps.validationMessageMode\r\n },\r\n get validationStatus() {\r\n return EditorProps.validationStatus\r\n },\r\n get isValid() {\r\n return EditorProps.isValid\r\n },\r\n get defaultValue() {\r\n return EditorProps.defaultValue\r\n },\r\n get valueChange() {\r\n return EditorProps.valueChange\r\n },\r\n get className() {\r\n return EditorProps.className\r\n },\r\n get activeStateEnabled() {\r\n return EditorProps.activeStateEnabled\r\n },\r\n get disabled() {\r\n return EditorProps.disabled\r\n },\r\n get focusStateEnabled() {\r\n return EditorProps.focusStateEnabled\r\n },\r\n get hoverStateEnabled() {\r\n return EditorProps.hoverStateEnabled\r\n },\r\n get rtlEnabled() {\r\n return EditorProps.rtlEnabled\r\n },\r\n get tabIndex() {\r\n return EditorProps.tabIndex\r\n },\r\n get visible() {\r\n return EditorProps.visible\r\n },\r\n get aria() {\r\n return WidgetProps.aria\r\n },\r\n get classes() {\r\n return WidgetProps.classes\r\n }\r\n};\r\nimport {\r\n convertRulesToOptions\r\n} from \"../../../../core/options/utils\";\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class Editor extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.widgetRef = infernoCreateRef();\r\n this.rootElementRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.state = {\r\n validationMessageGuid: \"dx-\".concat(new Guid),\r\n isValidationMessageVisible: false,\r\n value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue\r\n };\r\n this.updateValidationMessageVisibility = this.updateValidationMessageVisibility.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.blur = this.blur.bind(this);\r\n this.onFocusIn = this.onFocusIn.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateValidationMessageVisibility, [this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors])\r\n }\r\n updateValidationMessageVisibility() {\r\n this.setState(__state_argument => ({\r\n isValidationMessageVisible: this.shouldShowValidationMessage\r\n }))\r\n }\r\n onFocusIn(event) {\r\n var {\r\n onFocusIn: onFocusIn\r\n } = this.props;\r\n null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(event)\r\n }\r\n get cssClasses() {\r\n return \"\".concat(getCssClasses(_extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n })))\r\n }\r\n get shouldShowValidationMessage() {\r\n var _this$validationError;\r\n var {\r\n isValid: isValid,\r\n validationStatus: validationStatus\r\n } = this.props;\r\n var validationErrors = null !== (_this$validationError = this.validationErrors) && void 0 !== _this$validationError ? _this$validationError : [];\r\n var isEditorValid = isValid && \"invalid\" !== validationStatus;\r\n return !isEditorValid && validationErrors.length > 0\r\n }\r\n get aria() {\r\n var {\r\n isValid: isValid,\r\n readOnly: readOnly\r\n } = this.props;\r\n var result = {\r\n readonly: readOnly ? \"true\" : \"false\",\r\n invalid: !isValid ? \"true\" : \"false\"\r\n };\r\n if (this.shouldShowValidationMessage) {\r\n result.describedBy = this.state.validationMessageGuid\r\n }\r\n return _extends({}, result, this.props.aria)\r\n }\r\n get validationErrors() {\r\n if (void 0 !== this.__getterCache.validationErrors) {\r\n return this.__getterCache.validationErrors\r\n }\r\n return this.__getterCache.validationErrors = (() => {\r\n var {\r\n validationError: validationError,\r\n validationErrors: validationErrors\r\n } = this.props;\r\n var allValidationErrors = validationErrors && [...validationErrors];\r\n if (!allValidationErrors && validationError) {\r\n allValidationErrors = [_extends({}, validationError)]\r\n }\r\n return allValidationErrors\r\n })()\r\n }\r\n get validationMessageTarget() {\r\n var _this$rootElementRef;\r\n return null === (_this$rootElementRef = this.rootElementRef) || void 0 === _this$rootElementRef ? void 0 : _this$rootElementRef.current\r\n }\r\n get restAttributes() {\r\n var _this$props$value = _extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$value, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n this.widgetRef.current.focus()\r\n }\r\n blur() {\r\n this.widgetRef.current.blur()\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.validationError !== nextProps.validationError || this.props.validationErrors !== nextProps.validationErrors) {\r\n this.__getterCache.validationErrors = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n validationMessageGuid: this.state.validationMessageGuid,\r\n isValidationMessageVisible: this.state.isValidationMessageVisible,\r\n rootElementRef: this.rootElementRef,\r\n widgetRef: this.widgetRef,\r\n onFocusIn: this.onFocusIn,\r\n cssClasses: this.cssClasses,\r\n shouldShowValidationMessage: this.shouldShowValidationMessage,\r\n aria: this.aria,\r\n validationErrors: this.validationErrors,\r\n validationMessageTarget: this.validationMessageTarget,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\n\r\nfunction __processTwoWayProps(defaultProps) {\r\n var twoWayProps = [\"value\"];\r\n return Object.keys(defaultProps).reduce((props, propName) => {\r\n var propValue = defaultProps[propName];\r\n var defaultPropName = twoWayProps.some(p => p === propName) ? \"default\" + propName.charAt(0).toUpperCase() + propName.slice(1) : propName;\r\n props[defaultPropName] = propValue;\r\n return props\r\n }, {})\r\n}\r\nEditor.defaultProps = EditorPropsType;\r\nvar __defaultOptionRules = [];\r\nexport function defaultOptions(rule) {\r\n __defaultOptionRules.push(rule);\r\n Editor.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(Editor.defaultProps), Object.getOwnPropertyDescriptors(__processTwoWayProps(convertRulesToOptions(__defaultOptionRules)))))\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isMaterial,\r\n isCompact,\r\n current\r\n} from \"../../../../ui/themes\";\r\nvar defaultIconSizes = [\r\n [22, 16],\r\n [18, 16]\r\n];\r\nvar defaultFontSizes = [\r\n [\r\n [12, 8],\r\n [20, 18]\r\n ],\r\n [\r\n [16, 10],\r\n [16, 14]\r\n ]\r\n];\r\n\r\nfunction getThemeType() {\r\n var theme = current();\r\n return {\r\n isMaterialTheme: isMaterial(theme),\r\n isCompactTheme: isCompact(theme)\r\n }\r\n}\r\n\r\nfunction getDefaultIconSize() {\r\n var {\r\n isCompactTheme: isCompactTheme,\r\n isMaterialTheme: isMaterialTheme\r\n } = getThemeType();\r\n return defaultIconSizes[+isMaterialTheme][+isCompactTheme]\r\n}\r\n\r\nfunction getDefaultFontSize(isChecked) {\r\n var {\r\n isCompactTheme: isCompactTheme,\r\n isMaterialTheme: isMaterialTheme\r\n } = getThemeType();\r\n return defaultFontSizes[+isChecked][+isMaterialTheme][+isCompactTheme]\r\n}\r\n\r\nfunction getFontSizeByIconSize(iconSize, isChecked) {\r\n var defaultFontSize = getDefaultFontSize(isChecked);\r\n var defaultIconSize = getDefaultIconSize();\r\n var fontToIconSizeRatio = defaultFontSize / defaultIconSize;\r\n return Math.ceil(fontToIconSizeRatio * iconSize)\r\n}\r\nexport {\r\n getDefaultFontSize,\r\n getDefaultIconSize,\r\n getFontSizeByIconSize\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/check_box_icon.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"isChecked\", \"size\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent,\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport getElementComputedStyle from \"../../../utils/get_computed_style\";\r\nimport {\r\n hasWindow\r\n} from \"../../../../core/utils/window\";\r\nimport {\r\n normalizeStyleProp\r\n} from \"../../../../core/utils/style\";\r\nimport {\r\n isNumeric as isNumber\r\n} from \"../../../../core/utils/type\";\r\nimport {\r\n getFontSizeByIconSize\r\n} from \"./utils\";\r\nexport var viewFunction = viewModel => {\r\n var {\r\n cssStyles: cssStyles,\r\n elementRef: elementRef\r\n } = viewModel;\r\n return createVNode(1, \"span\", \"dx-checkbox-icon\", null, 1, {\r\n style: normalizeStyles(cssStyles)\r\n }, null, elementRef)\r\n};\r\nexport var CheckBoxIconProps = {\r\n isChecked: false\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class CheckBoxIcon extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.elementRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.updateFontSize = this.updateFontSize.bind(this);\r\n this.setIconFontSize = this.setIconFontSize.bind(this);\r\n this.getIconSize = this.getIconSize.bind(this);\r\n this.getComputedIconSize = this.getComputedIconSize.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateFontSize, [this.props.isChecked, this.props.size])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.isChecked, this.props.size])\r\n }\r\n updateFontSize() {\r\n var {\r\n isChecked: isChecked,\r\n size: size\r\n } = this.props;\r\n if (hasWindow() && size) {\r\n var newIconSize = this.getIconSize(size);\r\n var newFontSize = getFontSizeByIconSize(newIconSize, isChecked);\r\n this.setIconFontSize(newFontSize)\r\n }\r\n }\r\n setIconFontSize(fontSize) {\r\n var element = this.elementRef.current;\r\n element.style.fontSize = \"\".concat(fontSize, \"px\")\r\n }\r\n getIconSize(size) {\r\n if (isNumber(size)) {\r\n return size\r\n }\r\n if (size.endsWith(\"px\")) {\r\n return parseInt(size, 10)\r\n }\r\n return this.getComputedIconSize()\r\n }\r\n getComputedIconSize() {\r\n var element = this.elementRef.current;\r\n var iconComputedStyle = getElementComputedStyle(element);\r\n var computedIconSize = parseInt(null === iconComputedStyle || void 0 === iconComputedStyle ? void 0 : iconComputedStyle.width, 10);\r\n return computedIconSize\r\n }\r\n get cssStyles() {\r\n if (void 0 !== this.__getterCache.cssStyles) {\r\n return this.__getterCache.cssStyles\r\n }\r\n return this.__getterCache.cssStyles = (() => {\r\n var {\r\n size: size\r\n } = this.props;\r\n var width = normalizeStyleProp(\"width\", size);\r\n var height = normalizeStyleProp(\"height\", size);\r\n return {\r\n height: height,\r\n width: width\r\n }\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.size !== nextProps.size) {\r\n this.__getterCache.cssStyles = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n elementRef: this.elementRef,\r\n setIconFontSize: this.setIconFontSize,\r\n getIconSize: this.getIconSize,\r\n getComputedIconSize: this.getComputedIconSize,\r\n cssStyles: this.cssStyles,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nCheckBoxIcon.defaultProps = CheckBoxIconProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/check_box.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"aria\", \"className\", \"defaultValue\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"iconSize\", \"isValid\", \"name\", \"onClick\", \"onFocusIn\", \"onKeyDown\", \"readOnly\", \"rtlEnabled\", \"saveValueChangeEvent\", \"tabIndex\", \"text\", \"validationError\", \"validationErrors\", \"validationMessageMode\", \"validationStatus\", \"value\", \"valueChange\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createDefaultOptionRules,\r\n convertRulesToOptions\r\n} from \"../../../../core/options/utils\";\r\nimport devices from \"../../../../core/devices\";\r\nimport {\r\n Editor,\r\n EditorProps\r\n} from \"../internal/editor\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n CheckBoxIcon\r\n} from \"./check_box_icon\";\r\nimport {\r\n WidgetProps\r\n} from \"../../common/widget\";\r\nvar getCssClasses = model => {\r\n var {\r\n text: text,\r\n value: value\r\n } = model;\r\n var checked = value;\r\n var indeterminate = null === checked;\r\n var classesMap = {\r\n \"dx-checkbox\": true,\r\n \"dx-checkbox-checked\": true === checked,\r\n \"dx-checkbox-has-text\": !!text,\r\n \"dx-checkbox-indeterminate\": indeterminate\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var {\r\n aria: aria,\r\n cssClasses: classes,\r\n editorRef: editorRef,\r\n keyDown: onKeyDown,\r\n onWidgetClick: onClick,\r\n props: {\r\n accessKey: accessKey,\r\n activeStateEnabled: activeStateEnabled,\r\n className: className,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n height: height,\r\n hint: hint,\r\n hoverStateEnabled: hoverStateEnabled,\r\n iconSize: iconSize,\r\n isValid: isValid,\r\n name: name,\r\n onFocusIn: onFocusIn,\r\n readOnly: readOnly,\r\n rtlEnabled: rtlEnabled,\r\n tabIndex: tabIndex,\r\n text: text,\r\n validationError: validationError,\r\n validationErrors: validationErrors,\r\n validationMessageMode: validationMessageMode,\r\n validationStatus: validationStatus,\r\n value: value,\r\n visible: visible,\r\n width: width\r\n },\r\n restAttributes: restAttributes\r\n } = viewModel;\r\n return normalizeProps(createComponentVNode(2, Editor, _extends({\r\n aria: aria,\r\n classes: classes,\r\n onClick: onClick,\r\n onKeyDown: onKeyDown,\r\n accessKey: accessKey,\r\n activeStateEnabled: activeStateEnabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n className: className,\r\n disabled: disabled,\r\n readOnly: readOnly,\r\n hint: hint,\r\n height: height,\r\n width: width,\r\n rtlEnabled: rtlEnabled,\r\n tabIndex: tabIndex,\r\n visible: visible,\r\n validationError: validationError,\r\n validationErrors: validationErrors,\r\n validationMessageMode: validationMessageMode,\r\n validationStatus: validationStatus,\r\n isValid: isValid,\r\n onFocusIn: onFocusIn\r\n }, restAttributes, {\r\n children: createFragment([normalizeProps(createVNode(64, \"input\", null, null, 1, _extends({\r\n type: \"hidden\",\r\n value: \"\".concat(value)\r\n }, name && {\r\n name: name\r\n }))), createVNode(1, \"div\", \"dx-checkbox-container\", [createComponentVNode(2, CheckBoxIcon, {\r\n size: iconSize,\r\n isChecked: true === value\r\n }), text && createVNode(1, \"span\", \"dx-checkbox-text\", text, 0)], 0)], 4)\r\n }), null, editorRef))\r\n};\r\nexport var CheckBoxProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(EditorProps), Object.getOwnPropertyDescriptors({\r\n text: \"\",\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n defaultValue: false,\r\n valueChange: () => {}\r\n})));\r\nexport var CheckBoxPropsType = {\r\n get text() {\r\n return CheckBoxProps.text\r\n },\r\n get activeStateEnabled() {\r\n return CheckBoxProps.activeStateEnabled\r\n },\r\n get hoverStateEnabled() {\r\n return CheckBoxProps.hoverStateEnabled\r\n },\r\n get defaultValue() {\r\n return CheckBoxProps.defaultValue\r\n },\r\n get valueChange() {\r\n return CheckBoxProps.valueChange\r\n },\r\n get readOnly() {\r\n return CheckBoxProps.readOnly\r\n },\r\n get name() {\r\n return CheckBoxProps.name\r\n },\r\n get validationError() {\r\n return CheckBoxProps.validationError\r\n },\r\n get validationErrors() {\r\n return CheckBoxProps.validationErrors\r\n },\r\n get validationMessageMode() {\r\n return CheckBoxProps.validationMessageMode\r\n },\r\n get validationStatus() {\r\n return CheckBoxProps.validationStatus\r\n },\r\n get isValid() {\r\n return CheckBoxProps.isValid\r\n },\r\n get className() {\r\n return CheckBoxProps.className\r\n },\r\n get disabled() {\r\n return CheckBoxProps.disabled\r\n },\r\n get focusStateEnabled() {\r\n return CheckBoxProps.focusStateEnabled\r\n },\r\n get rtlEnabled() {\r\n return CheckBoxProps.rtlEnabled\r\n },\r\n get tabIndex() {\r\n return CheckBoxProps.tabIndex\r\n },\r\n get visible() {\r\n return CheckBoxProps.visible\r\n },\r\n get aria() {\r\n return WidgetProps.aria\r\n }\r\n};\r\nexport var defaultOptionRules = createDefaultOptionRules([{\r\n device: () => \"desktop\" === devices.real().deviceType && !devices.isSimulator(),\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n}]);\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class CheckBox extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.editorRef = infernoCreateRef();\r\n this.state = {\r\n value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue\r\n };\r\n this.focus = this.focus.bind(this);\r\n this.blur = this.blur.bind(this);\r\n this.onWidgetClick = this.onWidgetClick.bind(this);\r\n this.keyDown = this.keyDown.bind(this)\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n onWidgetClick(event) {\r\n var _ref;\r\n var {\r\n readOnly: readOnly,\r\n saveValueChangeEvent: saveValueChangeEvent\r\n } = this.props;\r\n var value = null !== (_ref = void 0 !== this.props.value ? this.props.value : this.state.value) && void 0 !== _ref ? _ref : false;\r\n if (!readOnly) {\r\n null === saveValueChangeEvent || void 0 === saveValueChangeEvent ? void 0 : saveValueChangeEvent(event);\r\n var __newValue;\r\n this.setState(__state_argument => {\r\n __newValue = !value;\r\n return {\r\n value: __newValue\r\n }\r\n });\r\n this.props.valueChange(__newValue)\r\n }\r\n }\r\n keyDown(e) {\r\n var {\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = e;\r\n var result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e);\r\n if (null !== result && void 0 !== result && result.cancel) {\r\n return result\r\n }\r\n if (\"space\" === keyName || \"space\" === which) {\r\n originalEvent.preventDefault();\r\n this.onWidgetClick(originalEvent)\r\n }\r\n return\r\n }\r\n get cssClasses() {\r\n return getCssClasses(_extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }))\r\n }\r\n get aria() {\r\n var checked = true === (void 0 !== this.props.value ? this.props.value : this.state.value);\r\n var indeterminate = null === (void 0 !== this.props.value ? this.props.value : this.state.value);\r\n var result = {\r\n role: \"checkbox\",\r\n checked: indeterminate ? \"mixed\" : \"\".concat(checked)\r\n };\r\n return _extends({}, result, this.props.aria)\r\n }\r\n get restAttributes() {\r\n var _this$props$value = _extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$value, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n this.editorRef.current.focus()\r\n }\r\n blur() {\r\n this.editorRef.current.blur()\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n editorRef: this.editorRef,\r\n onWidgetClick: this.onWidgetClick,\r\n keyDown: this.keyDown,\r\n cssClasses: this.cssClasses,\r\n aria: this.aria,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\n\r\nfunction __processTwoWayProps(defaultProps) {\r\n var twoWayProps = [\"value\"];\r\n return Object.keys(defaultProps).reduce((props, propName) => {\r\n var propValue = defaultProps[propName];\r\n var defaultPropName = twoWayProps.some(p => p === propName) ? \"default\" + propName.charAt(0).toUpperCase() + propName.slice(1) : propName;\r\n props[defaultPropName] = propValue;\r\n return props\r\n }, {})\r\n}\r\nCheckBox.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(CheckBoxPropsType), Object.getOwnPropertyDescriptors(_extends({}, __processTwoWayProps(convertRulesToOptions(defaultOptionRules))))));\r\nvar __defaultOptionRules = [];\r\nexport function defaultOptions(rule) {\r\n __defaultOptionRules.push(rule);\r\n CheckBox.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(CheckBox.defaultProps), Object.getOwnPropertyDescriptors(__processTwoWayProps(convertRulesToOptions(defaultOptionRules))), Object.getOwnPropertyDescriptors(__processTwoWayProps(convertRulesToOptions(__defaultOptionRules)))))\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/check_box.j.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../core/component_registrator\";\r\nimport BaseComponent from \"../../../component_wrapper/editors/check_box\";\r\nimport {\r\n CheckBox as CheckBoxComponent,\r\n defaultOptions\r\n} from \"./check_box\";\r\nexport default class CheckBox extends BaseComponent {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);\r\n return props\r\n }\r\n focus() {\r\n var _this$viewRef;\r\n return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments)\r\n }\r\n blur() {\r\n var _this$viewRef2;\r\n return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.blur(...arguments)\r\n }\r\n _getActionConfigs() {\r\n return {\r\n onFocusIn: {},\r\n onClick: {}\r\n }\r\n }\r\n get _propsInfo() {\r\n return {\r\n twoWay: [\r\n [\"value\", \"defaultValue\", \"valueChange\"]\r\n ],\r\n allowNull: [\"defaultValue\", \"validationError\", \"validationErrors\", \"value\"],\r\n elements: [],\r\n templates: [],\r\n props: [\"text\", \"iconSize\", \"activeStateEnabled\", \"hoverStateEnabled\", \"saveValueChangeEvent\", \"defaultValue\", \"valueChange\", \"readOnly\", \"name\", \"validationError\", \"validationErrors\", \"validationMessageMode\", \"validationStatus\", \"isValid\", \"onFocusIn\", \"className\", \"accessKey\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"onClick\", \"onKeyDown\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\", \"aria\", \"value\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return CheckBoxComponent\r\n }\r\n}\r\nregisterComponent(\"dxCheckBox\", CheckBox);\r\nCheckBox.defaultOptions = defaultOptions;\r\n","/**\r\n * DevExtreme (esm/ui/check_box.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Widget from \"../renovation/ui/editors/check_box/check_box.j\";\r\nexport default Widget;\r\n"],"sourceRoot":""}