{"version":3,"sources":["../node_modules/devextreme/ui/overlay/utils.js","../node_modules/devextreme/ui/overlay/ui.overlay.js","../node_modules/devextreme/ui/overlay/z_index.js","../node_modules/devextreme/ui/number_box/utils.js","../node_modules/devextreme/ui/pivot_grid/data_source.js","../node_modules/devextreme/ui/notify.js","../node_modules/devextreme/ui/number_box/number_box.js","../node_modules/devextreme/ui/number_box/number_box.mask.js","../node_modules/devextreme/ui/number_box/number_box.caret.js","../node_modules/devextreme/ui/number_box/number_box.base.js","../node_modules/devextreme/ui/number_box/number_box.spins.js","../node_modules/devextreme/ui/number_box/number_box.spin.js","../node_modules/devextreme/ui/pager.js","../node_modules/devextreme/ui/pivot_grid.js","../node_modules/devextreme/ui/pivot_grid/local_store.js","../node_modules/devextreme/ui/pivot_grid/remote_store.js","../node_modules/devextreme/ui/pivot_grid/remote_store.utils.js","../node_modules/devextreme/ui/pivot_grid/data_source.utils.js","../node_modules/devextreme/ui/pivot_grid_field_chooser.js","../node_modules/devextreme/ui/overlay.js","../node_modules/devextreme/ui/number_box.js"],"names":["exports","getElementMaxHeightByWindow","obj","_renderer","require","__esModule","_window","_type","$element","startLocation","actualOffset","$window","default","getWindow","elementOffset","offset","top","isNumeric","innerHeight","scrollTop","offsetTop","offsetBottom","outerHeight","Math","max","_fx","_interopRequireDefault","_position","_translator","_component_registrator","_devices","_dom_adapter","_element","_empty_template","_array","_browser","_common","_deferred","_dom","_extend","_iterator","_math","_ready_callbacks","_view_port","_events_engine","_drag","_pointer","_short","_index","_visibility_change","_hide_callback","_resizable","_selectors","_swatch_container","_ui","zIndexPool","nodeInterop","_typeof","cache","_getRequireWildcardCache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_interopRequireWildcard","WeakMap","cacheBabelInterop","cacheNodeInterop","Symbol","iterator","constructor","ready","add","window","viewPortChanged","changeCallback","ACTIONS","OVERLAY_STACK","POSITION_ALIASES","my","at","bottom","right","left","center","realDevice","real","firefoxDesktop","mozilla","deviceType","iOS","platform","hasSafariAddressBar","safari","getElement","value","isEvent","target","subscribeGlobal","getDocument","down","e","i","length","_proxiedDocumentDownHandler","Overlay","inherit","_supportedKeys","move","this","option","preventDefault","stopPropagation","allowedOffsets","_allowedOffsets","fitIntoRange","_changePosition","extend","callBase","escape","hide","upArrow","bind","downArrow","leftArrow","rightArrow","_getDefaultOptions","_this","activeStateEnabled","visible","deferRendering","shading","shadingColor","position","width","minWidth","maxWidth","height","minHeight","maxHeight","animation","show","type","duration","from","scale","to","opacity","closeOnOutsideClick","onShowing","onShown","onHiding","onHidden","contentTemplate","dragEnabled","resizeEnabled","onResizeStart","onResize","onResizeEnd","innerOverlay","container","hideTopOverlayHandler","closeOnTargetScroll","onPositioned","boundaryOffset","h","v","propagateOutsideClick","ignoreChildEvents","_checkParentVisibility","_fixedPosition","_defaultOptionsRules","concat","device","hasWindow","options","_setOptionsByReference","_optionsByReference","$wrapper","_$wrapper","_eventBindingTarget","_$content","_init","_initActions","_initCloseOnOutsideClickHandler","_initTabTerminatorHandler","addClass","_initInnerOverlayClass","attr","on","noop","_toggleViewPortSubscription","_initHideTopOverlayHandler","_initOptions","_initTarget","_initContainer","toggleClass","isDefined","each","_","path","pathParts","split","isPlainObject","shift","$container","closest","first","_$container","parent","handler","_hideTopOverlayHandler","_this2","_actions","action","_createActionByOption","excludeValidators","that","_documentDownHandler","apply","arguments","_showAnimationProcessing","_stopAnimation","isFunction","isAttachedTarget","document","is","contains","isInnerOverlay","_outsideClickHandler","_getAnonymousTemplateName","_initTemplates","_templateManager","addDefaultTemplates","content","EmptyTemplate","_isTopOverlay","overlayStack","_overlayStack","tabbableElements","_findTabbableBounds","last","_zIndexInitValue","baseZIndex","toggle","remove","_viewPortChangeHandle","_viewPortChangeHandler","_refresh","_renderVisibilityAnimate","_show","_hide","_normalizePosition","_getAnimationConfig","_this3","deferred","Deferred","_parentHidden","_isParentHidden","done","_isHidden","resolve","_currentVisible","promise","_isShown","showAnimation","_normalizeAnimation","startShowAnimation","start","completeShowAnimation","complete","_isHidingActionCanceled","_renderVisibility","_isShowingActionCanceled","_animate","trigger","_focusTarget","_toggleSafariScrolling","_stopShowTimer","_asyncShowTimeout","setTimeout","prop","skipElementInitialStyles","hideAnimation","startHideAnimation","completeHideAnimation","hidingArgs","cancel","_forceFocusLost","_toggleShading","_toggleSubscriptions","_that$_actions","css","_hideAnimationProcessing","activeElement","getActiveElement","find","resetActiveElement","completeCallback","startCallback","animate","stop","triggerHidingEvent","_toggleVisibility","_updateZIndexStackPosition","_renderContent","showingArgs","_moveFromContainer","_moveToContainer","_renderGeometry","triggerShownEvent","triggerResizeEvent","pushToStack","index","inArray","_zIndex","create","push","splice","_toggleTabTerminator","_proxiedTabTerminatorHandler","_tabKeyHandler","enabled","eventName","addNamespace","NAME","off","$elements","elementsCount","result","eq","tabbable","normalizeKeyName","$firstTabbable","$lastTabbable","isTabOnLast","shiftKey","isShiftTabOnFirst","isEmptyTabList","isOutsideTarget","$focusElement","_toggleHideTopOverlayCallback","_toggleParentsScrollSubscription","subscribe","hideCallback","_this4","of","closeOnScroll","$parents","parents","scrollEvent","_proxiedTargetParentsScrollHandler","_targetParentsScrollHandler","_$prevTargetParents","closeHandled","_render","_appendContentToElement","appendTo","shouldDeferRendering","_contentAlreadyRendered","$parent","isHidden","getBody","_renderContentImpl","_this5","whenContentRendered","contentTemplateOption","_getTemplate","transclude","anonymousTemplateName","render","getPublicElement","$content","noModel","onRendered","_renderDrag","_renderResize","_renderScrollTerminator","$dragTarget","_getDragTarget","startEventName","updateEventName","_dragStartHandler","_dragUpdateHandler","_createComponent","handles","_resizeEndHandler","area","_getDragResizeContainer","_positionChangeHandled","$scrollTerminator","terminatorEventName","validate","getDirection","_toggleGestureCover","_toggleGestureCoverImpl","_clearSelection","isNative","originalEvent","isWheel","isMouseMove","isScrollByWheel","isCommandKeyPressed","_cancelPreventDefault","cancelable","targetElements","_prevOffset","x","y","maxTopOffset","maxBottomOffset","maxLeftOffset","maxRightOffset","originalViewPort","_deltaSize","contentWidth","outerWidth","contentHeight","containerWidth","containerHeight","_isWindow","prevOffset","targetOffset","locate","deltaSize","isAllowedDrag","shaderOffset","_getContainer","_detachWrapperToContainer","detach","_attachWrapperToContainer","renderContainer","getSwatchContainer","_fixHeightAfterSafariAddressBarResizing","isDimensionChanged","_renderGeometryImpl","_renderWrapper","_renderDimensions","resultPosition","_renderPosition","_fixWrapperPosition","_useFixedPosition","_shouldFixBodyPosition","_bodyScrollTop","scrollingEnabled","body","removeClass","scrollTo","pageYOffset","_renderWrapperDimensions","_renderWrapperPosition","wrapperWidth","wrapperHeight","isWindow","setup","positionOf","_getOptionValue","_renderOverlayBoundaryOffset","resetPosition","wrapperOverflow","_transformStringPosition","positionAliases","isString","_attachKeyboardEvents","_this6","_keyboardListenerId","keyboard","opts","_keyboardHandler","$target","_isVisible","_visibilityChanged","_dimensionChanged","_clean","empty","_cleanFocusState","clearTimeout","_dispose","_deferShowTimer","_toggleDisabledState","Boolean","_toggleRTLDirection","rtl","_optionChanged","args","_this7","name","_animateDeferred","resolveWith","_invalidate","showing","_this8","animateDeferred","repaint","zIndex","base","_default","module","clearStack","zIndexStack","ZIndex","ensureDefined","baseIndex","indexOf","splitByIndex","getRealSeparatorIndex","getNthOccurrence","adjustPercentValue","str","quoteBalance","separatorCount","occurrence","c","n","slice","rawValue","precision","adjust","_utils","_abstract_store","_class","_events_strategy","_inflector","_local_store","_remote_store","_data_source","_xmla_store","_uiPivot_grid","_uiPivot_grid2","DESCRIPTION_NAME_BY_AREA","row","column","data","filter","STATE_PROPERTIES","CALCULATED_PROPERTIES","ALL_CALCULATED_PROPERTIES","resetFieldState","field","properties","initialProperties","_initProperties","updateCalculatedFieldProperties","calculatedProperties","caption","setFieldProperty","dataField","groupName","summaryType","toLowerCase","groupInterval","replace","toUpperCase","titleize","createCaption","isDataExists","rows","columns","values","findHeaderItem","headerItems","_cacheByPath","join","getHeaderItemsLastIndex","grandTotalIndex","headerItem","lastIndex","children","collapsedChildren","updateHeaderItemChildren","applyingHeaderItemsCount","emptyIndex","applyingItemIndexesToCurrent","needIndexUpdate","d","child","when","foreachTreeAsync","items","updateHeaderItems","newHeaderItems","newItems","newItem","createPath","parentItems","updateDataSourceCells","dataSource","newDataSourceCells","newRowItemIndexesToCurrent","newColumnItemIndexesToCurrent","newRowIndex","newColumnIndex","newRowCells","newCell","rowIndex","columnIndex","dataSourceCells","grandTotalRowIndex","grandTotalColumnIndex","createLocalOrRemoteStore","dataSourceOptions","notifyProgress","remoteOperations","paginate","LocalStore","normalizeDataSourceOptions","onChanged","onLoadingChanged","onProgressChanged","getExpandedPaths","loadOptions","dimensionName","prevLoadOptions","fields","prevFields","foreachTree","item","expanded","count","equalFields","setFieldProperties","srcField","skipInitPropertySave","getFieldsState","getFieldStateId","getFieldsById","id","setFieldsState","stateFields","fieldsById","setFieldsStateCore","sortFieldsByAreaIndex","sort","field1","field2","areaIndex","groupIndex","getFieldId","retrieveFieldsOptionValue","mergeFields","storeFields","fieldsDictionary","removedFields","dataTypes","getFieldsDataType","mergedField","fieldKey","storeField","dataType","forEach","maxGroupIndex","f","map","reduce","prev","current","assignGroupIndexes","getFields","mergedFields","store","_store","_fields","_storeFields","_retrieveFields","fail","reject","formatHeaderItems","headerName","text","formatValue","formatHeaders","updateCache","cacheByPath","_getAreaFields","areaFields","canAddFieldInArea","isAreaField","ctor","_eventsStrategy","EventsStrategy","storeOptions","load","XmlaStore","Array","isArray","createStore","progress","fireEvent","_paginate","_pageSize","pageSize","_data","_loadingCount","_isFieldsModified","optionName","retrieveFields","_descriptions","descriptions","_createDescriptions","getData","getAreaFields","collectGroups","_fieldsPrepared","levels","findField","optionValue","isInitialization","getFieldValues","applyFilters","searchValue","loadFields","filters","filterValues","skipValues","columnSkip","skip","columnTake","take","sortOrder","sortBySummaryField","_sort","reload","loadTask","_delayedLoadTask","_loadCore","_loadErrorHandler","beginLoading","always","endLoading","executeAsync","createDrillDownDataSource","params","currentField","areaName","normalizeIndexes","descriptionName","dimension","groupingField","sortBy","sortBySummaryPath","showTotals","showGrandTotals","a","b","getFieldsByGroup","indices","expression","calculateSummaryValue","createMockSummaryCell","currentFieldState","isLoading","state","_state","skipLoading","columnExpandedPaths","_lastLoadOptions","rowExpandedPaths","_changeLoadingCount","increment","oldLoading","newLoading","_hasPagingValues","oppositeIndex","takeField","skipField","oppositeArea","oppositePath","_headerItem","every","_processPagingCacheByArea","_headerItem2","floor","end","ceil","_processPagingCache","storeLoadOptions","rowTake","_update","results","_options","isLast","applyPartialDataSource","mergePartialDataSource","getAscOrder","supportPaging","isEmpty","dataFields","loadedData","expressionsUsed","some","summaryDisplayMode","areExpressionsUsed","applyDisplaySummaryMode","runningTotal","isRunningTotalUsed","applyRunningTotal","collapseHeaderItem","collapseAll","dataChanged","areaOffsets","expandAll","expandHeaderItem","hasCache","needExpandData","oppositeHeaderItem","oppositeHeaderItems","eventHandler","dispose","delayedLoadTask","abort","_isDisposed","isDisposed","_action","_toast","$notify","message","displayTime","userHiddenAction","element","context","model","execute","_number_box","_number","_number2","_number_box2","CARET_TIMEOUT_DURATION","msie","useMaskBehavior","format","_isDeleteKey","_useMaskBehavior","minus","_revertSign","del","_removeHandler","backspace","_arrowHandler","home","_moveCaretToBoundaryEventHandler","enter","_updateFormattedValue","_getTextSeparatorIndex","decimalSeparator","getDecimalSeparator","realSeparatorOccurrenceIndex","_focusInHandler","_preventNestedFocusEvent","clearCaretTimeout","_caretTimeout","caret","_caret","_getInputVal","decimalSeparatorIndex","_focusOutHandler","shouldHandleEvent","_focusOutOccurs","_hasValueBeenChanged","inputValue","_getFormatPattern","_format","_updateParsedValue","_adjustParsedValue","_setTextByParsedValue","_parsedValue","_input","step","nextCaret","getCaretWithOffset","isCaretInBoundaries","getCaretInBoundaries","_moveCaretToBoundary","direction","boundaries","getCaretBoundaries","newCaret","_shouldMoveCaret","isDecimalSeparatorNext","charAt","_lastKey","convertDigits","val","getChar","_lastKeyName","_shouldHandleKey","normalizedText","enteredChar","newValue","_tryParse","_moveCaret","_keyPressHandler","isDeleteKey","isBackspaceKey","char","_isStub","_replaceSelectedText","search","_isValueInRange","valueAfterRemoving","_isNonStubAfter","_isPercentFormat","_parse","formatOption","isCustomParser","parser","parse","integerPartStartIndex","formatPointIndex","textPointIndex","formatIntegerPartLength","textIntegerPartLength","_removeStubs","substr","customFormatter","formatter","_currentFormat","_updateFormat","isLDMLPattern","getFormat","_getFormatForSign","signParts","sign","getSign","excludeComma","thousandsSeparator","getThousandsSeparator","stubs","_getStubs","prefixStubs","postfixRegex","RegExp","escapeRegExp","decoratorsRegex","regExpResult","exec","pattern","trim","stub","_truncateToPrecision","maxPrecision","strValue","toString","parsedValue","parseFloat","isNaN","selection","editedText","isTextSelected","_getParsedValue","_getPrecisionLimits","isValueChanged","isDecimalPointRestricted","isUselessCharRestricted","_isValueIncomplete","abs","parsedValueSign","point","pointIndex","isCaretOnFloat","textParts","floatLength","isPrecisionInRange","inRange","min","endsWithZero","_setInputText","getCaretAfterFormat","_toggleEmptinessEventHandler","_formattedValue","_renderInputType","isNumberType","isDesktop","_setInputType","_isSupportInputMode","_isChar","adjustedCaret","keyName","isSpecialChar","altKey","isMinusKey","_renderInput","_renderFormatter","_clearCache","_detachFormatterEvents","_attachFormatterEvents","_isInputFromPaste","inputType","_isValuePasted","$input","_formatValue","version","_forceRefreshInputValue","escapedDecimalSeparator","test","_parseValue","currentFormat","realSeparatorIndex","floatPart","_applyRevertedSign","preserveSelectedText","previousText","currentText","getCaretOffset","caretInBoundaries","_removeMinusFromText","parsed","formatted","textWithoutMinus","wasMinusRemoved","_renderDisplayText","_renderValue","_valueChangeEventHandler","_saveValueChangeEvent","_refreshValueChangeEvent","_refreshEvents","prefixStubLength","postfixStubLength","_getDigitCountBeforeIndex","regExp","_reverseText","reverse","_getDigitPositionByIndex","digitIndex","counter","isSeparatorBasedText","match","isSeparatorBasedString","pointPosition","newPointPosition","formattedParts","relativeIndex","digitsBefore","formattedIntPart","_trimNonNumericCharsFromEnd","positionFromEnd","digitsFromEnd","newPositionFromEnd","newText","previousBoundaries","_message","math","FIREFOX_CONTROL_KEYS","_spinUpChangeHandler","_spinDownChangeHandler","showSpinButtons","useLargeSpinButtons","mode","invalidValueMessage","buttons","_useTemplates","_getDefaultButtons","Ctor","chrome","generic","isSimulator","_initMarkup","_renderSubmitElement","_getDefaultAttributes","attributes","inputmode","_validateValue","setAria","_$submitElement","_setSubmitValue","_getSubmitElement","applyServerDecimalSeparator","_keyPressed","_onMouseWheel","dxEvent","delta","_spinValueChange","Number","_forceValueRender","valueText","valuenow","valuetext","_updateButtons","number","formattedValue","_applyDisplayValueFormatter","_renderProps","valuemin","valuemax","_spinButtonsPointerDownHandler","event","_normalizeInputValue","_correctRounding","regex","isFloatValue","isFloatStep","valueAccuracy","stepAccuracy","accuracy","_round","multiplier","pow","round","_renderValueChangeEvent","forceValueChangeEvent","_normalizeText","valueHasDigits","_isValueValid","_applyValueBoundaries","validationRequest","fire","editor","isValueIncomplete","isValueCorrect","_replaceCommaWithPoint","_inputIsInvalid","isNumberMode","validityState","validity","badInput","_isNumber","isValueValid","isValid","isNumber","validationError","editorSpecific","_clearValue","reset","_resumeValueChangeAction","_button","_setPrototypeOf","o","p","setPrototypeOf","__proto__","SpinButtons","_TextEditorButton","subClass","superClass","_proto","_attachEvents","instance","$spinContainer","$spinContainerChildren","pointerDownAction","_createAction","getInstance","_create","$spinUp","$spinDown","_getOptions","_addToContainer","_legacyRender","_isTouchFriendly","disabled","$editor","isTouchFriendly","isVisible","update","$spinButtons","spinUp","spinDown","_emitter","_hold","POINTERUP_EVENT_NAME","up","POINTERCANCEL_EVENT_NAME","onChange","hoverStateEnabled","SPIN_CLASS","_spinIcon","_spinDownHandler","_spinChangeHandler","_clearTimer","_feedBackDeferred","lock","_holdTimer","setInterval","clearInterval","_string","_click","_select_box","_accessibility","Page","_$page","_value","parseInt","select","rootElement","rtlEnabled","prependTo","Pager","pagesNavigatorVisible","pageIndex","maxPagesCount","pageCount","totalCount","showPageSizes","pageSizes","hasKnownLastPage","showNavigationButtons","showInfo","infoText","getFormatter","pagesCountText","lightModeEnabled","pageIndexChanged","pageSizeChanged","_getPages","currentPage","firstValue","pages","showMoreButton","pagesCount","PAGES_LIMITER","_getPageByValue","page","_pages","_processSelectedPage","selectedPageIndex","isPageIndexValid","selectedPage","_selectPageByValue","nextPage","morePage","pagesLength","prevPage","pop","_updatePagesTabIndices","$selectedPage","updatePageIndices","_nextPage","_wrapClickAction","_pointerUpHappened","_renderPages","$separator","clickPagesIndexAction","pageNumber","_pageClickHandler","_$pagesChooser","Name","registerKeyboardAction","role","label","setTabIndex","_calculateLightPagesWidth","$pageIndex","_renderLightPages","clickAction","_pageIndexEditor","onValueChanged","PAGER_INFO_TEXT_CLASS","$pageCount","_renderPagesChooser","_renderInfo","_renderNavigateButton","_updatePagesChooserWidth","_renderPageSizes","pageSizeValue","$pageSize","pagesSizesLength","currentPageSize","clickPagesSizeAction","_$pagesSizeChooser","append","_calculateLightPageSizesWidth","_renderLightPageSizes","_pageSizeEditor","onSelectionChanged","selectedItem","_renderPagesSizeChooser","_pagesSizeChooserWidth","_$info","_isInfoHide","_infoWidth","$button","_updatePageSizes","_updatePages","restoreFocus","_updateLightMode","forceRender","_updateButtonsState","_isPageIndexInvalid","isNextDirection","nextButton","prevButton","_pageKeyDownHandler","_getMinPagerWidth","_pagesChooserWidth","deferUpdater","lastPageWidth","infoWidth","deferRender","deferUpdate","_previousWidth","getHeight","_query","_date_serialization","_custom_store","_array_store","DATE_INTERVAL_SELECTORS","year","date","getFullYear","quarter","getMonth","month","day","getDate","dayOfWeek","getDay","getDataSelector","compileGetter","getDateValue","dataSelector","Date","deserializeDate","prepareFields","fieldSelector","intervalSelector","selector","valueSelector","setDefaultFieldValueFormatting","generateHierarchyItems","headers","expandIndex","expandedPaths","fillHierarchyItemIndexesCore","indexes","pathHash","dimensionValue","hierarchyItem","dimensions","expandedPathsHash","hierarchyItems","childrenHash","addHierarchyItem","hash","generateAggregationCells","cells","cellSet","rowIndexes","columnIndexes","fillHashExpandedPath","pathValue","prepareLoadOption","getAggregator","calculateCustomSummary","seed","summaryProcess","totalValue","finalize","aggregators","aggregationStep","measures","aggregationCells","aggregatorIndex","cellField","cellValue","aggregator","isAggregatorSeedFunction","cellSetIndex","cell","areValuesEqual","filterValue","fieldValue","valueOfFilter","valueOf","valueOfField","createDimensionFilters","dataItem","getGroupValue","filterType","createFilter","expandedDimensions","expandValue","toComparable","loadCore","columnsHash","rowsHash","processData","t","startIndex","filterDataSource","fieldSelectors","processFilter","toArray","loadDataSource","customizeStoreLoadOptionsHandler","isLoaded","loadDeferred","fillSelectorsByFields","selectors","getFieldSelectors","_progressChanged","_dataSource","DataSource","discoverObjectFields","getDrillDownItems","drillDownItems","maxRowCount","customColumns","pathFilter","getFiltersByPath","rowPath","columnPath","j","include","storeDrillDownMixin","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","createGroupingOptions","dimensionOptions","useSortOrder","groupingOptions","dimensionOption","isExpanded","getIntervalFilterExpression","numericInterval","numericValue","isExcludedFilterType","getFilterExpressionForFilterValue","capitalizeFirstLetter","getFieldFilterSelector","createFilterExpressions","filterExpressions","fieldExpressions","createFieldFilterExpressions","operation","fieldFilterExpressions","currentExpression","mergeFilters","filter1","filter2","notEmpty","setValue","valuesArray","dataIndex","parseValue","parseResult","total","rowHash","columnHash","summary","groupCount","rowSkip","getItem","level","parentItem","parentPathValue","dimensionHash","displayText","forEachGroup","columnItem","rowItem","rowLevel","columnLevel","currentRowIndex","currentColumnIndex","getFiltersForDimension","getExpandedIndex","axis","getExpandedPathSliceFilter","firstCollapsedFieldIndex","startSliceIndex","paths","getGrandTotalRequest","expandedIndex","expandedLevel","commonFilters","newOptions","oppositeDimensionName","includeTotalSummary","getFirstCollapsedIndex","firstCollapsedIndex","getRequestsData","rowExpandedLevel","getExpandedLevel","columnExpandedLevel","columnExpandedIndex","firstCollapsedColumnIndex","firstCollapsedRowIndex","rowExpandedIndex","columnTotalsOptions","getFiltersForExpandedDimension","rowFilterByExpandedPaths","preparedOptions","normalizedArguments","normalizeLoadResult","requestsData","deferreds","externalFilterExpr","hasRows","groupSummary","totalSummary","group","requireGroupCount","summaryOption","createLoadOptions","argument","extra","filterExp","callback","sortDimension","sortingMethodByLevel","foreachDataLevel","sortingMethod","member","getMemberForSortBy","defaultCompare","getCompareFunction","summaryValueSelector","sortBySummaryFieldIndex","areRows","sortByDimension","sliceIndex","itemPath","textPath","getSliceIndex","getFieldSummaryValueSelector","summaryCompare","getSortingMethod"],"mappings":"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","file":"static/js/main~1183cbb0.e08e9535.chunk.js","sourcesContent":["/**\r\n * DevExtreme (ui/overlay/utils.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.getElementMaxHeightByWindow = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\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 WINDOW_HEIGHT_PERCENT = .9;\r\nvar getElementMaxHeightByWindow = function($element, startLocation) {\r\n var $window = (0, _renderer.default)((0, _window.getWindow)());\r\n var _$element$offset = $element.offset(),\r\n elementOffset = _$element$offset.top;\r\n var actualOffset;\r\n if ((0, _type.isNumeric)(startLocation)) {\r\n if (startLocation < elementOffset) {\r\n return elementOffset - startLocation\r\n } else {\r\n actualOffset = $window.innerHeight() - startLocation + $window.scrollTop()\r\n }\r\n } else {\r\n var offsetTop = elementOffset - $window.scrollTop();\r\n var offsetBottom = $window.innerHeight() - offsetTop - $element.outerHeight();\r\n actualOffset = Math.max(offsetTop, offsetBottom)\r\n }\r\n return actualOffset * WINDOW_HEIGHT_PERCENT\r\n};\r\nexports.getElementMaxHeightByWindow = getElementMaxHeightByWindow;\r\n","/**\r\n * DevExtreme (ui/overlay/ui.overlay.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 _fx = _interopRequireDefault(require(\"../../animation/fx\"));\r\nvar _position = _interopRequireDefault(require(\"../../animation/position\"));\r\nvar _translator = require(\"../../animation/translator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _empty_template = require(\"../../core/templates/empty_template\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _dom = require(\"../../core/utils/dom\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _ready_callbacks = _interopRequireDefault(require(\"../../core/utils/ready_callbacks\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _view_port = require(\"../../core/utils/view_port\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _short = require(\"../../events/short\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _visibility_change = require(\"../../events/visibility_change\");\r\nvar _hide_callback = require(\"../../mobile/hide_callback\");\r\nvar _resizable = _interopRequireDefault(require(\"../resizable\"));\r\nvar _selectors = require(\"../widget/selectors\");\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar zIndexPool = _interopRequireWildcard(require(\"./z_index\"));\r\n\r\nfunction _getRequireWildcardCache(nodeInterop) {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cacheBabelInterop = new WeakMap;\r\n var cacheNodeInterop = new WeakMap;\r\n return (_getRequireWildcardCache = function(nodeInterop) {\r\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop\r\n })(nodeInterop)\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n if (!nodeInterop && obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache(nodeInterop);\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (\"default\" !== key && Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\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 _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\r\n return typeof obj\r\n } : function(obj) {\r\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }, _typeof(obj)\r\n}\r\nvar ready = _ready_callbacks.default.add;\r\nvar window = (0, _window.getWindow)();\r\nvar viewPortChanged = _view_port.changeCallback;\r\nvar OVERLAY_CLASS = \"dx-overlay\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nvar OVERLAY_SHADER_CLASS = \"dx-overlay-shader\";\r\nvar OVERLAY_MODAL_CLASS = \"dx-overlay-modal\";\r\nvar INNER_OVERLAY_CLASS = \"dx-inner-overlay\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar RTL_DIRECTION_CLASS = \"dx-rtl\";\r\nvar ACTIONS = [\"onShowing\", \"onShown\", \"onHiding\", \"onHidden\", \"onPositioned\", \"onResizeStart\", \"onResize\", \"onResizeEnd\"];\r\nvar OVERLAY_STACK = [];\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar PREVENT_SAFARI_SCROLLING_CLASS = \"dx-prevent-safari-scrolling\";\r\nvar TAB_KEY = \"tab\";\r\nvar POSITION_ALIASES = {\r\n top: {\r\n my: \"top center\",\r\n at: \"top center\"\r\n },\r\n bottom: {\r\n my: \"bottom center\",\r\n at: \"bottom center\"\r\n },\r\n right: {\r\n my: \"right center\",\r\n at: \"right center\"\r\n },\r\n left: {\r\n my: \"left center\",\r\n at: \"left center\"\r\n },\r\n center: {\r\n my: \"center\",\r\n at: \"center\"\r\n },\r\n \"right bottom\": {\r\n my: \"right bottom\",\r\n at: \"right bottom\"\r\n },\r\n \"right top\": {\r\n my: \"right top\",\r\n at: \"right top\"\r\n },\r\n \"left bottom\": {\r\n my: \"left bottom\",\r\n at: \"left bottom\"\r\n },\r\n \"left top\": {\r\n my: \"left top\",\r\n at: \"left top\"\r\n }\r\n};\r\nvar realDevice = _devices.default.real();\r\nvar firefoxDesktop = _browser.default.mozilla && \"desktop\" === realDevice.deviceType;\r\nvar iOS = \"ios\" === realDevice.platform;\r\nvar hasSafariAddressBar = _browser.default.safari && \"desktop\" !== realDevice.deviceType;\r\nvar forceRepaint = function($element) {\r\n if (firefoxDesktop) {\r\n $element.width()\r\n }\r\n};\r\nvar getElement = function(value) {\r\n if ((0, _type.isEvent)(value)) {\r\n value = value.target\r\n }\r\n return (0, _renderer.default)(value)\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 = OVERLAY_STACK.length - 1; i >= 0; i--) {\r\n if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) {\r\n return\r\n }\r\n }\r\n })\r\n});\r\nvar Overlay = _ui.default.inherit({\r\n _supportedKeys: function() {\r\n var offsetSize = 5;\r\n var move = function(top, left, e) {\r\n if (!this.option(\"dragEnabled\")) {\r\n return\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var allowedOffsets = this._allowedOffsets();\r\n var offset = {\r\n top: (0, _math.fitIntoRange)(top, -allowedOffsets.top, allowedOffsets.bottom),\r\n left: (0, _math.fitIntoRange)(left, -allowedOffsets.left, allowedOffsets.right)\r\n };\r\n this._changePosition(offset)\r\n };\r\n return (0, _extend.extend)(this.callBase(), {\r\n escape: function() {\r\n this.hide()\r\n },\r\n upArrow: move.bind(this, -offsetSize, 0),\r\n downArrow: move.bind(this, offsetSize, 0),\r\n leftArrow: move.bind(this, 0, -offsetSize),\r\n rightArrow: move.bind(this, 0, offsetSize)\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n var _this = this;\r\n return (0, _extend.extend)(this.callBase(), {\r\n activeStateEnabled: false,\r\n visible: false,\r\n deferRendering: true,\r\n shading: true,\r\n shadingColor: \"\",\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n },\r\n width: function() {\r\n return .8 * (0, _renderer.default)(window).width()\r\n },\r\n minWidth: null,\r\n maxWidth: null,\r\n height: function() {\r\n return .8 * (0, _renderer.default)(window).height()\r\n },\r\n minHeight: null,\r\n maxHeight: null,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 300,\r\n from: {\r\n scale: .55\r\n }\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 300,\r\n to: {\r\n opacity: 0,\r\n scale: .55\r\n },\r\n from: {\r\n opacity: 1,\r\n scale: 1\r\n }\r\n }\r\n },\r\n closeOnOutsideClick: false,\r\n onShowing: null,\r\n onShown: null,\r\n onHiding: null,\r\n onHidden: null,\r\n contentTemplate: \"content\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n innerOverlay: false,\r\n target: void 0,\r\n container: void 0,\r\n hideTopOverlayHandler: function() {\r\n _this.hide()\r\n },\r\n closeOnTargetScroll: false,\r\n onPositioned: null,\r\n boundaryOffset: {\r\n h: 0,\r\n v: 0\r\n },\r\n propagateOutsideClick: false,\r\n ignoreChildEvents: true,\r\n _checkParentVisibility: true,\r\n _fixedPosition: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return !(0, _window.hasWindow)()\r\n },\r\n options: {\r\n width: null,\r\n height: null,\r\n animation: null,\r\n _checkParentVisibility: false\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._optionsByReference, {\r\n animation: true\r\n })\r\n },\r\n $wrapper: function() {\r\n return this._$wrapper\r\n },\r\n _eventBindingTarget: function() {\r\n return this._$content\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initActions();\r\n this._initCloseOnOutsideClickHandler();\r\n this._initTabTerminatorHandler();\r\n this._$wrapper = (0, _renderer.default)(\"
\").addClass(OVERLAY_WRAPPER_CLASS);\r\n this._$content = (0, _renderer.default)(\"
\").addClass(OVERLAY_CONTENT_CLASS);\r\n this._initInnerOverlayClass();\r\n var $element = this.$element();\r\n this._$wrapper.addClass($element.attr(\"class\"));\r\n $element.addClass(OVERLAY_CLASS);\r\n this._$wrapper.attr(\"data-bind\", \"dxControlsDescendantBindings: true\");\r\n _events_engine.default.on(this._$wrapper, \"MSPointerDown\", _common.noop);\r\n _events_engine.default.on(this._$wrapper, \"focusin\", function(e) {\r\n e.stopPropagation()\r\n });\r\n this._toggleViewPortSubscription(true);\r\n this._initHideTopOverlayHandler(this.option(\"hideTopOverlayHandler\"))\r\n },\r\n _initOptions: function(options) {\r\n this._initTarget(options.target);\r\n var container = void 0 === options.container ? this.option(\"container\") : options.container;\r\n this._initContainer(container);\r\n this.callBase(options)\r\n },\r\n _initInnerOverlayClass: function() {\r\n this._$content.toggleClass(INNER_OVERLAY_CLASS, this.option(\"innerOverlay\"))\r\n },\r\n _initTarget: function(target) {\r\n if (!(0, _type.isDefined)(target)) {\r\n return\r\n }\r\n var options = this.option();\r\n (0, _iterator.each)([\"position.of\", \"animation.show.from.position.of\", \"animation.show.to.position.of\", \"animation.hide.from.position.of\", \"animation.hide.to.position.of\"], function(_, path) {\r\n var pathParts = path.split(\".\");\r\n var option = options;\r\n while (option) {\r\n if (1 === pathParts.length) {\r\n if ((0, _type.isPlainObject)(option)) {\r\n option[pathParts.shift()] = target\r\n }\r\n break\r\n } else {\r\n option = option[pathParts.shift()]\r\n }\r\n }\r\n })\r\n },\r\n _initContainer: function(container) {\r\n container = void 0 === container ? (0, _view_port.value)() : container;\r\n var $element = this.$element();\r\n var $container = $element.closest(container);\r\n if (!$container.length) {\r\n $container = (0, _renderer.default)(container).first()\r\n }\r\n this._$container = $container.length ? $container : $element.parent()\r\n },\r\n _initHideTopOverlayHandler: function(handler) {\r\n this._hideTopOverlayHandler = handler\r\n },\r\n _initActions: function() {\r\n var _this2 = this;\r\n this._actions = {};\r\n (0, _iterator.each)(ACTIONS, function(_, action) {\r\n _this2._actions[action] = _this2._createActionByOption(action, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }) || _common.noop\r\n })\r\n },\r\n _initCloseOnOutsideClickHandler: function() {\r\n var that = this;\r\n this._proxiedDocumentDownHandler = function() {\r\n return that._documentDownHandler.apply(that, arguments)\r\n }\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._showAnimationProcessing) {\r\n this._stopAnimation()\r\n }\r\n var closeOnOutsideClick = this.option(\"closeOnOutsideClick\");\r\n if ((0, _type.isFunction)(closeOnOutsideClick)) {\r\n closeOnOutsideClick = closeOnOutsideClick(e)\r\n }\r\n var $container = this._$content;\r\n var isAttachedTarget = (0, _renderer.default)(window.document).is(e.target) || (0, _dom.contains)(window.document, e.target);\r\n var isInnerOverlay = (0, _renderer.default)(e.target).closest(\".\" + INNER_OVERLAY_CLASS).length;\r\n var outsideClick = isAttachedTarget && !isInnerOverlay && !($container.is(e.target) || (0, _dom.contains)($container.get(0), e.target));\r\n if (outsideClick && closeOnOutsideClick) {\r\n this._outsideClickHandler(e)\r\n }\r\n return this.option(\"propagateOutsideClick\")\r\n },\r\n _outsideClickHandler: function(e) {\r\n if (this.option(\"shading\")) {\r\n e.preventDefault()\r\n }\r\n this.hide()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n content: new _empty_template.EmptyTemplate\r\n });\r\n this.callBase()\r\n },\r\n _isTopOverlay: function() {\r\n var overlayStack = this._overlayStack();\r\n for (var i = overlayStack.length - 1; i >= 0; i--) {\r\n var tabbableElements = overlayStack[i]._findTabbableBounds();\r\n if (tabbableElements.first || tabbableElements.last) {\r\n return overlayStack[i] === this\r\n }\r\n }\r\n return false\r\n },\r\n _overlayStack: function() {\r\n return OVERLAY_STACK\r\n },\r\n _zIndexInitValue: function() {\r\n return Overlay.baseZIndex()\r\n },\r\n _toggleViewPortSubscription: function(toggle) {\r\n viewPortChanged.remove(this._viewPortChangeHandle);\r\n if (toggle) {\r\n this._viewPortChangeHandle = this._viewPortChangeHandler.bind(this);\r\n viewPortChanged.add(this._viewPortChangeHandle)\r\n }\r\n },\r\n _viewPortChangeHandler: function() {\r\n this._initContainer(this.option(\"container\"));\r\n this._refresh()\r\n },\r\n _renderVisibilityAnimate: function(visible) {\r\n this._stopAnimation();\r\n return visible ? this._show() : this._hide()\r\n },\r\n _normalizePosition: function() {\r\n var position = this.option(\"position\");\r\n this._position = \"function\" === typeof position ? position() : position\r\n },\r\n _getAnimationConfig: function() {\r\n var animation = this.option(\"animation\");\r\n if ((0, _type.isFunction)(animation)) {\r\n animation = animation.call(this)\r\n }\r\n return animation\r\n },\r\n _show: function() {\r\n var _this3 = this;\r\n var that = this;\r\n var deferred = new _deferred.Deferred;\r\n this._parentHidden = this._isParentHidden();\r\n deferred.done(function() {\r\n delete that._parentHidden\r\n });\r\n if (this._parentHidden) {\r\n this._isHidden = true;\r\n return deferred.resolve()\r\n }\r\n if (this._currentVisible) {\r\n return (new _deferred.Deferred).resolve().promise()\r\n }\r\n this._currentVisible = true;\r\n this._isShown = false;\r\n this._normalizePosition();\r\n var animation = that._getAnimationConfig() || {};\r\n var showAnimation = this._normalizeAnimation(animation.show, \"to\");\r\n var startShowAnimation = showAnimation && showAnimation.start || _common.noop;\r\n var completeShowAnimation = showAnimation && showAnimation.complete || _common.noop;\r\n if (this._isHidingActionCanceled) {\r\n delete this._isHidingActionCanceled;\r\n deferred.resolve()\r\n } else {\r\n var show = function() {\r\n _this3._renderVisibility(true);\r\n if (_this3._isShowingActionCanceled) {\r\n delete _this3._isShowingActionCanceled;\r\n deferred.resolve();\r\n return\r\n }\r\n _this3._animate(showAnimation, function() {\r\n if (that.option(\"focusStateEnabled\")) {\r\n _events_engine.default.trigger(that._focusTarget(), \"focus\")\r\n }\r\n completeShowAnimation.apply(this, arguments);\r\n that._showAnimationProcessing = false;\r\n that._isShown = true;\r\n that._actions.onShown();\r\n that._toggleSafariScrolling(false);\r\n deferred.resolve()\r\n }, function() {\r\n startShowAnimation.apply(this, arguments);\r\n that._showAnimationProcessing = true\r\n })\r\n };\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n this._stopShowTimer();\r\n this._asyncShowTimeout = setTimeout(show)\r\n } else {\r\n show()\r\n }\r\n }\r\n return deferred.promise()\r\n },\r\n _normalizeAnimation: function(animation, prop) {\r\n if (animation) {\r\n animation = (0, _extend.extend)({\r\n type: \"slide\",\r\n skipElementInitialStyles: true\r\n }, animation);\r\n if (animation[prop] && \"object\" === _typeof(animation[prop])) {\r\n (0, _extend.extend)(animation[prop], {\r\n position: this._position\r\n })\r\n }\r\n }\r\n return animation\r\n },\r\n _hide: function() {\r\n if (!this._currentVisible) {\r\n return (new _deferred.Deferred).resolve().promise()\r\n }\r\n this._currentVisible = false;\r\n var that = this;\r\n var deferred = new _deferred.Deferred;\r\n var animation = that._getAnimationConfig() || {};\r\n var hideAnimation = this._normalizeAnimation(animation.hide, \"from\");\r\n var startHideAnimation = hideAnimation && hideAnimation.start || _common.noop;\r\n var completeHideAnimation = hideAnimation && hideAnimation.complete || _common.noop;\r\n var hidingArgs = {\r\n cancel: false\r\n };\r\n if (this._isShowingActionCanceled) {\r\n deferred.resolve()\r\n } else {\r\n this._actions.onHiding(hidingArgs);\r\n that._toggleSafariScrolling(true);\r\n if (hidingArgs.cancel) {\r\n this._isHidingActionCanceled = true;\r\n this.option(\"visible\", true);\r\n deferred.resolve()\r\n } else {\r\n this._forceFocusLost();\r\n this._toggleShading(false);\r\n this._toggleSubscriptions(false);\r\n this._stopShowTimer();\r\n this._animate(hideAnimation, function() {\r\n var _that$_actions;\r\n that._$content.css(\"pointerEvents\", \"\");\r\n that._renderVisibility(false);\r\n completeHideAnimation.apply(this, arguments);\r\n that._hideAnimationProcessing = false;\r\n null === (_that$_actions = that._actions) || void 0 === _that$_actions ? void 0 : _that$_actions.onHidden();\r\n deferred.resolve()\r\n }, function() {\r\n that._$content.css(\"pointerEvents\", \"none\");\r\n startHideAnimation.apply(this, arguments);\r\n that._hideAnimationProcessing = true\r\n })\r\n }\r\n }\r\n return deferred.promise()\r\n },\r\n _forceFocusLost: function() {\r\n var activeElement = _dom_adapter.default.getActiveElement();\r\n var shouldResetActiveElement = !!this._$content.find(activeElement).length;\r\n if (shouldResetActiveElement) {\r\n (0, _dom.resetActiveElement)()\r\n }\r\n },\r\n _animate: function(animation, completeCallback, startCallback) {\r\n if (animation) {\r\n startCallback = startCallback || animation.start || _common.noop;\r\n _fx.default.animate(this._$content, (0, _extend.extend)({}, animation, {\r\n start: startCallback,\r\n complete: completeCallback\r\n }))\r\n } else {\r\n completeCallback()\r\n }\r\n },\r\n _stopAnimation: function() {\r\n _fx.default.stop(this._$content, true)\r\n },\r\n _renderVisibility: function(visible) {\r\n if (visible && this._isParentHidden()) {\r\n return\r\n }\r\n this._currentVisible = visible;\r\n this._stopAnimation();\r\n if (!visible) {\r\n (0, _visibility_change.triggerHidingEvent)(this._$content)\r\n }\r\n this._toggleVisibility(visible);\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, !visible);\r\n this._updateZIndexStackPosition(visible);\r\n if (visible) {\r\n this._renderContent();\r\n var showingArgs = {\r\n cancel: false\r\n };\r\n this._actions.onShowing(showingArgs);\r\n if (showingArgs.cancel) {\r\n this._toggleVisibility(false);\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, true);\r\n this._updateZIndexStackPosition(false);\r\n this._moveFromContainer();\r\n this._isShowingActionCanceled = true;\r\n this.option(\"visible\", false);\r\n return\r\n }\r\n this._moveToContainer();\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerShownEvent)(this._$content);\r\n (0, _visibility_change.triggerResizeEvent)(this._$content)\r\n } else {\r\n this._moveFromContainer()\r\n }\r\n this._toggleShading(visible);\r\n this._toggleSubscriptions(visible)\r\n },\r\n _updateZIndexStackPosition: function(pushToStack) {\r\n var overlayStack = this._overlayStack();\r\n var index = (0, _array.inArray)(this, overlayStack);\r\n if (pushToStack) {\r\n if (index === -1) {\r\n this._zIndex = zIndexPool.create(this._zIndexInitValue());\r\n overlayStack.push(this)\r\n }\r\n this._$wrapper.css(\"zIndex\", this._zIndex);\r\n this._$content.css(\"zIndex\", this._zIndex)\r\n } else {\r\n if (index !== -1) {\r\n overlayStack.splice(index, 1);\r\n zIndexPool.remove(this._zIndex)\r\n }\r\n }\r\n },\r\n _toggleShading: function(visible) {\r\n this._$wrapper.toggleClass(OVERLAY_MODAL_CLASS, this.option(\"shading\") && !this.option(\"container\"));\r\n this._$wrapper.toggleClass(OVERLAY_SHADER_CLASS, visible && this.option(\"shading\"));\r\n this._$wrapper.css(\"backgroundColor\", this.option(\"shading\") ? this.option(\"shadingColor\") : \"\");\r\n this._toggleTabTerminator(visible && this.option(\"shading\"))\r\n },\r\n _initTabTerminatorHandler: function() {\r\n var that = this;\r\n this._proxiedTabTerminatorHandler = function() {\r\n that._tabKeyHandler.apply(that, arguments)\r\n }\r\n },\r\n _toggleTabTerminator: function(enabled) {\r\n var eventName = (0, _index.addNamespace)(\"keydown\", this.NAME);\r\n if (enabled) {\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n } else {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n }\r\n },\r\n _findTabbableBounds: function() {\r\n var $elements = this._$wrapper.find(\"*\");\r\n var elementsCount = $elements.length - 1;\r\n var result = {\r\n first: null,\r\n last: null\r\n };\r\n for (var i = 0; i <= elementsCount; i++) {\r\n if (!result.first && $elements.eq(i).is(_selectors.tabbable)) {\r\n result.first = $elements.eq(i)\r\n }\r\n if (!result.last && $elements.eq(elementsCount - i).is(_selectors.tabbable)) {\r\n result.last = $elements.eq(elementsCount - i)\r\n }\r\n if (result.first && result.last) {\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _tabKeyHandler: function(e) {\r\n if ((0, _index.normalizeKeyName)(e) !== TAB_KEY || !this._isTopOverlay()) {\r\n return\r\n }\r\n var tabbableElements = this._findTabbableBounds();\r\n var $firstTabbable = tabbableElements.first;\r\n var $lastTabbable = tabbableElements.last;\r\n var isTabOnLast = !e.shiftKey && e.target === $lastTabbable.get(0);\r\n var isShiftTabOnFirst = e.shiftKey && e.target === $firstTabbable.get(0);\r\n var isEmptyTabList = 0 === tabbableElements.length;\r\n var isOutsideTarget = !(0, _dom.contains)(this._$wrapper.get(0), e.target);\r\n if (isTabOnLast || isShiftTabOnFirst || isEmptyTabList || isOutsideTarget) {\r\n e.preventDefault();\r\n var $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable;\r\n _events_engine.default.trigger($focusElement, \"focusin\");\r\n _events_engine.default.trigger($focusElement, \"focus\")\r\n }\r\n },\r\n _toggleSubscriptions: function(enabled) {\r\n if ((0, _window.hasWindow)()) {\r\n this._toggleHideTopOverlayCallback(enabled);\r\n this._toggleParentsScrollSubscription(enabled)\r\n }\r\n },\r\n _toggleHideTopOverlayCallback: function(subscribe) {\r\n if (!this._hideTopOverlayHandler) {\r\n return\r\n }\r\n if (subscribe) {\r\n _hide_callback.hideCallback.add(this._hideTopOverlayHandler)\r\n } else {\r\n _hide_callback.hideCallback.remove(this._hideTopOverlayHandler)\r\n }\r\n },\r\n _toggleParentsScrollSubscription: function(subscribe) {\r\n var _this4 = this;\r\n if (!this._position) {\r\n return\r\n }\r\n var target = this._position.of || (0, _renderer.default)();\r\n var closeOnScroll = this.option(\"closeOnTargetScroll\");\r\n var $parents = getElement(target).parents();\r\n var scrollEvent = (0, _index.addNamespace)(\"scroll\", this.NAME);\r\n if (\"desktop\" === _devices.default.real().deviceType) {\r\n $parents = $parents.add(window)\r\n }\r\n this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function(e) {\r\n _this4._targetParentsScrollHandler(e)\r\n };\r\n _events_engine.default.off((0, _renderer.default)().add(this._$prevTargetParents), scrollEvent, this._proxiedTargetParentsScrollHandler);\r\n if (subscribe && closeOnScroll) {\r\n _events_engine.default.on($parents, scrollEvent, this._proxiedTargetParentsScrollHandler);\r\n this._$prevTargetParents = $parents\r\n }\r\n },\r\n _targetParentsScrollHandler: function(e) {\r\n var closeHandled = false;\r\n var closeOnScroll = this.option(\"closeOnTargetScroll\");\r\n if ((0, _type.isFunction)(closeOnScroll)) {\r\n closeHandled = closeOnScroll(e)\r\n }\r\n if (!closeHandled && !this._showAnimationProcessing) {\r\n this.hide()\r\n }\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._appendContentToElement();\r\n this._renderVisibilityAnimate(this.option(\"visible\"))\r\n },\r\n _appendContentToElement: function() {\r\n if (!this._$content.parent().is(this.$element())) {\r\n this._$content.appendTo(this.$element())\r\n }\r\n },\r\n _renderContent: function() {\r\n var shouldDeferRendering = !this._currentVisible && this.option(\"deferRendering\");\r\n var isParentHidden = this.option(\"visible\") && this._isParentHidden();\r\n if (isParentHidden) {\r\n this._isHidden = true;\r\n return\r\n }\r\n if (this._contentAlreadyRendered || shouldDeferRendering) {\r\n return\r\n }\r\n this._contentAlreadyRendered = true;\r\n this._appendContentToElement();\r\n this.callBase()\r\n },\r\n _isParentHidden: function() {\r\n if (!this.option(\"_checkParentVisibility\")) {\r\n return false\r\n }\r\n if (void 0 !== this._parentHidden) {\r\n return this._parentHidden\r\n }\r\n var $parent = this.$element().parent();\r\n if ($parent.is(\":visible\")) {\r\n return false\r\n }\r\n var isHidden = false;\r\n $parent.add($parent.parents()).each(function() {\r\n var $element = (0, _renderer.default)(this);\r\n if (\"none\" === $element.css(\"display\")) {\r\n isHidden = true;\r\n return false\r\n }\r\n });\r\n return isHidden || !_dom_adapter.default.getBody().contains($parent.get(0))\r\n },\r\n _renderContentImpl: function() {\r\n var _this5 = this;\r\n var whenContentRendered = new _deferred.Deferred;\r\n var contentTemplateOption = this.option(\"contentTemplate\");\r\n var contentTemplate = this._getTemplate(contentTemplateOption);\r\n var transclude = this._templateManager.anonymousTemplateName === contentTemplateOption;\r\n contentTemplate && contentTemplate.render({\r\n container: (0, _element.getPublicElement)(this.$content()),\r\n noModel: true,\r\n transclude: transclude,\r\n onRendered: function() {\r\n whenContentRendered.resolve()\r\n }\r\n });\r\n this._renderDrag();\r\n this._renderResize();\r\n this._renderScrollTerminator();\r\n whenContentRendered.done(function() {\r\n if (_this5.option(\"visible\")) {\r\n _this5._moveToContainer()\r\n }\r\n });\r\n return whenContentRendered.promise()\r\n },\r\n _renderDrag: function() {\r\n var $dragTarget = this._getDragTarget();\r\n if (!$dragTarget) {\r\n return\r\n }\r\n var startEventName = (0, _index.addNamespace)(_drag.start, this.NAME);\r\n var updateEventName = (0, _index.addNamespace)(_drag.move, this.NAME);\r\n _events_engine.default.off($dragTarget, startEventName);\r\n _events_engine.default.off($dragTarget, updateEventName);\r\n if (!this.option(\"dragEnabled\")) {\r\n return\r\n }\r\n _events_engine.default.on($dragTarget, startEventName, this._dragStartHandler.bind(this));\r\n _events_engine.default.on($dragTarget, updateEventName, this._dragUpdateHandler.bind(this))\r\n },\r\n _renderResize: function() {\r\n this._resizable = this._createComponent(this._$content, _resizable.default, {\r\n handles: this.option(\"resizeEnabled\") ? \"all\" : \"none\",\r\n onResizeEnd: this._resizeEndHandler.bind(this),\r\n onResize: this._actions.onResize.bind(this),\r\n onResizeStart: this._actions.onResizeStart.bind(this),\r\n minHeight: 100,\r\n minWidth: 100,\r\n area: this._getDragResizeContainer()\r\n })\r\n },\r\n _resizeEndHandler: function() {\r\n this._positionChangeHandled = true;\r\n var width = this._resizable.option(\"width\");\r\n var height = this._resizable.option(\"height\");\r\n width && this.option(\"width\", width);\r\n height && this.option(\"height\", height);\r\n this._actions.onResizeEnd()\r\n },\r\n _renderScrollTerminator: function() {\r\n var $scrollTerminator = this._$wrapper;\r\n var terminatorEventName = (0, _index.addNamespace)(_drag.move, this.NAME);\r\n _events_engine.default.off($scrollTerminator, terminatorEventName);\r\n _events_engine.default.on($scrollTerminator, terminatorEventName, {\r\n validate: function() {\r\n return true\r\n },\r\n getDirection: function() {\r\n return \"both\"\r\n },\r\n _toggleGestureCover: function(toggle) {\r\n if (!toggle) {\r\n this._toggleGestureCoverImpl(toggle)\r\n }\r\n },\r\n _clearSelection: _common.noop,\r\n isNative: true\r\n }, function(e) {\r\n var originalEvent = e.originalEvent.originalEvent;\r\n var _ref = originalEvent || {},\r\n type = _ref.type;\r\n var isWheel = \"wheel\" === type;\r\n var isMouseMove = \"mousemove\" === type;\r\n var isScrollByWheel = isWheel && !(0, _index.isCommandKeyPressed)(e);\r\n e._cancelPreventDefault = true;\r\n if (originalEvent && false !== e.cancelable && (!isMouseMove && !isWheel || isScrollByWheel)) {\r\n e.preventDefault()\r\n }\r\n })\r\n },\r\n _getDragTarget: function() {\r\n return this.$content()\r\n },\r\n _dragStartHandler: function(e) {\r\n e.targetElements = [];\r\n this._prevOffset = {\r\n x: 0,\r\n y: 0\r\n };\r\n var allowedOffsets = this._allowedOffsets();\r\n e.maxTopOffset = allowedOffsets.top;\r\n e.maxBottomOffset = allowedOffsets.bottom;\r\n e.maxLeftOffset = allowedOffsets.left;\r\n e.maxRightOffset = allowedOffsets.right\r\n },\r\n _getDragResizeContainer: function() {\r\n var isContainerDefined = (0, _view_port.originalViewPort)().get(0) || this.option(\"container\");\r\n var $container = !isContainerDefined ? (0, _renderer.default)(window) : this._$container;\r\n return $container\r\n },\r\n _deltaSize: function() {\r\n var $content = this._$content;\r\n var $container = this._getDragResizeContainer();\r\n var contentWidth = $content.outerWidth();\r\n var contentHeight = $content.outerHeight();\r\n var containerWidth = $container.outerWidth();\r\n var containerHeight = $container.outerHeight();\r\n if (this._isWindow($container)) {\r\n var document = _dom_adapter.default.getDocument();\r\n var fullPageHeight = Math.max((0, _renderer.default)(document).outerHeight(), containerHeight);\r\n var fullPageWidth = Math.max((0, _renderer.default)(document).outerWidth(), containerWidth);\r\n containerHeight = fullPageHeight;\r\n containerWidth = fullPageWidth\r\n }\r\n return {\r\n width: containerWidth - contentWidth,\r\n height: containerHeight - contentHeight\r\n }\r\n },\r\n _dragUpdateHandler: function(e) {\r\n var offset = e.offset;\r\n var prevOffset = this._prevOffset;\r\n var targetOffset = {\r\n top: offset.y - prevOffset.y,\r\n left: offset.x - prevOffset.x\r\n };\r\n this._changePosition(targetOffset);\r\n this._prevOffset = offset\r\n },\r\n _changePosition: function(offset) {\r\n var position = (0, _translator.locate)(this._$content);\r\n (0, _translator.move)(this._$content, {\r\n left: position.left + offset.left,\r\n top: position.top + offset.top\r\n });\r\n this._positionChangeHandled = true\r\n },\r\n _allowedOffsets: function() {\r\n var position = (0, _translator.locate)(this._$content);\r\n var deltaSize = this._deltaSize();\r\n var isAllowedDrag = deltaSize.height >= 0 && deltaSize.width >= 0;\r\n var shaderOffset = this.option(\"shading\") && !this.option(\"container\") && !this._isWindow(this._getContainer()) ? (0, _translator.locate)(this._$wrapper) : {\r\n top: 0,\r\n left: 0\r\n };\r\n var boundaryOffset = this.option(\"boundaryOffset\");\r\n return {\r\n top: isAllowedDrag ? position.top + shaderOffset.top + boundaryOffset.v : 0,\r\n bottom: isAllowedDrag ? -position.top - shaderOffset.top + deltaSize.height - boundaryOffset.v : 0,\r\n left: isAllowedDrag ? position.left + shaderOffset.left + boundaryOffset.h : 0,\r\n right: isAllowedDrag ? -position.left - shaderOffset.left + deltaSize.width - boundaryOffset.h : 0\r\n }\r\n },\r\n _moveFromContainer: function() {\r\n this._$content.appendTo(this.$element());\r\n this._detachWrapperToContainer()\r\n },\r\n _detachWrapperToContainer: function() {\r\n this._$wrapper.detach()\r\n },\r\n _moveToContainer: function() {\r\n this._attachWrapperToContainer();\r\n this._$content.appendTo(this._$wrapper)\r\n },\r\n _attachWrapperToContainer: function() {\r\n var $element = this.$element();\r\n var containerDefined = void 0 !== this.option(\"container\");\r\n var renderContainer = containerDefined ? this._$container : _swatch_container.default.getSwatchContainer($element);\r\n if (renderContainer && renderContainer[0] === $element.parent()[0]) {\r\n renderContainer = $element\r\n }\r\n this._$wrapper.appendTo(renderContainer)\r\n },\r\n _fixHeightAfterSafariAddressBarResizing: function() {\r\n if (this._isWindow(this._getContainer()) && hasSafariAddressBar) {\r\n this._$wrapper.css(\"minHeight\", window.innerHeight)\r\n }\r\n },\r\n _renderGeometry: function(isDimensionChanged) {\r\n if (this.option(\"visible\") && (0, _window.hasWindow)()) {\r\n this._renderGeometryImpl(isDimensionChanged)\r\n }\r\n },\r\n _renderGeometryImpl: function(isDimensionChanged) {\r\n this._stopAnimation();\r\n this._normalizePosition();\r\n this._renderWrapper();\r\n this._fixHeightAfterSafariAddressBarResizing();\r\n this._renderDimensions();\r\n var resultPosition = this._renderPosition();\r\n this._actions.onPositioned({\r\n position: resultPosition\r\n })\r\n },\r\n _fixWrapperPosition: function() {\r\n this._$wrapper.css(\"position\", this._useFixedPosition() ? \"fixed\" : \"absolute\")\r\n },\r\n _useFixedPosition: function() {\r\n return this._shouldFixBodyPosition() || this.option(\"_fixedPosition\")\r\n },\r\n _shouldFixBodyPosition: function() {\r\n var $container = this._getContainer();\r\n return this._isWindow($container) && (!iOS || void 0 !== this._bodyScrollTop)\r\n },\r\n _toggleSafariScrolling: function(scrollingEnabled) {\r\n if (iOS && this._shouldFixBodyPosition()) {\r\n var body = _dom_adapter.default.getBody();\r\n if (scrollingEnabled) {\r\n (0, _renderer.default)(body).removeClass(PREVENT_SAFARI_SCROLLING_CLASS);\r\n window.scrollTo(0, this._bodyScrollTop);\r\n this._bodyScrollTop = void 0\r\n } else {\r\n if (this.option(\"visible\")) {\r\n this._bodyScrollTop = window.pageYOffset;\r\n (0, _renderer.default)(body).addClass(PREVENT_SAFARI_SCROLLING_CLASS)\r\n }\r\n }\r\n }\r\n },\r\n _renderWrapper: function() {\r\n this._fixWrapperPosition();\r\n this._renderWrapperDimensions();\r\n this._renderWrapperPosition()\r\n },\r\n _renderWrapperDimensions: function() {\r\n var wrapperWidth;\r\n var wrapperHeight;\r\n var $container = this._getContainer();\r\n if (!$container) {\r\n return\r\n }\r\n var isWindow = this._isWindow($container);\r\n wrapperWidth = isWindow ? \"\" : $container.outerWidth(), wrapperHeight = isWindow ? \"\" : $container.outerHeight();\r\n this._$wrapper.css({\r\n width: wrapperWidth,\r\n height: wrapperHeight\r\n })\r\n },\r\n _isWindow: function($element) {\r\n return !!$element && (0, _type.isWindow)($element.get(0))\r\n },\r\n _renderWrapperPosition: function() {\r\n var $container = this._getContainer();\r\n if ($container) {\r\n _position.default.setup(this._$wrapper, {\r\n my: \"top left\",\r\n at: \"top left\",\r\n of: $container\r\n })\r\n }\r\n },\r\n _getContainer: function() {\r\n var position = this._position;\r\n var container = this.option(\"container\");\r\n var positionOf = null;\r\n if (!container && position) {\r\n positionOf = (0, _type.isEvent)(position.of) ? window : position.of || window\r\n }\r\n return getElement(container || positionOf)\r\n },\r\n _renderDimensions: function() {\r\n var content = this._$content.get(0);\r\n this._$content.css({\r\n minWidth: this._getOptionValue(\"minWidth\", content),\r\n maxWidth: this._getOptionValue(\"maxWidth\", content),\r\n minHeight: this._getOptionValue(\"minHeight\", content),\r\n maxHeight: this._getOptionValue(\"maxHeight\", content),\r\n width: this._getOptionValue(\"width\", content),\r\n height: this._getOptionValue(\"height\", content)\r\n })\r\n },\r\n _renderPosition: function() {\r\n if (this._positionChangeHandled) {\r\n var allowedOffsets = this._allowedOffsets();\r\n this._changePosition({\r\n top: (0, _math.fitIntoRange)(0, -allowedOffsets.top, allowedOffsets.bottom),\r\n left: (0, _math.fitIntoRange)(0, -allowedOffsets.left, allowedOffsets.right)\r\n })\r\n } else {\r\n this._renderOverlayBoundaryOffset();\r\n (0, _translator.resetPosition)(this._$content);\r\n var wrapperOverflow = this._$wrapper.css(\"overflow\");\r\n this._$wrapper.css(\"overflow\", \"hidden\");\r\n var position = this._transformStringPosition(this._position, POSITION_ALIASES);\r\n var resultPosition = _position.default.setup(this._$content, position);\r\n this._$wrapper.css(\"overflow\", wrapperOverflow);\r\n forceRepaint(this._$content);\r\n return resultPosition\r\n }\r\n },\r\n _transformStringPosition: function(position, positionAliases) {\r\n if ((0, _type.isString)(position)) {\r\n position = (0, _extend.extend)({}, positionAliases[position])\r\n }\r\n return position\r\n },\r\n _renderOverlayBoundaryOffset: function() {\r\n var boundaryOffset = this.option(\"boundaryOffset\");\r\n this._$content.css(\"margin\", boundaryOffset.v + \"px \" + boundaryOffset.h + \"px\")\r\n },\r\n _focusTarget: function() {\r\n return this._$content\r\n },\r\n _attachKeyboardEvents: function() {\r\n var _this6 = this;\r\n this._keyboardListenerId = _short.keyboard.on(this._$content, null, function(opts) {\r\n return _this6._keyboardHandler(opts)\r\n })\r\n },\r\n _keyboardHandler: function(options) {\r\n var e = options.originalEvent;\r\n var $target = (0, _renderer.default)(e.target);\r\n if ($target.is(this._$content) || !this.option(\"ignoreChildEvents\")) {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _isVisible: function() {\r\n return this.option(\"visible\")\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n if (this.option(\"visible\")) {\r\n this._renderVisibilityAnimate(visible)\r\n }\r\n } else {\r\n this._renderVisibilityAnimate(visible)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderGeometry(true)\r\n },\r\n _clean: function() {\r\n if (!this._contentAlreadyRendered) {\r\n this.$content().empty()\r\n }\r\n this._renderVisibility(false);\r\n this._stopShowTimer();\r\n this._cleanFocusState()\r\n },\r\n _stopShowTimer: function() {\r\n if (this._asyncShowTimeout) {\r\n clearTimeout(this._asyncShowTimeout)\r\n }\r\n this._asyncShowTimeout = null\r\n },\r\n _dispose: function() {\r\n _fx.default.stop(this._$content, false);\r\n clearTimeout(this._deferShowTimer);\r\n this._toggleViewPortSubscription(false);\r\n this._toggleSubscriptions(false);\r\n this._updateZIndexStackPosition(false);\r\n this._toggleTabTerminator(false);\r\n this._toggleSafariScrolling(true);\r\n this._actions = null;\r\n this.callBase();\r\n zIndexPool.remove(this._zIndex);\r\n this._$wrapper.remove();\r\n this._$content.remove()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase.apply(this, arguments);\r\n this._$content.toggleClass(DISABLED_STATE_CLASS, Boolean(value))\r\n },\r\n _toggleRTLDirection: function(rtl) {\r\n this._$content.toggleClass(RTL_DIRECTION_CLASS, rtl)\r\n },\r\n _optionChanged: function(args) {\r\n var _this7 = this;\r\n var value = args.value;\r\n if ((0, _array.inArray)(args.name, ACTIONS) > -1) {\r\n this._initActions();\r\n return\r\n }\r\n switch (args.name) {\r\n case \"dragEnabled\":\r\n this._renderDrag();\r\n this._renderGeometry();\r\n break;\r\n case \"resizeEnabled\":\r\n this._renderResize();\r\n this._renderGeometry();\r\n break;\r\n case \"shading\":\r\n case \"shadingColor\":\r\n this._toggleShading(this.option(\"visible\"));\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n case \"minWidth\":\r\n case \"maxWidth\":\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n case \"boundaryOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"position\":\r\n this._positionChangeHandled = false;\r\n this._renderGeometry();\r\n break;\r\n case \"visible\":\r\n this._renderVisibilityAnimate(value).done(function() {\r\n if (!_this7._animateDeferred) {\r\n return\r\n }\r\n _this7._animateDeferred.resolveWith(_this7)\r\n });\r\n break;\r\n case \"target\":\r\n this._initTarget(value);\r\n this._invalidate();\r\n break;\r\n case \"container\":\r\n this._initContainer(value);\r\n this._invalidate();\r\n break;\r\n case \"innerOverlay\":\r\n this._initInnerOverlayClass();\r\n break;\r\n case \"deferRendering\":\r\n case \"contentTemplate\":\r\n this._contentAlreadyRendered = false;\r\n this._clean();\r\n this._invalidate();\r\n break;\r\n case \"hideTopOverlayHandler\":\r\n this._toggleHideTopOverlayCallback(false);\r\n this._initHideTopOverlayHandler(args.value);\r\n this._toggleHideTopOverlayCallback(this.option(\"visible\"));\r\n break;\r\n case \"closeOnTargetScroll\":\r\n this._toggleParentsScrollSubscription(this.option(\"visible\"));\r\n break;\r\n case \"closeOnOutsideClick\":\r\n case \"animation\":\r\n case \"propagateOutsideClick\":\r\n break;\r\n case \"rtlEnabled\":\r\n this._contentAlreadyRendered = false;\r\n this.callBase(args);\r\n break;\r\n case \"_fixedPosition\":\r\n this._fixWrapperPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n toggle: function(showing) {\r\n var _this8 = this;\r\n showing = void 0 === showing ? !this.option(\"visible\") : showing;\r\n var result = new _deferred.Deferred;\r\n if (showing === this.option(\"visible\")) {\r\n return result.resolveWith(this, [showing]).promise()\r\n }\r\n var animateDeferred = new _deferred.Deferred;\r\n this._animateDeferred = animateDeferred;\r\n this.option(\"visible\", showing);\r\n animateDeferred.promise().done(function() {\r\n delete _this8._animateDeferred;\r\n result.resolveWith(_this8, [_this8.option(\"visible\")])\r\n });\r\n return result.promise()\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n show: function() {\r\n return this.toggle(true)\r\n },\r\n hide: function() {\r\n return this.toggle(false)\r\n },\r\n content: function() {\r\n return (0, _element.getPublicElement)(this._$content)\r\n },\r\n repaint: function() {\r\n if (this._contentAlreadyRendered) {\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerResizeEvent)(this._$content)\r\n } else {\r\n this.callBase()\r\n }\r\n }\r\n});\r\nOverlay.baseZIndex = function(zIndex) {\r\n return zIndexPool.base(zIndex)\r\n};\r\n(0, _component_registrator.default)(\"dxOverlay\", Overlay);\r\nvar _default = Overlay;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/overlay/z_index.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.remove = exports.create = exports.clearStack = exports.base = void 0;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar baseZIndex = 1500;\r\nvar zIndexStack = [];\r\nvar base = function(ZIndex) {\r\n baseZIndex = (0, _common.ensureDefined)(ZIndex, baseZIndex);\r\n return baseZIndex\r\n};\r\nexports.base = base;\r\nvar create = function() {\r\n var baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex;\r\n var length = zIndexStack.length;\r\n var index = (length ? zIndexStack[length - 1] : baseIndex) + 1;\r\n zIndexStack.push(index);\r\n return index\r\n};\r\nexports.create = create;\r\nvar remove = function(zIndex) {\r\n var position = zIndexStack.indexOf(zIndex);\r\n if (position >= 0) {\r\n zIndexStack.splice(position, 1)\r\n }\r\n};\r\nexports.remove = remove;\r\nvar clearStack = function() {\r\n zIndexStack = []\r\n};\r\nexports.clearStack = clearStack;\r\n","/**\r\n * DevExtreme (ui/number_box/utils.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.splitByIndex = exports.getRealSeparatorIndex = exports.getNthOccurrence = exports.adjustPercentValue = void 0;\r\nvar _math = require(\"../../core/utils/math\");\r\nvar getRealSeparatorIndex = function(str) {\r\n var quoteBalance = 0;\r\n var separatorCount = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n if (\"'\" === str[i]) {\r\n quoteBalance++\r\n }\r\n if (\".\" === str[i]) {\r\n ++separatorCount;\r\n if (quoteBalance % 2 === 0) {\r\n return {\r\n occurrence: separatorCount,\r\n index: i\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n occurrence: 1,\r\n index: -1\r\n }\r\n};\r\nexports.getRealSeparatorIndex = getRealSeparatorIndex;\r\nvar getNthOccurrence = function(str, c, n) {\r\n var i = -1;\r\n while (n-- && i++ < str.length) {\r\n i = str.indexOf(c, i)\r\n }\r\n return i\r\n};\r\nexports.getNthOccurrence = getNthOccurrence;\r\nvar splitByIndex = function(str, index) {\r\n if (index === -1) {\r\n return [str]\r\n }\r\n return [str.slice(0, index), str.slice(index + 1)]\r\n};\r\nexports.splitByIndex = splitByIndex;\r\nvar adjustPercentValue = function(rawValue, precision) {\r\n return rawValue && (0, _math.adjust)(rawValue / 100, precision)\r\n};\r\nexports.adjustPercentValue = adjustPercentValue;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/data_source.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 _utils = require(\"../../data/data_source/utils\");\r\nvar _abstract_store = _interopRequireDefault(require(\"../../data/abstract_store\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _events_strategy = require(\"../../core/events_strategy\");\r\nvar _inflector = require(\"../../core/utils/inflector\");\r\nvar _local_store = require(\"./local_store\");\r\nvar _remote_store = _interopRequireDefault(require(\"./remote_store\"));\r\nvar _data_source = require(\"./data_source.utils\");\r\nvar _xmla_store = require(\"./xmla_store/xmla_store\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.summary_display_modes\");\r\nvar _uiPivot_grid2 = require(\"./ui.pivot_grid.utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DESCRIPTION_NAME_BY_AREA = {\r\n row: \"rows\",\r\n column: \"columns\",\r\n data: \"values\",\r\n filter: \"filters\"\r\n};\r\nvar STATE_PROPERTIES = [\"area\", \"areaIndex\", \"sortOrder\", \"filterType\", \"filterValues\", \"sortBy\", \"sortBySummaryField\", \"sortBySummaryPath\", \"expanded\", \"summaryType\", \"summaryDisplayMode\"];\r\nvar CALCULATED_PROPERTIES = [\"format\", \"selector\", \"customizeText\", \"caption\"];\r\nvar ALL_CALCULATED_PROPERTIES = CALCULATED_PROPERTIES.concat([\"allowSorting\", \"allowSortingBySummary\", \"allowFiltering\", \"allowExpandAll\"]);\r\n\r\nfunction createCaption(field) {\r\n var caption = field.dataField || field.groupName || \"\";\r\n var summaryType = (field.summaryType || \"\").toLowerCase();\r\n if ((0, _type.isString)(field.groupInterval)) {\r\n caption += \"_\" + field.groupInterval\r\n }\r\n if (summaryType && \"custom\" !== summaryType) {\r\n summaryType = summaryType.replace(/^./, summaryType[0].toUpperCase());\r\n if (caption.length) {\r\n summaryType = \" (\" + summaryType + \")\"\r\n }\r\n } else {\r\n summaryType = \"\"\r\n }\r\n return (0, _inflector.titleize)(caption) + summaryType\r\n}\r\n\r\nfunction resetFieldState(field, properties) {\r\n var initialProperties = field._initProperties || {};\r\n (0, _iterator.each)(properties, function(_, prop) {\r\n if (Object.prototype.hasOwnProperty.call(initialProperties, prop)) {\r\n field[prop] = initialProperties[prop]\r\n }\r\n })\r\n}\r\n\r\nfunction updateCalculatedFieldProperties(field, calculatedProperties) {\r\n resetFieldState(field, calculatedProperties);\r\n if (!(0, _type.isDefined)(field.caption)) {\r\n (0, _uiPivot_grid2.setFieldProperty)(field, \"caption\", createCaption(field))\r\n }\r\n}\r\n\r\nfunction areExpressionsUsed(dataFields) {\r\n return dataFields.some(function(field) {\r\n return field.summaryDisplayMode || field.calculateSummaryValue\r\n })\r\n}\r\n\r\nfunction isRunningTotalUsed(dataFields) {\r\n return dataFields.some(function(field) {\r\n return !!field.runningTotal\r\n })\r\n}\r\n\r\nfunction isDataExists(data) {\r\n return data.rows.length || data.columns.length || data.values.length\r\n}\r\nvar _default = _class.default.inherit(function() {\r\n var findHeaderItem = function(headerItems, path) {\r\n if (headerItems._cacheByPath) {\r\n return headerItems._cacheByPath[path.join(\".\")] || null\r\n }\r\n };\r\n var getHeaderItemsLastIndex = function getHeaderItemsLastIndex(headerItems, grandTotalIndex) {\r\n var i;\r\n var lastIndex = -1;\r\n var headerItem;\r\n if (headerItems) {\r\n for (i = 0; i < headerItems.length; i++) {\r\n headerItem = headerItems[i];\r\n if (void 0 !== headerItem.index) {\r\n lastIndex = Math.max(lastIndex, headerItem.index)\r\n }\r\n if (headerItem.children) {\r\n lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.children))\r\n } else {\r\n if (headerItem.collapsedChildren) {\r\n lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.collapsedChildren))\r\n }\r\n }\r\n }\r\n }\r\n if ((0, _type.isDefined)(grandTotalIndex)) {\r\n lastIndex = Math.max(lastIndex, grandTotalIndex)\r\n }\r\n return lastIndex\r\n };\r\n var updateHeaderItemChildren = function(headerItems, headerItem, children, grandTotalIndex) {\r\n var applyingHeaderItemsCount = getHeaderItemsLastIndex(children) + 1;\r\n var emptyIndex = getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1;\r\n var index;\r\n var applyingItemIndexesToCurrent = [];\r\n var needIndexUpdate = false;\r\n var d = new _deferred.Deferred;\r\n if (headerItem.children && headerItem.children.length === children.length) {\r\n for (var i = 0; i < children.length; i++) {\r\n var child = children[i];\r\n if (void 0 !== child.index) {\r\n if (void 0 === headerItem.children[i].index) {\r\n child.index = applyingItemIndexesToCurrent[child.index] = emptyIndex++;\r\n headerItem.children[i] = child\r\n } else {\r\n applyingItemIndexesToCurrent[child.index] = headerItem.children[i].index\r\n }\r\n }\r\n }\r\n } else {\r\n needIndexUpdate = true;\r\n for (index = 0; index < applyingHeaderItemsCount; index++) {\r\n applyingItemIndexesToCurrent[index] = emptyIndex++\r\n }\r\n headerItem.children = children\r\n }(0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(headerItem.children, function(items) {\r\n if (needIndexUpdate) {\r\n items[0].index = applyingItemIndexesToCurrent[items[0].index]\r\n }\r\n })).done(function() {\r\n d.resolve(applyingItemIndexesToCurrent)\r\n });\r\n return d\r\n };\r\n var updateHeaderItems = function(headerItems, newHeaderItems, grandTotalIndex) {\r\n var d = new _deferred.Deferred;\r\n var emptyIndex = grandTotalIndex >= 0 && getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1;\r\n var applyingItemIndexesToCurrent = [];\r\n (0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(headerItems, function(items) {\r\n delete items[0].collapsedChildren\r\n })).done(function() {\r\n (0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(newHeaderItems, function(newItems, index) {\r\n var newItem = newItems[0];\r\n if (newItem.index >= 0) {\r\n var headerItem = findHeaderItem(headerItems, (0, _uiPivot_grid2.createPath)(newItems));\r\n if (headerItem && headerItem.index >= 0) {\r\n applyingItemIndexesToCurrent[newItem.index] = headerItem.index\r\n } else {\r\n if (emptyIndex) {\r\n var path = (0, _uiPivot_grid2.createPath)(newItems.slice(1));\r\n headerItem = findHeaderItem(headerItems, path);\r\n var parentItems = path.length ? headerItem && headerItem.children : headerItems;\r\n if (parentItems) {\r\n parentItems[index] = newItem;\r\n newItem.index = applyingItemIndexesToCurrent[newItem.index] = emptyIndex++\r\n }\r\n }\r\n }\r\n }\r\n })).done(function() {\r\n d.resolve(applyingItemIndexesToCurrent)\r\n })\r\n });\r\n return d\r\n };\r\n var updateDataSourceCells = function(dataSource, newDataSourceCells, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {\r\n var newRowIndex;\r\n var newColumnIndex;\r\n var newRowCells;\r\n var newCell;\r\n var rowIndex;\r\n var columnIndex;\r\n var dataSourceCells = dataSource.values;\r\n if (newDataSourceCells) {\r\n for (newRowIndex = 0; newRowIndex <= newDataSourceCells.length; newRowIndex++) {\r\n newRowCells = newDataSourceCells[newRowIndex];\r\n rowIndex = newRowItemIndexesToCurrent[newRowIndex];\r\n if (!(0, _type.isDefined)(rowIndex)) {\r\n rowIndex = dataSource.grandTotalRowIndex\r\n }\r\n if (newRowCells && (0, _type.isDefined)(rowIndex)) {\r\n if (!dataSourceCells[rowIndex]) {\r\n dataSourceCells[rowIndex] = []\r\n }\r\n for (newColumnIndex = 0; newColumnIndex <= newRowCells.length; newColumnIndex++) {\r\n newCell = newRowCells[newColumnIndex];\r\n columnIndex = newColumnItemIndexesToCurrent[newColumnIndex];\r\n if (!(0, _type.isDefined)(columnIndex)) {\r\n columnIndex = dataSource.grandTotalColumnIndex\r\n }\r\n if ((0, _type.isDefined)(newCell) && (0, _type.isDefined)(columnIndex)) {\r\n dataSourceCells[rowIndex][columnIndex] = newCell\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n function createLocalOrRemoteStore(dataSourceOptions, notifyProgress) {\r\n var StoreConstructor = dataSourceOptions.remoteOperations || dataSourceOptions.paginate ? _remote_store.default : _local_store.LocalStore;\r\n return new StoreConstructor((0, _extend.extend)((0, _utils.normalizeDataSourceOptions)(dataSourceOptions), {\r\n onChanged: null,\r\n onLoadingChanged: null,\r\n onProgressChanged: notifyProgress\r\n }))\r\n }\r\n\r\n function createStore(dataSourceOptions, notifyProgress) {\r\n var store;\r\n var storeOptions;\r\n if ((0, _type.isPlainObject)(dataSourceOptions) && dataSourceOptions.load) {\r\n store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress)\r\n } else {\r\n if (dataSourceOptions && !dataSourceOptions.store) {\r\n dataSourceOptions = {\r\n store: dataSourceOptions\r\n }\r\n }\r\n storeOptions = dataSourceOptions.store;\r\n if (\"xmla\" === storeOptions.type) {\r\n store = new _xmla_store.XmlaStore(storeOptions)\r\n } else {\r\n if ((0, _type.isPlainObject)(storeOptions) && storeOptions.type || storeOptions instanceof _abstract_store.default || Array.isArray(storeOptions)) {\r\n store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress)\r\n } else {\r\n if (storeOptions instanceof _class.default) {\r\n store = storeOptions\r\n }\r\n }\r\n }\r\n }\r\n return store\r\n }\r\n\r\n function equalFields(fields, prevFields, count) {\r\n for (var i = 0; i < count; i++) {\r\n if (!fields[i] || !prevFields[i] || fields[i].index !== prevFields[i].index) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n\r\n function getExpandedPaths(dataSource, loadOptions, dimensionName, prevLoadOptions) {\r\n var result = [];\r\n var fields = loadOptions && loadOptions[dimensionName] || [];\r\n var prevFields = prevLoadOptions && prevLoadOptions[dimensionName] || [];\r\n (0, _uiPivot_grid2.foreachTree)(dataSource[dimensionName], function(items) {\r\n var item = items[0];\r\n var path = (0, _uiPivot_grid2.createPath)(items);\r\n if (item.children && fields[path.length - 1] && !fields[path.length - 1].expanded) {\r\n if (path.length < fields.length && (!prevLoadOptions || equalFields(fields, prevFields, path.length))) {\r\n result.push(path.slice())\r\n }\r\n }\r\n }, true);\r\n return result\r\n }\r\n\r\n function setFieldProperties(field, srcField, skipInitPropertySave, properties) {\r\n if (srcField) {\r\n (0, _iterator.each)(properties, function(_, name) {\r\n if (skipInitPropertySave) {\r\n field[name] = srcField[name]\r\n } else {\r\n if ((\"summaryType\" === name || \"summaryDisplayMode\" === name) && void 0 === srcField[name]) {\r\n return\r\n }(0, _uiPivot_grid2.setFieldProperty)(field, name, srcField[name])\r\n }\r\n })\r\n } else {\r\n resetFieldState(field, properties)\r\n }\r\n return field\r\n }\r\n\r\n function getFieldsState(fields, properties) {\r\n var result = [];\r\n (0, _iterator.each)(fields, function(_, field) {\r\n result.push(setFieldProperties({\r\n dataField: field.dataField,\r\n name: field.name\r\n }, field, true, properties))\r\n });\r\n return result\r\n }\r\n\r\n function getFieldStateId(field) {\r\n if (field.name) {\r\n return field.name\r\n }\r\n return field.dataField + \"\"\r\n }\r\n\r\n function getFieldsById(fields, id) {\r\n var result = [];\r\n (0, _iterator.each)(fields || [], function(_, field) {\r\n if (getFieldStateId(field) === id) {\r\n result.push(field)\r\n }\r\n });\r\n return result\r\n }\r\n\r\n function setFieldsStateCore(stateFields, fields) {\r\n stateFields = stateFields || [];\r\n (0, _iterator.each)(fields, function(index, field) {\r\n setFieldProperties(field, stateFields[index], false, STATE_PROPERTIES);\r\n updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES)\r\n });\r\n return fields\r\n }\r\n\r\n function setFieldsState(stateFields, fields) {\r\n stateFields = stateFields || [];\r\n var fieldsById = {};\r\n var id;\r\n (0, _iterator.each)(fields, function(_, field) {\r\n id = getFieldStateId(field);\r\n if (!fieldsById[id]) {\r\n fieldsById[id] = getFieldsById(fields, getFieldStateId(field))\r\n }\r\n });\r\n (0, _iterator.each)(fieldsById, function(id, fields) {\r\n setFieldsStateCore(getFieldsById(stateFields, id), fields)\r\n });\r\n return fields\r\n }\r\n\r\n function getFieldsByGroup(fields, groupingField) {\r\n return fields.filter(function(field) {\r\n return field.groupName === groupingField.groupName && (0, _type.isNumeric)(field.groupIndex) && false !== field.visible\r\n }).map(function(field) {\r\n return (0, _extend.extend)(field, {\r\n areaIndex: groupingField.areaIndex,\r\n area: groupingField.area,\r\n expanded: (0, _type.isDefined)(field.expanded) ? field.expanded : groupingField.expanded,\r\n dataField: field.dataField || groupingField.dataField,\r\n dataType: field.dataType || groupingField.dataType,\r\n sortBy: field.sortBy || groupingField.sortBy,\r\n sortOrder: field.sortOrder || groupingField.sortOrder,\r\n sortBySummaryField: field.sortBySummaryField || groupingField.sortBySummaryField,\r\n sortBySummaryPath: field.sortBySummaryPath || groupingField.sortBySummaryPath,\r\n visible: field.visible || groupingField.visible,\r\n showTotals: (0, _type.isDefined)(field.showTotals) ? field.showTotals : groupingField.showTotals,\r\n showGrandTotals: (0, _type.isDefined)(field.showGrandTotals) ? field.showGrandTotals : groupingField.showGrandTotals\r\n })\r\n }).sort(function(a, b) {\r\n return a.groupIndex - b.groupIndex\r\n })\r\n }\r\n\r\n function sortFieldsByAreaIndex(fields) {\r\n fields.sort(function(field1, field2) {\r\n return field1.areaIndex - field2.areaIndex || field1.groupIndex - field2.groupIndex\r\n })\r\n }\r\n\r\n function isAreaField(field, area) {\r\n var canAddFieldInArea = \"data\" === area || false !== field.visible;\r\n return field.area === area && !(0, _type.isDefined)(field.groupIndex) && canAddFieldInArea\r\n }\r\n\r\n function getFieldId(field, retrieveFieldsOptionValue) {\r\n var groupName = field.groupName || \"\";\r\n return (field.dataField || groupName) + (field.groupInterval ? groupName + field.groupInterval : \"NOGROUP\") + (retrieveFieldsOptionValue ? \"\" : groupName)\r\n }\r\n\r\n function mergeFields(fields, storeFields, retrieveFieldsOptionValue) {\r\n var result = [];\r\n var fieldsDictionary = {};\r\n var removedFields = {};\r\n var mergedGroups = [];\r\n var dataTypes = (0, _uiPivot_grid2.getFieldsDataType)(fields);\r\n if (storeFields) {\r\n (0, _iterator.each)(storeFields, function(_, field) {\r\n fieldsDictionary[getFieldId(field, retrieveFieldsOptionValue)] = field\r\n });\r\n (0, _iterator.each)(fields, function(_, field) {\r\n var fieldKey = getFieldId(field, retrieveFieldsOptionValue);\r\n var storeField = fieldsDictionary[fieldKey] || removedFields[fieldKey];\r\n var mergedField;\r\n if (storeField) {\r\n if (storeField._initProperties) {\r\n resetFieldState(storeField, ALL_CALCULATED_PROPERTIES)\r\n }\r\n mergedField = (0, _extend.extend)({}, storeField, field, {\r\n _initProperties: null\r\n })\r\n } else {\r\n fieldsDictionary[fieldKey] = mergedField = field\r\n }(0, _extend.extend)(mergedField, {\r\n dataType: dataTypes[field.dataField]\r\n });\r\n delete fieldsDictionary[fieldKey];\r\n removedFields[fieldKey] = storeField;\r\n result.push(mergedField)\r\n });\r\n if (retrieveFieldsOptionValue) {\r\n (0, _iterator.each)(fieldsDictionary, function(_, field) {\r\n result.push(field)\r\n })\r\n }\r\n } else {\r\n result = fields\r\n }\r\n result.push.apply(result, mergedGroups);\r\n assignGroupIndexes(result);\r\n return result\r\n }\r\n\r\n function assignGroupIndexes(fields) {\r\n fields.forEach(function(field) {\r\n if (field.groupName && field.groupInterval && void 0 === field.groupIndex) {\r\n var maxGroupIndex = fields.filter(function(f) {\r\n return f.groupName === field.groupName && (0, _type.isNumeric)(f.groupIndex)\r\n }).map(function(f) {\r\n return f.groupIndex\r\n }).reduce(function(prev, current) {\r\n return Math.max(prev, current)\r\n }, -1);\r\n field.groupIndex = maxGroupIndex + 1\r\n }\r\n })\r\n }\r\n\r\n function getFields(that) {\r\n var result = new _deferred.Deferred;\r\n var store = that._store;\r\n var storeFields = store && store.getFields(that._fields);\r\n var mergedFields;\r\n (0, _deferred.when)(storeFields).done(function(storeFields) {\r\n that._storeFields = storeFields;\r\n mergedFields = mergeFields(that._fields, storeFields, that._retrieveFields);\r\n result.resolve(mergedFields)\r\n }).fail(result.reject);\r\n return result\r\n }\r\n\r\n function formatHeaderItems(data, loadOptions, headerName) {\r\n return (0, _uiPivot_grid2.foreachTreeAsync)(data[headerName], function(items) {\r\n var item = items[0];\r\n item.text = item.text || (0, _uiPivot_grid2.formatValue)(item.value, loadOptions[headerName][(0, _uiPivot_grid2.createPath)(items).length - 1])\r\n })\r\n }\r\n\r\n function formatHeaders(loadOptions, data) {\r\n return (0, _deferred.when)(formatHeaderItems(data, loadOptions, \"columns\"), formatHeaderItems(data, loadOptions, \"rows\"))\r\n }\r\n\r\n function updateCache(headerItems) {\r\n var d = new _deferred.Deferred;\r\n var cacheByPath = {};\r\n (0, _deferred.when)((0, _uiPivot_grid2.foreachTreeAsync)(headerItems, function(items) {\r\n var path = (0, _uiPivot_grid2.createPath)(items).join(\".\");\r\n cacheByPath[path] = items[0]\r\n })).done(d.resolve);\r\n headerItems._cacheByPath = cacheByPath;\r\n return d\r\n }\r\n\r\n function _getAreaFields(fields, area) {\r\n var areaFields = [];\r\n (0, _iterator.each)(fields, function() {\r\n if (isAreaField(this, area)) {\r\n areaFields.push(this)\r\n }\r\n });\r\n return areaFields\r\n }\r\n return {\r\n ctor: function(options) {\r\n options = options || {};\r\n this._eventsStrategy = new _events_strategy.EventsStrategy(this);\r\n var that = this;\r\n var store = createStore(options, function(progress) {\r\n that._eventsStrategy.fireEvent(\"progressChanged\", [progress])\r\n });\r\n that._store = store;\r\n that._paginate = !!options.paginate;\r\n that._pageSize = options.pageSize || 40;\r\n that._data = {\r\n rows: [],\r\n columns: [],\r\n values: []\r\n };\r\n that._loadingCount = 0;\r\n that._isFieldsModified = false;\r\n (0, _iterator.each)([\"changed\", \"loadError\", \"loadingChanged\", \"progressChanged\", \"fieldsPrepared\", \"expandValueChanging\"], function(_, eventName) {\r\n var optionName = \"on\" + eventName[0].toUpperCase() + eventName.slice(1);\r\n if (Object.prototype.hasOwnProperty.call(options, optionName)) {\r\n this.on(eventName, options[optionName])\r\n }\r\n }.bind(this));\r\n that._retrieveFields = (0, _type.isDefined)(options.retrieveFields) ? options.retrieveFields : true;\r\n that._fields = options.fields || [];\r\n that._descriptions = options.descriptions ? (0, _extend.extend)(that._createDescriptions(), options.descriptions) : void 0;\r\n if (!store) {\r\n (0, _extend.extend)(true, that._data, options.store || options)\r\n }\r\n },\r\n getData: function() {\r\n return this._data\r\n },\r\n getAreaFields: function(area, collectGroups) {\r\n var areaFields = [];\r\n var descriptions;\r\n if (collectGroups || \"data\" === area) {\r\n areaFields = _getAreaFields(this._fields, area);\r\n sortFieldsByAreaIndex(areaFields)\r\n } else {\r\n descriptions = this._descriptions || {};\r\n areaFields = descriptions[DESCRIPTION_NAME_BY_AREA[area]] || []\r\n }\r\n return areaFields\r\n },\r\n fields: function(_fields) {\r\n var that = this;\r\n if (_fields) {\r\n that._fields = mergeFields(_fields, that._storeFields, that._retrieveFields);\r\n that._fieldsPrepared(that._fields)\r\n }\r\n return that._fields\r\n },\r\n field: function field(id, options) {\r\n var that = this;\r\n var fields = that._fields;\r\n var field = fields && fields[(0, _type.isNumeric)(id) ? id : (0, _uiPivot_grid2.findField)(fields, id)];\r\n var levels;\r\n if (field && options) {\r\n (0, _iterator.each)(options, function(optionName, optionValue) {\r\n var isInitialization = (0, _array.inArray)(optionName, STATE_PROPERTIES) < 0;\r\n (0, _uiPivot_grid2.setFieldProperty)(field, optionName, optionValue, isInitialization);\r\n if (\"sortOrder\" === optionName) {\r\n levels = field.levels || [];\r\n for (var i = 0; i < levels.length; i++) {\r\n levels[i][optionName] = optionValue\r\n }\r\n }\r\n });\r\n updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES);\r\n that._descriptions = that._createDescriptions(field);\r\n that._isFieldsModified = true;\r\n that._eventsStrategy.fireEvent(\"fieldChanged\", [field])\r\n }\r\n return field\r\n },\r\n getFieldValues: function(index, applyFilters, options) {\r\n var that = this;\r\n var field = this._fields && this._fields[index];\r\n var store = this.store();\r\n var loadFields = [];\r\n var loadOptions = {\r\n columns: loadFields,\r\n rows: [],\r\n values: this.getAreaFields(\"data\"),\r\n filters: applyFilters ? this._fields.filter(function(f) {\r\n return f !== field && f.area && f.filterValues && f.filterValues.length\r\n }) : [],\r\n skipValues: true\r\n };\r\n var searchValue;\r\n var d = new _deferred.Deferred;\r\n if (options) {\r\n searchValue = options.searchValue;\r\n loadOptions.columnSkip = options.skip;\r\n loadOptions.columnTake = options.take\r\n }\r\n if (field && store) {\r\n (0, _iterator.each)(field.levels || [field], function() {\r\n loadFields.push((0, _extend.extend)({}, this, {\r\n expanded: true,\r\n filterValues: null,\r\n sortOrder: \"asc\",\r\n sortBySummaryField: null,\r\n searchValue: searchValue\r\n }))\r\n });\r\n store.load(loadOptions).done(function(data) {\r\n if (loadOptions.columnSkip) {\r\n data.columns = data.columns.slice(loadOptions.columnSkip)\r\n }\r\n if (loadOptions.columnTake) {\r\n data.columns = data.columns.slice(0, loadOptions.columnTake)\r\n }\r\n formatHeaders(loadOptions, data);\r\n if (!loadOptions.columnTake) {\r\n that._sort(loadOptions, data)\r\n }\r\n d.resolve(data.columns)\r\n }).fail(d)\r\n } else {\r\n d.reject()\r\n }\r\n return d\r\n },\r\n reload: function() {\r\n return this.load({\r\n reload: true\r\n })\r\n },\r\n filter: function() {\r\n var store = this._store;\r\n return store.filter.apply(store, arguments)\r\n },\r\n load: function(options) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n options = options || {};\r\n that.beginLoading();\r\n d.fail(function(e) {\r\n that._eventsStrategy.fireEvent(\"loadError\", [e])\r\n }).always(function() {\r\n that.endLoading()\r\n });\r\n\r\n function loadTask() {\r\n that._delayedLoadTask = void 0;\r\n if (!that._descriptions) {\r\n (0, _deferred.when)(getFields(that)).done(function(fields) {\r\n that._fieldsPrepared(fields);\r\n that._loadCore(options, d)\r\n }).fail(d.reject).fail(that._loadErrorHandler)\r\n } else {\r\n that._loadCore(options, d)\r\n }\r\n }\r\n if (that.store()) {\r\n that._delayedLoadTask = (0, _common.executeAsync)(loadTask)\r\n } else {\r\n loadTask()\r\n }\r\n return d\r\n },\r\n createDrillDownDataSource: function(params) {\r\n return this._store.createDrillDownDataSource(this._descriptions, params)\r\n },\r\n _createDescriptions: function(currentField) {\r\n var that = this;\r\n var fields = that.fields();\r\n var descriptions = {\r\n rows: [],\r\n columns: [],\r\n values: [],\r\n filters: []\r\n };\r\n (0, _iterator.each)([\"row\", \"column\", \"data\", \"filter\"], function(_, areaName) {\r\n (0, _array.normalizeIndexes)(_getAreaFields(fields, areaName), \"areaIndex\", currentField)\r\n });\r\n (0, _iterator.each)(fields || [], function(_, field) {\r\n var descriptionName = DESCRIPTION_NAME_BY_AREA[field.area];\r\n var dimension = descriptions[descriptionName];\r\n var groupName = field.groupName;\r\n if (groupName && !(0, _type.isNumeric)(field.groupIndex)) {\r\n field.levels = getFieldsByGroup(fields, field)\r\n }\r\n if (!dimension || groupName && (0, _type.isNumeric)(field.groupIndex) || false === field.visible && \"data\" !== field.area && \"filter\" !== field.area) {\r\n return\r\n }\r\n if (field.levels && dimension !== descriptions.filters && dimension !== descriptions.values) {\r\n dimension.push.apply(dimension, field.levels);\r\n if (field.filterValues && field.filterValues.length) {\r\n descriptions.filters.push(field)\r\n }\r\n } else {\r\n dimension.push(field)\r\n }\r\n });\r\n (0, _iterator.each)(descriptions, function(_, fields) {\r\n sortFieldsByAreaIndex(fields)\r\n });\r\n var indices = {};\r\n (0, _iterator.each)(descriptions.values, function(_, field) {\r\n var expression = field.calculateSummaryValue;\r\n if ((0, _type.isFunction)(expression)) {\r\n var summaryCell = (0, _uiPivot_grid.createMockSummaryCell)(descriptions, fields, indices);\r\n expression(summaryCell)\r\n }\r\n });\r\n return descriptions\r\n },\r\n _fieldsPrepared: function(fields) {\r\n var that = this;\r\n that._fields = fields;\r\n (0, _iterator.each)(fields, function(index, field) {\r\n field.index = index;\r\n updateCalculatedFieldProperties(field, ALL_CALCULATED_PROPERTIES)\r\n });\r\n var currentFieldState = getFieldsState(fields, [\"caption\"]);\r\n that._eventsStrategy.fireEvent(\"fieldsPrepared\", [fields]);\r\n for (var i = 0; i < fields.length; i++) {\r\n if (fields[i].caption !== currentFieldState[i].caption) {\r\n (0, _uiPivot_grid2.setFieldProperty)(fields[i], \"caption\", fields[i].caption, true)\r\n }\r\n }\r\n that._descriptions = that._createDescriptions()\r\n },\r\n isLoading: function() {\r\n return this._loadingCount > 0\r\n },\r\n state: function(_state, skipLoading) {\r\n var that = this;\r\n if (arguments.length) {\r\n _state = (0, _extend.extend)({\r\n rowExpandedPaths: [],\r\n columnExpandedPaths: []\r\n }, _state);\r\n if (!that._descriptions) {\r\n that.beginLoading();\r\n (0, _deferred.when)(getFields(that)).done(function(fields) {\r\n that._fields = setFieldsState(_state.fields, fields);\r\n that._fieldsPrepared(fields);\r\n !skipLoading && that.load(_state)\r\n }).always(function() {\r\n that.endLoading()\r\n })\r\n } else {\r\n that._fields = setFieldsState(_state.fields, that._fields);\r\n that._descriptions = that._createDescriptions();\r\n !skipLoading && that.load(_state)\r\n }\r\n } else {\r\n return {\r\n fields: getFieldsState(that._fields, STATE_PROPERTIES),\r\n columnExpandedPaths: getExpandedPaths(that._data, that._descriptions, \"columns\", that._lastLoadOptions),\r\n rowExpandedPaths: getExpandedPaths(that._data, that._descriptions, \"rows\", that._lastLoadOptions)\r\n }\r\n }\r\n },\r\n beginLoading: function() {\r\n this._changeLoadingCount(1)\r\n },\r\n endLoading: function() {\r\n this._changeLoadingCount(-1)\r\n },\r\n _changeLoadingCount: function(increment) {\r\n var oldLoading = this.isLoading();\r\n this._loadingCount += increment;\r\n var newLoading = this.isLoading();\r\n if (oldLoading ^ newLoading) {\r\n this._eventsStrategy.fireEvent(\"loadingChanged\", [newLoading])\r\n }\r\n },\r\n _hasPagingValues: function(options, area, oppositeIndex) {\r\n var takeField = area + \"Take\";\r\n var skipField = area + \"Skip\";\r\n var values = this._data.values;\r\n var items = this._data[area + \"s\"];\r\n var oppositeArea = \"row\" === area ? \"column\" : \"row\";\r\n var indices = [];\r\n if (options.path && options.area === area) {\r\n var headerItem = findHeaderItem(items, options.path);\r\n items = headerItem && headerItem.children;\r\n if (!items) {\r\n return false\r\n }\r\n }\r\n if (options.oppositePath && options.area === oppositeArea) {\r\n var _headerItem = findHeaderItem(items, options.oppositePath);\r\n items = _headerItem && _headerItem.children;\r\n if (!items) {\r\n return false\r\n }\r\n }\r\n for (var i = options[skipField]; i < options[skipField] + options[takeField]; i++) {\r\n if (items[i]) {\r\n indices.push(items[i].index)\r\n }\r\n }\r\n return indices.every(function(index) {\r\n if (void 0 !== index) {\r\n if (\"row\" === area) {\r\n return (values[index] || [])[oppositeIndex]\r\n } else {\r\n return (values[oppositeIndex] || [])[index]\r\n }\r\n }\r\n })\r\n },\r\n _processPagingCacheByArea: function(options, pageSize, area) {\r\n var takeField = area + \"Take\";\r\n var skipField = area + \"Skip\";\r\n var items = this._data[area + \"s\"];\r\n var oppositeArea = \"row\" === area ? \"column\" : \"row\";\r\n var item;\r\n if (options[takeField]) {\r\n if (options.path && options.area === area) {\r\n var headerItem = findHeaderItem(items, options.path);\r\n items = headerItem && headerItem.children || []\r\n }\r\n if (options.oppositePath && options.area === oppositeArea) {\r\n var _headerItem2 = findHeaderItem(items, options.oppositePath);\r\n items = _headerItem2 && _headerItem2.children || []\r\n }\r\n do {\r\n item = items[options[skipField]];\r\n if (item && void 0 !== item.index) {\r\n if (this._hasPagingValues(options, oppositeArea, item.index)) {\r\n options[skipField]++;\r\n options[takeField]--\r\n } else {\r\n break\r\n }\r\n }\r\n } while (item && void 0 !== item.index && options[takeField]);\r\n if (options[takeField]) {\r\n var start = Math.floor(options[skipField] / pageSize) * pageSize;\r\n var end = Math.ceil((options[skipField] + options[takeField]) / pageSize) * pageSize;\r\n options[skipField] = start;\r\n options[takeField] = end - start\r\n }\r\n }\r\n },\r\n _processPagingCache: function(storeLoadOptions) {\r\n var pageSize = this._pageSize;\r\n if (pageSize < 0) {\r\n return\r\n }\r\n for (var i = 0; i < storeLoadOptions.length; i++) {\r\n this._processPagingCacheByArea(storeLoadOptions[i], pageSize, \"row\");\r\n this._processPagingCacheByArea(storeLoadOptions[i], pageSize, \"column\")\r\n }\r\n },\r\n _loadCore: function(options, deferred) {\r\n var that = this;\r\n var store = this._store;\r\n var descriptions = this._descriptions;\r\n var reload = options.reload || this.paginate() && that._isFieldsModified;\r\n var paginate = this.paginate();\r\n var headerName = DESCRIPTION_NAME_BY_AREA[options.area];\r\n options = options || {};\r\n if (store) {\r\n (0, _extend.extend)(options, descriptions);\r\n options.columnExpandedPaths = options.columnExpandedPaths || getExpandedPaths(this._data, options, \"columns\", that._lastLoadOptions);\r\n options.rowExpandedPaths = options.rowExpandedPaths || getExpandedPaths(this._data, options, \"rows\", that._lastLoadOptions);\r\n if (paginate) {\r\n options.pageSize = this._pageSize\r\n }\r\n if (headerName) {\r\n options.headerName = headerName\r\n }\r\n that.beginLoading();\r\n deferred.always(function() {\r\n that.endLoading()\r\n });\r\n var storeLoadOptions = [options];\r\n that._eventsStrategy.fireEvent(\"customizeStoreLoadOptions\", [storeLoadOptions, reload]);\r\n if (!reload) {\r\n that._processPagingCache(storeLoadOptions)\r\n }\r\n storeLoadOptions = storeLoadOptions.filter(function(options) {\r\n return !(options.rows.length && 0 === options.rowTake) && !(options.columns.length && 0 === options.columnTake)\r\n });\r\n if (!storeLoadOptions.length) {\r\n that._update(deferred);\r\n return\r\n }\r\n var results = storeLoadOptions.map(function(options) {\r\n return store.load(options)\r\n });\r\n _deferred.when.apply(null, results).done(function() {\r\n var results = arguments;\r\n for (var i = 0; i < results.length; i++) {\r\n var _options = storeLoadOptions[i];\r\n var data = results[i];\r\n var isLast = i === results.length - 1;\r\n if (_options.path) {\r\n that.applyPartialDataSource(_options.area, _options.path, data, isLast ? deferred : false, _options.oppositePath)\r\n } else {\r\n if (paginate && !reload && isDataExists(that._data)) {\r\n that.mergePartialDataSource(data, isLast ? deferred : false)\r\n } else {\r\n (0, _extend.extend)(that._data, data);\r\n that._lastLoadOptions = _options;\r\n that._update(isLast ? deferred : false)\r\n }\r\n }\r\n }\r\n }).fail(deferred.reject)\r\n } else {\r\n that._update(deferred)\r\n }\r\n },\r\n _sort: function(descriptions, data, getAscOrder) {\r\n var store = this._store;\r\n if (store && !this._paginate) {\r\n (0, _data_source.sort)(descriptions, data, getAscOrder)\r\n }\r\n },\r\n paginate: function() {\r\n return this._paginate && this._store && this._store.supportPaging()\r\n },\r\n isEmpty: function() {\r\n var dataFields = this.getAreaFields(\"data\").filter(function(f) {\r\n return false !== f.visible\r\n });\r\n var data = this.getData();\r\n return !dataFields.length || !data.values.length\r\n },\r\n _update: function(deferred) {\r\n var that = this;\r\n var descriptions = that._descriptions;\r\n var loadedData = that._data;\r\n var dataFields = descriptions.values;\r\n var expressionsUsed = areExpressionsUsed(dataFields);\r\n (0, _deferred.when)(formatHeaders(descriptions, loadedData), updateCache(loadedData.rows), updateCache(loadedData.columns)).done(function() {\r\n if (expressionsUsed) {\r\n that._sort(descriptions, loadedData, expressionsUsed);\r\n !that.isEmpty() && (0, _uiPivot_grid.applyDisplaySummaryMode)(descriptions, loadedData)\r\n }\r\n that._sort(descriptions, loadedData);\r\n !that.isEmpty() && isRunningTotalUsed(dataFields) && (0, _uiPivot_grid.applyRunningTotal)(descriptions, loadedData);\r\n that._data = loadedData;\r\n false !== deferred && (0, _deferred.when)(deferred).done(function() {\r\n that._isFieldsModified = false;\r\n that._eventsStrategy.fireEvent(\"changed\");\r\n if ((0, _type.isDefined)(that._data.grandTotalRowIndex)) {\r\n loadedData.grandTotalRowIndex = that._data.grandTotalRowIndex\r\n }\r\n if ((0, _type.isDefined)(that._data.grandTotalColumnIndex)) {\r\n loadedData.grandTotalColumnIndex = that._data.grandTotalColumnIndex\r\n }\r\n });\r\n deferred && deferred.resolve(that._data)\r\n });\r\n return deferred\r\n },\r\n store: function() {\r\n return this._store\r\n },\r\n collapseHeaderItem: function(area, path) {\r\n var that = this;\r\n var headerItems = \"column\" === area ? that._data.columns : that._data.rows;\r\n var headerItem = findHeaderItem(headerItems, path);\r\n var field = that.getAreaFields(area)[path.length - 1];\r\n if (headerItem && headerItem.children) {\r\n that._eventsStrategy.fireEvent(\"expandValueChanging\", [{\r\n area: area,\r\n path: path,\r\n expanded: false\r\n }]);\r\n if (field) {\r\n field.expanded = false\r\n }\r\n headerItem.collapsedChildren = headerItem.children;\r\n delete headerItem.children;\r\n that._update();\r\n if (that.paginate()) {\r\n that.load()\r\n }\r\n return true\r\n }\r\n return false\r\n },\r\n collapseAll: function(id) {\r\n var _this = this;\r\n var dataChanged = false;\r\n var field = this.field(id) || {};\r\n var areaOffsets = [(0, _array.inArray)(field, this.getAreaFields(field.area))];\r\n field.expanded = false;\r\n if (field && field.levels) {\r\n areaOffsets = [];\r\n field.levels.forEach(function(f) {\r\n areaOffsets.push((0, _array.inArray)(f, _this.getAreaFields(field.area)));\r\n f.expanded = false\r\n })\r\n }(0, _uiPivot_grid2.foreachTree)(this._data[field.area + \"s\"], function(items) {\r\n var item = items[0];\r\n var path = (0, _uiPivot_grid2.createPath)(items);\r\n if (item && item.children && areaOffsets.indexOf(path.length - 1) !== -1) {\r\n item.collapsedChildren = item.children;\r\n delete item.children;\r\n dataChanged = true\r\n }\r\n }, true);\r\n dataChanged && this._update()\r\n },\r\n expandAll: function(id) {\r\n var field = this.field(id);\r\n if (field && field.area) {\r\n field.expanded = true;\r\n if (field && field.levels) {\r\n field.levels.forEach(function(f) {\r\n f.expanded = true\r\n })\r\n }\r\n this.load()\r\n }\r\n },\r\n expandHeaderItem: function(area, path) {\r\n var that = this;\r\n var headerItems = \"column\" === area ? that._data.columns : that._data.rows;\r\n var headerItem = findHeaderItem(headerItems, path);\r\n if (headerItem && !headerItem.children) {\r\n var hasCache = !!headerItem.collapsedChildren;\r\n var options = {\r\n area: area,\r\n path: path,\r\n expanded: true,\r\n needExpandData: !hasCache\r\n };\r\n that._eventsStrategy.fireEvent(\"expandValueChanging\", [options]);\r\n if (hasCache) {\r\n headerItem.children = headerItem.collapsedChildren;\r\n delete headerItem.collapsedChildren;\r\n that._update()\r\n } else {\r\n if (this.store()) {\r\n that.load(options)\r\n }\r\n }\r\n return hasCache\r\n }\r\n return false\r\n },\r\n mergePartialDataSource: function(dataSource, deferred) {\r\n var that = this;\r\n var loadedData = that._data;\r\n var newRowItemIndexesToCurrent;\r\n var newColumnItemIndexesToCurrent;\r\n if (dataSource && dataSource.values) {\r\n dataSource.rows = dataSource.rows || [];\r\n dataSource.columns = dataSource.columns || [];\r\n newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalColumnIndex);\r\n newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex);\r\n (0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done(function(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {\r\n if (newRowItemIndexesToCurrent.length || newColumnItemIndexesToCurrent.length) {\r\n updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent)\r\n }\r\n that._update(deferred)\r\n })\r\n }\r\n },\r\n applyPartialDataSource: function(area, path, dataSource, deferred, oppositePath) {\r\n var that = this;\r\n var loadedData = that._data;\r\n var headerItems = \"column\" === area ? loadedData.columns : loadedData.rows;\r\n var headerItem;\r\n var oppositeHeaderItems = \"column\" === area ? loadedData.rows : loadedData.columns;\r\n var oppositeHeaderItem;\r\n var newRowItemIndexesToCurrent;\r\n var newColumnItemIndexesToCurrent;\r\n if (dataSource && dataSource.values) {\r\n dataSource.rows = dataSource.rows || [];\r\n dataSource.columns = dataSource.columns || [];\r\n headerItem = findHeaderItem(headerItems, path);\r\n oppositeHeaderItem = oppositePath && findHeaderItem(oppositeHeaderItems, oppositePath);\r\n if (headerItem) {\r\n if (\"column\" === area) {\r\n newColumnItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.columns, loadedData.grandTotalColumnIndex);\r\n if (oppositeHeaderItem) {\r\n newRowItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.rows, loadedData.grandTotalRowIndex)\r\n } else {\r\n newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalRowIndex)\r\n }\r\n } else {\r\n newRowItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.rows, loadedData.grandTotalRowIndex);\r\n if (oppositeHeaderItem) {\r\n newColumnItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.columns, loadedData.grandTotalColumnIndex)\r\n } else {\r\n newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex)\r\n }\r\n }(0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done(function(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {\r\n if (\"row\" === area && newRowItemIndexesToCurrent.length || \"column\" === area && newColumnItemIndexesToCurrent.length) {\r\n updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent)\r\n }\r\n that._update(deferred)\r\n })\r\n }\r\n }\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 dispose: function() {\r\n var that = this;\r\n var delayedLoadTask = that._delayedLoadTask;\r\n this._eventsStrategy.dispose();\r\n if (delayedLoadTask) {\r\n delayedLoadTask.abort()\r\n }\r\n this._isDisposed = true\r\n },\r\n isDisposed: function() {\r\n return !!this._isDisposed\r\n }\r\n }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/notify.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 _action = _interopRequireDefault(require(\"../core/action\"));\r\nvar _view_port = require(\"../core/utils/view_port\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _toast = _interopRequireDefault(require(\"./toast\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar $notify = null;\r\nvar notify = function(message, type, displayTime) {\r\n var options = (0, _type.isPlainObject)(message) ? message : {\r\n message: message\r\n };\r\n var userHiddenAction = options.onHidden;\r\n (0, _extend.extend)(options, {\r\n type: type,\r\n displayTime: displayTime,\r\n onHidden: function(args) {\r\n (0, _renderer.default)(args.element).remove();\r\n new _action.default(userHiddenAction, {\r\n context: args.model\r\n }).execute(arguments)\r\n }\r\n });\r\n $notify = (0, _renderer.default)(\"
\").appendTo((0, _view_port.value)());\r\n new _toast.default($notify, options).show()\r\n};\r\nvar _default = notify;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.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 _number_box = _interopRequireDefault(require(\"./number_box.mask\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}(0, _component_registrator.default)(\"dxNumberBox\", _number_box.default);\r\nvar _default = _number_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.mask.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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _number_box = require(\"./number_box.caret\");\r\nvar _number2 = require(\"../../localization/ldml/number\");\r\nvar _number_box2 = _interopRequireDefault(require(\"./number_box.base\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar NUMBER_FORMATTER_NAMESPACE = \"dxNumberFormatter\";\r\nvar MOVE_FORWARD = 1;\r\nvar MOVE_BACKWARD = -1;\r\nvar MINUS = \"-\";\r\nvar MINUS_KEY = \"minus\";\r\nvar NUMPUD_MINUS_KEY_IE = \"Subtract\";\r\nvar INPUT_EVENT = \"input\";\r\nvar CARET_TIMEOUT_DURATION = _browser.default.msie ? 300 : 0;\r\nvar NumberBoxMask = _number_box2.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n useMaskBehavior: true,\r\n format: null\r\n })\r\n },\r\n _isDeleteKey: function(key) {\r\n return \"del\" === key\r\n },\r\n _supportedKeys: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n var that = this;\r\n return (0, _extend.extend)(this.callBase(), {\r\n minus: that._revertSign.bind(that),\r\n del: that._removeHandler.bind(that),\r\n backspace: that._removeHandler.bind(that),\r\n leftArrow: that._arrowHandler.bind(that, MOVE_BACKWARD),\r\n rightArrow: that._arrowHandler.bind(that, MOVE_FORWARD),\r\n home: that._moveCaretToBoundaryEventHandler.bind(that, MOVE_FORWARD),\r\n enter: that._updateFormattedValue.bind(that),\r\n end: that._moveCaretToBoundaryEventHandler.bind(that, MOVE_BACKWARD)\r\n })\r\n },\r\n _getTextSeparatorIndex: function(text) {\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var realSeparatorOccurrenceIndex = (0, _utils.getRealSeparatorIndex)(this.option(\"format\")).occurrence;\r\n return (0, _utils.getNthOccurrence)(text, decimalSeparator, realSeparatorOccurrenceIndex)\r\n },\r\n _focusInHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n this.clearCaretTimeout();\r\n this._caretTimeout = setTimeout(function() {\r\n this._caretTimeout = void 0;\r\n var caret = this._caret();\r\n if (caret.start === caret.end && this._useMaskBehavior()) {\r\n var text = this._getInputVal();\r\n var decimalSeparatorIndex = this._getTextSeparatorIndex(text);\r\n if (decimalSeparatorIndex >= 0) {\r\n this._caret({\r\n start: decimalSeparatorIndex,\r\n end: decimalSeparatorIndex\r\n })\r\n } else {\r\n this._moveCaretToBoundaryEventHandler(MOVE_BACKWARD, e)\r\n }\r\n }\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n this.callBase(e)\r\n },\r\n _focusOutHandler: function(e) {\r\n var shouldHandleEvent = !this._preventNestedFocusEvent(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = true;\r\n if (this._useMaskBehavior()) {\r\n this._updateFormattedValue()\r\n }\r\n }\r\n this.callBase(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = false\r\n }\r\n },\r\n _hasValueBeenChanged: function(inputValue) {\r\n var format = this._getFormatPattern();\r\n var value = this.option(\"value\");\r\n var formatted = this._format(value, format) || \"\";\r\n return formatted !== inputValue\r\n },\r\n _updateFormattedValue: function() {\r\n var inputValue = this._getInputVal();\r\n if (this._hasValueBeenChanged(inputValue)) {\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this._setTextByParsedValue();\r\n if (this._parsedValue !== this.option(\"value\")) {\r\n _events_engine.default.trigger(this._input(), \"change\")\r\n }\r\n }\r\n },\r\n _arrowHandler: function(step, e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this._getInputVal();\r\n var format = this._getFormatPattern();\r\n var nextCaret = (0, _number_box.getCaretWithOffset)(this._caret(), step);\r\n if (!(0, _number_box.isCaretInBoundaries)(nextCaret, text, format)) {\r\n nextCaret = step === MOVE_FORWARD ? nextCaret.end : nextCaret.start;\r\n e.preventDefault();\r\n this._caret((0, _number_box.getCaretInBoundaries)(nextCaret, text, format))\r\n }\r\n },\r\n _moveCaretToBoundary: function(direction) {\r\n var boundaries = (0, _number_box.getCaretBoundaries)(this._getInputVal(), this._getFormatPattern());\r\n var newCaret = (0, _number_box.getCaretWithOffset)(direction === MOVE_FORWARD ? boundaries.start : boundaries.end, 0);\r\n this._caret(newCaret)\r\n },\r\n _moveCaretToBoundaryEventHandler: function(direction, e) {\r\n if (!this._useMaskBehavior() || e && e.shiftKey) {\r\n return\r\n }\r\n this._moveCaretToBoundary(direction);\r\n e && e.preventDefault()\r\n },\r\n _shouldMoveCaret: function(text, caret) {\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator;\r\n var moveToFloat = (this._lastKey === decimalSeparator || \".\" === this._lastKey) && isDecimalSeparatorNext;\r\n return moveToFloat\r\n },\r\n _getInputVal: function() {\r\n return _number.default.convertDigits(this._input().val(), true)\r\n },\r\n _keyboardHandler: function(e) {\r\n this.clearCaretTimeout();\r\n this._lastKey = _number.default.convertDigits((0, _index.getChar)(e), true);\r\n this._lastKeyName = (0, _index.normalizeKeyName)(e);\r\n if (!this._shouldHandleKey(e.originalEvent)) {\r\n return this.callBase(e)\r\n }\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var enteredChar = this._lastKeyName === MINUS_KEY ? \"\" : this._lastKey;\r\n var newValue = this._tryParse(normalizedText, caret, enteredChar);\r\n if (this._shouldMoveCaret(normalizedText, caret)) {\r\n this._moveCaret(1);\r\n e.originalEvent.preventDefault()\r\n }\r\n if (void 0 === newValue) {\r\n if (this._lastKeyName !== MINUS_KEY) {\r\n e.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._parsedValue = newValue\r\n }\r\n return this.callBase(e)\r\n },\r\n _keyPressHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n this.callBase(e)\r\n }\r\n },\r\n _removeHandler: function(e) {\r\n var caret = this._caret();\r\n var text = this._getInputVal();\r\n var start = caret.start;\r\n var end = caret.end;\r\n this._lastKey = (0, _index.getChar)(e);\r\n this._lastKeyName = (0, _index.normalizeKeyName)(e);\r\n var isDeleteKey = this._isDeleteKey(this._lastKeyName);\r\n var isBackspaceKey = !isDeleteKey;\r\n if (start === end) {\r\n var caretPosition = start;\r\n var canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length;\r\n if (canDelete) {\r\n isDeleteKey && end++;\r\n isBackspaceKey && start--\r\n } else {\r\n e.preventDefault();\r\n return\r\n }\r\n }\r\n var char = text.slice(start, end);\r\n if (this._isStub(char)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n if (this._parsedValue < 0 || 1 / this._parsedValue === -(1 / 0)) {\r\n this._revertSign(e);\r\n this._setTextByParsedValue()\r\n }\r\n e.preventDefault();\r\n return\r\n }\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n if (char === decimalSeparator) {\r\n var decimalSeparatorIndex = text.indexOf(decimalSeparator);\r\n if (this._isNonStubAfter(decimalSeparatorIndex + 1)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n e.preventDefault()\r\n }\r\n return\r\n }\r\n if (end - start < text.length) {\r\n var editedText = this._replaceSelectedText(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n var noDigits = editedText.search(/[0-9]/) < 0;\r\n if (noDigits && this._isValueInRange(0)) {\r\n this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -(1 / 0) ? -0 : 0;\r\n return\r\n }\r\n }\r\n var valueAfterRemoving = this._tryParse(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n if (void 0 === valueAfterRemoving) {\r\n e.preventDefault()\r\n } else {\r\n this._parsedValue = valueAfterRemoving\r\n }\r\n },\r\n _isPercentFormat: function() {\r\n var format = this._getFormatPattern();\r\n var noEscapedFormat = format.replace(/'[^']+'/g, \"\");\r\n return noEscapedFormat.indexOf(\"%\") !== -1\r\n },\r\n _parse: function(text, format) {\r\n var formatOption = this.option(\"format\");\r\n var isCustomParser = (0, _type.isFunction)(formatOption.parser);\r\n var parser = isCustomParser ? formatOption.parser : _number.default.parse;\r\n var integerPartStartIndex = 0;\r\n if (!isCustomParser) {\r\n var formatPointIndex = (0, _utils.getRealSeparatorIndex)(format).index;\r\n var textPointIndex = this._getTextSeparatorIndex(text);\r\n var formatIntegerPartLength = formatPointIndex !== -1 ? formatPointIndex : format.length;\r\n var textIntegerPartLength = textPointIndex !== -1 ? textPointIndex : text.length;\r\n if (textIntegerPartLength > formatIntegerPartLength && format.indexOf(\"#\") === -1) {\r\n integerPartStartIndex = textIntegerPartLength - formatIntegerPartLength\r\n }\r\n }\r\n text = this._removeStubs(text, true);\r\n text = text.substr(integerPartStartIndex);\r\n return parser(text, format)\r\n },\r\n _format: function(value, format) {\r\n var formatOption = this.option(\"format\");\r\n var customFormatter = (null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter) || formatOption;\r\n var formatter = (0, _type.isFunction)(customFormatter) ? customFormatter : _number.default.format;\r\n var formattedValue = null === value ? \"\" : formatter(value, format);\r\n return formattedValue\r\n },\r\n _getFormatPattern: function() {\r\n if (!this._currentFormat) {\r\n this._updateFormat()\r\n }\r\n return this._currentFormat\r\n },\r\n _updateFormat: function() {\r\n var _this = this;\r\n var format = this.option(\"format\");\r\n var isCustomParser = (0, _type.isFunction)(null === format || void 0 === format ? void 0 : format.parser);\r\n var isLDMLPattern = (0, _type.isString)(format) && (format.indexOf(\"0\") >= 0 || format.indexOf(\"#\") >= 0);\r\n this._currentFormat = isCustomParser || isLDMLPattern ? format : (0, _number2.getFormat)(function(value) {\r\n var text = _this._format(value, format);\r\n return _number.default.convertDigits(text, true)\r\n })\r\n },\r\n _getFormatForSign: function(text) {\r\n var format = this._getFormatPattern();\r\n if ((0, _type.isString)(format)) {\r\n var signParts = format.split(\";\");\r\n var sign = _number.default.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n return sign < 0 ? signParts[1] : signParts[0]\r\n } else {\r\n var _sign = _number.default.getSign(text);\r\n return _sign < 0 ? \"-\" : \"\"\r\n }\r\n },\r\n _removeStubs: function(text, excludeComma) {\r\n var format = this._getFormatForSign(text);\r\n var thousandsSeparator = _number.default.getThousandsSeparator();\r\n var stubs = this._getStubs(format);\r\n var result = text;\r\n if (stubs.length) {\r\n var prefixStubs = stubs[0];\r\n var postfixRegex = new RegExp(\"(\" + (0, _common.escapeRegExp)(stubs[1] || \"\") + \")$\", \"g\");\r\n var decoratorsRegex = new RegExp(\"[-\" + (0, _common.escapeRegExp)(excludeComma ? \"\" : thousandsSeparator) + \"]\", \"g\");\r\n result = result.replace(prefixStubs, \"\").replace(postfixRegex, \"\").replace(decoratorsRegex, \"\")\r\n }\r\n return result\r\n },\r\n _getStubs: function(format) {\r\n var regExpResult = /[^']([#0.,]+)/g.exec(format);\r\n var pattern = regExpResult && regExpResult[0].trim();\r\n return format.split(pattern).map(function(stub) {\r\n return stub.replace(/'/g, \"\")\r\n })\r\n },\r\n _truncateToPrecision: function(value, maxPrecision) {\r\n if ((0, _type.isDefined)(value)) {\r\n var strValue = value.toString();\r\n var decimalSeparatorIndex = strValue.indexOf(\".\");\r\n if (strValue && decimalSeparatorIndex > -1) {\r\n var parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1));\r\n return isNaN(parsedValue) ? value : parsedValue\r\n }\r\n }\r\n return value\r\n },\r\n _tryParse: function(text, selection, char) {\r\n var editedText = this._replaceSelectedText(text, selection, char);\r\n var format = this._getFormatPattern();\r\n var isTextSelected = selection.start !== selection.end;\r\n var parsedValue = this._getParsedValue(editedText, format);\r\n var maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max;\r\n var isValueChanged = parsedValue !== this._parsedValue;\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision;\r\n var isUselessCharRestricted = !isTextSelected && !isValueChanged && char !== MINUS && !this._isValueIncomplete(editedText) && this._isStub(char);\r\n if (isDecimalPointRestricted || isUselessCharRestricted) {\r\n return\r\n }\r\n if (\"\" === this._removeStubs(editedText)) {\r\n parsedValue = Math.abs(0 * this._parsedValue)\r\n }\r\n if (isNaN(parsedValue)) {\r\n return\r\n }\r\n var value = null === parsedValue ? this._parsedValue : parsedValue;\r\n parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue;\r\n return !format.parser && this._isPercentFormat() ? (0, _utils.adjustPercentValue)(parsedValue, maxPrecision) : parsedValue\r\n },\r\n _getParsedValue: function(text, format) {\r\n var sign = _number.default.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format);\r\n var parsedValue = this._parse(text, format);\r\n var parsedValueSign = parsedValue < 0 ? -1 : 1;\r\n var parsedValueWithSign = (0, _type.isNumeric)(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue;\r\n return parsedValueWithSign\r\n },\r\n _isValueIncomplete: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n var caret = this._caret();\r\n var point = _number.default.getDecimalSeparator();\r\n var pointIndex = this._getTextSeparatorIndex(text);\r\n var isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start;\r\n var textParts = this._removeStubs(text, true).split(point);\r\n if (!isCaretOnFloat || 2 !== textParts.length) {\r\n return false\r\n }\r\n var floatLength = textParts[1].length;\r\n var format = this._getFormatPattern();\r\n var isCustomParser = !!format.parser;\r\n var precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern(), text);\r\n var isPrecisionInRange = isCustomParser ? true : (0, _math.inRange)(floatLength, precision.min, precision.max);\r\n var endsWithZero = \"0\" === textParts[1].charAt(floatLength - 1);\r\n return isPrecisionInRange && (endsWithZero || !floatLength)\r\n },\r\n _isValueInRange: function(value) {\r\n var min = (0, _common.ensureDefined)(this.option(\"min\"), -(1 / 0));\r\n var max = (0, _common.ensureDefined)(this.option(\"max\"), 1 / 0);\r\n return (0, _math.inRange)(value, min, max)\r\n },\r\n _setInputText: function(text) {\r\n var normalizedText = _number.default.convertDigits(text, true);\r\n var newCaret = (0, _number_box.getCaretAfterFormat)(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern());\r\n this._input().val(text);\r\n this._toggleEmptinessEventHandler();\r\n this._formattedValue = text;\r\n if (!this._focusOutOccurs) {\r\n this._caret(newCaret)\r\n }\r\n },\r\n _useMaskBehavior: function() {\r\n return !!this.option(\"format\") && this.option(\"useMaskBehavior\")\r\n },\r\n _renderInputType: function() {\r\n var isNumberType = \"number\" === this.option(\"mode\");\r\n var isDesktop = \"desktop\" === _devices.default.real().deviceType;\r\n if (this._useMaskBehavior() && isNumberType) {\r\n this._setInputType(isDesktop || this._isSupportInputMode() ? \"text\" : \"tel\")\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _isChar: function(str) {\r\n return (0, _type.isString)(str) && 1 === str.length\r\n },\r\n _moveCaret: function(offset) {\r\n if (!offset) {\r\n return\r\n }\r\n var newCaret = (0, _number_box.getCaretWithOffset)(this._caret(), offset);\r\n var adjustedCaret = (0, _number_box.getCaretInBoundaries)(newCaret, this._getInputVal(), this._getFormatPattern());\r\n this._caret(adjustedCaret)\r\n },\r\n _shouldHandleKey: function(e) {\r\n var keyName = (0, _index.normalizeKeyName)(e);\r\n var isSpecialChar = (0, _index.isCommandKeyPressed)(e) || e.altKey || e.shiftKey || !this._isChar(keyName);\r\n var isMinusKey = keyName === MINUS_KEY;\r\n var useMaskBehavior = this._useMaskBehavior();\r\n return useMaskBehavior && !isSpecialChar && !isMinusKey\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderFormatter()\r\n },\r\n _renderFormatter: function() {\r\n this._clearCache();\r\n this._detachFormatterEvents();\r\n if (this._useMaskBehavior()) {\r\n this._attachFormatterEvents()\r\n }\r\n },\r\n _detachFormatterEvents: function() {\r\n _events_engine.default.off(this._input(), \".\" + NUMBER_FORMATTER_NAMESPACE)\r\n },\r\n _isInputFromPaste: function(e) {\r\n var inputType = e.originalEvent && e.originalEvent.inputType;\r\n if ((0, _type.isDefined)(inputType)) {\r\n return \"insertFromPaste\" === inputType\r\n } else {\r\n return this._isValuePasted\r\n }\r\n },\r\n _attachFormatterEvents: function() {\r\n var $input = this._input();\r\n _events_engine.default.on($input, (0, _index.addNamespace)(INPUT_EVENT, NUMBER_FORMATTER_NAMESPACE), function(e) {\r\n this._formatValue(e);\r\n this._isValuePasted = false\r\n }.bind(this));\r\n if (_browser.default.msie && _browser.default.version < 12) {\r\n _events_engine.default.on($input, (0, _index.addNamespace)(\"paste\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n this._isValuePasted = true\r\n }.bind(this))\r\n }\r\n _events_engine.default.on($input, (0, _index.addNamespace)(\"dxclick\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n if (!this._caretTimeout) {\r\n this._caretTimeout = setTimeout(function() {\r\n this._caretTimeout = void 0;\r\n this._caret((0, _number_box.getCaretInBoundaries)(this._caret(), this._getInputVal(), this._getFormatPattern()))\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n }.bind(this));\r\n _events_engine.default.on($input, \"dxdblclick\", function() {\r\n this.clearCaretTimeout()\r\n }.bind(this))\r\n },\r\n clearCaretTimeout: function() {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = void 0\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n },\r\n _isNonStubAfter: function(index) {\r\n var text = this._getInputVal().slice(index);\r\n return text && !this._isStub(text, true)\r\n },\r\n _isStub: function(str, isString) {\r\n var escapedDecimalSeparator = (0, _common.escapeRegExp)(_number.default.getDecimalSeparator());\r\n var regExpString = \"^[^0-9\" + escapedDecimalSeparator + \"]+$\";\r\n var stubRegExp = new RegExp(regExpString, \"g\");\r\n return stubRegExp.test(str) && (isString || this._isChar(str))\r\n },\r\n _parseValue: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n return this._parsedValue\r\n },\r\n _getPrecisionLimits: function(text) {\r\n var currentFormat = this._getFormatForSign(text);\r\n var realSeparatorIndex = (0, _utils.getRealSeparatorIndex)(currentFormat).index;\r\n var floatPart = ((0, _utils.splitByIndex)(currentFormat, realSeparatorIndex)[1] || \"\").replace(/[^#0]/g, \"\");\r\n var minPrecision = floatPart.replace(/^(0*)#*/, \"$1\").length;\r\n var maxPrecision = floatPart.length;\r\n return {\r\n min: minPrecision,\r\n max: maxPrecision\r\n }\r\n },\r\n _revertSign: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var caret = this._caret();\r\n if (caret.start !== caret.end) {\r\n if ((0, _index.normalizeKeyName)(e) === MINUS_KEY) {\r\n this._applyRevertedSign(e, caret, true);\r\n return\r\n } else {\r\n this._caret((0, _number_box.getCaretInBoundaries)(0, this._getInputVal(), this._getFormatPattern()))\r\n }\r\n }\r\n this._applyRevertedSign(e, caret)\r\n },\r\n _applyRevertedSign: function(e, caret, preserveSelectedText) {\r\n var newValue = -1 * (0, _common.ensureDefined)(this._parsedValue, null);\r\n if (this._isValueInRange(newValue)) {\r\n this._parsedValue = newValue;\r\n if (preserveSelectedText) {\r\n var format = this._getFormatPattern();\r\n var previousText = this._getInputVal();\r\n this._setTextByParsedValue();\r\n e.preventDefault();\r\n var currentText = this._getInputVal();\r\n var offset = (0, _number_box.getCaretOffset)(previousText, currentText, format);\r\n caret = (0, _number_box.getCaretWithOffset)(caret, offset);\r\n var caretInBoundaries = (0, _number_box.getCaretInBoundaries)(caret, currentText, format);\r\n if (_browser.default.msie) {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = setTimeout(this._caret.bind(this, caretInBoundaries))\r\n } else {\r\n this._caret(caretInBoundaries)\r\n }\r\n }\r\n if (e.key === NUMPUD_MINUS_KEY_IE) {\r\n _events_engine.default.trigger(this._input(), INPUT_EVENT)\r\n }\r\n }\r\n },\r\n _removeMinusFromText: function(text, caret) {\r\n var isMinusPressed = this._lastKeyName === MINUS_KEY && text.charAt(caret.start - 1) === MINUS;\r\n return isMinusPressed ? this._replaceSelectedText(text, {\r\n start: caret.start - 1,\r\n end: caret.start\r\n }, \"\") : text\r\n },\r\n _setTextByParsedValue: function() {\r\n var format = this._getFormatPattern();\r\n var parsed = this._parseValue();\r\n var formatted = this._format(parsed, format) || \"\";\r\n this._setInputText(formatted)\r\n },\r\n _formatValue: function(e) {\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var textWithoutMinus = this._removeMinusFromText(normalizedText, caret);\r\n var wasMinusRemoved = textWithoutMinus !== normalizedText;\r\n normalizedText = textWithoutMinus;\r\n if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) {\r\n this._formattedValue = normalizedText;\r\n if (wasMinusRemoved) {\r\n this._setTextByParsedValue()\r\n }\r\n return\r\n }\r\n var textWasChanged = _number.default.convertDigits(this._formattedValue, true) !== normalizedText;\r\n if (textWasChanged) {\r\n var value = this._tryParse(normalizedText, caret, \"\");\r\n if ((0, _type.isDefined)(value)) {\r\n this._parsedValue = value\r\n }\r\n }\r\n this._setTextByParsedValue()\r\n },\r\n _renderDisplayText: function() {\r\n if (this._useMaskBehavior()) {\r\n this._toggleEmptinessEventHandler()\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this._useMaskBehavior()) {\r\n this._parsedValue = this.option(\"value\");\r\n this._setTextByParsedValue()\r\n }\r\n return this.callBase()\r\n },\r\n _updateParsedValue: function() {\r\n var inputValue = this._getInputVal();\r\n this._parsedValue = this._tryParse(inputValue, this._caret())\r\n },\r\n _adjustParsedValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var clearedText = this._removeStubs(this._getInputVal());\r\n var parsedValue = clearedText ? this._parseValue() : null;\r\n if (!(0, _type.isNumeric)(parsedValue)) {\r\n this._parsedValue = parsedValue;\r\n return\r\n }\r\n this._parsedValue = (0, _math.fitIntoRange)(parsedValue, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(e)\r\n }\r\n var caret = this._caret();\r\n this._saveValueChangeEvent(e);\r\n this._lastKey = null;\r\n this._lastKeyName = null;\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this.option(\"value\", this._parsedValue);\r\n if (caret) {\r\n this._caret(caret)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"format\":\r\n case \"useMaskBehavior\":\r\n this._renderInputType();\r\n this._updateFormat();\r\n this._renderFormatter();\r\n this._renderValue();\r\n this._refreshValueChangeEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._adjustParsedValue();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearCache: function() {\r\n delete this._formattedValue;\r\n delete this._lastKey;\r\n delete this._lastKeyName;\r\n delete this._parsedValue;\r\n delete this._focusOutOccurs;\r\n clearTimeout(this._caretTimeout);\r\n delete this._caretTimeout\r\n },\r\n _clean: function() {\r\n this._clearCache();\r\n this.callBase()\r\n }\r\n});\r\nvar _default = NumberBoxMask;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.caret.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.getCaretBoundaries = exports.getCaretAfterFormat = void 0;\r\nexports.getCaretInBoundaries = getCaretInBoundaries;\r\nexports.isCaretInBoundaries = exports.getCaretWithOffset = exports.getCaretOffset = void 0;\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _utils = require(\"./utils\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getCaretBoundaries = function(text, format) {\r\n if (\"string\" === typeof format) {\r\n var signParts = format.split(\";\");\r\n var sign = _number.default.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n format = signParts[sign < 0 ? 1 : 0];\r\n var mockEscapedStubs = function(str) {\r\n return str.replace(/'([^']*)'/g, function(str) {\r\n return str.split(\"\").map(function() {\r\n return \" \"\r\n }).join(\"\").substr(2)\r\n })\r\n };\r\n format = mockEscapedStubs(format);\r\n var prefixStubLength = /^[^#0.,]*/.exec(format)[0].length;\r\n var postfixStubLength = /[^#0.,]*$/.exec(format)[0].length;\r\n return {\r\n start: prefixStubLength,\r\n end: text.length - postfixStubLength\r\n }\r\n } else {\r\n return {\r\n start: 0,\r\n end: text.length\r\n }\r\n }\r\n};\r\nexports.getCaretBoundaries = getCaretBoundaries;\r\nvar _getDigitCountBeforeIndex = function(index, text) {\r\n var decimalSeparator = _number.default.getDecimalSeparator();\r\n var regExp = new RegExp(\"[^0-9\" + (0, _common.escapeRegExp)(decimalSeparator) + \"]\", \"g\");\r\n var textBeforePosition = text.slice(0, index);\r\n return textBeforePosition.replace(regExp, \"\").length\r\n};\r\nvar _reverseText = function(text) {\r\n return text.split(\"\").reverse().join(\"\")\r\n};\r\nvar _getDigitPositionByIndex = function(digitIndex, text) {\r\n if (!digitIndex) {\r\n return -1\r\n }\r\n var regExp = /[0-9]/g;\r\n var counter = 1;\r\n var index = null;\r\n var result = regExp.exec(text);\r\n while (result) {\r\n index = result.index;\r\n if (!digitIndex || counter >= digitIndex) {\r\n return index\r\n }\r\n counter++;\r\n result = regExp.exec(text)\r\n }\r\n return null === index ? text.length : index\r\n};\r\nvar _trimNonNumericCharsFromEnd = function(text) {\r\n return text.replace(/[^0-9e]+$/, \"\")\r\n};\r\nvar getCaretWithOffset = function(caret, offset) {\r\n if (void 0 === caret.start) {\r\n caret = {\r\n start: caret,\r\n end: caret\r\n }\r\n }\r\n return {\r\n start: caret.start + offset,\r\n end: caret.end + offset\r\n }\r\n};\r\nexports.getCaretWithOffset = getCaretWithOffset;\r\nvar getCaretAfterFormat = function(text, formatted, caret, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var point = _number.default.getDecimalSeparator();\r\n var isSeparatorBasedText = isSeparatorBasedString(text);\r\n var realSeparatorOccurrenceIndex = (0, _utils.getRealSeparatorIndex)(format).occurrence;\r\n var pointPosition = isSeparatorBasedText ? 0 : (0, _utils.getNthOccurrence)(text, point, realSeparatorOccurrenceIndex);\r\n var newPointPosition = (0, _utils.getNthOccurrence)(formatted, point, realSeparatorOccurrenceIndex);\r\n var textParts = (0, _utils.splitByIndex)(text, pointPosition);\r\n var formattedParts = (0, _utils.splitByIndex)(formatted, newPointPosition);\r\n var isCaretOnFloat = pointPosition !== -1 && caret.start > pointPosition;\r\n if (isCaretOnFloat) {\r\n var relativeIndex = caret.start - pointPosition - 1;\r\n var digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]);\r\n var newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length;\r\n return getCaretInBoundaries(newPosition, formatted, format)\r\n } else {\r\n var formattedIntPart = _trimNonNumericCharsFromEnd(formattedParts[0]);\r\n var positionFromEnd = textParts[0].length - caret.start;\r\n var digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0]));\r\n var newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart));\r\n var newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1);\r\n return getCaretInBoundaries(newPositionFromBegin, formatted, format)\r\n }\r\n};\r\nexports.getCaretAfterFormat = getCaretAfterFormat;\r\n\r\nfunction isSeparatorBasedString(text) {\r\n return 1 === text.length && !!text.match(/^[,.][0-9]*$/g)\r\n}\r\nvar isCaretInBoundaries = function(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretInBoundaries(caret, text, format);\r\n return caret.start >= boundaries.start && caret.end <= boundaries.end\r\n};\r\nexports.isCaretInBoundaries = isCaretInBoundaries;\r\n\r\nfunction getCaretInBoundaries(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretBoundaries(text, format);\r\n var adjustedCaret = {\r\n start: (0, _math.fitIntoRange)(caret.start, boundaries.start, boundaries.end),\r\n end: (0, _math.fitIntoRange)(caret.end, boundaries.start, boundaries.end)\r\n };\r\n return adjustedCaret\r\n}\r\nvar getCaretOffset = function(previousText, newText, format) {\r\n var previousBoundaries = getCaretBoundaries(previousText, format);\r\n var newBoundaries = getCaretBoundaries(newText, format);\r\n return newBoundaries.start - previousBoundaries.start\r\n};\r\nexports.getCaretOffset = getCaretOffset;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.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 _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _devices = _interopRequireDefault(require(\"../../core/devices\"));\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _ui = _interopRequireDefault(require(\"../text_box/ui.text_editor\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.spins\"));\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar math = Math;\r\nvar WIDGET_CLASS = \"dx-numberbox\";\r\nvar FIREFOX_CONTROL_KEYS = [\"tab\", \"del\", \"backspace\", \"leftArrow\", \"rightArrow\", \"home\", \"end\", \"enter\"];\r\nvar FORCE_VALUECHANGE_EVENT_NAMESPACE = \"NumberBoxForceValueChange\";\r\nvar NumberBoxBase = _ui.default.inherit({\r\n _supportedKeys: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n upArrow: function(e) {\r\n if (!(0, _index.isCommandKeyPressed)(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinUpChangeHandler(e)\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (!(0, _index.isCommandKeyPressed)(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinDownChangeHandler(e)\r\n }\r\n },\r\n enter: function() {}\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n value: 0,\r\n min: void 0,\r\n max: void 0,\r\n step: 1,\r\n showSpinButtons: false,\r\n useLargeSpinButtons: true,\r\n mode: \"text\",\r\n invalidValueMessage: _message.default.format(\"dxNumberBox-invalidValueMessage\"),\r\n buttons: void 0\r\n })\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"spins\",\r\n Ctor: _number_box.default\r\n }])\r\n },\r\n _isSupportInputMode: function() {\r\n var version = parseFloat(_browser.default.version);\r\n return _browser.default.chrome && version >= 66 || _browser.default.safari && version >= 12 || _browser.default.msie && version >= 75\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return _devices.default.real().generic && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n useLargeSpinButtons: false\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" !== _devices.default.real().deviceType && !this._isSupportInputMode()\r\n }.bind(this),\r\n options: {\r\n mode: \"number\"\r\n }\r\n }])\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.$element().addClass(WIDGET_CLASS);\r\n this.callBase()\r\n },\r\n _getDefaultAttributes: function() {\r\n var attributes = this.callBase();\r\n attributes.inputmode = \"decimal\";\r\n return attributes\r\n },\r\n _renderContentImpl: function() {\r\n this.option(\"isValid\") && this._validateValue(this.option(\"value\"));\r\n this.setAria(\"role\", \"spinbutton\")\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = (0, _renderer.default)(\"\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue(this.option(\"value\"))\r\n },\r\n _setSubmitValue: function(value) {\r\n this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value))\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _keyPressHandler: function(e) {\r\n this.callBase(e);\r\n var char = (0, _index.getChar)(e);\r\n var validCharRegExp = /[\\d.,eE\\-+]|Subtract/;\r\n var isInputCharValid = validCharRegExp.test(char);\r\n if (!isInputCharValid) {\r\n var keyName = (0, _index.normalizeKeyName)(e);\r\n if ((0, _index.isCommandKeyPressed)(e) || keyName && (0, _array.inArray)(keyName, FIREFOX_CONTROL_KEYS) >= 0) {\r\n return\r\n }\r\n e.preventDefault();\r\n return false\r\n }\r\n this._keyPressed = true\r\n },\r\n _onMouseWheel: function(dxEvent) {\r\n dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent)\r\n },\r\n _renderValue: function() {\r\n var inputValue = this._input().val();\r\n var value = this.option(\"value\");\r\n if (!inputValue.length || Number(inputValue) !== value) {\r\n this._forceValueRender();\r\n this._toggleEmptinessEventHandler()\r\n }\r\n var valueText = (0, _type.isDefined)(value) ? null : _message.default.format(\"dxNumberBox-noDataText\");\r\n this.setAria({\r\n valuenow: (0, _common.ensureDefined)(value, \"\"),\r\n valuetext: valueText\r\n });\r\n this.option(\"text\", this._input().val());\r\n this._updateButtons();\r\n return (new _deferred.Deferred).resolve()\r\n },\r\n _forceValueRender: function() {\r\n var value = this.option(\"value\");\r\n var number = Number(value);\r\n var formattedValue = isNaN(number) ? \"\" : this._applyDisplayValueFormatter(value);\r\n this._renderDisplayText(formattedValue)\r\n },\r\n _applyDisplayValueFormatter: function(value) {\r\n return this.option(\"displayValueFormatter\")(value)\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._input().prop({\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n step: this.option(\"step\")\r\n });\r\n this.setAria({\r\n valuemin: (0, _common.ensureDefined)(this.option(\"min\"), \"\"),\r\n valuemax: (0, _common.ensureDefined)(this.option(\"max\"), \"\")\r\n })\r\n },\r\n _spinButtonsPointerDownHandler: function() {\r\n var $input = this._input();\r\n if (!this.option(\"useLargeSpinButtons\") && _dom_adapter.default.getActiveElement() !== $input[0]) {\r\n _events_engine.default.trigger($input, \"focus\")\r\n }\r\n },\r\n _spinUpChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(1, e.event || e)\r\n }\r\n },\r\n _spinDownChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(-1, e.event || e)\r\n }\r\n },\r\n _spinValueChange: function(sign, dxEvent) {\r\n var step = parseFloat(this.option(\"step\"));\r\n if (0 === step) {\r\n return\r\n }\r\n var value = parseFloat(this._normalizeInputValue()) || 0;\r\n value = this._correctRounding(value, step * sign);\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if ((0, _type.isDefined)(min)) {\r\n value = Math.max(min, value)\r\n }\r\n if ((0, _type.isDefined)(max)) {\r\n value = Math.min(max, value)\r\n }\r\n this._saveValueChangeEvent(dxEvent);\r\n this.option(\"value\", value)\r\n },\r\n _correctRounding: function(value, step) {\r\n var regex = /[,.](.*)/;\r\n var isFloatValue = regex.test(value);\r\n var isFloatStep = regex.test(step);\r\n if (isFloatValue || isFloatStep) {\r\n var valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0;\r\n var stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0;\r\n var accuracy = math.max(valueAccuracy, stepAccuracy);\r\n value = this._round(value + step, accuracy);\r\n return value\r\n }\r\n return value + step\r\n },\r\n _round: function(value, precision) {\r\n precision = precision || 0;\r\n var multiplier = Math.pow(10, precision);\r\n value *= multiplier;\r\n value = Math.round(value) / multiplier;\r\n return value\r\n },\r\n _renderValueChangeEvent: function() {\r\n this.callBase();\r\n var forceValueChangeEvent = (0, _index.addNamespace)(\"focusout\", FORCE_VALUECHANGE_EVENT_NAMESPACE);\r\n _events_engine.default.off(this.element(), forceValueChangeEvent);\r\n _events_engine.default.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this))\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (\"number\" === this.option(\"mode\")) {\r\n return\r\n }\r\n var $input = this._input();\r\n var formattedValue = this._applyDisplayValueFormatter(this.option(\"value\"));\r\n $input.val(null);\r\n $input.val(formattedValue)\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var $input = this._input();\r\n var inputValue = this._normalizeText();\r\n var value = this._parseValue(inputValue);\r\n var valueHasDigits = \".\" !== inputValue && \"-\" !== inputValue;\r\n if (this._isValueValid() && !this._validateValue(value)) {\r\n $input.val(this._applyDisplayValueFormatter(value));\r\n return\r\n }\r\n if (valueHasDigits) {\r\n this.callBase(e, isNaN(value) ? null : value)\r\n }\r\n this._applyValueBoundaries(inputValue, value);\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n })\r\n },\r\n _applyValueBoundaries: function(inputValue, parsedValue) {\r\n var isValueIncomplete = this._isValueIncomplete(inputValue);\r\n var isValueCorrect = this._isValueInRange(inputValue);\r\n if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) {\r\n if (Number(inputValue) !== parsedValue) {\r\n this._input().val(this._applyDisplayValueFormatter(parsedValue))\r\n }\r\n }\r\n },\r\n _replaceCommaWithPoint: function(value) {\r\n return value.replace(\",\", \".\")\r\n },\r\n _inputIsInvalid: function() {\r\n var isNumberMode = \"number\" === this.option(\"mode\");\r\n var validityState = this._input().get(0).validity;\r\n return isNumberMode && validityState && validityState.badInput\r\n },\r\n _renderDisplayText: function(text) {\r\n if (this._inputIsInvalid()) {\r\n return\r\n }\r\n this.callBase(text)\r\n },\r\n _isValueIncomplete: function(value) {\r\n var incompleteRegex = /(^-$)|(^-?\\d*\\.$)|(\\d+e-?$)/i;\r\n return incompleteRegex.test(value)\r\n },\r\n _isValueInRange: function(value) {\r\n return (0, _math.inRange)(value, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _isNumber: function(value) {\r\n return null !== this._parseValue(value)\r\n },\r\n _validateValue: function(value) {\r\n var inputValue = this._normalizeText();\r\n var isValueValid = this._isValueValid();\r\n var isValid = true;\r\n var isNumber = this._isNumber(inputValue);\r\n if (isNaN(Number(value))) {\r\n isValid = false\r\n }\r\n if (!value && isValueValid) {\r\n isValid = true\r\n } else {\r\n if (!isNumber && !isValueValid) {\r\n isValid = false\r\n }\r\n }\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: this.option(\"invalidValueMessage\")\r\n }\r\n });\r\n return isValid\r\n },\r\n _normalizeInputValue: function() {\r\n return this._parseValue(this._normalizeText())\r\n },\r\n _normalizeText: function() {\r\n var value = this._input().val().trim();\r\n return this._replaceCommaWithPoint(value)\r\n },\r\n _parseValue: function(value) {\r\n var number = parseFloat(value);\r\n if (isNaN(number)) {\r\n return null\r\n }\r\n return (0, _math.fitIntoRange)(number, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _clearValue: function() {\r\n if (this._inputIsInvalid()) {\r\n this._input().val(\"\");\r\n this._validateValue()\r\n }\r\n this.callBase()\r\n },\r\n reset: function() {\r\n if (null === this.option(\"value\")) {\r\n this.option(\"text\", \"\");\r\n this._renderValue()\r\n } else {\r\n this.option(\"value\", null)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._validateValue(args.value);\r\n this._setSubmitValue(args.value);\r\n this.callBase(args);\r\n this._resumeValueChangeAction();\r\n break;\r\n case \"step\":\r\n this._renderProps();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._renderProps();\r\n this.option(\"value\", this._parseValue(this.option(\"value\")));\r\n break;\r\n case \"showSpinButtons\":\r\n case \"useLargeSpinButtons\":\r\n this._updateButtons([\"spins\"]);\r\n break;\r\n case \"invalidValueMessage\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = NumberBoxBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.spins.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 _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _button = _interopRequireDefault(require(\"../text_box/texteditor_button_collection/button\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box.spin\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\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\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 SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_CONTAINER_CLASS = \"dx-numberbox-spin-container\";\r\nvar SPIN_TOUCH_FRIENDLY_CLASS = \"dx-numberbox-spin-touch-friendly\";\r\nvar SpinButtons = function(_TextEditorButton) {\r\n _inheritsLoose(SpinButtons, _TextEditorButton);\r\n\r\n function SpinButtons() {\r\n return _TextEditorButton.apply(this, arguments) || this\r\n }\r\n var _proto = SpinButtons.prototype;\r\n _proto._attachEvents = function(instance, $spinContainer) {\r\n var editor = this.editor;\r\n var eventName = (0, _index.addNamespace)(_pointer.default.down, editor.NAME);\r\n var $spinContainerChildren = $spinContainer.children();\r\n var pointerDownAction = editor._createAction(function(e) {\r\n return editor._spinButtonsPointerDownHandler(e)\r\n });\r\n _events_engine.default.off($spinContainer, eventName);\r\n _events_engine.default.on($spinContainer, eventName, function(e) {\r\n return pointerDownAction({\r\n event: e\r\n })\r\n });\r\n _number_box.default.getInstance($spinContainerChildren.eq(0)).option(\"onChange\", function(e) {\r\n return editor._spinUpChangeHandler(e)\r\n });\r\n _number_box.default.getInstance($spinContainerChildren.eq(1)).option(\"onChange\", function(e) {\r\n return editor._spinDownChangeHandler(e)\r\n })\r\n };\r\n _proto._create = function() {\r\n var editor = this.editor;\r\n var $spinContainer = (0, _renderer.default)(\"
\").addClass(SPIN_CONTAINER_CLASS);\r\n var $spinUp = (0, _renderer.default)(\"
\").appendTo($spinContainer);\r\n var $spinDown = (0, _renderer.default)(\"
\").appendTo($spinContainer);\r\n var options = this._getOptions();\r\n this._addToContainer($spinContainer);\r\n editor._createComponent($spinUp, _number_box.default, (0, _extend.extend)({\r\n direction: \"up\"\r\n }, options));\r\n editor._createComponent($spinDown, _number_box.default, (0, _extend.extend)({\r\n direction: \"down\"\r\n }, options));\r\n this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible);\r\n return {\r\n instance: $spinContainer,\r\n $element: $spinContainer\r\n }\r\n };\r\n _proto._getOptions = function() {\r\n var editor = this.editor;\r\n var visible = this._isVisible();\r\n var disabled = editor.option(\"disabled\");\r\n return {\r\n visible: visible,\r\n disabled: disabled\r\n }\r\n };\r\n _proto._isVisible = function() {\r\n var editor = this.editor;\r\n return _TextEditorButton.prototype._isVisible.call(this) && editor.option(\"showSpinButtons\")\r\n };\r\n _proto._isTouchFriendly = function() {\r\n var editor = this.editor;\r\n return editor.option(\"showSpinButtons\") && editor.option(\"useLargeSpinButtons\")\r\n };\r\n _proto._legacyRender = function($editor, isTouchFriendly, isVisible) {\r\n $editor.toggleClass(SPIN_TOUCH_FRIENDLY_CLASS, isTouchFriendly);\r\n $editor.toggleClass(SPIN_CLASS, isVisible)\r\n };\r\n _proto.update = function() {\r\n var shouldUpdate = _TextEditorButton.prototype.update.call(this);\r\n if (shouldUpdate) {\r\n var editor = this.editor,\r\n instance = this.instance;\r\n var $editor = editor.$element();\r\n var isVisible = this._isVisible();\r\n var isTouchFriendly = this._isTouchFriendly();\r\n var $spinButtons = instance.children();\r\n var spinUp = _number_box.default.getInstance($spinButtons.eq(0));\r\n var spinDown = _number_box.default.getInstance($spinButtons.eq(1));\r\n var options = this._getOptions();\r\n spinUp.option(options);\r\n spinDown.option(options);\r\n this._legacyRender($editor, isTouchFriendly, isVisible)\r\n }\r\n };\r\n return SpinButtons\r\n}(_button.default);\r\nexports.default = SpinButtons;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/number_box/number_box.spin.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 _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _emitter = require(\"../../events/core/emitter.feedback\");\r\nvar _hold = _interopRequireDefault(require(\"../../events/hold\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_BUTTON_CLASS = \"dx-numberbox-spin-button\";\r\nvar SPIN_HOLD_DELAY = 100;\r\nvar NUMBER_BOX = \"dxNumberBox\";\r\nvar POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, NUMBER_BOX);\r\nvar POINTERCANCEL_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.cancel, NUMBER_BOX);\r\nvar SpinButton = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n direction: \"up\",\r\n onChange: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n var direction = SPIN_CLASS + \"-\" + this.option(\"direction\");\r\n this.$element().addClass(SPIN_BUTTON_CLASS).addClass(direction);\r\n this._spinIcon = (0, _renderer.default)(\"
\").addClass(direction + \"-icon\").appendTo(this.$element())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n var eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);\r\n var $element = this.$element();\r\n _events_engine.default.off($element, eventName);\r\n _events_engine.default.on($element, eventName, this._spinDownHandler.bind(this));\r\n this._spinChangeHandler = this._createActionByOption(\"onChange\")\r\n },\r\n _spinDownHandler: function(e) {\r\n e.preventDefault();\r\n this._clearTimer();\r\n _events_engine.default.on(this.$element(), _hold.default.name, function() {\r\n this._feedBackDeferred = new _deferred.Deferred;\r\n (0, _emitter.lock)(this._feedBackDeferred);\r\n this._spinChangeHandler({\r\n event: e\r\n });\r\n this._holdTimer = setInterval(this._spinChangeHandler, SPIN_HOLD_DELAY, {\r\n event: e\r\n })\r\n }.bind(this));\r\n var document = _dom_adapter.default.getDocument();\r\n _events_engine.default.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this));\r\n _events_engine.default.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this));\r\n this._spinChangeHandler({\r\n event: e\r\n })\r\n },\r\n _dispose: function() {\r\n this._clearTimer();\r\n this.callBase()\r\n },\r\n _clearTimer: function() {\r\n _events_engine.default.off(this.$element(), _hold.default.name);\r\n var document = _dom_adapter.default.getDocument();\r\n _events_engine.default.off(document, POINTERUP_EVENT_NAME);\r\n _events_engine.default.off(document, POINTERCANCEL_EVENT_NAME);\r\n if (this._feedBackDeferred) {\r\n this._feedBackDeferred.resolve()\r\n }\r\n if (this._holdTimer) {\r\n clearInterval(this._holdTimer)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onChange\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nvar _default = SpinButton;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/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\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _class = _interopRequireDefault(require(\"../core/class\"));\r\nvar _string = require(\"../core/utils/string\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _click = require(\"../events/click\");\r\nvar _pointer = _interopRequireDefault(require(\"../events/pointer\"));\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"./widget/ui.widget\"));\r\nvar _select_box = _interopRequireDefault(require(\"./select_box\"));\r\nvar _number_box = _interopRequireDefault(require(\"./number_box\"));\r\nvar _index = require(\"../events/utils/index\");\r\nvar _accessibility = require(\"./shared/accessibility\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PAGES_LIMITER = 4;\r\nvar PAGER_CLASS = \"dx-pager\";\r\nvar PAGER_PAGE_CLASS = \"dx-page\";\r\nvar PAGER_PAGE_CLASS_SELECTOR = \".\" + PAGER_PAGE_CLASS;\r\nvar PAGER_PAGES_CLASS = \"dx-pages\";\r\nvar LIGHT_MODE_CLASS = \"dx-light-mode\";\r\nvar LIGHT_PAGES_CLASS = \"dx-light-pages\";\r\nvar PAGER_PAGE_INDEX_CLASS = \"dx-page-index\";\r\nvar PAGER_PAGES_COUNT_CLASS = \"dx-pages-count\";\r\nvar PAGER_SELECTION_CLASS = \"dx-selection\";\r\nvar PAGER_PAGE_SEPARATOR_CLASS = \"dx-separator\";\r\nvar PAGER_PAGE_SIZES_CLASS = \"dx-page-sizes\";\r\nvar PAGER_PAGE_SIZE_CLASS = \"dx-page-size\";\r\nvar PAGER_PAGE_SIZE_CLASS_SELECTOR = \".\" + PAGER_PAGE_SIZE_CLASS;\r\nvar PAGER_NAVIGATE_BUTTON = \"dx-navigate-button\";\r\nvar PAGER_PREV_BUTTON_CLASS = \"dx-prev-button\";\r\nvar PAGER_NEXT_BUTTON_CLASS = \"dx-next-button\";\r\nvar PAGER_INFO_CLASS = \"dx-info\";\r\nvar PAGER_INFO_TEXT_CLASS = \"dx-info-text\";\r\nvar PAGER_BUTTON_DISABLE_CLASS = \"dx-button-disable\";\r\nvar Page = _class.default.inherit({\r\n ctor: function(value, index) {\r\n var that = this;\r\n that.index = index;\r\n that._$page = (0, _renderer.default)(\"
\").text(value).addClass(PAGER_PAGE_CLASS)\r\n },\r\n value: function(_value) {\r\n var that = this;\r\n if ((0, _type.isDefined)(_value)) {\r\n that._$page.text(_value)\r\n } else {\r\n var text = that._$page.text();\r\n if ((0, _type.isNumeric)(text)) {\r\n return parseInt(text)\r\n } else {\r\n return text\r\n }\r\n }\r\n },\r\n element: function() {\r\n return this._$page\r\n },\r\n select: function(value) {\r\n this._$page.toggleClass(PAGER_SELECTION_CLASS, value)\r\n },\r\n render: function(rootElement, rtlEnabled) {\r\n rtlEnabled ? this._$page.prependTo(rootElement) : this._$page.appendTo(rootElement)\r\n }\r\n});\r\nvar Pager = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n visible: true,\r\n pagesNavigatorVisible: \"auto\",\r\n pageIndex: 1,\r\n maxPagesCount: 10,\r\n pageCount: 10,\r\n totalCount: 0,\r\n pageSize: 5,\r\n showPageSizes: true,\r\n pageSizes: [5, 10],\r\n hasKnownLastPage: true,\r\n showNavigationButtons: false,\r\n showInfo: false,\r\n infoText: _message.default.getFormatter(\"dxPager-infoText\"),\r\n pagesCountText: _message.default.getFormatter(\"dxPager-pagesCountText\"),\r\n rtlEnabled: false,\r\n lightModeEnabled: false,\r\n pageIndexChanged: _common.noop,\r\n pageSizeChanged: _common.noop\r\n })\r\n },\r\n _toggleVisibility: function(value) {\r\n var $element = this.$element();\r\n if ($element) {\r\n $element.css(\"display\", value ? \"\" : \"none\")\r\n }\r\n },\r\n _getPages: function(currentPage, count) {\r\n var pages = [];\r\n var showMoreButton = !this.option(\"hasKnownLastPage\");\r\n var firstValue;\r\n var i;\r\n if (count > 0 || showMoreButton) {\r\n if (count <= this.option(\"maxPagesCount\")) {\r\n for (i = 1; i <= count; i++) {\r\n pages.push(new Page(i, i - 1))\r\n }\r\n if (showMoreButton) {\r\n pages.push(new Page(\">\", i - 1))\r\n }\r\n } else {\r\n pages.push(new Page(1, 0));\r\n firstValue = currentPage ? currentPage.value() - currentPage.index : 1;\r\n var pagesCount = count === firstValue + PAGES_LIMITER ? PAGES_LIMITER - 1 : PAGES_LIMITER;\r\n for (i = 1; i <= pagesCount; i++) {\r\n pages.push(new Page(firstValue + i, i))\r\n }\r\n pages.push(new Page(count, PAGES_LIMITER + 1));\r\n if (showMoreButton) {\r\n pages.push(new Page(\">\", PAGES_LIMITER + 1))\r\n }\r\n }\r\n }\r\n return pages\r\n },\r\n _getPageByValue: function(value) {\r\n var that = this;\r\n var page;\r\n var i;\r\n for (i = 0; i < that._pages.length; i++) {\r\n page = that._pages[i];\r\n if (page.value() === value) {\r\n return page\r\n }\r\n }\r\n },\r\n _processSelectedPage: function(maxPagesCount, pageIndex, pageCount) {\r\n var that = this;\r\n var isPageIndexValid = false;\r\n var selectedPageIndex;\r\n if (that._pages) {\r\n (0, _iterator.each)(that._pages, function(key, page) {\r\n if (pageIndex === page.value()) {\r\n isPageIndexValid = true\r\n }\r\n });\r\n if (!isPageIndexValid) {\r\n that.selectedPage = null\r\n }\r\n }\r\n if ((0, _type.isDefined)(that.selectedPage)) {\r\n if (pageIndex === pageCount && pageCount > maxPagesCount && that.selectedPage.index !== PAGES_LIMITER + 1) {\r\n that.selectedPage.index = PAGES_LIMITER + 1\r\n }\r\n } else {\r\n if (pageIndex > PAGES_LIMITER && pageIndex < pageCount) {\r\n selectedPageIndex = pageCount - PAGES_LIMITER < pageIndex ? PAGES_LIMITER - (pageCount - pageIndex) + 1 : 2;\r\n that.selectedPage = new Page(pageIndex, selectedPageIndex)\r\n }\r\n }\r\n },\r\n _selectPageByValue: function(value) {\r\n var that = this;\r\n var i;\r\n var page = that._getPageByValue(value);\r\n var pages = that._pages;\r\n var pagesLength = pages.length;\r\n var nextPage;\r\n var morePage;\r\n if (!(0, _type.isDefined)(page)) {\r\n return\r\n }\r\n var prevPage = that._pages[page.index - 1];\r\n nextPage = that._pages[page.index + 1];\r\n if (nextPage && \">\" === nextPage.value()) {\r\n morePage = nextPage;\r\n nextPage = void 0;\r\n pagesLength--;\r\n pages.pop()\r\n }\r\n if (that.selectedPage) {\r\n that.selectedPage.select(false)\r\n }\r\n page.select(true);\r\n that.selectedPage = page;\r\n if (nextPage && nextPage.value() - value > 1) {\r\n if (0 !== page.index) {\r\n prevPage.value(value + 1);\r\n that._pages.splice(page.index, 1);\r\n that._pages.splice(page.index - 1, 0, page);\r\n that._pages[page.index].index = page.index;\r\n page.index = page.index - 1;\r\n for (i = page.index - 1; i > 0; i--) {\r\n that._pages[i].value(that._pages[i + 1].value() - 1)\r\n }\r\n } else {\r\n for (i = 0; i < pagesLength - 1; i++) {\r\n that._pages[i].value(i + 1)\r\n }\r\n }\r\n }\r\n if (prevPage && value - prevPage.value() > 1) {\r\n if (page.index !== pagesLength - 1) {\r\n nextPage.value(value - 1);\r\n that._pages.splice(page.index, 1);\r\n that._pages.splice(page.index + 1, 0, page);\r\n that._pages[page.index].index = page.index;\r\n page.index = page.index + 1;\r\n for (i = page.index + 1; i < pagesLength - 1; i++) {\r\n that._pages[i].value(that._pages[i - 1].value() + 1)\r\n }\r\n } else {\r\n for (i = 1; i <= pagesLength - 2; i++) {\r\n that._pages[pagesLength - 1 - i].value(that._pages[pagesLength - 1].value() - i)\r\n }\r\n }\r\n }\r\n if (morePage) {\r\n pages.push(morePage)\r\n }\r\n },\r\n _updatePagesTabIndices: function() {\r\n var _this = this;\r\n var $selectedPage = this.selectedPage._$page;\r\n var updatePageIndices = function updatePageIndices() {\r\n var buttons = (0, _renderer.default)(_this.element()).find(\"[role=button]:not(.dx-button-disable)\");\r\n (0, _iterator.each)(buttons, function(_, element) {\r\n return (0, _renderer.default)(element).attr(\"tabindex\", 0)\r\n });\r\n _events_engine.default.off($selectedPage, \"focus\", updatePageIndices)\r\n };\r\n _events_engine.default.on($selectedPage, \"focus\", updatePageIndices)\r\n },\r\n _nextPage: function(direction) {\r\n var pageIndex = this.option(\"pageIndex\");\r\n var pageCount = this.option(\"pageCount\");\r\n if ((0, _type.isDefined)(pageIndex)) {\r\n pageIndex = \"next\" === direction ? ++pageIndex : --pageIndex;\r\n if (pageIndex > 0 && pageIndex <= pageCount) {\r\n this.option(\"pageIndex\", pageIndex)\r\n }\r\n }\r\n },\r\n _wrapClickAction: function(action) {\r\n var _this2 = this;\r\n return function(e) {\r\n if (\"dxpointerup\" === e.type) {\r\n _this2._pointerUpHappened = true\r\n } else {\r\n if (_this2._pointerUpHappened) {\r\n _this2._pointerUpHappened = false;\r\n return\r\n }\r\n }\r\n action({\r\n event: e\r\n })\r\n }\r\n },\r\n _renderPages: function(pages) {\r\n var that = this;\r\n var $separator;\r\n var pagesLength = pages.length;\r\n var clickPagesIndexAction = that._createAction(function(args) {\r\n var e = args.event;\r\n var pageNumber = (0, _renderer.default)(e.target).text();\r\n var pageIndex = \">\" === pageNumber ? that.option(\"pageCount\") + 1 : Number(pageNumber);\r\n that.option(\"pageIndex\", pageIndex)\r\n });\r\n var page;\r\n if (pagesLength > 1) {\r\n that._pageClickHandler = this._wrapClickAction(clickPagesIndexAction);\r\n _events_engine.default.on(that._$pagesChooser, (0, _index.addNamespace)([_pointer.default.up, _click.name], that.Name + \"Pages\"), PAGER_PAGE_CLASS_SELECTOR, that._pageClickHandler);\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, that._$pagesChooser, PAGER_PAGE_CLASS_SELECTOR, clickPagesIndexAction)\r\n }\r\n for (var i = 0; i < pagesLength; i++) {\r\n page = pages[i];\r\n page.render(that._$pagesChooser, that.option(\"rtlEnabled\"));\r\n that.setAria({\r\n role: \"button\",\r\n label: \"Page \" + page.value()\r\n }, page.element());\r\n (0, _accessibility.setTabIndex)(that, page.element());\r\n if (pages[i + 1] && pages[i + 1].value() - page.value() > 1) {\r\n $separator = (0, _renderer.default)(\"
\").text(\". . .\").addClass(PAGER_PAGE_SEPARATOR_CLASS);\r\n that.option(\"rtlEnabled\") ? $separator.prependTo(that._$pagesChooser) : $separator.appendTo(that._$pagesChooser)\r\n }\r\n }\r\n },\r\n _calculateLightPagesWidth: function($pageIndex, pageCount) {\r\n return Number($pageIndex.css(\"minWidth\").replace(\"px\", \"\")) + 10 * pageCount.toString().length\r\n },\r\n _renderLightPages: function() {\r\n var that = this;\r\n var pageCount = this.option(\"pageCount\");\r\n var pageIndex = this.option(\"pageIndex\");\r\n var clickAction = that._createAction(function() {\r\n that.option(\"pageIndex\", pageCount)\r\n });\r\n var pagesCountText = this.option(\"pagesCountText\");\r\n var $container = (0, _renderer.default)(\"
\").addClass(LIGHT_PAGES_CLASS).appendTo(this._$pagesChooser);\r\n var $pageIndex = (0, _renderer.default)(\"
\").addClass(PAGER_PAGE_INDEX_CLASS).appendTo($container);\r\n that._pageIndexEditor = that._createComponent($pageIndex, _number_box.default, {\r\n value: pageIndex,\r\n min: 1,\r\n max: pageCount,\r\n width: that._calculateLightPagesWidth($pageIndex, pageCount),\r\n onValueChanged: function(e) {\r\n if (null === e.value) {\r\n return\r\n }\r\n that.option(\"pageIndex\", e.value)\r\n }\r\n });\r\n (0, _renderer.default)(\"\").text(pagesCountText).addClass(PAGER_INFO_TEXT_CLASS + \" \" + PAGER_INFO_CLASS).appendTo($container);\r\n var $pageCount = (0, _renderer.default)(\"\").addClass(PAGER_PAGES_COUNT_CLASS).text(pageCount);\r\n _events_engine.default.on($pageCount, (0, _index.addNamespace)(_click.name, that.Name + \"PagesCount\"), function(e) {\r\n clickAction({\r\n event: e\r\n })\r\n });\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, $pageCount, void 0, clickAction);\r\n $pageCount.appendTo($container);\r\n that.setAria({\r\n role: \"button\",\r\n label: \"Navigates to the last page\"\r\n }, $pageCount)\r\n },\r\n _renderPagesChooser: function() {\r\n var that = this;\r\n var lightModeEnabled = that.option(\"lightModeEnabled\");\r\n var pagesNavigatorVisible = that.option(\"pagesNavigatorVisible\");\r\n var $element = that.$element();\r\n that._$pagesChooser && that._$pagesChooser.remove();\r\n if (!pagesNavigatorVisible) {\r\n return\r\n }\r\n if (that._pages && 0 === that._pages.length) {\r\n that.selectedPage = null;\r\n return\r\n }\r\n that._$pagesChooser = (0, _renderer.default)(\"
\").addClass(PAGER_PAGES_CLASS).appendTo($element);\r\n if (\"auto\" === pagesNavigatorVisible) {\r\n that._$pagesChooser.css(\"visibility\", 1 === that.option(\"pageCount\") ? \"hidden\" : \"\")\r\n }\r\n if (!lightModeEnabled) {\r\n that._renderInfo()\r\n }\r\n that._renderNavigateButton(\"prev\");\r\n if (lightModeEnabled) {\r\n that._renderLightPages()\r\n } else {\r\n that._renderPages(that._pages)\r\n }\r\n that._renderNavigateButton(\"next\");\r\n that._updatePagesChooserWidth()\r\n },\r\n _renderPageSizes: function() {\r\n var that = this;\r\n var i;\r\n var pageSizes = that.option(\"pageSizes\");\r\n var pagesSizesLength = pageSizes && pageSizes.length;\r\n var pageSizeValue;\r\n var currentPageSize = that.option(\"pageSize\");\r\n var $pageSize;\r\n var clickPagesSizeAction = that._createAction(function(args) {\r\n var e = args.event;\r\n pageSizeValue = parseInt((0, _renderer.default)(e.target).text());\r\n that.option(\"pageSize\", pageSizeValue)\r\n });\r\n _events_engine.default.on(that._$pagesSizeChooser, (0, _index.addNamespace)(_click.name, that.Name + \"PageSize\"), PAGER_PAGE_SIZE_CLASS_SELECTOR, function(e) {\r\n clickPagesSizeAction({\r\n event: e\r\n })\r\n });\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, that._$pagesSizeChooser, PAGER_PAGE_SIZE_CLASS_SELECTOR, clickPagesSizeAction);\r\n for (i = 0; i < pagesSizesLength; i++) {\r\n $pageSize = (0, _renderer.default)(\"
\").text(pageSizes[i]).addClass(PAGER_PAGE_SIZE_CLASS);\r\n that.setAria({\r\n role: \"button\",\r\n label: \"Display \" + pageSizes[i] + \" items on page\"\r\n }, $pageSize);\r\n (0, _accessibility.setTabIndex)(that, $pageSize);\r\n if (currentPageSize === pageSizes[i]) {\r\n $pageSize.addClass(PAGER_SELECTION_CLASS)\r\n }\r\n that._$pagesSizeChooser.append($pageSize)\r\n }\r\n },\r\n _calculateLightPageSizesWidth: function(pageSizes) {\r\n return Number(this._$pagesSizeChooser.css(\"minWidth\").replace(\"px\", \"\")) + 10 * Math.max.apply(Math, pageSizes).toString().length\r\n },\r\n _renderLightPageSizes: function() {\r\n var that = this;\r\n var pageSizes = that.option(\"pageSizes\");\r\n var $editor = (0, _renderer.default)(\"
\").appendTo(that._$pagesSizeChooser);\r\n that._pageSizeEditor = that._createComponent($editor, _select_box.default, {\r\n dataSource: pageSizes,\r\n value: that.option(\"pageSize\"),\r\n onSelectionChanged: function(e) {\r\n that.option(\"pageSize\", e.selectedItem)\r\n },\r\n width: that._calculateLightPageSizesWidth(pageSizes)\r\n })\r\n },\r\n _renderPagesSizeChooser: function() {\r\n var that = this;\r\n var pageSizes = that.option(\"pageSizes\");\r\n var showPageSizes = that.option(\"showPageSizes\");\r\n var pagesSizesLength = pageSizes && pageSizes.length;\r\n var $element = that.$element();\r\n that._$pagesSizeChooser && that._$pagesSizeChooser.remove();\r\n if (!showPageSizes || !pagesSizesLength) {\r\n return\r\n }\r\n that._$pagesSizeChooser = (0, _renderer.default)(\"
\").addClass(PAGER_PAGE_SIZES_CLASS).appendTo($element);\r\n if (that.option(\"lightModeEnabled\")) {\r\n that._renderLightPageSizes()\r\n } else {\r\n that._renderPageSizes()\r\n }\r\n that._pagesSizeChooserWidth = that._$pagesSizeChooser.width()\r\n },\r\n _renderInfo: function() {\r\n var infoText = this.option(\"infoText\");\r\n if (this.option(\"showInfo\") && (0, _type.isDefined)(infoText)) {\r\n this._$info = (0, _renderer.default)(\"
\").css(\"display\", this._isInfoHide ? \"none\" : \"\").addClass(PAGER_INFO_CLASS).text((0, _string.format)(infoText, this.selectedPage && this.selectedPage.value(), this.option(\"pageCount\"), this.option(\"totalCount\"))).appendTo(this._$pagesChooser);\r\n if (!this._isInfoHide) {\r\n this._infoWidth = this._$info.outerWidth(true)\r\n }\r\n }\r\n },\r\n _renderNavigateButton: function(direction) {\r\n var that = this;\r\n var clickAction = that._createAction(function() {\r\n that._nextPage(direction)\r\n });\r\n var $button;\r\n if (that.option(\"showNavigationButtons\") || that.option(\"lightModeEnabled\")) {\r\n $button = (0, _renderer.default)(\"
\").addClass(PAGER_NAVIGATE_BUTTON);\r\n _events_engine.default.on($button, (0, _index.addNamespace)([_pointer.default.up, _click.name], that.Name + \"Pages\"), that._wrapClickAction(clickAction));\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", that, $button, void 0, clickAction);\r\n that.setAria({\r\n role: \"button\",\r\n label: \"prev\" === direction ? \"Previous page\" : \" Next page\"\r\n }, $button);\r\n (0, _accessibility.setTabIndex)(that, $button);\r\n if (that.option(\"rtlEnabled\")) {\r\n $button.addClass(\"prev\" === direction ? PAGER_NEXT_BUTTON_CLASS : PAGER_PREV_BUTTON_CLASS);\r\n $button.prependTo(this._$pagesChooser)\r\n } else {\r\n $button.addClass(\"prev\" === direction ? PAGER_PREV_BUTTON_CLASS : PAGER_NEXT_BUTTON_CLASS);\r\n $button.appendTo(this._$pagesChooser)\r\n }\r\n }\r\n },\r\n _renderContentImpl: function() {\r\n this.$element().toggleClass(LIGHT_MODE_CLASS, this.option(\"lightModeEnabled\"));\r\n this._toggleVisibility(this.option(\"visible\"));\r\n this._updatePageSizes(true);\r\n this._updatePages(true);\r\n (0, _accessibility.restoreFocus)(this)\r\n },\r\n _initMarkup: function() {\r\n var $element = this.$element();\r\n $element.addClass(PAGER_CLASS);\r\n var $pageSize = (0, _renderer.default)(\"
\").addClass(PAGER_PAGE_CLASS);\r\n this._$pagesChooser = (0, _renderer.default)(\"
\").addClass(PAGER_PAGES_CLASS).append($pageSize).appendTo($element)\r\n },\r\n _render: function() {\r\n this.option().lightModeEnabled = false;\r\n this.callBase();\r\n this._updateLightMode()\r\n },\r\n _updatePageSizes: function(forceRender) {\r\n var lightModeEnabled = this.option(\"lightModeEnabled\");\r\n var pageSize = this.option(\"pageSize\");\r\n var pageSizes = this.option(\"pageSizes\");\r\n if (lightModeEnabled) {\r\n this._pageSizeEditor && this._pageSizeEditor.option({\r\n value: pageSize,\r\n dataSource: pageSizes,\r\n width: this._calculateLightPageSizesWidth(pageSizes)\r\n })\r\n }\r\n if (!lightModeEnabled || forceRender) {\r\n this._renderPagesSizeChooser()\r\n }\r\n },\r\n _updatePages: function(forceRender) {\r\n var pageCount = this.option(\"pageCount\");\r\n var pageIndex = this.option(\"pageIndex\");\r\n var lightModeEnabled = this.option(\"lightModeEnabled\");\r\n if (!lightModeEnabled) {\r\n this._processSelectedPage(this.option(\"maxPagesCount\"), pageIndex, pageCount);\r\n this._pages = this._getPages(this.selectedPage, pageCount);\r\n this._selectPageByValue(pageIndex)\r\n } else {\r\n this._pageIndexEditor && this._pageIndexEditor.option({\r\n value: pageIndex,\r\n width: this._calculateLightPagesWidth(this._pageIndexEditor.$element(), pageCount)\r\n })\r\n }\r\n if (!lightModeEnabled || forceRender) {\r\n this._renderPagesChooser()\r\n }\r\n this._updateButtonsState(pageIndex)\r\n },\r\n _isPageIndexInvalid: function(direction, pageIndex) {\r\n var isNextDirection = \"next\" === direction;\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (rtlEnabled && isNextDirection || !rtlEnabled && !isNextDirection) {\r\n return pageIndex <= 1\r\n }\r\n return pageIndex >= this.option(\"pageCount\")\r\n },\r\n _updateButtonsState: function(pageIndex) {\r\n var nextButton = this.$element().find(\".\" + PAGER_NEXT_BUTTON_CLASS);\r\n var prevButton = this.$element().find(\".\" + PAGER_PREV_BUTTON_CLASS);\r\n nextButton.toggleClass(PAGER_BUTTON_DISABLE_CLASS, this._isPageIndexInvalid(\"next\", pageIndex));\r\n prevButton.toggleClass(PAGER_BUTTON_DISABLE_CLASS, this._isPageIndexInvalid(\"prev\", pageIndex))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"visible\":\r\n this._toggleVisibility(args.value);\r\n break;\r\n case \"pageIndex\":\r\n var pageIndexChanged = this.option(\"pageIndexChanged\");\r\n if (pageIndexChanged) {\r\n pageIndexChanged(args.value)\r\n }\r\n this._updatePages();\r\n break;\r\n case \"maxPagesCount\":\r\n case \"pageCount\":\r\n case \"totalCount\":\r\n case \"hasKnownLastPage\":\r\n case \"pagesNavigatorVisible\":\r\n case \"showNavigationButtons\":\r\n this._updatePages();\r\n break;\r\n case \"pageSize\":\r\n var pageSizeChanged = this.option(\"pageSizeChanged\");\r\n if (pageSizeChanged) {\r\n pageSizeChanged(args.value)\r\n }\r\n this._updatePageSizes();\r\n break;\r\n case \"pageSizes\":\r\n this._updatePageSizes();\r\n break;\r\n case \"lightModeEnabled\":\r\n this._renderContentImpl();\r\n !args.value && this._updateLightMode();\r\n break;\r\n default:\r\n this._invalidate()\r\n }\r\n },\r\n _clean: function() {\r\n if (this._$pagesChooser) {\r\n _events_engine.default.off(this._$pagesChooser, (0, _index.addNamespace)([_pointer.default.up, _click.name], this.Name + \"Pages\"), PAGER_PAGE_CLASS_SELECTOR, this._pageClickHandler);\r\n (0, _accessibility.registerKeyboardAction)(\"pager\", this, this._$pagesChooser, PAGER_PAGE_CLASS_SELECTOR, this._pageKeyDownHandler)\r\n }\r\n this.callBase()\r\n },\r\n _getMinPagerWidth: function() {\r\n var pagesChooserWidth = (0, _type.isDefined)(this._pagesChooserWidth) ? this._pagesChooserWidth : 0;\r\n var pagesSizeChooserWidth = (0, _type.isDefined)(this._pagesSizeChooserWidth) ? this._pagesSizeChooserWidth : 0;\r\n return pagesChooserWidth + pagesSizeChooserWidth\r\n },\r\n _updatePagesChooserWidth: (0, _common.deferUpdater)(function() {\r\n var lastPageWidth = this._pages && this._pages.length > 0 ? this._pages[this._pages.length - 1]._$page.width() : 0;\r\n this._pagesChooserWidth = this._$pagesChooser.width() + lastPageWidth\r\n }),\r\n _updateLightMode: (0, _common.deferUpdater)(function() {\r\n var that = this;\r\n var width = this.$element().width();\r\n var infoWidth = (0, _type.isDefined)(this._infoWidth) ? this._infoWidth : 0;\r\n (0, _common.deferRender)(function() {\r\n if (that._isInfoHide && width > that._getMinPagerWidth() + infoWidth) {\r\n that._$info.css(\"display\", \"\");\r\n that._updatePagesChooserWidth();\r\n that._isInfoHide = false\r\n }\r\n if (!that._isInfoHide && width > that._getMinPagerWidth() - infoWidth && width < that._getMinPagerWidth()) {\r\n that._$info.css(\"display\", \"none\");\r\n that._updatePagesChooserWidth();\r\n that._isInfoHide = true\r\n }(0, _common.deferUpdate)(function() {\r\n (0, _common.deferRender)(function() {\r\n if (that.option(\"lightModeEnabled\") && width > that._previousWidth) {\r\n that.option(\"lightModeEnabled\", false)\r\n } else {\r\n if (width < that._getMinPagerWidth()) {\r\n that.option(\"lightModeEnabled\", true)\r\n }\r\n }\r\n that._previousWidth = width\r\n })\r\n })\r\n })\r\n }),\r\n _dimensionChanged: function() {\r\n this._updateLightMode()\r\n },\r\n getHeight: function() {\r\n return this.option(\"visible\") ? this.$element().outerHeight() : 0\r\n }\r\n});\r\nvar _default = Pager;\r\nexports.default = _default;\r\n(0, _component_registrator.default)(\"dxPager\", Pager);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid.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(\"./pivot_grid/ui.pivot_grid\"));\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/pivot_grid/local_store.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.LocalStore = void 0;\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _utils = _interopRequireDefault(require(\"../../data/utils\"));\r\nvar _query = _interopRequireDefault(require(\"../../data/query\"));\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _custom_store = _interopRequireDefault(require(\"../../data/custom_store\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PATH_DELIMETER = \"/./\";\r\nvar LocalStore = _class.default.inherit(function() {\r\n var DATE_INTERVAL_SELECTORS = {\r\n year: function(date) {\r\n return date && date.getFullYear()\r\n },\r\n quarter: function(date) {\r\n return date && Math.floor(date.getMonth() / 3) + 1\r\n },\r\n month: function(date) {\r\n return date && date.getMonth() + 1\r\n },\r\n day: function(date) {\r\n return date && date.getDate()\r\n },\r\n dayOfWeek: function(date) {\r\n return date && date.getDay()\r\n }\r\n };\r\n\r\n function getDataSelector(dataField) {\r\n return dataField.indexOf(\".\") !== -1 ? (0, _data.compileGetter)(dataField) : function(data) {\r\n return data[dataField]\r\n }\r\n }\r\n\r\n function getDateValue(dataSelector) {\r\n return function(data) {\r\n var value = dataSelector(data);\r\n if (value && !(value instanceof Date)) {\r\n value = _date_serialization.default.deserializeDate(value)\r\n }\r\n return value\r\n }\r\n }\r\n\r\n function prepareFields(fields) {\r\n (0, _iterator.each)(fields || [], function(_, field) {\r\n var fieldSelector;\r\n var intervalSelector;\r\n var dataField = field.dataField;\r\n var groupInterval;\r\n var levels = field.levels;\r\n var dataSelector;\r\n if (!field.selector) {\r\n if (!dataField) {\r\n dataSelector = function(data) {\r\n return data\r\n }\r\n } else {\r\n dataSelector = getDataSelector(dataField)\r\n }\r\n if (levels) {\r\n prepareFields(levels)\r\n }\r\n if (\"date\" === field.dataType) {\r\n intervalSelector = DATE_INTERVAL_SELECTORS[field.groupInterval];\r\n var valueSelector = getDateValue(dataSelector);\r\n fieldSelector = function(data) {\r\n var value = valueSelector(data);\r\n return intervalSelector ? intervalSelector(value) : value\r\n }\r\n } else {\r\n if (\"number\" === field.dataType) {\r\n groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval;\r\n fieldSelector = function(data) {\r\n var value = dataSelector(data);\r\n if ((0, _type.isString)(value)) {\r\n value = Number(value)\r\n }\r\n return groupInterval ? Math.floor(value / groupInterval) * groupInterval : value\r\n }\r\n } else {\r\n fieldSelector = dataSelector\r\n }\r\n }(0, _uiPivot_grid.setDefaultFieldValueFormatting)(field);\r\n (0, _uiPivot_grid.setFieldProperty)(field, \"selector\", fieldSelector)\r\n }\r\n })\r\n }\r\n var addHierarchyItem = function(value, hierarchyItems, pathHash, childrenHash) {\r\n var hierarchyItem = childrenHash[pathHash];\r\n if (!hierarchyItem) {\r\n hierarchyItem = {\r\n value: value,\r\n index: childrenHash.length++\r\n };\r\n childrenHash[pathHash] = hierarchyItem;\r\n hierarchyItems.push(hierarchyItem)\r\n }\r\n return hierarchyItem\r\n };\r\n\r\n function fillHierarchyItemIndexesCore(indexes, options, children, expandIndex, pathHash) {\r\n var dimension = options.dimensions[expandIndex];\r\n var expandedPathsHash = options.expandedPathsHash;\r\n var dimensionValue;\r\n var hierarchyItem;\r\n if (dimension) {\r\n dimensionValue = dimension.selector(options.data);\r\n pathHash = void 0 !== pathHash ? pathHash + PATH_DELIMETER + dimensionValue : dimensionValue + \"\";\r\n hierarchyItem = addHierarchyItem(dimensionValue, children, pathHash, options.childrenHash);\r\n indexes.push(hierarchyItem.index);\r\n if (expandedPathsHash && expandedPathsHash[pathHash] || dimension.expanded) {\r\n if (!hierarchyItem.children) {\r\n hierarchyItem.children = []\r\n }\r\n fillHierarchyItemIndexesCore(indexes, options, hierarchyItem.children, expandIndex + 1, pathHash)\r\n }\r\n }\r\n }\r\n\r\n function generateHierarchyItems(data, loadOptions, headers, headerName) {\r\n var result = [0];\r\n var expandIndex = loadOptions.headerName === headerName ? loadOptions.path.length : 0;\r\n var expandedPaths = \"rows\" === headerName ? loadOptions.rowExpandedPaths : loadOptions.columnExpandedPaths;\r\n var options = {\r\n data: data,\r\n childrenHash: headers[headerName + \"Hash\"],\r\n dimensions: loadOptions[headerName],\r\n expandedPathsHash: loadOptions.headerName !== headerName && expandedPaths && expandedPaths.hash\r\n };\r\n fillHierarchyItemIndexesCore(result, options, headers[headerName], expandIndex);\r\n return result\r\n }\r\n\r\n function generateAggregationCells(data, cells, headers, options) {\r\n var cellSet = [];\r\n var x;\r\n var y;\r\n var rowIndex;\r\n var columnIndex;\r\n var rowIndexes = generateHierarchyItems(data, options, headers, \"rows\");\r\n var columnIndexes = generateHierarchyItems(data, options, headers, \"columns\");\r\n for (y = 0; y < rowIndexes.length; y++) {\r\n rowIndex = rowIndexes[y];\r\n cells[rowIndex] = cells[rowIndex] || [];\r\n for (x = 0; x < columnIndexes.length; x++) {\r\n columnIndex = columnIndexes[x];\r\n cellSet.push(cells[rowIndex][columnIndex] = cells[rowIndex][columnIndex] || [])\r\n }\r\n }\r\n return cellSet\r\n }\r\n\r\n function fillHashExpandedPath(expandedPaths) {\r\n if (expandedPaths) {\r\n var hash = expandedPaths.hash = {};\r\n expandedPaths.forEach(function(path) {\r\n var pathValue = path.map(function(value) {\r\n return value + \"\"\r\n }).join(PATH_DELIMETER);\r\n hash[pathValue] = true\r\n })\r\n }\r\n }\r\n\r\n function prepareLoadOption(options) {\r\n options.rows = options.rows || [];\r\n options.columns = options.columns || [];\r\n options.filters = options.filters || [];\r\n fillHashExpandedPath(options.columnExpandedPaths);\r\n fillHashExpandedPath(options.rowExpandedPaths);\r\n prepareFields(options.columns);\r\n prepareFields(options.rows);\r\n prepareFields(options.values);\r\n prepareFields(options.filters)\r\n }\r\n\r\n function getAggregator(field) {\r\n if (\"custom\" === field.summaryType) {\r\n field.calculateCustomSummary = field.calculateCustomSummary || _common.noop;\r\n return {\r\n seed: function() {\r\n var options = {\r\n summaryProcess: \"start\",\r\n totalValue: void 0\r\n };\r\n field.calculateCustomSummary(options);\r\n return options\r\n },\r\n step: function(options, value) {\r\n options.summaryProcess = \"calculate\";\r\n options.value = value;\r\n field.calculateCustomSummary(options);\r\n return options\r\n },\r\n finalize: function(options) {\r\n options.summaryProcess = \"finalize\";\r\n delete options.value;\r\n field.calculateCustomSummary(options);\r\n return options.totalValue\r\n }\r\n }\r\n }\r\n return _utils.default.aggregators[field.summaryType] || _utils.default.aggregators.count\r\n }\r\n\r\n function aggregationStep(measures, aggregationCells, data) {\r\n for (var aggregatorIndex = 0; aggregatorIndex < measures.length; aggregatorIndex++) {\r\n var cellField = measures[aggregatorIndex];\r\n var cellValue = cellField.selector(data);\r\n var aggregator = getAggregator(cellField);\r\n var isAggregatorSeedFunction = \"function\" === typeof aggregator.seed;\r\n for (var cellSetIndex = 0; cellSetIndex < aggregationCells.length; cellSetIndex++) {\r\n var cell = aggregationCells[cellSetIndex];\r\n if (cell.length <= aggregatorIndex) {\r\n cell[aggregatorIndex] = isAggregatorSeedFunction ? aggregator.seed() : aggregator.seed\r\n }\r\n if (void 0 === cell[aggregatorIndex]) {\r\n cell[aggregatorIndex] = cellValue\r\n } else {\r\n if ((0, _type.isDefined)(cellValue)) {\r\n cell[aggregatorIndex] = aggregator.step(cell[aggregatorIndex], cellValue)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function aggregationFinalize(measures, cells) {\r\n (0, _iterator.each)(measures, function(aggregatorIndex, cellField) {\r\n var aggregator = getAggregator(cellField);\r\n if (aggregator.finalize) {\r\n (0, _iterator.each)(cells, function(_, row) {\r\n (0, _iterator.each)(row, function(_, cell) {\r\n if (cell && void 0 !== cell[aggregatorIndex]) {\r\n cell[aggregatorIndex] = aggregator.finalize(cell[aggregatorIndex])\r\n }\r\n })\r\n })\r\n }\r\n })\r\n }\r\n\r\n function areValuesEqual(filterValue, fieldValue) {\r\n var valueOfFilter = filterValue && filterValue.valueOf();\r\n var valueOfField = fieldValue && fieldValue.valueOf();\r\n if (Array.isArray(filterValue)) {\r\n fieldValue = fieldValue || [];\r\n for (var i = 0; i < filterValue.length; i++) {\r\n valueOfFilter = filterValue[i] && filterValue[i].valueOf();\r\n valueOfField = fieldValue[i] && fieldValue[i].valueOf();\r\n if (valueOfFilter !== valueOfField) {\r\n return false\r\n }\r\n }\r\n return true\r\n } else {\r\n return valueOfFilter === valueOfField\r\n }\r\n }\r\n\r\n function getGroupValue(levels, data) {\r\n var value = [];\r\n (0, _iterator.each)(levels, function(_, field) {\r\n value.push(field.selector(data))\r\n });\r\n return value\r\n }\r\n\r\n function createDimensionFilters(dimension) {\r\n var filters = [];\r\n (0, _iterator.each)(dimension, function(_, field) {\r\n var filterValues = field.filterValues || [];\r\n var groupName = field.groupName;\r\n if (groupName && (0, _type.isNumeric)(field.groupIndex)) {\r\n return\r\n }\r\n var filter = function(dataItem) {\r\n var value = field.levels ? getGroupValue(field.levels, dataItem) : field.selector(dataItem);\r\n var result = false;\r\n for (var i = 0; i < filterValues.length; i++) {\r\n if (areValuesEqual(filterValues[i], value)) {\r\n result = true;\r\n break\r\n }\r\n }\r\n return \"exclude\" === field.filterType ? !result : result\r\n };\r\n filterValues.length && filters.push(filter)\r\n });\r\n return filters\r\n }\r\n\r\n function createFilter(options) {\r\n var filters = createDimensionFilters(options.rows).concat(createDimensionFilters(options.columns)).concat(createDimensionFilters(options.filters));\r\n var expandedDimensions = options[options.headerName];\r\n var path = options.path;\r\n if (expandedDimensions) {\r\n filters.push(function(dataItem) {\r\n var expandValue;\r\n for (var i = 0; i < path.length; i++) {\r\n expandValue = expandedDimensions[i].selector(dataItem);\r\n if ((0, _data.toComparable)(expandValue, true) !== (0, _data.toComparable)(path[i], true)) {\r\n return false\r\n }\r\n }\r\n return true\r\n })\r\n }\r\n return function(dataItem) {\r\n for (var i = 0; i < filters.length; i++) {\r\n if (!filters[i](dataItem)) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n }\r\n\r\n function loadCore(items, options, notifyProgress) {\r\n var headers = {\r\n columns: [],\r\n rows: [],\r\n columnsHash: {\r\n length: 1\r\n },\r\n rowsHash: {\r\n length: 1\r\n }\r\n };\r\n var values = [];\r\n var aggregationCells;\r\n var data;\r\n var d = new _deferred.Deferred;\r\n var i = 0;\r\n var filter = createFilter(options);\r\n\r\n function processData() {\r\n var t = new Date;\r\n var startIndex = i;\r\n for (; i < items.length; i++) {\r\n if (i > startIndex && i % 1e4 === 0) {\r\n if (new Date - t >= 300) {\r\n notifyProgress(i / items.length);\r\n setTimeout(processData, 0);\r\n return\r\n }\r\n }\r\n data = items[i];\r\n if (filter(data)) {\r\n aggregationCells = generateAggregationCells(data, values, headers, options);\r\n aggregationStep(options.values, aggregationCells, data)\r\n }\r\n }\r\n aggregationFinalize(options.values, values);\r\n notifyProgress(1);\r\n d.resolve({\r\n rows: headers.rows,\r\n columns: headers.columns,\r\n values: values,\r\n grandTotalRowIndex: 0,\r\n grandTotalColumnIndex: 0\r\n })\r\n }\r\n processData();\r\n return d\r\n }\r\n\r\n function filterDataSource(dataSource, fieldSelectors) {\r\n var filter = dataSource.filter();\r\n if (dataSource.store() instanceof _custom_store.default && filter) {\r\n filter = processFilter(filter, fieldSelectors);\r\n return (0, _query.default)(dataSource.items()).filter(filter).toArray()\r\n }\r\n return dataSource.items()\r\n }\r\n\r\n function loadDataSource(dataSource, fieldSelectors, reload) {\r\n var d = new _deferred.Deferred;\r\n var customizeStoreLoadOptionsHandler = function(options) {\r\n if (dataSource.store() instanceof _array_store.default) {\r\n options.storeLoadOptions.filter = processFilter(options.storeLoadOptions.filter, fieldSelectors)\r\n }\r\n };\r\n dataSource.on(\"customizeStoreLoadOptions\", customizeStoreLoadOptionsHandler);\r\n if (!dataSource.isLoaded() || reload) {\r\n var loadDeferred = reload ? dataSource.load() : dataSource.reload();\r\n (0, _deferred.when)(loadDeferred).done(function() {\r\n loadDataSource(dataSource, fieldSelectors).done(function() {\r\n d.resolve(filterDataSource(dataSource, fieldSelectors))\r\n }).fail(d.reject)\r\n }).fail(d.reject)\r\n } else {\r\n d.resolve(filterDataSource(dataSource, fieldSelectors))\r\n }\r\n return d.always(function() {\r\n dataSource.off(\"customizeStoreLoadOptions\", customizeStoreLoadOptionsHandler)\r\n })\r\n }\r\n\r\n function fillSelectorsByFields(selectors, fields) {\r\n fields.forEach(function(field) {\r\n if (field.dataField && \"date\" === field.dataType) {\r\n var valueSelector = getDateValue(getDataSelector(field.dataField));\r\n selectors[field.dataField] = function(data) {\r\n return valueSelector(data)\r\n }\r\n }\r\n })\r\n }\r\n\r\n function getFieldSelectors(options) {\r\n var selectors = {};\r\n if (Array.isArray(options)) {\r\n fillSelectorsByFields(selectors, options)\r\n } else {\r\n if (options) {\r\n [\"rows\", \"columns\", \"filters\"].forEach(function(area) {\r\n options[area] && fillSelectorsByFields(selectors, options[area])\r\n })\r\n }\r\n }\r\n return selectors\r\n }\r\n\r\n function processFilter(filter, fieldSelectors) {\r\n if (!Array.isArray(filter)) {\r\n return filter\r\n }\r\n filter = filter.slice(0);\r\n if ((0, _type.isString)(filter[0]) && (filter[1] instanceof Date || filter[2] instanceof Date)) {\r\n filter[0] = fieldSelectors[filter[0]]\r\n }\r\n for (var i = 0; i < filter.length; i++) {\r\n filter[i] = processFilter(filter[i], fieldSelectors)\r\n }\r\n return filter\r\n }\r\n return {\r\n ctor: function(options) {\r\n this._progressChanged = options.onProgressChanged || _common.noop;\r\n this._dataSource = new _data_source.DataSource(options);\r\n this._dataSource.paginate(false)\r\n },\r\n getFields: function(fields) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n loadDataSource(dataSource, getFieldSelectors(fields)).done(function(data) {\r\n d.resolve((0, _uiPivot_grid.discoverObjectFields)(data, fields))\r\n }).fail(d.reject);\r\n return d\r\n },\r\n key: function() {\r\n return this._dataSource.key()\r\n },\r\n load: function(options) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var d = new _deferred.Deferred;\r\n prepareLoadOption(options);\r\n loadDataSource(dataSource, getFieldSelectors(options), options.reload).done(function(data) {\r\n (0, _deferred.when)(loadCore(data, options, that._progressChanged)).done(d.resolve)\r\n }).fail(d.reject);\r\n return d\r\n },\r\n filter: function() {\r\n var dataSource = this._dataSource;\r\n return dataSource.filter.apply(dataSource, arguments)\r\n },\r\n supportPaging: function() {\r\n return false\r\n },\r\n getDrillDownItems: function(loadOptions, params) {\r\n loadOptions = loadOptions || {};\r\n params = params || {};\r\n prepareLoadOption(loadOptions);\r\n var drillDownItems = [];\r\n var items = this._dataSource.items();\r\n var item;\r\n var maxRowCount = params.maxRowCount;\r\n var customColumns = params.customColumns;\r\n var filter = createFilter(loadOptions);\r\n var pathFilter = createFilter({\r\n rows: (0, _uiPivot_grid.getFiltersByPath)(loadOptions.rows, params.rowPath),\r\n columns: (0, _uiPivot_grid.getFiltersByPath)(loadOptions.columns, params.columnPath),\r\n filters: []\r\n });\r\n for (var i = 0; i < items.length; i++) {\r\n if (pathFilter(items[i]) && filter(items[i])) {\r\n if (customColumns) {\r\n item = {};\r\n for (var j = 0; j < customColumns.length; j++) {\r\n item[customColumns[j]] = items[i][customColumns[j]]\r\n }\r\n } else {\r\n item = items[i]\r\n }\r\n drillDownItems.push(item)\r\n }\r\n if (maxRowCount > 0 && drillDownItems.length === maxRowCount) {\r\n break\r\n }\r\n }\r\n return drillDownItems\r\n }\r\n }\r\n}()).include(_uiPivot_grid.storeDrillDownMixin);\r\nexports.LocalStore = LocalStore;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/remote_store.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 _type = require(\"../../core/utils/type\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _remote_store = require(\"./remote_store.utils\");\r\nvar _date_serialization = _interopRequireDefault(require(\"../../core/utils/date_serialization\"));\r\nvar _utils = require(\"../../data/data_source/utils\");\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 _toConsumableArray(arr) {\r\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread()\r\n}\r\n\r\nfunction _nonIterableSpread() {\r\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")\r\n}\r\n\r\nfunction _unsupportedIterableToArray(o, minLen) {\r\n if (!o) {\r\n return\r\n }\r\n if (\"string\" === typeof o) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n var n = Object.prototype.toString.call(o).slice(8, -1);\r\n if (\"Object\" === n && o.constructor) {\r\n n = o.constructor.name\r\n }\r\n if (\"Map\" === n || \"Set\" === n) {\r\n return Array.from(o)\r\n }\r\n if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\r\n return _arrayLikeToArray(o, minLen)\r\n }\r\n}\r\n\r\nfunction _iterableToArray(iter) {\r\n if (\"undefined\" !== typeof Symbol && null != iter[Symbol.iterator] || null != iter[\"@@iterator\"]) {\r\n return Array.from(iter)\r\n }\r\n}\r\n\r\nfunction _arrayWithoutHoles(arr) {\r\n if (Array.isArray(arr)) {\r\n return _arrayLikeToArray(arr)\r\n }\r\n}\r\n\r\nfunction _arrayLikeToArray(arr, len) {\r\n if (null == len || len > arr.length) {\r\n len = arr.length\r\n }\r\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\r\n arr2[i] = arr[i]\r\n }\r\n return arr2\r\n}\r\n\r\nfunction createGroupingOptions(dimensionOptions, useSortOrder) {\r\n var groupingOptions = [];\r\n (0, _iterator.each)(dimensionOptions, function(index, dimensionOption) {\r\n groupingOptions.push({\r\n selector: dimensionOption.dataField,\r\n groupInterval: dimensionOption.groupInterval,\r\n desc: useSortOrder && \"desc\" === dimensionOption.sortOrder,\r\n isExpanded: index < dimensionOptions.length - 1\r\n })\r\n });\r\n return groupingOptions\r\n}\r\n\r\nfunction getFieldFilterSelector(field) {\r\n var selector = field.dataField;\r\n var groupInterval = field.groupInterval;\r\n if (\"date\" === field.dataType && \"string\" === typeof groupInterval) {\r\n if (\"quarter\" === groupInterval.toLowerCase()) {\r\n groupInterval = \"Month\"\r\n }\r\n selector = selector + \".\" + (0, _uiPivot_grid.capitalizeFirstLetter)(groupInterval)\r\n }\r\n return selector\r\n}\r\n\r\nfunction getIntervalFilterExpression(selector, numericInterval, numericValue, isExcludedFilterType) {\r\n var startFilterValue = [selector, isExcludedFilterType ? \"<\" : \">=\", numericValue];\r\n var endFilterValue = [selector, isExcludedFilterType ? \">=\" : \"<\", numericValue + numericInterval];\r\n return [startFilterValue, isExcludedFilterType ? \"or\" : \"and\", endFilterValue]\r\n}\r\n\r\nfunction getFilterExpressionForFilterValue(field, filterValue) {\r\n var selector = getFieldFilterSelector(field);\r\n var isExcludedFilterType = \"exclude\" === field.filterType;\r\n var expression = [selector, isExcludedFilterType ? \"<>\" : \"=\", filterValue];\r\n if ((0, _type.isDefined)(field.groupInterval)) {\r\n if (\"string\" === typeof field.groupInterval && \"quarter\" === field.groupInterval.toLowerCase()) {\r\n expression = getIntervalFilterExpression(selector, 3, 3 * (filterValue - 1) + 1, isExcludedFilterType)\r\n } else {\r\n if (\"number\" === typeof field.groupInterval && \"date\" !== field.dataType) {\r\n expression = getIntervalFilterExpression(selector, field.groupInterval, filterValue, isExcludedFilterType)\r\n }\r\n }\r\n }\r\n return expression\r\n}\r\n\r\nfunction createFieldFilterExpressions(field, operation) {\r\n var fieldFilterExpressions = [];\r\n if (field.searchValue) {\r\n return [field.dataField, \"contains\", field.searchValue]\r\n }\r\n if (\"exclude\" === field.filterType) {\r\n operation = operation || \"and\"\r\n } else {\r\n operation = operation || \"or\"\r\n }(0, _iterator.each)(field.filterValues, function(index, filterValue) {\r\n var currentExpression = [];\r\n if (Array.isArray(filterValue)) {\r\n var parseLevelsRecursive = field.levels && field.levels.length;\r\n if (parseLevelsRecursive) {\r\n currentExpression = createFieldFilterExpressions({\r\n filterValues: filterValue,\r\n filterType: field.filterType,\r\n levels: field.levels\r\n }, \"and\")\r\n }\r\n } else {\r\n var currentField = field.levels ? field.levels[index] : field;\r\n currentExpression = getFilterExpressionForFilterValue(currentField, filterValue)\r\n }\r\n if (!currentExpression.length) {\r\n return\r\n }\r\n if (fieldFilterExpressions.length) {\r\n fieldFilterExpressions.push(operation)\r\n }\r\n fieldFilterExpressions.push(currentExpression)\r\n });\r\n return fieldFilterExpressions\r\n}\r\n\r\nfunction createFilterExpressions(fields) {\r\n var filterExpressions = [];\r\n (0, _iterator.each)(fields, function(_, field) {\r\n var fieldExpressions = createFieldFilterExpressions(field);\r\n if (!fieldExpressions.length) {\r\n return []\r\n }\r\n if (filterExpressions.length) {\r\n filterExpressions.push(\"and\")\r\n }\r\n filterExpressions.push(fieldExpressions)\r\n });\r\n if (1 === filterExpressions.length) {\r\n filterExpressions = filterExpressions[0]\r\n }\r\n return filterExpressions\r\n}\r\n\r\nfunction mergeFilters(filter1, filter2) {\r\n var mergedFilter;\r\n var notEmpty = function(filter) {\r\n return filter && filter.length\r\n };\r\n if (notEmpty(filter1) && notEmpty(filter2)) {\r\n mergedFilter = [filter1, \"and\", filter2]\r\n } else {\r\n mergedFilter = notEmpty(filter1) ? filter1 : filter2\r\n }\r\n return mergedFilter\r\n}\r\n\r\nfunction createLoadOptions(options, externalFilterExpr, hasRows) {\r\n var filterExpressions = createFilterExpressions(options.filters);\r\n var groupingOptions = createGroupingOptions(options.rows, options.rowTake).concat(createGroupingOptions(options.columns, options.columnTake));\r\n var loadOptions = {\r\n groupSummary: [],\r\n totalSummary: [],\r\n group: groupingOptions.length ? groupingOptions : void 0,\r\n take: groupingOptions.length ? void 0 : 1\r\n };\r\n if (options.rows.length && options.rowTake) {\r\n loadOptions.skip = options.rowSkip;\r\n loadOptions.take = options.rowTake;\r\n loadOptions.requireGroupCount = true\r\n } else {\r\n if (options.columns.length && options.columnTake && !hasRows) {\r\n loadOptions.skip = options.columnSkip;\r\n loadOptions.take = options.columnTake;\r\n loadOptions.requireGroupCount = true\r\n }\r\n }\r\n if (externalFilterExpr) {\r\n filterExpressions = mergeFilters(filterExpressions, externalFilterExpr)\r\n }\r\n if (filterExpressions.length) {\r\n loadOptions.filter = filterExpressions\r\n }(0, _iterator.each)(options.values, function(_, value) {\r\n var summaryOption = {\r\n selector: value.dataField,\r\n summaryType: value.summaryType || \"count\"\r\n };\r\n loadOptions.groupSummary.push(summaryOption);\r\n options.includeTotalSummary && loadOptions.totalSummary.push(summaryOption)\r\n });\r\n return loadOptions\r\n}\r\n\r\nfunction setValue(valuesArray, value, rowIndex, columnIndex, dataIndex) {\r\n valuesArray[rowIndex] = valuesArray[rowIndex] || [];\r\n valuesArray[rowIndex][columnIndex] = valuesArray[rowIndex][columnIndex] || [];\r\n if (!(0, _type.isDefined)(valuesArray[rowIndex][columnIndex][dataIndex])) {\r\n valuesArray[rowIndex][columnIndex][dataIndex] = value\r\n }\r\n}\r\n\r\nfunction parseValue(value, field) {\r\n if (field && \"number\" === field.dataType && (0, _type.isString)(value)) {\r\n return Number(value)\r\n }\r\n if (field && \"date\" === field.dataType && !field.groupInterval && !(value instanceof Date)) {\r\n return _date_serialization.default.deserializeDate(value)\r\n }\r\n return value\r\n}\r\n\r\nfunction parseResult(data, total, descriptions, result) {\r\n var rowPath = [];\r\n var columnPath = [];\r\n var rowHash = result.rowHash;\r\n var columnHash = result.columnHash;\r\n if (total && total.summary) {\r\n (0, _iterator.each)(total.summary, function(index, summary) {\r\n setValue(result.values, summary, result.grandTotalRowIndex, result.grandTotalColumnIndex, index)\r\n })\r\n }\r\n if (total && total.groupCount >= 0) {\r\n var skip = descriptions.rows.length ? descriptions.rowSkip : descriptions.columnSkip;\r\n data = _toConsumableArray(Array(skip)).concat(data);\r\n data.length = total.groupCount\r\n }\r\n\r\n function getItem(dataItem, dimensionName, path, level, field) {\r\n var dimensionHash = result[dimensionName + \"Hash\"];\r\n var parentItem;\r\n var parentItemChildren;\r\n var item;\r\n var pathValue = path.slice(0, level + 1).join(\"/\");\r\n var parentPathValue;\r\n if (void 0 !== dimensionHash[pathValue]) {\r\n item = dimensionHash[pathValue]\r\n } else {\r\n item = {\r\n value: parseValue(dataItem.key, field),\r\n index: result[dimensionName + \"Index\"]++,\r\n displayText: dataItem.displayText\r\n };\r\n parentPathValue = path.slice(0, level).join(\"/\");\r\n if (level > 0 && void 0 !== dimensionHash[parentPathValue]) {\r\n parentItem = dimensionHash[parentPathValue];\r\n parentItemChildren = parentItem.children = parentItem.children || []\r\n } else {\r\n parentItemChildren = result[dimensionName + \"s\"]\r\n }\r\n parentItemChildren.push(item);\r\n dimensionHash[pathValue] = item\r\n }\r\n return item\r\n }(0, _remote_store.forEachGroup)(data, function(item, level) {\r\n var rowLevel = level >= descriptions.rows.length ? descriptions.rows.length : level;\r\n var columnLevel = level >= descriptions.rows.length ? level - descriptions.rows.length : 0;\r\n var columnItem;\r\n var rowItem;\r\n if (level >= descriptions.rows.length && columnLevel >= descriptions.columns.length) {\r\n return\r\n }\r\n if (level < descriptions.rows.length) {\r\n columnPath = []\r\n }\r\n if (level >= descriptions.rows.length) {\r\n if (item) {\r\n columnPath[columnLevel] = item.key + \"\";\r\n columnItem = getItem(item, \"column\", columnPath, columnLevel, descriptions.columns[columnLevel]);\r\n rowItem = rowHash[rowPath.slice(0, rowLevel + 1).join(\"/\")]\r\n } else {\r\n result.columns.push({})\r\n }\r\n } else {\r\n if (item) {\r\n rowPath[rowLevel] = item.key + \"\";\r\n rowItem = getItem(item, \"row\", rowPath, rowLevel, descriptions.rows[rowLevel]);\r\n columnItem = columnHash[columnPath.slice(0, columnLevel + 1).join(\"/\")]\r\n } else {\r\n result.rows.push({})\r\n }\r\n }\r\n var currentRowIndex = rowItem && rowItem.index || result.grandTotalRowIndex;\r\n var currentColumnIndex = columnItem && columnItem.index || result.grandTotalColumnIndex;\r\n (0, _iterator.each)(item && item.summary || [], function(i, summary) {\r\n setValue(result.values, summary, currentRowIndex, currentColumnIndex, i)\r\n })\r\n });\r\n return result\r\n}\r\n\r\nfunction getFiltersForDimension(fields) {\r\n return (fields || []).filter(function(f) {\r\n return f.filterValues && f.filterValues.length || f.searchValue\r\n })\r\n}\r\n\r\nfunction getExpandedIndex(options, axis) {\r\n if (options.headerName) {\r\n if (axis === options.headerName) {\r\n return options.path.length\r\n } else {\r\n if (options.oppositePath) {\r\n return options.oppositePath.length\r\n }\r\n }\r\n }\r\n return 0\r\n}\r\n\r\nfunction getFiltersForExpandedDimension(options) {\r\n return (0, _uiPivot_grid.getFiltersByPath)(options[options.headerName], options.path).concat((0, _uiPivot_grid.getFiltersByPath)(options[\"rows\" === options.headerName ? \"columns\" : \"rows\"], options.oppositePath || []))\r\n}\r\n\r\nfunction getExpandedPathSliceFilter(options, dimensionName, level, firstCollapsedFieldIndex) {\r\n var result = [];\r\n var startSliceIndex = level > firstCollapsedFieldIndex ? 0 : firstCollapsedFieldIndex;\r\n var fields = options.headerName !== dimensionName ? options[dimensionName].slice(startSliceIndex, level) : [];\r\n var paths = \"rows\" === dimensionName ? options.rowExpandedPaths : options.columnExpandedPaths;\r\n (0, _iterator.each)(fields, function(index, field) {\r\n var filterValues = [];\r\n (0, _iterator.each)(paths, function(_, path) {\r\n path = path.slice(startSliceIndex, level);\r\n if (index < path.length) {\r\n var filterValue = path[index];\r\n if (filterValues.indexOf(filterValue) === -1) {\r\n filterValues.push(filterValue)\r\n }\r\n }\r\n });\r\n if (filterValues.length) {\r\n result.push((0, _extend.extend)({}, field, {\r\n filterType: \"include\",\r\n filterValues: filterValues\r\n }))\r\n }\r\n });\r\n return result\r\n}\r\n\r\nfunction getGrandTotalRequest(options, dimensionName, expandedIndex, expandedLevel, commonFilters, firstCollapsedFieldIndex) {\r\n var expandedPaths = (\"columns\" === dimensionName ? options.columnExpandedPaths : options.rowExpandedPaths) || [];\r\n var oppositeDimensionName = \"columns\" === dimensionName ? \"rows\" : \"columns\";\r\n var fields = options[dimensionName];\r\n var result = [];\r\n var newOptions;\r\n if (expandedPaths.length) {\r\n for (var i = expandedIndex; i < expandedLevel + 1; i++) {\r\n newOptions = {\r\n filters: commonFilters.concat(getExpandedPathSliceFilter(options, dimensionName, i, firstCollapsedFieldIndex))\r\n };\r\n newOptions[dimensionName] = fields.slice(expandedIndex, i + 1);\r\n newOptions[oppositeDimensionName] = [];\r\n result.push((0, _extend.extend)({}, options, newOptions))\r\n }\r\n } else {\r\n newOptions = {\r\n filters: commonFilters\r\n };\r\n newOptions[dimensionName] = fields.slice(expandedIndex, expandedLevel + 1);\r\n newOptions[oppositeDimensionName] = [];\r\n result.push((0, _extend.extend)({}, options, newOptions))\r\n }\r\n result[0].includeTotalSummary = true;\r\n return result\r\n}\r\n\r\nfunction getFirstCollapsedIndex(fields) {\r\n var firstCollapsedIndex = 0;\r\n (0, _iterator.each)(fields, function(index, field) {\r\n if (!field.expanded) {\r\n firstCollapsedIndex = index;\r\n return false\r\n }\r\n });\r\n return firstCollapsedIndex\r\n}\r\n\r\nfunction getRequestsData(options) {\r\n var rowExpandedLevel = (0, _uiPivot_grid.getExpandedLevel)(options, \"rows\");\r\n var columnExpandedLevel = (0, _uiPivot_grid.getExpandedLevel)(options, \"columns\");\r\n var filters = options.filters || [];\r\n var columnExpandedIndex = getExpandedIndex(options, \"columns\");\r\n var firstCollapsedColumnIndex = getFirstCollapsedIndex(options.columns);\r\n var firstCollapsedRowIndex = getFirstCollapsedIndex(options.rows);\r\n var rowExpandedIndex = getExpandedIndex(options, \"rows\");\r\n var data = [];\r\n filters = filters.concat(getFiltersForDimension(options.rows)).concat(getFiltersForDimension(options.columns)).concat(getFiltersForExpandedDimension(options));\r\n var columnTotalsOptions = getGrandTotalRequest(options, \"columns\", columnExpandedIndex, columnExpandedLevel, filters, firstCollapsedColumnIndex);\r\n if (options.rows.length && options.columns.length) {\r\n if (\"rows\" !== options.headerName) {\r\n data = data.concat(columnTotalsOptions)\r\n }\r\n for (var i = rowExpandedIndex; i < rowExpandedLevel + 1; i++) {\r\n var rows = options.rows.slice(rowExpandedIndex, i + 1);\r\n var rowFilterByExpandedPaths = getExpandedPathSliceFilter(options, \"rows\", i, firstCollapsedRowIndex);\r\n for (var j = columnExpandedIndex; j < columnExpandedLevel + 1; j++) {\r\n var preparedOptions = (0, _extend.extend)({}, options, {\r\n columns: options.columns.slice(columnExpandedIndex, j + 1),\r\n rows: rows,\r\n filters: filters.concat(getExpandedPathSliceFilter(options, \"columns\", j, firstCollapsedColumnIndex)).concat(rowFilterByExpandedPaths)\r\n });\r\n data.push(preparedOptions)\r\n }\r\n }\r\n } else {\r\n data = options.columns.length ? columnTotalsOptions : getGrandTotalRequest(options, \"rows\", rowExpandedIndex, rowExpandedLevel, filters, firstCollapsedRowIndex)\r\n }\r\n return data\r\n}\r\n\r\nfunction prepareFields(fields) {\r\n (0, _iterator.each)(fields || [], function(_, field) {\r\n var levels = field.levels;\r\n if (levels) {\r\n prepareFields(levels)\r\n }(0, _uiPivot_grid.setDefaultFieldValueFormatting)(field)\r\n })\r\n}\r\nvar _default = _class.default.inherit(function() {\r\n return {\r\n ctor: function(options) {\r\n this._dataSource = new _data_source.DataSource(options);\r\n this._store = this._dataSource.store()\r\n },\r\n getFields: function(fields) {\r\n var d = new _deferred.Deferred;\r\n this._store.load({\r\n skip: 0,\r\n take: 20\r\n }).done(function(data) {\r\n var normalizedArguments = (0, _utils.normalizeLoadResult)(data);\r\n d.resolve((0, _uiPivot_grid.discoverObjectFields)(normalizedArguments.data, fields))\r\n }).fail(d.reject);\r\n return d\r\n },\r\n key: function() {\r\n return this._store.key()\r\n },\r\n load: function(options) {\r\n var that = this;\r\n var d = new _deferred.Deferred;\r\n var result = {\r\n rows: [],\r\n columns: [],\r\n values: [],\r\n grandTotalRowIndex: 0,\r\n grandTotalColumnIndex: 0,\r\n rowHash: {},\r\n columnHash: {},\r\n rowIndex: 1,\r\n columnIndex: 1\r\n };\r\n var requestsData = getRequestsData(options);\r\n var deferreds = [];\r\n prepareFields(options.rows);\r\n prepareFields(options.columns);\r\n prepareFields(options.filters);\r\n (0, _iterator.each)(requestsData, function(_, dataItem) {\r\n deferreds.push(that._store.load(createLoadOptions(dataItem, that.filter(), options.rows.length)))\r\n });\r\n _deferred.when.apply(null, deferreds).done(function() {\r\n var args = deferreds.length > 1 ? arguments : [arguments];\r\n (0, _iterator.each)(args, function(index, argument) {\r\n var normalizedArguments = (0, _utils.normalizeLoadResult)(argument[0], argument[1]);\r\n parseResult(normalizedArguments.data, normalizedArguments.extra, requestsData[index], result)\r\n });\r\n d.resolve({\r\n rows: result.rows,\r\n columns: result.columns,\r\n values: result.values,\r\n grandTotalRowIndex: result.grandTotalRowIndex,\r\n grandTotalColumnIndex: result.grandTotalColumnIndex\r\n })\r\n }).fail(d.reject);\r\n return d\r\n },\r\n filter: function() {\r\n return this._dataSource.filter.apply(this._dataSource, arguments)\r\n },\r\n supportPaging: function() {\r\n return false\r\n },\r\n createDrillDownDataSource: function(loadOptions, params) {\r\n loadOptions = loadOptions || {};\r\n params = params || {};\r\n var store = this._store;\r\n var filters = (0, _uiPivot_grid.getFiltersByPath)(loadOptions.rows, params.rowPath).concat((0, _uiPivot_grid.getFiltersByPath)(loadOptions.columns, params.columnPath)).concat(getFiltersForDimension(loadOptions.rows)).concat(loadOptions.filters || []).concat(getFiltersForDimension(loadOptions.columns));\r\n var filterExp = createFilterExpressions(filters);\r\n return new _data_source.DataSource({\r\n load: function(loadOptions) {\r\n return store.load((0, _extend.extend)({}, loadOptions, {\r\n filter: mergeFilters(filterExp, loadOptions.filter),\r\n select: params.customColumns\r\n }))\r\n }\r\n })\r\n }\r\n }\r\n}());\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/remote_store.utils.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.forEachGroup = void 0;\r\nvar forEachGroup = function forEachGroup(data, callback, level) {\r\n data = data || [];\r\n level = level || 0;\r\n for (var i = 0; i < data.length; i++) {\r\n var group = data[i];\r\n callback(group, level);\r\n if (group && group.items && group.items.length) {\r\n forEachGroup(group.items, callback, level + 1)\r\n }\r\n }\r\n};\r\nexports.forEachGroup = forEachGroup;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/data_source.utils.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.sort = sort;\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction sort(loadOptions, dataSource, getAscOrder) {\r\n sortDimension(dataSource, loadOptions, \"rows\", getAscOrder);\r\n sortDimension(dataSource, loadOptions, \"columns\", getAscOrder)\r\n}\r\n\r\nfunction sortDimension(dataSource, loadOptions, dimensionName, getAscOrder) {\r\n var fields = loadOptions[dimensionName] || [];\r\n var baseIndex = loadOptions.headerName === dimensionName ? loadOptions.path.length : 0;\r\n var sortingMethodByLevel = [];\r\n (0, _uiPivot_grid.foreachDataLevel)(dataSource[dimensionName], function(item, index) {\r\n var field = fields[index] || {};\r\n var sortingMethod = sortingMethodByLevel[index] = sortingMethodByLevel[index] || getSortingMethod(field, dataSource, loadOptions, dimensionName, getAscOrder);\r\n item.sort(sortingMethod)\r\n }, baseIndex)\r\n}\r\n\r\nfunction getSortingMethod(field, dataSource, loadOptions, dimensionName, getAscOrder) {\r\n var sortOrder = getAscOrder ? \"asc\" : field.sortOrder;\r\n var sortBy = getMemberForSortBy(field.sortBy, getAscOrder);\r\n var defaultCompare = field.sortingMethod ? function(a, b) {\r\n return field.sortingMethod(a, b)\r\n } : (0, _uiPivot_grid.getCompareFunction)(function(item) {\r\n return item[sortBy]\r\n });\r\n var summaryValueSelector = !getAscOrder && getFieldSummaryValueSelector(field, dataSource, loadOptions, dimensionName);\r\n var summaryCompare = summaryValueSelector && (0, _uiPivot_grid.getCompareFunction)(summaryValueSelector);\r\n var sortingMethod = function(a, b) {\r\n var result = summaryCompare && summaryCompare(a, b) || defaultCompare(a, b);\r\n return \"desc\" === sortOrder ? -result : result\r\n };\r\n return sortingMethod\r\n}\r\n\r\nfunction getFieldSummaryValueSelector(field, dataSource, loadOptions, dimensionName) {\r\n var values = dataSource.values;\r\n var sortBySummaryFieldIndex = (0, _uiPivot_grid.findField)(loadOptions.values, field.sortBySummaryField);\r\n var areRows = \"rows\" === dimensionName;\r\n var sortByDimension = areRows ? dataSource.columns : dataSource.rows;\r\n var grandTotalIndex = areRows ? dataSource.grandTotalRowIndex : dataSource.grandTotalColumnIndex;\r\n var sortBySummaryPath = field.sortBySummaryPath || [];\r\n var sliceIndex = sortBySummaryPath.length ? getSliceIndex(sortByDimension, sortBySummaryPath) : grandTotalIndex;\r\n if (values && values.length && sortBySummaryFieldIndex >= 0 && (0, _type.isDefined)(sliceIndex)) {\r\n return function(field) {\r\n var rowIndex = areRows ? field.index : sliceIndex;\r\n var columnIndex = areRows ? sliceIndex : field.index;\r\n var value = ((values[rowIndex] || [\r\n []\r\n ])[columnIndex] || [])[sortBySummaryFieldIndex];\r\n return (0, _type.isDefined)(value) ? value : null\r\n }\r\n }\r\n}\r\n\r\nfunction getMemberForSortBy(sortBy, getAscOrder) {\r\n var member = \"text\";\r\n if (\"none\" === sortBy) {\r\n member = \"index\"\r\n } else {\r\n if (getAscOrder || \"displayText\" !== sortBy) {\r\n member = \"value\"\r\n }\r\n }\r\n return member\r\n}\r\n\r\nfunction getSliceIndex(items, path) {\r\n var index = null;\r\n var pathValue = (path || []).join(\".\");\r\n if (pathValue.length) {\r\n (0, _uiPivot_grid.foreachTree)(items, function(items) {\r\n var item = items[0];\r\n var itemPath = (0, _uiPivot_grid.createPath)(items).join(\".\");\r\n var textPath = (0, _iterator.map)(items, function(item) {\r\n return item.text\r\n }).reverse().join(\".\");\r\n if (pathValue === itemPath || item.key && textPath === pathValue) {\r\n index = items[0].index;\r\n return false\r\n }\r\n })\r\n }\r\n return index\r\n}\r\n","/**\r\n * DevExtreme (ui/pivot_grid_field_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\nexports.default = void 0;\r\nvar _uiPivot_grid = _interopRequireDefault(require(\"./pivot_grid/ui.pivot_grid.field_chooser\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _uiPivot_grid.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/overlay.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(\"./overlay/ui.overlay\"));\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/number_box.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 _number_box = _interopRequireDefault(require(\"./number_box/number_box\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _number_box.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n"],"sourceRoot":""}