{"version":3,"sources":["../node_modules/devextreme/ui/validation_summary.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.core.js","../node_modules/devextreme/ui/toolbar/ui.toolbar.base.js","../node_modules/devextreme/ui/toolbar/constants.js","../node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.js","../node_modules/devextreme/ui/tree_view/ui.tree_view.search.js","../node_modules/devextreme/ui/validation_group.js","../node_modules/devextreme/ui/tooltip/tooltip.js","../node_modules/devextreme/ui/track_bar.js","../node_modules/devextreme/ui/toast.js","../node_modules/devextreme/ui/tree_list.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.data_source_adapter.js","../node_modules/devextreme/ui/themes.js","../node_modules/devextreme/ui/themes_callback.js","../node_modules/devextreme/ui/validation_message.js","../node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.action_sheet.js","../node_modules/devextreme/ui/toolbar/ui.toolbar.strategy.drop_down_menu.js","../node_modules/devextreme/ui/toolbar/ui.toolbar.menu.js","../node_modules/devextreme/ui/tree_view/ui.tree_view.base.js","../node_modules/devextreme/ui/validation/default_adapter.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.base.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.column_headers.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.columns_controller.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.data_controller.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.sorting.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.rows.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.context_menu.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.error_handling.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.grid_view.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.header_panel.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.state_storing.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.column_chooser.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.master_detail.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.editing.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.editor_factory.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.validating.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.virtual_scrolling.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.filter_row.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.header_filter.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.filter_sync.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.filter_builder.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.filter_panel.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.pager.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.columns_resizing_reordering.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.column_fixing.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.adaptivity.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.selection.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.search.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.keyboard_navigation.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.virtual_columns.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.focus.js","../node_modules/devextreme/ui/tree_list/ui.tree_list.row_dragging.js","../node_modules/devextreme/ui/tooltip/ui.tooltip.js","../node_modules/devextreme/ui/tile_view.js","../node_modules/devextreme/ui/validation_engine.js","../node_modules/devextreme/ui/toolbar.js","../node_modules/devextreme/ui/tree_view.js","../node_modules/devextreme/ui/validator.js","../node_modules/devextreme/ui/tooltip.js"],"names":["exports","default","_component_registrator","_interopRequireDefault","require","_events_engine","_common","_extend","_iterator","_validation_engine","_uiCollection_widget","obj","__esModule","ValidationSummary","inherit","_getDefaultOptions","extend","this","callBase","focusStateEnabled","noDataText","_setOptionsByReference","_optionsByReference","validationGroup","_init","_initGroupRegistration","$element","group","option","findGroup","_modelByElement","groupConfig","addGroup","_unsubscribeGroup","_groupWasInit","_validationGroup","groupSubscription","_groupValidationHandler","bind","on","getGroupConfig","off","_getOrderedItems","validators","items","orderedItems","each","_","validator","foundItems","grep","item","length","concat","params","_this","map","brokenRules","rule","text","message","index","_validationSummary","handler","_itemValidationHandler","_ref","isValid","itemsChanged","itemIndex","_loop","foundRule","splice","push","_initMarkup","addClass","_optionChanged","args","name","_itemClass","VALIDATION_SUMMARY_CLASS","_itemDataKey","_postprocessRenderItem","itemElement","itemData","focus","_dispose","_default","module","_uiGrid_core","modules","foreachNodes","nodes","callBack","ignoreHasChildren","i","hasChildren","children","_renderer","_themes","_type","_array","_position","_promise","_bindable_template","_errors","_fx","_constants","ToolbarBase","compactMode","ctor","element","options","_userOptions","log","NAME","_getSynchronizableOptionsForCreateComponent","filter","_initTemplates","template","BindableTemplate","$container","data","rawModel","isPlainObject","wrapInner","html","widget","stylingMode","type","String","_getTemplate","render","container","model","parent","_templateManager","addDefaultTemplates","menuItem","renderAs","grouped","useFlatButtons","useDefaultButtons","multiline","_defaultOptionsRules","device","isMaterial","_itemContainer","_$toolbarItemsContainer","find","join","_buttonClass","_dimensionChanged","_arrangeItems","_applyCompactMode","_renderToolbar","_renderSections","setAria","_waitParentAnimationFinished","resolve","runCheck","clearTimeout","_waitParentAnimationTimeout","setTimeout","readyToResolve","parents","isAnimating","check","_render","_renderItemsAsync","all","_checkWebFontForLabelsLoaded","then","_postProcessRenderItems","TOOLBAR_CLASS","toggleClass","appendTo","that","sectionClass","$section","$labels","promises","label","fontWeight","css","waitWebFont","elementWidth","width","_$centerSection","margin","beforeRect","getBoundingRect","_$beforeSection","get","afterRect","_$afterSection","_alignCenterSection","$label","eq","labelOffset","position","left","widthBeforeSection","hasClass","widthAfterSection","elemsAtSectionWidth","not","outerWidth","freeSpace","sectionMaxWidth","Math","max","_alignSection","labelPaddings","isRTL","leftRect","rightRect","centerRect","right","marginLeft","marginRight","maxWidth","labels","toArray","_getCurrentLabelsPaddings","currentWidth","_getCurrentLabelsWidth","difference","abs","reverse","_alignSectionLabels","expanding","getRealLabelWidth","currentLabelWidth","ceil","labelMaxWidth","possibleLabelWidth","removeClass","_getSummaryItemsWidth","itemElements","forEach","padding","_renderItem","itemContainer","$after","location","itemHasText","cssClass","_renderGroupedItems","groupIndex","groupItems","append","_renderItems","_getToolbarItems","_renderContentImpl","_renderedItemsCount","slice","_renderEmptyMessage","noop","_clean","empty","_visibilityChanged","visible","_isVisible","height","_getIndexByItem","inArray","_itemOptionChanged","property","value","apply","arguments","_invalidate","_data","_class","_button","abstract","toolbar","_toolbar","_renderMenuButton","_renderWidget","_widgetOptions","itemClickAction","_createActionByOption","itemTemplate","_getMenuItemTemplate","onItemClick","e","_toggleMenu","_getTemplateByOption","$menu","_menuContainer","_menu","_createComponent","_menuWidgetClass","renderMenuItems","_hasVisibleMenuItems","menuItems","result","optionGetter","compileGetter","overflowGetter","itemVisible","functionsAsIs","itemOverflow","_getMenuItems","_updateMenuVisibility","buttonOptions","_menuButtonOptions","_renderMenuButtonContainer","_$button","_$menuButtonContainer","onClick","_menuButtonClickHandler","_menuShown","$afterSection","toggleMenuVisibility","animate","getMenuWidget","widgetOption","_ui","_uiTree_view","NODE_CONTAINER_CLASS","TreeViewSearch","_addWidgetPrefix","className","_showCheckboxes","_isRecursiveSelection","_removeSelection","_initDataAdapter","_updateSearch","_repaintContainer","repaint","_updateDataAdapter","_setOptionWithoutOptionChange","_getDataAdapterOptions","searchValue","searchMode","searchExpr","_searchEditor","editorOptions","_getSearchEditorOptions","rootNodes","first","_dataAdapter","getRootNodes","_fireContentReadyAction","isSearchMode","_scrollableContainer","content","_addWidgetClass","_widgetClass","_removeSearchBox","_dom_component","_validation_summary","_validator","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","ValidationGroup","_DOMComponent","subClass","superClass","prototype","create","constructor","_proto","call","validatorContainer","getInstance","summaryContainer","validate","validateGroup","reset","resetGroup","removeGroup","_useTemplates","_guid","_popover","Tooltip","toolbarItems","showCloseButton","showTitle","title","titleTemplate","onTitleRendered","bottomTemplate","propagateOutsideClick","$wrapper","_renderContent","_contentId","$overlayContent","attr","id","role","_toggleAriaDescription","showing","$target","isWindow","_editor","_window","TrackBar","min","_renderWrapper","_renderContainer","_renderRange","_renderValue","_setRangeStyles","_rangeStylesConfig","_$wrapper","_$bar","_$range","val","_currentRatio","ratio","_needPreventAnimation","valuemin","valuemax","valuenow","stop","hasWindow","duration","to","_dom_adapter","_ready_callbacks","_pointer","_overlay","window","getWindow","ready","add","toastTypes","TOAST_STACK","visibleToastInstance","POSITION_ALIASES","top","my","at","of","offset","bottom","center","subscribeGlobal","getDocument","down","_proxiedDocumentDownHandler","Toast","displayTime","animation","show","from","hide","shading","hideTopOverlayHandler","closeOnSwipe","closeOnClick","resizeEnabled","platform","closeOnOutsideClick","_device","isPhone","deviceType","isAndroid","_window$visualViewpor","visualViewport","_device2","_window$visualViewpor2","minWidth","_posStringToObject","_message","TOAST_CLASS_PREFIX","$content","toLowerCase","prepend","TOAST_CLASS","_toggleCloseEvents","_renderScrollTerminator","event","dxEvent","isString","verticalPosition","split","horizontalPosition","_show","_hideTimeout","done","_hide","_overlayStack","_zIndexInitValue","previousValue","_uiTree_list","_array_utils","_array_store","_query","_uiGrid_core2","_deferred","queryByOptions","isFullBranchFilterMode","DataSourceAdapterTreeList","_createKeyGetter","keyExpr","getKeyExpr","_createKeySetter","isFunction","compileSetter","_createParentIdGetter","createParentIdSetter","parentIdExpr","_createItemsGetter","_createHasItemsGetter","hasItemsExpr","_createHasItemsSetter","_updateIndexByKeyObject","_indexByKey","key","_calculateHasItems","node","hasItems","parentIds","storeLoadOptions","isFullBranch","_hasItemsGetter","_isChildrenLoaded","remoteOperations","filtering","loadOptions","_fillVisibleItemsByNodes","isRowExpanded","_convertItemToNode","rootValue","nodeByKey","_keyGetter","parentId","_parentIdGetter","parentNode","isDefined","_createNodesByItems","visibleItems","visibleByKey","_nodeByKey","rootNode","level","_convertDataToPlainStructure","_itemsGetter","isConverted","createObjectWithChanges","_keySetter","_parentIdSetter","childItems","itemsExpr","_createIdFilter","field","keys","parentIdFilters","combineFilters","_customizeRemoteOperations","operationTypes","paging","expandVisibleNodes","sorting","_lastLoadOptions","isCustomLoading","_isReload","reload","cachedStoreData","collapseVisibleNodes","_getParentIdsToLoad","parentIdsToLoad","getNodeByKey","_handleDataLoading","expandedRowKeys","cachedPagingData","mergeStoreLoadData","delay","_generateInfoToLoad","needChildren","keyMap","resultKeyMap","resultKeys","needToLoad","_loadParentsOrChildren","needLocalFiltering","_that$_generateInfoTo","d","Deferred","isRemoteFiltering","maxFilterLengthInRequest","concatLoadedData","loadedData","_cachedStoreData","cachedNodes","reduce","encodeURI","JSON","stringify","store","fullData","_dataSource","loadFromStore","fail","reject","_loadParents","_loadChildrenIfNeed","when","_updateHasItemsMap","_getKeyInfo","keyOf","_applyBatch","changes","_this2","baseChanges","change","_applyInsert","_applyRemove","_setHasItems","hasItemsSetter","_hasItemsSetter","parentKeyOf","indexOf","getChildNodeKeys","_handleDataLoaded","sort","_fillNodes","needToExpand","_processTreeStructure","_rootNode","Error","_isNodesInitializing","executeAction","root","resultData","_totalItemsCount","_handleDataLoadedCore","filterMode","needLoadParents","_handlePush","reshapeOnPush","_reshapeOnPush","isNeedReshape","init","dataSource","dataStructure","createAction","equalByValue","getRootNode","totalItemsCount","cache","isExpandedByKey","getIndexByKey","_changeRowExpandCore","indexExpandedNodeKey","changeRowExpand","load","getNodeLeafKeys","childNode","parentKey","childrenKeys","loadDescendants","childrenOnly","Array","isArray","_createStoreLoadOptions","childKeys","child","getChildKeys","promise","forEachNode","callback","extender","component","attachCssClasses","current","detachCssClasses","initialized","isDark","isGeneric","isPendingThemeLoaded","isWebFontLoaded","themeReady","resetTheme","setDefaultTimeout","waitForThemeLoad","_devices","_html_parser","_view_port","_themes_callback","context","$activeThemeLink","knownThemes","currentThemeName","pendingThemeName","themeClasses","viewPort","viewPortChanged","changeCallback","initDeferred","defaultTimeout","readThemeMarker","documentElement","getComputedStyle","fontFamily","replace","substr","remove","themeName","waitStartTime","timerId","intervalCleared","handleLoaded","clearInterval","themeReadyCallback","fire","Date","now","setInterval","isLoaded","isTimeout","anyThemePending","state","themeMarker","resolveFullThemeName","desiredThemeName","desiredThemeParts","knownThemeName","themeData","knownThemeParts","isActive","newContext","x","initContext","$allThemeLinks","parseHTML","link","fullThemeName","url","last","after","processMarkup","theme","currentThemeData","isAutoInit","_autoInit","loadCallback","has","_forceTimeout","originalViewPort","themeNameParts","getCssClasses","pixelRatio","devicePixelRatio","$tester","outerHeight","activateHairlines","isTheme","themeRegExp","RegExp","test","document","testElement","createElement","style","visibility","fontSize","innerHTML","body","appendChild","etalonFontWidth","offsetWidth","testedFontWidth","removeChild","clear","intervalId","timeoutId","autoInit","timeout","prevViewPort","changed","_string","ValidationMessage","integrationOptions","templatesRenderAsynchronously","closeOnTargetScroll","_checkParentVisibility","rtlEnabled","contentTemplate","_renderInnerHtml","mode","validationErrors","positionRequest","describedElement","boundary","h","v","updateMaxWidth","_updatePosition","_ensureMessageNotEmpty","_toggleModeClass","_updateContentId","_textMarkup","_getTextMarkup","shouldShowMessage","_toggleVisibilityClasses","contentId","_this$option","validationErrorMessage","err","_err$message","encodeHtml","_target$outerWidth","target","targetWidth","_this$option2","positionSide","getDefaultAlignment","verticalPositions","collision","_uiToolbar","_action_sheet","icon","toggle","_uiToolbar2","_drop_down_menu","_popover_contants","close","topAndBottomOffset","POPOVER_BOUNDARY_OFFSET","deferRendering","popupMaxHeight","getDocumentElement","clientHeight","menuWidget","onOptionChanged","popupPosition","isMenuVisible","_toggleMenuVisibility","_uiList","ToolbarMenu","ListBase","_activeStateUnit","_getSections","_itemElements","_itemSelector","sectionName","_updateSections","$sections","_getItemTemplateName","isAction","menuItemTemplate","_itemClickHandler","config","closest","_click","_element","_check_box","_index","_double_click","_ui2","_load_indicator","_ui3","NODE_CLASS","NODE_LOAD_INDICATOR_CLASS","OPENED_NODE_CONTAINER_CLASS","IS_LEAF","ITEM_CLASS","ITEM_WITH_CHECKBOX_CLASS","ITEM_WITHOUT_CHECKBOX_CLASS","ITEM_DATA_KEY","TOGGLE_ITEM_VISIBILITY_CLASS","LOAD_INDICATOR_CLASS","LOAD_INDICATOR_WRAPPER_CLASS","TOGGLE_ITEM_VISIBILITY_OPENED_CLASS","SELECT_ALL_ITEM_CLASS","_supportedKeys","click","$itemElement","currentTarget","_getEventNameByOption","addNamespace","_expandEventHandler","select","preventDefault","$focusedElement","checkboxInstance","_getCheckBoxInstance","currentState","_updateItemSelection","toggleExpandedNestedItems","$rootElement","rootItem","_getItemData","_toggleExpandedNestedItems","enter","space","asterisk","minus","len","getNodeByItem","_toggleExpandedState","_getNodeElement","_encodeString","internalFields","$nodeByKey","$node","querySelector","defaultOptions","animationEnabled","expandAllEnabled","selectNodesRecursive","expandNodesRecursive","showCheckBoxesMode","selectAllText","format","onItemSelectionChanged","onItemExpanded","onItemCollapsed","scrollDirection","virtualModeEnabled","selectionMode","expandEvent","selectByClick","createChildren","onSelectAllValueChanged","useDeferUpdateForTemplates","_initSelectedItems","_syncSelectionOptions","asyncNoop","_fireSelectionChanged","selectionChangePromise","_selectionChangePromise","excludeValidators","_createSelectAllValueChangedAction","_selectAllValueChangedAction","_fireSelectAllValueChanged","_checkBoxModeChange","selectAllExists","_$selectAllItem","_renderSelectAllItem","getFullData","_hasChildren","toggleSelection","dxCheckBox","_filter","_initAccessors","_initExpandEvent","setOption","_initDataSource","_useCustomChildrenLoader","_loadChildrenByCustomLoader","newItems","_isVirtualMode","_initVirtualMode","custom","internal","_isDataStructurePlain","invocationResult","fromPromise","_combineFilter","_dataSourceLoadErrorHandler","_initStoreChangeHandlers","_dataSourceChangedHandler","_initialized","_removeTreeViewLoadIndicator","_treeViewLoadIndicator","_createTreeViewLoadIndicator","_dataSourceLoadingChangedHandler","isLoading","resultFilter","itemsContainer","newItem","addItem","isFiltered","_updateLevel","removedKey","_markChildrenItemsToRemove","_removeItems","removeItem","_this3","_this4","counter","_getContainerByParentKey","getChildrenNodes","_getOldContainer","_renderNodeContainer","_isRootLevel","_renderScrollableContainer","_getAccessors","accessors","multipleSelection","_isSingleSelection","recursiveSelection","recursiveExpansion","selectionRequired","dataType","$nodeContainer","_selectAllEnabled","getDataSource","skipContentReadyAction","update","direction","useKeyboard","$parent","_expandedGetter","_createDOMElement","prependTo","_displayGetter","expanded","_getLevel","parseInt","nodeIndex","nodeData","showCheckBox","_renderCheckBox","selected","_toggleSelectedClass","_renderChildren","_setAriaSelected","_this5","_renderToggleItemVisibilityIcon","_loadSublevel","childNodes","_renderSublevel","_getActualNode","_addLeafClass","cachedNode","_this6","deferred","childrenNodes","_getChildNodes","_loadNestedItems","getNodesByItems","$nestedNodeContainer","childNodesByChildrenKeys","firstChild","_updateParentsState","_normalizeIconState","_executeItemRenderAction","_getNode","_getItemRenderAction","getPublicNode","expandedEventName","$itemsContainer","itemSelector","identifier","isPrimitive","isElementNode","_getNodeByElement","_decodeString","disabled","_createLoadIndicator","toggleExpansion","_updateExpandedItemsUI","$icon","_renderToggleItemVisibilityIconClick","_this7","eventName","isHiddenNode","is","nodeContainerExists","completionCallback","_animateNodeContainer","_loadNestedItemsWithUpdate","_this8","actualNodeData","_this9","publicNode","_areNodesExists","_appendItems","keyOfRootItem","nodeHeight","maxHeight","complete","_fireExpandedStateUpdatedEvent","isExpanded","optionName","_itemDXEventHandler","_itemEventHandler","hasNewItems","$loadIndicator","_emptyMessageContainer","_contentAlreadyRendered","isAllSelected","onValueChanged","_onSelectAllCheckboxValueChanged","before","_toggleSelectAll","toggleSelectAll","_updateItemsUI","$checkbox","_changeCheckboxValue","_disabledGetter","_toggleNodeDisabledState","$item","toggleNodeDisabledState","_isLastSelectedBranch","selectedNodesKeys","deep","keyIndex","_isLastRequired","isSingleMode","getSelectedNodeKeys","_this10","selectedKeys","_fireItemSelectionChanged","needFireSelectAllChanged","initiator","_findItemElementByItem","_this11","getData","nodeSelection","selectAllCheckbox","$parentNode","parentValue","_itemEventHandlerImpl","action","actionArgs","_extendActionArgs","_itemContextMenuHandler","_createEventHandler","_itemHoldHandler","_attachClickEvent","clickSelector","pointerDownSelector","pointerDownEvent","$itemContainer","_itemPointerDownHandler","isDefaultPrevented","_updateSelectionToFirstItem","$items","startIndex","_updateSelectionToLastItem","_focusInHandler","_this12","_updateFocusState","_setFocusedItemTimeout","_setFocusedItem","$activeItem","_getActiveItem","getPublicElement","_findNonDisabledNodes","$nodes","_moveFocus","FOCUS_UP","FOCUS_DOWN","FOCUS_FIRST","FOCUS_LAST","FOCUS_LEFT","FOCUS_RIGHT","_nodeElements","$prevItem","_prevItem","prevItemElement","_getNodeItemElement","scrollToElement","shiftKey","$nextItem","_nextItem","nextItemElement","$firstItem","$lastItem","_expandFocusedContainer","_collapseFocusedContainer","$focusedNode","_getClosestNonDisabledNode","nodeElement","collapsedNode","decodeURI","updateDimensions","_this13","resolveWith","selectItem","unselectItem","expandItem","collapseItem","getNodes","getTreeNodes","getSelectedNodes","_this14","getSelectedNodesKeys","selectAll","unselectAll","expandAll","dataAdapter","collapseAll","getExpandedNodesKeys","scrollToItem","keyOrItemOrElement","_this15","nodeKeysToExpand","scrollCallback","_expandNodes","always","scrollToElementTopLeft","keysToExpand","_this16","resultCallback","callbacksByNodes","editor","validationRequestsCallbacks","validationRequest","getValue","getCurrentValidationError","bypass","applyValidationResults","validationStatus","status","callModuleItemsMethod","registerModulesOrder","TreeList","showRowLines","showColumnLines","headerFilter","editing","useIcons","processModules","handled","getView","deferRender","isReady","getController","beginUpdate","endUpdate","_controllers","_views","registerModule","ColumnsController","controllers","columns","_getFirstItems","dataSourceAdapter","getFirstDataColumnIndex","visibleColumns","getVisibleColumns","visibleColumnsLength","firstDataColumnIndex","command","DataController","_uiTree_list2","_getDataSourceAdapter","_getNodeLevel","_generateDataItem","rowType","_loadOnOptionChange","_isItemEquals","item1","item2","publicMethods","cancel","expandRow","collapseRow","optionChanged","_columnsController","_items","_refreshDataSource","expandNodesOnFiltering","autoExpandAll","onNodesInitialized","enabled","RowsView","views","rowsView","createIcon","hasIcon","$iconElement","_renderIconContainer","$iconContainer","watch","row","_renderIcons","_renderCellCommandContent","_processTemplate","renderingTemplate","column","createCellContent","_updateCell","$cell","_rowClick","dataController","_dataController","$targetElement","isExpandIcon","rowIndex","_createRow","$rowElement","GridView","gridView","_getWidgetAriaLabel","_getTableRoleName","extenders","resizing","_toggleBestFitMode","isBestFit","_rowsView","getTableElement","addWidgetPrefix","origApplyState","stateStoring","applyState","hasOwnProperty","getUserState","_processItems","_processDataItem","EditingController","_generateNewItem","_needInsertItem","changeType","_isEditColumnVisible","editingOptions","allowAdding","_isDefaultButtonVisible","button","_getVisibleEditRowIndex","removed","isNewRow","_getEditingButtons","buttons","unshift","_getButtonConfig","_beforeSaveEditData","addRowByRowIndex","getVisibleRows","addRow","_initNewRow","parentIdSetter","_allowEditAction","_needToCloseEditableCell","isEditing","getButtonLocalizationNames","names","originalRowClick","originalRowDblClick","_rowDblClick","validateClick","originalClickHandler","needToCallOriginalClickHandler","RowsViewExtender","editingController","_editingController","isEditRow","texts","addRowToNode","refresh","headerPanel","EditingControllerExtender","processItems","processDataItem","editorFactory","oldDefaultOptions","originalDataControllerExtender","originalDataSourceAdapterExtender","virtualScrollController","_virtualScrollController","viewportItemIndex","getViewportItemIndex","setViewportItemIndex","scrolling","originalHandleDataChanged","_handleDataChanged","nodeExists","array","currentKey","selection","recursive","selectionController","isRecursiveSelection","updateSelectionState","selectedItemKeys","_selectionStateByKey","_getSelectionConfig","_arguments","plainItems","getCachedStoreData","isItemSelected","isRowSelected","isSelectableItem","getItemData","renderSelectCheckBoxContainer","_renderSelectCheckBox","isSelected","_attachCheckBoxClickEvent","_updateSelectColumn","_getSelectAllNodeKeys","isSelectAll","visibleKeys","hasIndeterminateState","selectedVisibleKeys","focusedItemIndex","selectRows","deselectAll","deselectRows","preserve","isDeselect","selectedRowKeys","normalizedArgs","_normalizeSelectionArgs","_isSelectionNormalizing","selectedRowsData","changeItemSelection","keyboardKeys","shift","getKeyByRowIndex","_updateParentSelectionState","some","_updateChildrenSelectionState","_updateSelectionStateCore","_getSelectedParentKeys","useCash","selectedParentNode","_getSelectedChildKeys","keysToIgnore","ignoreKeyIndex","_normalizeParentKeys","parentNodeKeys","_normalizeChildrenKeys","_normalizeSelectedRowKeysCore","isSelect","currentSelectedRowKeys","currentDeselectedRowKeys","_updateSelectedItems","_isModeLeavesOnly","_removeDuplicatedKeys","processedKeys","_getAllChildKeys","_getAllSelectedRowKeys","parentKeys","_getParentSelectedRowKeys","_getLeafSelectedRowKeys","isRecursive","removedItemKeys","getSelectedRowKeys","getSelectedRowsData","columnHeadersView","renderSelectAll","_renderSelectAllCheckBox","_isSortableElement","keyboardNavigation","_leftRightKeysHandler","eventArgs","getVisibleRowIndex","ctrl","directionCode","_getDirectionCodeByKey","keyName","_isFocusedRowInside","focusedRowKey","getRowIndexByKey","focusedRow","getParentKey","parentData","expandAscendants","getPageIndexByKey","findIndex","pageIndex","floor","pageSize","tooltip","removeTooltip","$tooltip","removeTooltipElement","_tooltip","createTooltip","_inflector","_scroll_view","CONFIGS","horizontal","itemMainRatio","itemCrossRatio","baseItemMainDimension","baseItemCrossDimension","mainDimension","crossDimension","mainPosition","crossPosition","vertical","TileView","hoverStateEnabled","showScrollbar","baseItemWidth","baseItemHeight","itemMargin","activeStateEnabled","indicateLoading","real","isSimulator","_$container","_initScrollView","scrollView","_scrollView","startLoading","finishLoading","_hideLoadingIfLoadIndicationOff","scrollByContent","_renderGeometry","_cellsPerDimension","_updateScrollView","_indicateLoadingIfAlreadyStarted","_isDataSourceLoading","_config","maxItemCrossRatio","round","crossDimensionValue","_cells","_renderContentSize","actualContentSize","elementSize","_itemsPositions","currentItem","itemPosition","_getItemPosition","_occupyCells","_arrangeItem","main","cross","_itemFit","itemRatioMain","itemRatioCross","itemPositionMain","itemPositionCross","baseItemCross","baseItemMain","cssProps","display","offsetCorrection","itemPositionX","offsetPosition","itemWidth","widthRatio","subItemMargins","FOCUS_PAGE_UP","FOCUS_PAGE_DOWN","horizontalDirection","cells","targetCol","targetRow","colCount","rowCount","getCell","col","newTargetIndex","$newTarget","_scrollToItem","outerMainProp","captionize","itemDimension","itemTail","scrollPosition","clientWidth","scrollTo","scrollOffset","_events_strategy","_number","_inheritsLoose","STATUS","BaseRuleValidator","defaultMessage","getFormatter","defaultFormattedMessage","_isValueEmpty","rulesValidators","required","valueArray","every","itemValue","_validate","RequiredRuleValidator","_BaseRuleValidator","trim","NumericRuleValidator","_BaseRuleValidator2","ignoreEmptyValue","useCultureSettings","isNaN","parse","isNumeric","RangeRuleValidator","_BaseRuleValidator3","validNumber","numeric","validValue","number","parseFloat","valueOf","isDate","StringLengthRuleValidator","_BaseRuleValidator4","_value","range","CustomRuleValidator","_BaseRuleValidator5","dataGetter","extraParams","validationCallback","AsyncRuleValidator","_CustomRuleValidator","_proto7","reevaluate","callbackResult","isPromise","_getWrappedPromise","res","isObject","CompareRuleValidator","_BaseRuleValidator6","comparisonTarget","otherValue","comparisonType","PatternRuleValidator","_BaseRuleValidator7","pattern","EmailRuleValidator","_BaseRuleValidator8","stringLength","async","compare","email","GroupConfig","_pendingValidators","_onValidatorStatusChanged","_resetValidationInfo","_eventsStrategy","EventsStrategy","_unsubscribeFromAllChangeEvents","validatorResult","_addPendingValidator","_subscribeToChangeEvents","_raiseValidatedEvent","_updateValidationInfo","_validationInfo","_unsubscribeFromChangeEvents","_removePendingValidator","_orderBrokenRules","orderedRules","foundRules","_updateBrokenRules","rules","_resolveIfComplete","fireEvent","_synchronizeValidationInfo","removeRegisteredValidator","registerValidator","eventHandler","ValidationEngine","groups","$dxGroup","dxValidationGroup","initGroups","_setDefaultMessage","info","_addBrokenRule","brokenRule","_rules$","validationRules","pendingRules","asyncRuleItems","ruleValidationResult","ruleValidator","_validateAsyncRules","_synchronizeGroupValidationInfo","_result$brokenRules","asyncResults","validateResult","asyncResult","ruleResult","_getPatchedRuleResult","_updateRuleConfig","values","_getAsyncRulesResult","_ref2","isBoolean","_ref3","registerValidatorInGroup","_shouldRemoveGroup","validatorsInGroup","isDefaultGroup","isValidationGroupInstance","initValidationOptions","initedOptions","prop","synchronizeValidationOptions","_ref4","newStatus","validationError","_uiToolbarStrategy","_uiToolbarStrategy2","_child_default_template","STRATEGIES","actionSheet","dropDownMenu","Toolbar","submenuType","menuContainer","dimension","_menuStrategy","actionSheetItem","ChildDefaultTemplate","_renderMenu","_hideOverflowItems","locateInMenu","showText","_getItemsWidth","overflowItems","itemsWidth","_isMenuItem","$hiddenItems","_restoreItems","$itemMarkup","merge","_renderMenuStrategy","strategyName","_requireDropDownStrategy","strategy","_isToolbarItem","_changeMenuOption","_element_data","_callbacks","_default_adapter","Validator","_initOptions","focused","_initAdapter","skipValidation","_findGroup","_getEditor","dxStandardEditor","adapter","callbacks","_toggleRTLDirection","isRtl","_this$option$editor$o","_this$option$editor","_toggleAccessibilityAttributes","isRequired","isInitialized","_resetValidationRules","_getValidationRules","_validationRules","currentError","currentResult","editorSpecific","toString","_applyValidationResult","_updateValidationResult","validatedAction"],"mappings":"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","file":"static/js/main~674e2897.3da600d2.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/validation_summary.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nvar ITEM_CLASS = VALIDATION_SUMMARY_CLASS + \"-item\";\r\nvar ITEM_DATA_KEY = VALIDATION_SUMMARY_CLASS + \"-item-data\";\r\nvar ValidationSummary = _uiCollection_widget.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n focusStateEnabled: false,\r\n noDataText: null\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._optionsByReference, {\r\n validationGroup: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initGroupRegistration()\r\n },\r\n _initGroupRegistration: function() {\r\n var $element = this.$element();\r\n var group = this.option(\"validationGroup\") || _validation_engine.default.findGroup($element, this._modelByElement($element));\r\n var groupConfig = _validation_engine.default.addGroup(group);\r\n this._unsubscribeGroup();\r\n this._groupWasInit = true;\r\n this._validationGroup = group;\r\n this.groupSubscription = this._groupValidationHandler.bind(this);\r\n groupConfig.on(\"validated\", this.groupSubscription)\r\n },\r\n _unsubscribeGroup: function() {\r\n var groupConfig = _validation_engine.default.getGroupConfig(this._validationGroup);\r\n groupConfig && groupConfig.off(\"validated\", this.groupSubscription)\r\n },\r\n _getOrderedItems: function(validators, items) {\r\n var orderedItems = [];\r\n (0, _iterator.each)(validators, function(_, validator) {\r\n var foundItems = (0, _common.grep)(items, function(item) {\r\n if (item.validator === validator) {\r\n return true\r\n }\r\n });\r\n if (foundItems.length) {\r\n orderedItems = orderedItems.concat(foundItems)\r\n }\r\n });\r\n return orderedItems\r\n },\r\n _groupValidationHandler: function(params) {\r\n var _this = this;\r\n var items = this._getOrderedItems(params.validators, (0, _iterator.map)(params.brokenRules, function(rule) {\r\n return {\r\n text: rule.message,\r\n validator: rule.validator,\r\n index: rule.index\r\n }\r\n }));\r\n this.validators = params.validators;\r\n (0, _iterator.each)(this.validators, function(_, validator) {\r\n if (validator._validationSummary !== _this) {\r\n var handler = _this._itemValidationHandler.bind(_this);\r\n var disposingHandler = function() {\r\n validator.off(\"validated\", handler);\r\n validator._validationSummary = null;\r\n handler = null\r\n };\r\n validator.on(\"validated\", handler);\r\n validator.on(\"disposing\", disposingHandler);\r\n validator._validationSummary = _this\r\n }\r\n });\r\n this.option(\"items\", items)\r\n },\r\n _itemValidationHandler: function(_ref) {\r\n var isValid = _ref.isValid,\r\n validator = _ref.validator,\r\n brokenRules = _ref.brokenRules;\r\n var items = this.option(\"items\");\r\n var itemsChanged = false;\r\n var itemIndex = 0;\r\n var _loop = function() {\r\n var item = items[itemIndex];\r\n if (item.validator === validator) {\r\n var foundRule = (0, _common.grep)(brokenRules || [], function(rule) {\r\n return rule.index === item.index\r\n })[0];\r\n if (isValid || !foundRule) {\r\n items.splice(itemIndex, 1);\r\n itemsChanged = true;\r\n return \"continue\"\r\n }\r\n if (foundRule.message !== item.text) {\r\n item.text = foundRule.message;\r\n itemsChanged = true\r\n }\r\n }\r\n itemIndex++\r\n };\r\n while (itemIndex < items.length) {\r\n var _ret = _loop();\r\n if (\"continue\" === _ret) {\r\n continue\r\n }\r\n }(0, _iterator.each)(brokenRules, function(_, rule) {\r\n var foundItem = (0, _common.grep)(items, function(item) {\r\n return item.validator === validator && item.index === rule.index\r\n })[0];\r\n if (!foundItem) {\r\n items.push({\r\n text: rule.message,\r\n validator: validator,\r\n index: rule.index\r\n });\r\n itemsChanged = true\r\n }\r\n });\r\n if (itemsChanged) {\r\n items = this._getOrderedItems(this.validators, items);\r\n this.option(\"items\", items)\r\n }\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(VALIDATION_SUMMARY_CLASS);\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"validationGroup\":\r\n this._initGroupRegistration();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _postprocessRenderItem: function(params) {\r\n _events_engine.default.on(params.itemElement, \"click\", function() {\r\n params.itemData.validator && params.itemData.validator.focus && params.itemData.validator.focus()\r\n })\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n this._unsubscribeGroup()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxValidationSummary\", ValidationSummary);\r\nvar _default = ValidationSummary;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.core.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.modules\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n modules: [],\r\n foreachNodes: function(nodes, callBack, ignoreHasChildren) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n if (false !== callBack(nodes[i]) && (ignoreHasChildren || nodes[i].hasChildren) && nodes[i].children.length) {\r\n this.foreachNodes(nodes[i].children, callBack, ignoreHasChildren)\r\n }\r\n }\r\n }\r\n});\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.base.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _themes = require(\"../themes\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"../collection/ui.collection_widget.async\"));\r\nvar _promise = _interopRequireDefault(require(\"../../core/polyfills/promise\"));\r\nvar _bindable_template = require(\"../../core/templates/bindable_template\");\r\nvar _errors = _interopRequireDefault(require(\"../../core/errors\"));\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _constants = require(\"./constants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TOOLBAR_BEFORE_CLASS = \"dx-toolbar-before\";\r\nvar TOOLBAR_CENTER_CLASS = \"dx-toolbar-center\";\r\nvar TOOLBAR_AFTER_CLASS = \"dx-toolbar-after\";\r\nvar TOOLBAR_MINI_CLASS = \"dx-toolbar-mini\";\r\nvar TOOLBAR_ITEM_CLASS = \"dx-toolbar-item\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar TOOLBAR_BUTTON_CLASS = \"dx-toolbar-button\";\r\nvar TOOLBAR_ITEMS_CONTAINER_CLASS = \"dx-toolbar-items-container\";\r\nvar TOOLBAR_GROUP_CLASS = \"dx-toolbar-group\";\r\nvar TOOLBAR_COMPACT_CLASS = \"dx-toolbar-compact\";\r\nvar TOOLBAR_LABEL_SELECTOR = \".\" + TOOLBAR_LABEL_CLASS;\r\nvar TOOLBAR_MULTILINE_CLASS = \"dx-toolbar-multiline\";\r\nvar TEXT_BUTTON_MODE = \"text\";\r\nvar DEFAULT_BUTTON_TYPE = \"default\";\r\nvar TOOLBAR_ITEM_DATA_KEY = \"dxToolbarItemDataKey\";\r\nvar ToolbarBase = _uiCollection_widget.default.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.default.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(function(item) {\r\n return \"disabled\" !== item\r\n })\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n var template = new _bindable_template.BindableTemplate(function($container, data, rawModel) {\r\n if ((0, _type.isPlainObject)(data)) {\r\n if (data.text) {\r\n $container.text(data.text).wrapInner(\"
\")\r\n }\r\n if (data.html) {\r\n $container.html(data.html)\r\n }\r\n if (\"dxButton\" === data.widget) {\r\n if (this.option(\"useFlatButtons\")) {\r\n data.options = data.options || {};\r\n data.options.stylingMode = data.options.stylingMode || TEXT_BUTTON_MODE\r\n }\r\n if (this.option(\"useDefaultButtons\")) {\r\n data.options = data.options || {};\r\n data.options.type = data.options.type || DEFAULT_BUTTON_TYPE\r\n }\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: rawModel,\r\n parent: this\r\n })\r\n }.bind(this), [\"text\", \"html\", \"widget\", \"options\"], this.option(\"integrationOptions.watchMethod\"));\r\n this._templateManager.addDefaultTemplates({\r\n item: template,\r\n menuItem: template\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.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 (0, _themes.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 _this = this;\r\n var $element = this.$element();\r\n var timeout = 15;\r\n return new _promise.default(function(resolve) {\r\n var check = function() {\r\n var readyToResolve = true;\r\n $element.parents().each(function(_, parent) {\r\n if (_fx.default.isAnimating((0, _renderer.default)(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 };\r\n var runCheck = function runCheck() {\r\n clearTimeout(_this._waitParentAnimationTimeout);\r\n _this._waitParentAnimationTimeout = setTimeout(function() {\r\n return check() || runCheck()\r\n }, timeout)\r\n };\r\n runCheck()\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderItemsAsync();\r\n if ((0, _themes.isMaterial)()) {\r\n _promise.default.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(_constants.TOOLBAR_CLASS).toggleClass(TOOLBAR_MULTILINE_CLASS, this.option(\"multiline\"));\r\n this._$toolbarItemsContainer = (0, _renderer.default)(\"
\").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 (0, _iterator.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 = (0, _renderer.default)(\"
\").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(function(_, label) {\r\n var text = (0, _renderer.default)(label).text();\r\n var fontWeight = (0, _renderer.default)(label).css(\"fontWeight\");\r\n promises.push((0, _themes.waitWebFont)(text, fontWeight))\r\n });\r\n return _promise.default.all(promises)\r\n },\r\n _arrangeItems: function(elementWidth) {\r\n elementWidth = elementWidth || this.$element().width();\r\n this._$centerSection.css({\r\n margin: \"0 auto\",\r\n \"float\": \"none\"\r\n });\r\n var beforeRect = (0, _position.getBoundingRect)(this._$beforeSection.get(0));\r\n var afterRect = (0, _position.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 += (0, _renderer.default)(this).outerWidth()\r\n });\r\n var freeSpace = elementWidth - elemsAtSectionWidth;\r\n var sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0);\r\n if ($section.hasClass(TOOLBAR_BEFORE_CLASS)) {\r\n this._alignSection(this._$beforeSection, sectionMaxWidth)\r\n } else {\r\n var labelPaddings = $label.outerWidth() - $label.width();\r\n $label.css(\"maxWidth\", sectionMaxWidth - labelPaddings)\r\n }\r\n },\r\n _alignCenterSection: function(beforeRect, afterRect, elementWidth) {\r\n this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width);\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var leftRect = isRTL ? afterRect : beforeRect;\r\n var rightRect = isRTL ? beforeRect : afterRect;\r\n var centerRect = (0, _position.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 (0, _position.getBoundingRect)(label).width\r\n };\r\n for (var i = 0; i < labels.length; i++) {\r\n var $label = (0, _renderer.default)(labels[i]);\r\n var currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i]));\r\n var labelMaxWidth = void 0;\r\n if (expanding) {\r\n $label.css(\"maxWidth\", \"inherit\")\r\n }\r\n var possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth);\r\n if (possibleLabelWidth < difference) {\r\n labelMaxWidth = expanding ? possibleLabelWidth : 0;\r\n difference -= possibleLabelWidth\r\n } else {\r\n labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference;\r\n $label.css(\"maxWidth\", labelMaxWidth);\r\n break\r\n }\r\n $label.css(\"maxWidth\", labelMaxWidth)\r\n }\r\n },\r\n _applyCompactMode: function() {\r\n var $element = this.$element();\r\n $element.removeClass(TOOLBAR_COMPACT_CLASS);\r\n if (this.option(\"compactMode\") && this._getSummaryItemsWidth(this.itemElements(), true) > $element.width()) {\r\n $element.addClass(TOOLBAR_COMPACT_CLASS)\r\n }\r\n },\r\n _getCurrentLabelsWidth: function(labels) {\r\n var width = 0;\r\n labels.forEach(function(label, index) {\r\n width += (0, _renderer.default)(label).outerWidth()\r\n });\r\n return width\r\n },\r\n _getCurrentLabelsPaddings: function(labels) {\r\n var padding = 0;\r\n labels.forEach(function(label, index) {\r\n padding += (0, _renderer.default)(label).outerWidth() - (0, _renderer.default)(label).width()\r\n });\r\n return padding\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var location = item.location || \"center\";\r\n var container = itemContainer || this[\"_$\" + location + \"Section\"];\r\n var itemHasText = !!(item.text || item.html);\r\n var itemElement = this.callBase(index, item, container, $after);\r\n itemElement.toggleClass(this._buttonClass(), !itemHasText).toggleClass(TOOLBAR_LABEL_CLASS, itemHasText).addClass(item.cssClass);\r\n return itemElement\r\n },\r\n _renderGroupedItems: function() {\r\n var that = this;\r\n (0, _iterator.each)(this.option(\"items\"), function(groupIndex, group) {\r\n var groupItems = group.items;\r\n var $container = (0, _renderer.default)(\"
\").addClass(TOOLBAR_GROUP_CLASS);\r\n var location = group.location || \"center\";\r\n if (!groupItems || !groupItems.length) {\r\n return\r\n }(0, _iterator.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: _common.noop,\r\n _clean: function() {\r\n this._$toolbarItemsContainer.children().empty();\r\n this.$element().empty()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._arrangeItems()\r\n }\r\n },\r\n _isVisible: function() {\r\n return this.$element().width() > 0 && this.$element().height() > 0\r\n },\r\n _getIndexByItem: function(item) {\r\n return (0, _array.inArray)(item, this._getToolbarItems())\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n this.callBase.apply(this, [item, property, value]);\r\n this._arrangeItems()\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n switch (name) {\r\n case \"width\":\r\n this.callBase.apply(this, arguments);\r\n this._dimensionChanged();\r\n break;\r\n case \"multiline\":\r\n this.$element().toggleClass(TOOLBAR_MULTILINE_CLASS, args.value);\r\n break;\r\n case \"renderAs\":\r\n case \"useFlatButtons\":\r\n case \"useDefaultButtons\":\r\n this._invalidate();\r\n break;\r\n case \"compactMode\":\r\n this._applyCompactMode();\r\n break;\r\n case \"grouped\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._waitParentAnimationTimeout)\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbarBase\", ToolbarBase);\r\nvar _default = ToolbarBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/constants.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.TOOLBAR_CLASS = void 0;\r\nvar TOOLBAR_CLASS = \"dx-toolbar\";\r\nexports.TOOLBAR_CLASS = TOOLBAR_CLASS;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.strategy.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar abstract = _class.default.abstract;\r\nvar TOOLBAR_MENU_CONTAINER_CLASS = \"dx-toolbar-menu-container\";\r\nvar TOOLBAR_MENU_BUTTON_CLASS = \"dx-toolbar-menu-button\";\r\nvar ToolbarStrategy = _class.default.inherit({\r\n ctor: function(toolbar) {\r\n this._toolbar = toolbar\r\n },\r\n render: function() {\r\n this._renderMenuButton();\r\n this._renderWidget()\r\n },\r\n _widgetOptions: function() {\r\n var itemClickAction = this._toolbar._createActionByOption(\"onItemClick\");\r\n return {\r\n itemTemplate: this._getMenuItemTemplate.bind(this),\r\n onItemClick: function(e) {\r\n this._toggleMenu(false, true);\r\n itemClickAction(e)\r\n }.bind(this)\r\n }\r\n },\r\n _getMenuItemTemplate: function() {\r\n return this._toolbar._getTemplateByOption(\"menuItemTemplate\")\r\n },\r\n _renderWidget: function() {\r\n var $menu = (0, _renderer.default)(\"
\").appendTo(this._menuContainer());\r\n this._menu = this._toolbar._createComponent($menu, this._menuWidgetClass(), this._widgetOptions());\r\n this.renderMenuItems()\r\n },\r\n _menuContainer: abstract,\r\n _menuWidgetClass: abstract,\r\n _hasVisibleMenuItems: function(items) {\r\n var menuItems = items || this._toolbar.option(\"items\");\r\n var result = false;\r\n var optionGetter = (0, _data.compileGetter)(\"visible\");\r\n var overflowGetter = (0, _data.compileGetter)(\"locateInMenu\");\r\n (0, _iterator.each)(menuItems, function(index, item) {\r\n var itemVisible = optionGetter(item, {\r\n functionsAsIs: true\r\n });\r\n var itemOverflow = overflowGetter(item, {\r\n functionsAsIs: true\r\n });\r\n if (false !== itemVisible && (\"auto\" === itemOverflow || \"always\" === itemOverflow) || \"menu\" === item.location) {\r\n result = true\r\n }\r\n });\r\n return result\r\n },\r\n _getMenuItems: function() {\r\n return this._toolbar._getMenuItems()\r\n },\r\n _updateMenuVisibility: _common.noop,\r\n _renderMenuButton: function() {\r\n var buttonOptions = this._menuButtonOptions();\r\n this._renderMenuButtonContainer();\r\n this._$button = (0, _renderer.default)(\"
\").appendTo(this._$menuButtonContainer).addClass(TOOLBAR_MENU_BUTTON_CLASS);\r\n this._toolbar._createComponent(this._$button, _button.default, buttonOptions)\r\n },\r\n _menuButtonOptions: function() {\r\n return {\r\n onClick: this._menuButtonClickHandler.bind(this)\r\n }\r\n },\r\n _menuButtonClickHandler: function() {\r\n this._toggleMenu(!this._menuShown, true)\r\n },\r\n _renderMenuButtonContainer: function() {\r\n var $afterSection = this._toolbar._$afterSection;\r\n this._$menuButtonContainer = (0, _renderer.default)(\"
\").appendTo($afterSection).addClass(this._toolbar._buttonClass()).addClass(TOOLBAR_MENU_CONTAINER_CLASS)\r\n },\r\n renderMenuItems: function() {\r\n this._menu && this._menu.option(\"items\", this._getMenuItems())\r\n },\r\n toggleMenuVisibility: function(visible, animate) {\r\n this._menu && this._toggleMenu(visible, animate)\r\n },\r\n _toggleMenu: function(visible) {\r\n this._menuShown = visible\r\n },\r\n getMenuWidget: function() {\r\n return this._menu\r\n },\r\n widgetOption: function(name, value) {\r\n this._menu && this._menu.option(name, value)\r\n }\r\n});\r\nvar _default = ToolbarStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_view/ui.tree_view.search.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.search_box_mixin\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiTree_view = _interopRequireDefault(require(\"./ui.tree_view.base\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CONTAINER_CLASS = \"\".concat(WIDGET_CLASS, \"-node-container\");\r\nvar TreeViewSearch = _uiTree_view.default.inherit(_ui.default).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"\".concat(WIDGET_CLASS, \"-\").concat(className)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchValue\":\r\n if (this._showCheckboxes() && this._isRecursiveSelection()) {\r\n this._removeSelection()\r\n }\r\n this._initDataAdapter();\r\n this._updateSearch();\r\n this._repaintContainer();\r\n this.option(\"focusedElement\", null);\r\n break;\r\n case \"searchExpr\":\r\n this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n case \"searchMode\":\r\n this.option(\"expandNodesRecursive\") ? this._updateDataAdapter() : this._initDataAdapter();\r\n this.repaint();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _updateDataAdapter: function() {\r\n this._setOptionWithoutOptionChange(\"expandNodesRecursive\", false);\r\n this._initDataAdapter();\r\n this._setOptionWithoutOptionChange(\"expandNodesRecursive\", true)\r\n },\r\n _getDataAdapterOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n searchValue: this.option(\"searchValue\"),\r\n searchMode: this.option(\"searchMode\") || \"contains\",\r\n searchExpr: this.option(\"searchExpr\")\r\n })\r\n },\r\n _updateSearch: function() {\r\n if (this._searchEditor) {\r\n var editorOptions = this._getSearchEditorOptions();\r\n this._searchEditor.option(editorOptions)\r\n }\r\n },\r\n _repaintContainer: function() {\r\n var $container = this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n var rootNodes;\r\n if ($container.length) {\r\n $container.empty();\r\n rootNodes = this._dataAdapter.getRootNodes();\r\n this._renderEmptyMessage(rootNodes);\r\n this._renderItems($container, rootNodes);\r\n this._fireContentReadyAction()\r\n }\r\n },\r\n _itemContainer: function(isSearchMode) {\r\n if (this._scrollableContainer && isSearchMode) {\r\n return (0, _renderer.default)(this._scrollableContainer.content())\r\n }\r\n return this.callBase()\r\n },\r\n _addWidgetClass: function() {\r\n this.$element().addClass(this._widgetClass())\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._removeSearchBox()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTreeView\", TreeViewSearch);\r\nvar _default = TreeViewSearch;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/validation_group.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../core/dom_component\"));\r\nvar _validation_summary = _interopRequireDefault(require(\"./validation_summary\"));\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _validator = _interopRequireDefault(require(\"./validator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar VALIDATION_ENGINE_CLASS = \"dx-validationgroup\";\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nvar ValidationGroup = function(_DOMComponent) {\r\n _inheritsLoose(ValidationGroup, _DOMComponent);\r\n\r\n function ValidationGroup() {\r\n return _DOMComponent.apply(this, arguments) || this\r\n }\r\n var _proto = ValidationGroup.prototype;\r\n _proto._getDefaultOptions = function() {\r\n return _DOMComponent.prototype._getDefaultOptions.call(this)\r\n };\r\n _proto._init = function() {\r\n _DOMComponent.prototype._init.call(this);\r\n _validation_engine.default.addGroup(this)\r\n };\r\n _proto._initMarkup = function() {\r\n var $element = this.$element();\r\n $element.addClass(VALIDATION_ENGINE_CLASS);\r\n $element.find(\".\".concat(VALIDATOR_CLASS)).each(function(_, validatorContainer) {\r\n _validator.default.getInstance((0, _renderer.default)(validatorContainer))._initGroupRegistration()\r\n });\r\n $element.find(\".\".concat(VALIDATION_SUMMARY_CLASS)).each(function(_, summaryContainer) {\r\n _validation_summary.default.getInstance((0, _renderer.default)(summaryContainer))._initGroupRegistration()\r\n });\r\n _DOMComponent.prototype._initMarkup.call(this)\r\n };\r\n _proto.validate = function() {\r\n return _validation_engine.default.validateGroup(this)\r\n };\r\n _proto.reset = function() {\r\n return _validation_engine.default.resetGroup(this)\r\n };\r\n _proto._dispose = function() {\r\n _validation_engine.default.removeGroup(this);\r\n this.$element().removeClass(VALIDATION_ENGINE_CLASS);\r\n _DOMComponent.prototype._dispose.call(this)\r\n };\r\n _proto._useTemplates = function() {\r\n return false\r\n };\r\n return ValidationGroup\r\n}(_dom_component.default);\r\n(0, _component_registrator.default)(\"dxValidationGroup\", ValidationGroup);\r\nvar _default = ValidationGroup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tooltip/tooltip.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _guid = _interopRequireDefault(require(\"../../core/guid\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _popover = _interopRequireDefault(require(\"../popover\"));\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TOOLTIP_CLASS = \"dx-tooltip\";\r\nvar TOOLTIP_WRAPPER_CLASS = \"dx-tooltip-wrapper\";\r\nvar Tooltip = _popover.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n showTitle: false,\r\n title: null,\r\n titleTemplate: null,\r\n onTitleRendered: null,\r\n bottomTemplate: null,\r\n propagateOutsideClick: true\r\n })\r\n },\r\n _render: function() {\r\n this.$element().addClass(TOOLTIP_CLASS);\r\n this.$wrapper().addClass(TOOLTIP_WRAPPER_CLASS);\r\n this.callBase()\r\n },\r\n _renderContent: function() {\r\n this.callBase();\r\n this._contentId = \"dx-\" + new _guid.default;\r\n this.$overlayContent().attr({\r\n id: this._contentId,\r\n role: \"tooltip\"\r\n });\r\n this._toggleAriaDescription(true)\r\n },\r\n _toggleAriaDescription: function(showing) {\r\n var $target = (0, _renderer.default)(this.option(\"target\"));\r\n var label = showing ? this._contentId : void 0;\r\n if (!(0, _type.isWindow)($target.get(0))) {\r\n this.setAria(\"describedby\", label, $target)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTooltip\", Tooltip);\r\nvar _default = Tooltip;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/track_bar.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _editor = _interopRequireDefault(require(\"./editor/editor\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _fx = _interopRequireDefault(require(\"../animation/fx\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TRACKBAR_CLASS = \"dx-trackbar\";\r\nvar TRACKBAR_CONTAINER_CLASS = \"dx-trackbar-container\";\r\nvar TRACKBAR_RANGE_CLASS = \"dx-trackbar-range\";\r\nvar TRACKBAR_WRAPPER_CLASS = \"dx-trackbar-wrapper\";\r\nvar TrackBar = _editor.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n min: 0,\r\n max: 100,\r\n value: 0\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TRACKBAR_CLASS);\r\n this._renderWrapper();\r\n this._renderContainer();\r\n this._renderRange();\r\n this._renderValue();\r\n this._setRangeStyles();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._setRangeStyles(this._rangeStylesConfig())\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = (0, _renderer.default)(\"
\").addClass(TRACKBAR_WRAPPER_CLASS).appendTo(this.$element())\r\n },\r\n _renderContainer: function() {\r\n this._$bar = (0, _renderer.default)(\"
\").addClass(TRACKBAR_CONTAINER_CLASS).appendTo(this._$wrapper)\r\n },\r\n _renderRange: function() {\r\n this._$range = (0, _renderer.default)(\"
\").addClass(TRACKBAR_RANGE_CLASS).appendTo(this._$bar)\r\n },\r\n _renderValue: function() {\r\n var val = this.option(\"value\");\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if (min > max) {\r\n return\r\n }\r\n if (val < min) {\r\n this.option(\"value\", min);\r\n this._currentRatio = 0;\r\n return\r\n }\r\n if (val > max) {\r\n this.option(\"value\", max);\r\n this._currentRatio = 1;\r\n return\r\n }\r\n var ratio = min === max ? 0 : (val - min) / (max - min);\r\n !this._needPreventAnimation && this._setRangeStyles({\r\n width: 100 * ratio + \"%\"\r\n });\r\n this.setAria({\r\n valuemin: this.option(\"min\"),\r\n valuemax: max,\r\n valuenow: val\r\n });\r\n this._currentRatio = ratio\r\n },\r\n _rangeStylesConfig: function() {\r\n return {\r\n width: 100 * this._currentRatio + \"%\"\r\n }\r\n },\r\n _setRangeStyles: function(options) {\r\n _fx.default.stop(this._$range);\r\n if (!options) {\r\n this._$range.css({\r\n width: 0\r\n });\r\n return\r\n }\r\n if (this._needPreventAnimation || !(0, _window.hasWindow)()) {\r\n return\r\n }\r\n _fx.default.animate(this._$range, {\r\n type: \"custom\",\r\n duration: 100,\r\n to: options\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._renderValue();\r\n this.callBase(args);\r\n break;\r\n case \"max\":\r\n case \"min\":\r\n this._renderValue();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dispose: function() {\r\n _fx.default.stop(this._$range);\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTrackBar\", TrackBar);\r\nvar _default = TrackBar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toast.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../core/utils/ready_callbacks\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _themes = require(\"./themes\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar ready = _ready_callbacks.default.add;\r\nvar TOAST_CLASS = \"dx-toast\";\r\nvar TOAST_CLASS_PREFIX = TOAST_CLASS + \"-\";\r\nvar TOAST_WRAPPER_CLASS = TOAST_CLASS_PREFIX + \"wrapper\";\r\nvar TOAST_CONTENT_CLASS = TOAST_CLASS_PREFIX + \"content\";\r\nvar TOAST_MESSAGE_CLASS = TOAST_CLASS_PREFIX + \"message\";\r\nvar TOAST_ICON_CLASS = TOAST_CLASS_PREFIX + \"icon\";\r\nvar WIDGET_NAME = \"dxToast\";\r\nvar toastTypes = [\"info\", \"warning\", \"error\", \"success\"];\r\nvar TOAST_STACK = [];\r\nvar FIRST_Z_INDEX_OFFSET = 8e3;\r\nvar visibleToastInstance = null;\r\nvar POSITION_ALIASES = {\r\n top: {\r\n my: \"top\",\r\n at: \"top\",\r\n of: null,\r\n offset: \"0 0\"\r\n },\r\n bottom: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: null,\r\n offset: \"0 -20\"\r\n },\r\n center: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: null,\r\n offset: \"0 0\"\r\n },\r\n right: {\r\n my: \"center right\",\r\n at: \"center right\",\r\n of: null,\r\n offset: \"0 0\"\r\n },\r\n left: {\r\n my: \"center left\",\r\n at: \"center left\",\r\n of: null,\r\n offset: \"0 0\"\r\n }\r\n};\r\nready(function() {\r\n _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, function(e) {\r\n for (var i = TOAST_STACK.length - 1; i >= 0; i--) {\r\n if (!TOAST_STACK[i]._proxiedDocumentDownHandler(e)) {\r\n return\r\n }\r\n }\r\n })\r\n});\r\nvar Toast = _overlay.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n message: \"\",\r\n type: \"info\",\r\n displayTime: 2e3,\r\n position: \"bottom center\",\r\n animation: {\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 to: 0\r\n }\r\n },\r\n shading: false,\r\n height: \"auto\",\r\n hideTopOverlayHandler: null,\r\n closeOnSwipe: true,\r\n closeOnClick: false,\r\n resizeEnabled: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n closeOnOutsideClick: true,\r\n width: \"auto\",\r\n position: {\r\n at: \"bottom left\",\r\n my: \"bottom left\",\r\n offset: \"20 -20\"\r\n },\r\n animation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 200,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 200,\r\n to: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }, {\r\n device: function(_device) {\r\n var isPhone = \"phone\" === _device.deviceType;\r\n var isAndroid = \"android\" === _device.platform;\r\n return isPhone && isAndroid\r\n },\r\n options: {\r\n width: function() {\r\n var _window$visualViewpor;\r\n return (null === window || void 0 === window ? void 0 : null === (_window$visualViewpor = window.visualViewport) || void 0 === _window$visualViewpor ? void 0 : _window$visualViewpor.width) || (0, _renderer.default)(window).width()\r\n },\r\n position: {\r\n at: \"bottom center\",\r\n my: \"bottom center\",\r\n offset: \"0 0\"\r\n }\r\n }\r\n }, {\r\n device: function(_device2) {\r\n return \"phone\" === _device2.deviceType\r\n },\r\n options: {\r\n width: function() {\r\n var _window$visualViewpor2;\r\n return (null === window || void 0 === window ? void 0 : null === (_window$visualViewpor2 = window.visualViewport) || void 0 === _window$visualViewpor2 ? void 0 : _window$visualViewpor2.width) || (0, _renderer.default)(window).width()\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n minWidth: 344,\r\n maxWidth: 568,\r\n displayTime: 4e3\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._posStringToObject()\r\n },\r\n _renderContentImpl: function() {\r\n if (this.option(\"message\")) {\r\n this._message = (0, _renderer.default)(\"
\").addClass(TOAST_MESSAGE_CLASS).text(this.option(\"message\")).appendTo(this.$content())\r\n }\r\n this.setAria(\"role\", \"alert\", this._message);\r\n if ((0, _array.inArray)(this.option(\"type\").toLowerCase(), toastTypes) > -1) {\r\n this.$content().prepend((0, _renderer.default)(\"
\").addClass(TOAST_ICON_CLASS))\r\n }\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(TOAST_CLASS);\r\n this.$wrapper().addClass(TOAST_WRAPPER_CLASS);\r\n this.$content().addClass(TOAST_CLASS_PREFIX + String(this.option(\"type\")).toLowerCase());\r\n this.$content().addClass(TOAST_CONTENT_CLASS);\r\n this._toggleCloseEvents(\"Swipe\");\r\n this._toggleCloseEvents(\"Click\")\r\n },\r\n _renderScrollTerminator: _common.noop,\r\n _toggleCloseEvents: function(event) {\r\n var dxEvent = \"dx\" + event.toLowerCase();\r\n _events_engine.default.off(this.$content(), dxEvent);\r\n this.option(\"closeOn\" + event) && _events_engine.default.on(this.$content(), dxEvent, this.hide.bind(this))\r\n },\r\n _posStringToObject: function() {\r\n if (!(0, _type.isString)(this.option(\"position\"))) {\r\n return\r\n }\r\n var verticalPosition = this.option(\"position\").split(\" \")[0];\r\n var horizontalPosition = this.option(\"position\").split(\" \")[1];\r\n this.option(\"position\", (0, _extend.extend)({}, POSITION_ALIASES[verticalPosition]));\r\n switch (horizontalPosition) {\r\n case \"center\":\r\n case \"left\":\r\n case \"right\":\r\n this.option(\"position\").at += \" \" + horizontalPosition;\r\n this.option(\"position\").my += \" \" + horizontalPosition\r\n }\r\n },\r\n _show: function() {\r\n if (visibleToastInstance && visibleToastInstance !== this) {\r\n clearTimeout(visibleToastInstance._hideTimeout);\r\n visibleToastInstance.hide()\r\n }\r\n visibleToastInstance = this;\r\n return this.callBase.apply(this, arguments).done(function() {\r\n clearTimeout(this._hideTimeout);\r\n this._hideTimeout = setTimeout(this.hide.bind(this), this.option(\"displayTime\"))\r\n }.bind(this))\r\n },\r\n _hide: function() {\r\n visibleToastInstance = null;\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _overlayStack: function() {\r\n return TOAST_STACK\r\n },\r\n _zIndexInitValue: function() {\r\n return this.callBase() + FIRST_Z_INDEX_OFFSET\r\n },\r\n _dispose: function() {\r\n clearTimeout(this._hideTimeout);\r\n visibleToastInstance = null;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"type\":\r\n this.$content().removeClass(TOAST_CLASS_PREFIX + args.previousValue);\r\n this.$content().addClass(TOAST_CLASS_PREFIX + String(args.value).toLowerCase());\r\n break;\r\n case \"message\":\r\n if (this._message) {\r\n this._message.text(args.value)\r\n }\r\n break;\r\n case \"closeOnSwipe\":\r\n this._toggleCloseEvents(\"Swipe\");\r\n break;\r\n case \"closeOnClick\":\r\n this._toggleCloseEvents(\"Click\");\r\n break;\r\n case \"displayTime\":\r\n case \"position\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(WIDGET_NAME, Toast);\r\nvar _default = Toast;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./tree_list/ui.tree_list\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _ui.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.data_source_adapter.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _array_utils = require(\"../../data/array_utils\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_source_adapter\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _store_helper = _interopRequireDefault(require(\"../../data/store_helper\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar queryByOptions = _store_helper.default.queryByOptions;\r\nvar DEFAULT_KEY_EXPRESSION = \"id\";\r\nvar isFullBranchFilterMode = function(that) {\r\n return \"fullBranch\" === that.option(\"filterMode\")\r\n};\r\nvar DataSourceAdapterTreeList = _uiGrid_core2.default.inherit(function() {\r\n var getChildKeys = function(that, keys) {\r\n var childKeys = [];\r\n keys.forEach(function(key) {\r\n var node = that.getNodeByKey(key);\r\n node && node.children.forEach(function(child) {\r\n childKeys.push(child.key)\r\n })\r\n });\r\n return childKeys\r\n };\r\n return {\r\n _createKeyGetter: function() {\r\n var keyExpr = this.getKeyExpr();\r\n return (0, _data.compileGetter)(keyExpr)\r\n },\r\n _createKeySetter: function() {\r\n var keyExpr = this.getKeyExpr();\r\n if ((0, _type.isFunction)(keyExpr)) {\r\n return keyExpr\r\n }\r\n return (0, _data.compileSetter)(keyExpr)\r\n },\r\n _createParentIdGetter: function() {\r\n return (0, _data.compileGetter)(this.option(\"parentIdExpr\"))\r\n },\r\n createParentIdSetter: function() {\r\n var parentIdExpr = this.option(\"parentIdExpr\");\r\n if ((0, _type.isFunction)(parentIdExpr)) {\r\n return parentIdExpr\r\n }\r\n return (0, _data.compileSetter)(parentIdExpr)\r\n },\r\n _createItemsGetter: function() {\r\n return (0, _data.compileGetter)(this.option(\"itemsExpr\"))\r\n },\r\n _createHasItemsGetter: function() {\r\n var hasItemsExpr = this.option(\"hasItemsExpr\");\r\n return hasItemsExpr && (0, _data.compileGetter)(hasItemsExpr)\r\n },\r\n _createHasItemsSetter: function() {\r\n var hasItemsExpr = this.option(\"hasItemsExpr\");\r\n if ((0, _type.isFunction)(hasItemsExpr)) {\r\n return hasItemsExpr\r\n }\r\n return hasItemsExpr && (0, _data.compileSetter)(hasItemsExpr)\r\n },\r\n _updateIndexByKeyObject: function(items) {\r\n var that = this;\r\n that._indexByKey = {};\r\n (0, _iterator.each)(items, function(index, item) {\r\n that._indexByKey[item.key] = index\r\n })\r\n },\r\n _calculateHasItems: function(node, options) {\r\n var that = this;\r\n var parentIds = options.storeLoadOptions.parentIds;\r\n var hasItems;\r\n var isFullBranch = isFullBranchFilterMode(that);\r\n if (that._hasItemsGetter && (parentIds || !options.storeLoadOptions.filter || isFullBranch)) {\r\n hasItems = that._hasItemsGetter(node.data)\r\n }\r\n if (void 0 === hasItems) {\r\n if (!that._isChildrenLoaded[node.key] && options.remoteOperations.filtering && (parentIds || isFullBranch)) {\r\n hasItems = true\r\n } else {\r\n if (options.loadOptions.filter && !options.remoteOperations.filtering && isFullBranch) {\r\n hasItems = node.children.length\r\n } else {\r\n hasItems = node.hasChildren\r\n }\r\n }\r\n }\r\n return !!hasItems\r\n },\r\n _fillVisibleItemsByNodes: function(nodes, options, result) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n if (nodes[i].visible) {\r\n result.push(nodes[i])\r\n }\r\n if ((this.isRowExpanded(nodes[i].key, options) || !nodes[i].visible) && nodes[i].hasChildren && nodes[i].children.length) {\r\n this._fillVisibleItemsByNodes(nodes[i].children, options, result)\r\n }\r\n }\r\n },\r\n _convertItemToNode: function(item, rootValue, nodeByKey) {\r\n var key = this._keyGetter(item);\r\n var parentId = this._parentIdGetter(item);\r\n parentId = (0, _type.isDefined)(parentId) ? parentId : rootValue;\r\n var parentNode = nodeByKey[parentId] = nodeByKey[parentId] || {\r\n key: parentId,\r\n children: []\r\n };\r\n var node = nodeByKey[key] = nodeByKey[key] || {\r\n key: key,\r\n children: []\r\n };\r\n node.data = item;\r\n node.parent = parentNode;\r\n return node\r\n },\r\n _createNodesByItems: function(items, visibleItems) {\r\n var that = this;\r\n var rootValue = that.option(\"rootValue\");\r\n var visibleByKey = {};\r\n var nodeByKey = that._nodeByKey = {};\r\n var i;\r\n if (visibleItems) {\r\n for (i = 0; i < visibleItems.length; i++) {\r\n visibleByKey[this._keyGetter(visibleItems[i])] = true\r\n }\r\n }\r\n for (i = 0; i < items.length; i++) {\r\n var node = that._convertItemToNode(items[i], rootValue, nodeByKey);\r\n if (void 0 === node.key) {\r\n return\r\n }\r\n node.visible = !visibleItems || !!visibleByKey[node.key];\r\n if (node.parent) {\r\n node.parent.children.push(node)\r\n }\r\n }\r\n var rootNode = nodeByKey[rootValue] || {\r\n key: rootValue,\r\n children: []\r\n };\r\n rootNode.level = -1;\r\n return rootNode\r\n },\r\n _convertDataToPlainStructure: function(data, parentId, result) {\r\n var key;\r\n if (this._itemsGetter && !data.isConverted) {\r\n result = result || [];\r\n for (var i = 0; i < data.length; i++) {\r\n var item = (0, _array_utils.createObjectWithChanges)(data[i]);\r\n key = this._keyGetter(item);\r\n if (void 0 === key) {\r\n key = result.length + 1;\r\n this._keySetter(item, key)\r\n }\r\n this._parentIdSetter(item, void 0 === parentId ? this.option(\"rootValue\") : parentId);\r\n result.push(item);\r\n var childItems = this._itemsGetter(item);\r\n if (childItems && childItems.length) {\r\n this._convertDataToPlainStructure(childItems, key, result);\r\n var itemsExpr = this.option(\"itemsExpr\");\r\n if (!(0, _type.isFunction)(itemsExpr)) {\r\n delete item[itemsExpr]\r\n }\r\n }\r\n }\r\n result.isConverted = true;\r\n return result\r\n }\r\n return data\r\n },\r\n _createIdFilter: function(field, keys) {\r\n var parentIdFilters = [];\r\n for (var i = 0; i < keys.length; i++) {\r\n parentIdFilters.push([field, \"=\", keys[i]])\r\n }\r\n return _uiGrid_core.default.combineFilters(parentIdFilters, \"or\")\r\n },\r\n _customizeRemoteOperations: function(options, operationTypes) {\r\n this.callBase.apply(this, arguments);\r\n options.remoteOperations.paging = false;\r\n var expandVisibleNodes = false;\r\n if (this.option(\"autoExpandAll\")) {\r\n options.remoteOperations.sorting = false;\r\n options.remoteOperations.filtering = false;\r\n if ((!this._lastLoadOptions || operationTypes.filtering && !options.storeLoadOptions.filter) && !options.isCustomLoading) {\r\n expandVisibleNodes = true\r\n }\r\n }\r\n if (!options.isCustomLoading) {\r\n this._isReload = this._isReload || operationTypes.reload;\r\n if (!options.cachedStoreData) {\r\n this._isChildrenLoaded = {};\r\n if (this._isReload) {\r\n this._nodeByKey = {}\r\n }\r\n }\r\n if (this.option(\"expandNodesOnFiltering\") && (operationTypes.filtering || this._isReload && options.storeLoadOptions.filter)) {\r\n if (options.storeLoadOptions.filter) {\r\n expandVisibleNodes = true\r\n } else {\r\n options.collapseVisibleNodes = true\r\n }\r\n }\r\n }\r\n options.expandVisibleNodes = expandVisibleNodes\r\n },\r\n _getParentIdsToLoad: function(parentIds) {\r\n var parentIdsToLoad = [];\r\n for (var i = 0; i < parentIds.length; i++) {\r\n var node = this.getNodeByKey(parentIds[i]);\r\n if (!node || node.hasChildren && !node.children.length) {\r\n parentIdsToLoad.push(parentIds[i])\r\n }\r\n }\r\n return parentIdsToLoad\r\n },\r\n _handleDataLoading: function(options) {\r\n var rootValue = this.option(\"rootValue\");\r\n var parentIdExpr = this.option(\"parentIdExpr\");\r\n var parentIds = options.storeLoadOptions.parentIds;\r\n if (parentIds) {\r\n options.isCustomLoading = false\r\n }\r\n this.callBase.apply(this, arguments);\r\n if (options.remoteOperations.filtering && !options.isCustomLoading) {\r\n if (isFullBranchFilterMode(this) && options.cachedStoreData || !options.storeLoadOptions.filter) {\r\n var expandedRowKeys = options.collapseVisibleNodes ? [] : this.option(\"expandedRowKeys\");\r\n parentIds = [rootValue].concat(expandedRowKeys).concat(parentIds || []);\r\n var parentIdsToLoad = options.data ? this._getParentIdsToLoad(parentIds) : parentIds;\r\n if (parentIdsToLoad.length) {\r\n options.cachedPagingData = void 0;\r\n options.data = void 0;\r\n options.mergeStoreLoadData = true;\r\n options.delay = this.option(\"loadingTimeout\")\r\n }\r\n options.storeLoadOptions.parentIds = parentIdsToLoad;\r\n options.storeLoadOptions.filter = this._createIdFilter(parentIdExpr, parentIdsToLoad)\r\n }\r\n }\r\n },\r\n _generateInfoToLoad: function(data, needChildren) {\r\n var that = this;\r\n var key;\r\n var keyMap = {};\r\n var resultKeyMap = {};\r\n var resultKeys = [];\r\n var rootValue = that.option(\"rootValue\");\r\n var i;\r\n for (i = 0; i < data.length; i++) {\r\n key = needChildren ? that._parentIdGetter(data[i]) : that._keyGetter(data[i]);\r\n keyMap[key] = true\r\n }\r\n for (i = 0; i < data.length; i++) {\r\n key = needChildren ? that._keyGetter(data[i]) : that._parentIdGetter(data[i]);\r\n var needToLoad = needChildren ? that.isRowExpanded(key) : key !== rootValue;\r\n if (!keyMap[key] && !resultKeyMap[key] && needToLoad) {\r\n resultKeyMap[key] = true;\r\n resultKeys.push(key)\r\n }\r\n }\r\n return {\r\n keyMap: resultKeyMap,\r\n keys: resultKeys\r\n }\r\n },\r\n _loadParentsOrChildren: function(data, options, needChildren) {\r\n var _this = this;\r\n var that = this;\r\n var filter;\r\n var needLocalFiltering;\r\n var _that$_generateInfoTo = that._generateInfoToLoad(data, needChildren),\r\n keys = _that$_generateInfoTo.keys,\r\n keyMap = _that$_generateInfoTo.keyMap;\r\n var d = new _deferred.Deferred;\r\n var isRemoteFiltering = options.remoteOperations.filtering;\r\n var maxFilterLengthInRequest = that.option(\"maxFilterLengthInRequest\");\r\n var loadOptions = isRemoteFiltering ? options.storeLoadOptions : options.loadOptions;\r\n\r\n function concatLoadedData(loadedData) {\r\n if (isRemoteFiltering) {\r\n that._cachedStoreData = that._cachedStoreData.concat(loadedData)\r\n }\r\n return data.concat(loadedData)\r\n }\r\n if (!keys.length) {\r\n return d.resolve(data)\r\n }\r\n var cachedNodes = keys.map(function(id) {\r\n return _this.getNodeByKey(id)\r\n }).filter(function(node) {\r\n return node && node.data\r\n });\r\n if (cachedNodes.length === keys.length) {\r\n if (needChildren) {\r\n cachedNodes = cachedNodes.reduce(function(result, node) {\r\n return result.concat(node.children)\r\n }, [])\r\n }\r\n if (cachedNodes.length) {\r\n return that._loadParentsOrChildren(concatLoadedData(cachedNodes.map(function(node) {\r\n return node.data\r\n })), options, needChildren)\r\n }\r\n }\r\n var keyExpr = needChildren ? that.option(\"parentIdExpr\") : that.getKeyExpr();\r\n filter = that._createIdFilter(keyExpr, keys);\r\n var filterLength = encodeURI(JSON.stringify(filter)).length;\r\n if (filterLength > maxFilterLengthInRequest) {\r\n filter = function(itemData) {\r\n return keyMap[that._keyGetter(itemData)]\r\n };\r\n needLocalFiltering = isRemoteFiltering\r\n }\r\n loadOptions = (0, _extend.extend)({}, loadOptions, {\r\n filter: !needLocalFiltering ? filter : null\r\n });\r\n var store = options.fullData ? new _array_store.default(options.fullData) : that._dataSource.store();\r\n that.loadFromStore(loadOptions, store).done(function(loadedData) {\r\n if (loadedData.length) {\r\n if (needLocalFiltering) {\r\n loadedData = (0, _query.default)(loadedData).filter(filter).toArray()\r\n }\r\n that._loadParentsOrChildren(concatLoadedData(loadedData), options, needChildren).done(d.resolve).fail(d.reject)\r\n } else {\r\n d.resolve(data)\r\n }\r\n }).fail(d.reject);\r\n return d\r\n },\r\n _loadParents: function(data, options) {\r\n return this._loadParentsOrChildren(data, options)\r\n },\r\n _loadChildrenIfNeed: function(data, options) {\r\n if (isFullBranchFilterMode(this)) {\r\n return this._loadParentsOrChildren(data, options, true)\r\n }\r\n return (0, _deferred.when)(data)\r\n },\r\n _updateHasItemsMap: function(options) {\r\n var parentIds = options.storeLoadOptions.parentIds;\r\n if (parentIds) {\r\n for (var i = 0; i < parentIds.length; i++) {\r\n this._isChildrenLoaded[parentIds[i]] = true\r\n }\r\n }\r\n },\r\n _getKeyInfo: function() {\r\n return {\r\n key: function() {\r\n return \"key\"\r\n },\r\n keyOf: function(data) {\r\n return data.key\r\n }\r\n }\r\n },\r\n _applyBatch: function(changes) {\r\n var _this2 = this;\r\n var baseChanges = [];\r\n changes.forEach(function(change) {\r\n if (\"insert\" === change.type) {\r\n baseChanges = baseChanges.concat(_this2._applyInsert(change))\r\n } else {\r\n if (\"remove\" === change.type) {\r\n baseChanges = baseChanges.concat(_this2._applyRemove(change))\r\n } else {\r\n if (\"update\" === change.type) {\r\n baseChanges.push({\r\n type: change.type,\r\n key: change.key,\r\n data: {\r\n data: change.data\r\n }\r\n })\r\n }\r\n }\r\n }\r\n });\r\n this.callBase(baseChanges)\r\n },\r\n _setHasItems: function(node, value) {\r\n var hasItemsSetter = this._hasItemsSetter;\r\n node.hasChildren = value;\r\n if (hasItemsSetter && node.data) {\r\n hasItemsSetter(node.data, value)\r\n }\r\n },\r\n _applyInsert: function(change) {\r\n var that = this;\r\n var baseChanges = [];\r\n var parentId = that.parentKeyOf(change.data);\r\n var parentNode = that.getNodeByKey(parentId);\r\n if (parentNode) {\r\n var rootValue = that.option(\"rootValue\");\r\n var node = that._convertItemToNode(change.data, rootValue, that._nodeByKey);\r\n node.hasChildren = false;\r\n node.level = parentNode.level + 1;\r\n node.visible = true;\r\n parentNode.children.push(node);\r\n that._isChildrenLoaded[node.key] = true;\r\n that._setHasItems(parentNode, true);\r\n if ((!parentNode.parent || that.isRowExpanded(parentNode.key)) && void 0 !== change.index) {\r\n var index = that.items().indexOf(parentNode) + 1;\r\n index += change.index >= 0 ? Math.min(change.index, parentNode.children.length) : parentNode.children.length;\r\n baseChanges.push({\r\n type: change.type,\r\n data: node,\r\n index: index\r\n })\r\n }\r\n }\r\n return baseChanges\r\n },\r\n _applyRemove: function(change) {\r\n var baseChanges = [];\r\n var node = this.getNodeByKey(change.key);\r\n var parentNode = node && node.parent;\r\n if (parentNode) {\r\n var index = parentNode.children.indexOf(node);\r\n if (index >= 0) {\r\n parentNode.children.splice(index, 1);\r\n if (!parentNode.children.length) {\r\n this._setHasItems(parentNode, false)\r\n }\r\n baseChanges.push(change);\r\n baseChanges = baseChanges.concat(this.getChildNodeKeys(change.key).map(function(key) {\r\n return {\r\n type: change.type,\r\n key: key\r\n }\r\n }))\r\n }\r\n }\r\n return baseChanges\r\n },\r\n _handleDataLoaded: function(options) {\r\n var data = options.data = this._convertDataToPlainStructure(options.data);\r\n if (!options.remoteOperations.filtering && options.loadOptions.filter) {\r\n options.fullData = queryByOptions((0, _query.default)(options.data), {\r\n sort: options.loadOptions && options.loadOptions.sort\r\n }).toArray()\r\n }\r\n this._updateHasItemsMap(options);\r\n this.callBase(options);\r\n if (data.isConverted && this._cachedStoreData) {\r\n this._cachedStoreData.isConverted = true\r\n }\r\n },\r\n _fillNodes: function(nodes, options, expandedRowKeys, level) {\r\n var isFullBranch = isFullBranchFilterMode(this);\r\n level = level || 0;\r\n for (var i = 0; i < nodes.length; i++) {\r\n var node = nodes[i];\r\n var needToExpand = false;\r\n this._fillNodes(nodes[i].children, options, expandedRowKeys, level + 1);\r\n node.level = level;\r\n node.hasChildren = this._calculateHasItems(node, options);\r\n if (node.visible && node.hasChildren) {\r\n if (isFullBranch) {\r\n if (node.children.filter(function(node) {\r\n return node.visible\r\n }).length) {\r\n needToExpand = true\r\n } else {\r\n if (node.children.length) {\r\n _uiTree_list.default.foreachNodes(node.children, function(node) {\r\n node.visible = true\r\n })\r\n }\r\n }\r\n } else {\r\n needToExpand = true\r\n }\r\n if (options.expandVisibleNodes && needToExpand) {\r\n expandedRowKeys.push(node.key)\r\n }\r\n }\r\n if (node.visible || node.hasChildren) {\r\n node.parent.hasChildren = true\r\n }\r\n }\r\n },\r\n _processTreeStructure: function(options, visibleItems) {\r\n var data = options.data;\r\n var parentIds = options.storeLoadOptions.parentIds;\r\n var expandedRowKeys = [];\r\n if (parentIds && parentIds.length || this._isReload) {\r\n if (options.fullData && options.fullData.length > options.data.length) {\r\n data = options.fullData;\r\n visibleItems = visibleItems || options.data\r\n }\r\n this._rootNode = this._createNodesByItems(data, visibleItems);\r\n if (!this._rootNode) {\r\n options.data = (new _deferred.Deferred).reject(_ui.default.Error(\"E1046\", this.getKeyExpr()));\r\n return\r\n }\r\n this._fillNodes(this._rootNode.children, options, expandedRowKeys);\r\n this._isNodesInitializing = true;\r\n if (options.collapseVisibleNodes || expandedRowKeys.length) {\r\n this.option(\"expandedRowKeys\", expandedRowKeys)\r\n }\r\n this._isReload = false;\r\n this.executeAction(\"onNodesInitialized\", {\r\n root: this._rootNode\r\n });\r\n this._isNodesInitializing = false\r\n }\r\n var resultData = [];\r\n this._fillVisibleItemsByNodes(this._rootNode.children, options, resultData);\r\n options.data = resultData;\r\n this._totalItemsCount = resultData.length\r\n },\r\n _handleDataLoadedCore: function(options) {\r\n var that = this;\r\n var data = options.data;\r\n var callBase = that.callBase;\r\n var filter = options.storeLoadOptions.filter || options.loadOptions.filter;\r\n var filterMode = that.option(\"filterMode\");\r\n var visibleItems;\r\n var parentIds = options.storeLoadOptions.parentIds;\r\n var needLoadParents = filter && (!parentIds || !parentIds.length) && \"standard\" !== filterMode;\r\n if (!options.isCustomLoading) {\r\n if (needLoadParents) {\r\n var d = options.data = new _deferred.Deferred;\r\n if (\"matchOnly\" === filterMode) {\r\n visibleItems = data\r\n }\r\n return that._loadParents(data, options).done(function(data) {\r\n that._loadChildrenIfNeed(data, options).done(function(data) {\r\n options.data = data;\r\n that._processTreeStructure(options, visibleItems);\r\n callBase.call(that, options);\r\n d.resolve(options.data)\r\n })\r\n }).fail(d.reject)\r\n } else {\r\n that._processTreeStructure(options)\r\n }\r\n }\r\n that.callBase(options)\r\n },\r\n _handlePush: function(changes) {\r\n var reshapeOnPush = this._dataSource._reshapeOnPush;\r\n var isNeedReshape = reshapeOnPush && !!changes.length;\r\n if (isNeedReshape) {\r\n this._isReload = true\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n init: function(dataSource, remoteOperations) {\r\n this.callBase.apply(this, arguments);\r\n var dataStructure = this.option(\"dataStructure\");\r\n this._keyGetter = this._createKeyGetter();\r\n this._parentIdGetter = this._createParentIdGetter();\r\n this._hasItemsGetter = this._createHasItemsGetter();\r\n this._hasItemsSetter = this._createHasItemsSetter();\r\n if (\"tree\" === dataStructure) {\r\n this._itemsGetter = this._createItemsGetter();\r\n this._keySetter = this._createKeySetter();\r\n this._parentIdSetter = this.createParentIdSetter()\r\n }\r\n this._nodeByKey = {};\r\n this._isChildrenLoaded = {};\r\n this._totalItemsCount = 0;\r\n this.createAction(\"onNodesInitialized\")\r\n },\r\n getKeyExpr: function() {\r\n var store = this.store();\r\n var key = store && store.key();\r\n var keyExpr = this.option(\"keyExpr\");\r\n if ((0, _type.isDefined)(key) && (0, _type.isDefined)(keyExpr)) {\r\n if (!(0, _common.equalByValue)(key, keyExpr)) {\r\n throw _ui.default.Error(\"E1044\")\r\n }\r\n }\r\n return key || keyExpr || DEFAULT_KEY_EXPRESSION\r\n },\r\n keyOf: function(data) {\r\n return this._keyGetter && this._keyGetter(data)\r\n },\r\n parentKeyOf: function(data) {\r\n return this._parentIdGetter && this._parentIdGetter(data)\r\n },\r\n getRootNode: function() {\r\n return this._rootNode\r\n },\r\n totalItemsCount: function() {\r\n return this._totalItemsCount\r\n },\r\n isRowExpanded: function(key, cache) {\r\n if (cache) {\r\n var isExpandedByKey = cache.isExpandedByKey;\r\n if (!isExpandedByKey) {\r\n isExpandedByKey = cache.isExpandedByKey = {};\r\n this.option(\"expandedRowKeys\").forEach(function(key) {\r\n isExpandedByKey[key] = true\r\n })\r\n }\r\n return !!isExpandedByKey[key]\r\n }\r\n var indexExpandedNodeKey = _uiGrid_core.default.getIndexByKey(key, this.option(\"expandedRowKeys\"), null);\r\n return indexExpandedNodeKey >= 0\r\n },\r\n _changeRowExpandCore: function(key) {\r\n var expandedRowKeys = this.option(\"expandedRowKeys\").slice();\r\n var indexExpandedNodeKey = _uiGrid_core.default.getIndexByKey(key, expandedRowKeys, null);\r\n if (indexExpandedNodeKey < 0) {\r\n expandedRowKeys.push(key)\r\n } else {\r\n expandedRowKeys.splice(indexExpandedNodeKey, 1)\r\n }\r\n this.option(\"expandedRowKeys\", expandedRowKeys)\r\n },\r\n changeRowExpand: function(key) {\r\n this._changeRowExpandCore(key);\r\n return this._isNodesInitializing ? (new _deferred.Deferred).resolve() : this.load()\r\n },\r\n getNodeByKey: function(key) {\r\n if (this._nodeByKey) {\r\n return this._nodeByKey[key]\r\n }\r\n },\r\n getNodeLeafKeys: function() {\r\n var that = this;\r\n var result = [];\r\n var keys = that._rootNode ? [that._rootNode.key] : [];\r\n keys.forEach(function(key) {\r\n var node = that.getNodeByKey(key);\r\n node && _uiTree_list.default.foreachNodes([node], function(childNode) {\r\n !childNode.children.length && result.push(childNode.key)\r\n })\r\n });\r\n return result\r\n },\r\n getChildNodeKeys: function(parentKey) {\r\n var node = this.getNodeByKey(parentKey);\r\n var childrenKeys = [];\r\n node && _uiTree_list.default.foreachNodes(node.children, function(childNode) {\r\n childrenKeys.push(childNode.key)\r\n });\r\n return childrenKeys\r\n },\r\n loadDescendants: function(keys, childrenOnly) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n var remoteOperations = that.remoteOperations();\r\n if ((0, _type.isDefined)(keys)) {\r\n keys = Array.isArray(keys) ? keys : [keys]\r\n } else {\r\n keys = that.getNodeLeafKeys()\r\n }\r\n if (!remoteOperations.filtering || !keys.length) {\r\n return d.resolve()\r\n }\r\n var loadOptions = that._dataSource._createStoreLoadOptions();\r\n loadOptions.parentIds = keys;\r\n that.load(loadOptions).done(function() {\r\n if (!childrenOnly) {\r\n var childKeys = getChildKeys(that, keys);\r\n if (childKeys.length) {\r\n that.loadDescendants(childKeys, childrenOnly).done(d.resolve).fail(d.reject);\r\n return\r\n }\r\n }\r\n d.resolve()\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n forEachNode: function() {\r\n var nodes = [];\r\n var callback;\r\n if (1 === arguments.length) {\r\n callback = arguments[0];\r\n var rootNode = this.getRootNode();\r\n nodes = rootNode && rootNode.children || []\r\n } else {\r\n if (2 === arguments.length) {\r\n callback = arguments[1];\r\n nodes = arguments[0];\r\n nodes = Array.isArray(nodes) ? nodes : [nodes]\r\n }\r\n }\r\n _uiTree_list.default.foreachNodes(nodes, callback)\r\n }\r\n }\r\n}());\r\nvar _default = {\r\n extend: function(extender) {\r\n DataSourceAdapterTreeList = DataSourceAdapterTreeList.inherit(extender)\r\n },\r\n create: function(component) {\r\n return new DataSourceAdapterTreeList(component)\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/themes.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.attachCssClasses = attachCssClasses;\r\nexports.current = current;\r\nexports.default = void 0;\r\nexports.detachCssClasses = detachCssClasses;\r\nexports.init = init;\r\nexports.initialized = initialized;\r\nexports.isDark = isDark;\r\nexports.isGeneric = isGeneric;\r\nexports.isMaterial = isMaterial;\r\nexports.isPendingThemeLoaded = isPendingThemeLoaded;\r\nexports.isWebFontLoaded = isWebFontLoaded;\r\nexports.ready = themeReady;\r\nexports.resetTheme = resetTheme;\r\nexports.setDefaultTimeout = setDefaultTimeout;\r\nexports.waitForThemeLoad = waitForThemeLoad;\r\nexports.waitWebFont = waitWebFont;\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _promise = _interopRequireDefault(require(\"../core/polyfills/promise\"));\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _html_parser = require(\"../core/utils/html_parser\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../core/utils/ready_callbacks\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _themes_callback = require(\"./themes_callback\");\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar ready = _ready_callbacks.default.add;\r\nvar viewPort = _view_port.value;\r\nvar viewPortChanged = _view_port.changeCallback;\r\nvar initDeferred = new _deferred.Deferred;\r\nvar DX_LINK_SELECTOR = \"link[rel=dx-theme]\";\r\nvar THEME_ATTR = \"data-theme\";\r\nvar ACTIVE_ATTR = \"data-active\";\r\nvar DX_HAIRLINES_CLASS = \"dx-hairlines\";\r\nvar ANY_THEME = \"any\";\r\nvar context;\r\nvar $activeThemeLink;\r\nvar knownThemes;\r\nvar currentThemeName;\r\nvar pendingThemeName;\r\nvar defaultTimeout = 15e3;\r\nvar THEME_MARKER_PREFIX = \"dx.\";\r\n\r\nfunction readThemeMarker() {\r\n if (!(0, _window.hasWindow)()) {\r\n return null\r\n }\r\n var element = (0, _renderer.default)(\"
\", context).addClass(\"dx-theme-marker\").appendTo(context.documentElement);\r\n var result;\r\n try {\r\n result = window.getComputedStyle(element.get(0)).fontFamily;\r\n if (!result) {\r\n return null\r\n }\r\n result = result.replace(/[\"']/g, \"\");\r\n if (result.substr(0, THEME_MARKER_PREFIX.length) !== THEME_MARKER_PREFIX) {\r\n return null\r\n }\r\n return result.substr(THEME_MARKER_PREFIX.length)\r\n } finally {\r\n element.remove()\r\n }\r\n}\r\n\r\nfunction waitForThemeLoad(themeName) {\r\n var waitStartTime;\r\n var timerId;\r\n var intervalCleared = true;\r\n pendingThemeName = themeName;\r\n\r\n function handleLoaded() {\r\n pendingThemeName = null;\r\n clearInterval(timerId);\r\n intervalCleared = true;\r\n _themes_callback.themeReadyCallback.fire();\r\n _themes_callback.themeReadyCallback.empty();\r\n initDeferred.resolve()\r\n }\r\n if (isPendingThemeLoaded() || !defaultTimeout) {\r\n handleLoaded()\r\n } else {\r\n if (!intervalCleared) {\r\n if (pendingThemeName) {\r\n pendingThemeName = themeName\r\n }\r\n return\r\n }\r\n waitStartTime = Date.now();\r\n intervalCleared = false;\r\n timerId = setInterval(function() {\r\n var isLoaded = isPendingThemeLoaded();\r\n var isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout;\r\n if (isTimeout) {\r\n _ui.default.log(\"W0004\", pendingThemeName)\r\n }\r\n if (isLoaded || isTimeout) {\r\n handleLoaded()\r\n }\r\n }, 10)\r\n }\r\n}\r\n\r\nfunction isPendingThemeLoaded() {\r\n if (!pendingThemeName) {\r\n return true\r\n }\r\n var anyThemePending = pendingThemeName === ANY_THEME;\r\n if (\"resolved\" === initDeferred.state() && anyThemePending) {\r\n return true\r\n }\r\n var themeMarker = readThemeMarker();\r\n if (themeMarker && anyThemePending) {\r\n return true\r\n }\r\n return themeMarker === pendingThemeName\r\n}\r\n\r\nfunction processMarkup() {\r\n var $allThemeLinks = (0, _renderer.default)(DX_LINK_SELECTOR, context);\r\n if (!$allThemeLinks.length) {\r\n return\r\n }\r\n knownThemes = {};\r\n $activeThemeLink = (0, _renderer.default)((0, _html_parser.parseHTML)(\"\"), context);\r\n $allThemeLinks.each(function() {\r\n var link = (0, _renderer.default)(this, context);\r\n var fullThemeName = link.attr(THEME_ATTR);\r\n var url = link.attr(\"href\");\r\n var isActive = \"true\" === link.attr(ACTIVE_ATTR);\r\n knownThemes[fullThemeName] = {\r\n url: url,\r\n isActive: isActive\r\n }\r\n });\r\n $allThemeLinks.last().after($activeThemeLink);\r\n $allThemeLinks.remove()\r\n}\r\n\r\nfunction resolveFullThemeName(desiredThemeName) {\r\n var desiredThemeParts = desiredThemeName ? desiredThemeName.split(\".\") : [];\r\n var result = null;\r\n if (knownThemes) {\r\n if (desiredThemeName in knownThemes) {\r\n return desiredThemeName\r\n }(0, _iterator.each)(knownThemes, function(knownThemeName, themeData) {\r\n var knownThemeParts = knownThemeName.split(\".\");\r\n if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) {\r\n return\r\n }\r\n if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) {\r\n return\r\n }\r\n if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) {\r\n return\r\n }\r\n if (!result || themeData.isActive) {\r\n result = knownThemeName\r\n }\r\n if (themeData.isActive) {\r\n return false\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nfunction initContext(newContext) {\r\n try {\r\n if (newContext !== context) {\r\n knownThemes = null\r\n }\r\n } catch (x) {\r\n knownThemes = null\r\n }\r\n context = newContext\r\n}\r\n\r\nfunction init(options) {\r\n options = options || {};\r\n initContext(options.context || _dom_adapter.default.getDocument());\r\n if (!context) {\r\n return\r\n }\r\n processMarkup();\r\n currentThemeName = void 0;\r\n current(options)\r\n}\r\n\r\nfunction current(options) {\r\n if (!arguments.length) {\r\n currentThemeName = currentThemeName || readThemeMarker();\r\n return currentThemeName\r\n }\r\n detachCssClasses(viewPort());\r\n options = options || {};\r\n if (\"string\" === typeof options) {\r\n options = {\r\n theme: options\r\n }\r\n }\r\n var isAutoInit = options._autoInit;\r\n var loadCallback = options.loadCallback;\r\n var currentThemeData;\r\n currentThemeName = resolveFullThemeName(options.theme || currentThemeName);\r\n if (currentThemeName) {\r\n currentThemeData = knownThemes[currentThemeName]\r\n }\r\n if (loadCallback) {\r\n _themes_callback.themeReadyCallback.add(loadCallback)\r\n }\r\n if (currentThemeData) {\r\n $activeThemeLink.attr(\"href\", knownThemes[currentThemeName].url);\r\n if (_themes_callback.themeReadyCallback.has() || \"resolved\" !== initDeferred.state() || options._forceTimeout) {\r\n waitForThemeLoad(currentThemeName)\r\n }\r\n } else {\r\n if (isAutoInit) {\r\n if ((0, _window.hasWindow)()) {\r\n waitForThemeLoad(ANY_THEME)\r\n }\r\n _themes_callback.themeReadyCallback.fire();\r\n _themes_callback.themeReadyCallback.empty()\r\n } else {\r\n throw _ui.default.Error(\"E0021\", currentThemeName)\r\n }\r\n }\r\n initDeferred.done(function() {\r\n return attachCssClasses((0, _view_port.originalViewPort)(), currentThemeName)\r\n })\r\n}\r\n\r\nfunction getCssClasses(themeName) {\r\n themeName = themeName || current();\r\n var result = [];\r\n var themeNameParts = themeName && themeName.split(\".\");\r\n if (themeNameParts) {\r\n result.push(\"dx-theme-\" + themeNameParts[0], \"dx-theme-\" + themeNameParts[0] + \"-typography\");\r\n if (themeNameParts.length > 1) {\r\n result.push(\"dx-color-scheme-\" + themeNameParts[1] + (isMaterial(themeName) ? \"-\" + themeNameParts[2] : \"\"))\r\n }\r\n }\r\n return result\r\n}\r\nvar themeClasses;\r\n\r\nfunction attachCssClasses(element, themeName) {\r\n themeClasses = getCssClasses(themeName).join(\" \");\r\n (0, _renderer.default)(element).addClass(themeClasses);\r\n var activateHairlines = function() {\r\n var pixelRatio = (0, _window.hasWindow)() && window.devicePixelRatio;\r\n if (!pixelRatio || pixelRatio < 2) {\r\n return\r\n }\r\n var $tester = (0, _renderer.default)(\"
\");\r\n $tester.css(\"border\", \".5px solid transparent\");\r\n (0, _renderer.default)(\"body\").append($tester);\r\n if (1 === $tester.outerHeight()) {\r\n (0, _renderer.default)(element).addClass(DX_HAIRLINES_CLASS);\r\n themeClasses += \" \" + DX_HAIRLINES_CLASS\r\n }\r\n $tester.remove()\r\n };\r\n activateHairlines()\r\n}\r\n\r\nfunction detachCssClasses(element) {\r\n (0, _renderer.default)(element).removeClass(themeClasses)\r\n}\r\n\r\nfunction themeReady(callback) {\r\n _themes_callback.themeReadyCallback.add(callback)\r\n}\r\n\r\nfunction isTheme(themeRegExp, themeName) {\r\n if (!themeName) {\r\n themeName = currentThemeName || readThemeMarker()\r\n }\r\n return new RegExp(themeRegExp).test(themeName)\r\n}\r\n\r\nfunction isMaterial(themeName) {\r\n return isTheme(\"material\", themeName)\r\n}\r\n\r\nfunction isGeneric(themeName) {\r\n return isTheme(\"generic\", themeName)\r\n}\r\n\r\nfunction isDark(themeName) {\r\n return isTheme(\"dark\", themeName)\r\n}\r\n\r\nfunction isWebFontLoaded(text, fontWeight) {\r\n var testedFont = \"Roboto, RobotoFallback, Arial\";\r\n var etalonFont = \"Arial\";\r\n var document = _dom_adapter.default.getDocument();\r\n var testElement = document.createElement(\"span\");\r\n testElement.style.position = \"absolute\";\r\n testElement.style.top = \"-9999px\";\r\n testElement.style.left = \"-9999px\";\r\n testElement.style.visibility = \"hidden\";\r\n testElement.style.fontFamily = etalonFont;\r\n testElement.style.fontSize = \"250px\";\r\n testElement.style.fontWeight = fontWeight;\r\n testElement.innerHTML = text;\r\n document.body.appendChild(testElement);\r\n var etalonFontWidth = testElement.offsetWidth;\r\n testElement.style.fontFamily = testedFont;\r\n var testedFontWidth = testElement.offsetWidth;\r\n testElement.parentNode.removeChild(testElement);\r\n return etalonFontWidth !== testedFontWidth\r\n}\r\n\r\nfunction waitWebFont(text, fontWeight) {\r\n var interval = 15;\r\n var timeout = 2e3;\r\n return new _promise.default(function(resolve) {\r\n var check = function() {\r\n if (isWebFontLoaded(text, fontWeight)) {\r\n clear()\r\n }\r\n };\r\n var clear = function() {\r\n clearInterval(intervalId);\r\n clearTimeout(timeoutId);\r\n resolve()\r\n };\r\n var intervalId = setInterval(check, interval);\r\n var timeoutId = setTimeout(clear, timeout)\r\n })\r\n}\r\n\r\nfunction autoInit() {\r\n init({\r\n _autoInit: true,\r\n _forceTimeout: true\r\n });\r\n if ((0, _renderer.default)(DX_LINK_SELECTOR, context).length) {\r\n throw _ui.default.Error(\"E0022\")\r\n }\r\n}\r\nif ((0, _window.hasWindow)()) {\r\n autoInit()\r\n} else {\r\n ready(autoInit)\r\n}\r\nviewPortChanged.add(function(viewPort, prevViewPort) {\r\n initDeferred.done(function() {\r\n detachCssClasses(prevViewPort);\r\n attachCssClasses(viewPort)\r\n })\r\n});\r\n_devices.default.changed.add(function() {\r\n init({\r\n _autoInit: true\r\n })\r\n});\r\n\r\nfunction resetTheme() {\r\n $activeThemeLink && $activeThemeLink.attr(\"href\", \"about:blank\");\r\n currentThemeName = null;\r\n pendingThemeName = null;\r\n initDeferred = new _deferred.Deferred\r\n}\r\n\r\nfunction initialized(callback) {\r\n initDeferred.done(callback)\r\n}\r\n\r\nfunction setDefaultTimeout(timeout) {\r\n defaultTimeout = timeout\r\n}\r\nvar _default = {\r\n setDefaultTimeout: setDefaultTimeout,\r\n initialized: initialized,\r\n resetTheme: resetTheme,\r\n ready: themeReady,\r\n waitWebFont: waitWebFont,\r\n isWebFontLoaded: isWebFontLoaded,\r\n isDark: isDark,\r\n isGeneric: isGeneric,\r\n isMaterial: isMaterial,\r\n detachCssClasses: detachCssClasses,\r\n attachCssClasses: attachCssClasses,\r\n current: current,\r\n waitForThemeLoad: waitForThemeLoad,\r\n isPendingThemeLoaded: isPendingThemeLoaded\r\n};\r\nexports.default = _default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/themes_callback.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.themeReadyCallback = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../core/utils/callbacks\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar themeReadyCallback = new _callbacks.default;\r\nexports.themeReadyCallback = themeReadyCallback;\r\n","/**\r\n * DevExtreme (ui/validation_message.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _string = require(\"../core/utils/string\");\r\nvar _position = require(\"../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar INVALID_MESSAGE = \"dx-invalid-message\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar INVALID_MESSAGE_ALWAYS = \"dx-invalid-message-always\";\r\nvar INVALID_MESSAGE_CONTENT = \"dx-invalid-message-content\";\r\nvar VALIDATION_MESSAGE_MIN_WIDTH = 100;\r\nvar ValidationMessage = _overlay.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n integrationOptions: {},\r\n templatesRenderAsynchronously: false,\r\n shading: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n closeOnOutsideClick: false,\r\n closeOnTargetScroll: false,\r\n animation: null,\r\n visible: true,\r\n propagateOutsideClick: true,\r\n _checkParentVisibility: false,\r\n rtlEnabled: false,\r\n contentTemplate: this._renderInnerHtml,\r\n maxWidth: \"100%\",\r\n mode: \"auto\",\r\n validationErrors: void 0,\r\n positionRequest: void 0,\r\n describedElement: void 0,\r\n boundary: void 0,\r\n offset: {\r\n h: 0,\r\n v: 0\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.updateMaxWidth();\r\n this._updatePosition()\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._ensureMessageNotEmpty();\r\n this._toggleModeClass();\r\n this._updateContentId()\r\n },\r\n _ensureMessageNotEmpty: function() {\r\n this._textMarkup = this._getTextMarkup();\r\n var shouldShowMessage = this.option(\"visible\") && this._textMarkup;\r\n this._toggleVisibilityClasses(shouldShowMessage)\r\n },\r\n _toggleVisibilityClasses: function(visible) {\r\n if (visible) {\r\n this.$element().addClass(INVALID_MESSAGE);\r\n this.$wrapper().addClass(INVALID_MESSAGE)\r\n } else {\r\n this.$element().removeClass(INVALID_MESSAGE);\r\n this.$wrapper().removeClass(INVALID_MESSAGE)\r\n }\r\n },\r\n _updateContentId: function() {\r\n var describedElement = this.option(\"describedElement\") || this.option(\"container\");\r\n var contentId = (0, _renderer.default)(describedElement).attr(\"aria-describedby\");\r\n this.$content().addClass(INVALID_MESSAGE_CONTENT).attr(\"id\", contentId)\r\n },\r\n _renderInnerHtml: function(element) {\r\n var $element = element && (0, _renderer.default)(element);\r\n null === $element || void 0 === $element ? void 0 : $element.html(this._textMarkup)\r\n },\r\n _getTextMarkup: function() {\r\n var _this$option;\r\n var validationErrors = null !== (_this$option = this.option(\"validationErrors\")) && void 0 !== _this$option ? _this$option : [];\r\n var validationErrorMessage = \"\";\r\n validationErrors.forEach(function(err) {\r\n var _err$message;\r\n var separator = validationErrorMessage ? \"
\" : \"\";\r\n validationErrorMessage += separator + (0, _string.encodeHtml)(null !== (_err$message = null === err || void 0 === err ? void 0 : err.message) && void 0 !== _err$message ? _err$message : \"\")\r\n });\r\n return validationErrorMessage\r\n },\r\n _toggleModeClass: function() {\r\n var mode = this.option(\"mode\");\r\n this.$wrapper().toggleClass(INVALID_MESSAGE_AUTO, \"auto\" === mode).toggleClass(INVALID_MESSAGE_ALWAYS, \"always\" === mode)\r\n },\r\n updateMaxWidth: function() {\r\n var _target$outerWidth;\r\n var target = this.option(\"target\");\r\n var targetWidth = (null === target || void 0 === target ? void 0 : null === (_target$outerWidth = target.outerWidth) || void 0 === _target$outerWidth ? void 0 : _target$outerWidth.call(target)) || (0, _renderer.default)(target).outerWidth();\r\n var maxWidth = \"100%\";\r\n if (targetWidth) {\r\n maxWidth = Math.max(targetWidth, VALIDATION_MESSAGE_MIN_WIDTH)\r\n }\r\n this.option({\r\n maxWidth: maxWidth\r\n })\r\n },\r\n _updatePosition: function() {\r\n var _this$option2 = this.option(),\r\n positionRequest = _this$option2.positionRequest,\r\n rtlEnabled = _this$option2.rtlEnabled,\r\n offset = _this$option2.offset,\r\n boundary = _this$option2.boundary;\r\n var positionSide = (0, _position.getDefaultAlignment)(rtlEnabled);\r\n var verticalPositions = \"below\" === positionRequest ? [\" top\", \" bottom\"] : [\" bottom\", \" top\"];\r\n if (rtlEnabled) {\r\n offset.h = -offset.h\r\n }\r\n if (\"below\" !== positionRequest) {\r\n offset.v = -offset.v\r\n }\r\n this.option(\"position\", {\r\n offset: offset,\r\n boundary: boundary,\r\n my: positionSide + verticalPositions[0],\r\n at: positionSide + verticalPositions[1],\r\n collision: \"none flip\"\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name,\r\n value = args.value;\r\n switch (name) {\r\n case \"target\":\r\n this.updateMaxWidth();\r\n this.callBase(args);\r\n break;\r\n case \"boundary\":\r\n this.option(\"position.boundary\", value);\r\n break;\r\n case \"mode\":\r\n this._toggleModeClass(value);\r\n break;\r\n case \"rtlEnabled\":\r\n case \"offset\":\r\n case \"positionRequest\":\r\n this._updatePosition();\r\n break;\r\n case \"validationErrors\":\r\n this._ensureMessageNotEmpty();\r\n this._renderInnerHtml(this.$content());\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxValidationMessage\", ValidationMessage);\r\nvar _default = ValidationMessage;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.strategy.action_sheet.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiToolbar = _interopRequireDefault(require(\"./ui.toolbar.strategy\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _action_sheet = _interopRequireDefault(require(\"../action_sheet\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ActionSheetStrategy = _uiToolbar.default.inherit({\r\n NAME: \"actionSheet\",\r\n _getMenuItemTemplate: function() {\r\n return this._toolbar._getTemplate(\"actionSheetItem\")\r\n },\r\n render: function() {\r\n if (!this._hasVisibleMenuItems()) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _menuWidgetClass: function() {\r\n return _action_sheet.default\r\n },\r\n _menuContainer: function() {\r\n return this._toolbar.$element()\r\n },\r\n _widgetOptions: function() {\r\n return (0, _extend.extend)({}, this.callBase(), {\r\n target: this._$button,\r\n showTitle: false\r\n })\r\n },\r\n _menuButtonOptions: function() {\r\n return (0, _extend.extend)({}, this.callBase(), {\r\n icon: \"overflow\"\r\n })\r\n },\r\n _toggleMenu: function() {\r\n this.callBase.apply(this, arguments);\r\n this._menu.toggle(this._menuShown);\r\n this._menuShown = false\r\n }\r\n});\r\nvar _default = ActionSheetStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.strategy.drop_down_menu.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _uiToolbar = _interopRequireDefault(require(\"./ui.toolbar.strategy\"));\r\nvar _uiToolbar2 = _interopRequireDefault(require(\"./ui.toolbar.menu\"));\r\nvar _drop_down_menu = _interopRequireDefault(require(\"../drop_down_menu\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _popover_contants = require(\"../popover_contants\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar MENU_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar DropDownMenuStrategy = _uiToolbar.default.inherit({\r\n NAME: \"dropDownMenu\",\r\n render: function() {\r\n if (!this._hasVisibleMenuItems()) {\r\n return\r\n }\r\n this._renderMenuButtonContainer();\r\n this._renderWidget()\r\n },\r\n renderMenuItems: function() {\r\n if (!this._menu) {\r\n this.render()\r\n }\r\n this.callBase();\r\n if (this._menu && !this._menu.option(\"items\").length) {\r\n this._menu.close()\r\n }\r\n },\r\n _menuWidgetClass: function() {\r\n return _drop_down_menu.default\r\n },\r\n _widgetOptions: function() {\r\n var that = this;\r\n var topAndBottomOffset = 2 * _popover_contants.POPOVER_BOUNDARY_OFFSET;\r\n return (0, _extend.extend)(this.callBase(), {\r\n deferRendering: true,\r\n container: that._toolbar.option(\"menuContainer\"),\r\n popupMaxHeight: \"android\" === _devices.default.current().platform ? _dom_adapter.default.getDocumentElement().clientHeight - topAndBottomOffset : void 0,\r\n menuWidget: _uiToolbar2.default,\r\n onOptionChanged: function(e) {\r\n if (\"items\" === e.name) {\r\n that._updateMenuVisibility(e.value)\r\n }\r\n },\r\n popupPosition: {\r\n at: \"bottom right\",\r\n my: \"top right\"\r\n }\r\n })\r\n },\r\n _updateMenuVisibility: function(menuItems) {\r\n var items = menuItems || this._getMenuItems();\r\n var isMenuVisible = items.length && this._hasVisibleMenuItems(items);\r\n this._toggleMenuVisibility(isMenuVisible)\r\n },\r\n _toggleMenuVisibility: function(value) {\r\n if (!this._menuContainer()) {\r\n return\r\n }\r\n this._menuContainer().toggleClass(MENU_INVISIBLE_CLASS, !value)\r\n },\r\n _menuContainer: function() {\r\n return this._$menuButtonContainer\r\n }\r\n});\r\nvar _default = DropDownMenuStrategy;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/toolbar/ui.toolbar.menu.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiList = require(\"../list/ui.list.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TOOLBAR_MENU_ACTION_CLASS = \"dx-toolbar-menu-action\";\r\nvar TOOLBAR_HIDDEN_BUTTON_CLASS = \"dx-toolbar-hidden-button\";\r\nvar TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS = \"dx-toolbar-hidden-button-group\";\r\nvar TOOLBAR_MENU_SECTION_CLASS = \"dx-toolbar-menu-section\";\r\nvar TOOLBAR_MENU_LAST_SECTION_CLASS = \"dx-toolbar-menu-last-section\";\r\nvar ToolbarMenu = _uiList.ListBase.inherit({\r\n _activeStateUnit: \".\" + TOOLBAR_MENU_ACTION_CLASS,\r\n _initMarkup: function() {\r\n this._renderSections();\r\n this.callBase()\r\n },\r\n _getSections: function() {\r\n return this._itemContainer().children()\r\n },\r\n _itemElements: function() {\r\n return this._getSections().children(this._itemSelector())\r\n },\r\n _renderSections: function() {\r\n var that = this;\r\n var $container = this._itemContainer();\r\n (0, _iterator.each)([\"before\", \"center\", \"after\", \"menu\"], function() {\r\n var sectionName = \"_$\" + this + \"Section\";\r\n var $section = that[sectionName];\r\n if (!$section) {\r\n that[sectionName] = $section = (0, _renderer.default)(\"
\").addClass(TOOLBAR_MENU_SECTION_CLASS)\r\n }\r\n $section.appendTo($container)\r\n })\r\n },\r\n _renderItems: function() {\r\n this.callBase.apply(this, arguments);\r\n this._updateSections()\r\n },\r\n _updateSections: function() {\r\n var $sections = this.$element().find(\".\" + TOOLBAR_MENU_SECTION_CLASS);\r\n $sections.removeClass(TOOLBAR_MENU_LAST_SECTION_CLASS);\r\n $sections.not(\":empty\").eq(-1).addClass(TOOLBAR_MENU_LAST_SECTION_CLASS)\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var location = item.location || \"menu\";\r\n var $container = this[\"_$\" + location + \"Section\"];\r\n var itemElement = this.callBase(index, item, $container, $after);\r\n if (this._getItemTemplateName({\r\n itemData: item\r\n })) {\r\n itemElement.addClass(\"dx-toolbar-menu-custom\")\r\n }\r\n if (\"menu\" === location || \"dxButton\" === item.widget || \"dxButtonGroup\" === item.widget || item.isAction) {\r\n itemElement.addClass(TOOLBAR_MENU_ACTION_CLASS)\r\n }\r\n if (\"dxButton\" === item.widget) {\r\n itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_CLASS)\r\n }\r\n if (\"dxButtonGroup\" === item.widget) {\r\n itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS)\r\n }\r\n itemElement.addClass(item.cssClass);\r\n return itemElement\r\n },\r\n _getItemTemplateName: function(args) {\r\n var template = this.callBase(args);\r\n var data = args.itemData;\r\n var menuTemplate = data && data.menuItemTemplate;\r\n return menuTemplate || template\r\n },\r\n _itemClickHandler: function(e, args, config) {\r\n if ((0, _renderer.default)(e.target).closest(\".\" + TOOLBAR_MENU_ACTION_CLASS).length) {\r\n this.callBase(e, args, config)\r\n }\r\n },\r\n _clean: function() {\r\n this._getSections().empty();\r\n this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbarMenu\", ToolbarMenu);\r\nvar _default = ToolbarMenu;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_view/ui.tree_view.base.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _element = require(\"../../core/element\");\r\nvar _check_box = _interopRequireDefault(require(\"../check_box\"));\r\nvar _ui = _interopRequireDefault(require(\"../hierarchical_collection/ui.hierarchical_collection_widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _double_click = require(\"../../events/double_click\");\r\nvar _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _ui2 = _interopRequireDefault(require(\"../scroll_view/ui.scrollable\"));\r\nvar _load_indicator = _interopRequireDefault(require(\"../load_indicator\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _ui3 = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar WIDGET_CLASS = \"dx-treeview\";\r\nvar NODE_CLASS = \"\".concat(WIDGET_CLASS, \"-node\");\r\nvar NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container\");\r\nvar NODE_LOAD_INDICATOR_CLASS = \"\".concat(NODE_CLASS, \"-loadindicator\");\r\nvar OPENED_NODE_CONTAINER_CLASS = \"\".concat(NODE_CLASS, \"-container-opened\");\r\nvar IS_LEAF = \"\".concat(NODE_CLASS, \"-is-leaf\");\r\nvar ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-item\");\r\nvar ITEM_WITH_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-with-checkbox\");\r\nvar ITEM_WITHOUT_CHECKBOX_CLASS = \"\".concat(ITEM_CLASS, \"-without-checkbox\");\r\nvar ITEM_DATA_KEY = \"\".concat(ITEM_CLASS, \"-data\");\r\nvar TOGGLE_ITEM_VISIBILITY_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility\");\r\nvar LOAD_INDICATOR_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator\");\r\nvar LOAD_INDICATOR_WRAPPER_CLASS = \"\".concat(WIDGET_CLASS, \"-loadindicator-wrapper\");\r\nvar TOGGLE_ITEM_VISIBILITY_OPENED_CLASS = \"\".concat(WIDGET_CLASS, \"-toggle-item-visibility-opened\");\r\nvar SELECT_ALL_ITEM_CLASS = \"\".concat(WIDGET_CLASS, \"-select-all-item\");\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar SELECTED_ITEM_CLASS = \"dx-state-selected\";\r\nvar EXPAND_EVENT_NAMESPACE = \"dxTreeView_expand\";\r\nvar DATA_ITEM_ID = \"data-item-id\";\r\nvar TreeViewBase = _ui.default.inherit({\r\n _supportedKeys: function(e) {\r\n var _this = this;\r\n var click = function(e) {\r\n var $itemElement = (0, _renderer.default)(_this.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n e.target = $itemElement;\r\n e.currentTarget = $itemElement;\r\n _this._itemClickHandler(e, $itemElement.children(\".\" + ITEM_CLASS));\r\n var expandEventName = _this._getEventNameByOption(_this.option(\"expandEvent\"));\r\n var expandByClick = expandEventName === (0, _index.addNamespace)(_click.name, EXPAND_EVENT_NAMESPACE);\r\n if (expandByClick) {\r\n _this._expandEventHandler(e)\r\n }\r\n };\r\n var select = function(e) {\r\n e.preventDefault();\r\n var $focusedElement = (0, _renderer.default)(_this.option(\"focusedElement\"));\r\n var checkboxInstance = _this._getCheckBoxInstance($focusedElement);\r\n if (!checkboxInstance.option(\"disabled\")) {\r\n var currentState = checkboxInstance.option(\"value\");\r\n _this._updateItemSelection(!currentState, $focusedElement.find(\".\" + ITEM_CLASS).get(0), true)\r\n }\r\n };\r\n var toggleExpandedNestedItems = function(state, e) {\r\n if (!this.option(\"expandAllEnabled\")) {\r\n return\r\n }\r\n e.preventDefault();\r\n var $rootElement = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n if (!$rootElement.length) {\r\n return\r\n }\r\n var rootItem = this._getItemData($rootElement.find(\".\".concat(ITEM_CLASS)));\r\n this._toggleExpandedNestedItems([rootItem], state)\r\n };\r\n return (0, _extend.extend)(this.callBase(), {\r\n enter: this._showCheckboxes() ? select : click,\r\n space: this._showCheckboxes() ? select : click,\r\n asterisk: toggleExpandedNestedItems.bind(this, true),\r\n minus: toggleExpandedNestedItems.bind(this, false)\r\n })\r\n },\r\n _toggleExpandedNestedItems: function(items, state) {\r\n if (!items) {\r\n return\r\n }\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n this._toggleExpandedState(node, state);\r\n this._toggleExpandedNestedItems(item.items, state)\r\n }\r\n },\r\n _getNodeElement: function(node, cache) {\r\n var key = this._encodeString(node.internalFields.key);\r\n if (cache) {\r\n if (!cache.$nodeByKey) {\r\n cache.$nodeByKey = {};\r\n this.$element().find(\".\".concat(NODE_CLASS)).each(function() {\r\n var $node = (0, _renderer.default)(this);\r\n var key = $node.attr(DATA_ITEM_ID);\r\n cache.$nodeByKey[key] = $node\r\n })\r\n }\r\n return cache.$nodeByKey[key] || (0, _renderer.default)()\r\n }\r\n var element = this.$element().get(0).querySelector(\"[\".concat(DATA_ITEM_ID, '=\"').concat(key, '\"]'));\r\n return (0, _renderer.default)(element)\r\n },\r\n _activeStateUnit: \".\" + ITEM_CLASS,\r\n _widgetClass: function() {\r\n return WIDGET_CLASS\r\n },\r\n _getDefaultOptions: function() {\r\n var defaultOptions = (0, _extend.extend)(this.callBase(), {\r\n animationEnabled: true,\r\n dataStructure: \"tree\",\r\n deferRendering: true,\r\n expandAllEnabled: false,\r\n hasItemsExpr: \"hasItems\",\r\n selectNodesRecursive: true,\r\n expandNodesRecursive: true,\r\n showCheckBoxesMode: \"none\",\r\n selectAllText: _message.default.format(\"dxList-selectAll\"),\r\n onItemSelectionChanged: null,\r\n onItemExpanded: null,\r\n onItemCollapsed: null,\r\n scrollDirection: \"vertical\",\r\n virtualModeEnabled: false,\r\n rootValue: 0,\r\n focusStateEnabled: false,\r\n selectionMode: \"multiple\",\r\n expandEvent: \"dblclick\",\r\n selectByClick: false,\r\n createChildren: null,\r\n onSelectAllValueChanged: null\r\n });\r\n return (0, _extend.extend)(true, defaultOptions, {\r\n integrationOptions: {\r\n useDeferUpdateForTemplates: false\r\n }\r\n })\r\n },\r\n _initSelectedItems: _common.noop,\r\n _syncSelectionOptions: _common.asyncNoop,\r\n _fireSelectionChanged: function() {\r\n var selectionChangePromise = this._selectionChangePromise;\r\n (0, _deferred.when)(selectionChangePromise).done(function() {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })()\r\n }.bind(this))\r\n },\r\n _createSelectAllValueChangedAction: function() {\r\n this._selectAllValueChangedAction = this._createActionByOption(\"onSelectAllValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _fireSelectAllValueChanged: function(value) {\r\n this._selectAllValueChangedAction({\r\n value: value\r\n })\r\n },\r\n _checkBoxModeChange: function(value, previousValue) {\r\n if (\"none\" === previousValue || \"none\" === value) {\r\n this.repaint();\r\n return\r\n }\r\n var selectAllExists = this._$selectAllItem && this._$selectAllItem.length;\r\n switch (value) {\r\n case \"selectAll\":\r\n if (!selectAllExists) {\r\n this._createSelectAllValueChangedAction();\r\n this._renderSelectAllItem()\r\n }\r\n break;\r\n case \"normal\":\r\n if (selectAllExists) {\r\n this._$selectAllItem.remove();\r\n delete this._$selectAllItem\r\n }\r\n }\r\n },\r\n _removeSelection: function() {\r\n var that = this;\r\n (0, _iterator.each)(this._dataAdapter.getFullData(), function(_, node) {\r\n if (!that._hasChildren(node)) {\r\n return\r\n }\r\n that._dataAdapter.toggleSelection(node.internalFields.key, false, true)\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name,\r\n value = args.value,\r\n previousValue = args.previousValue;\r\n switch (name) {\r\n case \"selectAllText\":\r\n if (this._$selectAllItem) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"text\", value)\r\n }\r\n break;\r\n case \"showCheckBoxesMode\":\r\n this._checkBoxModeChange(value, previousValue);\r\n break;\r\n case \"scrollDirection\":\r\n this._scrollableContainer.option(\"direction\", value);\r\n break;\r\n case \"items\":\r\n delete this._$selectAllItem;\r\n this.callBase(args);\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initDataAdapter();\r\n this._filter = {};\r\n break;\r\n case \"hasItemsExpr\":\r\n this._initAccessors();\r\n this.repaint();\r\n break;\r\n case \"expandEvent\":\r\n this._initExpandEvent();\r\n break;\r\n case \"deferRendering\":\r\n case \"dataStructure\":\r\n case \"rootValue\":\r\n case \"createChildren\":\r\n case \"expandNodesRecursive\":\r\n case \"onItemSelectionChanged\":\r\n case \"onItemExpanded\":\r\n case \"onItemCollapsed\":\r\n case \"expandAllEnabled\":\r\n case \"animationEnabled\":\r\n case \"virtualModeEnabled\":\r\n case \"selectByClick\":\r\n break;\r\n case \"selectionMode\":\r\n this._initDataAdapter();\r\n this.callBase(args);\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n this._createSelectAllValueChangedAction();\r\n break;\r\n case \"selectNodesRecursive\":\r\n this._dataAdapter.setOption(\"recursiveSelection\", args.value);\r\n this.repaint();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _initDataSource: function() {\r\n if (this._useCustomChildrenLoader()) {\r\n this._loadChildrenByCustomLoader(null).done(function(newItems) {\r\n if (newItems && newItems.length) {\r\n this.option(\"items\", newItems)\r\n }\r\n }.bind(this))\r\n } else {\r\n this.callBase();\r\n this._isVirtualMode() && this._initVirtualMode()\r\n }\r\n },\r\n _initVirtualMode: function() {\r\n var filter = this._filter;\r\n if (!filter.custom) {\r\n filter.custom = this._dataSource.filter()\r\n }\r\n if (!filter.internal) {\r\n filter.internal = [this.option(\"parentIdExpr\"), this.option(\"rootValue\")]\r\n }\r\n },\r\n _useCustomChildrenLoader: function() {\r\n return (0, _type.isFunction)(this.option(\"createChildren\")) && this._isDataStructurePlain()\r\n },\r\n _loadChildrenByCustomLoader: function(parentNode) {\r\n var invocationResult = this.option(\"createChildren\").call(this, parentNode);\r\n if (Array.isArray(invocationResult)) {\r\n return (new _deferred.Deferred).resolve(invocationResult).promise()\r\n }\r\n if (invocationResult && (0, _type.isFunction)(invocationResult.then)) {\r\n return (0, _deferred.fromPromise)(invocationResult)\r\n }\r\n return (new _deferred.Deferred).resolve([]).promise()\r\n },\r\n _combineFilter: function() {\r\n if (!this._filter.custom || !this._filter.custom.length) {\r\n return this._filter.internal\r\n }\r\n return [this._filter.custom, this._filter.internal]\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._renderEmptyMessage()\r\n },\r\n _init: function() {\r\n this._filter = {};\r\n this.callBase();\r\n this._initStoreChangeHandlers()\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n var items = this.option(\"items\");\r\n if (this._initialized && this._isVirtualMode() && items.length) {\r\n return\r\n }\r\n this.option(\"items\", newItems)\r\n },\r\n _removeTreeViewLoadIndicator: function() {\r\n if (!this._treeViewLoadIndicator) {\r\n return\r\n }\r\n this._treeViewLoadIndicator.remove();\r\n this._treeViewLoadIndicator = null\r\n },\r\n _createTreeViewLoadIndicator: function() {\r\n this._treeViewLoadIndicator = (0, _renderer.default)(\"
\").addClass(LOAD_INDICATOR_CLASS);\r\n this._createComponent(this._treeViewLoadIndicator, _load_indicator.default, {});\r\n return this._treeViewLoadIndicator\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n var resultFilter;\r\n if (this._isVirtualMode()) {\r\n resultFilter = this._combineFilter();\r\n this._dataSource.filter(resultFilter)\r\n }\r\n if (isLoading && !this._dataSource.isLoaded()) {\r\n this.option(\"items\", []);\r\n var $wrapper = (0, _renderer.default)(\"
\").addClass(LOAD_INDICATOR_WRAPPER_CLASS);\r\n this._createTreeViewLoadIndicator().appendTo($wrapper);\r\n this.itemsContainer().append($wrapper);\r\n if (this._isVirtualMode() && this._dataSource.filter() !== resultFilter) {\r\n this._dataSource.filter([])\r\n }\r\n } else {\r\n this._removeTreeViewLoadIndicator()\r\n }\r\n },\r\n _initStoreChangeHandlers: function() {\r\n var _this2 = this;\r\n if (\"plain\" !== this.option(\"dataStructure\")) {\r\n return\r\n }\r\n this._dataSource && this._dataSource.store().on(\"inserted\", function(newItem) {\r\n _this2.option().items = _this2.option(\"items\").concat(newItem);\r\n _this2._dataAdapter.addItem(newItem);\r\n if (!_this2._dataAdapter.isFiltered(newItem)) {\r\n return\r\n }\r\n _this2._updateLevel(_this2._parentIdGetter(newItem))\r\n }).on(\"removed\", function(removedKey) {\r\n var node = _this2._dataAdapter.getNodeByKey(removedKey);\r\n if ((0, _type.isDefined)(node)) {\r\n _this2.option(\"items\")[_this2._dataAdapter.getIndexByKey(node.internalFields.key)] = 0;\r\n _this2._markChildrenItemsToRemove(node);\r\n _this2._removeItems();\r\n _this2._dataAdapter.removeItem(removedKey);\r\n _this2._updateLevel(_this2._parentIdGetter(node))\r\n }\r\n })\r\n },\r\n _markChildrenItemsToRemove: function(node) {\r\n var _this3 = this;\r\n var keys = node.internalFields.childrenKeys;\r\n (0, _iterator.each)(keys, function(_, key) {\r\n _this3.option(\"items\")[_this3._dataAdapter.getIndexByKey(key)] = 0;\r\n _this3._markChildrenItemsToRemove(_this3._dataAdapter.getNodeByKey(key))\r\n })\r\n },\r\n _removeItems: function() {\r\n var _this4 = this;\r\n var items = (0, _extend.extend)(true, [], this.option(\"items\"));\r\n var counter = 0;\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (!item) {\r\n _this4.option(\"items\").splice(index - counter, 1);\r\n counter++\r\n }\r\n })\r\n },\r\n _updateLevel: function(parentId) {\r\n var $container = this._getContainerByParentKey(parentId);\r\n this._renderItems($container, this._dataAdapter.getChildrenNodes(parentId))\r\n },\r\n _getOldContainer: function($itemElement) {\r\n if ($itemElement.length) {\r\n return $itemElement.children(\".\".concat(NODE_CONTAINER_CLASS))\r\n }\r\n if (this._scrollableContainer) {\r\n return this._scrollableContainer.$content().children()\r\n }\r\n return (0, _renderer.default)()\r\n },\r\n _getContainerByParentKey: function(parentId) {\r\n var node = this._dataAdapter.getNodeByKey(parentId);\r\n var $itemElement = node ? this._getNodeElement(node) : [];\r\n this._getOldContainer($itemElement).remove();\r\n var $container = this._renderNodeContainer($itemElement);\r\n if (this._isRootLevel(parentId)) {\r\n if (!this._scrollableContainer) {\r\n this._renderScrollableContainer()\r\n }\r\n this._scrollableContainer.$content().append($container)\r\n }\r\n return $container\r\n },\r\n _isRootLevel: function(parentId) {\r\n return parentId === this.option(\"rootValue\")\r\n },\r\n _getAccessors: function() {\r\n var accessors = this.callBase();\r\n accessors.push(\"hasItems\");\r\n return accessors\r\n },\r\n _getDataAdapterOptions: function() {\r\n return {\r\n rootValue: this.option(\"rootValue\"),\r\n multipleSelection: !this._isSingleSelection(),\r\n recursiveSelection: this._isRecursiveSelection(),\r\n recursiveExpansion: this.option(\"expandNodesRecursive\"),\r\n selectionRequired: this.option(\"selectionRequired\"),\r\n dataType: this.option(\"dataStructure\"),\r\n sort: this._dataSource && this._dataSource.sort()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._renderScrollableContainer();\r\n this._renderEmptyMessage(this._dataAdapter.getRootNodes());\r\n this.callBase();\r\n this.setAria(\"role\", \"tree\")\r\n },\r\n _renderContentImpl: function() {\r\n var $nodeContainer = this._renderNodeContainer();\r\n this._scrollableContainer.$content().append($nodeContainer);\r\n if (!this.option(\"items\") || !this.option(\"items\").length) {\r\n return\r\n }\r\n this._renderItems($nodeContainer, this._dataAdapter.getRootNodes());\r\n this._initExpandEvent();\r\n if (this._selectAllEnabled()) {\r\n this._createSelectAllValueChangedAction();\r\n this._renderSelectAllItem($nodeContainer)\r\n }\r\n },\r\n _isVirtualMode: function() {\r\n return this.option(\"virtualModeEnabled\") && this._isDataStructurePlain() && !!this.option(\"dataSource\")\r\n },\r\n _isDataStructurePlain: function() {\r\n return \"plain\" === this.option(\"dataStructure\")\r\n },\r\n _fireContentReadyAction: function() {\r\n var dataSource = this.getDataSource();\r\n var skipContentReadyAction = dataSource && !dataSource.isLoaded();\r\n if (this._scrollableContainer && (0, _window.hasWindow)()) {\r\n this._scrollableContainer.update()\r\n }\r\n if (!skipContentReadyAction) {\r\n this.callBase()\r\n }\r\n if (this._scrollableContainer && (0, _window.hasWindow)()) {\r\n this._scrollableContainer.update()\r\n }\r\n },\r\n _renderScrollableContainer: function() {\r\n this._scrollableContainer = this._createComponent((0, _renderer.default)(\"
\").appendTo(this.$element()), _ui2.default, {\r\n direction: this.option(\"scrollDirection\"),\r\n useKeyboard: false\r\n })\r\n },\r\n _renderNodeContainer: function($parent) {\r\n var $container = (0, _renderer.default)(\"
    \").addClass(NODE_CONTAINER_CLASS);\r\n this.setAria(\"role\", \"group\", $container);\r\n if ($parent && $parent.length) {\r\n var itemData = this._getItemData($parent.children(\".\" + ITEM_CLASS));\r\n if (this._expandedGetter(itemData)) {\r\n $container.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n $container.appendTo($parent)\r\n }\r\n return $container\r\n },\r\n _createDOMElement: function($nodeContainer, node) {\r\n var $node = (0, _renderer.default)(\"
  • \").addClass(NODE_CLASS).attr(DATA_ITEM_ID, this._encodeString(node.internalFields.key)).prependTo($nodeContainer);\r\n this.setAria({\r\n role: \"treeitem\",\r\n label: this._displayGetter(node.internalFields.item) || \"\",\r\n expanded: node.internalFields.expanded || false,\r\n level: this._getLevel($nodeContainer)\r\n }, $node);\r\n return $node\r\n },\r\n _getLevel: function($nodeContainer) {\r\n var parent = $nodeContainer.parent();\r\n return parent.hasClass(\"dx-scrollable-content\") ? 1 : parseInt(parent.attr(\"aria-level\")) + 1\r\n },\r\n _showCheckboxes: function() {\r\n return \"none\" !== this.option(\"showCheckBoxesMode\")\r\n },\r\n _selectAllEnabled: function() {\r\n return \"selectAll\" === this.option(\"showCheckBoxesMode\") && !this._isSingleSelection()\r\n },\r\n _renderItems: function($nodeContainer, nodes) {\r\n var length = nodes.length - 1;\r\n for (var i = length; i >= 0; i--) {\r\n this._renderItem(i, nodes[i], $nodeContainer)\r\n }\r\n this._renderedItemsCount += nodes.length\r\n },\r\n _renderItem: function(nodeIndex, node, $nodeContainer) {\r\n var $node = this._createDOMElement($nodeContainer, node);\r\n var nodeData = node.internalFields;\r\n var showCheckBox = this._showCheckboxes();\r\n $node.addClass(showCheckBox ? ITEM_WITH_CHECKBOX_CLASS : ITEM_WITHOUT_CHECKBOX_CLASS);\r\n $node.toggleClass(INVISIBLE_STATE_CLASS, false === nodeData.item.visible);\r\n showCheckBox && this._renderCheckBox($node, node);\r\n this.setAria(\"selected\", nodeData.selected, $node);\r\n this._toggleSelectedClass($node, nodeData.selected);\r\n this.callBase(this._renderedItemsCount + nodeIndex, nodeData.item, $node);\r\n if (false !== nodeData.item.visible) {\r\n this._renderChildren($node, node)\r\n }\r\n },\r\n _setAriaSelected: function() {},\r\n _renderChildren: function($node, node) {\r\n var _this5 = this;\r\n if (!this._hasChildren(node)) {\r\n this._addLeafClass($node);\r\n return\r\n }\r\n this._renderToggleItemVisibilityIcon($node, node);\r\n if (this.option(\"deferRendering\") && !node.internalFields.expanded) {\r\n return\r\n }\r\n this._loadSublevel(node).done(function(childNodes) {\r\n _this5._renderSublevel($node, _this5._getActualNode(node), childNodes)\r\n })\r\n },\r\n _getActualNode: function(cachedNode) {\r\n return this._dataAdapter.getNodeByKey(cachedNode.internalFields.key)\r\n },\r\n _hasChildren: function(node) {\r\n if (this._isVirtualMode() || this._useCustomChildrenLoader()) {\r\n return false !== this._hasItemsGetter(node.internalFields.item)\r\n }\r\n return this.callBase(node)\r\n },\r\n _loadSublevel: function(node) {\r\n var _this6 = this;\r\n var deferred = new _deferred.Deferred;\r\n var childrenNodes = this._getChildNodes(node);\r\n if (childrenNodes.length) {\r\n deferred.resolve(childrenNodes)\r\n } else {\r\n this._loadNestedItems(node).done(function(items) {\r\n deferred.resolve(_this6._dataAdapter.getNodesByItems(items))\r\n })\r\n }\r\n return deferred.promise()\r\n },\r\n _renderSublevel: function($node, node, childNodes) {\r\n var $nestedNodeContainer = this._renderNodeContainer($node, node);\r\n var childNodesByChildrenKeys = childNodes.filter(function(childNode) {\r\n return node.internalFields.childrenKeys.indexOf(childNode.internalFields.key) !== -1\r\n });\r\n this._renderItems($nestedNodeContainer, childNodesByChildrenKeys);\r\n if (childNodesByChildrenKeys.length && !node.internalFields.selected) {\r\n var firstChild = childNodesByChildrenKeys[0];\r\n this._updateParentsState(firstChild, this._getNodeElement(firstChild))\r\n }\r\n this._normalizeIconState($node, childNodesByChildrenKeys.length);\r\n if (node.internalFields.expanded) {\r\n $nestedNodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n },\r\n _executeItemRenderAction: function(itemIndex, itemData, itemElement) {\r\n var node = this._getNode(itemElement);\r\n this._getItemRenderAction()({\r\n itemElement: itemElement,\r\n itemIndex: itemIndex,\r\n itemData: itemData,\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n _addLeafClass: function($node) {\r\n $node.addClass(IS_LEAF)\r\n },\r\n _expandEventHandler: function(e) {\r\n var $nodeElement = (0, _renderer.default)(e.currentTarget.parentNode);\r\n if (!$nodeElement.hasClass(IS_LEAF)) {\r\n this._toggleExpandedState(e.currentTarget, void 0, e)\r\n }\r\n },\r\n _initExpandEvent: function() {\r\n var expandedEventName = this._getEventNameByOption(this.option(\"expandEvent\"));\r\n var $itemsContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n _events_engine.default.off($itemsContainer, \".\" + EXPAND_EVENT_NAMESPACE, itemSelector);\r\n _events_engine.default.on($itemsContainer, expandedEventName, itemSelector, this._expandEventHandler.bind(this))\r\n },\r\n _getEventNameByOption: function(name) {\r\n var event = \"click\" === name ? _click.name : _double_click.name;\r\n return (0, _index.addNamespace)(event, EXPAND_EVENT_NAMESPACE)\r\n },\r\n _getNode: function(identifier) {\r\n if (!(0, _type.isDefined)(identifier)) {\r\n return null\r\n }\r\n if (identifier.internalFields) {\r\n return identifier\r\n }\r\n if ((0, _type.isPrimitive)(identifier)) {\r\n return this._dataAdapter.getNodeByKey(identifier)\r\n }\r\n var itemElement = (0, _renderer.default)(identifier).get(0);\r\n if (!itemElement) {\r\n return null\r\n }\r\n if (_dom_adapter.default.isElementNode(itemElement)) {\r\n return this._getNodeByElement(itemElement)\r\n }\r\n return this._dataAdapter.getNodeByItem(itemElement)\r\n },\r\n _getNodeByElement: function(itemElement) {\r\n var $node = (0, _renderer.default)(itemElement).closest(\".\" + NODE_CLASS);\r\n var key = this._decodeString($node.attr(DATA_ITEM_ID));\r\n return this._dataAdapter.getNodeByKey(key)\r\n },\r\n _toggleExpandedState: function(itemElement, state, e) {\r\n var node = this._getNode(itemElement);\r\n if (!node) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n if (node.internalFields.disabled) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n var currentState = node.internalFields.expanded;\r\n if (currentState === state) {\r\n return (new _deferred.Deferred).resolve().promise()\r\n }\r\n if (this._hasChildren(node)) {\r\n var $node = this._getNodeElement(node);\r\n if ($node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS, \":not(.\").concat(INVISIBLE_STATE_CLASS, \")\")).length) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n this._createLoadIndicator($node)\r\n }\r\n if (!(0, _type.isDefined)(state)) {\r\n state = !currentState\r\n }\r\n this._dataAdapter.toggleExpansion(node.internalFields.key, state);\r\n return this._updateExpandedItemsUI(node, state, e)\r\n },\r\n _createLoadIndicator: function($node) {\r\n var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n if ($icon.hasClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS) || $nodeContainer.not(\":empty\").length) {\r\n return\r\n }\r\n this._createComponent((0, _renderer.default)(\"
    \").addClass(NODE_LOAD_INDICATOR_CLASS), _load_indicator.default, {}).$element().appendTo($node);\r\n $icon.hide()\r\n },\r\n _renderToggleItemVisibilityIcon: function($node, node) {\r\n var $icon = (0, _renderer.default)(\"
    \").addClass(TOGGLE_ITEM_VISIBILITY_CLASS).appendTo($node);\r\n if (node.internalFields.expanded) {\r\n $icon.addClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS);\r\n $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS)\r\n }\r\n if (node.internalFields.disabled) {\r\n $icon.addClass(DISABLED_STATE_CLASS)\r\n }\r\n this._renderToggleItemVisibilityIconClick($icon, node)\r\n },\r\n _renderToggleItemVisibilityIconClick: function($icon, node) {\r\n var _this7 = this;\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n _events_engine.default.off($icon, eventName);\r\n _events_engine.default.on($icon, eventName, function(e) {\r\n _this7._toggleExpandedState(node.internalFields.key, void 0, e)\r\n })\r\n },\r\n _updateExpandedItemsUI: function(node, state, e) {\r\n var $node = this._getNodeElement(node);\r\n var isHiddenNode = !$node.length || state && $node.is(\":hidden\");\r\n if (this.option(\"expandNodesRecursive\") && isHiddenNode) {\r\n var parentNode = this._getNode(node.internalFields.parentKey);\r\n if (parentNode) {\r\n this._updateExpandedItemsUI(parentNode, state, e)\r\n }\r\n }\r\n var $icon = $node.children(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n $icon.toggleClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS, state);\r\n var nodeContainerExists = $nodeContainer.length > 0;\r\n var completionCallback = new _deferred.Deferred;\r\n if (!state || nodeContainerExists && !$nodeContainer.is(\":empty\")) {\r\n this._animateNodeContainer(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n }\r\n if (0 === node.internalFields.childrenKeys.length && (this._isVirtualMode() || this._useCustomChildrenLoader())) {\r\n this._loadNestedItemsWithUpdate(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n }\r\n this._renderSublevel($node, node, this._getChildNodes(node));\r\n this._fireContentReadyAction();\r\n this._animateNodeContainer(node, state, e, completionCallback);\r\n return completionCallback.promise()\r\n },\r\n _loadNestedItemsWithUpdate: function(node, state, e, completionCallback) {\r\n var _this8 = this;\r\n var $node = this._getNodeElement(node);\r\n this._loadNestedItems(node).done(function(items) {\r\n var actualNodeData = _this8._getActualNode(node);\r\n _this8._renderSublevel($node, actualNodeData, _this8._dataAdapter.getNodesByItems(items));\r\n if (!items || !items.length) {\r\n return\r\n }\r\n _this8._fireContentReadyAction();\r\n _this8._animateNodeContainer(actualNodeData, state, e, completionCallback)\r\n })\r\n },\r\n _loadNestedItems: function(node) {\r\n var _this9 = this;\r\n if (this._useCustomChildrenLoader()) {\r\n var publicNode = this._dataAdapter.getPublicNode(node);\r\n return this._loadChildrenByCustomLoader(publicNode).done(function(newItems) {\r\n if (!_this9._areNodesExists(newItems)) {\r\n _this9._appendItems(newItems)\r\n }\r\n })\r\n }\r\n if (!this._isVirtualMode()) {\r\n return (new _deferred.Deferred).resolve([]).promise()\r\n }\r\n this._filter.internal = [this.option(\"parentIdExpr\"), node.internalFields.key];\r\n this._dataSource.filter(this._combineFilter());\r\n return this._dataSource.load().done(function(newItems) {\r\n if (!_this9._areNodesExists(newItems)) {\r\n _this9._appendItems(newItems)\r\n }\r\n })\r\n },\r\n _areNodesExists: function(newItems, items) {\r\n var keyOfRootItem = this.keyOf(newItems[0]);\r\n var fullData = this._dataAdapter.getFullData();\r\n return !!this._dataAdapter.getNodeByKey(keyOfRootItem, fullData)\r\n },\r\n _appendItems: function(newItems) {\r\n this.option().items = this.option(\"items\").concat(newItems);\r\n this._initDataAdapter()\r\n },\r\n _animateNodeContainer: function(node, state, e, completionCallback) {\r\n var $node = this._getNodeElement(node);\r\n var $nodeContainer = $node.children(\".\".concat(NODE_CONTAINER_CLASS));\r\n if (node && completionCallback && 0 === $nodeContainer.length) {\r\n completionCallback.resolve()\r\n }\r\n $nodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS);\r\n var nodeHeight = $nodeContainer.height();\r\n _fx.default.stop($nodeContainer, true);\r\n _fx.default.animate($nodeContainer, {\r\n type: \"custom\",\r\n duration: this.option(\"animationEnabled\") ? 400 : 0,\r\n from: {\r\n maxHeight: state ? 0 : nodeHeight\r\n },\r\n to: {\r\n maxHeight: state ? nodeHeight : 0\r\n },\r\n complete: function() {\r\n $nodeContainer.css(\"maxHeight\", \"none\");\r\n $nodeContainer.toggleClass(OPENED_NODE_CONTAINER_CLASS, state);\r\n this.setAria(\"expanded\", state, $node);\r\n this._scrollableContainer.update();\r\n this._fireExpandedStateUpdatedEvent(state, node, e);\r\n if (completionCallback) {\r\n completionCallback.resolve()\r\n }\r\n }.bind(this)\r\n })\r\n },\r\n _fireExpandedStateUpdatedEvent: function(isExpanded, node, e) {\r\n if (!this._hasChildren(node)) {\r\n return\r\n }\r\n var optionName = isExpanded ? \"onItemExpanded\" : \"onItemCollapsed\";\r\n if ((0, _type.isDefined)(e)) {\r\n this._itemDXEventHandler(e, optionName, {\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n } else {\r\n var target = this._getNodeElement(node);\r\n this._itemEventHandler(target, optionName, {\r\n event: e,\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n }\r\n },\r\n _normalizeIconState: function($node, hasNewItems) {\r\n var $loadIndicator = $node.find(\".\".concat(NODE_LOAD_INDICATOR_CLASS));\r\n $loadIndicator.length && _load_indicator.default.getInstance($loadIndicator).option(\"visible\", false);\r\n if (hasNewItems) {\r\n var $icon = $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS);\r\n $icon.show();\r\n return\r\n }\r\n $node.find(\".\" + TOGGLE_ITEM_VISIBILITY_CLASS).removeClass(TOGGLE_ITEM_VISIBILITY_CLASS);\r\n $node.addClass(IS_LEAF)\r\n },\r\n _emptyMessageContainer: function() {\r\n return this._scrollableContainer ? this._scrollableContainer.content() : this.callBase()\r\n },\r\n _renderContent: function() {\r\n var items = this.option(\"items\");\r\n if (items && items.length) {\r\n this._contentAlreadyRendered = true\r\n }\r\n this.callBase()\r\n },\r\n _renderSelectAllItem: function($container) {\r\n $container = $container || this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).first();\r\n this._$selectAllItem = (0, _renderer.default)(\"
    \").addClass(SELECT_ALL_ITEM_CLASS);\r\n var value = this._dataAdapter.isAllSelected();\r\n this._createComponent(this._$selectAllItem, _check_box.default, {\r\n value: value,\r\n text: this.option(\"selectAllText\"),\r\n onValueChanged: this._onSelectAllCheckboxValueChanged.bind(this)\r\n });\r\n this._toggleSelectedClass(this._$selectAllItem, value);\r\n $container.before(this._$selectAllItem)\r\n },\r\n _onSelectAllCheckboxValueChanged: function(args) {\r\n this._toggleSelectAll(args);\r\n this._fireSelectAllValueChanged(args.value)\r\n },\r\n _toggleSelectAll: function(args) {\r\n this._dataAdapter.toggleSelectAll(args.value);\r\n this._updateItemsUI();\r\n this._fireSelectionChanged()\r\n },\r\n _renderCheckBox: function($node, node) {\r\n var $checkbox = (0, _renderer.default)(\"
    \").appendTo($node);\r\n this._createComponent($checkbox, _check_box.default, {\r\n value: node.internalFields.selected,\r\n onValueChanged: this._changeCheckboxValue.bind(this),\r\n focusStateEnabled: false,\r\n disabled: this._disabledGetter(node)\r\n })\r\n },\r\n _toggleSelectedClass: function($node, value) {\r\n $node.toggleClass(SELECTED_ITEM_CLASS, !!value)\r\n },\r\n _toggleNodeDisabledState: function(node, state) {\r\n var $node = this._getNodeElement(node);\r\n var $item = $node.find(\".\" + ITEM_CLASS).eq(0);\r\n this._dataAdapter.toggleNodeDisabledState(node.internalFields.key, state);\r\n $item.toggleClass(DISABLED_STATE_CLASS, !!state);\r\n if (this._showCheckboxes()) {\r\n var checkbox = this._getCheckBoxInstance($node);\r\n checkbox.option(\"disabled\", !!state)\r\n }\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n var node = this._dataAdapter.getNodeByItem(item);\r\n if (property === this.option(\"disabledExpr\")) {\r\n this._toggleNodeDisabledState(node, value)\r\n }\r\n },\r\n _changeCheckboxValue: function(e) {\r\n var $node = (0, _renderer.default)(e.element).parent(\".\" + NODE_CLASS);\r\n var $item = $node.children(\".\" + ITEM_CLASS);\r\n var item = this._getItemData($item);\r\n var node = this._getNodeByElement($item);\r\n var value = e.value;\r\n if (node && node.internalFields.selected === value) {\r\n return\r\n }\r\n this._updateItemSelection(value, item, e.event)\r\n },\r\n _isSingleSelection: function() {\r\n return \"single\" === this.option(\"selectionMode\")\r\n },\r\n _isRecursiveSelection: function() {\r\n return this.option(\"selectNodesRecursive\") && \"single\" !== this.option(\"selectionMode\")\r\n },\r\n _isLastSelectedBranch: function(publicNode, selectedNodesKeys, deep) {\r\n var keyIndex = selectedNodesKeys.indexOf(publicNode.key);\r\n if (keyIndex >= 0) {\r\n selectedNodesKeys.splice(keyIndex, 1)\r\n }\r\n if (deep) {\r\n (0, _iterator.each)(publicNode.children, function(_, childNode) {\r\n this._isLastSelectedBranch(childNode, selectedNodesKeys, true)\r\n }.bind(this))\r\n }\r\n if (publicNode.parent) {\r\n this._isLastSelectedBranch(publicNode.parent, selectedNodesKeys)\r\n }\r\n return 0 === selectedNodesKeys.length\r\n },\r\n _isLastRequired: function(node) {\r\n var selectionRequired = this.option(\"selectionRequired\");\r\n var isSingleMode = this._isSingleSelection();\r\n var selectedNodesKeys = this.getSelectedNodeKeys();\r\n if (!selectionRequired) {\r\n return\r\n }\r\n if (isSingleMode) {\r\n return 1 === selectedNodesKeys.length\r\n } else {\r\n return this._isLastSelectedBranch(node.internalFields.publicNode, selectedNodesKeys.slice(), true)\r\n }\r\n },\r\n _updateItemSelection: function(value, itemElement, dxEvent) {\r\n var _this10 = this;\r\n var node = this._getNode(itemElement);\r\n if (!node || false === node.visible) {\r\n return false\r\n }\r\n if (node.internalFields.selected === value) {\r\n return true\r\n }\r\n if (!value && this._isLastRequired(node)) {\r\n if (this._showCheckboxes()) {\r\n var $node = this._getNodeElement(node);\r\n this._getCheckBoxInstance($node).option(\"value\", true)\r\n }\r\n return false\r\n }\r\n if (value && this._isSingleSelection()) {\r\n var selectedKeys = this.getSelectedNodeKeys();\r\n (0, _iterator.each)(selectedKeys, function(index, key) {\r\n _this10._dataAdapter.toggleSelection(key, false);\r\n _this10._updateItemsUI();\r\n _this10._fireItemSelectionChanged(_this10._getNode(key))\r\n })\r\n }\r\n this._dataAdapter.toggleSelection(node.internalFields.key, value);\r\n var isAllSelected = this._dataAdapter.isAllSelected();\r\n var needFireSelectAllChanged = this._selectAllEnabled() && this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\") !== isAllSelected;\r\n this._updateItemsUI();\r\n this._fireItemSelectionChanged(node, dxEvent);\r\n this._fireSelectionChanged();\r\n if (needFireSelectAllChanged) {\r\n this._fireSelectAllValueChanged(isAllSelected)\r\n }\r\n return true\r\n },\r\n _fireItemSelectionChanged: function(node, dxEvent) {\r\n var initiator = dxEvent || this._findItemElementByItem(node.internalFields.item);\r\n var handler = dxEvent ? this._itemDXEventHandler : this._itemEventHandler;\r\n handler.call(this, initiator, \"onItemSelectionChanged\", {\r\n node: this._dataAdapter.getPublicNode(node),\r\n itemData: node.internalFields.item\r\n })\r\n },\r\n _getCheckBoxInstance: function($node) {\r\n return $node.children(\".dx-checkbox\").dxCheckBox(\"instance\")\r\n },\r\n _updateItemsUI: function() {\r\n var _this11 = this;\r\n var cache = {};\r\n (0, _iterator.each)(this._dataAdapter.getData(), function(_, node) {\r\n var $node = _this11._getNodeElement(node, cache);\r\n var nodeSelection = node.internalFields.selected;\r\n if (!$node.length) {\r\n return\r\n }\r\n _this11._toggleSelectedClass($node, nodeSelection);\r\n _this11.setAria(\"selected\", nodeSelection, $node);\r\n if (_this11._showCheckboxes()) {\r\n _this11._getCheckBoxInstance($node).option(\"value\", nodeSelection)\r\n }\r\n });\r\n if (this._selectAllEnabled()) {\r\n var selectAllCheckbox = this._$selectAllItem.dxCheckBox(\"instance\");\r\n selectAllCheckbox.option(\"onValueChanged\", void 0);\r\n selectAllCheckbox.option(\"value\", this._dataAdapter.isAllSelected());\r\n selectAllCheckbox.option(\"onValueChanged\", this._onSelectAllCheckboxValueChanged.bind(this))\r\n }\r\n },\r\n _updateParentsState: function(node, $node) {\r\n if (!$node) {\r\n return\r\n }\r\n var parentNode = this._dataAdapter.getNodeByKey(node.internalFields.parentKey);\r\n var $parentNode = (0, _renderer.default)($node.parents(\".\" + NODE_CLASS)[0]);\r\n if (this._showCheckboxes()) {\r\n var parentValue = parentNode.internalFields.selected;\r\n this._getCheckBoxInstance($parentNode).option(\"value\", parentValue);\r\n this._toggleSelectedClass($parentNode, parentValue)\r\n }\r\n if (parentNode.internalFields.parentKey !== this.option(\"rootValue\")) {\r\n this._updateParentsState(parentNode, $parentNode)\r\n }\r\n },\r\n _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n var $itemElement = (0, _renderer.default)(initiator).closest(\".\" + NODE_CLASS).children(\".\" + ITEM_CLASS);\r\n return action((0, _extend.extend)(this._extendActionArgs($itemElement), actionArgs))\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n this._createEventHandler(\"onItemContextMenu\", e)\r\n },\r\n _itemHoldHandler: function(e) {\r\n this._createEventHandler(\"onItemHold\", e)\r\n },\r\n _createEventHandler: function(eventName, e) {\r\n var node = this._getNodeByElement(e.currentTarget);\r\n this._itemDXEventHandler(e, eventName, {\r\n node: this._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _attachClickEvent: function() {\r\n var clickSelector = \".\" + this._itemClass();\r\n var pointerDownSelector = \".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS;\r\n var eventName = (0, _index.addNamespace)(_click.name, this.NAME);\r\n var pointerDownEvent = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n var $itemContainer = this._itemContainer();\r\n var that = this;\r\n _events_engine.default.off($itemContainer, eventName, clickSelector);\r\n _events_engine.default.off($itemContainer, pointerDownEvent, pointerDownSelector);\r\n _events_engine.default.on($itemContainer, eventName, clickSelector, function(e) {\r\n that._itemClickHandler(e, (0, _renderer.default)(this))\r\n });\r\n _events_engine.default.on($itemContainer, pointerDownEvent, pointerDownSelector, function(e) {\r\n that._itemPointerDownHandler(e)\r\n })\r\n },\r\n _itemClickHandler: function(e, $item) {\r\n var itemData = this._getItemData($item);\r\n var node = this._getNodeByElement($item);\r\n this._itemDXEventHandler(e, \"onItemClick\", {\r\n node: this._dataAdapter.getPublicNode(node)\r\n });\r\n if (this.option(\"selectByClick\") && !e.isDefaultPrevented()) {\r\n this._updateItemSelection(!node.internalFields.selected, itemData, e)\r\n }\r\n },\r\n _updateSelectionToFirstItem: function($items, startIndex) {\r\n var itemIndex = startIndex;\r\n while (itemIndex >= 0) {\r\n var $item = (0, _renderer.default)($items[itemIndex]);\r\n this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n itemIndex--\r\n }\r\n },\r\n _updateSelectionToLastItem: function($items, startIndex) {\r\n var length = $items.length;\r\n var itemIndex = startIndex;\r\n while (itemIndex < length) {\r\n var $item = (0, _renderer.default)($items[itemIndex]);\r\n this._updateItemSelection(true, $item.find(\".\" + ITEM_CLASS).get(0));\r\n itemIndex++\r\n }\r\n },\r\n _focusInHandler: function(e) {\r\n var _this12 = this;\r\n this._updateFocusState(e, true);\r\n if (this.option(\"focusedElement\")) {\r\n clearTimeout(this._setFocusedItemTimeout);\r\n this._setFocusedItemTimeout = setTimeout(function() {\r\n _this12._setFocusedItem((0, _renderer.default)(_this12.option(\"focusedElement\")))\r\n });\r\n return\r\n }\r\n var $activeItem = this._getActiveItem();\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($activeItem.closest(\".\" + NODE_CLASS)))\r\n },\r\n _setFocusedItem: function($target) {\r\n if (!$target || !$target.length) {\r\n return\r\n }\r\n if (!$target.children().hasClass(DISABLED_STATE_CLASS)) {\r\n this.callBase($target)\r\n }\r\n },\r\n _itemPointerDownHandler: function(e) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n var $target = (0, _renderer.default)(e.target).closest(\".\" + NODE_CLASS + \", .\" + SELECT_ALL_ITEM_CLASS);\r\n if (!$target.length) {\r\n return\r\n }\r\n var itemElement = $target.hasClass(DISABLED_STATE_CLASS) ? null : $target;\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)(itemElement))\r\n },\r\n _findNonDisabledNodes: function($nodes) {\r\n return $nodes.not(function() {\r\n return (0, _renderer.default)(this).children(\".\" + ITEM_CLASS).hasClass(DISABLED_STATE_CLASS)\r\n })\r\n },\r\n _moveFocus: function(location, e) {\r\n var FOCUS_UP = \"up\";\r\n var FOCUS_DOWN = \"down\";\r\n var FOCUS_FIRST = \"first\";\r\n var FOCUS_LAST = \"last\";\r\n var FOCUS_LEFT = this.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n var FOCUS_RIGHT = this.option(\"rtlEnabled\") ? \"left\" : \"right\";\r\n this.$element().find(\".\".concat(NODE_CONTAINER_CLASS)).each(function() {\r\n _fx.default.stop(this, true)\r\n });\r\n var $items = this._findNonDisabledNodes(this._nodeElements());\r\n if (!$items || !$items.length) {\r\n return\r\n }\r\n switch (location) {\r\n case FOCUS_UP:\r\n var $prevItem = this._prevItem($items);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($prevItem));\r\n var prevItemElement = this._getNodeItemElement($prevItem);\r\n this._scrollableContainer.scrollToElement(prevItemElement);\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateItemSelection(true, prevItemElement)\r\n }\r\n break;\r\n case FOCUS_DOWN:\r\n var $nextItem = this._nextItem($items);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n var nextItemElement = this._getNodeItemElement($nextItem);\r\n this._scrollableContainer.scrollToElement(nextItemElement);\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateItemSelection(true, nextItemElement)\r\n }\r\n break;\r\n case FOCUS_FIRST:\r\n var $firstItem = $items.first();\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateSelectionToFirstItem($items, $items.index(this._prevItem($items)))\r\n }\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($firstItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($firstItem));\r\n break;\r\n case FOCUS_LAST:\r\n var $lastItem = $items.last();\r\n if (e.shiftKey && this._showCheckboxes()) {\r\n this._updateSelectionToLastItem($items, $items.index(this._nextItem($items)))\r\n }\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($lastItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($lastItem));\r\n break;\r\n case FOCUS_RIGHT:\r\n this._expandFocusedContainer();\r\n break;\r\n case FOCUS_LEFT:\r\n this._collapseFocusedContainer();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n },\r\n _getNodeItemElement: function($node) {\r\n return $node.find(\".\" + ITEM_CLASS).get(0)\r\n },\r\n _nodeElements: function() {\r\n return this.$element().find(\".\" + NODE_CLASS).not(\":hidden\")\r\n },\r\n _expandFocusedContainer: function() {\r\n var $focusedNode = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n if (!$focusedNode.length || $focusedNode.hasClass(IS_LEAF)) {\r\n return\r\n }\r\n var $node = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n if ($node.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n var $nextItem = this._nextItem(this._findNonDisabledNodes(this._nodeElements()));\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($nextItem));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement($nextItem));\r\n return\r\n }\r\n var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n this._toggleExpandedState(node, true)\r\n },\r\n _getClosestNonDisabledNode: function($node) {\r\n do {\r\n $node = $node.parent().closest(\".\" + NODE_CLASS)\r\n } while ($node.children(\".dx-treeview-item.dx-state-disabled\").length);\r\n return $node\r\n },\r\n _collapseFocusedContainer: function() {\r\n var $focusedNode = (0, _renderer.default)(this.option(\"focusedElement\"));\r\n if (!$focusedNode.length) {\r\n return\r\n }\r\n var nodeElement = $focusedNode.find(\".\".concat(NODE_CONTAINER_CLASS)).eq(0);\r\n if (!$focusedNode.hasClass(IS_LEAF) && nodeElement.hasClass(OPENED_NODE_CONTAINER_CLASS)) {\r\n var node = this._getNodeByElement($focusedNode.children(\".\" + ITEM_CLASS));\r\n this._toggleExpandedState(node, false)\r\n } else {\r\n var collapsedNode = this._getClosestNonDisabledNode($focusedNode);\r\n collapsedNode.length && this.option(\"focusedElement\", (0, _element.getPublicElement)(collapsedNode));\r\n this._scrollableContainer.scrollToElement(this._getNodeItemElement(collapsedNode))\r\n }\r\n },\r\n _encodeString: function(value) {\r\n return (0, _type.isString)(value) ? encodeURI(value) : value\r\n },\r\n _decodeString: function(value) {\r\n return (0, _type.isString)(value) ? decodeURI(value) : value\r\n },\r\n updateDimensions: function() {\r\n var _this13 = this;\r\n var deferred = new _deferred.Deferred;\r\n if (this._scrollableContainer) {\r\n this._scrollableContainer.update().done(function() {\r\n deferred.resolveWith(_this13)\r\n })\r\n } else {\r\n deferred.resolveWith(this)\r\n }\r\n return deferred.promise()\r\n },\r\n selectItem: function(itemElement) {\r\n return this._updateItemSelection(true, itemElement)\r\n },\r\n unselectItem: function(itemElement) {\r\n return this._updateItemSelection(false, itemElement)\r\n },\r\n expandItem: function(itemElement) {\r\n return this._toggleExpandedState(itemElement, true)\r\n },\r\n collapseItem: function(itemElement) {\r\n return this._toggleExpandedState(itemElement, false)\r\n },\r\n getNodes: function() {\r\n return this._dataAdapter.getTreeNodes()\r\n },\r\n getSelectedNodes: function() {\r\n var _this14 = this;\r\n return this.getSelectedNodeKeys().map(function(key) {\r\n var node = _this14._dataAdapter.getNodeByKey(key);\r\n return _this14._dataAdapter.getPublicNode(node)\r\n })\r\n },\r\n getSelectedNodesKeys: function() {\r\n _ui3.default.log(\"W0002\", \"dxTreeView\", \"getSelectedNodesKeys\", \"20.1\", \"Use the 'getSelectedNodeKeys' method instead\");\r\n return this.getSelectedNodeKeys()\r\n },\r\n getSelectedNodeKeys: function() {\r\n return this._dataAdapter.getSelectedNodesKeys()\r\n },\r\n selectAll: function() {\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", true)\r\n } else {\r\n this._toggleSelectAll({\r\n value: true\r\n })\r\n }\r\n },\r\n unselectAll: function() {\r\n if (this._selectAllEnabled()) {\r\n this._$selectAllItem.dxCheckBox(\"instance\").option(\"value\", false)\r\n } else {\r\n this._toggleSelectAll({\r\n value: false\r\n })\r\n }\r\n },\r\n expandAll: function() {\r\n var dataAdapter = this._dataAdapter;\r\n (0, _iterator.each)(dataAdapter.getData(), function(_, node) {\r\n return dataAdapter.toggleExpansion(node.internalFields.key, true)\r\n });\r\n this.repaint()\r\n },\r\n collapseAll: function() {\r\n (0, _iterator.each)(this._dataAdapter.getExpandedNodesKeys(), function(_, key) {\r\n this._toggleExpandedState(key, false)\r\n }.bind(this))\r\n },\r\n scrollToItem: function(keyOrItemOrElement) {\r\n var _this15 = this;\r\n var node = this._getNode(keyOrItemOrElement);\r\n if (!node) {\r\n return (new _deferred.Deferred).reject().promise()\r\n }\r\n var nodeKeysToExpand = [];\r\n var parentNode = node.internalFields.publicNode.parent;\r\n while (null != parentNode) {\r\n if (!parentNode.expanded) {\r\n nodeKeysToExpand.push(parentNode.key)\r\n }\r\n parentNode = parentNode.parent\r\n }\r\n var scrollCallback = new _deferred.Deferred;\r\n this._expandNodes(nodeKeysToExpand.reverse()).always(function() {\r\n var $element = _this15._getNodeElement(node);\r\n if ($element && $element.length) {\r\n _this15._scrollableContainer.scrollToElementTopLeft($element);\r\n scrollCallback.resolve()\r\n } else {\r\n scrollCallback.reject()\r\n }\r\n });\r\n return scrollCallback.promise()\r\n },\r\n _expandNodes: function(keysToExpand) {\r\n var _this16 = this;\r\n if (!keysToExpand || 0 === keysToExpand.length) {\r\n return (new _deferred.Deferred).resolve().promise()\r\n }\r\n var resultCallback = new _deferred.Deferred;\r\n var callbacksByNodes = keysToExpand.map(function(key) {\r\n return _this16.expandItem(key)\r\n });\r\n _deferred.when.apply(_renderer.default, callbacksByNodes).done(function() {\r\n return resultCallback.resolve()\r\n }).fail(function() {\r\n return resultCallback.reject()\r\n });\r\n return resultCallback.promise()\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._setFocusedItemTimeout)\r\n }\r\n});\r\nvar _default = TreeViewBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/validation/default_adapter.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DefaultAdapter = _class.default.inherit({\r\n ctor: function(editor, validator) {\r\n var _this = this;\r\n this.editor = editor;\r\n this.validator = validator;\r\n this.validationRequestsCallbacks = [];\r\n var handler = function(args) {\r\n _this.validationRequestsCallbacks.forEach(function(item) {\r\n return item(args)\r\n })\r\n };\r\n editor.validationRequest.add(handler);\r\n editor.on(\"disposing\", function() {\r\n editor.validationRequest.remove(handler)\r\n })\r\n },\r\n getValue: function() {\r\n return this.editor.option(\"value\")\r\n },\r\n getCurrentValidationError: function() {\r\n return this.editor.option(\"validationError\")\r\n },\r\n bypass: function() {\r\n return this.editor.option(\"disabled\")\r\n },\r\n applyValidationResults: function(params) {\r\n this.editor.option({\r\n validationErrors: params.brokenRules,\r\n validationStatus: params.status\r\n })\r\n },\r\n reset: function() {\r\n this.editor.reset()\r\n },\r\n focus: function() {\r\n this.editor.focus()\r\n }\r\n});\r\nvar _default = DefaultAdapter;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.base\"));\r\nrequire(\"./ui.tree_list.state_storing\");\r\nrequire(\"./ui.tree_list.column_chooser\");\r\nrequire(\"./ui.tree_list.master_detail\");\r\nrequire(\"./ui.tree_list.editing\");\r\nrequire(\"./ui.tree_list.validating\");\r\nrequire(\"./ui.tree_list.virtual_scrolling\");\r\nrequire(\"./ui.tree_list.filter_row\");\r\nrequire(\"./ui.tree_list.header_filter\");\r\nrequire(\"./ui.tree_list.filter_sync\");\r\nrequire(\"./ui.tree_list.filter_builder\");\r\nrequire(\"./ui.tree_list.filter_panel\");\r\nrequire(\"./ui.tree_list.pager\");\r\nrequire(\"./ui.tree_list.columns_resizing_reordering\");\r\nrequire(\"./ui.tree_list.column_fixing\");\r\nrequire(\"./ui.tree_list.adaptivity\");\r\nrequire(\"./ui.tree_list.selection\");\r\nrequire(\"./ui.tree_list.search\");\r\nrequire(\"./ui.tree_list.keyboard_navigation\");\r\nrequire(\"./ui.tree_list.virtual_columns\");\r\nrequire(\"./ui.tree_list.focus\");\r\nrequire(\"./ui.tree_list.row_dragging\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiTree_list.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.base.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _themes = require(\"../themes\");\r\nrequire(\"./ui.tree_list.column_headers\");\r\nrequire(\"./ui.tree_list.columns_controller\");\r\nrequire(\"./ui.tree_list.data_controller\");\r\nrequire(\"./ui.tree_list.sorting\");\r\nrequire(\"./ui.tree_list.rows\");\r\nrequire(\"./ui.tree_list.context_menu\");\r\nrequire(\"./ui.tree_list.error_handling\");\r\nrequire(\"./ui.tree_list.grid_view\");\r\nrequire(\"./ui.tree_list.header_panel\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar callModuleItemsMethod = _uiTree_list.default.callModuleItemsMethod;\r\nvar DATAGRID_ROW_SELECTOR = \".dx-row\";\r\nvar TREELIST_CLASS = \"dx-treelist\";\r\n_uiTree_list.default.registerModulesOrder([\"stateStoring\", \"columns\", \"selection\", \"editorFactory\", \"columnChooser\", \"editing\", \"grouping\", \"masterDetail\", \"validating\", \"adaptivity\", \"data\", \"virtualScrolling\", \"columnHeaders\", \"filterRow\", \"headerPanel\", \"headerFilter\", \"sorting\", \"search\", \"rows\", \"pager\", \"columnsResizingReordering\", \"contextMenu\", \"keyboardNavigation\", \"errorHandling\", \"summary\", \"columnFixing\", \"export\", \"gridView\"]);\r\nvar TreeList = _ui.default.inherit({\r\n _activeStateUnit: DATAGRID_ROW_SELECTOR,\r\n _getDefaultOptions: function() {\r\n var that = this;\r\n var result = that.callBase();\r\n (0, _iterator.each)(_uiTree_list.default.modules, function() {\r\n if ((0, _type.isFunction)(this.defaultOptions)) {\r\n (0, _extend.extend)(true, result, this.defaultOptions())\r\n }\r\n });\r\n return result\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return (0, _themes.isMaterial)()\r\n },\r\n options: {\r\n showRowLines: true,\r\n showColumnLines: false,\r\n headerFilter: {\r\n height: 315\r\n },\r\n editing: {\r\n useIcons: true\r\n }\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n var that = this;\r\n that.callBase();\r\n _uiTree_list.default.processModules(that, _uiTree_list.default);\r\n callModuleItemsMethod(that, \"init\")\r\n },\r\n _clean: _common.noop,\r\n _optionChanged: function(args) {\r\n var that = this;\r\n callModuleItemsMethod(that, \"optionChanged\", [args]);\r\n if (!args.handled) {\r\n that.callBase(args)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this.updateDimensions(true)\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.updateDimensions()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this.callBase.apply(this, arguments);\r\n this.$element().addClass(TREELIST_CLASS);\r\n this.getView(\"gridView\").render(this.$element())\r\n },\r\n _renderContentImpl: function() {\r\n this.getView(\"gridView\").update()\r\n },\r\n _renderContent: function() {\r\n var that = this;\r\n (0, _common.deferRender)(function() {\r\n that._renderContentImpl()\r\n })\r\n },\r\n _dispose: function() {\r\n var that = this;\r\n that.callBase();\r\n callModuleItemsMethod(that, \"dispose\")\r\n },\r\n isReady: function() {\r\n return this.getController(\"data\").isReady()\r\n },\r\n beginUpdate: function() {\r\n var that = this;\r\n that.callBase();\r\n callModuleItemsMethod(that, \"beginUpdate\")\r\n },\r\n endUpdate: function() {\r\n var that = this;\r\n callModuleItemsMethod(that, \"endUpdate\");\r\n that.callBase()\r\n },\r\n getController: function(name) {\r\n return this._controllers[name]\r\n },\r\n getView: function(name) {\r\n return this._views[name]\r\n },\r\n focus: function(element) {\r\n this.callBase();\r\n if ((0, _type.isDefined)(element)) {\r\n this.getController(\"keyboardNavigation\").focus(element)\r\n }\r\n }\r\n});\r\nTreeList.registerModule = _uiTree_list.default.registerModule.bind(_uiTree_list.default);\r\n(0, _component_registrator.default)(\"dxTreeList\", TreeList);\r\nvar _default = TreeList;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.column_headers.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_headers\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"columnHeaders\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.columns_controller.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.ColumnsController = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_controller\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar ColumnsController = _uiGrid_core.default.controllers.columns.inherit(function() {\r\n return {\r\n _getFirstItems: function(dataSourceAdapter) {\r\n return this.callBase(dataSourceAdapter).map(function(node) {\r\n return node.data\r\n })\r\n },\r\n getFirstDataColumnIndex: function() {\r\n var visibleColumns = this.getVisibleColumns();\r\n var visibleColumnsLength = visibleColumns.length;\r\n var firstDataColumnIndex = 0;\r\n for (var i = 0; i <= visibleColumnsLength - 1; i++) {\r\n if (!(0, _type.isDefined)(visibleColumns[i].command)) {\r\n firstDataColumnIndex = visibleColumns[i].index;\r\n break\r\n }\r\n }\r\n return firstDataColumnIndex\r\n }\r\n }\r\n}());\r\nexports.ColumnsController = ColumnsController;\r\n_uiTree_list.default.registerModule(\"columns\", {\r\n defaultOptions: _uiGrid_core.default.defaultOptions,\r\n controllers: {\r\n columns: ColumnsController\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.data_controller.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.DataController = void 0;\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiTree_list2 = _interopRequireDefault(require(\"./ui.tree_list.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.data_controller\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DataController = _uiGrid_core.default.controllers.data.inherit(function() {\r\n return {\r\n _getDataSourceAdapter: function() {\r\n return _uiTree_list2.default\r\n },\r\n _getNodeLevel: function(node) {\r\n var level = -1;\r\n while (node.parent) {\r\n if (node.visible) {\r\n level++\r\n }\r\n node = node.parent\r\n }\r\n return level\r\n },\r\n _generateDataItem: function(node, options) {\r\n return {\r\n rowType: \"data\",\r\n node: node,\r\n key: node.key,\r\n data: node.data,\r\n isExpanded: this.isRowExpanded(node.key, options),\r\n level: this._getNodeLevel(node)\r\n }\r\n },\r\n _loadOnOptionChange: function() {\r\n this._dataSource.load()\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (!this.callBase.apply(this, arguments)) {\r\n return false\r\n }\r\n if (item1.node && item2.node && item1.node.hasChildren !== item2.node.hasChildren) {\r\n return false\r\n }\r\n if (item1.level !== item2.level || item1.isExpanded !== item2.isExpanded) {\r\n return false\r\n }\r\n return true\r\n },\r\n init: function() {\r\n this.createAction(\"onRowExpanding\");\r\n this.createAction(\"onRowExpanded\");\r\n this.createAction(\"onRowCollapsing\");\r\n this.createAction(\"onRowCollapsed\");\r\n this.callBase.apply(this, arguments)\r\n },\r\n keyOf: function(data) {\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n return dataSource.keyOf(data)\r\n }\r\n },\r\n key: function() {\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n return dataSource.getKeyExpr()\r\n }\r\n },\r\n publicMethods: function() {\r\n return this.callBase().concat([\"expandRow\", \"collapseRow\", \"isRowExpanded\", \"getRootNode\", \"getNodeByKey\", \"loadDescendants\", \"forEachNode\"])\r\n },\r\n changeRowExpand: function(key) {\r\n if (this._dataSource) {\r\n var that = this;\r\n var args = {\r\n key: key\r\n };\r\n var isExpanded = this.isRowExpanded(key);\r\n that.executeAction(isExpanded ? \"onRowCollapsing\" : \"onRowExpanding\", args);\r\n if (!args.cancel) {\r\n return that._dataSource.changeRowExpand(key).done(function() {\r\n that.executeAction(isExpanded ? \"onRowCollapsed\" : \"onRowExpanded\", args)\r\n })\r\n }\r\n }\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n isRowExpanded: function(key, cache) {\r\n return this._dataSource && this._dataSource.isRowExpanded(key, cache)\r\n },\r\n expandRow: function(key) {\r\n if (!this.isRowExpanded(key)) {\r\n return this.changeRowExpand(key)\r\n }\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n collapseRow: function(key) {\r\n if (this.isRowExpanded(key)) {\r\n return this.changeRowExpand(key)\r\n }\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n getRootNode: function() {\r\n return this._dataSource && this._dataSource.getRootNode()\r\n },\r\n optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"rootValue\":\r\n case \"parentIdExpr\":\r\n case \"itemsExpr\":\r\n case \"filterMode\":\r\n case \"expandNodesOnFiltering\":\r\n case \"autoExpandAll\":\r\n case \"hasItemsExpr\":\r\n case \"dataStructure\":\r\n this._columnsController.reset();\r\n this._items = [];\r\n this._refreshDataSource();\r\n args.handled = true;\r\n break;\r\n case \"expandedRowKeys\":\r\n case \"onNodesInitialized\":\r\n if (this._dataSource && !this._dataSource._isNodesInitializing && !(0, _common.equalByValue)(args.value, args.previousValue)) {\r\n this._loadOnOptionChange()\r\n }\r\n args.handled = true;\r\n break;\r\n case \"maxFilterLengthInRequest\":\r\n args.handled = true;\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getNodeByKey: function(key) {\r\n if (!this._dataSource) {\r\n return\r\n }\r\n return this._dataSource.getNodeByKey(key)\r\n },\r\n getChildNodeKeys: function(parentKey) {\r\n if (!this._dataSource) {\r\n return\r\n }\r\n return this._dataSource.getChildNodeKeys(parentKey)\r\n },\r\n loadDescendants: function(keys, childrenOnly) {\r\n if (!this._dataSource) {\r\n return\r\n }\r\n return this._dataSource.loadDescendants(keys, childrenOnly)\r\n },\r\n forEachNode: function() {\r\n this._dataSource.forEachNode.apply(this, arguments)\r\n }\r\n }\r\n}());\r\nexports.DataController = DataController;\r\n_uiTree_list.default.registerModule(\"data\", {\r\n defaultOptions: function() {\r\n return (0, _extend.extend)({}, _uiGrid_core.default.defaultOptions(), {\r\n itemsExpr: \"items\",\r\n parentIdExpr: \"parentId\",\r\n rootValue: 0,\r\n dataStructure: \"plain\",\r\n expandedRowKeys: [],\r\n filterMode: \"withAncestors\",\r\n expandNodesOnFiltering: true,\r\n autoExpandAll: false,\r\n onNodesInitialized: null,\r\n maxFilterLengthInRequest: 1500,\r\n paging: {\r\n enabled: false\r\n }\r\n })\r\n },\r\n controllers: {\r\n data: DataController\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.sorting.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"sorting\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.rows.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.RowsView = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.rows\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TREELIST_TEXT_CONTENT = \"dx-treelist-text-content\";\r\nvar TREELIST_EXPAND_ICON_CONTAINER_CLASS = \"dx-treelist-icon-container\";\r\nvar TREELIST_CELL_EXPANDABLE_CLASS = \"dx-treelist-cell-expandable\";\r\nvar TREELIST_EMPTY_SPACE = \"dx-treelist-empty-space\";\r\nvar TREELIST_EXPANDED_CLASS = \"dx-treelist-expanded\";\r\nvar TREELIST_COLLAPSED_CLASS = \"dx-treelist-collapsed\";\r\nvar RowsView = _uiGrid_core.default.views.rowsView.inherit(function() {\r\n var createCellContent = function($container) {\r\n return (0, _renderer.default)(\"
    \").addClass(TREELIST_TEXT_CONTENT).appendTo($container)\r\n };\r\n var createIcon = function(hasIcon, isExpanded) {\r\n var $iconElement = (0, _renderer.default)(\"
    \").addClass(TREELIST_EMPTY_SPACE);\r\n if (hasIcon) {\r\n $iconElement.toggleClass(TREELIST_EXPANDED_CLASS, isExpanded).toggleClass(TREELIST_COLLAPSED_CLASS, !isExpanded).append((0, _renderer.default)(\"\"))\r\n }\r\n return $iconElement\r\n };\r\n return {\r\n _renderIconContainer: function($container, options) {\r\n var _this = this;\r\n var $iconContainer = (0, _renderer.default)(\"
    \").addClass(TREELIST_EXPAND_ICON_CONTAINER_CLASS).appendTo($container);\r\n options.watch && options.watch(function() {\r\n return [options.row.level, options.row.isExpanded, options.row.node.hasChildren]\r\n }, function() {\r\n $iconContainer.empty();\r\n _this._renderIcons($iconContainer, options)\r\n });\r\n $container.addClass(TREELIST_CELL_EXPANDABLE_CLASS);\r\n return this._renderIcons($iconContainer, options)\r\n },\r\n _renderIcons: function($iconContainer, options) {\r\n var row = options.row;\r\n var level = row.level;\r\n for (var i = 0; i <= level; i++) {\r\n $iconContainer.append(createIcon(i === level && row.node.hasChildren, row.isExpanded))\r\n }\r\n return $iconContainer\r\n },\r\n _renderCellCommandContent: function(container, model) {\r\n this._renderIconContainer(container, model);\r\n return true\r\n },\r\n _processTemplate: function(template, options) {\r\n var that = this;\r\n var resultTemplate;\r\n var renderingTemplate = this.callBase(template);\r\n var firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex();\r\n if (renderingTemplate && options.column.index === firstDataColumnIndex) {\r\n resultTemplate = {\r\n render: function(options) {\r\n var $container = options.container;\r\n if (that._renderCellCommandContent($container, options.model)) {\r\n options.container = createCellContent($container)\r\n }\r\n renderingTemplate.render(options)\r\n }\r\n }\r\n } else {\r\n resultTemplate = renderingTemplate\r\n }\r\n return resultTemplate\r\n },\r\n _updateCell: function($cell, options) {\r\n $cell = $cell.hasClass(TREELIST_TEXT_CONTENT) ? $cell.parent() : $cell;\r\n this.callBase($cell, options)\r\n },\r\n _rowClick: function(e) {\r\n var dataController = this._dataController;\r\n var $targetElement = (0, _renderer.default)(e.event.target);\r\n var isExpandIcon = this.isExpandIcon($targetElement);\r\n var item = dataController && dataController.items()[e.rowIndex];\r\n if (isExpandIcon && item) {\r\n dataController.changeRowExpand(item.key)\r\n }\r\n this.callBase(e)\r\n },\r\n _createRow: function(row) {\r\n var node = row && row.node;\r\n var $rowElement = this.callBase.apply(this, arguments);\r\n if (node) {\r\n this.setAria(\"level\", row.level, $rowElement);\r\n if (node.hasChildren) {\r\n this.setAria(\"expanded\", row.isExpanded, $rowElement)\r\n }\r\n }\r\n return $rowElement\r\n },\r\n isExpandIcon: function($targetElement) {\r\n return !!$targetElement.closest(\".\" + TREELIST_EXPANDED_CLASS + \", .\" + TREELIST_COLLAPSED_CLASS).length\r\n }\r\n }\r\n}());\r\nexports.RowsView = RowsView;\r\n_uiTree_list.default.registerModule(\"rows\", {\r\n defaultOptions: _uiGrid_core.default.defaultOptions,\r\n views: {\r\n rowsView: RowsView\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.context_menu.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.context_menu\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"contextMenu\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.error_handling.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.error_handling\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"errorHandling\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.grid_view.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.grid_view\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar GridView = _uiGrid_core.default.views.gridView.inherit(function() {\r\n return {\r\n _getWidgetAriaLabel: function() {\r\n return \"dxTreeList-ariaTreeList\"\r\n },\r\n _getTableRoleName: function() {\r\n return \"treegrid\"\r\n }\r\n }\r\n}());\r\n_uiTree_list.default.registerModule(\"gridView\", {\r\n defaultOptions: _uiGrid_core.default.defaultOptions,\r\n controllers: _uiGrid_core.default.controllers,\r\n views: {\r\n gridView: GridView\r\n },\r\n extenders: {\r\n controllers: {\r\n resizing: {\r\n _toggleBestFitMode: function(isBestFit) {\r\n this.callBase(isBestFit);\r\n if (!this.option(\"legacyRendering\")) {\r\n var $rowsTable = this._rowsView.getTableElement();\r\n $rowsTable.find(\".dx-treelist-cell-expandable\").toggleClass(this.addWidgetPrefix(\"best-fit\"), isBestFit)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.header_panel.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"headerPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.state_storing.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.state_storing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar origApplyState = _uiGrid_core.default.extenders.controllers.stateStoring.applyState;\r\n_uiTree_list.default.registerModule(\"stateStoring\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n extenders: {\r\n controllers: {\r\n stateStoring: {\r\n applyState: function(state) {\r\n origApplyState.apply(this, arguments);\r\n if (Object.prototype.hasOwnProperty.call(state, \"expandedRowKeys\")) {\r\n this.option(\"expandedRowKeys\", state.expandedRowKeys && state.expandedRowKeys.slice())\r\n }\r\n }\r\n },\r\n data: {\r\n getUserState: function() {\r\n var state = this.callBase.apply(this, arguments);\r\n if (!this.option(\"autoExpandAll\")) {\r\n state.expandedRowKeys = this.option(\"expandedRowKeys\")\r\n }\r\n return state\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.column_chooser.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_chooser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"columnChooser\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.master_detail.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.master_detail\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"masterDetail\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n extenders: {\r\n controllers: {\r\n data: {\r\n isRowExpanded: function() {\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _processItems: function() {\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _processDataItem: function() {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.editing.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nrequire(\"./ui.tree_list.editor_factory\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.errors\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _uiTree_list2 = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TREELIST_EXPAND_ICON_CONTAINER_CLASS = \"dx-treelist-icon-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar DATA_EDIT_DATA_INSERT_TYPE = \"insert\";\r\nvar EditingController = _uiGrid_core2.default.controllers.editing.inherit(function() {\r\n return {\r\n _generateNewItem: function(key) {\r\n var item = this.callBase(key);\r\n item.data = {\r\n key: key\r\n };\r\n item.children = [];\r\n item.level = 0;\r\n item.parentKey = this.option(\"rootValue\");\r\n return item\r\n },\r\n _needInsertItem: function(change, changeType, items, item) {\r\n var parentKey = change.key.parentKey;\r\n if (void 0 !== parentKey && parentKey !== this.option(\"rootValue\")) {\r\n var rowIndex = _uiGrid_core.default.getIndexByKey(parentKey, items);\r\n if (rowIndex >= 0 && this._dataController.isRowExpanded(parentKey)) {\r\n items.splice(rowIndex + 1, 0, item)\r\n }\r\n return false\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _isEditColumnVisible: function() {\r\n var result = this.callBase.apply(this, arguments);\r\n var editingOptions = this.option(\"editing\");\r\n return result || editingOptions && editingOptions.allowAdding\r\n },\r\n _isDefaultButtonVisible: function(button, options) {\r\n var result = this.callBase.apply(this, arguments);\r\n var row = options.row;\r\n if (\"add\" === button.name) {\r\n return this.allowAdding(options) && row.rowIndex !== this._getVisibleEditRowIndex() && !(row.removed || row.isNewRow)\r\n }\r\n return result\r\n },\r\n _getEditingButtons: function(options) {\r\n var buttons = this.callBase.apply(this, arguments);\r\n if (!options.column.buttons) {\r\n buttons.unshift(this._getButtonConfig(\"add\", options))\r\n }\r\n return buttons\r\n },\r\n _beforeSaveEditData: function(change) {\r\n var dataController = this._dataController;\r\n var result = this.callBase.apply(this, arguments);\r\n if (change && change.type !== DATA_EDIT_DATA_INSERT_TYPE) {\r\n var store = null === dataController || void 0 === dataController ? void 0 : dataController.store();\r\n var key = null === store || void 0 === store ? void 0 : store.key();\r\n if (!(0, _type.isDefined)(key)) {\r\n throw _ui.default.Error(\"E1045\")\r\n }\r\n }\r\n return result\r\n },\r\n addRowByRowIndex: function(rowIndex) {\r\n var dataController = this.getController(\"data\");\r\n var row = dataController.getVisibleRows()[rowIndex];\r\n return this.addRow(row ? row.key : void 0)\r\n },\r\n addRow: function(key) {\r\n var that = this;\r\n var callBase = that.callBase;\r\n var dataController = that.getController(\"data\");\r\n if (void 0 !== key && !dataController.isRowExpanded(key)) {\r\n var deferred = new _deferred.Deferred;\r\n dataController.expandRow(key).done(function() {\r\n setTimeout(function() {\r\n callBase.call(that, key).done(deferred.resolve).fail(deferred.reject)\r\n })\r\n }).fail(deferred.reject);\r\n return deferred.promise()\r\n }\r\n if (void 0 === key) {\r\n key = that.option(\"rootValue\")\r\n }\r\n return callBase.call(that, key)\r\n },\r\n _initNewRow: function(options, parentKey) {\r\n var dataController = this.getController(\"data\");\r\n var dataSourceAdapter = dataController.dataSource();\r\n var parentIdSetter = dataSourceAdapter.createParentIdSetter();\r\n parentIdSetter(options.data, parentKey);\r\n return this.callBase.apply(this, arguments)\r\n },\r\n allowAdding: function(options) {\r\n return this._allowEditAction(\"allowAdding\", options)\r\n },\r\n _needToCloseEditableCell: function($targetElement) {\r\n return this.callBase.apply(this, arguments) || $targetElement.closest(\".\" + TREELIST_EXPAND_ICON_CONTAINER_CLASS).length && this.isEditing()\r\n },\r\n getButtonLocalizationNames: function() {\r\n var names = this.callBase.apply(this);\r\n names.add = \"dxTreeList-editingAddRowToNode\";\r\n return names\r\n }\r\n }\r\n}());\r\nvar originalRowClick = _uiGrid_core2.default.extenders.views.rowsView._rowClick;\r\nvar originalRowDblClick = _uiGrid_core2.default.extenders.views.rowsView._rowDblClick;\r\nvar validateClick = function(e) {\r\n var $targetElement = (0, _renderer.default)(e.event.target);\r\n var originalClickHandler = \"dxdblclick\" === e.event.type ? originalRowDblClick : originalRowClick;\r\n if ($targetElement.closest(\".\" + SELECT_CHECKBOX_CLASS).length) {\r\n return false\r\n }\r\n return !needToCallOriginalClickHandler.call(this, e, originalClickHandler)\r\n};\r\n\r\nfunction needToCallOriginalClickHandler(e, originalClickHandler) {\r\n var $targetElement = (0, _renderer.default)(e.event.target);\r\n if (!$targetElement.closest(\".\" + TREELIST_EXPAND_ICON_CONTAINER_CLASS).length) {\r\n originalClickHandler.call(this, e);\r\n return true\r\n }\r\n return false\r\n}\r\nvar RowsViewExtender = (0, _extend.extend)({}, _uiGrid_core2.default.extenders.views.rowsView, {\r\n _renderCellCommandContent: function($container, options) {\r\n var editingController = this._editingController;\r\n var isEditRow = options.row && editingController.isEditRow(options.row.rowIndex);\r\n var isEditing = options.isEditing || isEditRow;\r\n if (!isEditing) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return false\r\n },\r\n _rowClick: function(e) {\r\n if (validateClick.call(this, e)) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _rowDblClick: function(e) {\r\n if (validateClick.call(this, e)) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n }\r\n});\r\n_uiTree_list2.default.registerModule(\"editing\", {\r\n defaultOptions: function() {\r\n return (0, _extend.extend)(true, _uiGrid_core2.default.defaultOptions(), {\r\n editing: {\r\n texts: {\r\n addRowToNode: _message.default.format(\"dxTreeList-editingAddRowToNode\")\r\n }\r\n }\r\n })\r\n },\r\n controllers: {\r\n editing: EditingController\r\n },\r\n extenders: {\r\n controllers: (0, _extend.extend)(true, {}, _uiGrid_core2.default.extenders.controllers, {\r\n data: {\r\n changeRowExpand: function() {\r\n this._editingController.refresh();\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }),\r\n views: {\r\n rowsView: RowsViewExtender,\r\n headerPanel: _uiGrid_core2.default.extenders.views.headerPanel\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.editor_factory.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.editor_factory\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"editorFactory\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.validating.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.validating\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar EditingControllerExtender = (0, _extend.extend)({}, _uiGrid_core.default.extenders.controllers.editing);\r\ndelete EditingControllerExtender.processItems;\r\ndelete EditingControllerExtender.processDataItem;\r\n_uiTree_list.default.registerModule(\"validating\", {\r\n defaultOptions: _uiGrid_core.default.defaultOptions,\r\n controllers: _uiGrid_core.default.controllers,\r\n extenders: {\r\n controllers: {\r\n editing: EditingControllerExtender,\r\n editorFactory: _uiGrid_core.default.extenders.controllers.editorFactory\r\n },\r\n views: _uiGrid_core.default.extenders.views\r\n }\r\n});\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.virtual_scrolling.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiTree_list2 = _interopRequireDefault(require(\"./ui.tree_list.data_source_adapter\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_scrolling\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar oldDefaultOptions = _uiGrid_core.default.defaultOptions;\r\nvar originalDataControllerExtender = _uiGrid_core.default.extenders.controllers.data;\r\nvar originalDataSourceAdapterExtender = _uiGrid_core.default.extenders.dataSourceAdapter;\r\n_uiGrid_core.default.extenders.controllers.data = (0, _extend.extend)({}, originalDataControllerExtender, {\r\n _loadOnOptionChange: function() {\r\n var virtualScrollController = this._dataSource && this._dataSource._virtualScrollController;\r\n virtualScrollController && virtualScrollController.reset();\r\n this.callBase()\r\n }\r\n});\r\n_uiGrid_core.default.extenders.dataSourceAdapter = (0, _extend.extend)({}, originalDataSourceAdapterExtender, {\r\n changeRowExpand: function() {\r\n var _this = this;\r\n return this.callBase.apply(this, arguments).done(function() {\r\n var viewportItemIndex = _this.getViewportItemIndex();\r\n viewportItemIndex >= 0 && _this.setViewportItemIndex(viewportItemIndex)\r\n })\r\n }\r\n});\r\n_uiTree_list.default.registerModule(\"virtualScrolling\", (0, _extend.extend)({}, _uiGrid_core.default, {\r\n defaultOptions: function() {\r\n return (0, _extend.extend)(true, oldDefaultOptions(), {\r\n scrolling: {\r\n mode: \"virtual\"\r\n }\r\n })\r\n }\r\n}));\r\n_uiTree_list2.default.extend(_uiGrid_core.default.extenders.dataSourceAdapter);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_row.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_row\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"filterRow\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.header_filter.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.header_filter\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"headerFilter\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_sync.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_sync\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"filterSync\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_builder.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_builder\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"filterBuilder\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.filter_panel.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.filter_panel\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"filterPanel\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.pager.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.pager\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"pager\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.columns_resizing_reordering.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.columns_resizing_reordering\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"columnsResizingReordering\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.column_fixing.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_fixing\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"columnFixing\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.adaptivity.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.adaptivity\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"adaptivity\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.selection.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.selection\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TREELIST_SELECT_ALL_CLASS = \"dx-treelist-select-all\";\r\nvar CELL_FOCUS_DISABLED_CLASS = \"dx-cell-focus-disabled\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-select-checkbox\";\r\nvar originalRowClick = _uiGrid_core.default.extenders.views.rowsView._rowClick;\r\nvar originalHandleDataChanged = _uiGrid_core.default.extenders.controllers.data._handleDataChanged;\r\nvar nodeExists = function(array, currentKey) {\r\n return !!array.filter(function(key) {\r\n return key === currentKey\r\n }).length\r\n};\r\n_uiTree_list.default.registerModule(\"selection\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n defaultOptions: function() {\r\n return (0, _extend.extend)(true, _uiGrid_core.default.defaultOptions(), {\r\n selection: {\r\n showCheckBoxesMode: \"always\",\r\n recursive: false\r\n }\r\n })\r\n },\r\n extenders: {\r\n controllers: {\r\n data: {\r\n _handleDataChanged: function(e) {\r\n var selectionController = this.getController(\"selection\");\r\n var isRecursiveSelection = selectionController.isRecursiveSelection();\r\n if (isRecursiveSelection && (!e || \"updateSelectionState\" !== e.changeType)) {\r\n selectionController.updateSelectionState({\r\n selectedItemKeys: this.option(\"selectedRowKeys\")\r\n })\r\n }\r\n originalHandleDataChanged.apply(this, arguments)\r\n },\r\n loadDescendants: function() {\r\n var that = this;\r\n var d = that.callBase.apply(that, arguments);\r\n var selectionController = that.getController(\"selection\");\r\n var isRecursiveSelection = selectionController.isRecursiveSelection();\r\n if (isRecursiveSelection) {\r\n d.done(function() {\r\n selectionController.updateSelectionState({\r\n selectedItemKeys: that.option(\"selectedRowKeys\")\r\n })\r\n })\r\n }\r\n return d\r\n }\r\n },\r\n selection: {\r\n init: function() {\r\n this.callBase.apply(this, arguments);\r\n this._selectionStateByKey = {}\r\n },\r\n _getSelectionConfig: function() {\r\n var _arguments = arguments,\r\n _this = this;\r\n var config = this.callBase.apply(this, arguments);\r\n var plainItems = config.plainItems;\r\n config.plainItems = function(all) {\r\n if (all) {\r\n return _this._dataController.getCachedStoreData() || []\r\n }\r\n return plainItems.apply(_this, _arguments).map(function(item) {\r\n return item.data\r\n })\r\n };\r\n config.isItemSelected = function(item) {\r\n var key = _this._dataController.keyOf(item);\r\n return _this.isRowSelected(key)\r\n };\r\n config.isSelectableItem = function() {\r\n return true\r\n };\r\n config.getItemData = function(item) {\r\n return item\r\n };\r\n return config\r\n },\r\n renderSelectCheckBoxContainer: function($container, model) {\r\n var that = this;\r\n var rowsView = that.component.getView(\"rowsView\");\r\n $container.addClass(CELL_FOCUS_DISABLED_CLASS);\r\n var $checkbox = rowsView._renderSelectCheckBox($container, {\r\n value: model.row.isSelected,\r\n row: model.row,\r\n column: model.column\r\n });\r\n rowsView._attachCheckBoxClickEvent($checkbox)\r\n },\r\n _updateSelectColumn: _common.noop,\r\n _getSelectAllNodeKeys: function() {\r\n var component = this.component;\r\n var root = component.getRootNode();\r\n var cache = {};\r\n var keys = [];\r\n var isRecursiveSelection = this.isRecursiveSelection();\r\n root && _uiTree_list.default.foreachNodes(root.children, function(node) {\r\n if (void 0 !== node.key && (node.visible || isRecursiveSelection)) {\r\n keys.push(node.key)\r\n }\r\n if (!node.visible) {\r\n return true\r\n }\r\n return isRecursiveSelection ? false : component.isRowExpanded(node.key, cache)\r\n });\r\n return keys\r\n },\r\n isSelectAll: function() {\r\n var selectedRowKeys = this.option(\"selectedRowKeys\") || [];\r\n if (0 === selectedRowKeys.length) {\r\n return false\r\n }\r\n var component = this.component;\r\n var visibleKeys = this._getSelectAllNodeKeys();\r\n var isRecursiveSelection = this.isRecursiveSelection();\r\n var hasIndeterminateState = false;\r\n var selectedVisibleKeys = visibleKeys.filter(function(key) {\r\n var isRowSelected = component.isRowSelected(key, isRecursiveSelection);\r\n if (void 0 === isRowSelected) {\r\n hasIndeterminateState = true\r\n }\r\n return isRowSelected\r\n });\r\n if (!selectedVisibleKeys.length) {\r\n return hasIndeterminateState ? void 0 : false\r\n } else {\r\n if (selectedVisibleKeys.length === visibleKeys.length) {\r\n return true\r\n }\r\n }\r\n },\r\n selectAll: function() {\r\n var _this2 = this;\r\n var visibleKeys = this._getSelectAllNodeKeys().filter(function(key) {\r\n return !_this2.isRowSelected(key)\r\n });\r\n this.focusedItemIndex(-1);\r\n return this.selectRows(visibleKeys, true)\r\n },\r\n deselectAll: function() {\r\n var visibleKeys = this._getSelectAllNodeKeys();\r\n this.focusedItemIndex(-1);\r\n return this.deselectRows(visibleKeys)\r\n },\r\n selectedItemKeys: function(value, preserve, isDeselect, isSelectAll) {\r\n var that = this;\r\n var selectedRowKeys = that.option(\"selectedRowKeys\");\r\n var isRecursiveSelection = this.isRecursiveSelection();\r\n var normalizedArgs = isRecursiveSelection && that._normalizeSelectionArgs({\r\n keys: (0, _type.isDefined)(value) ? value : []\r\n }, preserve, !isDeselect);\r\n if (normalizedArgs && !(0, _common.equalByValue)(normalizedArgs.selectedRowKeys, selectedRowKeys)) {\r\n that._isSelectionNormalizing = true;\r\n return this.callBase(normalizedArgs.selectedRowKeys, false, false, false).always(function() {\r\n that._isSelectionNormalizing = false\r\n }).done(function(items) {\r\n normalizedArgs.selectedRowsData = items;\r\n that._fireSelectionChanged(normalizedArgs)\r\n })\r\n }\r\n return this.callBase(value, preserve, isDeselect, isSelectAll)\r\n },\r\n changeItemSelection: function(itemIndex, keyboardKeys) {\r\n var isRecursiveSelection = this.isRecursiveSelection();\r\n if (isRecursiveSelection && !keyboardKeys.shift) {\r\n var key = this._dataController.getKeyByRowIndex(itemIndex);\r\n return this.selectedItemKeys(key, true, this.isRowSelected(key))\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _updateParentSelectionState: function(node, isSelected) {\r\n var that = this;\r\n var state = isSelected;\r\n var parentNode = node.parent;\r\n if (parentNode) {\r\n if (parentNode.children.length > 1) {\r\n if (false === isSelected) {\r\n var hasSelectedState = parentNode.children.some(function(childNode, index, children) {\r\n return that._selectionStateByKey[childNode.key]\r\n });\r\n state = hasSelectedState ? void 0 : false\r\n } else {\r\n if (true === isSelected) {\r\n var hasNonSelectedState = parentNode.children.some(function(childNode) {\r\n return !that._selectionStateByKey[childNode.key]\r\n });\r\n state = hasNonSelectedState ? void 0 : true\r\n }\r\n }\r\n }\r\n this._selectionStateByKey[parentNode.key] = state;\r\n if (parentNode.parent && parentNode.parent.level >= 0) {\r\n this._updateParentSelectionState(parentNode, state)\r\n }\r\n }\r\n },\r\n _updateChildrenSelectionState: function(node, isSelected) {\r\n var that = this;\r\n var children = node.children;\r\n children && children.forEach(function(childNode) {\r\n that._selectionStateByKey[childNode.key] = isSelected;\r\n if (childNode.children.length > 0) {\r\n that._updateChildrenSelectionState(childNode, isSelected)\r\n }\r\n })\r\n },\r\n _updateSelectionStateCore: function(keys, isSelected) {\r\n var dataController = this._dataController;\r\n for (var i = 0; i < keys.length; i++) {\r\n this._selectionStateByKey[keys[i]] = isSelected;\r\n var node = dataController.getNodeByKey(keys[i]);\r\n if (node) {\r\n this._updateParentSelectionState(node, isSelected);\r\n this._updateChildrenSelectionState(node, isSelected)\r\n }\r\n }\r\n },\r\n _getSelectedParentKeys: function(key, selectedItemKeys, useCash) {\r\n var selectedParentNode;\r\n var node = this._dataController.getNodeByKey(key);\r\n var parentNode = node && node.parent;\r\n var result = [];\r\n while (parentNode && parentNode.level >= 0) {\r\n result.unshift(parentNode.key);\r\n var isSelected = useCash ? !nodeExists(selectedItemKeys, parentNode.key) && this.isRowSelected(parentNode.key) : selectedItemKeys.indexOf(parentNode.key) >= 0;\r\n if (isSelected) {\r\n selectedParentNode = parentNode;\r\n result = this._getSelectedParentKeys(selectedParentNode.key, selectedItemKeys, useCash).concat(result);\r\n break\r\n } else {\r\n if (useCash) {\r\n break\r\n }\r\n }\r\n parentNode = parentNode.parent\r\n }\r\n return selectedParentNode && result || []\r\n },\r\n _getSelectedChildKeys: function(key, keysToIgnore) {\r\n var _this3 = this;\r\n var childKeys = [];\r\n var node = this._dataController.getNodeByKey(key);\r\n node && _uiTree_list.default.foreachNodes(node.children, function(childNode) {\r\n var ignoreKeyIndex = keysToIgnore.indexOf(childNode.key);\r\n if (ignoreKeyIndex < 0) {\r\n childKeys.push(childNode.key)\r\n }\r\n return ignoreKeyIndex > 0 || ignoreKeyIndex < 0 && void 0 === _this3._selectionStateByKey[childNode.key]\r\n });\r\n return childKeys\r\n },\r\n _normalizeParentKeys: function(key, args) {\r\n var that = this;\r\n var keysToIgnore = [key];\r\n var parentNodeKeys = that._getSelectedParentKeys(key, args.selectedRowKeys);\r\n if (parentNodeKeys.length) {\r\n keysToIgnore = keysToIgnore.concat(parentNodeKeys);\r\n keysToIgnore.forEach(function(key) {\r\n var index = args.selectedRowKeys.indexOf(key);\r\n if (index >= 0) {\r\n args.selectedRowKeys.splice(index, 1)\r\n }\r\n });\r\n var childKeys = that._getSelectedChildKeys(parentNodeKeys[0], keysToIgnore);\r\n args.selectedRowKeys = args.selectedRowKeys.concat(childKeys)\r\n }\r\n },\r\n _normalizeChildrenKeys: function(key, args) {\r\n var _this4 = this;\r\n var node = this._dataController.getNodeByKey(key);\r\n node && node.children.forEach(function(childNode) {\r\n var index = args.selectedRowKeys.indexOf(childNode.key);\r\n if (index >= 0) {\r\n args.selectedRowKeys.splice(index, 1)\r\n }\r\n _this4._normalizeChildrenKeys(childNode.key, args)\r\n })\r\n },\r\n _normalizeSelectedRowKeysCore: function(keys, args, preserve, isSelect) {\r\n var that = this;\r\n keys.forEach(function(key) {\r\n if (preserve && that.isRowSelected(key) === isSelect) {\r\n return\r\n }\r\n that._normalizeChildrenKeys(key, args);\r\n var index = args.selectedRowKeys.indexOf(key);\r\n if (isSelect) {\r\n if (index < 0) {\r\n args.selectedRowKeys.push(key)\r\n }\r\n args.currentSelectedRowKeys.push(key)\r\n } else {\r\n if (index >= 0) {\r\n args.selectedRowKeys.splice(index, 1)\r\n }\r\n args.currentDeselectedRowKeys.push(key);\r\n that._normalizeParentKeys(key, args)\r\n }\r\n })\r\n },\r\n _normalizeSelectionArgs: function(args, preserve, isSelect) {\r\n var result;\r\n var keys = Array.isArray(args.keys) ? args.keys : [args.keys];\r\n var selectedRowKeys = this.option(\"selectedRowKeys\") || [];\r\n if (keys.length) {\r\n result = {\r\n currentSelectedRowKeys: [],\r\n currentDeselectedRowKeys: [],\r\n selectedRowKeys: preserve ? selectedRowKeys.slice(0) : []\r\n };\r\n this._normalizeSelectedRowKeysCore(keys, result, preserve, isSelect)\r\n }\r\n return result\r\n },\r\n _updateSelectedItems: function(args) {\r\n this.updateSelectionState(args);\r\n this.callBase(args)\r\n },\r\n _fireSelectionChanged: function() {\r\n if (!this._isSelectionNormalizing) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _isModeLeavesOnly: function(mode) {\r\n return \"leavesOnly\" === mode\r\n },\r\n _removeDuplicatedKeys: function(keys) {\r\n var result = [];\r\n var processedKeys = {};\r\n keys.forEach(function(key) {\r\n if (!processedKeys[key]) {\r\n processedKeys[key] = true;\r\n result.push(key)\r\n }\r\n });\r\n return result\r\n },\r\n _getAllChildKeys: function(key) {\r\n var childKeys = [];\r\n var node = this._dataController.getNodeByKey(key);\r\n node && _uiTree_list.default.foreachNodes(node.children, function(childNode) {\r\n childKeys.push(childNode.key)\r\n }, true);\r\n return childKeys\r\n },\r\n _getAllSelectedRowKeys: function(keys) {\r\n var _this5 = this;\r\n var result = [];\r\n keys.forEach(function(key) {\r\n var parentKeys = _this5._getSelectedParentKeys(key, [], true);\r\n var childKeys = _this5._getAllChildKeys(key);\r\n result.push.apply(result, parentKeys.concat([key], childKeys))\r\n });\r\n result = this._removeDuplicatedKeys(result);\r\n return result\r\n },\r\n _getParentSelectedRowKeys: function(keys) {\r\n var that = this;\r\n var result = [];\r\n keys.forEach(function(key) {\r\n var parentKeys = that._getSelectedParentKeys(key, keys);\r\n !parentKeys.length && result.push(key)\r\n });\r\n return result\r\n },\r\n _getLeafSelectedRowKeys: function(keys) {\r\n var that = this;\r\n var result = [];\r\n var dataController = that._dataController;\r\n keys.forEach(function(key) {\r\n var node = dataController.getNodeByKey(key);\r\n node && !node.hasChildren && result.push(key)\r\n });\r\n return result\r\n },\r\n isRecursiveSelection: function() {\r\n var selectionMode = this.option(\"selection.mode\");\r\n var isRecursive = this.option(\"selection.recursive\");\r\n return \"multiple\" === selectionMode && isRecursive\r\n },\r\n updateSelectionState: function(options) {\r\n var removedItemKeys = options.removedItemKeys || [];\r\n var selectedItemKeys = options.selectedItemKeys || [];\r\n if (this.isRecursiveSelection()) {\r\n this._updateSelectionStateCore(removedItemKeys, false);\r\n this._updateSelectionStateCore(selectedItemKeys, true)\r\n }\r\n },\r\n isRowSelected: function(key, isRecursiveSelection) {\r\n var _isRecursiveSelection;\r\n var result = this.callBase.apply(this, arguments);\r\n isRecursiveSelection = null !== (_isRecursiveSelection = isRecursiveSelection) && void 0 !== _isRecursiveSelection ? _isRecursiveSelection : this.isRecursiveSelection();\r\n if (!result && isRecursiveSelection) {\r\n if (key in this._selectionStateByKey) {\r\n return this._selectionStateByKey[key]\r\n }\r\n return false\r\n }\r\n return result\r\n },\r\n getSelectedRowKeys: function(mode) {\r\n var that = this;\r\n if (!that._dataController) {\r\n return []\r\n }\r\n var selectedRowKeys = that.callBase.apply(that, arguments);\r\n if (mode) {\r\n if (this.isRecursiveSelection()) {\r\n selectedRowKeys = this._getAllSelectedRowKeys(selectedRowKeys)\r\n }\r\n if (\"all\" !== mode) {\r\n if (\"excludeRecursive\" === mode) {\r\n selectedRowKeys = that._getParentSelectedRowKeys(selectedRowKeys)\r\n } else {\r\n if (that._isModeLeavesOnly(mode)) {\r\n selectedRowKeys = that._getLeafSelectedRowKeys(selectedRowKeys)\r\n }\r\n }\r\n }\r\n }\r\n return selectedRowKeys\r\n },\r\n getSelectedRowsData: function(mode) {\r\n var that = this;\r\n var dataController = that._dataController;\r\n var selectedKeys = this.getSelectedRowKeys(mode) || [];\r\n var selectedRowsData = [];\r\n selectedKeys.forEach(function(key) {\r\n var node = dataController.getNodeByKey(key);\r\n node && selectedRowsData.push(node.data)\r\n });\r\n return selectedRowsData\r\n },\r\n refresh: function() {\r\n this._selectionStateByKey = {};\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n },\r\n views: {\r\n columnHeadersView: {\r\n _processTemplate: function(template, options) {\r\n var that = this;\r\n var resultTemplate;\r\n var renderingTemplate = this.callBase(template, options);\r\n var firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex();\r\n if (renderingTemplate && \"header\" === options.rowType && options.column.index === firstDataColumnIndex) {\r\n resultTemplate = {\r\n render: function(options) {\r\n if (\"multiple\" === that.option(\"selection.mode\")) {\r\n that.renderSelectAll(options.container, options.model)\r\n }\r\n renderingTemplate.render(options)\r\n }\r\n }\r\n } else {\r\n resultTemplate = renderingTemplate\r\n }\r\n return resultTemplate\r\n },\r\n renderSelectAll: function($cell, options) {\r\n $cell.addClass(TREELIST_SELECT_ALL_CLASS);\r\n this._renderSelectAllCheckBox($cell)\r\n },\r\n _isSortableElement: function($target) {\r\n return this.callBase($target) && !$target.closest(\".\" + SELECT_CHECKBOX_CLASS).length\r\n }\r\n },\r\n rowsView: {\r\n _renderIcons: function($iconContainer, options) {\r\n this.callBase.apply(this, arguments);\r\n if (!options.row.isNewRow && \"multiple\" === this.option(\"selection.mode\")) {\r\n this.getController(\"selection\").renderSelectCheckBoxContainer($iconContainer, options)\r\n }\r\n return $iconContainer\r\n },\r\n _rowClick: function(e) {\r\n var $targetElement = (0, _renderer.default)(e.event.target);\r\n if (this.isExpandIcon($targetElement)) {\r\n this.callBase.apply(this, arguments)\r\n } else {\r\n originalRowClick.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.search.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"search\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.keyboard_navigation.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.keyboard_navigation\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"keyboardNavigation\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n extenders: {\r\n controllers: {\r\n keyboardNavigation: {\r\n _leftRightKeysHandler: function(eventArgs, isEditing) {\r\n var rowIndex = this.getVisibleRowIndex();\r\n var dataController = this._dataController;\r\n if (eventArgs.ctrl) {\r\n var directionCode = this._getDirectionCodeByKey(eventArgs.keyName);\r\n var key = dataController.getKeyByRowIndex(rowIndex);\r\n if (\"nextInRow\" === directionCode) {\r\n dataController.expandRow(key)\r\n } else {\r\n dataController.collapseRow(key)\r\n }\r\n } else {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.virtual_columns.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.virtual_columns\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"virtualColumns\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.focus.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.focus\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction findIndex(items, callback) {\r\n var result = -1;\r\n items.forEach(function(node, index) {\r\n if (callback(node)) {\r\n result = index\r\n }\r\n });\r\n return result\r\n}\r\n_uiTree_list.default.registerModule(\"focus\", (0, _extend.extend)(true, {}, _uiGrid_core.default, {\r\n extenders: {\r\n controllers: {\r\n data: {\r\n changeRowExpand: function(key) {\r\n if (this.option(\"focusedRowEnabled\") && this.isRowExpanded(key)) {\r\n if (this._isFocusedRowInside(key)) {\r\n this.option(\"focusedRowKey\", key)\r\n }\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _isFocusedRowInside: function(parentKey) {\r\n var focusedRowKey = this.option(\"focusedRowKey\");\r\n var rowIndex = this.getRowIndexByKey(focusedRowKey);\r\n var focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex];\r\n var parent = focusedRow && focusedRow.node.parent;\r\n while (parent) {\r\n if (parent.key === parentKey) {\r\n return true\r\n }\r\n parent = parent.parent\r\n }\r\n return false\r\n },\r\n getParentKey: function(key) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var node = that.getNodeByKey(key);\r\n var d = new _deferred.Deferred;\r\n if (node) {\r\n d.resolve(node.parent ? node.parent.key : void 0)\r\n } else {\r\n dataSource.load({\r\n filter: [dataSource.getKeyExpr(), \"=\", key]\r\n }).done(function(items) {\r\n var parentData = items[0];\r\n if (parentData) {\r\n d.resolve(dataSource.parentKeyOf(parentData))\r\n } else {\r\n d.reject()\r\n }\r\n }).fail(d.reject)\r\n }\r\n return d.promise()\r\n },\r\n expandAscendants: function(key) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n that.getParentKey(key).done(function(parentKey) {\r\n if (dataSource && void 0 !== parentKey && parentKey !== that.option(\"rootValue\")) {\r\n dataSource._isNodesInitializing = true;\r\n that.expandRow(parentKey);\r\n dataSource._isNodesInitializing = false;\r\n that.expandAscendants(parentKey).done(d.resolve).fail(d.reject)\r\n } else {\r\n d.resolve()\r\n }\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n getPageIndexByKey: function(key) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n that.expandAscendants(key).done(function() {\r\n dataSource.load({\r\n parentIds: []\r\n }).done(function(nodes) {\r\n var offset = findIndex(nodes, function(node) {\r\n return that.keyOf(node.data) === key\r\n });\r\n var pageIndex = -1;\r\n if (offset >= 0) {\r\n pageIndex = Math.floor(offset / that.pageSize())\r\n }\r\n d.resolve(pageIndex)\r\n }).fail(d.reject)\r\n }).fail(d.reject);\r\n return d.promise()\r\n }\r\n }\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (ui/tree_list/ui.tree_list.row_dragging.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nvar _uiTree_list = _interopRequireDefault(require(\"./ui.tree_list.core\"));\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.row_dragging\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_uiTree_list.default.registerModule(\"rowDragging\", _uiGrid_core.default);\r\n","/**\r\n * DevExtreme (ui/tooltip/ui.tooltip.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.hide = hide;\r\nexports.show = show;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _tooltip = _interopRequireDefault(require(\"./tooltip\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar tooltip = null;\r\nvar removeTooltipElement = null;\r\nvar createTooltip = function(options) {\r\n options = (0, _extend.extend)({\r\n position: \"top\"\r\n }, options);\r\n var content = options.content;\r\n delete options.content;\r\n var $tooltip = (0, _renderer.default)(\"
    \").html(content).appendTo((0, _view_port.value)());\r\n removeTooltipElement = function() {\r\n $tooltip.remove()\r\n };\r\n tooltip = new _tooltip.default($tooltip, options)\r\n};\r\nvar removeTooltip = function() {\r\n if (!tooltip) {\r\n return\r\n }\r\n removeTooltipElement();\r\n tooltip = null\r\n};\r\n\r\nfunction show(options) {\r\n removeTooltip();\r\n createTooltip(options);\r\n return tooltip.show()\r\n}\r\n\r\nfunction hide() {\r\n if (!tooltip) {\r\n return (new _deferred.Deferred).resolve()\r\n }\r\n return tooltip.hide().done(removeTooltip).promise()\r\n}\r\n","/**\r\n * DevExtreme (ui/tile_view.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _element = require(\"../core/element\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _scroll_view = _interopRequireDefault(require(\"./scroll_view\"));\r\nvar _uiCollection_widget = _interopRequireDefault(require(\"./collection/ui.collection_widget.edit\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar TILEVIEW_CLASS = \"dx-tileview\";\r\nvar TILEVIEW_CONTAINER_CLASS = \"dx-tileview-wrapper\";\r\nvar TILEVIEW_ITEM_CLASS = \"dx-tile\";\r\nvar TILEVIEW_ITEM_SELECTOR = \".\" + TILEVIEW_ITEM_CLASS;\r\nvar TILEVIEW_ITEM_DATA_KEY = \"dxTileData\";\r\nvar CONFIGS = {\r\n horizontal: {\r\n itemMainRatio: \"widthRatio\",\r\n itemCrossRatio: \"heightRatio\",\r\n baseItemMainDimension: \"baseItemWidth\",\r\n baseItemCrossDimension: \"baseItemHeight\",\r\n mainDimension: \"width\",\r\n crossDimension: \"height\",\r\n mainPosition: \"left\",\r\n crossPosition: \"top\"\r\n },\r\n vertical: {\r\n itemMainRatio: \"heightRatio\",\r\n itemCrossRatio: \"widthRatio\",\r\n baseItemMainDimension: \"baseItemHeight\",\r\n baseItemCrossDimension: \"baseItemWidth\",\r\n mainDimension: \"height\",\r\n crossDimension: \"width\",\r\n mainPosition: \"top\",\r\n crossPosition: \"left\"\r\n }\r\n};\r\nvar TileView = _uiCollection_widget.default.inherit({\r\n _activeStateUnit: TILEVIEW_ITEM_SELECTOR,\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n items: null,\r\n direction: \"horizontal\",\r\n hoverStateEnabled: true,\r\n showScrollbar: false,\r\n height: 500,\r\n baseItemWidth: 100,\r\n baseItemHeight: 100,\r\n itemMargin: 20,\r\n activeStateEnabled: true,\r\n indicateLoading: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _itemClass: function() {\r\n return TILEVIEW_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return TILEVIEW_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$container\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(TILEVIEW_CLASS);\r\n this._initScrollView()\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n var scrollView = this._scrollView;\r\n if (!scrollView || !scrollView.startLoading) {\r\n return\r\n }\r\n if (isLoading && this.option(\"indicateLoading\")) {\r\n scrollView.startLoading()\r\n } else {\r\n scrollView.finishLoading()\r\n }\r\n },\r\n _hideLoadingIfLoadIndicationOff: function() {\r\n if (!this.option(\"indicateLoading\")) {\r\n this._dataSourceLoadingChangedHandler(false)\r\n }\r\n },\r\n _initScrollView: function() {\r\n this._scrollView = this._createComponent(this.$element(), _scroll_view.default, {\r\n direction: this.option(\"direction\"),\r\n scrollByContent: true,\r\n useKeyboard: false,\r\n showScrollbar: this.option(\"showScrollbar\")\r\n });\r\n this._$container = (0, _renderer.default)(this._scrollView.content());\r\n this._$container.addClass(TILEVIEW_CONTAINER_CLASS);\r\n this._scrollView.option(\"onUpdated\", this._renderGeometry.bind(this))\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n (0, _common.deferRender)(function() {\r\n this._cellsPerDimension = 1;\r\n this._renderGeometry();\r\n this._updateScrollView();\r\n this._fireContentReadyAction()\r\n }.bind(this))\r\n },\r\n _updateScrollView: function() {\r\n this._scrollView.option(\"direction\", this.option(\"direction\"));\r\n this._scrollView.update();\r\n this._indicateLoadingIfAlreadyStarted()\r\n },\r\n _indicateLoadingIfAlreadyStarted: function() {\r\n if (this._isDataSourceLoading()) {\r\n this._dataSourceLoadingChangedHandler(true)\r\n }\r\n },\r\n _renderGeometry: function() {\r\n this._config = CONFIGS[this.option(\"direction\")];\r\n var items = this.option(\"items\") || [];\r\n var config = this._config;\r\n var itemMargin = this.option(\"itemMargin\");\r\n var maxItemCrossRatio = Math.max.apply(Math, (0, _iterator.map)(items || [], function(item) {\r\n return Math.round(item[config.itemCrossRatio] || 1)\r\n }));\r\n var crossDimensionValue = (0, _window.hasWindow)() ? this.$element()[config.crossDimension]() : parseInt(this.$element().get(0).style[config.crossDimension]);\r\n this._cellsPerDimension = Math.floor(crossDimensionValue / (this.option(config.baseItemCrossDimension) + itemMargin));\r\n this._cellsPerDimension = Math.max(this._cellsPerDimension, maxItemCrossRatio);\r\n this._cells = [];\r\n this._cells.push(new Array(this._cellsPerDimension));\r\n this._arrangeItems(items);\r\n this._renderContentSize(config, itemMargin)\r\n },\r\n _renderContentSize: function(_ref, itemMargin) {\r\n var mainDimension = _ref.mainDimension,\r\n baseItemMainDimension = _ref.baseItemMainDimension;\r\n if ((0, _window.hasWindow)()) {\r\n var actualContentSize = this._cells.length * this.option(baseItemMainDimension) + (this._cells.length + 1) * itemMargin;\r\n var elementSize = this.$element()[mainDimension]();\r\n this._$container[mainDimension](Math.max(actualContentSize, elementSize))\r\n }\r\n },\r\n _arrangeItems: function(items) {\r\n var config = this._config;\r\n var itemMainRatio = config.itemMainRatio;\r\n var itemCrossRatio = config.itemCrossRatio;\r\n var mainPosition = config.mainPosition;\r\n this._itemsPositions = [];\r\n (0, _iterator.each)(items, function(index, item) {\r\n var currentItem = {};\r\n currentItem[itemMainRatio] = item[itemMainRatio] || 1;\r\n currentItem[itemCrossRatio] = item[itemCrossRatio] || 1;\r\n currentItem.index = index;\r\n currentItem[itemMainRatio] = currentItem[itemMainRatio] <= 0 ? 0 : Math.round(currentItem[config.itemMainRatio]);\r\n currentItem[itemCrossRatio] = currentItem[itemCrossRatio] <= 0 ? 0 : Math.round(currentItem[config.itemCrossRatio]);\r\n var itemPosition = this._getItemPosition(currentItem);\r\n if (itemPosition[mainPosition] === -1) {\r\n itemPosition[mainPosition] = this._cells.push(new Array(this._cellsPerDimension)) - 1\r\n }\r\n this._occupyCells(currentItem, itemPosition);\r\n this._arrangeItem(currentItem, itemPosition);\r\n this._itemsPositions.push(itemPosition)\r\n }.bind(this))\r\n },\r\n _getItemPosition: function(item) {\r\n var config = this._config;\r\n var mainPosition = config.mainPosition;\r\n var crossPosition = config.crossPosition;\r\n var position = {};\r\n position[mainPosition] = -1;\r\n position[crossPosition] = 0;\r\n for (var main = 0; main < this._cells.length; main++) {\r\n for (var cross = 0; cross < this._cellsPerDimension; cross++) {\r\n if (this._itemFit(main, cross, item)) {\r\n position[mainPosition] = main;\r\n position[crossPosition] = cross;\r\n break\r\n }\r\n }\r\n if (position[mainPosition] > -1) {\r\n break\r\n }\r\n }\r\n return position\r\n },\r\n _itemFit: function(mainPosition, crossPosition, item) {\r\n var result = true;\r\n var config = this._config;\r\n var itemRatioMain = item[config.itemMainRatio];\r\n var itemRatioCross = item[config.itemCrossRatio];\r\n if (crossPosition + itemRatioCross > this._cellsPerDimension) {\r\n return false\r\n }\r\n for (var main = mainPosition; main < mainPosition + itemRatioMain; main++) {\r\n for (var cross = crossPosition; cross < crossPosition + itemRatioCross; cross++) {\r\n if (this._cells.length - 1 < main) {\r\n this._cells.push(new Array(this._cellsPerDimension))\r\n } else {\r\n if (void 0 !== this._cells[main][cross]) {\r\n result = false;\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n },\r\n _occupyCells: function(item, itemPosition) {\r\n var config = this._config;\r\n var itemPositionMain = itemPosition[config.mainPosition];\r\n var itemPositionCross = itemPosition[config.crossPosition];\r\n var itemRatioMain = item[config.itemMainRatio];\r\n var itemRatioCross = item[config.itemCrossRatio];\r\n for (var main = itemPositionMain; main < itemPositionMain + itemRatioMain; main++) {\r\n for (var cross = itemPositionCross; cross < itemPositionCross + itemRatioCross; cross++) {\r\n this._cells[main][cross] = item.index\r\n }\r\n }\r\n },\r\n _arrangeItem: function(item, itemPosition) {\r\n var config = this._config;\r\n var itemPositionMain = itemPosition[config.mainPosition];\r\n var itemPositionCross = itemPosition[config.crossPosition];\r\n var itemRatioMain = item[config.itemMainRatio];\r\n var itemRatioCross = item[config.itemCrossRatio];\r\n var baseItemCross = this.option(config.baseItemCrossDimension);\r\n var baseItemMain = this.option(config.baseItemMainDimension);\r\n var itemMargin = this.option(\"itemMargin\");\r\n var cssProps = {\r\n display: itemRatioMain <= 0 || itemRatioCross <= 0 ? \"none\" : \"\"\r\n };\r\n var mainDimension = itemRatioMain * baseItemMain + (itemRatioMain - 1) * itemMargin;\r\n var crossDimension = itemRatioCross * baseItemCross + (itemRatioCross - 1) * itemMargin;\r\n cssProps[config.mainDimension] = mainDimension < 0 ? 0 : mainDimension;\r\n cssProps[config.crossDimension] = crossDimension < 0 ? 0 : crossDimension;\r\n cssProps[config.mainPosition] = itemPositionMain * baseItemMain + (itemPositionMain + 1) * itemMargin;\r\n cssProps[config.crossPosition] = itemPositionCross * baseItemCross + (itemPositionCross + 1) * itemMargin;\r\n if (this.option(\"rtlEnabled\")) {\r\n var offsetCorrection = this._$container.width();\r\n var baseItemWidth = this.option(\"baseItemWidth\");\r\n var itemPositionX = itemPosition.left;\r\n var offsetPosition = itemPositionX * baseItemWidth;\r\n var itemBaseOffset = baseItemWidth + itemMargin;\r\n var itemWidth = itemBaseOffset * item.widthRatio;\r\n var subItemMargins = itemPositionX * itemMargin;\r\n cssProps.left = offsetCorrection - (offsetPosition + itemWidth + subItemMargins)\r\n }\r\n this._itemElements().eq(item.index).css(cssProps)\r\n },\r\n _moveFocus: function(location) {\r\n var FOCUS_UP = \"up\";\r\n var FOCUS_DOWN = \"down\";\r\n var FOCUS_LEFT = this.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n var FOCUS_RIGHT = this.option(\"rtlEnabled\") ? \"left\" : \"right\";\r\n var FOCUS_PAGE_UP = \"pageup\";\r\n var FOCUS_PAGE_DOWN = \"pagedown\";\r\n var horizontalDirection = \"horizontal\" === this.option(\"direction\");\r\n var cells = this._cells;\r\n var index = (0, _renderer.default)(this.option(\"focusedElement\")).index();\r\n var targetCol = this._itemsPositions[index].left;\r\n var targetRow = this._itemsPositions[index].top;\r\n var colCount = (horizontalDirection ? cells : cells[0]).length;\r\n var rowCount = (horizontalDirection ? cells[0] : cells).length;\r\n var getCell = function(col, row) {\r\n if (horizontalDirection) {\r\n return cells[col][row]\r\n }\r\n return cells[row][col]\r\n };\r\n switch (location) {\r\n case FOCUS_PAGE_UP:\r\n case FOCUS_UP:\r\n while (targetRow > 0 && index === getCell(targetCol, targetRow)) {\r\n targetRow--\r\n }\r\n if (targetRow < 0) {\r\n targetRow = 0\r\n }\r\n break;\r\n case FOCUS_PAGE_DOWN:\r\n case FOCUS_DOWN:\r\n while (targetRow < rowCount && index === getCell(targetCol, targetRow)) {\r\n targetRow++\r\n }\r\n if (targetRow === rowCount) {\r\n targetRow = rowCount - 1\r\n }\r\n break;\r\n case FOCUS_RIGHT:\r\n while (targetCol < colCount && index === getCell(targetCol, targetRow)) {\r\n targetCol++\r\n }\r\n if (targetCol === colCount) {\r\n targetCol = colCount - 1\r\n }\r\n break;\r\n case FOCUS_LEFT:\r\n while (targetCol >= 0 && index === getCell(targetCol, targetRow)) {\r\n targetCol--\r\n }\r\n if (targetCol < 0) {\r\n targetCol = 0\r\n }\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n var newTargetIndex = getCell(targetCol, targetRow);\r\n if (!(0, _type.isDefined)(newTargetIndex)) {\r\n return\r\n }\r\n var $newTarget = this._itemElements().eq(newTargetIndex);\r\n this.option(\"focusedElement\", (0, _element.getPublicElement)($newTarget));\r\n this._scrollToItem($newTarget)\r\n },\r\n _scrollToItem: function($itemElement) {\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n var config = this._config;\r\n var outerMainProp = \"outer\" + (0, _inflector.captionize)(config.mainDimension);\r\n var itemMargin = this.option(\"itemMargin\");\r\n var itemPosition = $itemElement.position()[config.mainPosition];\r\n var itemDimension = $itemElement[outerMainProp]();\r\n var itemTail = itemPosition + itemDimension;\r\n var scrollPosition = this.scrollPosition();\r\n var clientWidth = this.$element()[outerMainProp]();\r\n if (scrollPosition <= itemPosition && itemTail <= scrollPosition + clientWidth) {\r\n return\r\n }\r\n if (scrollPosition > itemPosition) {\r\n this._scrollView.scrollTo(itemPosition - itemMargin)\r\n } else {\r\n this._scrollView.scrollTo(itemPosition + itemDimension - clientWidth + itemMargin)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n this.callBase(args);\r\n this._renderGeometry();\r\n this._updateScrollView();\r\n break;\r\n case \"showScrollbar\":\r\n this._initScrollView();\r\n break;\r\n case \"disabled\":\r\n this._scrollView.option(\"disabled\", args.value);\r\n this.callBase(args);\r\n break;\r\n case \"baseItemWidth\":\r\n case \"baseItemHeight\":\r\n case \"itemMargin\":\r\n this._renderGeometry();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._renderGeometry();\r\n this._updateScrollView();\r\n break;\r\n case \"direction\":\r\n this._renderGeometry();\r\n this._updateScrollView();\r\n break;\r\n case \"indicateLoading\":\r\n this._hideLoadingIfLoadIndicationOff();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n scrollPosition: function() {\r\n return this._scrollView.scrollOffset()[this._config.mainPosition]\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxTileView\", TileView);\r\nvar _default = TileView;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/validation_engine.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _events_strategy = require(\"../core/events_strategy\");\r\nvar _errors = _interopRequireDefault(require(\"../core/errors\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _number = _interopRequireDefault(require(\"../localization/number\"));\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _promise = _interopRequireDefault(require(\"../core/polyfills/promise\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _inheritsLoose(subClass, superClass) {\r\n subClass.prototype = Object.create(superClass.prototype);\r\n subClass.prototype.constructor = subClass;\r\n _setPrototypeOf(subClass, superClass)\r\n}\r\n\r\nfunction _setPrototypeOf(o, p) {\r\n _setPrototypeOf = Object.setPrototypeOf || function(o, p) {\r\n o.__proto__ = p;\r\n return o\r\n };\r\n return _setPrototypeOf(o, p)\r\n}\r\nvar STATUS = {\r\n valid: \"valid\",\r\n invalid: \"invalid\",\r\n pending: \"pending\"\r\n};\r\nvar BaseRuleValidator = function() {\r\n function BaseRuleValidator() {\r\n this.NAME = \"base\"\r\n }\r\n var _proto = BaseRuleValidator.prototype;\r\n _proto.defaultMessage = function(value) {\r\n return _message.default.getFormatter(\"validation-\".concat(this.NAME))(value)\r\n };\r\n _proto.defaultFormattedMessage = function(value) {\r\n return _message.default.getFormatter(\"validation-\".concat(this.NAME, \"-formatted\"))(value)\r\n };\r\n _proto._isValueEmpty = function(value) {\r\n return !rulesValidators.required.validate(value, {})\r\n };\r\n _proto.validate = function(value, rule) {\r\n var _this = this;\r\n var valueArray = Array.isArray(value) ? value : [value];\r\n var result = true;\r\n if (valueArray.length) {\r\n valueArray.every(function(itemValue) {\r\n result = _this._validate(itemValue, rule);\r\n return result\r\n })\r\n } else {\r\n result = this._validate(null, rule)\r\n }\r\n return result\r\n };\r\n return BaseRuleValidator\r\n}();\r\nvar RequiredRuleValidator = function(_BaseRuleValidator) {\r\n _inheritsLoose(RequiredRuleValidator, _BaseRuleValidator);\r\n\r\n function RequiredRuleValidator() {\r\n var _this2;\r\n _this2 = _BaseRuleValidator.call(this) || this;\r\n _this2.NAME = \"required\";\r\n return _this2\r\n }\r\n var _proto2 = RequiredRuleValidator.prototype;\r\n _proto2._validate = function(value, rule) {\r\n if (!(0, _type.isDefined)(value)) {\r\n return false\r\n }\r\n if (false === value) {\r\n return false\r\n }\r\n value = String(value);\r\n if (rule.trim || !(0, _type.isDefined)(rule.trim)) {\r\n value = value.trim()\r\n }\r\n return \"\" !== value\r\n };\r\n return RequiredRuleValidator\r\n}(BaseRuleValidator);\r\nvar NumericRuleValidator = function(_BaseRuleValidator2) {\r\n _inheritsLoose(NumericRuleValidator, _BaseRuleValidator2);\r\n\r\n function NumericRuleValidator() {\r\n var _this3;\r\n _this3 = _BaseRuleValidator2.call(this) || this;\r\n _this3.NAME = \"numeric\";\r\n return _this3\r\n }\r\n var _proto3 = NumericRuleValidator.prototype;\r\n _proto3._validate = function(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n if (rule.useCultureSettings && (0, _type.isString)(value)) {\r\n return !isNaN(_number.default.parse(value))\r\n } else {\r\n return (0, _type.isNumeric)(value)\r\n }\r\n };\r\n return NumericRuleValidator\r\n}(BaseRuleValidator);\r\nvar RangeRuleValidator = function(_BaseRuleValidator3) {\r\n _inheritsLoose(RangeRuleValidator, _BaseRuleValidator3);\r\n\r\n function RangeRuleValidator() {\r\n var _this4;\r\n _this4 = _BaseRuleValidator3.call(this) || this;\r\n _this4.NAME = \"range\";\r\n return _this4\r\n }\r\n var _proto4 = RangeRuleValidator.prototype;\r\n _proto4._validate = function(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validNumber = rulesValidators.numeric.validate(value, rule);\r\n var validValue = (0, _type.isDefined)(value) && \"\" !== value;\r\n var number = validNumber ? parseFloat(value) : validValue && value.valueOf();\r\n var min = rule.min;\r\n var max = rule.max;\r\n if (!(validNumber || (0, _type.isDate)(value)) && !validValue) {\r\n return false\r\n }\r\n if ((0, _type.isDefined)(min)) {\r\n if ((0, _type.isDefined)(max)) {\r\n return number >= min && number <= max\r\n }\r\n return number >= min\r\n } else {\r\n if ((0, _type.isDefined)(max)) {\r\n return number <= max\r\n } else {\r\n throw _errors.default.Error(\"E0101\")\r\n }\r\n }\r\n };\r\n return RangeRuleValidator\r\n}(BaseRuleValidator);\r\nvar StringLengthRuleValidator = function(_BaseRuleValidator4) {\r\n _inheritsLoose(StringLengthRuleValidator, _BaseRuleValidator4);\r\n\r\n function StringLengthRuleValidator() {\r\n var _this5;\r\n _this5 = _BaseRuleValidator4.call(this) || this;\r\n _this5.NAME = \"stringLength\";\r\n return _this5\r\n }\r\n var _proto5 = StringLengthRuleValidator.prototype;\r\n _proto5._validate = function(value, rule) {\r\n var _value;\r\n value = String(null !== (_value = value) && void 0 !== _value ? _value : \"\");\r\n if (rule.trim || !(0, _type.isDefined)(rule.trim)) {\r\n value = value.trim()\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.range.validate(value.length, (0, _extend.extend)({}, rule))\r\n };\r\n return StringLengthRuleValidator\r\n}(BaseRuleValidator);\r\nvar CustomRuleValidator = function(_BaseRuleValidator5) {\r\n _inheritsLoose(CustomRuleValidator, _BaseRuleValidator5);\r\n\r\n function CustomRuleValidator() {\r\n var _this6;\r\n _this6 = _BaseRuleValidator5.call(this) || this;\r\n _this6.NAME = \"custom\";\r\n return _this6\r\n }\r\n var _proto6 = CustomRuleValidator.prototype;\r\n _proto6.validate = function(value, rule) {\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n (0, _extend.extend)(params, extraParams)\r\n }\r\n return rule.validationCallback(params)\r\n };\r\n return CustomRuleValidator\r\n}(BaseRuleValidator);\r\nvar AsyncRuleValidator = function(_CustomRuleValidator) {\r\n _inheritsLoose(AsyncRuleValidator, _CustomRuleValidator);\r\n\r\n function AsyncRuleValidator() {\r\n var _this7;\r\n _this7 = _CustomRuleValidator.call(this) || this;\r\n _this7.NAME = \"async\";\r\n return _this7\r\n }\r\n var _proto7 = AsyncRuleValidator.prototype;\r\n _proto7.validate = function(value, rule) {\r\n if (!(0, _type.isDefined)(rule.reevaluate)) {\r\n (0, _extend.extend)(rule, {\r\n reevaluate: true\r\n })\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n (0, _extend.extend)(params, extraParams)\r\n }\r\n var callbackResult = rule.validationCallback(params);\r\n if (!(0, _type.isPromise)(callbackResult)) {\r\n throw _errors.default.Error(\"E0103\")\r\n }\r\n return this._getWrappedPromise((0, _deferred.fromPromise)(callbackResult).promise())\r\n };\r\n _proto7._getWrappedPromise = function(promise) {\r\n var deferred = new _deferred.Deferred;\r\n promise.then(function(res) {\r\n deferred.resolve(res)\r\n }, function(err) {\r\n var res = {\r\n isValid: false\r\n };\r\n if ((0, _type.isDefined)(err)) {\r\n if ((0, _type.isString)(err)) {\r\n res.message = err\r\n } else {\r\n if ((0, _type.isObject)(err) && (0, _type.isDefined)(err.message) && (0, _type.isString)(err.message)) {\r\n res.message = err.message\r\n }\r\n }\r\n }\r\n deferred.resolve(res)\r\n });\r\n return deferred.promise()\r\n };\r\n return AsyncRuleValidator\r\n}(CustomRuleValidator);\r\nvar CompareRuleValidator = function(_BaseRuleValidator6) {\r\n _inheritsLoose(CompareRuleValidator, _BaseRuleValidator6);\r\n\r\n function CompareRuleValidator() {\r\n var _this8;\r\n _this8 = _BaseRuleValidator6.call(this) || this;\r\n _this8.NAME = \"compare\";\r\n return _this8\r\n }\r\n var _proto8 = CompareRuleValidator.prototype;\r\n _proto8._validate = function(value, rule) {\r\n if (!rule.comparisonTarget) {\r\n throw _errors.default.Error(\"E0102\")\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }(0, _extend.extend)(rule, {\r\n reevaluate: true\r\n });\r\n var otherValue = rule.comparisonTarget();\r\n var type = rule.comparisonType || \"==\";\r\n switch (type) {\r\n case \"==\":\r\n return value == otherValue;\r\n case \"!=\":\r\n return value != otherValue;\r\n case \"===\":\r\n return value === otherValue;\r\n case \"!==\":\r\n return value !== otherValue;\r\n case \">\":\r\n return value > otherValue;\r\n case \">=\":\r\n return value >= otherValue;\r\n case \"<\":\r\n return value < otherValue;\r\n case \"<=\":\r\n return value <= otherValue\r\n }\r\n };\r\n return CompareRuleValidator\r\n}(BaseRuleValidator);\r\nvar PatternRuleValidator = function(_BaseRuleValidator7) {\r\n _inheritsLoose(PatternRuleValidator, _BaseRuleValidator7);\r\n\r\n function PatternRuleValidator() {\r\n var _this9;\r\n _this9 = _BaseRuleValidator7.call(this) || this;\r\n _this9.NAME = \"pattern\";\r\n return _this9\r\n }\r\n var _proto9 = PatternRuleValidator.prototype;\r\n _proto9._validate = function(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var pattern = rule.pattern;\r\n if ((0, _type.isString)(pattern)) {\r\n pattern = new RegExp(pattern)\r\n }\r\n return pattern.test(value)\r\n };\r\n return PatternRuleValidator\r\n}(BaseRuleValidator);\r\nvar EmailRuleValidator = function(_BaseRuleValidator8) {\r\n _inheritsLoose(EmailRuleValidator, _BaseRuleValidator8);\r\n\r\n function EmailRuleValidator() {\r\n var _this10;\r\n _this10 = _BaseRuleValidator8.call(this) || this;\r\n _this10.NAME = \"email\";\r\n return _this10\r\n }\r\n var _proto10 = EmailRuleValidator.prototype;\r\n _proto10._validate = function(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.pattern.validate(value, (0, _extend.extend)({}, rule, {\r\n pattern: /^[\\d\\w._-]+@[\\d\\w._-]+\\.[\\w]+$/i\r\n }))\r\n };\r\n return EmailRuleValidator\r\n}(BaseRuleValidator);\r\nvar rulesValidators = {\r\n required: new RequiredRuleValidator,\r\n numeric: new NumericRuleValidator,\r\n range: new RangeRuleValidator,\r\n stringLength: new StringLengthRuleValidator,\r\n custom: new CustomRuleValidator,\r\n async: new AsyncRuleValidator,\r\n compare: new CompareRuleValidator,\r\n pattern: new PatternRuleValidator,\r\n email: new EmailRuleValidator\r\n};\r\nvar GroupConfig = _class.default.inherit({\r\n ctor: function(group) {\r\n this.group = group;\r\n this.validators = [];\r\n this._pendingValidators = [];\r\n this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);\r\n this._resetValidationInfo();\r\n this._eventsStrategy = new _events_strategy.EventsStrategy(this)\r\n },\r\n validate: function() {\r\n var _this11 = this;\r\n var result = {\r\n isValid: true,\r\n brokenRules: [],\r\n validators: [],\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n this._unsubscribeFromAllChangeEvents();\r\n this._pendingValidators = [];\r\n this._resetValidationInfo();\r\n (0, _iterator.each)(this.validators, function(_, validator) {\r\n var validatorResult = validator.validate();\r\n result.isValid = result.isValid && validatorResult.isValid;\r\n if (validatorResult.brokenRules) {\r\n result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)\r\n }\r\n result.validators.push(validator);\r\n if (validatorResult.status === STATUS.pending) {\r\n _this11._addPendingValidator(validator)\r\n }\r\n _this11._subscribeToChangeEvents(validator)\r\n });\r\n if (this._pendingValidators.length) {\r\n result.status = STATUS.pending\r\n } else {\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n this._unsubscribeFromAllChangeEvents();\r\n this._raiseValidatedEvent(result)\r\n }\r\n this._updateValidationInfo(result);\r\n return (0, _extend.extend)({}, this._validationInfo.result)\r\n },\r\n _subscribeToChangeEvents: function(validator) {\r\n validator.on(\"validating\", this._onValidatorStatusChanged);\r\n validator.on(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromChangeEvents: function(validator) {\r\n validator.off(\"validating\", this._onValidatorStatusChanged);\r\n validator.off(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromAllChangeEvents: function() {\r\n var _this12 = this;\r\n (0, _iterator.each)(this.validators, function(_, validator) {\r\n _this12._unsubscribeFromChangeEvents(validator)\r\n })\r\n },\r\n _updateValidationInfo: function(result) {\r\n this._validationInfo.result = result;\r\n if (result.status !== STATUS.pending) {\r\n return\r\n }\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new _deferred.Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n },\r\n _addPendingValidator: function(validator) {\r\n var foundValidator = (0, _common.grep)(this._pendingValidators, function(val) {\r\n return val === validator\r\n })[0];\r\n if (!foundValidator) {\r\n this._pendingValidators.push(validator)\r\n }\r\n },\r\n _removePendingValidator: function(validator) {\r\n var index = (0, _array.inArray)(validator, this._pendingValidators);\r\n if (index >= 0) {\r\n this._pendingValidators.splice(index, 1)\r\n }\r\n },\r\n _orderBrokenRules: function(brokenRules) {\r\n var orderedRules = [];\r\n (0, _iterator.each)(this.validators, function(_, validator) {\r\n var foundRules = (0, _common.grep)(brokenRules, function(rule) {\r\n return rule.validator === validator\r\n });\r\n if (foundRules.length) {\r\n orderedRules = orderedRules.concat(foundRules)\r\n }\r\n });\r\n return orderedRules\r\n },\r\n _updateBrokenRules: function(result) {\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n var brokenRules = this._validationInfo.result.brokenRules;\r\n var rules = (0, _common.grep)(brokenRules, function(rule) {\r\n return rule.validator !== result.validator\r\n });\r\n if (result.brokenRules) {\r\n brokenRules = rules.concat(result.brokenRules)\r\n }\r\n this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)\r\n },\r\n _onValidatorStatusChanged: function(result) {\r\n if (result.status === STATUS.pending) {\r\n this._addPendingValidator(result.validator);\r\n return\r\n }\r\n this._resolveIfComplete(result)\r\n },\r\n _resolveIfComplete: function(result) {\r\n this._removePendingValidator(result.validator);\r\n this._updateBrokenRules(result);\r\n if (!this._pendingValidators.length) {\r\n this._unsubscribeFromAllChangeEvents();\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS.valid : STATUS.invalid;\r\n this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS.valid;\r\n var res = (0, _extend.extend)({}, this._validationInfo.result, {\r\n complete: null\r\n });\r\n var deferred = this._validationInfo.deferred;\r\n this._validationInfo.deferred = null;\r\n this._raiseValidatedEvent(res);\r\n deferred && setTimeout(function() {\r\n deferred.resolve(res)\r\n })\r\n }\r\n },\r\n _raiseValidatedEvent: function(result) {\r\n this._eventsStrategy.fireEvent(\"validated\", [result])\r\n },\r\n _resetValidationInfo: function() {\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null\r\n }\r\n },\r\n _synchronizeValidationInfo: function() {\r\n if (this._validationInfo.result) {\r\n this._validationInfo.result.validators = this.validators\r\n }\r\n },\r\n removeRegisteredValidator: function(validator) {\r\n var index = (0, _array.inArray)(validator, this.validators);\r\n if (index > -1) {\r\n this.validators.splice(index, 1);\r\n this._synchronizeValidationInfo();\r\n this._resolveIfComplete({\r\n validator: validator\r\n })\r\n }\r\n },\r\n registerValidator: function(validator) {\r\n if ((0, _array.inArray)(validator, this.validators) < 0) {\r\n this.validators.push(validator);\r\n this._synchronizeValidationInfo()\r\n }\r\n },\r\n reset: function() {\r\n (0, _iterator.each)(this.validators, function(_, validator) {\r\n validator.reset()\r\n });\r\n this._pendingValidators = [];\r\n this._resetValidationInfo()\r\n },\r\n on: function(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off: function(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\nvar ValidationEngine = {\r\n groups: [],\r\n getGroupConfig: function(group) {\r\n var result = (0, _common.grep)(this.groups, function(config) {\r\n return config.group === group\r\n });\r\n if (result.length) {\r\n return result[0]\r\n }\r\n },\r\n findGroup: function($element, model) {\r\n var $dxGroup = $element.parents(\".dx-validationgroup\").first();\r\n if ($dxGroup.length) {\r\n return $dxGroup.dxValidationGroup(\"instance\")\r\n }\r\n return model\r\n },\r\n initGroups: function() {\r\n this.groups = [];\r\n this.addGroup()\r\n },\r\n addGroup: function(group) {\r\n var config = this.getGroupConfig(group);\r\n if (!config) {\r\n config = new GroupConfig(group);\r\n this.groups.push(config)\r\n }\r\n return config\r\n },\r\n removeGroup: function(group) {\r\n var config = this.getGroupConfig(group);\r\n var index = (0, _array.inArray)(config, this.groups);\r\n if (index > -1) {\r\n this.groups.splice(index, 1)\r\n }\r\n return config\r\n },\r\n _setDefaultMessage: function(info) {\r\n var rule = info.rule,\r\n validator = info.validator,\r\n name = info.name;\r\n if (!(0, _type.isDefined)(rule.message)) {\r\n if (validator.defaultFormattedMessage && (0, _type.isDefined)(name)) {\r\n rule.message = validator.defaultFormattedMessage(name)\r\n } else {\r\n rule.message = validator.defaultMessage()\r\n }\r\n }\r\n },\r\n _addBrokenRule: function(info) {\r\n var result = info.result,\r\n rule = info.rule;\r\n if (!result.brokenRule) {\r\n result.brokenRule = rule\r\n }\r\n if (!result.brokenRules) {\r\n result.brokenRules = []\r\n }\r\n result.brokenRules.push(rule)\r\n },\r\n validate: function(value, rules, name) {\r\n var _rules$, _this13 = this;\r\n var result = {\r\n name: name,\r\n value: value,\r\n brokenRule: null,\r\n brokenRules: null,\r\n isValid: true,\r\n validationRules: rules,\r\n pendingRules: null,\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n var validator = null === rules || void 0 === rules ? void 0 : null === (_rules$ = rules[0]) || void 0 === _rules$ ? void 0 : _rules$.validator;\r\n var asyncRuleItems = [];\r\n (0, _iterator.each)(rules || [], function(_, rule) {\r\n var ruleValidator = rulesValidators[rule.type];\r\n var ruleValidationResult;\r\n if (ruleValidator) {\r\n if ((0, _type.isDefined)(rule.isValid) && rule.value === value && !rule.reevaluate) {\r\n if (!rule.isValid) {\r\n result.isValid = false;\r\n _this13._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n });\r\n return false\r\n }\r\n return true\r\n }\r\n rule.value = value;\r\n if (\"async\" === rule.type) {\r\n asyncRuleItems.push({\r\n rule: rule,\r\n ruleValidator: ruleValidator\r\n });\r\n return true\r\n }\r\n ruleValidationResult = ruleValidator.validate(value, rule);\r\n rule.isValid = ruleValidationResult;\r\n if (!ruleValidationResult) {\r\n result.isValid = false;\r\n _this13._setDefaultMessage({\r\n rule: rule,\r\n validator: ruleValidator,\r\n name: name\r\n });\r\n _this13._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n if (!rule.isValid) {\r\n return false\r\n }\r\n } else {\r\n throw _errors.default.Error(\"E0100\")\r\n }\r\n });\r\n if (result.isValid && !result.brokenRules && asyncRuleItems.length) {\r\n result = this._validateAsyncRules({\r\n value: value,\r\n items: asyncRuleItems,\r\n result: result,\r\n name: name\r\n })\r\n }\r\n this._synchronizeGroupValidationInfo(validator, result);\r\n result.status = result.pendingRules ? STATUS.pending : result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n _synchronizeGroupValidationInfo: function(validator, result) {\r\n var _result$brokenRules;\r\n if (!validator) {\r\n return\r\n }\r\n var groupConfig = ValidationEngine.getGroupConfig(validator._validationGroup);\r\n groupConfig._updateBrokenRules.call(groupConfig, {\r\n validator: validator,\r\n brokenRules: null !== (_result$brokenRules = result.brokenRules) && void 0 !== _result$brokenRules ? _result$brokenRules : []\r\n })\r\n },\r\n _validateAsyncRules: function(_ref) {\r\n var _this14 = this;\r\n var result = _ref.result,\r\n value = _ref.value,\r\n items = _ref.items,\r\n name = _ref.name;\r\n var asyncResults = [];\r\n (0, _iterator.each)(items, function(_, item) {\r\n var validateResult = item.ruleValidator.validate(value, item.rule);\r\n if (!(0, _type.isPromise)(validateResult)) {\r\n _this14._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: _this14._getPatchedRuleResult(validateResult),\r\n validator: item.ruleValidator,\r\n name: name\r\n })\r\n } else {\r\n if (!result.pendingRules) {\r\n result.pendingRules = []\r\n }\r\n result.pendingRules.push(item.rule);\r\n var asyncResult = validateResult.then(function(res) {\r\n var ruleResult = _this14._getPatchedRuleResult(res);\r\n _this14._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: ruleResult,\r\n validator: item.ruleValidator,\r\n name: name\r\n });\r\n return ruleResult\r\n });\r\n asyncResults.push(asyncResult)\r\n }\r\n });\r\n if (asyncResults.length) {\r\n result.complete = _promise.default.all(asyncResults).then(function(values) {\r\n return _this14._getAsyncRulesResult({\r\n result: result,\r\n values: values\r\n })\r\n })\r\n }\r\n return result\r\n },\r\n _updateRuleConfig: function(_ref2) {\r\n var rule = _ref2.rule,\r\n ruleResult = _ref2.ruleResult,\r\n validator = _ref2.validator,\r\n name = _ref2.name;\r\n rule.isValid = ruleResult.isValid;\r\n if (!ruleResult.isValid) {\r\n if ((0, _type.isDefined)(ruleResult.message) && (0, _type.isString)(ruleResult.message) && ruleResult.message.length) {\r\n rule.message = ruleResult.message\r\n } else {\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n })\r\n }\r\n }\r\n },\r\n _getPatchedRuleResult: function(ruleResult) {\r\n var result;\r\n var isValid = true;\r\n if ((0, _type.isObject)(ruleResult)) {\r\n result = (0, _extend.extend)({}, ruleResult);\r\n if (!(0, _type.isDefined)(result.isValid)) {\r\n result.isValid = isValid\r\n }\r\n } else {\r\n result = {\r\n isValid: (0, _type.isBoolean)(ruleResult) ? ruleResult : isValid\r\n }\r\n }\r\n return result\r\n },\r\n _getAsyncRulesResult: function(_ref3) {\r\n var _this15 = this;\r\n var values = _ref3.values,\r\n result = _ref3.result;\r\n (0, _iterator.each)(values, function(index, val) {\r\n if (false === val.isValid) {\r\n result.isValid = val.isValid;\r\n var rule = result.pendingRules[index];\r\n _this15._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n });\r\n result.pendingRules = null;\r\n result.complete = null;\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n registerValidatorInGroup: function(group, validator) {\r\n var groupConfig = ValidationEngine.addGroup(group);\r\n groupConfig.registerValidator.call(groupConfig, validator)\r\n },\r\n _shouldRemoveGroup: function(group, validatorsInGroup) {\r\n var isDefaultGroup = void 0 === group;\r\n var isValidationGroupInstance = group && \"dxValidationGroup\" === group.NAME;\r\n return !isDefaultGroup && !isValidationGroupInstance && !validatorsInGroup.length\r\n },\r\n removeRegisteredValidator: function(group, validator) {\r\n var config = ValidationEngine.getGroupConfig(group);\r\n if (config) {\r\n config.removeRegisteredValidator.call(config, validator);\r\n var validatorsInGroup = config.validators;\r\n if (this._shouldRemoveGroup(group, validatorsInGroup)) {\r\n this.removeGroup(group)\r\n }\r\n }\r\n },\r\n initValidationOptions: function(options) {\r\n var _this16 = this;\r\n var initedOptions = {};\r\n if (options) {\r\n var syncOptions = [\"isValid\", \"validationStatus\", \"validationError\", \"validationErrors\"];\r\n syncOptions.forEach(function(prop) {\r\n if (prop in options) {\r\n (0, _extend.extend)(initedOptions, _this16.synchronizeValidationOptions({\r\n name: prop,\r\n value: options[prop]\r\n }, options))\r\n }\r\n })\r\n }\r\n return initedOptions\r\n },\r\n synchronizeValidationOptions: function(_ref4, options) {\r\n var name = _ref4.name,\r\n value = _ref4.value;\r\n switch (name) {\r\n case \"validationStatus\":\r\n var isValid = value === STATUS.valid || value === STATUS.pending;\r\n return options.isValid !== isValid ? {\r\n isValid: isValid\r\n } : {};\r\n case \"isValid\":\r\n var validationStatus = options.validationStatus;\r\n var newStatus = validationStatus;\r\n if (value && validationStatus === STATUS.invalid) {\r\n newStatus = STATUS.valid\r\n } else {\r\n if (!value && validationStatus !== STATUS.invalid) {\r\n newStatus = STATUS.invalid\r\n }\r\n }\r\n return newStatus !== validationStatus ? {\r\n validationStatus: newStatus\r\n } : {};\r\n case \"validationErrors\":\r\n var validationError = !value || !value.length ? null : value[0];\r\n return options.validationError !== validationError ? {\r\n validationError: validationError\r\n } : {};\r\n case \"validationError\":\r\n var validationErrors = options.validationErrors;\r\n if (!value && validationErrors) {\r\n return {\r\n validationErrors: null\r\n }\r\n } else {\r\n if (value && !validationErrors) {\r\n return {\r\n validationErrors: [value]\r\n }\r\n } else {\r\n if (value && validationErrors && value !== validationErrors[0]) {\r\n validationErrors[0] = value;\r\n return {\r\n validationErrors: validationErrors.slice()\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return {}\r\n },\r\n validateGroup: function(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw _errors.default.Error(\"E0110\")\r\n }\r\n return groupConfig.validate()\r\n },\r\n resetGroup: function(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw _errors.default.Error(\"E0110\")\r\n }\r\n return groupConfig.reset()\r\n }\r\n};\r\nValidationEngine.initGroups();\r\nvar _default = ValidationEngine;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/toolbar.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _array = require(\"../core/utils/array\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _uiToolbarStrategy = _interopRequireDefault(require(\"./toolbar/ui.toolbar.strategy.action_sheet\"));\r\nvar _uiToolbarStrategy2 = _interopRequireDefault(require(\"./toolbar/ui.toolbar.strategy.drop_down_menu\"));\r\nvar _uiToolbar = _interopRequireDefault(require(\"./toolbar/ui.toolbar.base\"));\r\nvar _child_default_template = require(\"../core/templates/child_default_template\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar STRATEGIES = {\r\n actionSheet: _uiToolbarStrategy.default,\r\n dropDownMenu: _uiToolbarStrategy2.default\r\n};\r\nvar TOOLBAR_AUTO_HIDE_ITEM_CLASS = \"dx-toolbar-item-auto-hide\";\r\nvar TOOLBAR_AUTO_HIDE_TEXT_CLASS = \"dx-toolbar-text-auto-hide\";\r\nvar TOOLBAR_HIDDEN_ITEM = \"dx-toolbar-item-invisible\";\r\nvar Toolbar = _uiToolbar.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n menuItemTemplate: \"menuItem\",\r\n submenuType: \"dropDownMenu\",\r\n menuContainer: void 0\r\n })\r\n },\r\n _dimensionChanged: function(dimension) {\r\n if (\"height\" === dimension) {\r\n return\r\n }\r\n this._menuStrategy.toggleMenuVisibility(false, true);\r\n this.callBase();\r\n this._menuStrategy.renderMenuItems()\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n actionSheetItem: new _child_default_template.ChildDefaultTemplate(\"item\")\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderMenu()\r\n },\r\n _postProcessRenderItems: function() {\r\n var _this = this;\r\n this._hideOverflowItems();\r\n this._menuStrategy._updateMenuVisibility();\r\n this.callBase();\r\n (0, _common.deferRender)(function() {\r\n _this._menuStrategy.renderMenuItems()\r\n })\r\n },\r\n _renderItem: function(index, item, itemContainer, $after) {\r\n var itemElement = this.callBase(index, item, itemContainer, $after);\r\n if (\"auto\" === item.locateInMenu) {\r\n itemElement.addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS)\r\n }\r\n if (\"dxButton\" === item.widget && \"inMenu\" === item.showText) {\r\n itemElement.toggleClass(TOOLBAR_AUTO_HIDE_TEXT_CLASS)\r\n }\r\n return itemElement\r\n },\r\n _getItemsWidth: function() {\r\n return this._getSummaryItemsWidth([this._$beforeSection, this._$centerSection, this._$afterSection])\r\n },\r\n _hideOverflowItems: function(elementWidth) {\r\n var overflowItems = this.$element().find(\".\" + TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n if (!overflowItems.length) {\r\n return\r\n }\r\n elementWidth = elementWidth || this.$element().width();\r\n (0, _renderer.default)(overflowItems).removeClass(TOOLBAR_HIDDEN_ITEM);\r\n var itemsWidth = this._getItemsWidth();\r\n while (overflowItems.length && elementWidth < itemsWidth) {\r\n var $item = overflowItems.eq(-1);\r\n itemsWidth -= $item.outerWidth();\r\n $item.addClass(TOOLBAR_HIDDEN_ITEM);\r\n overflowItems.splice(-1, 1)\r\n }\r\n },\r\n _getMenuItems: function() {\r\n var that = this;\r\n var menuItems = (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n return that._isMenuItem(item)\r\n });\r\n var $hiddenItems = this._itemContainer().children(\".\" + TOOLBAR_AUTO_HIDE_ITEM_CLASS + \".\" + TOOLBAR_HIDDEN_ITEM).not(\".dx-state-invisible\");\r\n this._restoreItems = this._restoreItems || [];\r\n var overflowItems = [].slice.call($hiddenItems).map(function(item) {\r\n var itemData = that._getItemData(item);\r\n var $itemContainer = (0, _renderer.default)(item).children();\r\n var $itemMarkup = $itemContainer.children();\r\n return (0, _extend.extend)({\r\n menuItemTemplate: function() {\r\n that._restoreItems.push({\r\n container: $itemContainer,\r\n item: $itemMarkup\r\n });\r\n var $container = (0, _renderer.default)(\"
    \").addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n return $container.append($itemMarkup)\r\n }\r\n }, itemData)\r\n });\r\n return (0, _array.merge)(overflowItems, menuItems)\r\n },\r\n _getToolbarItems: function() {\r\n var that = this;\r\n return (0, _common.grep)(this.option(\"items\") || [], function(item) {\r\n return !that._isMenuItem(item)\r\n })\r\n },\r\n _renderMenu: function() {\r\n var _this2 = this;\r\n this._renderMenuStrategy();\r\n (0, _common.deferRender)(function() {\r\n _this2._menuStrategy.render()\r\n })\r\n },\r\n _renderMenuStrategy: function() {\r\n var strategyName = this.option(\"submenuType\");\r\n if (this._requireDropDownStrategy()) {\r\n strategyName = \"dropDownMenu\"\r\n }\r\n var strategy = STRATEGIES[strategyName];\r\n if (!(this._menuStrategy && this._menuStrategy.NAME === strategyName)) {\r\n this._menuStrategy = new strategy(this)\r\n }\r\n },\r\n _requireDropDownStrategy: function() {\r\n var items = this.option(\"items\") || [];\r\n var result = false;\r\n (0, _iterator.each)(items, function(index, item) {\r\n if (\"auto\" === item.locateInMenu) {\r\n result = true\r\n } else {\r\n if (\"always\" === item.locateInMenu && item.widget) {\r\n result = true\r\n }\r\n }\r\n });\r\n return result\r\n },\r\n _arrangeItems: function() {\r\n if (this.$element().is(\":hidden\")) {\r\n return\r\n }\r\n this._$centerSection.css({\r\n margin: \"0 auto\",\r\n \"float\": \"none\"\r\n });\r\n (0, _iterator.each)(this._restoreItems || [], function(_, obj) {\r\n (0, _renderer.default)(obj.container).append(obj.item)\r\n });\r\n this._restoreItems = [];\r\n var elementWidth = this.$element().width();\r\n this._hideOverflowItems(elementWidth);\r\n this.callBase(elementWidth)\r\n },\r\n _itemOptionChanged: function(item, property, value) {\r\n if (this._isMenuItem(item)) {\r\n this._menuStrategy.renderMenuItems()\r\n } else {\r\n if (this._isToolbarItem(item)) {\r\n this.callBase(item, property, value)\r\n } else {\r\n this.callBase(item, property, value);\r\n this._menuStrategy.renderMenuItems()\r\n }\r\n }\r\n if (\"location\" === property) {\r\n this.repaint()\r\n }\r\n },\r\n _isMenuItem: function(itemData) {\r\n return \"menu\" === itemData.location || \"always\" === itemData.locateInMenu\r\n },\r\n _isToolbarItem: function(itemData) {\r\n return void 0 === itemData.location || \"never\" === itemData.locateInMenu\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n switch (name) {\r\n case \"submenuType\":\r\n this._invalidate();\r\n break;\r\n case \"menuItemTemplate\":\r\n this._changeMenuOption(\"itemTemplate\", this._getTemplate(value));\r\n break;\r\n case \"onItemClick\":\r\n this._changeMenuOption(name, value);\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"menuContainer\":\r\n this._changeMenuOption(\"container\", value);\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _changeMenuOption: function(name, value) {\r\n this._menuStrategy.widgetOption(name, value)\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxToolbar\", Toolbar);\r\nvar _default = Toolbar;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tree_view.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _uiTree_view = _interopRequireDefault(require(\"./tree_view/ui.tree_view.search\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiTree_view.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/validator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _element_data = require(\"../core/element_data\");\r\nvar _callbacks = _interopRequireDefault(require(\"../core/utils/callbacks\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.errors\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../core/dom_component\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _validation_engine = _interopRequireDefault(require(\"./validation_engine\"));\r\nvar _default_adapter = _interopRequireDefault(require(\"./validation/default_adapter\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _deferred = require(\"../core/utils/deferred\");\r\nvar _guid = _interopRequireDefault(require(\"../core/guid\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar VALIDATION_STATUS_PENDING = \"pending\";\r\nvar Validator = _dom_component.default.inherit({\r\n _initOptions: function(options) {\r\n this.callBase.apply(this, arguments);\r\n this.option(_validation_engine.default.initValidationOptions(options))\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n validationRules: []\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initGroupRegistration();\r\n this.focused = (0, _callbacks.default)();\r\n this._initAdapter();\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null,\r\n skipValidation: false\r\n }\r\n },\r\n _initGroupRegistration: function() {\r\n var group = this._findGroup();\r\n if (!this._groupWasInit) {\r\n this.on(\"disposing\", function(args) {\r\n _validation_engine.default.removeRegisteredValidator(args.component._validationGroup, args.component)\r\n })\r\n }\r\n if (!this._groupWasInit || this._validationGroup !== group) {\r\n _validation_engine.default.removeRegisteredValidator(this._validationGroup, this);\r\n this._groupWasInit = true;\r\n this._validationGroup = group;\r\n _validation_engine.default.registerValidatorInGroup(group, this)\r\n }\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._optionsByReference, {\r\n validationGroup: true\r\n })\r\n },\r\n _getEditor: function() {\r\n var element = this.$element()[0];\r\n return (0, _element_data.data)(element, \"dx-validation-target\")\r\n },\r\n _initAdapter: function() {\r\n var _this = this;\r\n var dxStandardEditor = this._getEditor();\r\n var adapter = this.option(\"adapter\");\r\n if (!adapter) {\r\n if (dxStandardEditor) {\r\n adapter = new _default_adapter.default(dxStandardEditor, this);\r\n adapter.validationRequestsCallbacks.push(function(args) {\r\n if (_this._validationInfo.skipValidation) {\r\n return\r\n }\r\n _this.validate(args)\r\n });\r\n this.option(\"adapter\", adapter);\r\n return\r\n }\r\n throw _ui.default.Error(\"E0120\")\r\n }\r\n var callbacks = adapter.validationRequestsCallbacks;\r\n if (callbacks) {\r\n callbacks.push(function(args) {\r\n _this.validate(args)\r\n })\r\n }\r\n },\r\n _toggleRTLDirection: function(isRtl) {\r\n var _this$option$editor$o, _this$option, _this$option$editor;\r\n var rtlEnabled = null !== (_this$option$editor$o = null === (_this$option = this.option(\"adapter\")) || void 0 === _this$option ? void 0 : null === (_this$option$editor = _this$option.editor) || void 0 === _this$option$editor ? void 0 : _this$option$editor.option(\"rtlEnabled\")) && void 0 !== _this$option$editor$o ? _this$option$editor$o : isRtl;\r\n this.callBase(rtlEnabled)\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(VALIDATOR_CLASS);\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._toggleAccessibilityAttributes()\r\n },\r\n _toggleAccessibilityAttributes: function() {\r\n var dxStandardEditor = this._getEditor();\r\n if (dxStandardEditor) {\r\n var rules = this.option(\"validationRules\") || [];\r\n var isRequired = rules.some(function(_ref) {\r\n var type = _ref.type;\r\n return \"required\" === type\r\n }) || null;\r\n if (dxStandardEditor.isInitialized()) {\r\n dxStandardEditor.setAria(\"required\", isRequired)\r\n }\r\n dxStandardEditor.option(\"_onMarkupRendered\", function() {\r\n dxStandardEditor.setAria(\"required\", isRequired)\r\n })\r\n }\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._initGroupRegistration()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"validationGroup\":\r\n this._initGroupRegistration();\r\n return;\r\n case \"validationRules\":\r\n this._resetValidationRules();\r\n this._toggleAccessibilityAttributes();\r\n void 0 !== this.option(\"isValid\") && this.validate();\r\n return;\r\n case \"adapter\":\r\n this._initAdapter();\r\n break;\r\n case \"isValid\":\r\n case \"validationStatus\":\r\n this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option()));\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getValidationRules: function() {\r\n var _this2 = this;\r\n if (!this._validationRules) {\r\n this._validationRules = (0, _iterator.map)(this.option(\"validationRules\"), function(rule, index) {\r\n return (0, _extend.extend)({}, rule, {\r\n validator: _this2,\r\n index: index\r\n })\r\n })\r\n }\r\n return this._validationRules\r\n },\r\n _findGroup: function() {\r\n var $element = this.$element();\r\n return this.option(\"validationGroup\") || _validation_engine.default.findGroup($element, this._modelByElement($element))\r\n },\r\n _resetValidationRules: function() {\r\n delete this._validationRules\r\n },\r\n validate: function(args) {\r\n var _this3 = this;\r\n var adapter = this.option(\"adapter\");\r\n var name = this.option(\"name\");\r\n var bypass = adapter.bypass && adapter.bypass();\r\n var value = args && void 0 !== args.value ? args.value : adapter.getValue();\r\n var currentError = adapter.getCurrentValidationError && adapter.getCurrentValidationError();\r\n var rules = this._getValidationRules();\r\n var currentResult = this._validationInfo && this._validationInfo.result;\r\n if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {\r\n return (0, _extend.extend)({}, currentResult)\r\n }\r\n var result;\r\n if (bypass) {\r\n result = {\r\n isValid: true,\r\n status: VALIDATION_STATUS_VALID\r\n }\r\n } else {\r\n if (currentError && currentError.editorSpecific) {\r\n currentError.validator = this;\r\n result = {\r\n isValid: false,\r\n status: VALIDATION_STATUS_INVALID,\r\n brokenRule: currentError,\r\n brokenRules: [currentError]\r\n }\r\n } else {\r\n result = _validation_engine.default.validate(value, rules, name)\r\n }\r\n }\r\n result.id = (new _guid.default).toString();\r\n this._applyValidationResult(result, adapter);\r\n result.complete && result.complete.then(function(res) {\r\n if (res.id === _this3._validationInfo.result.id) {\r\n _this3._applyValidationResult(res, adapter)\r\n }\r\n });\r\n return (0, _extend.extend)({}, this._validationInfo.result)\r\n },\r\n reset: function() {\r\n var adapter = this.option(\"adapter\");\r\n var result = {\r\n id: null,\r\n isValid: true,\r\n brokenRule: null,\r\n brokenRules: null,\r\n pendingRules: null,\r\n status: VALIDATION_STATUS_VALID,\r\n complete: null\r\n };\r\n this._validationInfo.skipValidation = true;\r\n adapter.reset();\r\n this._validationInfo.skipValidation = false;\r\n this._resetValidationRules();\r\n this._applyValidationResult(result, adapter)\r\n },\r\n _updateValidationResult: function(result) {\r\n if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {\r\n var complete = this._validationInfo.deferred && this._validationInfo.result.complete;\r\n this._validationInfo.result = (0, _extend.extend)({}, result, {\r\n complete: complete\r\n })\r\n } else {\r\n for (var prop in result) {\r\n if (\"id\" !== prop && \"complete\" !== prop) {\r\n this._validationInfo.result[prop] = result[prop]\r\n }\r\n }\r\n }\r\n },\r\n _applyValidationResult: function(result, adapter) {\r\n var validatedAction = this._createActionByOption(\"onValidated\", {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n result.validator = this;\r\n this._updateValidationResult(result);\r\n adapter.applyValidationResults && adapter.applyValidationResults(this._validationInfo.result);\r\n this.option({\r\n validationStatus: this._validationInfo.result.status\r\n });\r\n if (this._validationInfo.result.status === VALIDATION_STATUS_PENDING) {\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new _deferred.Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n this._eventsStrategy.fireEvent(\"validating\", [this._validationInfo.result]);\r\n return\r\n }\r\n if (this._validationInfo.result.status !== VALIDATION_STATUS_PENDING) {\r\n validatedAction(result);\r\n if (this._validationInfo.deferred) {\r\n this._validationInfo.deferred.resolve(result);\r\n this._validationInfo.deferred = null\r\n }\r\n }\r\n },\r\n focus: function() {\r\n var adapter = this.option(\"adapter\");\r\n adapter && adapter.focus && adapter.focus()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxValidator\", Validator);\r\nvar _default = Validator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/tooltip.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 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\n\"use strict\";\r\nexports.default = void 0;\r\nvar _tooltip = _interopRequireDefault(require(\"./tooltip/tooltip\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _tooltip.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n"],"sourceRoot":""}