{"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/item.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_element_style.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.base.js","webpack:///./node_modules/devextreme/esm/renovation/ui/resizable/utils.js","webpack:///./node_modules/devextreme/esm/ui/popover/popover_position_controller.js","webpack:///./node_modules/devextreme/esm/ui/popover/ui.popover.js","webpack:///./node_modules/devextreme/esm/ui/popover.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator_registry.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/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/toolbar/constants.js","webpack:///./node_modules/devextreme/esm/ui/shared/grouped_data_converter_mixin.js","webpack:///./node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.js","webpack:///./node_modules/devextreme/esm/events/swipe.js","webpack:///./node_modules/devextreme/esm/ui/popup/popup_drag.js","webpack:///./node_modules/devextreme/esm/ui/resizable.js","webpack:///./node_modules/devextreme/esm/ui/popup/popup_position_controller.js","webpack:///./node_modules/devextreme/esm/ui/popup/ui.popup.js","webpack:///./node_modules/devextreme/esm/ui/popup.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/collection/ui.collection_widget.async.js","webpack:///./node_modules/devextreme/esm/ui/toolbar/ui.toolbar.base.js","webpack:///./node_modules/devextreme/esm/ui/list/modules/search.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/renovation/utils/type_conversion.js","webpack:///./node_modules/devextreme/esm/ui/draggable.js","webpack:///./node_modules/devextreme/esm/ui/sortable.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","focusStateEnabled","propagateOutsideClick","_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","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","getElementStyle","el","_getWindow$getCompute","_getWindow","getComputedStyle","call","getElementMargin","element","side","style","_scrollView","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","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","shouldLoadNextPage","_isDataSourceLoading","_isLastPage","_shouldContinueLoading","_infiniteDataLoading","release","_toggleNextButton","_shouldRenderNextButton","_loadIndicationSuppressed","isLoaded","_isDataSourceFirstLoadCompleted","newValue","_isFirstLoadCompleted","_dataSourceLoadingChangedHandler","isLoading","_showLoadingIndicatorTimer","_this$_scrollView","isEmpty","shouldIndicateLoading","startLoading","finishLoading","_dataSourceChangedHandler","_shouldAppendItems","_refreshContent","_prepareContent","_fireContentReadyAction","_hideLoadingIfLoadIndicationOff","value","_isLoadIndicationSuppressed","_scrollViewIsFull","scrollView","container","_clearSelectedItems","reload","_this$_scrollView$scr","_this$_scrollView$scr2","isBottomReached","scrollOffset","isElementVisible","_loadNextPageTimer","_loadNextPage","_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","_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","dataSource","$nextButton","_getNextButton","_createNextButton","$result","$button","onClick","integrationOptions","_moveFocus","_refresh","_invalidate","update","_extendActionArgs","closest","expandGroup","resolveWith","collapseGroup","repaint","clientHeight","scrollHeight","scrollBy","distance","location","_editStrategy","getItemElement","get","scrollToElement","bottom","_dimensionChanged","include","ItemClass","borderWidthStyles","left","right","_excluded","WEIGHT_OF_SIDES","center","POPOVER_POSITION_ALIASES","my","at","collision","POPOVER_DEFAULT_BOUNDARY_OFFSET","h","v","_ref","shading","target","$arrow","super","_props","_$arrow","_positionSide","updatePosition","_$wrapper","css","_position","hOffset","vOffset","isVerticalSide","_isVerticalSide","isHorizontalSide","_isHorizontalSide","isPopoverInside","_isPopoverInside","sign","arrowSize","arrowSizeCorrection","_getContentBorderWidth","arrowOffset","borderWidth","_$content","parseInt","setup","normalizeAlign","weightSign","horizontalWeight","Math","abs","verticalWeight","positionProp","defaultPositionConfig","of","boundaryOffset","_positionToObject","_getDisplaySide","POPOVER_CLASS","POPOVER_WRAPPER_CLASS","POPOVER_ARROW_CLASS","POPOVER_WITHOUT_TITLE_CLASS","POSITION_FLIP_MAP","getEventNameByOption","optionValue","getEventName","optionName","getEventDelay","attachEvent","hideEvent","isSelector","shouldIgnoreHideEvent","log","action","_clearEventsTimeouts","_timeouts","handler","EVENT_HANDLER_NAME","getDocument","targetElement","detachEvent","Popover","hideOnOutsideClick","show","hide","showTitle","dragEnabled","resizeEnabled","fullScreen","hideOnParentScroll","arrowPosition","_fixWrapperPosition","_renderArrow","_detachEvents","_attachEvents","$overlayContent","_documentDownHandler","_isOutsideClick","_animate","_getContainerPosition","_stopAnimation","_renderTitle","_renderPosition","_renderOverlayPosition","_actions","onPositioned","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","positionSide","_getSideByLocation","_togglePositionClass","_toggleFlippedClass","flip","isArrowVisible","_renderArrowPosition","_setContentHeight","_positionController","containerLocation","calculate","oversize","fit","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","_hideOnParentScrollTarget","isFlippedByVertical","isFlippedByHorizontal","positionClass","removeClass","isFlippedHorizontal","isFlippedVertical","arrowRect","arrowFlip","arrowLocation","axis","sizeProperty","$target","targetOffset","contentOffset","contentLocation","contentSize","targetLocation","targetSize","preventDefault","min","max","finalArrowLocation","fullUpdate","_getPositionControllerConfig","_renderWrapperDimensions","_clearEventTimeout","_renderGeometry","previousValue","updateTarget","substring","registry","register","decoratorClass","decoratorsRegistry","decoratorConfig","DROP_DOWN_EDITOR_BUTTON_CLASS","DROP_DOWN_EDITOR_BUTTON_VISIBLE","BUTTON_MESSAGE","editor","currentTemplate","instance","_openHandler","_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","current","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","popupPosition","_getDefaultPopupPosition","onPopupInitialized","applyButtonText","cancelButtonText","buttonsLocation","useHiddenSubmitElement","_useTemplates","isRtlEnabled","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","_this$_fieldRenderQue","_fieldRenderQueueLength","isFocused","_input","_detachKeyboardEvents","_refreshButtonsContainer","_detachWrapperContent","empty","$templateWrapper","render","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","start","end","_setPopupOption","expanded","_popupContentId","_renderPopup","_renderPopupContent","popupConfig","_popupConfig","_popup","showing","_popupShowingHandler","shown","_popupShownHandler","hiding","_popupHidingHandler","hidden","_popupHiddenHandler","contentReady","_contentReadyHandler","_setPopupContentId","_bindInnerWidgetOptions","$popupContent","onInitialized","_popupInitializedHandler","_ignoreFunctionValueDeprecation","wrapperAttr","class","_closeOutsideDropDownHandler","showCloseButton","toolbarItems","_getPopupToolbarItems","_popupPositionedHandler","contentTemplate","popup","component","popupWidth","_e$position","_e$position$v","labelMode","stylingMode","$popupOverlayContent","isOverlayFlipped","shouldIndentForLabel","_label","$label","_this$_validationMess","_validationMessage","_getValidationMessagePositionRequest","_this$_validationMess2","positionRequest","myTop","popupTop","getButton","$dropDownButton","isInputClicked","isDropDownButtonClicked","isOutsideClick","_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","result","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","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","SEARCH_EVENT","SEARCH_MODES","useCompositionEvents","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","initialOption","_fitIntoRange","_items","_getPlainItems","availableItems","toArray","_calcNextItem","step","nextIndex","_getSelectedIndex","_updateCustomBoundaryContainer","_popupWrapperClass","customContainer","$containerWithParents","slice","parents","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","includes","_processDataSourceChanging","_isCustomValueAllowed","reset","_clearFilter","_$list","autoResizeEnabled","_getMaxHeight","_renderList","canListHaveFocus","_canListHaveFocus","_setAriaTargetForList","_getAriaTarget","_listId","$list","_listConfig","_refreshList","_renderPreventBlurOnListClick","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","isLastPage","$customBoundaryContainer","offsetTop","windowHeight","submitValue","_shouldUseDisplayValue","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","_items$indexOf","$listItems","focusedElement","_isCustomItemSelected","_renderFocusedElement","not","_preventInputValueRender","isPaginate","_renderInputValueAsync","_renderInputValueImpl","_setNextItem","dataSourceIsLoaded","hasPages","isLastItem","isUnknownItem","_getSelectionChangeHandler","onFocusedItemChanged","_listFocusedItemChangeHandler","selectionByClick","list","focusedItem","_renderDisplayText","_selectionChangeHandler","addedItems","addedItem","_getActualSearchValue","_shouldClearFilter","_restoreInputText","_wasSearch","showDataImmediately","_renderDimensions","_isValueEqualInputText","initialSelectedItem","_shouldCancelSearch","saveEditingValue","_loadItemDeferred","_isValueChanging","_createCustomItem","_clearTextValue","newSelectedItem","_focusOutHandler","_preventNestedFocusEvent","isOverlayTarget","_isOverlayNestedTarget","shouldCancelSearch","isPopupVisible","_hideAnimationProcessing","_shouldCancelSearchValue","activeElement","getActiveElement","_renderValueChangeEvent","$listFocused","_shouldCloseOnItemClick","_completeSelection","selectedItemText","_customItemAddedHandler","_customItemCreatingAction","params","actionResult","errors","_setCustomItem","_disposed","_clearValueHandler","_wasSearchValue","_renderInputSubstitution","input","currentSearchLength","isAllSelected","selectionStart","selectionEnd","inputHasSelection","isLastSymbolSelected","_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","_setTopPocketOffset","_updateDimensions","_topPocketSize","contentEl","containerEl","_bottomBoundary","_allowedDirections","allowedDirections","vertical","_pullDownEnabled","handleEnd","_complete","handleStop","_setPullDownOffset","_pullDownRefreshTimeout","_pullDownRefreshing","handleScroll","currentLocation","scrollDelta","_location","_isPullDown","_pullDownReady","_isReachBottom","_reachBottom","_stateReleased","_reachBottomEnabled","round","floor","fire","pullDownEnable","enabled","reachBottomEnable","pendingRelease","_releaseTimeout","_updateAction","dispose","SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS","PULLDOWN_ICON_CLASS","STATE_TOUCHED","STATE_PULLED","SwipeDownNativeScrollViewStrategy","_$icon","_releasePullDown","opacity","handleInit","_startClientY","originalEvent","y","handleMove","_deltaY","_movePullDown","pullDownHeight","_getPullDownHeight","_getPullDownStartPosition","angle","transform","_pullDownRefreshHandler","_refreshPullDown","math","ScrollViewScroller","_bottomPocketSize","_updateBounds","considerPockets","_direction","_$bottomPocket","_updateScrollbar","_scrollbar","containerSize","_containerSize","_contentSize","scaleRatio","_getScaleRatio","_moveContent","_reachBottomReady","_moveScrollbar","moveTo","ceil","_scrollComplete","_inBounds","_reachBottomLoading","_minOffset","_getMinOffset","_getMaxOffset","_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","_initScrollableMarkup","_initContent","_initTopPocket","_initBottomPocket","_initLoadPanel","$reachBottom","_$reachBottom","_$reachBottomText","_updateReachBottomText","$loadPanelElement","loadPanelOptions","_loadPanel","_createStrategy","strategyName","strategyClass","_strategy","_reachBottomHandler","_createActions","_pullDownAction","_reachBottomAction","_tryRefreshPocketState","_pullDownEnable","hasActionSubscription","_reachBottomEnable","_loadingIndicator","_pullDownLoading","preventReachBottom","showOrHide","_lock","_unlock","TOOLBAR_CLASS","isCorrectStructure","every","hasTwoFields","hasCorrectFields","_getSpecificDataSourceOption","hasSimpleItems","reduce","accumulator","innerItem","keepInitialKeyOrder","LIST_EDIT_DECORATOR","SWIPE_START_EVENT_NAME","SWIPE_UPDATE_EVENT_NAME","SWIPE_END_EVENT_NAME","EditDecorator","_shouldHandleSwipe","swipeConfig","itemSizeFunc","_clearSwipeCache","_itemWidthCache","_itemSwipeStartHandler","_itemSwipeUpdateHandler","cancel","_swipeStartHandler","_swipeUpdateHandler","_swipeEndHandler","beforeBag","afterBag","_commonOptions","modifyElement","afterRender","handleClick","handleKeyboardEvents","handleEnterPressing","handleContextMenu","visibilityChange","getExcludedSelectors","SWIPE_START_EVENT","SWIPE_EVENT","SWIPE_END_EVENT","HorizontalStrategy","defaultItemSizeFunc","getElement","getBounds","_maxLeftOffset","_maxRightOffset","calcOffsetRatio","endEventData","x","_savedEventData","_itemSizeFunc","isFastSwipe","FAST_SWIPE_SPEED_LIMIT","_tickData","time","VerticalStrategy","_maxTopOffset","_maxBottomOffset","STRATEGIES","horizontal","SwipeEmitter","TICK_INTERVAL","elastic","_getStrategy","_defaultItemSizeFunc","_start","_fireEvent","maxLeftOffset","maxRightOffset","maxTopOffset","maxBottomOffset","strategy","moveEventData","_fitOffset","_end","offsetRatio","isFast","startOffset","_calcTargetOffset","bounds","emitter","events","KEYBOARD_DRAG_STEP","init","handle","draggableElement","positionController","_draggableElement","_handle","_dragEnabled","unsubscribe","subscribe","_moveTo","eventNames","_getEventNames","startEventName","_dragStartHandler","updateEventName","_dragUpdateHandler","_dragEndHandler","drag","allowedOffsets","_getAllowedOffsets","_prevOffset","targetElements","_moveByOffset","dragHandled","detectVisualPositionChange","_fitOffsetIntoAllowedRange","document","$dragResizeContainer","containerWidth","body","clientWidth","containerDimensions","_getContainerDimensions","elementDimensions","_getElementDimensions","outsideDragFactor","fullDelta","_getInnerDelta","outerDelta","_getOuterDelta","offsetWidth","offsetHeight","_getFullDelta","isDragAllowed","elementPosition","_getElementPosition","containerPosition","newPosition","RESIZABLE","RESIZABLE_CLASS","RESIZABLE_RESIZING_CLASS","RESIZABLE_HANDLE_CLASS","RESIZABLE_HANDLE_TOP_CLASS","RESIZABLE_HANDLE_BOTTOM_CLASS","RESIZABLE_HANDLE_LEFT_CLASS","RESIZABLE_HANDLE_RIGHT_CLASS","RESIZABLE_HANDLE_CORNER_CLASS","DRAGSTART_START_EVENT_NAME","DRAGSTART_EVENT_NAME","DRAGSTART_END_EVENT_NAME","SIDE_BORDER_WIDTH_STYLES","Resizable","handles","stepPrecision","area","minWidth","minHeight","onResizeStart","onResize","onResizeEnd","roundStepValue","keepAspectRatio","_renderHandles","_renderActions","_resizeStartAction","_resizeEndAction","_resizeAction","_handles","directions","split","activeHandlesMap","handleName","_renderHandle","_attachEventHandlers","$handle","handlers","_dragHandler","handleElement","immediate","_detachEventHandlers","_toggleEventHandlers","shouldAttachEvents","_getElementSize","_toggleResizingClass","_movingSides","_getMovingSides","_elementLocation","_elementSize","_renderDragOffsets","_getArea","handleWidth","handleHeight","handleOffset","areaOffset","_getAreaScrollOffset","_leftMaxOffset","scrollX","_rightMaxOffset","_topMaxOffset","scrollY","_bottomMaxOffset","_getBorderWidth","_proportionate","factor","_getProportionalDelta","proportionalY","proportionalX","_getDirectionName","sides","_fitIntoArea","_this","directionName","_fitDeltaProportionally","delta","fittedDelta","getWidth","getHeight","isInArea","isFittedX","isFittedY","_fitDelta","_ref2","_getDeltaByOffset","shouldKeepAspectRatio","_isCornerHandler","proportionalDelta","fittedProportionalDelta","roundedFittedDelta","_roundByStep","_updatePosition","_ref3","elementRect","offsetLeft","_getOffset","dimensions","_triggerResizeAction","isAbsoluteSize","isStepPrecisionStrict","elementStyle","shouldRenderWidth","shouldRenderHeight","_ref4","values","xor","_roundStrict","_roundNotStrict","_getSteps","steps","xPos","yPos","newXShift","newYShift","isNaN","separatorOffset","isSmallOffset","newOffsetX","newOffsetY","roundedOffset_x","roundedOffset_y","hasCornerTopLeftClass","hasCornerTopRightClass","hasCornerBottomLeftClass","hasCornerBottomRightClass","_getAreaFromObject","_getAreaFromElement","isElement","areaElement","pageXOffset","pageYOffset","_correctAreaGeometry","$area","areaBorderLeft","areaBorderTop","_renderWidth","_renderHeight","forceApplyBindings","dragOutsideBoundary","dragAndResizeArea","_$dragResizeContainer","_outsideDragFactor","_lastPositionBeforeFullScreen","_updateDragResizeContainer","_updateOutsideDragFactor","_fullScreenEnabled","_fullScreenDisabled","containerProp","updateContainer","restorePositionOnNextRender","_this$_props$forceApp","_this$_props","_shouldRenderContentInitialPosition","positionContent","_getOutsideDragFactor","_getDragResizeContainer","isContainerDefined","_$markupContainer","_getVisualContainer","_visualPosition","POPUP_CLASS","POPUP_WRAPPER_CLASS","POPUP_FULL_SCREEN_CLASS","POPUP_FULL_SCREEN_WIDTH_CLASS","POPUP_NORMAL_CLASS","POPUP_CONTENT_CLASS","DISABLED_STATE_CLASS","POPUP_DRAGGABLE_CLASS","POPUP_TITLE_CLASS","POPUP_TITLE_CLOSEBUTTON_CLASS","POPUP_BOTTOM_CLASS","POPUP_HAS_CLOSE_BUTTON_CLASS","TEMPLATE_WRAPPER_CLASS","POPUP_CONTENT_FLEX_HEIGHT_CLASS","POPUP_CONTENT_INHERIT_HEIGHT_CLASS","ALLOWED_TOOLBAR_ITEM_ALIASES","BUTTON_DEFAULT_TYPE","BUTTON_NORMAL_TYPE","BUTTON_TEXT_MODE","BUTTON_CONTAINED_MODE","IS_OLD_SAFARI","browser","safari","version","HEIGHT_STRATEGIES","static","flex","getButtonPlace","Popup","_this$_drag","_drag","moveUp","_this$_drag2","moveDown","_this$_drag3","moveLeft","_this$_drag4","moveRight","title","titleTemplate","onTitleRendered","bottomTemplate","useDefaultToolbarButtons","useFlatToolbarButtons","_iosAnimation","_androidAnimation","_updateResizeCallbackSkipCondition","_$popupContent","isFullscreen","_toggleFullScreenClass","_getActionsList","_contentResizeHandler","entry","_shouldSkipContentResize","shouldOnlyReposition","_doesShowAnimationChangeDimensions","some","prop","_animation$show","doesShowAnimationChangeDimensions","_showAnimationProcessing","_areContentDimensionsRendered","_observeContentResize","shouldObserve","contentElement","observe","unobserve","_renderResize","_renderBottom","_getToolbarItems","titleText","ios","_$title","$title","_renderTemplateByType","_renderDrag","_executeTitleRenderAction","_hasCloseButton","additionalToolbarOptions","rtlEnabled","toolbarTemplate","skipTemplates","toolbarOptions","useDefaultButtons","useFlatButtons","widget","$toolbar","replaceWith","_renderVisibilityAnimate","$titleElement","_getTitleRenderAction","titleElement","_titleRenderAction","_createTitleRenderAction","_getCloseButton","_getCloseButtonRenderer","__","_createToolbarItemAction","toolbarsItems","_toolbarItemClasses","currentPlatform","isShortcut","_getToolbarItemByAlias","isLTROrder","_getLocalizationKey","itemType","itemConfig","itemClass","$toolbarItem","clickAction","afterExecute","_$bottom","$bottom","insertAfter","compactMode","_toggleClasses","Boolean","aliases","alias","className","_zIndex","zIndex","_zIndexInitValue","_getDragTarget","topToolbar","useResizeObserver","isAnimated","shouldRepeatAnimation","forceStopAnimation","_isAnimationPaused","_renderGeometryImpl","isDimensionChange","_animateShowing","_cacheDimensions","_renderedDimensions","_resetContentHeight","_getOptionValue","$dragTarget","_resizable","_resizeEndHandler","_setOptionWithoutOptionChange","resizeHandled","overlayContent","currentHeightStrategyClass","_chooseHeightStrategy","_getHeightCssStyles","_setHeightClasses","_heightStrategyChangeOffset","popupVerticalPaddings","isAutoWidth","_isAutoHeight","cssStyles","contentMaxHeight","contentMinHeight","popupHeightParts","_splitPopupHeight","toolbarsAndVerticalOffsetsHeight","header","footer","contentVerticalOffsets","popupVerticalOffsets","overlayHeight","innerHeight","contentHeight","$visualContainer","maxHeightValue","minHeightValue","currentClass","excessClasses","bottomToolbar","_isAllWindowCovered","_renderFullscreenWidthClass","refreshPosition","_this$_resizable2","_this$_resizable","shouldRenderGeometry","fullName","match","_toggleSafariScrolling","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","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","AsyncCollectionWidget","_deferredItems","renderContentDeferred","itemDeferred","$itemContent","_postProcessRenderItems","d","TOOLBAR_BEFORE_CLASS","TOOLBAR_CENTER_CLASS","TOOLBAR_AFTER_CLASS","TOOLBAR_MINI_CLASS","TOOLBAR_ITEM_CLASS","TOOLBAR_LABEL_CLASS","TOOLBAR_BUTTON_CLASS","TOOLBAR_ITEMS_CONTAINER_CLASS","TOOLBAR_GROUP_CLASS","TOOLBAR_COMPACT_CLASS","TOOLBAR_LABEL_SELECTOR","TOOLBAR_MULTILINE_CLASS","TEXT_BUTTON_MODE","DEFAULT_BUTTON_TYPE","DEFAULT_DROPDOWNBUTTON_STYLING_MODE","TOOLBAR_ITEM_DATA_KEY","ToolbarBase","_userOptions","_getSynchronizableOptionsForCreateComponent","rawModel","html","menuItem","renderAs","multiline","_$toolbarItemsContainer","_buttonClass","_arrangeItems","_applyCompactMode","_renderToolbar","_renderSections","_waitParentAnimationFinished","Promise","runCheck","_waitParentAnimationTimeout","readyToResolve","isAnimating","_renderItemsAsync","all","_checkWebFontForLabelsLoaded","then","sectionClass","$section","$labels","promises","label","fontWeight","elementWidth","_$centerSection","margin","float","beforeRect","_$beforeSection","afterRect","_$afterSection","_alignCenterSection","labelOffset","widthBeforeSection","widthAfterSection","elemsAtSectionWidth","freeSpace","sectionMaxWidth","_alignSection","labelPaddings","isRTL","leftRect","rightRect","centerRect","marginLeft","marginRight","labels","_getCurrentLabelsPaddings","currentWidth","_getCurrentLabelsWidth","difference","reverse","_alignSectionLabels","expanding","getRealLabelWidth","currentLabelWidth","labelMaxWidth","possibleLabelWidth","_getSummaryItemsWidth","padding","itemContainer","$after","itemHasText","cssClass","_renderGroupedItems","groupItems","_getIndexByItem","_itemOptionChanged","property","setEditorClass","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","onValueChanged","_processCheckedState","control","getInstance","state","_updateSelectAllState","_$selectAll","_selectAllCheckBox","isSelectAll","_renderSelectAll","moveFocusDown","$selectAll","lastItemIndex","isFocusOutOfList","hasSelectAllItem","downArrowHandler","itemsContainer","_attachSelectAllHandler","_selectAllHandler","_selectAllClickHandler","isSelectedAll","_selectAllItems","_unselectAllItems","_checkSelectAllCapability","_disposeSelectAll","toNumber","attribute","Number","replace","DRAGGABLE","DRAG_EVENT_NAME","DRAGEND_EVENT_NAME","DRAG_ENTER_EVENT_NAME","DRAGEND_LEAVE_EVENT_NAME","POINTERDOWN_EVENT_NAME","pointer","down","CLONE_CLASS","ANONYMOUS_TEMPLATE_NAME","getMousePosition","pageX","scrollLeft","pageY","GESTURE_COVER_CLASS","OVERLAY_WRAPPER_CLASS","OVERLAY_CONTENT_CLASS","orientation","_preventScroll","_component","_scrollValue","_overFlowAttr","_sizeAttr","_scrollSizeProp","_clientSizeProp","_limitProps","elements","mousePosition","isScrollableFound","isTargetOverOverlayWrapper","isTargetOverOverlayContent","_trySetScrollable","_$scrollableAtPointer","_scrollSpeed","distanceToBorders","sensitivity","isScrollable","_calculateDistanceToBorders","_calculateScrollSpeed","areaBoundingRect","maxSpeed","pow","$scrollable","scrollableInstance","nextScrollPosition","_nextScrollPosition","dragMoveArgs","_dragMoveArgs","_dragMoveHandler","scrollableSize","ScrollAnimator","_step","horizontalScrollHelper","_horizontalScrollHelper","verticalScrollHelper","_verticalScrollHelper","scrollByStep","Draggable","dragMove","dragEnter","dragLeave","dragEnd","sourceEvent","sourceDraggable","_getSourceDraggable","_fireRemoveEvent","onDragStart","onDragMove","onDragEnd","onDragEnter","onDragLeave","onDrop","dragDirection","boundary","boundOffset","allowMoveByClick","dragTemplate","clone","autoScroll","scrollSpeed","scrollSensitivity","_scrollAnimator","_normalizeCursorOffset","parseFloat","_getNormalizedCursorOffset","_calculateElementOffset","elementOffset","dragElementOffset","$dragElement","dragElement","isCloned","_dragElementIsCloned","cursorOffset","normalizedCursorOffset","currentLocate","_initialLocate","initialOffset","isFinite","_initPosition","_startPosition","_startAnimator","inProgress","_stopAnimator","stop","componentName","_getItemsSelector","itemsSelector","checkDropTarget","targetGroup","sourceGroup","_getScrollable","isOutsideScrollable","_pointerDownHandler","_dragEnterHandler","_dragLeaveHandler","_$dragElement","_getDragTemplateArgs","_createDragElement","_getContainer","_resetDragElement","_toggleDraggingClass","_resetSourceElement","_toggleDragSourceClass","_$sourceElement","_getDraggableElement","$sourceElement","_getSourceElement","$items","draggable","_getAction","_getEventArgs","_isValidElement","dragStartArgs","_getDragStartArgs","_setSourceDraggable","_setGestureCoverCursor","isFixedPosition","_getAreaOffset","_getBoundOffset","areaWidth","areaHeight","elementHeight","startOffset_left","startOffset_top","startPosition","_updateScrollable","eventArgs","targetDraggable","_getTargetDraggable","allObjects","elementsFromPoint","updateScrollable","$parent","_defaultActionArgs","fromComponent","toComponent","fromData","toData","_revertItemToInitialPosition","dragEndEventArgs","dropEventArgs","needRevertPosition","_resetTargetDraggable","_resetSourceDraggable","_isTargetOverAnotherDraggable","$sourceDraggableElement","$targetDraggableElement","firstWidgetElement","isTargetOverItself","isTargetOverNestedDraggable","_fireDragEnterEvent","_setTargetDraggable","_fireDragLeaveEvent","_getAnonymousTemplateName","transclude","anonymousTemplateName","currentGroup","SORTABLE","PLACEHOLDER_CLASS","_config$to","_config$to2","transition","easing","stopAnimation","getScrollableBoundary","paddingLeft","paddingRight","paddingTop","Sortable","_sourceScrollHandler","_handleSourceScroll","_sourceScrollableInfo","itemOrientation","dropFeedbackMode","allowDropInsideItem","allowReordering","moveItemOnDrop","onDragChange","onAdd","onRemove","onReorder","onPlaceholderPrepared","fromIndex","toIndex","dropInsideItem","itemPoints","fromIndexOffset","autoUpdate","draggableElementSize","_$placeholderElement","_isIndicateMode","_$modifiedItem","_modifiedItemMargin","_getPrevVisibleItem","_updateItemPoints","_subscribeToSourceScroll","_getElementIndex","_unsubscribeFromSourceScroll","sourceScrollableInfo","scrollProp","_correctItemPoints","_movePlaceholder","lastItemPoint","isVertical","_isVerticalOrientation","sourceElementSize","scrollSize","scrollPosition","lastPointPosition","freeSize","_getItems","$lastItem","marginBottom","$sortable","sortable","_allowDrop","$targetDraggable","itemPoint","cancelAdd","cancelRemove","isSourceDraggable","allowDrop","_fireAddEvent","_moveItem","_fireReorderEvent","axisName","cursorPosition","centerPosition","_updatePlaceholderPosition","isScrolling","_createPlaceholder","$placeholderContainer","_allowReordering","_isValidPoint","visibleIndex","draggableVisibleIndex","_getItemPoints","itemWidth","visibleItemElements","visibleItemCount","$draggableItem","needCorrectLeftPosition","needCorrectTopPosition","isValid","points","_i","forceUpdate","positionPropName","_togglePlaceholder","_normalizeToIndex","isAnotherDraggable","placeholderElement","_makeWidthCorrection","_$scrollable","scrollableWidth","overflowLeft","overflowRight","_updatePlaceholderSizes","$placeholderElement","$prevTargetItemElement","$targetItemElement","_moveItemCore","$targetItem","prevItem","isDragSource","$fromElement","_optionChangedDropInsideItem","_optionChangedToIndex","_isPositionVisible","scrollContainer","clientRect","isVerticalOrientation","pageOffset","showPlaceholder","_moveItems","_updateDragSourceClass","_getActualFromIndex","_makeLeftCorrection","prevVisibleItemElement","_getPositions","elementSize","positions","_getDraggableElementSize","prevToIndex","prevPositions","animationConfig","prevPosition"],"mappings":"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","file":"js/chunk-50e236b6.81f5615e.js","sourcesContent":["/**\r\n * DevExtreme (esm/ui/drop_down_editor/utils.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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 focusStateEnabled: false,\r\n propagateOutsideClick: true\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/item.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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/renovation/ui/scroll_view/utils/get_element_style.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 titleize\r\n} from \"../../../../core/utils/inflector\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../../../core/utils/window\";\r\nimport {\r\n toNumber\r\n} from \"../../../utils/type_conversion\";\r\nexport function getElementStyle(el) {\r\n var _getWindow$getCompute, _getWindow;\r\n return el && hasWindow() ? null === (_getWindow$getCompute = (_getWindow = getWindow()).getComputedStyle) || void 0 === _getWindow$getCompute ? void 0 : _getWindow$getCompute.call(_getWindow, el) : null\r\n}\r\nexport function getElementMargin(element, side) {\r\n var style = getElementStyle(element);\r\n return style ? toNumber(style[\"margin\".concat(titleize(side))]) : 0\r\n}\r\nexport function getElementPadding(element, side) {\r\n var style = getElementStyle(element);\r\n return style ? toNumber(style[\"padding\".concat(titleize(side))]) : 0\r\n}\r\nexport function getElementOverflowX(element) {\r\n var style = getElementStyle(element);\r\n return style ? style.overflowX : \"visible\"\r\n}\r\nexport function getElementOverflowY(element) {\r\n var style = getElementStyle(element);\r\n return style ? style.overflowY : \"visible\"\r\n}\r\nexport function getElementTransform(element) {\r\n var style = getElementStyle(element);\r\n return style ? style.transform : \"\"\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.base.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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\nimport {\r\n getElementMargin\r\n} from \"../../renovation/ui/scroll_view/utils/get_element_style\";\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 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 height: this.option(\"height\"),\r\n width: this.option(\"width\"),\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 shouldLoadNextPage = this._scrollBottomMode() && tryLoadMore && !this._isDataSourceLoading() && !this._isLastPage();\r\n if (this._shouldContinueLoading(shouldLoadNextPage)) {\r\n this._infiniteDataLoading()\r\n } else {\r\n this._scrollView.release(!shouldLoadNextPage && !this._isDataSourceLoading());\r\n this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());\r\n this._loadIndicationSuppressed(false)\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 _shouldContinueLoading: function(shouldLoadNextPage) {\r\n var _this$_scrollView$scr, _this$_scrollView$scr2;\r\n var isBottomReached = getHeight(this._scrollView.content()) - getHeight(this._scrollView.container()) < (null !== (_this$_scrollView$scr = null === (_this$_scrollView$scr2 = this._scrollView.scrollOffset()) || void 0 === _this$_scrollView$scr2 ? void 0 : _this$_scrollView$scr2.top) && void 0 !== _this$_scrollView$scr ? _this$_scrollView$scr : 0);\r\n return shouldLoadNextPage && (!this._scrollViewIsFull() || isBottomReached)\r\n },\r\n _infiniteDataLoading: function() {\r\n var isElementVisible = this.$element().is(\":visible\");\r\n if (isElementVisible) {\r\n clearTimeout(this._loadNextPageTimer);\r\n this._loadNextPageTimer = setTimeout(() => {\r\n this._loadNextPage()\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.option(args.name, args.value);\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 \"_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 var item = null === $item || void 0 === $item ? void 0 : $item.get(0);\r\n this._scrollView.scrollToElement(item, {\r\n bottom: getElementMargin(item, \"bottom\")\r\n })\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/renovation/ui/resizable/utils.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 isWindow\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getOuterWidth,\r\n getInnerWidth,\r\n getOuterHeight,\r\n getInnerHeight,\r\n getOffset\r\n} from \"../../../core/utils/size\";\r\nexport var borderWidthStyles = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\n\r\nfunction getBorderWidth(el, direction) {\r\n if (!isWindow(el)) {\r\n var borderWidth = el.style[borderWidthStyles[direction]];\r\n return parseInt(borderWidth, 10) || 0\r\n }\r\n return 0\r\n}\r\nvar correctGeometry = function(area, mainEl) {\r\n var el = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;\r\n var {\r\n height: height,\r\n offset: offset,\r\n width: width\r\n } = area;\r\n var {\r\n left: left,\r\n top: top\r\n } = offset;\r\n var areaBorderLeft = el ? getBorderWidth(el, \"left\") : 0;\r\n var areaBorderTop = el ? getBorderWidth(el, \"top\") : 0;\r\n return {\r\n width: width - getOuterWidth(mainEl) - getInnerWidth(mainEl),\r\n height: height - getOuterHeight(mainEl) - getInnerHeight(mainEl),\r\n offset: {\r\n left: left + areaBorderLeft + getBorderWidth(mainEl, \"left\"),\r\n top: top + areaBorderTop + getBorderWidth(mainEl, \"top\")\r\n }\r\n }\r\n};\r\nexport var getAreaFromElement = (el, mainEl) => correctGeometry({\r\n width: getInnerWidth(el),\r\n height: getInnerHeight(el),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow(el) ? {} : getOffset(el))\r\n}, mainEl, el);\r\nexport var getAreaFromObject = (_ref, mainEl) => {\r\n var {\r\n bottom: bottom,\r\n left: left,\r\n right: right,\r\n top: top\r\n } = _ref;\r\n return correctGeometry({\r\n width: right - left,\r\n height: bottom - top,\r\n offset: {\r\n left: left,\r\n top: top\r\n }\r\n }, mainEl)\r\n};\r\nexport var getMovingSides = el => {\r\n var {\r\n className: className\r\n } = el;\r\n var hasCornerTopLeftClass = className.includes(\"dx-resizable-handle-corner-top-left\");\r\n var hasCornerTopRightClass = className.includes(\"dx-resizable-handle-corner-top-right\");\r\n var hasCornerBottomLeftClass = className.includes(\"dx-resizable-handle-corner-bottom-left\");\r\n var hasCornerBottomRightClass = className.includes(\"dx-resizable-handle-corner-bottom-right\");\r\n return {\r\n top: className.includes(\"dx-resizable-handle-top\") || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: className.includes(\"dx-resizable-handle-left\") || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: className.includes(\"dx-resizable-handle-bottom\") || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: className.includes(\"dx-resizable-handle-right\") || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n};\r\nexport function getDragOffsets(area, handleEl, areaProp) {\r\n var hWidth = getOuterWidth(handleEl);\r\n var hHeight = getOuterHeight(handleEl);\r\n var hOffset = getOffset(handleEl);\r\n var areaOffset = area.offset;\r\n var isAreaWindow = isWindow(areaProp);\r\n var scrollOffset_scrollX = isAreaWindow ? areaProp.pageXOffset : 0,\r\n scrollOffset_scrollY = isAreaWindow ? areaProp.pageYOffset : 0;\r\n return {\r\n maxLeftOffset: hOffset.left - areaOffset.left - scrollOffset_scrollX,\r\n maxRightOffset: areaOffset.left + area.width - hOffset.left - hWidth + scrollOffset_scrollX,\r\n maxTopOffset: hOffset.top - areaOffset.top - scrollOffset_scrollY,\r\n maxBottomOffset: areaOffset.top + area.height - hOffset.top - hHeight + scrollOffset_scrollY\r\n }\r\n}\r\nexport var filterOffsets = (offset, handleEl) => {\r\n var sides = getMovingSides(handleEl);\r\n var offsetX = !sides.left && !sides.right ? 0 : offset.x;\r\n var offsetY = !sides.top && !sides.bottom ? 0 : offset.y;\r\n return {\r\n x: offsetX,\r\n y: offsetY\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popover/popover_position_controller.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 = [\"shading\", \"target\", \"$arrow\"];\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n pairToObject\r\n} from \"../../core/utils/common\";\r\nimport {\r\n borderWidthStyles\r\n} from \"../../renovation/ui/resizable/utils\";\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n OverlayPositionController\r\n} from \"../overlay/overlay_position_controller\";\r\nvar WEIGHT_OF_SIDES = {\r\n left: -1,\r\n top: -1,\r\n center: 0,\r\n right: 1,\r\n bottom: 1\r\n};\r\nvar POPOVER_POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit flip\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit flip\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"flip fit\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"flip fit\"\r\n }\r\n};\r\nvar POPOVER_DEFAULT_BOUNDARY_OFFSET = {\r\n h: 10,\r\n v: 10\r\n};\r\nclass PopoverPositionController extends OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n shading: shading,\r\n target: target,\r\n $arrow: $arrow\r\n } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n super(args);\r\n this._props = _extends({}, this._props, {\r\n shading: shading,\r\n target: target\r\n });\r\n this._$arrow = $arrow;\r\n this._positionSide = void 0;\r\n this.updatePosition(this._props.position)\r\n }\r\n positionWrapper() {\r\n if (this._props.shading) {\r\n this._$wrapper.css({\r\n top: 0,\r\n left: 0\r\n })\r\n }\r\n }\r\n updateTarget(target) {\r\n this._props.target = target;\r\n this.updatePosition(this._props.position)\r\n }\r\n _renderBoundaryOffset() {}\r\n _getContainerPosition() {\r\n var offset = pairToObject(this._position.offset || \"\");\r\n var {\r\n h: hOffset,\r\n v: vOffset\r\n } = offset;\r\n var isVerticalSide = this._isVerticalSide();\r\n var isHorizontalSide = this._isHorizontalSide();\r\n if (isVerticalSide || isHorizontalSide) {\r\n var isPopoverInside = this._isPopoverInside();\r\n var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n var arrowSize = isVerticalSide ? getHeight(this._$arrow) : getWidth(this._$arrow);\r\n var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n }\r\n return extend({}, this._position, {\r\n offset: hOffset + \" \" + vOffset\r\n })\r\n }\r\n _getContentBorderWidth(side) {\r\n var borderWidth = this._$content.css(borderWidthStyles[side]);\r\n return parseInt(borderWidth) || 0\r\n }\r\n _isPopoverInside() {\r\n var my = positionUtils.setup.normalizeAlign(this._position.my);\r\n var at = positionUtils.setup.normalizeAlign(this._position.at);\r\n return my.h === at.h && my.v === at.v\r\n }\r\n _isVerticalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"top\" === side || \"bottom\" === side\r\n }\r\n _isHorizontalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"left\" === side || \"right\" === side\r\n }\r\n _getDisplaySide(position) {\r\n var my = positionUtils.setup.normalizeAlign(position.my);\r\n var at = positionUtils.setup.normalizeAlign(position.at);\r\n var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n return horizontalWeight > verticalWeight ? at.h : at.v\r\n }\r\n _normalizePosition(positionProp) {\r\n var defaultPositionConfig = {\r\n of: this._props.target,\r\n boundaryOffset: POPOVER_DEFAULT_BOUNDARY_OFFSET\r\n };\r\n var resultPosition;\r\n if (isDefined(positionProp)) {\r\n resultPosition = extend(true, {}, defaultPositionConfig, this._positionToObject(positionProp))\r\n } else {\r\n resultPosition = defaultPositionConfig\r\n }\r\n this._positionSide = this._getDisplaySide(resultPosition);\r\n return resultPosition\r\n }\r\n _positionToObject(positionProp) {\r\n if (isString(positionProp)) {\r\n return extend({}, POPOVER_POSITION_ALIASES[positionProp])\r\n }\r\n return positionProp\r\n }\r\n}\r\nexport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popover/ui.popover.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 setWidth,\r\n getHeight,\r\n setHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n isObject,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n} from \"./popover_position_controller\";\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n left: \"right\",\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return isObject(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n var {\r\n target: target,\r\n shading: shading,\r\n disabled: disabled,\r\n hideEvent: hideEvent\r\n } = that.option();\r\n var isSelector = isString(target);\r\n var shouldIgnoreHideEvent = shading && \"hide\" === name;\r\n var event = shouldIgnoreHideEvent ? null : getEventName(that, \"\".concat(name, \"Event\"));\r\n if (shouldIgnoreHideEvent && hideEvent) {\r\n errors.log(\"W1020\")\r\n }\r\n if (!event || disabled) {\r\n return\r\n }\r\n var eventName = addNamespace(event, that.NAME);\r\n var action = that._createAction(function() {\r\n var delay = getEventDelay(that, name + \"Event\");\r\n this._clearEventsTimeouts();\r\n if (delay) {\r\n this._timeouts[name] = setTimeout((function() {\r\n that[name]()\r\n }), delay)\r\n } else {\r\n that[name]()\r\n }\r\n }.bind(that), {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n action({\r\n event: e,\r\n target: $(e.currentTarget)\r\n })\r\n };\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (isSelector) {\r\n that[EVENT_HANDLER_NAME] = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, handler)\r\n } else {\r\n var targetElement = getPublicElement($(target));\r\n that[EVENT_HANDLER_NAME] = void 0;\r\n eventsEngine.on(targetElement, eventName, handler)\r\n }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n var eventName = event || getEventName(that, name + \"Event\");\r\n if (!eventName) {\r\n return\r\n }\r\n eventName = addNamespace(eventName, that.NAME);\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (that[EVENT_HANDLER_NAME]) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n } else {\r\n eventsEngine.off(getPublicElement($(target)), eventName)\r\n }\r\n};\r\nvar Popover = Popup.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n target: void 0,\r\n shading: false,\r\n position: extend({}, POPOVER_POSITION_ALIASES.bottom),\r\n hideOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n fullScreen: false,\r\n hideOnParentScroll: true,\r\n arrowPosition: \"\",\r\n arrowOffset: 0,\r\n _fixWrapperPosition: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return [{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n arrowPosition: {\r\n boundaryOffset: {\r\n h: 20,\r\n v: -10\r\n },\r\n collision: \"fit\"\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }]\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderArrow();\r\n this._timeouts = {};\r\n this.$element().addClass(POPOVER_CLASS);\r\n this.$wrapper().addClass(POPOVER_WRAPPER_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._detachEvents(this.option(\"target\"));\r\n this._attachEvents()\r\n },\r\n _detachEvents: function(target) {\r\n detachEvent(this, target, \"show\");\r\n detachEvent(this, target, \"hide\")\r\n },\r\n _attachEvents: function() {\r\n attachEvent(this, \"show\");\r\n attachEvent(this, \"hide\")\r\n },\r\n _renderArrow: function() {\r\n this._$arrow = $(\"
\").addClass(POPOVER_ARROW_CLASS).prependTo(this.$overlayContent())\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._isOutsideClick(e)) {\r\n return this.callBase(e)\r\n }\r\n return true\r\n },\r\n _isOutsideClick: function(e) {\r\n return !$(e.target).closest(this.option(\"target\")).length\r\n },\r\n _animate: function(animation) {\r\n if (animation && animation.to && \"object\" === typeof animation.to) {\r\n extend(animation.to, {\r\n position: this._getContainerPosition()\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _stopAnimation: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderTitle: function() {\r\n this.$wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n this.callBase()\r\n },\r\n _renderPosition: function() {\r\n this.callBase();\r\n this._renderOverlayPosition();\r\n this._actions.onPositioned()\r\n },\r\n _renderOverlayPosition: function() {\r\n this._resetOverlayPosition();\r\n this._updateContentSize();\r\n var contentPosition = this._getContainerPosition();\r\n var resultLocation = positionUtils.setup(this.$overlayContent(), contentPosition);\r\n var positionSide = this._getSideByLocation(resultLocation);\r\n this._togglePositionClass(\"dx-position-\" + positionSide);\r\n this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n if (isArrowVisible) {\r\n this._renderArrowPosition(positionSide)\r\n }\r\n },\r\n _resetOverlayPosition: function() {\r\n this._setContentHeight(true);\r\n this._togglePositionClass(\"dx-position-\" + this._positionController._positionSide);\r\n move(this.$overlayContent(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._$arrow.css({\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n left: \"auto\"\r\n })\r\n },\r\n _updateContentSize: function() {\r\n if (!this.$content()) {\r\n return\r\n }\r\n var containerLocation = positionUtils.calculate(this.$overlayContent(), this._getContainerPosition());\r\n if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n var newContainerWidth = getWidth(this.$overlayContent()) - containerLocation.h.oversize;\r\n setWidth(this.$overlayContent(), newContainerWidth)\r\n }\r\n if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n var newOverlayContentHeight = getHeight(this.$overlayContent()) - containerLocation.v.oversize;\r\n var newPopupContentHeight = getHeight(this.$content()) - containerLocation.v.oversize;\r\n setHeight(this.$overlayContent(), newOverlayContentHeight);\r\n setHeight(this.$content(), newPopupContentHeight)\r\n }\r\n },\r\n _getContainerPosition: function() {\r\n return this._positionController._getContainerPosition()\r\n },\r\n _hideOnParentScrollTarget: function() {\r\n return $(this._positionController._position.of || this.callBase())\r\n },\r\n _getSideByLocation: function(location) {\r\n var isFlippedByVertical = location.v.flip;\r\n var isFlippedByHorizontal = location.h.flip;\r\n return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionController._positionSide] : this._positionController._positionSide\r\n },\r\n _togglePositionClass: function(positionClass) {\r\n this.$wrapper().removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n },\r\n _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n this.$wrapper().toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n },\r\n _renderArrowPosition: function(side) {\r\n var arrowRect = getBoundingRect(this._$arrow.get(0));\r\n var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n var $target = $(this._positionController._position.of);\r\n var targetOffset = positionUtils.offset($target) || {\r\n top: 0,\r\n left: 0\r\n };\r\n var contentOffset = positionUtils.offset(this.$overlayContent());\r\n var arrowSize = arrowRect[sizeProperty];\r\n var contentLocation = contentOffset[axis];\r\n var contentSize = getBoundingRect(this.$overlayContent().get(0))[sizeProperty];\r\n var targetLocation = targetOffset[axis];\r\n var targetElement = $target.get(0);\r\n var targetSize = targetElement && !targetElement.preventDefault ? getBoundingRect(targetElement)[sizeProperty] : 0;\r\n var min = Math.max(contentLocation, targetLocation);\r\n var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n var arrowLocation;\r\n if (\"start\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = min - contentLocation\r\n } else if (\"end\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = max - contentLocation - arrowSize\r\n } else {\r\n arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n }\r\n var borderWidth = this._positionController._getContentBorderWidth(side);\r\n var finalArrowLocation = fitIntoRange(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n this._$arrow.css(axis, finalArrowLocation)\r\n },\r\n _isPopoverInside: function() {\r\n return this._positionController._isPopoverInside()\r\n },\r\n _setContentHeight: function(fullUpdate) {\r\n if (fullUpdate) {\r\n this.callBase()\r\n }\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n shading: shading,\r\n target: target\r\n } = this.option();\r\n return extend({}, this.callBase(), {\r\n target: target,\r\n shading: shading,\r\n $arrow: this._$arrow\r\n })\r\n },\r\n _initPositionController() {\r\n this._positionController = new PopoverPositionController(this._getPositionControllerConfig())\r\n },\r\n _renderWrapperDimensions: function() {\r\n if (this.option(\"shading\")) {\r\n this.$wrapper().css({\r\n width: \"100%\",\r\n height: \"100%\"\r\n })\r\n }\r\n },\r\n _isVerticalSide: function(side) {\r\n return this._positionController._isVerticalSide(side)\r\n },\r\n _isHorizontalSide: function(side) {\r\n return this._positionController._isHorizontalSide(side)\r\n },\r\n _clearEventTimeout: function(name) {\r\n clearTimeout(this._timeouts[name])\r\n },\r\n _clearEventsTimeouts: function() {\r\n this._clearEventTimeout(\"show\");\r\n this._clearEventTimeout(\"hide\")\r\n },\r\n _clean: function() {\r\n this._detachEvents(this.option(\"target\"));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"arrowPosition\":\r\n case \"arrowOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"fullScreen\":\r\n if (args.value) {\r\n this.option(\"fullScreen\", false)\r\n }\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachEvents(args.previousValue);\r\n this._positionController.updateTarget(args.value);\r\n this._invalidate();\r\n break;\r\n case \"showEvent\":\r\n case \"hideEvent\":\r\n var name = args.name.substring(0, 4);\r\n var event = getEventNameByOption(args.previousValue);\r\n this.hide();\r\n detachEvent(this, this.option(\"target\"), name, event);\r\n attachEvent(this, name);\r\n break;\r\n case \"visible\":\r\n this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n show: function(target) {\r\n if (target) {\r\n this.option(\"target\", target)\r\n }\r\n return this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxPopover\", Popover);\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/popover.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 Popover from \"./popover/ui.popover\";\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator_registry.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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/ui/drop_down_editor/ui.drop_down_button.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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 _this$_fieldRenderQue;\r\n this._fieldRenderQueueLength = (null !== (_this$_fieldRenderQue = this._fieldRenderQueueLength) && void 0 !== _this$_fieldRenderQue ? _this$_fieldRenderQue : 0) + 1;\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 this._fieldRenderQueueLength--;\r\n if (0 !== this._fieldRenderQueueLength) {\r\n return\r\n }\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 hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e),\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 var _e$position, _e$position$v;\r\n var {\r\n labelMode: labelMode,\r\n stylingMode: stylingMode\r\n } = this.option();\r\n var $popupOverlayContent = this._popup.$overlayContent();\r\n var isOverlayFlipped = null === (_e$position = e.position) || void 0 === _e$position ? void 0 : null === (_e$position$v = _e$position.v) || void 0 === _e$position$v ? void 0 : _e$position$v.flip;\r\n var shouldIndentForLabel = \"hidden\" !== labelMode && \"outlined\" === stylingMode;\r\n if (e.position) {\r\n $popupOverlayContent.toggleClass(DROP_DOWN_EDITOR_OVERLAY_FLIPPED, isOverlayFlipped)\r\n }\r\n if (isOverlayFlipped && shouldIndentForLabel && this._label.isVisible()) {\r\n var $label = this._label.$element();\r\n move($popupOverlayContent, {\r\n top: locate($popupOverlayContent).top - parseInt($label.css(\"fontSize\"))\r\n })\r\n }\r\n },\r\n _popupShowingHandler: noop,\r\n _popupHidingHandler: function() {\r\n this.option(\"opened\", false)\r\n },\r\n _popupShownHandler: function() {\r\n var _this$_validationMess;\r\n this._openAction();\r\n null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n },\r\n _popupHiddenHandler: function() {\r\n var _this$_validationMess2;\r\n this._closeAction();\r\n null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(\"positionRequest\", this._getValidationMessagePositionRequest())\r\n },\r\n _getValidationMessagePositionRequest: function() {\r\n var positionRequest = \"below\";\r\n if (this._popup && this._popup.option(\"visible\")) {\r\n var {\r\n top: myTop\r\n } = animationPosition.setup(this.$element());\r\n var {\r\n top: popupTop\r\n } = animationPosition.setup(this._popup.$content());\r\n positionRequest = myTop + this.option(\"popupPosition\").offset.v > popupTop ? \"below\" : \"above\"\r\n }\r\n return positionRequest\r\n },\r\n _closeOutsideDropDownHandler: function(_ref) {\r\n var {\r\n target: target\r\n } = _ref;\r\n var $target = $(target);\r\n var dropDownButton = this.getButton(\"dropDown\");\r\n var $dropDownButton = dropDownButton && dropDownButton.$element();\r\n var isInputClicked = !!$target.closest(this.$element()).length;\r\n var isDropDownButtonClicked = !!$target.closest($dropDownButton).length;\r\n var isOutsideClick = !isInputClicked && !isDropDownButtonClicked;\r\n return isOutsideClick\r\n },\r\n _clean: function() {\r\n delete this._openOnFieldClickAction;\r\n if (this._$popup) {\r\n this._$popup.remove();\r\n delete this._$popup;\r\n delete this._popup\r\n }\r\n this.callBase()\r\n },\r\n _setPopupOption: function(optionName, value) {\r\n this._setWidgetOption(\"_popup\", arguments)\r\n },\r\n _validatedOpening: function() {\r\n if (!this.option(\"readOnly\")) {\r\n this._toggleOpenState(true)\r\n }\r\n },\r\n _getPopupToolbarItems: function() {\r\n return \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : []\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-done.dx-button\")\r\n },\r\n _getLastPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-cancel.dx-button\")\r\n },\r\n _popupElementTabHandler: function(e) {\r\n var $element = $(e.currentTarget);\r\n if (e.shiftKey && $element.is(this._getFirstPopupElement()) || !e.shiftKey && $element.is(this._getLastPopupElement())) {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n e.preventDefault()\r\n }\r\n },\r\n _popupElementEscHandler: function() {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n this.close()\r\n },\r\n _popupButtonInitializedHandler: function(e) {\r\n e.component.registerKeyHandler(\"tab\", this._popupElementTabHandler.bind(this));\r\n e.component.registerKeyHandler(\"escape\", this._popupElementEscHandler.bind(this))\r\n },\r\n _popupToolbarItemsConfig: function() {\r\n var buttonsConfig = [{\r\n shortcut: \"done\",\r\n options: {\r\n onClick: this._applyButtonHandler.bind(this),\r\n text: this.option(\"applyButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }, {\r\n shortcut: \"cancel\",\r\n options: {\r\n onClick: this._cancelButtonHandler.bind(this),\r\n text: this.option(\"cancelButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }];\r\n return this._applyButtonsLocation(buttonsConfig)\r\n },\r\n _applyButtonsLocation: function(buttonsConfig) {\r\n var buttonsLocation = this.option(\"buttonsLocation\");\r\n var resultConfig = buttonsConfig;\r\n if (\"default\" !== buttonsLocation) {\r\n var position = splitPair(buttonsLocation);\r\n each(resultConfig, (function(_, element) {\r\n extend(element, {\r\n toolbar: position[0],\r\n location: position[1]\r\n })\r\n }))\r\n }\r\n return resultConfig\r\n },\r\n _applyButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _cancelButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _popupOptionChanged: function(args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n this._setPopupOption(options);\r\n var optionsKeys = Object.keys(options);\r\n if (-1 !== optionsKeys.indexOf(\"width\") || -1 !== optionsKeys.indexOf(\"height\")) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _renderSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n }\r\n },\r\n _setSubmitValue: function() {\r\n this._getSubmitElement().val(this.option(\"value\"))\r\n },\r\n _getSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n return this._$submitElement\r\n } else {\r\n return this.callBase()\r\n }\r\n },\r\n _dispose: function() {\r\n this._detachFocusOutEvents();\r\n this.callBase()\r\n },\r\n _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: 22.1.6\r\n * Build date: Tue Oct 18 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/editor/ui.data_expression.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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 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 SEARCH_EVENT = \"input\";\r\nvar SEARCH_MODES = [\"startswith\", \"contains\", \"endwith\", \"notcontains\"];\r\nvar useCompositionEvents = \"android\" !== devices.real().platform;\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 },\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 (!SEARCH_MODES.includes(normalizedSearchMode)) {\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._renderPreventBlurOnListClick();\r\n this._setListFocusedElementOptionChange()\r\n },\r\n _renderPreventBlurOnListClick: function() {\r\n var eventName = addNamespace(\"mousedown\", \"dxDropDownList\");\r\n eventsEngine.off(this._$list, eventName);\r\n eventsEngine.on(this._$list, eventName, e => e.preventDefault())\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 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 if (useCompositionEvents) {\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 },\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 if (useCompositionEvents) {\r\n eventsEngine.off(this._input(), this._getCompositionStartEvent());\r\n eventsEngine.off(this._input(), this._getCompositionEndEvent())\r\n }\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 || this._dataSource.isLastPage() && !this._list._scrollViewIsFull();\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: 22.1.6\r\n * Build date: Tue Oct 18 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 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 _items$indexOf;\r\n var searchValue = this._searchValue();\r\n if (!searchValue) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var {\r\n items: items,\r\n selectedItem: selectedItem\r\n } = this.option();\r\n var $listItems = this._list._itemElements();\r\n var index = null !== (_items$indexOf = null === items || void 0 === items ? void 0 : items.indexOf(selectedItem)) && void 0 !== _items$indexOf ? _items$indexOf : -1;\r\n var focusedElement = -1 !== index && !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 {\r\n acceptCustomValue: acceptCustomValue,\r\n text: text,\r\n selectedItem: initialSelectedItem\r\n } = this.option();\r\n if (acceptCustomValue) {\r\n if (!saveEditingValue && !this._isValueChanging) {\r\n this._updateField(null !== initialSelectedItem && void 0 !== initialSelectedItem ? initialSelectedItem : this._createCustomItem(text));\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 }\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 this._isValueChanging = false\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 currentSearchLength = this._searchValue().length;\r\n var isAllSelected = 0 === input.selectionStart && input.selectionEnd === currentSearchLength;\r\n var inputHasSelection = input.selectionStart !== input.selectionEnd;\r\n var isLastSymbolSelected = currentSearchLength === input.selectionEnd;\r\n return this._wasSearch() && inputHasSelection && !isAllSelected && isLastSymbolSelected && this._shouldSubstitutionBeRendered()\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: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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 this._bottomBoundary = Math.max(contentEl.clientHeight - this._bottomPocketSize - containerEl.clientHeight, 0)\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: 22.1.6\r\n * Build date: Tue Oct 18 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 scrollOffset: () => ({\r\n top: 0,\r\n left: 0\r\n }),\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: 22.1.6\r\n * Build date: Tue Oct 18 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/toolbar/constants.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 TOOLBAR_CLASS = \"dx-toolbar\";\r\n","/**\r\n * DevExtreme (esm/ui/shared/grouped_data_converter_mixin.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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/ui/list/ui.list.edit.decorator.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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/events/swipe.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 getHeight\r\n} from \"../core/utils/size\";\r\nimport {\r\n eventData\r\n} from \"./utils/index\";\r\nimport GestureEmitter from \"./gesture/emitter.gesture\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar SWIPE_START_EVENT = \"dxswipestart\";\r\nvar SWIPE_EVENT = \"dxswipe\";\r\nvar SWIPE_END_EVENT = \"dxswipeend\";\r\nvar HorizontalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return getWidth(this.getElement())\r\n },\r\n getBounds: function() {\r\n return [this._maxLeftOffset, this._maxRightOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar VerticalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return getHeight(this.getElement())\r\n },\r\n getBounds: function() {\r\n return [this._maxTopOffset, this._maxBottomOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar STRATEGIES = {\r\n horizontal: HorizontalStrategy,\r\n vertical: VerticalStrategy\r\n};\r\nvar SwipeEmitter = GestureEmitter.inherit({\r\n TICK_INTERVAL: 300,\r\n FAST_SWIPE_SPEED_LIMIT: 10,\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this.direction = \"horizontal\";\r\n this.elastic = true\r\n },\r\n _getStrategy: function() {\r\n return STRATEGIES[this.direction]\r\n },\r\n _defaultItemSizeFunc: function() {\r\n return this._getStrategy().defaultItemSizeFunc.call(this)\r\n },\r\n _itemSizeFunc: function() {\r\n return this.itemSizeFunc || this._defaultItemSizeFunc\r\n },\r\n _init: function(e) {\r\n this._tickData = eventData(e)\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n e = this._fireEvent(SWIPE_START_EVENT, e);\r\n if (!e.cancel) {\r\n this._maxLeftOffset = e.maxLeftOffset;\r\n this._maxRightOffset = e.maxRightOffset;\r\n this._maxTopOffset = e.maxTopOffset;\r\n this._maxBottomOffset = e.maxBottomOffset\r\n }\r\n },\r\n _move: function(e) {\r\n var strategy = this._getStrategy();\r\n var moveEventData = eventData(e);\r\n var offset = strategy.calcOffsetRatio.call(this, e);\r\n offset = this._fitOffset(offset, this.elastic);\r\n if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {\r\n this._tickData = moveEventData\r\n }\r\n this._fireEvent(SWIPE_EVENT, e, {\r\n offset: offset\r\n });\r\n e.preventDefault()\r\n },\r\n _end: function(e) {\r\n var strategy = this._getStrategy();\r\n var offsetRatio = strategy.calcOffsetRatio.call(this, e);\r\n var isFast = strategy.isFastSwipe.call(this, e);\r\n var startOffset = offsetRatio;\r\n var targetOffset = this._calcTargetOffset(offsetRatio, isFast);\r\n startOffset = this._fitOffset(startOffset, this.elastic);\r\n targetOffset = this._fitOffset(targetOffset, false);\r\n this._fireEvent(SWIPE_END_EVENT, e, {\r\n offset: startOffset,\r\n targetOffset: targetOffset\r\n })\r\n },\r\n _fitOffset: function(offset, elastic) {\r\n var strategy = this._getStrategy();\r\n var bounds = strategy.getBounds.call(this);\r\n if (offset < -bounds[0]) {\r\n return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]\r\n }\r\n if (offset > bounds[1]) {\r\n return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]\r\n }\r\n return offset\r\n },\r\n _calcTargetOffset: function(offsetRatio, isFast) {\r\n var result;\r\n if (isFast) {\r\n result = Math.ceil(Math.abs(offsetRatio));\r\n if (offsetRatio < 0) {\r\n result = -result\r\n }\r\n } else {\r\n result = Math.round(offsetRatio)\r\n }\r\n return result\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: SwipeEmitter,\r\n events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT]\r\n});\r\nexport {\r\n SWIPE_EVENT as swipe, SWIPE_START_EVENT as start, SWIPE_END_EVENT as end\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popup/popup_drag.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 locate,\r\n move\r\n} from \"../../animation/translator\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getOffset,\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n isWindow\r\n} from \"../../core/utils/type\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n start as dragStartEvent,\r\n move as dragMoveEvent,\r\n end as dragEndEvent\r\n} from \"../../events/drag\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nvar KEYBOARD_DRAG_STEP = 5;\r\nclass PopupDrag {\r\n constructor(config) {\r\n this.init(config)\r\n }\r\n init(_ref) {\r\n var {\r\n dragEnabled: dragEnabled,\r\n handle: handle,\r\n draggableElement: draggableElement,\r\n positionController: positionController\r\n } = _ref;\r\n this._positionController = positionController;\r\n this._draggableElement = draggableElement;\r\n this._handle = handle;\r\n this._dragEnabled = dragEnabled;\r\n this.unsubscribe();\r\n if (!dragEnabled) {\r\n return\r\n }\r\n this.subscribe()\r\n }\r\n moveDown(e) {\r\n this._moveTo(KEYBOARD_DRAG_STEP, 0, e)\r\n }\r\n moveUp(e) {\r\n this._moveTo(-KEYBOARD_DRAG_STEP, 0, e)\r\n }\r\n moveLeft(e) {\r\n this._moveTo(0, -KEYBOARD_DRAG_STEP, e)\r\n }\r\n moveRight(e) {\r\n this._moveTo(0, KEYBOARD_DRAG_STEP, e)\r\n }\r\n subscribe() {\r\n var eventNames = this._getEventNames();\r\n eventsEngine.on(this._handle, eventNames.startEventName, e => {\r\n this._dragStartHandler(e)\r\n });\r\n eventsEngine.on(this._handle, eventNames.updateEventName, e => {\r\n this._dragUpdateHandler(e)\r\n });\r\n eventsEngine.on(this._handle, eventNames.endEventName, e => {\r\n this._dragEndHandler(e)\r\n })\r\n }\r\n unsubscribe() {\r\n var eventNames = this._getEventNames();\r\n eventsEngine.off(this._handle, eventNames.startEventName);\r\n eventsEngine.off(this._handle, eventNames.updateEventName);\r\n eventsEngine.off(this._handle, eventNames.endEventName)\r\n }\r\n _getEventNames() {\r\n var startEventName = addNamespace(dragStartEvent, \"overlayDrag\");\r\n var updateEventName = addNamespace(dragMoveEvent, \"overlayDrag\");\r\n var endEventName = addNamespace(dragEndEvent, \"overlayDrag\");\r\n return {\r\n startEventName: startEventName,\r\n updateEventName: updateEventName,\r\n endEventName: endEventName\r\n }\r\n }\r\n _dragStartHandler(e) {\r\n var allowedOffsets = this._getAllowedOffsets();\r\n this._prevOffset = {\r\n x: 0,\r\n y: 0\r\n };\r\n e.targetElements = [];\r\n e.maxTopOffset = allowedOffsets.top;\r\n e.maxBottomOffset = allowedOffsets.bottom;\r\n e.maxLeftOffset = allowedOffsets.left;\r\n e.maxRightOffset = allowedOffsets.right\r\n }\r\n _dragUpdateHandler(e) {\r\n var targetOffset = {\r\n top: e.offset.y - this._prevOffset.y,\r\n left: e.offset.x - this._prevOffset.x\r\n };\r\n this._moveByOffset(targetOffset);\r\n this._prevOffset = e.offset\r\n }\r\n _dragEndHandler(event) {\r\n this._positionController.dragHandled();\r\n this._positionController.detectVisualPositionChange(event)\r\n }\r\n _moveTo(top, left, e) {\r\n if (!this._dragEnabled) {\r\n return\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var offset = this._fitOffsetIntoAllowedRange(top, left);\r\n this._moveByOffset(offset);\r\n this._dragEndHandler(e)\r\n }\r\n _fitOffsetIntoAllowedRange(top, left) {\r\n var allowedOffsets = this._getAllowedOffsets();\r\n return {\r\n top: fitIntoRange(top, -allowedOffsets.top, allowedOffsets.bottom),\r\n left: fitIntoRange(left, -allowedOffsets.left, allowedOffsets.right)\r\n }\r\n }\r\n _getContainerDimensions() {\r\n var document = domAdapter.getDocument();\r\n var container = this._positionController.$dragResizeContainer.get(0);\r\n var containerWidth = getOuterWidth(container);\r\n var containerHeight = getOuterHeight(container);\r\n if (isWindow(container)) {\r\n containerHeight = Math.max(document.body.clientHeight, containerHeight);\r\n containerWidth = Math.max(document.body.clientWidth, containerWidth)\r\n }\r\n return {\r\n width: containerWidth,\r\n height: containerHeight\r\n }\r\n }\r\n _getContainerPosition() {\r\n var container = this._positionController.$dragResizeContainer.get(0);\r\n return isWindow(container) ? {\r\n top: 0,\r\n left: 0\r\n } : getOffset(container)\r\n }\r\n _getElementPosition() {\r\n return getOffset(this._draggableElement)\r\n }\r\n _getInnerDelta() {\r\n var containerDimensions = this._getContainerDimensions();\r\n var elementDimensions = this._getElementDimensions();\r\n return {\r\n x: containerDimensions.width - elementDimensions.width,\r\n y: containerDimensions.height - elementDimensions.height\r\n }\r\n }\r\n _getOuterDelta() {\r\n var {\r\n width: width,\r\n height: height\r\n } = this._getElementDimensions();\r\n var outsideDragFactor = this._positionController.outsideDragFactor;\r\n return {\r\n x: width * outsideDragFactor,\r\n y: height * outsideDragFactor\r\n }\r\n }\r\n _getFullDelta() {\r\n var fullDelta = this._getInnerDelta();\r\n var outerDelta = this._getOuterDelta();\r\n return {\r\n x: fullDelta.x + outerDelta.x,\r\n y: fullDelta.y + outerDelta.y\r\n }\r\n }\r\n _getElementDimensions() {\r\n return {\r\n width: this._draggableElement.offsetWidth,\r\n height: this._draggableElement.offsetHeight\r\n }\r\n }\r\n _getAllowedOffsets() {\r\n var fullDelta = this._getFullDelta();\r\n var isDragAllowed = fullDelta.y >= 0 && fullDelta.x >= 0;\r\n if (!isDragAllowed) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0\r\n }\r\n }\r\n var elementPosition = this._getElementPosition();\r\n var containerPosition = this._getContainerPosition();\r\n var outerDelta = this._getOuterDelta();\r\n return {\r\n top: elementPosition.top - containerPosition.top + outerDelta.y,\r\n bottom: -elementPosition.top + containerPosition.top + fullDelta.y,\r\n left: elementPosition.left - containerPosition.left + outerDelta.x,\r\n right: -elementPosition.left + containerPosition.left + fullDelta.x\r\n }\r\n }\r\n _moveByOffset(offset) {\r\n var currentPosition = locate(this._draggableElement);\r\n var newPosition = {\r\n left: currentPosition.left + offset.left,\r\n top: currentPosition.top + offset.top\r\n };\r\n move(this._draggableElement, newPosition)\r\n }\r\n}\r\nexport default PopupDrag;\r\n","/**\r\n * DevExtreme (esm/ui/resizable.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 getOuterWidth,\r\n getOuterHeight,\r\n getInnerWidth,\r\n getInnerHeight,\r\n getWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n pairToObject\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n fitIntoRange,\r\n inRange\r\n} from \"../core/utils/math\";\r\nimport {\r\n isPlainObject,\r\n isFunction,\r\n isWindow\r\n} from \"../core/utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd\r\n} from \"../events/drag\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../events/visibility_change\";\r\nvar RESIZABLE = \"dxResizable\";\r\nvar RESIZABLE_CLASS = \"dx-resizable\";\r\nvar RESIZABLE_RESIZING_CLASS = \"dx-resizable-resizing\";\r\nvar RESIZABLE_HANDLE_CLASS = \"dx-resizable-handle\";\r\nvar RESIZABLE_HANDLE_TOP_CLASS = \"dx-resizable-handle-top\";\r\nvar RESIZABLE_HANDLE_BOTTOM_CLASS = \"dx-resizable-handle-bottom\";\r\nvar RESIZABLE_HANDLE_LEFT_CLASS = \"dx-resizable-handle-left\";\r\nvar RESIZABLE_HANDLE_RIGHT_CLASS = \"dx-resizable-handle-right\";\r\nvar RESIZABLE_HANDLE_CORNER_CLASS = \"dx-resizable-handle-corner\";\r\nvar DRAGSTART_START_EVENT_NAME = addNamespace(dragEventStart, RESIZABLE);\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventMove, RESIZABLE);\r\nvar DRAGSTART_END_EVENT_NAME = addNamespace(dragEventEnd, RESIZABLE);\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\nvar Resizable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n handles: \"all\",\r\n step: \"1\",\r\n stepPrecision: \"simple\",\r\n area: void 0,\r\n minWidth: 30,\r\n maxWidth: 1 / 0,\r\n minHeight: 30,\r\n maxHeight: 1 / 0,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n roundStepValue: true,\r\n keepAspectRatio: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(RESIZABLE_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderHandles()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderActions()\r\n },\r\n _renderActions: function() {\r\n this._resizeStartAction = this._createActionByOption(\"onResizeStart\");\r\n this._resizeEndAction = this._createActionByOption(\"onResizeEnd\");\r\n this._resizeAction = this._createActionByOption(\"onResize\")\r\n },\r\n _renderHandles: function() {\r\n this._handles = [];\r\n var handles = this.option(\"handles\");\r\n if (\"none\" === handles || !handles) {\r\n return\r\n }\r\n var directions = \"all\" === handles ? [\"top\", \"bottom\", \"left\", \"right\"] : handles.split(\" \");\r\n var activeHandlesMap = {};\r\n each(directions, (index, handleName) => {\r\n activeHandlesMap[handleName] = true;\r\n this._renderHandle(handleName)\r\n });\r\n activeHandlesMap.bottom && activeHandlesMap.right && this._renderHandle(\"corner-bottom-right\");\r\n activeHandlesMap.bottom && activeHandlesMap.left && this._renderHandle(\"corner-bottom-left\");\r\n activeHandlesMap.top && activeHandlesMap.right && this._renderHandle(\"corner-top-right\");\r\n activeHandlesMap.top && activeHandlesMap.left && this._renderHandle(\"corner-top-left\");\r\n this._attachEventHandlers()\r\n },\r\n _renderHandle: function(handleName) {\r\n var $handle = $(\"
\").addClass(RESIZABLE_HANDLE_CLASS).addClass(RESIZABLE_HANDLE_CLASS + \"-\" + handleName).appendTo(this.$element());\r\n this._handles.push($handle)\r\n },\r\n _attachEventHandlers: function() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var handlers = {};\r\n handlers[DRAGSTART_START_EVENT_NAME] = this._dragStartHandler.bind(this);\r\n handlers[DRAGSTART_EVENT_NAME] = this._dragHandler.bind(this);\r\n handlers[DRAGSTART_END_EVENT_NAME] = this._dragEndHandler.bind(this);\r\n this._handles.forEach(handleElement => {\r\n eventsEngine.on(handleElement, handlers, {\r\n direction: \"both\",\r\n immediate: true\r\n })\r\n })\r\n },\r\n _detachEventHandlers: function() {\r\n this._handles.forEach(handleElement => {\r\n eventsEngine.off(handleElement)\r\n })\r\n },\r\n _toggleEventHandlers: function(shouldAttachEvents) {\r\n shouldAttachEvents ? this._attachEventHandlers() : this._detachEventHandlers()\r\n },\r\n _getElementSize: function() {\r\n var $element = this.$element();\r\n return \"border-box\" === $element.css(\"boxSizing\") ? {\r\n width: getOuterWidth($element),\r\n height: getOuterHeight($element)\r\n } : {\r\n width: getWidth($element),\r\n height: getHeight($element)\r\n }\r\n },\r\n _dragStartHandler: function(e) {\r\n var $element = this.$element();\r\n if ($element.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n this._toggleResizingClass(true);\r\n this._movingSides = this._getMovingSides(e);\r\n this._elementLocation = locate($element);\r\n this._elementSize = this._getElementSize();\r\n this._renderDragOffsets(e);\r\n this._resizeStartAction({\r\n event: e,\r\n width: this._elementSize.width,\r\n height: this._elementSize.height,\r\n handles: this._movingSides\r\n });\r\n e.targetElements = null\r\n },\r\n _toggleResizingClass: function(value) {\r\n this.$element().toggleClass(RESIZABLE_RESIZING_CLASS, value)\r\n },\r\n _renderDragOffsets: function(e) {\r\n var area = this._getArea();\r\n if (!area) {\r\n return\r\n }\r\n var $handle = $(e.target).closest(\".\" + RESIZABLE_HANDLE_CLASS);\r\n var handleWidth = getOuterWidth($handle);\r\n var handleHeight = getOuterHeight($handle);\r\n var handleOffset = $handle.offset();\r\n var areaOffset = area.offset;\r\n var scrollOffset = this._getAreaScrollOffset();\r\n e.maxLeftOffset = this._leftMaxOffset = handleOffset.left - areaOffset.left - scrollOffset.scrollX;\r\n e.maxRightOffset = this._rightMaxOffset = areaOffset.left + area.width - handleOffset.left - handleWidth + scrollOffset.scrollX;\r\n e.maxTopOffset = this._topMaxOffset = handleOffset.top - areaOffset.top - scrollOffset.scrollY;\r\n e.maxBottomOffset = this._bottomMaxOffset = areaOffset.top + area.height - handleOffset.top - handleHeight + scrollOffset.scrollY\r\n },\r\n _getBorderWidth: function($element, direction) {\r\n if (isWindow($element.get(0))) {\r\n return 0\r\n }\r\n var borderWidth = $element.css(SIDE_BORDER_WIDTH_STYLES[direction]);\r\n return parseInt(borderWidth) || 0\r\n },\r\n _proportionate: function(direction, value) {\r\n var size = this._elementSize;\r\n var factor = \"x\" === direction ? size.width / size.height : size.height / size.width;\r\n return value * factor\r\n },\r\n _getProportionalDelta: function(_ref) {\r\n var {\r\n x: x,\r\n y: y\r\n } = _ref;\r\n var proportionalY = this._proportionate(\"y\", x);\r\n if (proportionalY >= y) {\r\n return {\r\n x: x,\r\n y: proportionalY\r\n }\r\n }\r\n var proportionalX = this._proportionate(\"x\", y);\r\n if (proportionalX >= x) {\r\n return {\r\n x: proportionalX,\r\n y: y\r\n }\r\n }\r\n return {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n _getDirectionName: function(axis) {\r\n var sides = this._movingSides;\r\n if (\"x\" === axis) {\r\n return sides.left ? \"left\" : \"right\"\r\n } else {\r\n return sides.top ? \"top\" : \"bottom\"\r\n }\r\n },\r\n _fitIntoArea: function(axis, value) {\r\n var _this;\r\n var directionName = this._getDirectionName(axis);\r\n return Math.min(value, null !== (_this = this[\"_\".concat(directionName, \"MaxOffset\")]) && void 0 !== _this ? _this : 1 / 0)\r\n },\r\n _fitDeltaProportionally: function(delta) {\r\n var fittedDelta = _extends({}, delta);\r\n var size = this._elementSize;\r\n var {\r\n minWidth: minWidth,\r\n minHeight: minHeight,\r\n maxWidth: maxWidth,\r\n maxHeight: maxHeight\r\n } = this.option();\r\n var getWidth = () => size.width + fittedDelta.x;\r\n var getHeight = () => size.height + fittedDelta.y;\r\n var isInArea = axis => fittedDelta[axis] === this._fitIntoArea(axis, fittedDelta[axis]);\r\n var isFittedX = () => inRange(getWidth(), minWidth, maxWidth) && isInArea(\"x\");\r\n var isFittedY = () => inRange(getHeight(), minHeight, maxHeight) && isInArea(\"y\");\r\n if (!isFittedX()) {\r\n var x = this._fitIntoArea(\"x\", fitIntoRange(getWidth(), minWidth, maxWidth) - size.width);\r\n fittedDelta = {\r\n x: x,\r\n y: this._proportionate(\"y\", x)\r\n }\r\n }\r\n if (!isFittedY()) {\r\n var y = this._fitIntoArea(\"y\", fitIntoRange(getHeight(), minHeight, maxHeight) - size.height);\r\n fittedDelta = {\r\n x: this._proportionate(\"x\", y),\r\n y: y\r\n }\r\n }\r\n return isFittedX() && isFittedY() ? fittedDelta : {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n _fitDelta: function(_ref2) {\r\n var {\r\n x: x,\r\n y: y\r\n } = _ref2;\r\n var size = this._elementSize;\r\n var {\r\n minWidth: minWidth,\r\n minHeight: minHeight,\r\n maxWidth: maxWidth,\r\n maxHeight: maxHeight\r\n } = this.option();\r\n return {\r\n x: fitIntoRange(size.width + x, minWidth, maxWidth) - size.width,\r\n y: fitIntoRange(size.height + y, minHeight, maxHeight) - size.height\r\n }\r\n },\r\n _getDeltaByOffset: function(offset) {\r\n var sides = this._movingSides;\r\n var shouldKeepAspectRatio = this._isCornerHandler(sides) && this.option(\"keepAspectRatio\");\r\n var delta = {\r\n x: offset.x * (sides.left ? -1 : 1),\r\n y: offset.y * (sides.top ? -1 : 1)\r\n };\r\n if (shouldKeepAspectRatio) {\r\n var proportionalDelta = this._getProportionalDelta(delta);\r\n var fittedProportionalDelta = this._fitDeltaProportionally(proportionalDelta);\r\n delta = fittedProportionalDelta\r\n } else {\r\n var fittedDelta = this._fitDelta(delta);\r\n var roundedFittedDelta = this._roundByStep(fittedDelta);\r\n delta = roundedFittedDelta\r\n }\r\n return delta\r\n },\r\n _updatePosition: function(delta, _ref3) {\r\n var {\r\n width: width,\r\n height: height\r\n } = _ref3;\r\n var location = this._elementLocation;\r\n var sides = this._movingSides;\r\n var $element = this.$element();\r\n var elementRect = this._getElementSize();\r\n var offsetTop = delta.y * (sides.top ? -1 : 1) - ((elementRect.height || height) - height);\r\n var offsetLeft = delta.x * (sides.left ? -1 : 1) - ((elementRect.width || width) - width);\r\n move($element, {\r\n top: location.top + (sides.top ? offsetTop : 0),\r\n left: location.left + (sides.left ? offsetLeft : 0)\r\n })\r\n },\r\n _dragHandler: function(e) {\r\n var offset = this._getOffset(e);\r\n var delta = this._getDeltaByOffset(offset);\r\n var dimensions = this._updateDimensions(delta);\r\n this._updatePosition(delta, dimensions);\r\n this._triggerResizeAction(e, dimensions)\r\n },\r\n _updateDimensions: function(delta) {\r\n var isAbsoluteSize = size => \"px\" === size.substring(size.length - 2);\r\n var isStepPrecisionStrict = \"strict\" === this.option(\"stepPrecision\");\r\n var size = this._elementSize;\r\n var width = size.width + delta.x;\r\n var height = size.height + delta.y;\r\n var elementStyle = this.$element().get(0).style;\r\n var shouldRenderWidth = delta.x || isStepPrecisionStrict || isAbsoluteSize(elementStyle.width);\r\n var shouldRenderHeight = delta.y || isStepPrecisionStrict || isAbsoluteSize(elementStyle.height);\r\n if (shouldRenderWidth) {\r\n this.option({\r\n width: width\r\n })\r\n }\r\n if (shouldRenderHeight) {\r\n this.option({\r\n height: height\r\n })\r\n }\r\n return {\r\n width: shouldRenderWidth ? width : size.width,\r\n height: shouldRenderHeight ? height : size.height\r\n }\r\n },\r\n _triggerResizeAction: function(e, _ref4) {\r\n var {\r\n width: width,\r\n height: height\r\n } = _ref4;\r\n this._resizeAction({\r\n event: e,\r\n width: this.option(\"width\") || width,\r\n height: this.option(\"height\") || height,\r\n handles: this._movingSides\r\n });\r\n triggerResizeEvent(this.$element())\r\n },\r\n _isCornerHandler: sides => 0 === Object.values(sides).reduce((xor, value) => xor ^ value, 0),\r\n _getOffset: function(e) {\r\n var offset = e.offset;\r\n var sides = this._movingSides;\r\n if (!sides.left && !sides.right) {\r\n offset.x = 0\r\n }\r\n if (!sides.top && !sides.bottom) {\r\n offset.y = 0\r\n }\r\n return offset\r\n },\r\n _roundByStep: function(delta) {\r\n return \"strict\" === this.option(\"stepPrecision\") ? this._roundStrict(delta) : this._roundNotStrict(delta)\r\n },\r\n _getSteps: function() {\r\n return pairToObject(this.option(\"step\"), !this.option(\"roundStepValue\"))\r\n },\r\n _roundNotStrict: function(delta) {\r\n var steps = this._getSteps();\r\n return {\r\n x: delta.x - delta.x % steps.h,\r\n y: delta.y - delta.y % steps.v\r\n }\r\n },\r\n _roundStrict: function(delta) {\r\n var sides = this._movingSides;\r\n var offset = {\r\n x: delta.x * (sides.left ? -1 : 1),\r\n y: delta.y * (sides.top ? -1 : 1)\r\n };\r\n var steps = this._getSteps();\r\n var location = this._elementLocation;\r\n var size = this._elementSize;\r\n var xPos = sides.left ? location.left : location.left + size.width;\r\n var yPos = sides.top ? location.top : location.top + size.height;\r\n var newXShift = (xPos + offset.x) % steps.h;\r\n var newYShift = (yPos + offset.y) % steps.v;\r\n var sign = Math.sign || (x => {\r\n x = +x;\r\n if (0 === x || isNaN(x)) {\r\n return x\r\n }\r\n return x > 0 ? 1 : -1\r\n });\r\n var separatorOffset = (steps, offset) => (1 + .2 * sign(offset)) % 1 * steps;\r\n var isSmallOffset = (offset, steps) => Math.abs(offset) < .2 * steps;\r\n var newOffsetX = offset.x - newXShift;\r\n var newOffsetY = offset.y - newYShift;\r\n if (newXShift > separatorOffset(steps.h, offset.x)) {\r\n newOffsetX += steps.h\r\n }\r\n if (newYShift > separatorOffset(steps.v, offset.y)) {\r\n newOffsetY += steps.v\r\n }\r\n var roundedOffset_x = (sides.left || sides.right) && !isSmallOffset(offset.x, steps.h) ? newOffsetX : 0,\r\n roundedOffset_y = (sides.top || sides.bottom) && !isSmallOffset(offset.y, steps.v) ? newOffsetY : 0;\r\n return {\r\n x: roundedOffset_x * (sides.left ? -1 : 1),\r\n y: roundedOffset_y * (sides.top ? -1 : 1)\r\n }\r\n },\r\n _getMovingSides: function(e) {\r\n var $target = $(e.target);\r\n var hasCornerTopLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-left\");\r\n var hasCornerTopRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-right\");\r\n var hasCornerBottomLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-left\");\r\n var hasCornerBottomRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-right\");\r\n return {\r\n top: $target.hasClass(RESIZABLE_HANDLE_TOP_CLASS) || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: $target.hasClass(RESIZABLE_HANDLE_LEFT_CLASS) || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: $target.hasClass(RESIZABLE_HANDLE_BOTTOM_CLASS) || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: $target.hasClass(RESIZABLE_HANDLE_RIGHT_CLASS) || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n },\r\n _getArea: function() {\r\n var area = this.option(\"area\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n if (isPlainObject(area)) {\r\n return this._getAreaFromObject(area)\r\n }\r\n return this._getAreaFromElement(area)\r\n },\r\n _getAreaScrollOffset: function() {\r\n var area = this.option(\"area\");\r\n var isElement = !isFunction(area) && !isPlainObject(area);\r\n var scrollOffset = {\r\n scrollY: 0,\r\n scrollX: 0\r\n };\r\n if (isElement) {\r\n var areaElement = $(area)[0];\r\n if (isWindow(areaElement)) {\r\n scrollOffset.scrollX = areaElement.pageXOffset;\r\n scrollOffset.scrollY = areaElement.pageYOffset\r\n }\r\n }\r\n return scrollOffset\r\n },\r\n _getAreaFromObject: function(area) {\r\n var result = {\r\n width: area.right - area.left,\r\n height: area.bottom - area.top,\r\n offset: {\r\n left: area.left,\r\n top: area.top\r\n }\r\n };\r\n this._correctAreaGeometry(result);\r\n return result\r\n },\r\n _getAreaFromElement: function(area) {\r\n var $area = $(area);\r\n var result;\r\n if ($area.length) {\r\n result = {\r\n width: getInnerWidth($area),\r\n height: getInnerHeight($area),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow($area[0]) ? {} : $area.offset())\r\n };\r\n this._correctAreaGeometry(result, $area)\r\n }\r\n return result\r\n },\r\n _correctAreaGeometry: function(result, $area) {\r\n var areaBorderLeft = $area ? this._getBorderWidth($area, \"left\") : 0;\r\n var areaBorderTop = $area ? this._getBorderWidth($area, \"top\") : 0;\r\n result.offset.left += areaBorderLeft + this._getBorderWidth(this.$element(), \"left\");\r\n result.offset.top += areaBorderTop + this._getBorderWidth(this.$element(), \"top\");\r\n result.width -= getOuterWidth(this.$element()) - getInnerWidth(this.$element());\r\n result.height -= getOuterHeight(this.$element()) - getInnerHeight(this.$element())\r\n },\r\n _dragEndHandler: function(e) {\r\n var $element = this.$element();\r\n this._resizeEndAction({\r\n event: e,\r\n width: getOuterWidth($element),\r\n height: getOuterHeight($element),\r\n handles: this._movingSides\r\n });\r\n this._toggleResizingClass(false)\r\n },\r\n _renderWidth: function(width) {\r\n this.option(\"width\", fitIntoRange(width, this.option(\"minWidth\"), this.option(\"maxWidth\")))\r\n },\r\n _renderHeight: function(height) {\r\n this.option(\"height\", fitIntoRange(height, this.option(\"minHeight\"), this.option(\"maxHeight\")))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n this._toggleEventHandlers(!args.value);\r\n this.callBase(args);\r\n break;\r\n case \"handles\":\r\n this._invalidate();\r\n break;\r\n case \"minWidth\":\r\n case \"maxWidth\":\r\n hasWindow() && this._renderWidth(getOuterWidth(this.$element()));\r\n break;\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n hasWindow() && this._renderHeight(getOuterHeight(this.$element()));\r\n break;\r\n case \"onResize\":\r\n case \"onResizeStart\":\r\n case \"onResizeEnd\":\r\n this._renderActions();\r\n break;\r\n case \"area\":\r\n case \"stepPrecision\":\r\n case \"step\":\r\n case \"roundStepValue\":\r\n case \"keepAspectRatio\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n this.$element().find(\".\" + RESIZABLE_HANDLE_CLASS).remove()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nregisterComponent(RESIZABLE, Resizable);\r\nexport default Resizable;\r\n","/**\r\n * DevExtreme (esm/ui/popup/popup_position_controller.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 = [\"fullScreen\", \"forceApplyBindings\", \"dragOutsideBoundary\", \"dragAndResizeArea\", \"outsideDragFactor\"];\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n originalViewPort\r\n} from \"../../core/utils/view_port\";\r\nimport {\r\n OverlayPositionController\r\n} from \"../overlay/overlay_position_controller\";\r\nvar window = getWindow();\r\nclass PopupPositionController extends OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n super(args);\r\n this._props = _extends({}, this._props, {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n });\r\n this._$dragResizeContainer = void 0;\r\n this._outsideDragFactor = void 0;\r\n this._lastPositionBeforeFullScreen = void 0;\r\n this._updateDragResizeContainer();\r\n this._updateOutsideDragFactor()\r\n }\r\n set fullScreen(fullScreen) {\r\n this._props.fullScreen = fullScreen;\r\n if (fullScreen) {\r\n this._fullScreenEnabled()\r\n } else {\r\n this._fullScreenDisabled()\r\n }\r\n }\r\n get $dragResizeContainer() {\r\n return this._$dragResizeContainer\r\n }\r\n get outsideDragFactor() {\r\n return this._outsideDragFactor\r\n }\r\n set dragAndResizeArea(dragAndResizeArea) {\r\n this._props.dragAndResizeArea = dragAndResizeArea;\r\n this._updateDragResizeContainer()\r\n }\r\n set dragOutsideBoundary(dragOutsideBoundary) {\r\n this._props.dragOutsideBoundary = dragOutsideBoundary;\r\n this._updateDragResizeContainer();\r\n this._updateOutsideDragFactor()\r\n }\r\n set outsideDragFactor(outsideDragFactor) {\r\n this._props.outsideDragFactor = outsideDragFactor;\r\n this._updateOutsideDragFactor()\r\n }\r\n updateContainer(containerProp) {\r\n super.updateContainer(containerProp);\r\n this._updateDragResizeContainer()\r\n }\r\n dragHandled() {\r\n this.restorePositionOnNextRender(false)\r\n }\r\n resizeHandled() {\r\n this.restorePositionOnNextRender(false)\r\n }\r\n positionContent() {\r\n if (this._props.fullScreen) {\r\n move(this._$content, {\r\n top: 0,\r\n left: 0\r\n });\r\n this.detectVisualPositionChange()\r\n } else {\r\n var _this$_props$forceApp, _this$_props;\r\n null === (_this$_props$forceApp = (_this$_props = this._props).forceApplyBindings) || void 0 === _this$_props$forceApp ? void 0 : _this$_props$forceApp.call(_this$_props);\r\n if (!this._shouldRenderContentInitialPosition && this._lastPositionBeforeFullScreen) {\r\n move(this._$content, this._lastPositionBeforeFullScreen);\r\n this._lastPositionBeforeFullScreen = void 0;\r\n this.detectVisualPositionChange()\r\n } else {\r\n super.positionContent()\r\n }\r\n }\r\n }\r\n _updateOutsideDragFactor() {\r\n this._outsideDragFactor = this._getOutsideDragFactor()\r\n }\r\n _getOutsideDragFactor() {\r\n if (this._props.dragOutsideBoundary) {\r\n return 1\r\n }\r\n return this._props.outsideDragFactor\r\n }\r\n _updateDragResizeContainer() {\r\n this._$dragResizeContainer = this._getDragResizeContainer()\r\n }\r\n _getDragResizeContainer() {\r\n if (this._props.dragOutsideBoundary) {\r\n return $(window)\r\n }\r\n if (this._props.dragAndResizeArea) {\r\n return $(this._props.dragAndResizeArea)\r\n }\r\n var isContainerDefined = originalViewPort().get(0) || this._props.container;\r\n return isContainerDefined ? this._$markupContainer : $(window)\r\n }\r\n _getVisualContainer() {\r\n if (this._props.fullScreen) {\r\n return $(window)\r\n }\r\n return super._getVisualContainer()\r\n }\r\n _fullScreenEnabled() {\r\n this.restorePositionOnNextRender(false);\r\n this._lastPositionBeforeFullScreen = this._visualPosition\r\n }\r\n _fullScreenDisabled() {\r\n this.restorePositionOnNextRender(false)\r\n }\r\n}\r\nexport {\r\n PopupPositionController\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popup/ui.popup.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 devices from \"../../core/devices\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../../core/templates/empty_template\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n camelize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getVisibleHeight,\r\n addOffsetToMaxHeight,\r\n addOffsetToMinHeight,\r\n getVerticalOffsets,\r\n getOuterWidth,\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../../core/utils/version\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../../events/visibility_change\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport PopupDrag from \"./popup_drag\";\r\nimport Resizable from \"../resizable\";\r\nimport Button from \"../button\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport {\r\n isMaterial,\r\n current as currentTheme\r\n} from \"../themes\";\r\nimport \"../toolbar/ui.toolbar.base\";\r\nimport resizeObserverSingleton from \"../../core/resize_observer\";\r\nimport * as zIndexPool from \"../overlay/z_index\";\r\nimport {\r\n PopupPositionController\r\n} from \"./popup_position_controller\";\r\nvar window = getWindow();\r\nvar POPUP_CLASS = \"dx-popup\";\r\nvar POPUP_WRAPPER_CLASS = \"dx-popup-wrapper\";\r\nvar POPUP_FULL_SCREEN_CLASS = \"dx-popup-fullscreen\";\r\nvar POPUP_FULL_SCREEN_WIDTH_CLASS = \"dx-popup-fullscreen-width\";\r\nvar POPUP_NORMAL_CLASS = \"dx-popup-normal\";\r\nvar POPUP_CONTENT_CLASS = \"dx-popup-content\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar POPUP_DRAGGABLE_CLASS = \"dx-popup-draggable\";\r\nvar POPUP_TITLE_CLASS = \"dx-popup-title\";\r\nvar POPUP_TITLE_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar POPUP_BOTTOM_CLASS = \"dx-popup-bottom\";\r\nvar POPUP_HAS_CLOSE_BUTTON_CLASS = \"dx-has-close-button\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar POPUP_CONTENT_FLEX_HEIGHT_CLASS = \"dx-popup-flex-height\";\r\nvar POPUP_CONTENT_INHERIT_HEIGHT_CLASS = \"dx-popup-inherit-height\";\r\nvar ALLOWED_TOOLBAR_ITEM_ALIASES = [\"cancel\", \"clear\", \"done\"];\r\nvar BUTTON_DEFAULT_TYPE = \"default\";\r\nvar BUTTON_NORMAL_TYPE = \"normal\";\r\nvar BUTTON_TEXT_MODE = \"text\";\r\nvar BUTTON_CONTAINED_MODE = \"contained\";\r\nvar IS_OLD_SAFARI = browser.safari && compareVersions(browser.version, [11]) < 0;\r\nvar HEIGHT_STRATEGIES = {\r\n static: \"\",\r\n inherit: POPUP_CONTENT_INHERIT_HEIGHT_CLASS,\r\n flex: POPUP_CONTENT_FLEX_HEIGHT_CLASS\r\n};\r\nvar getButtonPlace = name => {\r\n var device = devices.current();\r\n var platform = device.platform;\r\n var toolbar = \"bottom\";\r\n var location = \"before\";\r\n if (\"ios\" === platform) {\r\n switch (name) {\r\n case \"cancel\":\r\n toolbar = \"top\";\r\n break;\r\n case \"clear\":\r\n toolbar = \"top\";\r\n location = \"after\";\r\n break;\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n } else if (\"android\" === platform) {\r\n switch (name) {\r\n case \"cancel\":\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n }\r\n return {\r\n toolbar: toolbar,\r\n location: location\r\n }\r\n};\r\nvar Popup = Overlay.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n upArrow: e => {\r\n var _this$_drag;\r\n null === (_this$_drag = this._drag) || void 0 === _this$_drag ? void 0 : _this$_drag.moveUp(e)\r\n },\r\n downArrow: e => {\r\n var _this$_drag2;\r\n null === (_this$_drag2 = this._drag) || void 0 === _this$_drag2 ? void 0 : _this$_drag2.moveDown(e)\r\n },\r\n leftArrow: e => {\r\n var _this$_drag3;\r\n null === (_this$_drag3 = this._drag) || void 0 === _this$_drag3 ? void 0 : _this$_drag3.moveLeft(e)\r\n },\r\n rightArrow: e => {\r\n var _this$_drag4;\r\n null === (_this$_drag4 = this._drag) || void 0 === _this$_drag4 ? void 0 : _this$_drag4.moveRight(e)\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n fullScreen: false,\r\n title: \"\",\r\n showTitle: true,\r\n titleTemplate: \"title\",\r\n onTitleRendered: null,\r\n dragOutsideBoundary: false,\r\n dragEnabled: false,\r\n dragAndResizeArea: void 0,\r\n outsideDragFactor: 0,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n resizeEnabled: false,\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n bottomTemplate: \"bottom\",\r\n useDefaultToolbarButtons: false,\r\n useFlatToolbarButtons: false,\r\n autoResizeEnabled: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = currentTheme();\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n animation: this._iosAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n animation: this._androidAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n showCloseButton: true\r\n }\r\n }, {\r\n device: function(_device) {\r\n return \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n dragEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n useDefaultToolbarButtons: true,\r\n useFlatToolbarButtons: true,\r\n showCloseButton: false\r\n }\r\n }])\r\n },\r\n _iosAnimation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n opacity: 1,\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n },\r\n to: {\r\n opacity: 1,\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n }\r\n }\r\n },\r\n _androidAnimation: function() {\r\n return this.option(\"fullScreen\") ? {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: \"30%\",\r\n opacity: 0\r\n },\r\n to: {\r\n top: 0,\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: 0,\r\n opacity: 1\r\n },\r\n to: {\r\n top: \"30%\",\r\n opacity: 0\r\n }\r\n }\r\n } : {\r\n show: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._updateResizeCallbackSkipCondition();\r\n this.$element().addClass(POPUP_CLASS);\r\n this.$wrapper().addClass(POPUP_WRAPPER_CLASS);\r\n this._$popupContent = this._$content.wrapInner($(\"
\").addClass(POPUP_CONTENT_CLASS)).children().eq(0)\r\n },\r\n _render: function() {\r\n var isFullscreen = this.option(\"fullScreen\");\r\n this._toggleFullScreenClass(isFullscreen);\r\n this.callBase()\r\n },\r\n _toggleFullScreenClass: function(value) {\r\n this.$overlayContent().toggleClass(POPUP_FULL_SCREEN_CLASS, value).toggleClass(POPUP_NORMAL_CLASS, !value)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n title: new EmptyTemplate,\r\n bottom: new EmptyTemplate\r\n })\r\n },\r\n _getActionsList: function() {\r\n return this.callBase().concat([\"onResizeStart\", \"onResize\", \"onResizeEnd\"])\r\n },\r\n _contentResizeHandler: function(entry) {\r\n if (!this._shouldSkipContentResize(entry)) {\r\n this._renderGeometry({\r\n shouldOnlyReposition: true\r\n })\r\n }\r\n },\r\n _doesShowAnimationChangeDimensions: function() {\r\n var animation = this.option(\"animation\");\r\n return [\"to\", \"from\"].some(prop => {\r\n var _animation$show;\r\n var config = null === animation || void 0 === animation ? void 0 : null === (_animation$show = animation.show) || void 0 === _animation$show ? void 0 : _animation$show[prop];\r\n return isObject(config) && (\"width\" in config || \"height\" in config)\r\n })\r\n },\r\n _updateResizeCallbackSkipCondition() {\r\n var doesShowAnimationChangeDimensions = this._doesShowAnimationChangeDimensions();\r\n this._shouldSkipContentResize = entry => doesShowAnimationChangeDimensions && this._showAnimationProcessing || this._areContentDimensionsRendered(entry)\r\n },\r\n _observeContentResize: function(shouldObserve) {\r\n if (!this.option(\"useResizeObserver\")) {\r\n return\r\n }\r\n var contentElement = this._$content.get(0);\r\n if (shouldObserve) {\r\n resizeObserverSingleton.observe(contentElement, entry => {\r\n this._contentResizeHandler(entry)\r\n })\r\n } else {\r\n resizeObserverSingleton.unobserve(contentElement)\r\n }\r\n },\r\n _renderContentImpl: function() {\r\n this._renderTitle();\r\n this.callBase();\r\n this._renderResize();\r\n this._renderBottom()\r\n },\r\n _renderTitle: function() {\r\n var items = this._getToolbarItems(\"top\");\r\n var titleText = this.option(\"title\");\r\n var showTitle = this.option(\"showTitle\");\r\n if (showTitle && !!titleText) {\r\n items.unshift({\r\n location: devices.current().ios ? \"center\" : \"before\",\r\n text: titleText\r\n })\r\n }\r\n if (showTitle || items.length > 0) {\r\n this._$title && this._$title.remove();\r\n var $title = $(\"
\").addClass(POPUP_TITLE_CLASS).insertBefore(this.$content());\r\n this._$title = this._renderTemplateByType(\"titleTemplate\", items, $title).addClass(POPUP_TITLE_CLASS);\r\n this._renderDrag();\r\n this._executeTitleRenderAction(this._$title);\r\n this._$title.toggleClass(POPUP_HAS_CLOSE_BUTTON_CLASS, this._hasCloseButton())\r\n } else if (this._$title) {\r\n this._$title.detach()\r\n }\r\n },\r\n _renderTemplateByType: function(optionName, data, $container, additionalToolbarOptions) {\r\n var {\r\n rtlEnabled: rtlEnabled,\r\n useDefaultToolbarButtons: useDefaultToolbarButtons,\r\n useFlatToolbarButtons: useFlatToolbarButtons,\r\n disabled: disabled\r\n } = this.option();\r\n var template = this._getTemplateByOption(optionName);\r\n var toolbarTemplate = template instanceof EmptyTemplate;\r\n if (toolbarTemplate) {\r\n var integrationOptions = extend({}, this.option(\"integrationOptions\"), {\r\n skipTemplates: [\"content\", \"title\"]\r\n });\r\n var toolbarOptions = extend(additionalToolbarOptions, {\r\n items: data,\r\n rtlEnabled: rtlEnabled,\r\n useDefaultButtons: useDefaultToolbarButtons,\r\n useFlatButtons: useFlatToolbarButtons,\r\n disabled: disabled,\r\n integrationOptions: integrationOptions\r\n });\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: {\r\n widget: \"dxToolbarBase\",\r\n options: toolbarOptions\r\n }\r\n });\r\n var $toolbar = $container.children(\"div\");\r\n $container.replaceWith($toolbar);\r\n return $toolbar\r\n } else {\r\n var $result = $(template.render({\r\n container: getPublicElement($container)\r\n }));\r\n if ($result.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n $container.replaceWith($result);\r\n $container = $result\r\n }\r\n return $container\r\n }\r\n },\r\n _renderVisibilityAnimate: function(visible) {\r\n this._observeContentResize(visible);\r\n return this.callBase(visible)\r\n },\r\n _executeTitleRenderAction: function($titleElement) {\r\n this._getTitleRenderAction()({\r\n titleElement: getPublicElement($titleElement)\r\n })\r\n },\r\n _getTitleRenderAction: function() {\r\n return this._titleRenderAction || this._createTitleRenderAction()\r\n },\r\n _createTitleRenderAction: function() {\r\n return this._titleRenderAction = this._createActionByOption(\"onTitleRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _getCloseButton: function() {\r\n return {\r\n toolbar: \"top\",\r\n location: \"after\",\r\n template: this._getCloseButtonRenderer()\r\n }\r\n },\r\n _getCloseButtonRenderer: function() {\r\n return (_, __, container) => {\r\n var $button = $(\"
\").addClass(POPUP_TITLE_CLOSEBUTTON_CLASS);\r\n this._createComponent($button, Button, {\r\n icon: \"close\",\r\n onClick: this._createToolbarItemAction(void 0),\r\n stylingMode: \"text\",\r\n integrationOptions: {}\r\n });\r\n $(container).append($button)\r\n }\r\n },\r\n _getToolbarItems: function(toolbar) {\r\n var toolbarItems = this.option(\"toolbarItems\");\r\n var toolbarsItems = [];\r\n this._toolbarItemClasses = [];\r\n var currentPlatform = devices.current().platform;\r\n var index = 0;\r\n each(toolbarItems, (_, data) => {\r\n var isShortcut = isDefined(data.shortcut);\r\n var item = isShortcut ? getButtonPlace(data.shortcut) : data;\r\n if (isShortcut && \"ios\" === currentPlatform && index < 2) {\r\n item.toolbar = \"top\";\r\n index++\r\n }\r\n item.toolbar = data.toolbar || item.toolbar || \"top\";\r\n if (item && item.toolbar === toolbar) {\r\n if (isShortcut) {\r\n extend(item, {\r\n location: data.location\r\n }, this._getToolbarItemByAlias(data))\r\n }\r\n var isLTROrder = \"generic\" === currentPlatform;\r\n if (\"done\" === data.shortcut && isLTROrder || \"cancel\" === data.shortcut && !isLTROrder) {\r\n toolbarsItems.unshift(item)\r\n } else {\r\n toolbarsItems.push(item)\r\n }\r\n }\r\n });\r\n if (\"top\" === toolbar && this._hasCloseButton()) {\r\n toolbarsItems.push(this._getCloseButton())\r\n }\r\n return toolbarsItems\r\n },\r\n _hasCloseButton() {\r\n return this.option(\"showCloseButton\") && this.option(\"showTitle\")\r\n },\r\n _getLocalizationKey: itemType => \"done\" === itemType.toLowerCase() ? \"OK\" : camelize(itemType, true),\r\n _getToolbarItemByAlias: function(data) {\r\n var that = this;\r\n var itemType = data.shortcut;\r\n if (!ALLOWED_TOOLBAR_ITEM_ALIASES.includes(itemType)) {\r\n return false\r\n }\r\n var itemConfig = extend({\r\n text: messageLocalization.format(this._getLocalizationKey(itemType)),\r\n onClick: this._createToolbarItemAction(data.onClick),\r\n integrationOptions: {},\r\n type: that.option(\"useDefaultToolbarButtons\") ? BUTTON_DEFAULT_TYPE : BUTTON_NORMAL_TYPE,\r\n stylingMode: that.option(\"useFlatToolbarButtons\") ? BUTTON_TEXT_MODE : BUTTON_CONTAINED_MODE\r\n }, data.options || {});\r\n var itemClass = POPUP_CLASS + \"-\" + itemType;\r\n this._toolbarItemClasses.push(itemClass);\r\n return {\r\n template: function(_, __, container) {\r\n var $toolbarItem = $(\"
\").addClass(itemClass).appendTo(container);\r\n that._createComponent($toolbarItem, Button, itemConfig)\r\n }\r\n }\r\n },\r\n _createToolbarItemAction: function(clickAction) {\r\n return this._createAction(clickAction, {\r\n afterExecute: function(e) {\r\n e.component.hide()\r\n }\r\n })\r\n },\r\n _renderBottom: function() {\r\n var items = this._getToolbarItems(\"bottom\");\r\n if (items.length) {\r\n this._$bottom && this._$bottom.remove();\r\n var $bottom = $(\"
\").addClass(POPUP_BOTTOM_CLASS).insertAfter(this.$content());\r\n this._$bottom = this._renderTemplateByType(\"bottomTemplate\", items, $bottom, {\r\n compactMode: true\r\n }).addClass(POPUP_BOTTOM_CLASS);\r\n this._toggleClasses()\r\n } else {\r\n this._$bottom && this._$bottom.detach()\r\n }\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(...arguments);\r\n this.$content().toggleClass(DISABLED_STATE_CLASS, Boolean(value))\r\n },\r\n _toggleClasses: function() {\r\n var aliases = ALLOWED_TOOLBAR_ITEM_ALIASES;\r\n each(aliases, (_, alias) => {\r\n var className = POPUP_CLASS + \"-\" + alias;\r\n if (this._toolbarItemClasses.includes(className)) {\r\n this.$wrapper().addClass(className + \"-visible\");\r\n this._$bottom.addClass(className)\r\n } else {\r\n this.$wrapper().removeClass(className + \"-visible\");\r\n this._$bottom.removeClass(className)\r\n }\r\n })\r\n },\r\n _toggleFocusClass(isFocused, $element) {\r\n this.callBase(isFocused, $element);\r\n if (isFocused && !zIndexPool.isLastZIndexInStack(this._zIndex)) {\r\n var zIndex = zIndexPool.create(this._zIndexInitValue());\r\n zIndexPool.remove(this._zIndex);\r\n this._zIndex = zIndex;\r\n this._$wrapper.css(\"zIndex\", zIndex);\r\n this._$content.css(\"zIndex\", zIndex)\r\n }\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n } = this.option();\r\n return extend({}, this.callBase(), {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n })\r\n },\r\n _initPositionController() {\r\n this._positionController = new PopupPositionController(this._getPositionControllerConfig())\r\n },\r\n _getDragTarget: function() {\r\n return this.topToolbar()\r\n },\r\n _renderGeometry: function(options) {\r\n var {\r\n visible: visible,\r\n useResizeObserver: useResizeObserver\r\n } = this.option();\r\n if (visible && hasWindow()) {\r\n var isAnimated = this._showAnimationProcessing;\r\n var shouldRepeatAnimation = isAnimated && !(null !== options && void 0 !== options && options.forceStopAnimation) && useResizeObserver;\r\n this._isAnimationPaused = shouldRepeatAnimation || void 0;\r\n this._stopAnimation();\r\n if (null !== options && void 0 !== options && options.shouldOnlyReposition) {\r\n this._positionController.positionContent()\r\n } else {\r\n this._renderGeometryImpl(null === options || void 0 === options ? void 0 : options.isDimensionChange)\r\n }\r\n if (shouldRepeatAnimation) {\r\n this._animateShowing();\r\n this._isAnimationPaused = void 0\r\n }\r\n }\r\n },\r\n _cacheDimensions: function() {\r\n if (!this.option(\"useResizeObserver\")) {\r\n return\r\n }\r\n this._renderedDimensions = {\r\n width: parseInt(getWidth(this._$content), 10),\r\n height: parseInt(getHeight(this._$content), 10)\r\n }\r\n },\r\n _renderGeometryImpl: function() {\r\n var isDimensionChange = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n if (!isDimensionChange) {\r\n this._resetContentHeight()\r\n }\r\n this.callBase();\r\n this._cacheDimensions();\r\n this._setContentHeight()\r\n },\r\n _resetContentHeight: function() {\r\n var height = this._getOptionValue(\"height\");\r\n if (\"auto\" === height) {\r\n this.$content().css({\r\n height: \"auto\",\r\n maxHeight: \"none\"\r\n })\r\n }\r\n },\r\n _renderDrag: function() {\r\n var $dragTarget = this._getDragTarget();\r\n var dragEnabled = this.option(\"dragEnabled\");\r\n if (!$dragTarget) {\r\n return\r\n }\r\n var config = {\r\n dragEnabled: dragEnabled,\r\n handle: $dragTarget.get(0),\r\n draggableElement: this._$content.get(0),\r\n positionController: this._positionController\r\n };\r\n if (this._drag) {\r\n this._drag.init(config)\r\n } else {\r\n this._drag = new PopupDrag(config)\r\n }\r\n this.$overlayContent().toggleClass(POPUP_DRAGGABLE_CLASS, dragEnabled)\r\n },\r\n _renderResize: function() {\r\n this._resizable = this._createComponent(this._$content, Resizable, {\r\n handles: this.option(\"resizeEnabled\") ? \"all\" : \"none\",\r\n onResizeEnd: e => {\r\n this._resizeEndHandler(e);\r\n this._observeContentResize(true)\r\n },\r\n onResize: e => {\r\n this._setContentHeight();\r\n this._actions.onResize(e)\r\n },\r\n onResizeStart: e => {\r\n this._observeContentResize(false);\r\n this._actions.onResizeStart(e)\r\n },\r\n minHeight: 100,\r\n minWidth: 100,\r\n area: this._positionController.$dragResizeContainer,\r\n keepAspectRatio: false\r\n })\r\n },\r\n _resizeEndHandler: function(e) {\r\n var width = this._resizable.option(\"width\");\r\n var height = this._resizable.option(\"height\");\r\n width && this._setOptionWithoutOptionChange(\"width\", width);\r\n height && this._setOptionWithoutOptionChange(\"height\", height);\r\n this._cacheDimensions();\r\n this._positionController.resizeHandled();\r\n this._positionController.detectVisualPositionChange(e.event);\r\n this._actions.onResizeEnd(e)\r\n },\r\n _setContentHeight: function() {\r\n (this.option(\"forceApplyBindings\") || noop)();\r\n var overlayContent = this.$overlayContent().get(0);\r\n var currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent);\r\n this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent));\r\n this._setHeightClasses(this.$overlayContent(), currentHeightStrategyClass)\r\n },\r\n _heightStrategyChangeOffset: function(currentHeightStrategyClass, popupVerticalPaddings) {\r\n return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0\r\n },\r\n _chooseHeightStrategy: function(overlayContent) {\r\n var isAutoWidth = \"auto\" === overlayContent.style.width || \"\" === overlayContent.style.width;\r\n var currentHeightStrategyClass = HEIGHT_STRATEGIES.static;\r\n if (this._isAutoHeight() && this.option(\"autoResizeEnabled\")) {\r\n if (isAutoWidth || IS_OLD_SAFARI) {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit\r\n } else {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.flex\r\n }\r\n }\r\n return currentHeightStrategyClass\r\n },\r\n _getHeightCssStyles: function(currentHeightStrategyClass, overlayContent) {\r\n var cssStyles = {};\r\n var contentMaxHeight = this._getOptionValue(\"maxHeight\", overlayContent);\r\n var contentMinHeight = this._getOptionValue(\"minHeight\", overlayContent);\r\n var popupHeightParts = this._splitPopupHeight();\r\n var toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings);\r\n if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) {\r\n if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) {\r\n var overlayHeight = this.option(\"fullScreen\") ? Math.min(getBoundingRect(overlayContent).height, getWindow().innerHeight) : getBoundingRect(overlayContent).height;\r\n var contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight;\r\n cssStyles = {\r\n height: Math.max(0, contentHeight),\r\n minHeight: \"auto\",\r\n maxHeight: \"auto\"\r\n }\r\n }\r\n } else {\r\n var container = $(this._positionController.$visualContainer).get(0);\r\n var maxHeightValue = addOffsetToMaxHeight(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n var minHeightValue = addOffsetToMinHeight(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n cssStyles = {\r\n height: \"auto\",\r\n minHeight: minHeightValue,\r\n maxHeight: maxHeightValue\r\n }\r\n }\r\n return cssStyles\r\n },\r\n _setHeightClasses: function($container, currentClass) {\r\n var excessClasses = \"\";\r\n for (var name in HEIGHT_STRATEGIES) {\r\n if (HEIGHT_STRATEGIES[name] !== currentClass) {\r\n excessClasses += \" \" + HEIGHT_STRATEGIES[name]\r\n }\r\n }\r\n $container.removeClass(excessClasses).addClass(currentClass)\r\n },\r\n _isAutoHeight: function() {\r\n return \"auto\" === this.$overlayContent().get(0).style.height\r\n },\r\n _splitPopupHeight: function() {\r\n var topToolbar = this.topToolbar();\r\n var bottomToolbar = this.bottomToolbar();\r\n return {\r\n header: getVisibleHeight(topToolbar && topToolbar.get(0)),\r\n footer: getVisibleHeight(bottomToolbar && bottomToolbar.get(0)),\r\n contentVerticalOffsets: getVerticalOffsets(this.$overlayContent().get(0), true),\r\n popupVerticalOffsets: getVerticalOffsets(this.$content().get(0), true),\r\n popupVerticalPaddings: getVerticalOffsets(this.$content().get(0), false)\r\n }\r\n },\r\n _isAllWindowCovered: function() {\r\n return this.callBase() || this.option(\"fullScreen\")\r\n },\r\n _renderDimensions: function() {\r\n if (this.option(\"fullScreen\")) {\r\n this.$overlayContent().css({\r\n width: \"100%\",\r\n height: \"100%\",\r\n minWidth: \"\",\r\n maxWidth: \"\",\r\n minHeight: \"\",\r\n maxHeight: \"\"\r\n })\r\n } else {\r\n this.callBase()\r\n }\r\n if (hasWindow()) {\r\n this._renderFullscreenWidthClass()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderGeometry({\r\n isDimensionChange: true\r\n })\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._observeContentResize(false)\r\n },\r\n _renderFullscreenWidthClass: function() {\r\n this.$overlayContent().toggleClass(POPUP_FULL_SCREEN_WIDTH_CLASS, getOuterWidth(this.$overlayContent()) === getWidth(window))\r\n },\r\n refreshPosition: function() {\r\n this._renderPosition()\r\n },\r\n _optionChanged: function(args) {\r\n var _this$_resizable2;\r\n var value = args.value;\r\n switch (args.name) {\r\n case \"disabled\":\r\n this.callBase(args);\r\n this._renderTitle();\r\n this._renderBottom();\r\n break;\r\n case \"animation\":\r\n this._updateResizeCallbackSkipCondition();\r\n break;\r\n case \"showTitle\":\r\n case \"title\":\r\n case \"titleTemplate\":\r\n this._renderTitle();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"bottomTemplate\":\r\n this._renderBottom();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"container\":\r\n this.callBase(args);\r\n if (this.option(\"resizeEnabled\")) {\r\n var _this$_resizable;\r\n null === (_this$_resizable = this._resizable) || void 0 === _this$_resizable ? void 0 : _this$_resizable.option(\"area\", this._positionController.$dragResizeContainer)\r\n }\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n null === (_this$_resizable2 = this._resizable) || void 0 === _this$_resizable2 ? void 0 : _this$_resizable2.option(args.name, args.value);\r\n break;\r\n case \"onTitleRendered\":\r\n this._createTitleRenderAction(args.value);\r\n break;\r\n case \"toolbarItems\":\r\n case \"useDefaultToolbarButtons\":\r\n case \"useFlatToolbarButtons\":\r\n var shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\\[\\d+\\])(\\.(options|visible).*)?)?$/);\r\n this._renderTitle();\r\n this._renderBottom();\r\n if (shouldRenderGeometry) {\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent())\r\n }\r\n break;\r\n case \"dragEnabled\":\r\n this._renderDrag();\r\n break;\r\n case \"dragAndResizeArea\":\r\n this._positionController.dragAndResizeArea = value;\r\n if (this.option(\"resizeEnabled\")) {\r\n this._resizable.option(\"area\", this._positionController.$dragResizeContainer)\r\n }\r\n this._positionController.positionContent();\r\n break;\r\n case \"dragOutsideBoundary\":\r\n this._positionController.dragOutsideBoundary = value;\r\n if (this.option(\"resizeEnabled\")) {\r\n this._resizable.option(\"area\", this._positionController.$dragResizeContainer)\r\n }\r\n break;\r\n case \"outsideDragFactor\":\r\n this._positionController.outsideDragFactor = value;\r\n break;\r\n case \"resizeEnabled\":\r\n this._renderResize();\r\n this._renderGeometry();\r\n break;\r\n case \"autoResizeEnabled\":\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"fullScreen\":\r\n this._positionController.fullScreen = args.value;\r\n this._toggleFullScreenClass(args.value);\r\n this._toggleSafariScrolling();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"showCloseButton\":\r\n this._renderTitle();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n bottomToolbar: function() {\r\n return this._$bottom\r\n },\r\n topToolbar: function() {\r\n return this._$title\r\n },\r\n $content: function() {\r\n return this._$popupContent\r\n },\r\n content: function() {\r\n return getPublicElement(this.$content())\r\n },\r\n $overlayContent: function() {\r\n return this._$content\r\n }\r\n});\r\nregisterComponent(\"dxPopup\", Popup);\r\nexport default Popup;\r\n","/**\r\n * DevExtreme (esm/ui/popup.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 Popup from \"./popup/ui.popup\";\r\nexport default Popup;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.strategy.grouped.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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/collection/ui.collection_widget.async.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 CollectionWidgetEdit from \"./ui.collection_widget.edit\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar AsyncCollectionWidget = CollectionWidgetEdit.inherit({\r\n _initMarkup() {\r\n this._deferredItems = [];\r\n this.callBase()\r\n },\r\n _renderItemContent(args) {\r\n var renderContentDeferred = new Deferred;\r\n var itemDeferred = new Deferred;\r\n this._deferredItems[args.index] = itemDeferred;\r\n var $itemContent = this.callBase.call(this, args);\r\n itemDeferred.done(() => {\r\n renderContentDeferred.resolve($itemContent)\r\n });\r\n return renderContentDeferred.promise()\r\n },\r\n _createItemByTemplate(itemTemplate, renderArgs) {\r\n return itemTemplate.render({\r\n model: renderArgs.itemData,\r\n container: renderArgs.container,\r\n index: renderArgs.index,\r\n onRendered: () => {\r\n this._deferredItems[renderArgs.index].resolve()\r\n }\r\n })\r\n },\r\n _postProcessRenderItems: noop,\r\n _renderItemsAsync() {\r\n var d = new Deferred;\r\n when.apply(this, this._deferredItems).done(() => {\r\n this._postProcessRenderItems();\r\n d.resolve()\r\n });\r\n return d.promise()\r\n },\r\n _clean() {\r\n this.callBase();\r\n this._deferredItems = []\r\n }\r\n});\r\nexport default AsyncCollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/ui.toolbar.base.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 getOuterWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isMaterial,\r\n waitWebFont\r\n} from \"../themes\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport AsyncCollectionWidget from \"../collection/ui.collection_widget.async\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport errors from \"../../core/errors\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n TOOLBAR_CLASS\r\n} from \"./constants\";\r\nvar TOOLBAR_BEFORE_CLASS = \"dx-toolbar-before\";\r\nvar TOOLBAR_CENTER_CLASS = \"dx-toolbar-center\";\r\nvar TOOLBAR_AFTER_CLASS = \"dx-toolbar-after\";\r\nvar TOOLBAR_MINI_CLASS = \"dx-toolbar-mini\";\r\nvar TOOLBAR_ITEM_CLASS = \"dx-toolbar-item\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar TOOLBAR_BUTTON_CLASS = \"dx-toolbar-button\";\r\nvar TOOLBAR_ITEMS_CONTAINER_CLASS = \"dx-toolbar-items-container\";\r\nvar TOOLBAR_GROUP_CLASS = \"dx-toolbar-group\";\r\nvar TOOLBAR_COMPACT_CLASS = \"dx-toolbar-compact\";\r\nvar TOOLBAR_LABEL_SELECTOR = \".\" + TOOLBAR_LABEL_CLASS;\r\nvar TOOLBAR_MULTILINE_CLASS = \"dx-toolbar-multiline\";\r\nvar TEXT_BUTTON_MODE = \"text\";\r\nvar DEFAULT_BUTTON_TYPE = \"default\";\r\nvar DEFAULT_DROPDOWNBUTTON_STYLING_MODE = \"contained\";\r\nvar TOOLBAR_ITEM_DATA_KEY = \"dxToolbarItemDataKey\";\r\nvar ToolbarBase = AsyncCollectionWidget.inherit({\r\n compactMode: false,\r\n ctor: function(element, options) {\r\n this._userOptions = options || {};\r\n this.callBase(element, options);\r\n if (\"height\" in this._userOptions) {\r\n errors.log(\"W0001\", this.NAME, \"height\", \"20.1\", \"Functionality associated with this option is not intended for the Toolbar widget.\")\r\n }\r\n },\r\n _getSynchronizableOptionsForCreateComponent: function() {\r\n return this.callBase().filter(item => \"disabled\" !== item)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n var template = new BindableTemplate(function($container, data, rawModel) {\r\n if (isPlainObject(data)) {\r\n if (data.text) {\r\n $container.text(data.text).wrapInner(\"
\")\r\n }\r\n if (data.html) {\r\n $container.html(data.html)\r\n }\r\n if (\"dxDropDownButton\" === data.widget) {\r\n data.options = data.options || {};\r\n if (!isDefined(data.options.stylingMode)) {\r\n data.options.stylingMode = this.option(\"useFlatButtons\") ? TEXT_BUTTON_MODE : DEFAULT_DROPDOWNBUTTON_STYLING_MODE\r\n }\r\n }\r\n if (\"dxButton\" === data.widget) {\r\n if (this.option(\"useFlatButtons\")) {\r\n data.options = data.options || {};\r\n data.options.stylingMode = data.options.stylingMode || TEXT_BUTTON_MODE\r\n }\r\n if (this.option(\"useDefaultButtons\")) {\r\n data.options = data.options || {};\r\n data.options.type = data.options.type || DEFAULT_BUTTON_TYPE\r\n }\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: rawModel,\r\n parent: this\r\n })\r\n }.bind(this), [\"text\", \"html\", \"widget\", \"options\"], this.option(\"integrationOptions.watchMethod\"));\r\n this._templateManager.addDefaultTemplates({\r\n item: template,\r\n menuItem: template\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n renderAs: \"topToolbar\",\r\n grouped: false,\r\n useFlatButtons: false,\r\n useDefaultButtons: false,\r\n multiline: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n useFlatButtons: true\r\n }\r\n }])\r\n },\r\n _itemContainer: function() {\r\n return this._$toolbarItemsContainer.find([\".\" + TOOLBAR_BEFORE_CLASS, \".\" + TOOLBAR_CENTER_CLASS, \".\" + TOOLBAR_AFTER_CLASS].join(\",\"))\r\n },\r\n _itemClass: function() {\r\n return TOOLBAR_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return TOOLBAR_ITEM_DATA_KEY\r\n },\r\n _buttonClass: function() {\r\n return TOOLBAR_BUTTON_CLASS\r\n },\r\n _dimensionChanged: function() {\r\n this._arrangeItems();\r\n this._applyCompactMode()\r\n },\r\n _initMarkup: function() {\r\n this._renderToolbar();\r\n this._renderSections();\r\n this.callBase();\r\n this.setAria(\"role\", \"toolbar\")\r\n },\r\n _waitParentAnimationFinished: function() {\r\n var $element = this.$element();\r\n return new Promise(resolve => {\r\n var runCheck = () => {\r\n clearTimeout(this._waitParentAnimationTimeout);\r\n this._waitParentAnimationTimeout = setTimeout(() => (() => {\r\n var readyToResolve = true;\r\n $element.parents().each((_, parent) => {\r\n if (fx.isAnimating($(parent))) {\r\n readyToResolve = false;\r\n return false\r\n }\r\n });\r\n if (readyToResolve) {\r\n resolve()\r\n }\r\n return readyToResolve\r\n })() || runCheck(), 15)\r\n };\r\n runCheck()\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderItemsAsync();\r\n if (isMaterial()) {\r\n Promise.all([this._waitParentAnimationFinished(), this._checkWebFontForLabelsLoaded()]).then(this._dimensionChanged.bind(this))\r\n }\r\n },\r\n _postProcessRenderItems: function() {\r\n this._arrangeItems()\r\n },\r\n _renderToolbar: function() {\r\n this.$element().addClass(TOOLBAR_CLASS).toggleClass(TOOLBAR_MULTILINE_CLASS, this.option(\"multiline\"));\r\n this._$toolbarItemsContainer = $(\"
\").addClass(TOOLBAR_ITEMS_CONTAINER_CLASS).appendTo(this.$element())\r\n },\r\n _renderSections: function() {\r\n var $container = this._$toolbarItemsContainer;\r\n var that = this;\r\n each([\"before\", \"center\", \"after\"], (function() {\r\n var sectionClass = \"dx-toolbar-\" + this;\r\n var $section = $container.find(\".\" + sectionClass);\r\n if (!$section.length) {\r\n that[\"_$\" + this + \"Section\"] = $section = $(\"
\").addClass(sectionClass).appendTo($container)\r\n }\r\n }))\r\n },\r\n _checkWebFontForLabelsLoaded: function() {\r\n var $labels = this.$element().find(TOOLBAR_LABEL_SELECTOR);\r\n var promises = [];\r\n $labels.each((_, label) => {\r\n var text = $(label).text();\r\n var fontWeight = $(label).css(\"fontWeight\");\r\n promises.push(waitWebFont(text, fontWeight))\r\n });\r\n return Promise.all(promises)\r\n },\r\n _arrangeItems: function(elementWidth) {\r\n elementWidth = elementWidth || getWidth(this.$element());\r\n this._$centerSection.css({\r\n margin: \"0 auto\",\r\n float: \"none\"\r\n });\r\n var beforeRect = getBoundingRect(this._$beforeSection.get(0));\r\n var afterRect = getBoundingRect(this._$afterSection.get(0));\r\n this._alignCenterSection(beforeRect, afterRect, elementWidth);\r\n var $label = this._$toolbarItemsContainer.find(TOOLBAR_LABEL_SELECTOR).eq(0);\r\n var $section = $label.parent();\r\n if (!$label.length) {\r\n return\r\n }\r\n var labelOffset = beforeRect.width ? beforeRect.width : $label.position().left;\r\n var widthBeforeSection = $section.hasClass(TOOLBAR_BEFORE_CLASS) ? 0 : labelOffset;\r\n var widthAfterSection = $section.hasClass(TOOLBAR_AFTER_CLASS) ? 0 : afterRect.width;\r\n var elemsAtSectionWidth = 0;\r\n $section.children().not(TOOLBAR_LABEL_SELECTOR).each((function() {\r\n elemsAtSectionWidth += getOuterWidth(this)\r\n }));\r\n var freeSpace = elementWidth - elemsAtSectionWidth;\r\n var sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0);\r\n if ($section.hasClass(TOOLBAR_BEFORE_CLASS)) {\r\n this._alignSection(this._$beforeSection, sectionMaxWidth)\r\n } else {\r\n var labelPaddings = getOuterWidth($label) - getWidth($label);\r\n $label.css(\"maxWidth\", sectionMaxWidth - labelPaddings)\r\n }\r\n },\r\n _alignCenterSection: function(beforeRect, afterRect, elementWidth) {\r\n this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width);\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var leftRect = isRTL ? afterRect : beforeRect;\r\n var rightRect = isRTL ? beforeRect : afterRect;\r\n var centerRect = getBoundingRect(this._$centerSection.get(0));\r\n if (leftRect.right > centerRect.left || centerRect.right > rightRect.left) {\r\n this._$centerSection.css({\r\n marginLeft: leftRect.width,\r\n marginRight: rightRect.width,\r\n float: leftRect.width > rightRect.width ? \"none\" : \"right\"\r\n })\r\n }\r\n },\r\n _alignSection: function($section, maxWidth) {\r\n var $labels = $section.find(TOOLBAR_LABEL_SELECTOR);\r\n var labels = $labels.toArray();\r\n maxWidth -= this._getCurrentLabelsPaddings(labels);\r\n var currentWidth = this._getCurrentLabelsWidth(labels);\r\n var difference = Math.abs(currentWidth - maxWidth);\r\n if (maxWidth < currentWidth) {\r\n labels = labels.reverse();\r\n this._alignSectionLabels(labels, difference, false)\r\n } else {\r\n this._alignSectionLabels(labels, difference, true)\r\n }\r\n },\r\n _alignSectionLabels: function(labels, difference, expanding) {\r\n var getRealLabelWidth = function(label) {\r\n return getBoundingRect(label).width\r\n };\r\n for (var i = 0; i < labels.length; i++) {\r\n var $label = $(labels[i]);\r\n var currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i]));\r\n var labelMaxWidth = void 0;\r\n if (expanding) {\r\n $label.css(\"maxWidth\", \"inherit\")\r\n }\r\n var possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth);\r\n if (possibleLabelWidth < difference) {\r\n labelMaxWidth = expanding ? possibleLabelWidth : 0;\r\n difference -= possibleLabelWidth\r\n } else {\r\n labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference;\r\n $label.css(\"maxWidth\", labelMaxWidth);\r\n break\r\n }\r\n $label.css(\"maxWidth\", labelMaxWidth)\r\n }\r\n },\r\n _applyCompactMode: function() {\r\n var $element = this.$element();\r\n $element.removeClass(TOOLBAR_COMPACT_CLASS);\r\n if (this.option(\"compactMode\") && this._getSummaryItemsWidth(this.itemElements(), true) > getWidth($element)) {\r\n $element.addClass(TOOLBAR_COMPACT_CLASS)\r\n }\r\n },\r\n _getCurrentLabelsWidth: function(labels) {\r\n var width = 0;\r\n labels.forEach((function(label, index) {\r\n width += getOuterWidth(label)\r\n }));\r\n return width\r\n },\r\n _getCurrentLabelsPaddings: function(labels) {\r\n var padding = 0;\r\n labels.forEach((function(label, index) {\r\n padding += getOuterWidth(label) - getWidth(label)\r\n }));\r\n return padding\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var location = item.location || \"center\";\r\n var container = itemContainer || this[\"_$\" + location + \"Section\"];\r\n var itemHasText = !!(item.text || item.html);\r\n var itemElement = this.callBase(index, item, container, $after);\r\n itemElement.toggleClass(this._buttonClass(), !itemHasText).toggleClass(TOOLBAR_LABEL_CLASS, itemHasText).addClass(item.cssClass);\r\n return itemElement\r\n },\r\n _renderGroupedItems: function() {\r\n var that = this;\r\n each(this.option(\"items\"), (function(groupIndex, group) {\r\n var groupItems = group.items;\r\n var $container = $(\"
\").addClass(TOOLBAR_GROUP_CLASS);\r\n var location = group.location || \"center\";\r\n if (!groupItems || !groupItems.length) {\r\n return\r\n }\r\n each(groupItems, (function(itemIndex, item) {\r\n that._renderItem(itemIndex, item, $container, null)\r\n }));\r\n that._$toolbarItemsContainer.find(\".dx-toolbar-\" + location).append($container)\r\n }))\r\n },\r\n _renderItems: function(items) {\r\n var grouped = this.option(\"grouped\") && items.length && items[0].items;\r\n grouped ? this._renderGroupedItems() : this.callBase(items)\r\n },\r\n _getToolbarItems: function() {\r\n return this.option(\"items\") || []\r\n },\r\n _renderContentImpl: function() {\r\n var items = this._getToolbarItems();\r\n this.$element().toggleClass(TOOLBAR_MINI_CLASS, 0 === items.length);\r\n if (this._renderedItemsCount) {\r\n this._renderItems(items.slice(this._renderedItemsCount))\r\n } else {\r\n this._renderItems(items)\r\n }\r\n this._applyCompactMode()\r\n },\r\n _renderEmptyMessage: noop,\r\n _clean: function() {\r\n this._$toolbarItemsContainer.children().empty();\r\n this.$element().empty()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._arrangeItems()\r\n }\r\n },\r\n _isVisible: function() {\r\n return getWidth(this.$element()) > 0 && getHeight(this.$element()) > 0\r\n },\r\n _getIndexByItem: function(item) {\r\n return this._getToolbarItems().indexOf(item)\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n this.callBase.apply(this, [item, property, value]);\r\n this._arrangeItems()\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"width\":\r\n this.callBase.apply(this, arguments);\r\n this._dimensionChanged();\r\n break;\r\n case \"multiline\":\r\n this.$element().toggleClass(TOOLBAR_MULTILINE_CLASS, args.value);\r\n break;\r\n case \"renderAs\":\r\n case \"useFlatButtons\":\r\n case \"useDefaultButtons\":\r\n this._invalidate();\r\n break;\r\n case \"compactMode\":\r\n this._applyCompactMode();\r\n break;\r\n case \"grouped\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._waitParentAnimationTimeout)\r\n }\r\n});\r\nregisterComponent(\"dxToolbarBase\", ToolbarBase);\r\nexport default ToolbarBase;\r\n","/**\r\n * DevExtreme (esm/ui/list/modules/search.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 searchBoxMixin from \"../../widget/ui.search_box_mixin\";\r\nimport TextBox from \"../../text_box\";\r\nsearchBoxMixin.setEditorClass(TextBox);\r\n","/**\r\n * DevExtreme (esm/ui/radio_group/radio_button.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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: 22.1.6\r\n * Build date: Tue Oct 18 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 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 this._list._createActionByOption(\"onSelectAllValueChanged\")({\r\n value: isSelectedAll\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/renovation/utils/type_conversion.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 toNumber(attribute) {\r\n return attribute ? Number(attribute.replace(\"px\", \"\")) : 0\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/draggable.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 getWidth,\r\n getHeight,\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n quadToObject\r\n} from \"../core/utils/string\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport Animator from \"./scroll_view/animator\";\r\nimport {\r\n dasherize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n addNamespace,\r\n needSkipEvent\r\n} from \"../events/utils/index\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd,\r\n enter as dragEventEnter,\r\n leave as dragEventLeave\r\n} from \"../events/drag\";\r\nimport positionUtils from \"../animation/position\";\r\nimport {\r\n isFunction,\r\n isObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../core/utils/common\";\r\nimport {\r\n value as viewPort\r\n} from \"../core/utils/view_port\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../core/templates/empty_template\";\r\nimport {\r\n when,\r\n fromPromise,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar window = getWindow();\r\nvar DRAGGABLE = \"dxDraggable\";\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventStart, DRAGGABLE);\r\nvar DRAG_EVENT_NAME = addNamespace(dragEventMove, DRAGGABLE);\r\nvar DRAGEND_EVENT_NAME = addNamespace(dragEventEnd, DRAGGABLE);\r\nvar DRAG_ENTER_EVENT_NAME = addNamespace(dragEventEnter, DRAGGABLE);\r\nvar DRAGEND_LEAVE_EVENT_NAME = addNamespace(dragEventLeave, DRAGGABLE);\r\nvar POINTERDOWN_EVENT_NAME = addNamespace(pointerEvents.down, DRAGGABLE);\r\nvar CLONE_CLASS = \"clone\";\r\nvar targetDraggable;\r\nvar sourceDraggable;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar getMousePosition = event => ({\r\n x: event.pageX - $(window).scrollLeft(),\r\n y: event.pageY - $(window).scrollTop()\r\n});\r\nvar GESTURE_COVER_CLASS = \"dx-gesture-cover\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nclass ScrollHelper {\r\n constructor(orientation, component) {\r\n this._preventScroll = true;\r\n this._component = component;\r\n if (\"vertical\" === orientation) {\r\n this._scrollValue = \"scrollTop\";\r\n this._overFlowAttr = \"overflowY\";\r\n this._sizeAttr = \"height\";\r\n this._scrollSizeProp = \"scrollHeight\";\r\n this._clientSizeProp = \"clientHeight\";\r\n this._limitProps = {\r\n start: \"top\",\r\n end: \"bottom\"\r\n }\r\n } else {\r\n this._scrollValue = \"scrollLeft\";\r\n this._overFlowAttr = \"overflowX\";\r\n this._sizeAttr = \"width\";\r\n this._scrollSizeProp = \"scrollWidth\";\r\n this._clientSizeProp = \"clientWidth\";\r\n this._limitProps = {\r\n start: \"left\",\r\n end: \"right\"\r\n }\r\n }\r\n }\r\n updateScrollable(elements, mousePosition) {\r\n var isScrollableFound = false;\r\n elements.some(element => {\r\n var $element = $(element);\r\n var isTargetOverOverlayWrapper = $element.hasClass(OVERLAY_WRAPPER_CLASS);\r\n var isTargetOverOverlayContent = $element.hasClass(OVERLAY_CONTENT_CLASS);\r\n if (isTargetOverOverlayWrapper || isTargetOverOverlayContent) {\r\n return true\r\n }\r\n isScrollableFound = this._trySetScrollable(element, mousePosition);\r\n return isScrollableFound\r\n });\r\n if (!isScrollableFound) {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0\r\n }\r\n }\r\n isScrolling() {\r\n return !!this._scrollSpeed\r\n }\r\n isScrollable($element) {\r\n return (\"auto\" === $element.css(this._overFlowAttr) || $element.hasClass(\"dx-scrollable-container\")) && $element.prop(this._scrollSizeProp) > Math.ceil(\"width\" === this._sizeAttr ? getWidth($element) : getHeight($element))\r\n }\r\n _trySetScrollable(element, mousePosition) {\r\n var $element = $(element);\r\n var distanceToBorders;\r\n var sensitivity = this._component.option(\"scrollSensitivity\");\r\n var isScrollable = this.isScrollable($element);\r\n if (isScrollable) {\r\n distanceToBorders = this._calculateDistanceToBorders($element, mousePosition);\r\n if (sensitivity > distanceToBorders[this._limitProps.start]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = -this._calculateScrollSpeed(distanceToBorders[this._limitProps.start]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else if (sensitivity > distanceToBorders[this._limitProps.end]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = this._calculateScrollSpeed(distanceToBorders[this._limitProps.end]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else {\r\n isScrollable = false;\r\n this._preventScroll = false\r\n }\r\n }\r\n return isScrollable\r\n }\r\n _calculateDistanceToBorders($area, mousePosition) {\r\n var area = $area.get(0);\r\n var areaBoundingRect;\r\n if (area) {\r\n areaBoundingRect = getBoundingRect(area);\r\n return {\r\n left: mousePosition.x - areaBoundingRect.left,\r\n top: mousePosition.y - areaBoundingRect.top,\r\n right: areaBoundingRect.right - mousePosition.x,\r\n bottom: areaBoundingRect.bottom - mousePosition.y\r\n }\r\n } else {\r\n return {}\r\n }\r\n }\r\n _calculateScrollSpeed(distance) {\r\n var component = this._component;\r\n var sensitivity = component.option(\"scrollSensitivity\");\r\n var maxSpeed = component.option(\"scrollSpeed\");\r\n return Math.ceil(Math.pow((sensitivity - distance) / sensitivity, 2) * maxSpeed)\r\n }\r\n scrollByStep() {\r\n if (this._$scrollableAtPointer && this._scrollSpeed) {\r\n if (this._$scrollableAtPointer.hasClass(\"dx-scrollable-container\")) {\r\n var $scrollable = this._$scrollableAtPointer.closest(\".dx-scrollable\");\r\n var scrollableInstance = $scrollable.data(\"dxScrollable\") || $scrollable.data(\"dxScrollView\");\r\n if (scrollableInstance) {\r\n var nextScrollPosition = scrollableInstance.scrollOffset()[this._limitProps.start] + this._scrollSpeed;\r\n scrollableInstance.scrollTo({\r\n [this._limitProps.start]: nextScrollPosition\r\n })\r\n }\r\n } else {\r\n var _nextScrollPosition = this._$scrollableAtPointer[this._scrollValue]() + this._scrollSpeed;\r\n this._$scrollableAtPointer[this._scrollValue](_nextScrollPosition)\r\n }\r\n var dragMoveArgs = this._component._dragMoveArgs;\r\n if (dragMoveArgs) {\r\n this._component._dragMoveHandler(dragMoveArgs)\r\n }\r\n }\r\n }\r\n reset() {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0;\r\n this._preventScroll = true\r\n }\r\n isOutsideScrollable($scrollable, event) {\r\n if (!$scrollable) {\r\n return false\r\n }\r\n var scrollableSize = getBoundingRect($scrollable.get(0));\r\n var start = scrollableSize[this._limitProps.start];\r\n var size = scrollableSize[this._sizeAttr];\r\n var mousePosition = getMousePosition(event);\r\n var location = \"width\" === this._sizeAttr ? mousePosition.x : mousePosition.y;\r\n return location < start || location > start + size\r\n }\r\n}\r\nvar ScrollAnimator = Animator.inherit({\r\n ctor: function(strategy) {\r\n this.callBase();\r\n this._strategy = strategy\r\n },\r\n _step: function() {\r\n var horizontalScrollHelper = this._strategy._horizontalScrollHelper;\r\n var verticalScrollHelper = this._strategy._verticalScrollHelper;\r\n horizontalScrollHelper && horizontalScrollHelper.scrollByStep();\r\n verticalScrollHelper && verticalScrollHelper.scrollByStep()\r\n }\r\n});\r\nvar Draggable = DOMComponent.inherit({\r\n reset: noop,\r\n dragMove: noop,\r\n dragEnter: noop,\r\n dragLeave: noop,\r\n dragEnd: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable._fireRemoveEvent(sourceEvent);\r\n return (new Deferred).resolve()\r\n },\r\n _fireRemoveEvent: noop,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n onDragStart: null,\r\n onDragMove: null,\r\n onDragEnd: null,\r\n onDragEnter: null,\r\n onDragLeave: null,\r\n onDrop: null,\r\n immediate: true,\r\n dragDirection: \"both\",\r\n boundary: void 0,\r\n boundOffset: 0,\r\n allowMoveByClick: false,\r\n itemData: null,\r\n container: void 0,\r\n dragTemplate: void 0,\r\n contentTemplate: \"content\",\r\n handle: \"\",\r\n filter: \"\",\r\n clone: false,\r\n autoScroll: true,\r\n scrollSpeed: 30,\r\n scrollSensitivity: 60,\r\n group: void 0,\r\n data: void 0\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase.apply(this, arguments);\r\n extend(this._optionsByReference, {\r\n component: true,\r\n group: true,\r\n itemData: true,\r\n data: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._attachEventHandlers();\r\n this._scrollAnimator = new ScrollAnimator(this);\r\n this._horizontalScrollHelper = new ScrollHelper(\"horizontal\", this);\r\n this._verticalScrollHelper = new ScrollHelper(\"vertical\", this)\r\n },\r\n _normalizeCursorOffset: function(offset) {\r\n if (isObject(offset)) {\r\n offset = {\r\n h: offset.x,\r\n v: offset.y\r\n }\r\n }\r\n offset = splitPair(offset).map(value => parseFloat(value));\r\n return {\r\n left: offset[0],\r\n top: 1 === offset.length ? offset[0] : offset[1]\r\n }\r\n },\r\n _getNormalizedCursorOffset: function(offset, options) {\r\n if (isFunction(offset)) {\r\n offset = offset.call(this, options)\r\n }\r\n return this._normalizeCursorOffset(offset)\r\n },\r\n _calculateElementOffset: function(options) {\r\n var elementOffset;\r\n var dragElementOffset;\r\n var event = options.event;\r\n var $element = $(options.itemElement);\r\n var $dragElement = $(options.dragElement);\r\n var isCloned = this._dragElementIsCloned();\r\n var cursorOffset = this.option(\"cursorOffset\");\r\n var normalizedCursorOffset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var currentLocate = this._initialLocate = locate($dragElement);\r\n if (isCloned || options.initialOffset || cursorOffset) {\r\n elementOffset = options.initialOffset || $element.offset();\r\n if (cursorOffset) {\r\n normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);\r\n if (isFinite(normalizedCursorOffset.left)) {\r\n elementOffset.left = event.pageX\r\n }\r\n if (isFinite(normalizedCursorOffset.top)) {\r\n elementOffset.top = event.pageY\r\n }\r\n }\r\n dragElementOffset = $dragElement.offset();\r\n elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;\r\n elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left\r\n }\r\n return elementOffset\r\n },\r\n _initPosition: function(options) {\r\n var $dragElement = $(options.dragElement);\r\n var elementOffset = this._calculateElementOffset(options);\r\n if (elementOffset) {\r\n this._move(elementOffset, $dragElement)\r\n }\r\n this._startPosition = locate($dragElement)\r\n },\r\n _startAnimator: function() {\r\n if (!this._scrollAnimator.inProgress()) {\r\n this._scrollAnimator.start()\r\n }\r\n },\r\n _stopAnimator: function() {\r\n this._scrollAnimator.stop()\r\n },\r\n _addWidgetPrefix: function(className) {\r\n var componentName = this.NAME;\r\n return dasherize(componentName) + (className ? \"-\" + className : \"\")\r\n },\r\n _getItemsSelector: function() {\r\n return this.option(\"filter\") || \"\"\r\n },\r\n _$content: function() {\r\n var $element = this.$element();\r\n var $wrapper = $element.children(\".dx-template-wrapper\");\r\n return $wrapper.length ? $wrapper : $element\r\n },\r\n _attachEventHandlers: function() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var $element = this._$content();\r\n var itemsSelector = this._getItemsSelector();\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n var data = {\r\n direction: this.option(\"dragDirection\"),\r\n immediate: this.option(\"immediate\"),\r\n checkDropTarget: ($target, event) => {\r\n var targetGroup = this.option(\"group\");\r\n var sourceGroup = this._getSourceDraggable().option(\"group\");\r\n var $scrollable = this._getScrollable($target);\r\n if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {\r\n return false\r\n }\r\n return sourceGroup && sourceGroup === targetGroup\r\n }\r\n };\r\n if (allowMoveByClick) {\r\n $element = this._getArea();\r\n eventsEngine.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))\r\n }\r\n if (\">\" === itemsSelector[0]) {\r\n itemsSelector = itemsSelector.slice(1)\r\n }\r\n eventsEngine.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));\r\n eventsEngine.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));\r\n eventsEngine.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this))\r\n },\r\n _dragElementIsCloned: function() {\r\n return this._$dragElement && this._$dragElement.hasClass(this._addWidgetPrefix(CLONE_CLASS))\r\n },\r\n _getDragTemplateArgs: function($element, $container) {\r\n return {\r\n container: getPublicElement($container),\r\n model: {\r\n itemData: this.option(\"itemData\"),\r\n itemElement: getPublicElement($element)\r\n }\r\n }\r\n },\r\n _createDragElement: function($element) {\r\n var result = $element;\r\n var clone = this.option(\"clone\");\r\n var $container = this._getContainer();\r\n var template = this.option(\"dragTemplate\");\r\n if (template) {\r\n template = this._getTemplate(template);\r\n result = $(\"
\").appendTo($container);\r\n template.render(this._getDragTemplateArgs($element, result))\r\n } else if (clone) {\r\n result = $(\"
\").appendTo($container);\r\n $element.clone().css({\r\n width: $element.css(\"width\"),\r\n height: $element.css(\"height\")\r\n }).appendTo(result)\r\n }\r\n return result.toggleClass(this._addWidgetPrefix(CLONE_CLASS), result.get(0) !== $element.get(0)).toggleClass(\"dx-rtl\", this.option(\"rtlEnabled\"))\r\n },\r\n _resetDragElement: function() {\r\n if (this._dragElementIsCloned()) {\r\n this._$dragElement.remove()\r\n } else {\r\n this._toggleDraggingClass(false)\r\n }\r\n this._$dragElement = null\r\n },\r\n _resetSourceElement: function() {\r\n this._toggleDragSourceClass(false);\r\n this._$sourceElement = null\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$content(), \".\" + DRAGGABLE);\r\n eventsEngine.off(this._getArea(), \".\" + DRAGGABLE)\r\n },\r\n _move: function(position, $element) {\r\n move($element || this._$dragElement, position)\r\n },\r\n _getDraggableElement: function(e) {\r\n var $sourceElement = this._getSourceElement();\r\n if ($sourceElement) {\r\n return $sourceElement\r\n }\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n if (allowMoveByClick) {\r\n return this.$element()\r\n }\r\n var $target = $(e && e.target);\r\n var itemsSelector = this._getItemsSelector();\r\n if (\">\" === itemsSelector[0]) {\r\n var $items = this._$content().find(itemsSelector);\r\n if (!$items.is($target)) {\r\n $target = $target.closest($items)\r\n }\r\n }\r\n return $target\r\n },\r\n _getSourceElement: function() {\r\n var draggable = this._getSourceDraggable();\r\n return draggable._$sourceElement\r\n },\r\n _pointerDownHandler: function(e) {\r\n if (needSkipEvent(e)) {\r\n return\r\n }\r\n var position = {};\r\n var $element = this.$element();\r\n var dragDirection = this.option(\"dragDirection\");\r\n if (\"horizontal\" === dragDirection || \"both\" === dragDirection) {\r\n position.left = e.pageX - $element.offset().left + locate($element).left - getWidth($element) / 2\r\n }\r\n if (\"vertical\" === dragDirection || \"both\" === dragDirection) {\r\n position.top = e.pageY - $element.offset().top + locate($element).top - getHeight($element) / 2\r\n }\r\n this._move(position, $element);\r\n this._getAction(\"onDragMove\")(this._getEventArgs(e))\r\n },\r\n _isValidElement: function(event, $element) {\r\n var handle = this.option(\"handle\");\r\n var $target = $(event.originalEvent && event.originalEvent.target);\r\n if (handle && !$target.closest(handle).length) {\r\n return false\r\n }\r\n if (!$element.length) {\r\n return false\r\n }\r\n return !$element.is(\".dx-state-disabled, .dx-state-disabled *\")\r\n },\r\n _dragStartHandler: function(e) {\r\n var $element = this._getDraggableElement(e);\r\n if (!this._isValidElement(e, $element)) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._$sourceElement) {\r\n return\r\n }\r\n var dragStartArgs = this._getDragStartArgs(e, $element);\r\n this._getAction(\"onDragStart\")(dragStartArgs);\r\n if (dragStartArgs.cancel) {\r\n e.cancel = true;\r\n return\r\n }\r\n this.option(\"itemData\", dragStartArgs.itemData);\r\n this._setSourceDraggable();\r\n this._$sourceElement = $element;\r\n var initialOffset = $element.offset();\r\n var $dragElement = this._$dragElement = this._createDragElement($element);\r\n this._toggleDraggingClass(true);\r\n this._toggleDragSourceClass(true);\r\n this._setGestureCoverCursor($dragElement.children());\r\n var isFixedPosition = \"fixed\" === $dragElement.css(\"position\");\r\n this._initPosition(extend({}, dragStartArgs, {\r\n dragElement: $dragElement.get(0),\r\n initialOffset: isFixedPosition && initialOffset\r\n }));\r\n this._getAction(\"onDraggableElementShown\")(_extends({}, dragStartArgs, {\r\n dragElement: $dragElement\r\n }));\r\n var $area = this._getArea();\r\n var areaOffset = this._getAreaOffset($area);\r\n var boundOffset = this._getBoundOffset();\r\n var areaWidth = getOuterWidth($area);\r\n var areaHeight = getOuterHeight($area);\r\n var elementWidth = getWidth($dragElement);\r\n var elementHeight = getHeight($dragElement);\r\n var startOffset_left = $dragElement.offset().left - areaOffset.left,\r\n startOffset_top = $dragElement.offset().top - areaOffset.top;\r\n if ($area.length) {\r\n e.maxLeftOffset = startOffset_left - boundOffset.left;\r\n e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right;\r\n e.maxTopOffset = startOffset_top - boundOffset.top;\r\n e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom\r\n }\r\n if (this.option(\"autoScroll\")) {\r\n this._startAnimator()\r\n }\r\n },\r\n _getAreaOffset: function($area) {\r\n var offset = $area && positionUtils.offset($area);\r\n return offset ? offset : {\r\n left: 0,\r\n top: 0\r\n }\r\n },\r\n _toggleDraggingClass: function(value) {\r\n this._$dragElement && this._$dragElement.toggleClass(this._addWidgetPrefix(\"dragging\"), value)\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source\"), value)\r\n },\r\n _setGestureCoverCursor: function($element) {\r\n $(\".\".concat(GESTURE_COVER_CLASS)).css(\"cursor\", $element.css(\"cursor\"))\r\n },\r\n _getBoundOffset: function() {\r\n var boundOffset = this.option(\"boundOffset\");\r\n if (isFunction(boundOffset)) {\r\n boundOffset = boundOffset.call(this)\r\n }\r\n return quadToObject(boundOffset)\r\n },\r\n _getArea: function() {\r\n var area = this.option(\"boundary\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n return $(area)\r\n },\r\n _getContainer: function() {\r\n var container = this.option(\"container\");\r\n if (void 0 === container) {\r\n container = viewPort()\r\n }\r\n return $(container)\r\n },\r\n _dragMoveHandler: function(e, scrollBy) {\r\n this._dragMoveArgs = e;\r\n if (!this._$dragElement) {\r\n e.cancel = true;\r\n return\r\n }\r\n var offset = e.offset;\r\n var startPosition = this._startPosition;\r\n this._move({\r\n left: startPosition.left + offset.x,\r\n top: startPosition.top + offset.y\r\n });\r\n if (!scrollBy) {\r\n this._updateScrollable(e)\r\n }\r\n var eventArgs = this._getEventArgs(e);\r\n this._getAction(\"onDragMove\")(eventArgs);\r\n if (true === eventArgs.cancel) {\r\n return\r\n }\r\n var targetDraggable = this._getTargetDraggable();\r\n targetDraggable.dragMove(e, scrollBy)\r\n },\r\n _updateScrollable: function(e) {\r\n if (this.option(\"autoScroll\")) {\r\n var mousePosition = getMousePosition(e);\r\n var allObjects = domAdapter.elementsFromPoint(mousePosition.x, mousePosition.y);\r\n this._verticalScrollHelper.updateScrollable(allObjects, mousePosition);\r\n this._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)\r\n }\r\n },\r\n _getScrollable: function($element) {\r\n var $scrollable;\r\n $element.parents().toArray().some(parent => {\r\n var $parent = $(parent);\r\n if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) {\r\n $scrollable = $parent;\r\n return true\r\n }\r\n });\r\n return $scrollable\r\n },\r\n _defaultActionArgs: function() {\r\n var args = this.callBase.apply(this, arguments);\r\n var component = this.option(\"component\");\r\n if (component) {\r\n args.component = component;\r\n args.element = component.element()\r\n }\r\n return args\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return {\r\n event: e,\r\n itemData: sourceDraggable.option(\"itemData\"),\r\n itemElement: getPublicElement(sourceDraggable._$sourceElement),\r\n fromComponent: sourceDraggable.option(\"component\") || sourceDraggable,\r\n toComponent: targetDraggable.option(\"component\") || targetDraggable,\r\n fromData: sourceDraggable.option(\"data\"),\r\n toData: targetDraggable.option(\"data\")\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n var args = this._getEventArgs(e);\r\n return {\r\n event: args.event,\r\n itemData: args.itemData,\r\n itemElement: $itemElement,\r\n fromData: args.fromData\r\n }\r\n },\r\n _revertItemToInitialPosition: function() {\r\n !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)\r\n },\r\n _dragEndHandler: function(e) {\r\n var d = new Deferred;\r\n var dragEndEventArgs = this._getEventArgs(e);\r\n var dropEventArgs = this._getEventArgs(e);\r\n var targetDraggable = this._getTargetDraggable();\r\n var needRevertPosition = true;\r\n try {\r\n this._getAction(\"onDragEnd\")(dragEndEventArgs)\r\n } finally {\r\n when(fromPromise(dragEndEventArgs.cancel)).done(cancel => {\r\n if (!cancel) {\r\n if (targetDraggable !== this) {\r\n targetDraggable._getAction(\"onDrop\")(dropEventArgs)\r\n }\r\n if (!dropEventArgs.cancel) {\r\n needRevertPosition = false;\r\n when(fromPromise(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);\r\n return\r\n }\r\n }\r\n d.resolve()\r\n }).fail(d.resolve);\r\n d.done(() => {\r\n if (needRevertPosition) {\r\n this._revertItemToInitialPosition()\r\n }\r\n this.reset();\r\n targetDraggable.reset();\r\n this._stopAnimator();\r\n this._horizontalScrollHelper.reset();\r\n this._verticalScrollHelper.reset();\r\n this._resetDragElement();\r\n this._resetSourceElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable()\r\n })\r\n }\r\n },\r\n _isTargetOverAnotherDraggable: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (this === sourceDraggable) {\r\n return false\r\n }\r\n var $dragElement = sourceDraggable._$dragElement;\r\n var $sourceDraggableElement = sourceDraggable.$element();\r\n var $targetDraggableElement = this.$element();\r\n var mousePosition = getMousePosition(e);\r\n var elements = domAdapter.elementsFromPoint(mousePosition.x, mousePosition.y);\r\n var firstWidgetElement = elements.filter(element => {\r\n var $element = $(element);\r\n if ($element.hasClass(this._addWidgetPrefix())) {\r\n return !$element.closest($dragElement).length\r\n }\r\n })[0];\r\n var $sourceElement = this._getSourceElement();\r\n var isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);\r\n var isTargetOverNestedDraggable = $(firstWidgetElement).closest($sourceElement).length;\r\n return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable\r\n },\r\n _dragEnterHandler: function(e) {\r\n this._fireDragEnterEvent(e);\r\n if (this._isTargetOverAnotherDraggable(e)) {\r\n this._setTargetDraggable()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragEnter(e)\r\n },\r\n _dragLeaveHandler: function(e) {\r\n this._fireDragLeaveEvent(e);\r\n this._resetTargetDraggable();\r\n if (this !== this._getSourceDraggable()) {\r\n this.reset()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragLeave(e)\r\n },\r\n _getAction: function(name) {\r\n return this[\"_\" + name + \"Action\"] || this._createActionByOption(name)\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n if (!this.option(\"contentTemplate\")) {\r\n return\r\n }\r\n this._templateManager.addDefaultTemplates({\r\n content: new EmptyTemplate\r\n });\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(this._addWidgetPrefix());\r\n var transclude = this._templateManager.anonymousTemplateName === this.option(\"contentTemplate\");\r\n var template = this._getTemplateByOption(\"contentTemplate\");\r\n if (template) {\r\n $(template.render({\r\n container: this.element(),\r\n transclude: transclude\r\n }))\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragStart\":\r\n case \"onDragMove\":\r\n case \"onDragEnd\":\r\n case \"onDrop\":\r\n case \"onDragEnter\":\r\n case \"onDragLeave\":\r\n case \"onDraggableElementShown\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"dragTemplate\":\r\n case \"contentTemplate\":\r\n case \"container\":\r\n case \"clone\":\r\n break;\r\n case \"allowMoveByClick\":\r\n case \"dragDirection\":\r\n case \"disabled\":\r\n case \"boundary\":\r\n case \"filter\":\r\n case \"immediate\":\r\n this._resetDragElement();\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"autoScroll\":\r\n this._verticalScrollHelper.reset();\r\n this._horizontalScrollHelper.reset();\r\n break;\r\n case \"scrollSensitivity\":\r\n case \"scrollSpeed\":\r\n case \"boundOffset\":\r\n case \"handle\":\r\n case \"group\":\r\n case \"data\":\r\n case \"itemData\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getTargetDraggable: function() {\r\n return targetDraggable || this\r\n },\r\n _getSourceDraggable: function() {\r\n return sourceDraggable || this\r\n },\r\n _setTargetDraggable: function() {\r\n var currentGroup = this.option(\"group\");\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (currentGroup && currentGroup === sourceDraggable.option(\"group\")) {\r\n targetDraggable = this\r\n }\r\n },\r\n _setSourceDraggable: function() {\r\n sourceDraggable = this\r\n },\r\n _resetSourceDraggable: function() {\r\n sourceDraggable = null\r\n },\r\n _resetTargetDraggable: function() {\r\n targetDraggable = null\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n this._detachEventHandlers();\r\n this._resetDragElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable();\r\n this._$sourceElement = null;\r\n this._stopAnimator()\r\n },\r\n _fireDragEnterEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragEnter\")(args)\r\n },\r\n _fireDragLeaveEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragLeave\")(args)\r\n }\r\n});\r\nregisterComponent(DRAGGABLE, Draggable);\r\nexport default Draggable;\r\n","/**\r\n * DevExtreme (esm/ui/sortable.js)\r\n * Version: 22.1.6\r\n * Build date: Tue Oct 18 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 getOuterWidth,\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport Draggable from \"./draggable\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport {\r\n resetPosition\r\n} from \"../animation/translator\";\r\nimport fx from \"../animation/fx\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar window = getWindow();\r\nvar SORTABLE = \"dxSortable\";\r\nvar PLACEHOLDER_CLASS = \"placeholder\";\r\nvar CLONE_CLASS = \"clone\";\r\nvar isElementVisible = itemElement => $(itemElement).is(\":visible\");\r\nvar animate = (element, config) => {\r\n var _config$to, _config$to2;\r\n if (!element) {\r\n return\r\n }\r\n var left = (null === (_config$to = config.to) || void 0 === _config$to ? void 0 : _config$to.left) || 0;\r\n var top = (null === (_config$to2 = config.to) || void 0 === _config$to2 ? void 0 : _config$to2.top) || 0;\r\n element.style.transform = \"translate(\".concat(left, \"px,\").concat(top, \"px)\");\r\n element.style.transition = fx.off ? \"\" : \"transform \".concat(config.duration, \"ms \").concat(config.easing)\r\n};\r\nvar stopAnimation = element => {\r\n if (!element) {\r\n return\r\n }\r\n element.style.transform = \"\";\r\n element.style.transition = \"\"\r\n};\r\n\r\nfunction getScrollableBoundary($scrollable) {\r\n var offset = $scrollable.offset();\r\n var style = $scrollable[0].style;\r\n var paddingLeft = parseFloat(style.paddingLeft) || 0;\r\n var paddingRight = parseFloat(style.paddingRight) || 0;\r\n var paddingTop = parseFloat(style.paddingTop) || 0;\r\n var width = $scrollable[0].clientWidth - (paddingLeft + paddingRight);\r\n var height = getHeight($scrollable);\r\n var left = offset.left + paddingLeft;\r\n var top = offset.top + paddingTop;\r\n return {\r\n left: left,\r\n right: left + width,\r\n top: top,\r\n bottom: top + height\r\n }\r\n}\r\nvar Sortable = Draggable.inherit({\r\n _init: function() {\r\n this.callBase();\r\n this._sourceScrollHandler = this._handleSourceScroll.bind(this);\r\n this._sourceScrollableInfo = null\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n clone: true,\r\n filter: \"> *\",\r\n itemOrientation: \"vertical\",\r\n dropFeedbackMode: \"push\",\r\n allowDropInsideItem: false,\r\n allowReordering: true,\r\n moveItemOnDrop: false,\r\n onDragChange: null,\r\n onAdd: null,\r\n onRemove: null,\r\n onReorder: null,\r\n onPlaceholderPrepared: null,\r\n animation: {\r\n type: \"slide\",\r\n duration: 300,\r\n easing: \"ease\"\r\n },\r\n fromIndex: null,\r\n toIndex: null,\r\n dropInsideItem: false,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n offset: 0,\r\n autoUpdate: false,\r\n draggableElementSize: 0\r\n })\r\n },\r\n reset: function() {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null,\r\n fromIndex: null,\r\n itemPoints: null,\r\n fromIndexOffset: 0,\r\n draggableElementSize: 0\r\n });\r\n if (this._$placeholderElement) {\r\n this._$placeholderElement.remove()\r\n }\r\n this._$placeholderElement = null;\r\n if (!this._isIndicateMode() && this._$modifiedItem) {\r\n this._$modifiedItem.css(\"marginBottom\", this._modifiedItemMargin);\r\n this._$modifiedItem = null\r\n }\r\n },\r\n _getPrevVisibleItem: function(items, index) {\r\n return items.slice(0, index).reverse().filter(isElementVisible)[0]\r\n },\r\n _dragStartHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (true === e.cancel) {\r\n return\r\n }\r\n var $sourceElement = this._getSourceElement();\r\n this._updateItemPoints();\r\n this._subscribeToSourceScroll(e);\r\n this.option(\"fromIndex\", this._getElementIndex($sourceElement));\r\n this.option(\"fromIndexOffset\", this.option(\"offset\"))\r\n },\r\n _subscribeToSourceScroll: function(e) {\r\n var $scrollable = this._getScrollable($(e.target));\r\n if ($scrollable) {\r\n this._sourceScrollableInfo = {\r\n element: $scrollable,\r\n scrollLeft: $scrollable.scrollLeft(),\r\n scrollTop: $scrollable.scrollTop()\r\n };\r\n eventsEngine.off($scrollable, \"scroll\", this._sourceScrollHandler);\r\n eventsEngine.on($scrollable, \"scroll\", this._sourceScrollHandler)\r\n }\r\n },\r\n _unsubscribeFromSourceScroll: function() {\r\n if (this._sourceScrollableInfo) {\r\n eventsEngine.off(this._sourceScrollableInfo.element, \"scroll\", this._sourceScrollHandler);\r\n this._sourceScrollableInfo = null\r\n }\r\n },\r\n _handleSourceScroll: function(e) {\r\n var sourceScrollableInfo = this._sourceScrollableInfo;\r\n if (sourceScrollableInfo) {\r\n [\"scrollLeft\", \"scrollTop\"].forEach(scrollProp => {\r\n if (e.target[scrollProp] !== sourceScrollableInfo[scrollProp]) {\r\n var scrollBy = e.target[scrollProp] - sourceScrollableInfo[scrollProp];\r\n this._correctItemPoints(scrollBy);\r\n this._movePlaceholder();\r\n sourceScrollableInfo[scrollProp] = e.target[scrollProp]\r\n }\r\n })\r\n }\r\n },\r\n _dragEnterHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (this === this._getSourceDraggable()) {\r\n return\r\n }\r\n this._subscribeToSourceScroll(e);\r\n this._updateItemPoints();\r\n this.option(\"fromIndex\", -1);\r\n if (!this._isIndicateMode()) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n var lastItemPoint = itemPoints[itemPoints.length - 1];\r\n if (lastItemPoint) {\r\n var $element = this.$element();\r\n var $sourceElement = this._getSourceElement();\r\n var isVertical = this._isVerticalOrientation();\r\n var sourceElementSize = isVertical ? getOuterHeight($sourceElement, true) : getOuterWidth($sourceElement, true);\r\n var scrollSize = $element.get(0)[isVertical ? \"scrollHeight\" : \"scrollWidth\"];\r\n var scrollPosition = $element.get(0)[isVertical ? \"scrollTop\" : \"scrollLeft\"];\r\n var positionProp = isVertical ? \"top\" : \"left\";\r\n var lastPointPosition = lastItemPoint[positionProp];\r\n var elementPosition = $element.offset()[positionProp];\r\n var freeSize = elementPosition + scrollSize - scrollPosition - lastPointPosition;\r\n if (freeSize < sourceElementSize) {\r\n if (isVertical) {\r\n var items = this._getItems();\r\n var $lastItem = $(this._getPrevVisibleItem(items));\r\n this._$modifiedItem = $lastItem;\r\n this._modifiedItemMargin = $lastItem.get(0).style.marginBottom;\r\n $lastItem.css(\"marginBottom\", sourceElementSize - freeSize);\r\n var $sortable = $lastItem.closest(\".dx-sortable\");\r\n var sortable = $sortable.data(\"dxScrollable\") || $sortable.data(\"dxScrollView\");\r\n sortable && sortable.update()\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _dragLeaveHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n if (this !== this._getSourceDraggable()) {\r\n this._unsubscribeFromSourceScroll()\r\n }\r\n },\r\n dragEnter: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", -1)\r\n }\r\n },\r\n dragLeave: function() {\r\n if (this !== this._getTargetDraggable()) {\r\n this.option(\"toIndex\", this.option(\"fromIndex\"))\r\n }\r\n },\r\n _allowDrop: function(event) {\r\n var targetDraggable = this._getTargetDraggable();\r\n var $targetDraggable = targetDraggable.$element();\r\n var $scrollable = this._getScrollable($targetDraggable);\r\n if ($scrollable) {\r\n var {\r\n left: left,\r\n right: right,\r\n top: top,\r\n bottom: bottom\r\n } = getScrollableBoundary($scrollable);\r\n var toIndex = this.option(\"toIndex\");\r\n var itemPoints = this.option(\"itemPoints\");\r\n var itemPoint = null === itemPoints || void 0 === itemPoints ? void 0 : itemPoints.filter(item => item.index === toIndex)[0];\r\n if (itemPoint && void 0 !== itemPoint.top) {\r\n var isVertical = this._isVerticalOrientation();\r\n if (isVertical) {\r\n return top <= Math.ceil(itemPoint.top) && Math.floor(itemPoint.top) <= bottom\r\n } else {\r\n return left <= Math.ceil(itemPoint.left) && Math.floor(itemPoint.left) <= right\r\n }\r\n }\r\n }\r\n return true\r\n },\r\n dragEnd: function(sourceEvent) {\r\n this._unsubscribeFromSourceScroll();\r\n var $sourceElement = this._getSourceElement();\r\n var sourceDraggable = this._getSourceDraggable();\r\n var isSourceDraggable = sourceDraggable.NAME !== this.NAME;\r\n var toIndex = this.option(\"toIndex\");\r\n var event = sourceEvent.event;\r\n var allowDrop = this._allowDrop(event);\r\n if (null !== toIndex && toIndex >= 0 && allowDrop) {\r\n var cancelAdd;\r\n var cancelRemove;\r\n if (sourceDraggable !== this) {\r\n cancelAdd = this._fireAddEvent(event);\r\n if (!cancelAdd) {\r\n cancelRemove = this._fireRemoveEvent(event)\r\n }\r\n }\r\n if (isSourceDraggable) {\r\n resetPosition($sourceElement)\r\n }\r\n if (this.option(\"moveItemOnDrop\")) {\r\n !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove)\r\n }\r\n if (sourceDraggable === this) {\r\n return this._fireReorderEvent(event)\r\n }\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n dragMove: function(e) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (!itemPoints) {\r\n return\r\n }\r\n var isVertical = this._isVerticalOrientation();\r\n var axisName = isVertical ? \"top\" : \"left\";\r\n var cursorPosition = isVertical ? e.pageY : e.pageX;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var itemPoint;\r\n for (var i = itemPoints.length - 1; i >= 0; i--) {\r\n var centerPosition = itemPoints[i + 1] && (itemPoints[i][axisName] + itemPoints[i + 1][axisName]) / 2;\r\n if ((!isVertical && rtlEnabled ? cursorPosition > centerPosition : centerPosition > cursorPosition) || void 0 === centerPosition) {\r\n itemPoint = itemPoints[i]\r\n } else {\r\n break\r\n }\r\n }\r\n if (itemPoint) {\r\n this._updatePlaceholderPosition(e, itemPoint);\r\n if (this._verticalScrollHelper.isScrolling() && this._isIndicateMode()) {\r\n this._movePlaceholder()\r\n }\r\n }\r\n },\r\n _isIndicateMode: function() {\r\n return \"indicate\" === this.option(\"dropFeedbackMode\") || this.option(\"allowDropInsideItem\")\r\n },\r\n _createPlaceholder: function() {\r\n var $placeholderContainer;\r\n if (this._isIndicateMode()) {\r\n $placeholderContainer = $(\"
\").addClass(this._addWidgetPrefix(PLACEHOLDER_CLASS)).insertBefore(this._getSourceDraggable()._$dragElement)\r\n }\r\n this._$placeholderElement = $placeholderContainer;\r\n return $placeholderContainer\r\n },\r\n _getItems: function() {\r\n var itemsSelector = this._getItemsSelector();\r\n return this._$content().find(itemsSelector).not(\".\" + this._addWidgetPrefix(PLACEHOLDER_CLASS)).not(\".\" + this._addWidgetPrefix(CLONE_CLASS)).toArray()\r\n },\r\n _allowReordering: function() {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return sourceDraggable !== targetDraggable || this.option(\"allowReordering\")\r\n },\r\n _isValidPoint: function(visibleIndex, draggableVisibleIndex, dropInsideItem) {\r\n var allowDropInsideItem = this.option(\"allowDropInsideItem\");\r\n var allowReordering = dropInsideItem || this._allowReordering();\r\n if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) {\r\n return false\r\n }\r\n if (!this._isIndicateMode()) {\r\n return true\r\n }\r\n return -1 === draggableVisibleIndex || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1)\r\n },\r\n _getItemPoints: function() {\r\n var result = [];\r\n var $item;\r\n var offset;\r\n var itemWidth;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isVertical = this._isVerticalOrientation();\r\n var itemElements = this._getItems();\r\n var visibleItemElements = itemElements.filter(isElementVisible);\r\n var visibleItemCount = visibleItemElements.length;\r\n var $draggableItem = this._getDraggableElement();\r\n var draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0));\r\n if (visibleItemCount) {\r\n for (var i = 0; i <= visibleItemCount; i++) {\r\n var needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount;\r\n var needCorrectTopPosition = isVertical && i === visibleItemCount;\r\n if (i < visibleItemCount) {\r\n $item = $(visibleItemElements[i]);\r\n offset = $item.offset();\r\n itemWidth = getOuterWidth($item)\r\n }\r\n result.push({\r\n dropInsideItem: false,\r\n left: offset.left + (needCorrectLeftPosition ? itemWidth : 0),\r\n top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0),\r\n index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)),\r\n $item: $item,\r\n width: getOuterWidth($item),\r\n height: getOuterHeight($item),\r\n isValid: this._isValidPoint(i, draggableVisibleIndex)\r\n })\r\n }\r\n if (this.option(\"allowDropInsideItem\")) {\r\n var points = result;\r\n result = [];\r\n for (var _i = 0; _i < points.length; _i++) {\r\n result.push(points[_i]);\r\n if (points[_i + 1]) {\r\n result.push(extend({}, points[_i], {\r\n dropInsideItem: true,\r\n top: Math.floor((points[_i].top + points[_i + 1].top) / 2),\r\n left: Math.floor((points[_i].left + points[_i + 1].left) / 2),\r\n isValid: this._isValidPoint(_i, draggableVisibleIndex, true)\r\n }))\r\n }\r\n }\r\n }\r\n } else {\r\n result.push({\r\n dropInsideItem: false,\r\n index: 0,\r\n isValid: true\r\n })\r\n }\r\n return result\r\n },\r\n _updateItemPoints: function(forceUpdate) {\r\n if (forceUpdate || this.option(\"autoUpdate\") || !this.option(\"itemPoints\")) {\r\n this.option(\"itemPoints\", this._getItemPoints())\r\n }\r\n },\r\n _correctItemPoints: function(scrollBy) {\r\n var itemPoints = this.option(\"itemPoints\");\r\n if (scrollBy && itemPoints && !this.option(\"autoUpdate\")) {\r\n var isVertical = this._isVerticalOrientation();\r\n var positionPropName = isVertical ? \"top\" : \"left\";\r\n itemPoints.forEach(itemPoint => {\r\n itemPoint[positionPropName] -= scrollBy\r\n })\r\n }\r\n },\r\n _getElementIndex: function($itemElement) {\r\n return this._getItems().indexOf($itemElement.get(0))\r\n },\r\n _getDragTemplateArgs: function($element) {\r\n var args = this.callBase.apply(this, arguments);\r\n args.model.fromIndex = this._getElementIndex($element);\r\n return args\r\n },\r\n _togglePlaceholder: function(value) {\r\n this._$placeholderElement && this._$placeholderElement.toggle(value)\r\n },\r\n _isVerticalOrientation: function() {\r\n return \"vertical\" === this.option(\"itemOrientation\")\r\n },\r\n _normalizeToIndex: function(toIndex, dropInsideItem) {\r\n var isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable();\r\n var fromIndex = this.option(\"fromIndex\");\r\n if (null === toIndex) {\r\n return fromIndex\r\n }\r\n return Math.max(isAnotherDraggable || fromIndex >= toIndex || dropInsideItem ? toIndex : toIndex - 1, 0)\r\n },\r\n _updatePlaceholderPosition: function(e, itemPoint) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem);\r\n var eventArgs = extend(this._getEventArgs(e), {\r\n toIndex: toIndex,\r\n dropInsideItem: itemPoint.dropInsideItem\r\n });\r\n itemPoint.isValid && this._getAction(\"onDragChange\")(eventArgs);\r\n if (eventArgs.cancel || !itemPoint.isValid) {\r\n if (!itemPoint.isValid) {\r\n this.option({\r\n dropInsideItem: false,\r\n toIndex: null\r\n })\r\n }\r\n return\r\n }\r\n this.option({\r\n dropInsideItem: itemPoint.dropInsideItem,\r\n toIndex: itemPoint.index\r\n });\r\n this._getAction(\"onPlaceholderPrepared\")(extend(this._getEventArgs(e), {\r\n placeholderElement: getPublicElement(this._$placeholderElement),\r\n dragElement: getPublicElement(sourceDraggable._$dragElement)\r\n }));\r\n this._updateItemPoints()\r\n },\r\n _makeWidthCorrection: function($item, width) {\r\n this._$scrollable = this._getScrollable($item);\r\n if (this._$scrollable) {\r\n var scrollableWidth = getWidth(this._$scrollable);\r\n var overflowLeft = this._$scrollable.offset().left - $item.offset().left;\r\n var overflowRight = getOuterWidth($item) - overflowLeft - scrollableWidth;\r\n if (overflowLeft > 0) {\r\n width -= overflowLeft\r\n }\r\n if (overflowRight > 0) {\r\n width -= overflowRight\r\n }\r\n }\r\n return width\r\n },\r\n _updatePlaceholderSizes: function($placeholderElement, itemElement) {\r\n var dropInsideItem = this.option(\"dropInsideItem\");\r\n var $item = $(itemElement);\r\n var isVertical = this._isVerticalOrientation();\r\n var width = \"\";\r\n var height = \"\";\r\n $placeholderElement.toggleClass(this._addWidgetPrefix(\"placeholder-inside\"), dropInsideItem);\r\n if (isVertical || dropInsideItem) {\r\n width = getOuterWidth($item)\r\n }\r\n if (!isVertical || dropInsideItem) {\r\n height = getOuterHeight($item)\r\n }\r\n width = this._makeWidthCorrection($item, width);\r\n $placeholderElement.css({\r\n width: width,\r\n height: height\r\n })\r\n },\r\n _moveItem: function($itemElement, index, cancelRemove) {\r\n var $prevTargetItemElement;\r\n var $itemElements = this._getItems();\r\n var $targetItemElement = $itemElements[index];\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (cancelRemove) {\r\n $itemElement = $itemElement.clone();\r\n sourceDraggable._toggleDragSourceClass(false, $itemElement)\r\n }\r\n if (!$targetItemElement) {\r\n $prevTargetItemElement = $itemElements[index - 1]\r\n }\r\n this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement)\r\n },\r\n _moveItemCore: function($targetItem, item, prevItem) {\r\n if (!item && !prevItem) {\r\n $targetItem.appendTo(this.$element())\r\n } else if (prevItem) {\r\n $targetItem.insertAfter($(prevItem))\r\n } else {\r\n $targetItem.insertBefore($(item))\r\n }\r\n },\r\n _getDragStartArgs: function(e, $itemElement) {\r\n return extend(this.callBase.apply(this, arguments), {\r\n fromIndex: this._getElementIndex($itemElement)\r\n })\r\n },\r\n _getEventArgs: function(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n var dropInsideItem = targetDraggable.option(\"dropInsideItem\");\r\n return extend(this.callBase.apply(this, arguments), {\r\n fromIndex: sourceDraggable.option(\"fromIndex\"),\r\n toIndex: this._normalizeToIndex(targetDraggable.option(\"toIndex\"), dropInsideItem),\r\n dropInsideItem: dropInsideItem\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"onDragChange\":\r\n case \"onPlaceholderPrepared\":\r\n case \"onAdd\":\r\n case \"onRemove\":\r\n case \"onReorder\":\r\n this[\"_\" + name + \"Action\"] = this._createActionByOption(name);\r\n break;\r\n case \"itemOrientation\":\r\n case \"allowDropInsideItem\":\r\n case \"moveItemOnDrop\":\r\n case \"dropFeedbackMode\":\r\n case \"itemPoints\":\r\n case \"animation\":\r\n case \"allowReordering\":\r\n case \"fromIndexOffset\":\r\n case \"offset\":\r\n case \"draggableElementSize\":\r\n case \"autoUpdate\":\r\n break;\r\n case \"fromIndex\":\r\n [false, true].forEach(isDragSource => {\r\n var fromIndex = isDragSource ? args.value : args.previousValue;\r\n if (null !== fromIndex) {\r\n var $fromElement = $(this._getItems()[fromIndex]);\r\n this._toggleDragSourceClass(isDragSource, $fromElement)\r\n }\r\n });\r\n break;\r\n case \"dropInsideItem\":\r\n this._optionChangedDropInsideItem(args);\r\n break;\r\n case \"toIndex\":\r\n this._optionChangedToIndex(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _optionChangedDropInsideItem: function() {\r\n if (this._isIndicateMode() && this._$placeholderElement) {\r\n this._movePlaceholder()\r\n }\r\n },\r\n _isPositionVisible: function(position) {\r\n var $element = this.$element();\r\n var scrollContainer;\r\n if (\"hidden\" !== $element.css(\"overflow\")) {\r\n scrollContainer = $element.get(0)\r\n } else {\r\n $element.parents().each((function() {\r\n if (\"visible\" !== $(this).css(\"overflow\")) {\r\n scrollContainer = this;\r\n return false\r\n }\r\n }))\r\n }\r\n if (scrollContainer) {\r\n var clientRect = getBoundingRect(scrollContainer);\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var start = isVerticalOrientation ? \"top\" : \"left\";\r\n var end = isVerticalOrientation ? \"bottom\" : \"right\";\r\n var pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset;\r\n if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _optionChangedToIndex: function(args) {\r\n var toIndex = args.value;\r\n if (this._isIndicateMode()) {\r\n var showPlaceholder = null !== toIndex && toIndex >= 0;\r\n this._togglePlaceholder(showPlaceholder);\r\n if (showPlaceholder) {\r\n this._movePlaceholder()\r\n }\r\n } else {\r\n this._moveItems(args.previousValue, args.value, args.fullUpdate)\r\n }\r\n },\r\n update: function() {\r\n if (null === this.option(\"fromIndex\") && null === this.option(\"toIndex\")) {\r\n return\r\n }\r\n this._updateItemPoints(true);\r\n this._updateDragSourceClass();\r\n var toIndex = this.option(\"toIndex\");\r\n this._optionChangedToIndex({\r\n value: toIndex,\r\n fullUpdate: true\r\n })\r\n },\r\n _updateDragSourceClass: function() {\r\n var fromIndex = this._getActualFromIndex();\r\n var $fromElement = $(this._getItems()[fromIndex]);\r\n if ($fromElement.length) {\r\n this._$sourceElement = $fromElement;\r\n this._toggleDragSourceClass(true, $fromElement)\r\n }\r\n },\r\n _makeLeftCorrection: function(left) {\r\n var $scrollable = this._$scrollable;\r\n if ($scrollable && this._isVerticalOrientation()) {\r\n var overflowLeft = $scrollable.offset().left - left;\r\n if (overflowLeft > 0) {\r\n left += overflowLeft\r\n }\r\n }\r\n return left\r\n },\r\n _movePlaceholder: function() {\r\n var $placeholderElement = this._$placeholderElement || this._createPlaceholder();\r\n if (!$placeholderElement) {\r\n return\r\n }\r\n var items = this._getItems();\r\n var toIndex = this.option(\"toIndex\");\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var dropInsideItem = this.option(\"dropInsideItem\");\r\n var position = null;\r\n var itemElement = items[toIndex];\r\n if (itemElement) {\r\n var $itemElement = $(itemElement);\r\n position = $itemElement.offset();\r\n if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) {\r\n position.left += getOuterWidth($itemElement, true)\r\n }\r\n } else {\r\n var prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex);\r\n if (prevVisibleItemElement) {\r\n position = $(prevVisibleItemElement).offset();\r\n if (isVerticalOrientation) {\r\n position.top += getOuterHeight(prevVisibleItemElement, true)\r\n } else if (!rtlEnabled) {\r\n position.left += getOuterWidth(prevVisibleItemElement, true)\r\n }\r\n }\r\n }\r\n this._updatePlaceholderSizes($placeholderElement, itemElement);\r\n if (position && !this._isPositionVisible(position)) {\r\n position = null\r\n }\r\n if (position) {\r\n position.left = this._makeLeftCorrection(position.left);\r\n this._move(position, $placeholderElement)\r\n }\r\n $placeholderElement.toggle(!!position)\r\n },\r\n _getPositions: function(items, elementSize, fromIndex, toIndex) {\r\n var positions = [];\r\n for (var i = 0; i < items.length; i++) {\r\n var position = 0;\r\n if (null === toIndex || null === fromIndex) {\r\n positions.push(position);\r\n continue\r\n }\r\n if (-1 === fromIndex) {\r\n if (i >= toIndex) {\r\n position = elementSize\r\n }\r\n } else if (-1 === toIndex) {\r\n if (i > fromIndex) {\r\n position = -elementSize\r\n }\r\n } else if (fromIndex < toIndex) {\r\n if (i > fromIndex && i < toIndex) {\r\n position = -elementSize\r\n }\r\n } else if (fromIndex > toIndex) {\r\n if (i >= toIndex && i < fromIndex) {\r\n position = elementSize\r\n }\r\n }\r\n positions.push(position)\r\n }\r\n return positions\r\n },\r\n _getDraggableElementSize: function(isVerticalOrientation) {\r\n var $draggableItem = this._getDraggableElement();\r\n var size = this.option(\"draggableElementSize\");\r\n if (!size) {\r\n size = isVerticalOrientation ? (getOuterHeight($draggableItem) + getOuterHeight($draggableItem, true)) / 2 : (getOuterWidth($draggableItem) + getOuterWidth($draggableItem, true)) / 2;\r\n if (!this.option(\"autoUpdate\")) {\r\n this.option(\"draggableElementSize\", size)\r\n }\r\n }\r\n return size\r\n },\r\n _getActualFromIndex: function() {\r\n var {\r\n fromIndex: fromIndex,\r\n fromIndexOffset: fromIndexOffset,\r\n offset: offset\r\n } = this.option();\r\n return null == fromIndex ? null : fromIndex + fromIndexOffset - offset\r\n },\r\n _moveItems: function(prevToIndex, toIndex, fullUpdate) {\r\n var fromIndex = this._getActualFromIndex();\r\n var isVerticalOrientation = this._isVerticalOrientation();\r\n var positionPropName = isVerticalOrientation ? \"top\" : \"left\";\r\n var elementSize = this._getDraggableElementSize(isVerticalOrientation);\r\n var items = this._getItems();\r\n var prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex);\r\n var positions = this._getPositions(items, elementSize, fromIndex, toIndex);\r\n var animationConfig = this.option(\"animation\");\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n for (var i = 0; i < items.length; i++) {\r\n var itemElement = items[i];\r\n var prevPosition = prevPositions[i];\r\n var position = positions[i];\r\n if (null === toIndex || null === fromIndex) {\r\n stopAnimation(itemElement)\r\n } else if (prevPosition !== position || fullUpdate && position) {\r\n animate(itemElement, extend({}, animationConfig, {\r\n to: {\r\n [positionPropName]: !isVerticalOrientation && rtlEnabled ? -position : position\r\n }\r\n }))\r\n }\r\n }\r\n },\r\n _toggleDragSourceClass: function(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n this.callBase.apply(this, arguments);\r\n if (!this._isIndicateMode()) {\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source-hidden\"), value)\r\n }\r\n },\r\n _dispose: function() {\r\n this.reset();\r\n this.callBase()\r\n },\r\n _fireAddEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onAdd\")(args);\r\n return args.cancel\r\n },\r\n _fireRemoveEvent: function(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var args = this._getEventArgs(sourceEvent);\r\n sourceDraggable._getAction(\"onRemove\")(args);\r\n return args.cancel\r\n },\r\n _fireReorderEvent: function(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onReorder\")(args);\r\n return args.promise || (new Deferred).resolve()\r\n }\r\n});\r\nregisterComponent(SORTABLE, Sortable);\r\nexport default Sortable;\r\n"],"sourceRoot":""}