{"version":3,"sources":["webpack:///./node_modules/devextreme/ui/pivot_grid/data_source.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.field_chooser.js","webpack:///./node_modules/devextreme/ui/pager.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.utils.js","webpack:///./node_modules/devextreme/ui/pivot_grid.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.data_controller.js","webpack:///./node_modules/devextreme/ui/pivot_grid/local_store.js","webpack:///./node_modules/devextreme/ui/pivot_grid/remote_store.js","webpack:///./node_modules/devextreme/ui/pivot_grid/remote_store.utils.js","webpack:///./node_modules/devextreme/ui/pivot_grid/data_source.utils.js","webpack:///./node_modules/devextreme/ui/pivot_grid/xmla_store/xmla_store.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.summary_display_modes.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.data_area.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.headers_area.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.fields_area.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.sortable.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.export.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.chart_integration.js","webpack:///./node_modules/devextreme/ui/pivot_grid_field_chooser.js","webpack:///./node_modules/devextreme/ui/popover.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.area_item.js","webpack:///./node_modules/devextreme/ui/pivot_grid/ui.pivot_grid.field_chooser_base.js","webpack:///./node_modules/devextreme/ui/popup.js"],"names":["exports","default","_utils","_abstract_store","_interopRequireDefault","_common","_type","_extend","_array","_iterator","_deferred","_class","_events_strategy","_inflector","_local_store","_remote_store","_data_source","_xmla_store","_uiPivot_grid","_uiPivot_grid2","obj","__esModule","DESCRIPTION_NAME_BY_AREA","row","column","data","filter","STATE_PROPERTIES","CALCULATED_PROPERTIES","ALL_CALCULATED_PROPERTIES","concat","resetFieldState","field","properties","initialProperties","_initProperties","each","_","prop","Object","prototype","hasOwnProperty","call","updateCalculatedFieldProperties","calculatedProperties","isDefined","caption","setFieldProperty","dataField","groupName","summaryType","toLowerCase","isString","groupInterval","replace","toUpperCase","length","titleize","createCaption","isDataExists","rows","columns","values","_default","inherit","findHeaderItem","headerItems","path","_cacheByPath","join","getHeaderItemsLastIndex","grandTotalIndex","i","headerItem","lastIndex","index","Math","max","children","collapsedChildren","updateHeaderItemChildren","applyingHeaderItemsCount","emptyIndex","applyingItemIndexesToCurrent","needIndexUpdate","d","Deferred","child","when","foreachTreeAsync","items","done","resolve","updateHeaderItems","newHeaderItems","newItems","newItem","createPath","slice","parentItems","updateDataSourceCells","dataSource","newDataSourceCells","newRowItemIndexesToCurrent","newColumnItemIndexesToCurrent","newRowIndex","newColumnIndex","newRowCells","newCell","rowIndex","columnIndex","dataSourceCells","grandTotalRowIndex","grandTotalColumnIndex","createLocalOrRemoteStore","dataSourceOptions","notifyProgress","remoteOperations","paginate","LocalStore","extend","normalizeDataSourceOptions","onChanged","onLoadingChanged","onProgressChanged","getExpandedPaths","loadOptions","dimensionName","prevLoadOptions","result","fields","prevFields","foreachTree","item","expanded","count","equalFields","push","setFieldProperties","srcField","skipInitPropertySave","name","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","apply","forEach","maxGroupIndex","f","isNumeric","map","reduce","prev","current","assignGroupIndexes","getFields","that","mergedFields","store","_store","_fields","_storeFields","_retrieveFields","fail","reject","formatHeaderItems","headerName","text","formatValue","value","formatHeaders","updateCache","cacheByPath","_getAreaFields","area","areaFields","canAddFieldInArea","visible","isAreaField","this","ctor","options","_eventsStrategy","EventsStrategy","storeOptions","isPlainObject","load","type","XmlaStore","Array","isArray","createStore","progress","fireEvent","_paginate","_pageSize","pageSize","_data","_loadingCount","_isFieldsModified","eventName","optionName","on","bind","retrieveFields","_descriptions","descriptions","_createDescriptions","getData","getAreaFields","collectGroups","_fieldsPrepared","levels","findField","optionValue","isInitialization","inArray","getFieldValues","applyFilters","searchValue","loadFields","filters","filterValues","skipValues","columnSkip","skip","columnTake","take","sortOrder","sortBySummaryField","_sort","reload","arguments","loadTask","_delayedLoadTask","_loadCore","_loadErrorHandler","beginLoading","e","always","endLoading","executeAsync","createDrillDownDataSource","params","currentField","areaName","normalizeIndexes","descriptionName","dimension","groupingField","sortBy","sortBySummaryPath","showTotals","showGrandTotals","a","b","getFieldsByGroup","indices","expression","calculateSummaryValue","isFunction","createMockSummaryCell","currentFieldState","isLoading","state","_state","skipLoading","columnExpandedPaths","_lastLoadOptions","rowExpandedPaths","_changeLoadingCount","increment","oldLoading","newLoading","_hasPagingValues","oppositeIndex","takeField","skipField","oppositeArea","oppositePath","_headerItem","every","_processPagingCacheByArea","_headerItem2","start","floor","end","ceil","_processPagingCache","storeLoadOptions","deferred","rowTake","_update","results","_options","isLast","applyPartialDataSource","mergePartialDataSource","getAscOrder","supportPaging","isEmpty","dataFields","loadedData","expressionsUsed","some","summaryDisplayMode","areExpressionsUsed","applyDisplaySummaryMode","runningTotal","isRunningTotalUsed","applyRunningTotal","collapseHeaderItem","collapseAll","_this","dataChanged","areaOffsets","indexOf","expandAll","expandHeaderItem","hasCache","needExpandData","oppositeHeaderItem","oppositeHeaderItems","eventHandler","off","dispose","delayedLoadTask","abort","_isDisposed","isDisposed","module","_renderer","_icon","_window","_message","_component_registrator","_tree_view","_context_menu","DIV","hasWindow","getFirstItem","condition","childrenItem","compareOrder","isMeasure","getCompareFunction","compareItems","getScrollable","container","find","dxScrollable","FieldChooser","_getDefaultOptions","callBase","height","layout","onContextMenuPreparing","allowSearch","searchTimeout","texts","columnFields","format","rowFields","filterFields","allFields","_refreshDataSource","_expandedPaths","_changedHandler","_dataChangedHandlers","func","_fireContentReadyAction","_skipStateChange","option","_dataSource","_disposeDataSource","_dispose","_init","_initActions","_actions","_createActionByOption","_trigger","eventArg","_setOptionsByReference","_optionsByReference","_optionChanged","args","_invalidate","_clean","skipStateSetting","$element","remove","_renderLayout0","$container","addClass","$row1","appendTo","$row2","$col1","$col2","$col3","$col4","_renderArea","_renderLayout1","_renderLayout2","_initMarkup","currentState","_renderContentImpl","renderSortable","_renderContextMenu","updateDimensions","_getContextMenuArgs","dxEvent","targetFieldElement","target","closest","targetGroupElement","fieldCopy","getDataSource","attr","event","_contextMenu","_createComponent","onPositioning","actionArgs","component","cancel","onItemClick","itemData","cssClass","_createTreeItems","groupFieldNames","resultItems","groupedItems","groupFieldName","fieldsByGroup","currentPath","key","icon","selected","isDefault","_createFieldsDataSource","treeItems","foreachDataLevel","_renderFieldsTreeView","treeView","showCheckBoxesMode","expandNodesRecursive","searchEnabled","itemTemplate","itemIndex","itemElement","getImageContainer","toggleClass","onItemCollapsed","splice","onItemExpanded","onItemSelectionChanged","needSelectDefaultItem","unselectItem","_processDemandState","getDimensionFields","selectItem","_applyChanges","scrollable","scrollTop","scrollTo","y","update","_renderAreaFields","empty","renderField","$fieldsContent","render","$areaContainer","$fieldsHeaderContainer","html","$fieldsContainer","_getSortableOptions","_adjustSortableOnChangedArgs","resetTreeView","dxTreeView","applyChanges","cancelChanges","_visibilityChanged","_events_engine","_string","_click","_pointer","_ui","_select_box","_number_box","_index","_accessibility","Page","_$page","_value","parseInt","element","select","rootElement","rtlEnabled","prependTo","Pager","pagesNavigatorVisible","pageIndex","maxPagesCount","pageCount","totalCount","showPageSizes","pageSizes","hasKnownLastPage","showNavigationButtons","showInfo","infoText","getFormatter","pagesCountText","lightModeEnabled","pageIndexChanged","noop","pageSizeChanged","_toggleVisibility","css","_getPages","currentPage","firstValue","pages","showMoreButton","pagesCount","PAGES_LIMITER","_getPageByValue","page","_pages","_processSelectedPage","selectedPageIndex","isPageIndexValid","selectedPage","_selectPageByValue","nextPage","morePage","pagesLength","prevPage","pop","_updatePagesTabIndices","$selectedPage","updatePageIndices","buttons","_nextPage","direction","_wrapClickAction","action","_this2","_pointerUpHappened","_renderPages","$separator","clickPagesIndexAction","_createAction","pageNumber","Number","_pageClickHandler","_$pagesChooser","addNamespace","up","Name","registerKeyboardAction","setAria","role","label","setTabIndex","_calculateLightPagesWidth","$pageIndex","toString","_renderLightPages","clickAction","_pageIndexEditor","min","width","onValueChanged","PAGER_INFO_TEXT_CLASS","$pageCount","_renderPagesChooser","_renderInfo","_renderNavigateButton","_updatePagesChooserWidth","_renderPageSizes","pageSizeValue","$pageSize","pagesSizesLength","currentPageSize","clickPagesSizeAction","_$pagesSizeChooser","append","_calculateLightPageSizesWidth","_renderLightPageSizes","$editor","_pageSizeEditor","onSelectionChanged","selectedItem","_renderPagesSizeChooser","_pagesSizeChooserWidth","_$info","_isInfoHide","_infoWidth","outerWidth","$button","_updatePageSizes","_updatePages","restoreFocus","_render","_updateLightMode","forceRender","_updateButtonsState","_isPageIndexInvalid","isNextDirection","nextButton","prevButton","_pageKeyDownHandler","_getMinPagerWidth","_pagesChooserWidth","deferUpdater","lastPageWidth","infoWidth","deferRender","deferUpdate","_previousWidth","_dimensionChanged","getHeight","outerHeight","sendRequest","_ajax","valueText","_format_helper","formatObject","customizeText","valueSelector","valueA","valueB","aIsDefined","bIsDefined","callback","childrenField","mergeArraysByMaxValue","values1","values2","getExpandedLevel","axisName","dimensions","expandLevel","expandedPaths","discoverObjectFields","fieldsDataType","parseFields","fieldsList","keys","dataIndex","getter","compileGetter","displayFolder","setDefaultFieldValueFormatting","DATE_INTERVAL_FORMATS","secondValue","secondValueText","getFiltersByPath","filterType","capitalizeFirstLetter","string","charAt","storeDrillDownMixin","_date","_array_store","property","initProperties","initValue","foreachTreeAsyncDate","Date","createForeachTreeFunc","isAsync","foreachTreeFunc","parentAtFirst","members","isChildrenProcessing","createForeachTreeAsyncHandler","setTimeout","unshift","childrenDeferred","shift","month","getMonthNames","quarter","dayOfWeek","getDayNames","getDrillDownItems","createCustomStoreMethod","methodName","DataSource","_browser","_element","_uiGrid_core","_uiPivot_grid3","_uiPivot_grid4","_size","_uiPivot_grid5","_uiPivot_grid6","_uiPivot_grid7","_uiPivot_grid8","_uiPivot_grid9","_popup","window","getWindow","TR","TD","FIELD_CALCULATED_OPTIONS","getArraySum","array","sum","adjustSizeArray","sizeArray","space","delta","unsubscribeScrollEvents","scrollBarInfoCache","getCommonBorderWidth","elements","borderStyleNames","elem","computedStyle","getComputedStyle","get","borderStyleName","parseFloat","PivotGrid","scrolling","timeout","renderingThreshold","minTimeout","mode","useNative","removeInvisiblePages","virtualRowHeight","virtualColumnWidth","loadTwoPagesOnStart","encodeHtml","activeStateEnabled","fieldChooser","minWidth","minHeight","enabled","title","applyChangesMode","allowSorting","allowSortingBySummary","allowFiltering","allowExpandAll","wordWrapEnabled","fieldPanel","showColumnFields","showFilterFields","showDataFields","showRowFields","allowFieldDragging","columnFieldArea","rowFieldArea","filterFieldArea","dataFieldArea","fileName","proxyUrl","ignoreExcelErrors","showRowTotals","showRowGrandTotals","showColumnTotals","showColumnGrandTotals","hideEmptySummaryCells","showTotalsPrior","rowHeaderLayout","loadPanel","showIndicator","indicatorSrc","showPane","grandTotal","total","noData","showFieldChooser","sortColumnBySummary","sortRowBySummary","removeAllSorting","exportToExcel","dataNotAvailable","onCellClick","onCellPrepared","showBorders","stateStoring","storageKey","customLoad","customSave","savingTimeout","onExpandValueChanging","renderCellCountLimit","onExporting","onExported","onFileSaving","headerFilter","showRelevantValues","emptyValue","ok","_updateCalculatedOptions","isCalculated","_getDataControllerOptions","onFieldsPrepared","_initDataController","_dataController","DataController","changed","add","scrollChanged","_scrollLeft","left","_scrollTop","top","loadingChanged","_updateLoading","progressChanged","dataSourceChanged","expandValueChanging","_fieldChooserPopup","hide","_renderFieldChooser","updateViewOptions","_renderLoadPanel","_dataArea","groupElement","_renderDescriptionArea","_tableElement","_hasHeight","resize","_updateScrollPosition","columnsArea","rowsArea","dataArea","scrollLeft","scrolled","_scrollUpdating","hasScroll","x","updateWindowScrollPosition","_subscribeToEvents","scrollHandler","scrollOffset","leftOffset","topOffset","setViewportPosition","handler","subscribeToScrollEvent","subscribeToWindowScrollEvents","_needDelayResizing","cellsInfo","_pivotGridContainer","fieldChooserOptions","toolbarItems","toolbar","location","widget","onClick","$content","dxPivotGridFieldChooser","fieldChooserComponentOptions","popupOptions","shading","showCloseButton","resizeEnabled","onResize","onShown","content","onHidden","targetElement","cellIndex","_createEventArgs","_getContextMenuItems","oppositeAreaFields","cell","beginGroup","sortingBySummaryItemCount","showDataFieldCaption","textFormat","checked","show","$targetElement","_createFieldArgs","_createCellArgs","cellElement","$cellElement","parentElement","$table","getPublicElement","_handleCellClick","currentTarget","_getNoDataText","_renderNoDataText","renderNoDataText","renderLoadPanel","_loadPanel","loadPanelVisible","_startLoadingTime","clearTimeout","_hideLoadingTimeoutID","removeClass","$targetContainer","$descriptionCell","$toolbarContainer","$filterHeader","$columnHeader","$buttonElement","buttonOptions","hint","getFieldChooserPopup","_$buttonElement","_buttonOptions","_detectHasContainerHeight","style","is","testElement","_renderHeaders","rowHeaderContainer","columnHeaderContainer","filterHeaderContainer","dataHeaderContainer","_rowFields","FieldsArea","_columnFields","_filterFields","_dataFields","dxPivotGridFieldChooserBase","_createTableElement","_renderDataArea","dataAreaElement","DataArea","getCellsInfo","_renderRowsArea","rowsAreaElement","_rowsArea","VerticalHeadersArea","getRowsInfo","_renderColumnsArea","columnsAreaElement","_columnsArea","HorizontalHeadersArea","getColumnsInfo","tableElement","isFirstDrawing","msie","prepend","headElement","parent","processScroll","updateHandler","getScrollPath","first","addWidgetPrefix","className","isReady","groupWidth","bordersWidth","hasRowsScroll","hasColumnsScroll","totalWidth","totalHeight","rowsAreaWidth","scrollingOptions","scrollBarInfo","useNativeScrolling","scrollBarWidth","position","visibility","useSimulatedScrollbar","scrollBarUseNative","getScrollBarInfo","dataAreaCell","rowAreaCell","columnAreaCell","descriptionCell","filterHeaderCell","columnHeaderCell","rowFieldsHeader","needSynchronizeFieldPanel","isVisible","updateColspans","getColumnsCount","reset","calculateHasScroll","areaSize","totalSize","calculateGroupHeight","dataAreaHeight","resultWidths","getColumnsWidth","rowHeights","getRowsHeight","rowsAreaHeights","dataAreaHeights","descriptionCellHeight","getSize","paddings","borders","margins","columnsAreaRowCount","resultHeights","columnsAreaRowHeights","columnsAreaHeight","rowsAreaColumnWidths","filterAreaHeight","$dataHeader","dataHeaderHeight","elementWidth","diff","groupHeight","setRowsHeight","processScrollBarSpacing","setColumnsWidth","_diff","_diff2","_groupHeight","virtualContentParams","calculateVirtualContentParams","itemWidths","itemHeights","rowCount","columnCount","viewportWidth","viewportHeight","setVirtualContentParams","contentTop","contentLeft","updateScrollableResults","updateScrollable","ExportMixin","include","_callbacks","_extend2","_uiGrid_core2","_uiGrid_core3","_defineProperty","defineProperty","enumerable","configurable","writable","math","proxyMethod","instance","defaultResult","formatCellValue","errorText","createHeaderInfo","addInfoItem","info","breadth","infoItem","depthIndex","isHorizontal","addInfoItemCore","isTree","sorted","isMetric","depthSize","dataSourceIndex","isWhiteSpace","createInfoItem","depth","getViewHeaderItems","headerDescriptions","cellDescriptions","cellDescriptionsCount","viewHeaderItems","headerDescriptionsCount","childrenStack","createHeaderItem","displayText","createViewHeaderItems","isEmptyGrandTotal","hideTotals","hiddenTotals","hideData","hiddenValues","parentChildren","isAdditionalTotal","addAdditionalTotalHeaderItems","isGrandTotal","isTotal","isValue","hiddenGrandTotals","addMetricHeaderItems","showEmpty","removeEmptyParent","removeHiddenItems","sortBySummaryPaths","stringValuesUsed","reverse","isItemSorted","description","getHeaderItemText","node","getHeaderItemsDepth","indexesByDepth","fillHeaderInfo","createSortPaths","headerFields","headerField","fieldIndex","foreachRowInfo","rowsInfo","columnOffset","columnOffsetResetIndexes","j","visibleIndex","rowspan","getHeaderIndexedItems","indexedItems","indexedItem","createScrollController","dataController","dataAdapter","VirtualScrollController","totalItemsCount","updateLoading","itemsCount","viewportItems","changingDuration","_changingDuration","virtualScrollControllerChanged","_fireChanged","_createDataSource","_rowsScrollController","totalRowCount","rowPageIndex","rowPageSize","handleDataChanged","_columnsScrollController","totalColumnCount","columnPageIndex","columnPageSize","_stateStoringController","StateStoringController","init","_columnsInfo","_rowsInfo","_cellsInfo","startChanging","_lockChanged","fire","_correctSkipsTakes","rowSkip","rowSpan","skips","takes","endIndex","_calculatePagingForRowExpandedPaths","rowExpandedSkips","rowExpandedTakes","expandedPathIndexes","expandIndex","level","_calculatePagingForColumnExpandedPaths","expandedSkips","expandedTakes","skipByPath","takeByPath","foreachColumnInfo","columnInfo","colspan","_processPagingForExpandedPaths","_savePagingForExpandedPaths","isOppositeArea","_handleCustomizeStoreLoadOptions","rowsScrollController","beginPageIndex","endPageIndex","columnsScrollController","stateStoringController","isEnabled","isLoaded","contentParams","viewportItemSize","viewportSize","setContentSize","loadIfNeed","getViewportPosition","getContentOffset","getVirtualContentSize","_handleExpandValueChanging","_handleLoadingChanged","_handleProgressChanged","_handleFieldsPrepared","_isSharedDataSource","_expandValueChangingHandler","_loadingChangedHandler","_fieldsPreparedHandler","_customizeStoreLoadOptionsHandler","_progressChangedHandler","dataFieldsForRows","dataFieldsForColumns","getHiddenTotals","showValues","getHiddenValues","getHiddenGrandTotalsTotals","grandTotalsAreHiddenForNotAllDataFields","rowOptions","isEmptyGrandTotalRow","columnOptions","isEmptyGrandTotalColumn","columnsInfo","save","getAllData","scrollController","startIndex","newRowsInfo","maxDepth","rowInfo","realColumnIndex","createColumnsInfo","_rowPageIndex","size","_rowPageSize","_columnPageSize","_columnPageIndex","dataFieldAreaInRows","dataRow","cellValue","columnType","rowType","rowPath","columnPath","createCellsInfo","_query","_date_serialization","_custom_store","DATE_INTERVAL_SELECTORS","year","date","getFullYear","getMonth","day","getDate","getDay","getDataSelector","getDateValue","dataSelector","deserializeDate","prepareFields","fieldSelector","intervalSelector","selector","generateHierarchyItems","headers","fillHierarchyItemIndexesCore","indexes","pathHash","dimensionValue","hierarchyItem","expandedPathsHash","hierarchyItems","childrenHash","addHierarchyItem","hash","generateAggregationCells","cells","cellSet","rowIndexes","columnIndexes","fillHashExpandedPath","pathValue","prepareLoadOption","getAggregator","calculateCustomSummary","seed","summaryProcess","totalValue","step","finalize","aggregators","aggregationStep","measures","aggregationCells","aggregatorIndex","cellField","aggregator","isAggregatorSeedFunction","cellSetIndex","areValuesEqual","filterValue","fieldValue","valueOfFilter","valueOf","valueOfField","createDimensionFilters","dataItem","getGroupValue","createFilter","expandedDimensions","expandValue","toComparable","loadCore","columnsHash","rowsHash","processData","t","filterDataSource","fieldSelectors","processFilter","toArray","loadDataSource","customizeStoreLoadOptionsHandler","loadDeferred","fillSelectorsByFields","selectors","getFieldSelectors","_progressChanged","drillDownItems","maxRowCount","customColumns","pathFilter","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","o","minLen","n","constructor","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","createGroupingOptions","dimensionOptions","useSortOrder","groupingOptions","dimensionOption","desc","isExpanded","getIntervalFilterExpression","numericInterval","numericValue","isExcludedFilterType","getFilterExpressionForFilterValue","getFieldFilterSelector","createFilterExpressions","filterExpressions","fieldExpressions","createFieldFilterExpressions","operation","fieldFilterExpressions","currentExpression","mergeFilters","filter1","filter2","notEmpty","setValue","valuesArray","parseValue","parseResult","rowHash","columnHash","summary","groupCount","getItem","parentItem","parentPathValue","dimensionHash","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","columnExpandedLevel","columnExpandedIndex","firstCollapsedColumnIndex","firstCollapsedRowIndex","rowExpandedIndex","columnTotalsOptions","getFiltersForExpandedDimension","rowFilterByExpandedPaths","preparedOptions","requestsData","deferreds","externalFilterExpr","hasRows","groupSummary","totalSummary","group","requireGroupCount","summaryOption","createLoadOptions","argument","filterExp","sortDimension","baseIndex","sortingMethodByLevel","sortingMethod","member","getMemberForSortBy","defaultCompare","summaryValueSelector","sortBySummaryFieldIndex","areRows","sortByDimension","sliceIndex","itemPath","textPath","getSliceIndex","getFieldSummaryValueSelector","summaryCompare","getSortingMethod","_errors","_language_codes","errors","discover","mdx","execXMLA","requestOptions","beforeSend","ajaxSettings","url","xhrFields","method","xml","parser","DOMParser","parseFromString","getElementsByTagName","childNodes","Error","statusText","message","stack","responseText","getLocaleIdProperty","languageId","getLanguageId","getAllMember","hierarchyName","getAllMembers","crossJoinElements","elementsString","generateCrossJoin","expandAllCount","slicePath","arg","prevDimension","crossJoinArgs","prevHierarchyName","isLastDimensionInGroup","expandAllIndex","preparePathValue","allMember","fillCrossJoins","crossJoins","cellsString","totalsOnly","dimensionIndex","crossJoin","declare","withArray","generateAxisMdx","parseOptions","expandedPath","visibleLevels","axisSet","generateAxisFieldsFilter","filterMembers","filterStringExpression","filterExpression","filterMdx","generateFrom","columnsFilter","rowsFilter","cubeName","generateMdxCore","axisStrings","mdxString","withString","countMembers","prepareDataFields","valueFields","addSlices","slices","generateMDX","measureCount","createDrillDownAxisSlice","getNumber","str","getFirstChildText","childTagName","getNodeText","tagName","getFirstChild","textContent","innerHTML","parseCells","axes","cellsOriginal","cellElements","errorDictionary","xmlCell","valueElement","errorElements","_isNumeric","cellOrdinal","getAttribute","log","levelName","parentName","getVisibleChildren","grandTotalHash","firstChild","newChildren","fillDataSourceAxes","dataSourceAxis","axisTuples","tupleIndex","currentItem","hasValue","added","processMember","getGrandTotalIndex","checkError","faultElementNS","faultElement","errorElement","error","axisElement","substr","tupleElement","tupleMembers","levelSum","membersCount","tuple","parseAxes","parseDiscoverRowSet","schema","translatedDisplayFolders","displayFolderField","levelNumber","names","defaultHierarchies","sendQuery","catalog","cube","localeIdProperty","dimensionsRequest","measuresRequest","hierarchiesRequest","levelsRequest","then","dimensionsResponse","measuresResponse","hierarchiesResponse","levelsResponse","measureGroupsResponse","$row","parseDimensionsDiscoverRowSet","hierarchies","measureGroups","parseMeasureGroupDiscoverRowSet","levelsByHierarchy","hierarchy","rowCountMdx","executeXml","rowCountXml","response","totalCountXml","_i","processTotalCount","delay","customColumnsString","coreMDX","generateDrillDownMDX","stringArray","columnNames","whole","group1","String","fromCharCode","match","parseDrillDownRowSet","expressions","columnElements","rowElements","fieldsCache","positions","isEmptyCell","processDataCell","getExpression","expressionArg","SummaryCell","postProcessedFlags","createRunningTotalExpr","summaryCell","fieldId","ROW","calculatePercentValue","isNaN","_percentOfGrandTotal","percentOfParent","parentValue","createAbsoluteVariationExp","allowCrossGroup","prevCell","prevValue","summaryDictionary","percentOfColumnTotal","percentOfRowTotal","percentOfColumnGrandTotal","percentOfRowGrandTotal","percentOfGrandTotal","allowCrossGroupCalculation","getPrevCellCrossGroup","getFieldPos","cache","fieldParams","isObject","getPathFieldName","_columnPath","_rowPath","_fieldIndex","_fieldsCache","originalCell","_cell","absoluteExp","crossGroupCalculation","absVar","isRunningTotalCalculation","allowResetting","_getPath","_getDimension","_createCell","config","cellConfig","dimensionPath","pathFieldName","next","siblings","childLevelField","fieldPos","sliceCell","childItems","currentValue","childIndex","arg1","arg2","fistArgIsBoolean","needCalculatedValue","isPostProcessed","AreaItem","_getAreaName","_createGroupElement","_applyCustomStyles","classArray","rowsCount","cssArray","_moveFakeTable","scrollPos","_moveFakeTableHorizontally","_moveFakeTableTop","horizontalScroll","verticalScroll","_groupElement","bounceEnabled","updateManually","_virtualContent","_setTableCss","getCellPath","parentNode","_getAreaClassName","cellsCount","_getMainElementMarkup","_getCloseMainElementMarkup","_virtualContentWidth","tableWidth","_tableWidth","_groupWidth","_getScrollable","showScrollbar","groupAlignment","_scrollBarWidth","offset","td","colSpan","offsetLeft","offsetWidth","_virtualContentHeight","tableHeight","_tableHeight","after","tr","offsetTop","offsetHeight","_getRowClassNames","rowClassNames","_button","_area","_renderButton","popup","dxPopup","_getPopupOptions","button","contentTemplate","at","my","of","dragEnabled","animation","duration","showTitle","closeOnOutsideClick","_renderPopup","FieldChooserBase","_rowPopup","subscribeToEvents","_shouldCreateButton","_renderTableContent","fieldChooserBase","head","indicators","insertAfter","nextField","prevField","renderGroupConnector","_renderVirtualContent","_dom_component","_drag","getSwatchContainer","getTargetGroup","$groups","$item","elementHasPoint","pageX","pageY","Sortable","onDragging","itemRender","groupSelector","itemSelector","itemContainerSelector","sourceClass","dragClass","targetClass","allowDragging","groupFilter","useIndicator","_renderItem","$sourceItem","clone","_renderIndicator","isVertical","$targetGroup","_indicator","_renderDraggable","_$draggable","zIndex","_detachEventHandlers","dragEventsString","move","enter","leave","drop","_getEventListener","_getItemOffset","itemsOffset","shouldInsert","sameLine","posVertical","itemOffset","rtl","posHorizontal","_attachEventHandlers","sourceIndex","$targetItem","startPositions","sourceGroup","scrollWrapper","targetIndex","disposeScrollWrapper","$eventListener","$items","$sourceGroup","elementIndex","eq","$lastItem","$prevItem","draggingArgs","detach","draggableElement","sourceElement","targetGroup","moveIfNeed","onScroll","stop","getScrollWrapper","$itemContainer","targetSortable","$elements","$itemsContainer","last","getItemsOffset","hasClass","insertBefore","isAnotherGroup","isSameIndex","isNextIndex","changedArgs","removeSourceElement","removeTargetElement","removeSourceClass","_useTemplates","DataProvider","_position","_number","_exporter","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","export","getDataProvider","ignoreErrors","exportingAction","exportedAction","fileSavingAction","excel","_getLength","itemCount","cellCount","_correctCellsInfoItemLengths","expectedLength","_calculateCellInfoItemLength","columnsRow","_getAllItems","rowsInfoItems","correctedCellsInfo","rowsLength","headerRowsCount","cellInfoItemLength","sourceItems","_getEmptyCell","alignment","getDefaultAlignment","_prepareItems","customizeExcelCell","ready","getColumns","getColumnsWidths","colsArea","getRowsCount","getGroupLevel","getCellMerging","getFrozenArea","getRowAreaColCount","getColumnAreaRowCount","getCellType","getStyles","getStyleId","getCellData","isExcelJS","cellSourceData","_tryGetAreaName","isColumnAreaCell","isRowAreaCell","getHeaderStyles","getDataFieldStyles","dataItemStyle","dataFieldStyles","getCellDataType","_styles","parse","hasCustomizeExcelCell","FORMAT_DICTIONARY","number","UNBIND_KEY","getFormattedValue","lastFieldIndex","createChartDataSource","pivotGridDataSource","mapOptions","axisDictionary","measureIndex","rowMemberIndex","rowVisibility","rowPathFormatted","columnMemberIndex","columnVisibility","columnPathFormatted","createDataItem","dataCell","processCellArgs","maxRowLevel","maxColumnLevel","dataValues","seriesName","inverted","putDataFieldsInto","dataFieldsDisplayMode","chartDataItem","val","series","processCell","processedCell","foreachRowColumn","callBack","rowMembers","grandTotalText","columnMembers","foreachDataField","alternateDataFields","createValueAxisOptions","valueAxisSettings","valueAxisOptions","valueType","pane","createPanesOptions","panes","bindChart","chart","integrationOptions","updateChart","chartOptions","_customizeSeries","customizeSeries","customizeChart","valueAxis","seriesTemplate","nameField","seriesOptions","createChartOptions","chartElement","NAME","dxChart","getChartInstance","unbind","removeBinding","disposeBinding","removeData","_dom_adapter","_translator","_math","_position2","_typeof","POSITION_FLIP_MAP","right","bottom","center","WEIGHT_OF_SIDES","POSITION_ALIASES","collision","SIDE_BORDER_WIDTH_STYLES","getEventNameByOption","getEventName","attachEvent","isSelector","getEventDelay","_clearEventsTimeouts","_timeouts","validatingTargetName","EVENT_HANDLER_NAME","getDocument","detachEvent","Popover","to","fullScreen","closeOnTargetScroll","arrowPosition","arrowOffset","boundaryOffset","h","v","_fixedPosition","_defaultOptionsRules","device","platform","_renderArrow","_wrapper","_detachEvents","_attachEvents","_$arrow","overlayContent","_documentDownHandler","_isOutsideClick","_animate","_getContainerPosition","_stopAnimation","_renderTitle","_renderPosition","_renderOverlayPosition","_renderOverlayBoundaryOffset","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","setup","_$content","positionSide","_getSideByLocation","_togglePositionClass","_toggleFlippedClass","flip","_isHorizontalSide","_isVerticalSide","_renderArrowPosition","_setContentHeight","_positionSide","_$popupContent","containerLocation","calculate","oversize","fit","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","pairToObject","hOffset","vOffset","isVerticalSide","isHorizontalSide","_isPopoverInside","_getContentBorderWidth","side","borderWidth","isFlippedByVertical","isFlippedByHorizontal","positionClass","_$wrapper","isFlippedHorizontal","isFlippedVertical","arrowRect","getBoundingRect","arrowFlip","arrowLocation","sizeProperty","$target","targetOffset","contentOffset","arrowSize","contentLocation","contentSize","targetLocation","targetSize","preventDefault","finalArrowLocation","fitIntoRange","_transformStringPosition","normalizeAlign","fullUpdate","_renderWrapperPosition","_renderWrapperDimensions","_normalizePosition","_getDisplaySide","weightSign","abs","_clearEventTimeout","_renderGeometry","previousValue","substring","getRealElementWidth","getBoundingClientRect","clientRect","getFakeTableOffset","elementOffset","tableSize","viewPortSize","halfTableCount","halfTableSize","_getRowElement","_getCellText","cellText","markupArray","columnMarkupArray","styleOptions","rowElement","_triggerOnCellPrepared","onCellPreparedArgs","hasEvent","defaultActionArgs","_defaultActionArgs","_getRowHeight","lastChild","_setRowHeight","getRowsLength","valuesLength","processedCells","fillCells","rowOffset","colgroupElementHTML","columnsCount","columnWidth","_colgroupElement","tableLayout","resetColumnsWidth","_rootElement","styles","disableVirtualMode","_fakeTable","_updateFakeTableVisibility","horizontalOffsetName","fakeTableElement","offsetStyleName","_createFakeTable","_container","pos","scrollablePos","_ui2","HeaderFilterView","_getSearchExpr","useDefaultSearchExpr","getMainGroupField","sourceField","getStringState","JSON","stringify","headerFilterMixin","_headerFilterView","_renderComponent","showColumnLines","$fieldContent","$fieldElement","mainGroupField","_applyColumnState","$sortable","pivotGrid","pivotGridFieldChooser","sourceItem","wrapperContainer","wrapper","isInstantlyMode","pivotGridState","props","_ref","isHeaderFilter","showHeaderFilterMenu","useDefaultSearch","userData","postProcess","groupItems","isExcludeFilterType","preparedFilterValueByText","preparedFilterValue","updateHeaderFilterItemSelectionState","processItems","_initTemplates","_devices","_empty_template","_version","_visibility_change","_overlay","_themes","ALLOWED_TOOLBAR_ITEM_ALIASES","IS_IE11","version","IS_OLD_SAFARI","safari","compare","HEIGHT_STRATEGIES","flex","Popup","titleTemplate","onTitleRendered","bottomTemplate","useDefaultToolbarButtons","useFlatToolbarButtons","autoResizeEnabled","themeName","_iosAnimation","_androidAnimation","_device","real","deviceType","isSimulator","focusStateEnabled","isMaterial","opacity","wrapInner","isFullscreen","_toggleFullScreenClass","_templateManager","addDefaultTemplates","EmptyTemplate","_renderBottom","_getToolbarItems","titleText","ios","_$title","$title","_renderTemplateByType","_renderDrag","_executeTitleRenderAction","_hasCloseButton","additionalToolbarOptions","template","_getTemplateByOption","skipTemplates","toolbarOptions","useDefaultButtons","useFlatButtons","_getTemplate","model","$toolbar","replaceWith","$result","$titleElement","_getTitleRenderAction","titleElement","_titleRenderAction","_createTitleRenderAction","excludeValidators","_getCloseButton","_getCloseButtonRenderer","__","_createToolbarItemAction","stylingMode","toolbarsItems","_toolbarItemClasses","currentPlatform","isShortcut","shortcut","getButtonPlace","_getToolbarItemByAlias","isLTROrder","_getLocalizationKey","itemType","camelize","itemConfig","itemClass","POPUP_CLASS","$toolbarItem","afterExecute","_$bottom","$bottom","compactMode","_toggleClasses","_this3","aliases","alias","_getContainer","_getDragTarget","topToolbar","_renderGeometryImpl","isDimensionChanged","_resetContentHeight","maxHeight","_renderResize","_resizable","currentHeightStrategyClass","_chooseHeightStrategy","_getHeightCssStyles","_setHeightClasses","_heightStrategyChangeOffset","popupVerticalPaddings","isAutoWidth","static","_isAutoHeight","cssStyles","contentMaxHeight","_getOptionValue","contentMinHeight","popupHeightParts","_splitPopupHeight","toolbarsAndVerticalOffsetsHeight","header","footer","contentVerticalOffsets","popupVerticalOffsets","contentHeight","innerHeight","maxHeightValue","addOffsetToMaxHeight","addOffsetToMinHeight","currentClass","excessClasses","bottomToolbar","getVisibleHeight","getVerticalOffsets","_shouldFixBodyPosition","_toggleSafariFullScreen","_isShown","_bodyScrollTop","pageYOffset","_toggleSafariScrolling","_renderDimensions","maxWidth","_renderFullscreenWidthClass","refreshPosition","triggerResizeEvent","shouldRenderGeometry","fullName"],"mappings":"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","file":"vendors~aa341643.304a509dc21b8dfeeef3.bundle.js","sourcesContent":["/**\r\n * DevExtreme (ui/pivot_grid/data_source.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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\");\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/pivot_grid/ui.pivot_grid.field_chooser.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _icon = require(\"../../core/utils/icon\");\r\nvar _window = require(\"../../core/utils/window\");\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 _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _tree_view = _interopRequireDefault(require(\"../tree_view\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\r\nvar _uiPivot_grid2 = _interopRequireDefault(require(\"./ui.pivot_grid.field_chooser_base\"));\r\nrequire(\"./data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DIV = \"
\";\r\nvar hasWindow = (0, _window.hasWindow)();\r\nvar FIELDCHOOSER_CLASS = \"dx-pivotgridfieldchooser\";\r\nvar FIELDCHOOSER_CONTAINER_CLASS = \"dx-pivotgridfieldchooser-container\";\r\nvar FIELDS_CONTAINER_CLASS = \"dx-pivotgrid-fields-container\";\r\nvar AREA_DRAG_CLASS = \"dx-pivotgrid-drag-action\";\r\n\r\nfunction getDimensionFields(item, fields) {\r\n var result = [];\r\n if (item.items) {\r\n for (var i = 0; i < item.items.length; i++) {\r\n result.push.apply(result, getDimensionFields(item.items[i], fields))\r\n }\r\n } else {\r\n if ((0, _type.isDefined)(item.index)) {\r\n result.push(fields[item.index])\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction getFirstItem(item, condition) {\r\n if (item.items) {\r\n for (var i = 0; i < item.items.length; i++) {\r\n var childrenItem = getFirstItem(item.items[i], condition);\r\n if (childrenItem) {\r\n return childrenItem\r\n }\r\n }\r\n }\r\n if (condition(item)) {\r\n return item\r\n }\r\n}\r\nvar compareOrder = [function(a, b) {\r\n var aValue = -!!a.isMeasure;\r\n var bValue = +!!b.isMeasure;\r\n return aValue + bValue\r\n}, function(a, b) {\r\n var aValue = -!!(a.items && a.items.length);\r\n var bValue = +!!(b.items && b.items.length);\r\n return aValue + bValue\r\n}, function(a, b) {\r\n var aValue = +!!(false === a.isMeasure && a.field && a.field.levels && a.field.levels.length);\r\n var bValue = -!!(false === b.isMeasure && b.field && b.field.levels && b.field.levels.length);\r\n return aValue + bValue\r\n}, (0, _uiPivot_grid.getCompareFunction)(function(item) {\r\n return item.text\r\n})];\r\n\r\nfunction compareItems(a, b) {\r\n var result = 0;\r\n var i = 0;\r\n while (!result && compareOrder[i]) {\r\n result = compareOrder[i++](a, b)\r\n }\r\n return result\r\n}\r\n\r\nfunction getScrollable(container) {\r\n return container.find(\".dx-scrollable\").dxScrollable(\"instance\")\r\n}\r\nvar FieldChooser = _uiPivot_grid2.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n height: 400,\r\n layout: 0,\r\n dataSource: null,\r\n onContextMenuPreparing: null,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n texts: {\r\n columnFields: _message.default.format(\"dxPivotGrid-columnFields\"),\r\n rowFields: _message.default.format(\"dxPivotGrid-rowFields\"),\r\n dataFields: _message.default.format(\"dxPivotGrid-dataFields\"),\r\n filterFields: _message.default.format(\"dxPivotGrid-filterFields\"),\r\n allFields: _message.default.format(\"dxPivotGrid-allFields\")\r\n }\r\n })\r\n },\r\n _refreshDataSource: function() {\r\n var that = this;\r\n that._expandedPaths = [];\r\n that._changedHandler = that._changedHandler || function() {\r\n (0, _iterator.each)(that._dataChangedHandlers, function(_, func) {\r\n func()\r\n });\r\n that._fireContentReadyAction();\r\n that._skipStateChange = true;\r\n that.option(\"state\", that._dataSource.state());\r\n that._skipStateChange = false\r\n };\r\n that._disposeDataSource();\r\n that.callBase();\r\n that._dataSource && that._dataSource.on(\"changed\", that._changedHandler)\r\n },\r\n _disposeDataSource: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n if (dataSource) {\r\n dataSource.off(\"changed\", that._changedHandler);\r\n that._dataSource = void 0\r\n }\r\n },\r\n _dispose: function() {\r\n this._disposeDataSource();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._refreshDataSource();\r\n this._dataChangedHandlers = [];\r\n this._initActions()\r\n },\r\n _initActions: function() {\r\n this._actions = {\r\n onContextMenuPreparing: this._createActionByOption(\"onContextMenuPreparing\")\r\n }\r\n },\r\n _trigger: function(eventName, eventArg) {\r\n this._actions[eventName](eventArg)\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n (0, _extend.extend)(this._optionsByReference, {\r\n dataSource: true\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"dataSource\":\r\n that._refreshDataSource();\r\n that._invalidate();\r\n break;\r\n case \"layout\":\r\n case \"texts\":\r\n case \"allowSearch\":\r\n case \"searchTimeout\":\r\n that._invalidate();\r\n break;\r\n case \"onContextMenuPreparing\":\r\n that._actions[args.name] = that._createActionByOption(args.name);\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n _clean: function(skipStateSetting) {\r\n !skipStateSetting && this._dataSource && this.option(\"state\", this._dataSource.state());\r\n this.$element().children(\".\" + FIELDCHOOSER_CONTAINER_CLASS).remove()\r\n },\r\n _renderLayout0: function($container) {\r\n var that = this;\r\n $container.addClass(\"dx-layout-0\");\r\n var $row1 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n var $row2 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n var $col1 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row1);\r\n var $col2 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row1);\r\n var $col3 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n var $col4 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n that._renderArea($col1, \"all\");\r\n that._renderArea($col2, \"row\");\r\n that._renderArea($col2, \"column\");\r\n that._renderArea($col3, \"filter\");\r\n that._renderArea($col4, \"data\")\r\n },\r\n _renderLayout1: function($container) {\r\n var that = this;\r\n var $col1 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($container);\r\n var $col2 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($container);\r\n that._renderArea($col1, \"all\");\r\n that._renderArea($col2, \"filter\");\r\n that._renderArea($col2, \"row\");\r\n that._renderArea($col2, \"column\");\r\n that._renderArea($col2, \"data\")\r\n },\r\n _renderLayout2: function($container) {\r\n var that = this;\r\n $container.addClass(\"dx-layout-2\");\r\n var $row1 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n that._renderArea($row1, \"all\");\r\n var $row2 = (0, _renderer.default)(DIV).addClass(\"dx-row\").appendTo($container);\r\n var $col1 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n var $col2 = (0, _renderer.default)(DIV).addClass(\"dx-col\").appendTo($row2);\r\n that._renderArea($col1, \"filter\");\r\n that._renderArea($col1, \"row\");\r\n that._renderArea($col2, \"column\");\r\n that._renderArea($col2, \"data\")\r\n },\r\n _initMarkup: function() {\r\n var that = this;\r\n var $element = this.$element();\r\n var $container = (0, _renderer.default)(DIV).addClass(FIELDCHOOSER_CONTAINER_CLASS).appendTo($element);\r\n var layout = that.option(\"layout\");\r\n that.callBase();\r\n $element.addClass(FIELDCHOOSER_CLASS).addClass(FIELDS_CONTAINER_CLASS);\r\n that._dataChangedHandlers = [];\r\n var dataSource = this._dataSource;\r\n var currentState = \"instantly\" !== that.option(\"applyChangesMode\") && dataSource && dataSource.state();\r\n currentState && that.option(\"state\") && dataSource.state(that.option(\"state\"), true);\r\n if (0 === layout) {\r\n that._renderLayout0($container)\r\n } else {\r\n if (1 === layout) {\r\n that._renderLayout1($container)\r\n } else {\r\n that._renderLayout2($container)\r\n }\r\n }\r\n currentState && dataSource.state(currentState, true)\r\n },\r\n _renderContentImpl: function() {\r\n this.callBase();\r\n this.renderSortable();\r\n this._renderContextMenu();\r\n this.updateDimensions()\r\n },\r\n _fireContentReadyAction: function() {\r\n if (!this._dataSource || !this._dataSource.isLoading()) {\r\n this.callBase()\r\n }\r\n },\r\n _getContextMenuArgs: function(dxEvent) {\r\n var targetFieldElement = (0, _renderer.default)(dxEvent.target).closest(\".dx-area-field\");\r\n var targetGroupElement = (0, _renderer.default)(dxEvent.target).closest(\".dx-area-fields\");\r\n var field;\r\n var area;\r\n if (targetFieldElement.length) {\r\n var fieldCopy = targetFieldElement.data(\"field\");\r\n if (fieldCopy) {\r\n field = this.getDataSource().field(fieldCopy.index) || fieldCopy\r\n }\r\n }\r\n if (targetGroupElement.length) {\r\n area = targetGroupElement.attr(\"group\")\r\n }\r\n return {\r\n event: dxEvent,\r\n field: field,\r\n area: area,\r\n items: []\r\n }\r\n },\r\n _renderContextMenu: function() {\r\n var that = this;\r\n var $container = that.$element();\r\n if (that._contextMenu) {\r\n that._contextMenu.$element().remove()\r\n }\r\n that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, {\r\n onPositioning: function(actionArgs) {\r\n var event = actionArgs.event;\r\n if (!event) {\r\n return\r\n }\r\n var args = that._getContextMenuArgs(event);\r\n that._trigger(\"onContextMenuPreparing\", args);\r\n if (args.items && args.items.length) {\r\n actionArgs.component.option(\"items\", args.items)\r\n } else {\r\n actionArgs.cancel = true\r\n }\r\n },\r\n target: $container,\r\n onItemClick: function(params) {\r\n params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n },\r\n cssClass: \"dx-pivotgridfieldchooser-context-menu\"\r\n })\r\n },\r\n _createTreeItems: function(fields, groupFieldNames, path) {\r\n var that = this;\r\n var isMeasure;\r\n var resultItems = [];\r\n var groupedItems = [];\r\n var groupFieldName = groupFieldNames[0];\r\n var fieldsByGroup = {};\r\n if (!groupFieldName) {\r\n (0, _iterator.each)(fields, function(index, field) {\r\n var icon;\r\n if (true === field.isMeasure) {\r\n icon = \"measure\"\r\n }\r\n if (false === field.isMeasure) {\r\n icon = field.groupName ? \"hierarchy\" : \"dimension\"\r\n }\r\n resultItems.push({\r\n index: field.index,\r\n field: field,\r\n key: field.dataField,\r\n selected: (0, _type.isDefined)(field.area),\r\n text: field.caption || field.dataField,\r\n icon: icon,\r\n isMeasure: field.isMeasure,\r\n isDefault: field.isDefault\r\n })\r\n })\r\n } else {\r\n (0, _iterator.each)(fields, function(index, field) {\r\n var groupName = field[groupFieldName] || \"\";\r\n fieldsByGroup[groupName] = fieldsByGroup[groupName] || [];\r\n fieldsByGroup[groupName].push(field);\r\n if (void 0 === isMeasure) {\r\n isMeasure = true\r\n }\r\n isMeasure = isMeasure && true === field.isMeasure\r\n });\r\n (0, _iterator.each)(fieldsByGroup, function(groupName, fields) {\r\n var currentPath = path ? path + \".\" + groupName : groupName;\r\n var items = that._createTreeItems(fields, groupFieldNames.slice(1), currentPath);\r\n if (groupName) {\r\n groupedItems.push({\r\n key: groupName,\r\n text: groupName,\r\n path: currentPath,\r\n isMeasure: items.isMeasure,\r\n expanded: (0, _array.inArray)(currentPath, that._expandedPaths) >= 0,\r\n items: items\r\n })\r\n } else {\r\n resultItems = items\r\n }\r\n });\r\n resultItems = groupedItems.concat(resultItems);\r\n resultItems.isMeasure = isMeasure\r\n }\r\n return resultItems\r\n },\r\n _createFieldsDataSource: function(dataSource) {\r\n var fields = dataSource && dataSource.fields() || [];\r\n fields = fields.filter(function(field) {\r\n return false !== field.visible && !(0, _type.isDefined)(field.groupIndex)\r\n });\r\n var treeItems = this._createTreeItems(fields, [\"dimension\", \"displayFolder\"]);\r\n (0, _uiPivot_grid.foreachDataLevel)(treeItems, function(items) {\r\n items.sort(compareItems)\r\n }, 0, \"items\");\r\n return treeItems\r\n },\r\n _renderFieldsTreeView: function(container) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var treeView = that._createComponent(container, _tree_view.default, {\r\n dataSource: that._createFieldsDataSource(dataSource),\r\n showCheckBoxesMode: \"normal\",\r\n expandNodesRecursive: false,\r\n searchEnabled: that.option(\"allowSearch\"),\r\n searchTimeout: that.option(\"searchTimeout\"),\r\n itemTemplate: function(itemData, itemIndex, itemElement) {\r\n if (itemData.icon) {\r\n (0, _icon.getImageContainer)(itemData.icon).appendTo(itemElement)\r\n }(0, _renderer.default)(\"\").toggleClass(\"dx-area-field\", !itemData.items).data(\"field\", itemData.field).text(itemData.text).appendTo(itemElement)\r\n },\r\n onItemCollapsed: function(e) {\r\n var index = (0, _array.inArray)(e.itemData.path, that._expandedPaths);\r\n if (index >= 0) {\r\n that._expandedPaths.splice(index, 1)\r\n }\r\n },\r\n onItemExpanded: function(e) {\r\n var index = (0, _array.inArray)(e.itemData.path, that._expandedPaths);\r\n if (index < 0) {\r\n that._expandedPaths.push(e.itemData.path)\r\n }\r\n },\r\n onItemSelectionChanged: function(e) {\r\n var data = e.itemData;\r\n var field;\r\n var fields;\r\n var needSelectDefaultItem = true;\r\n var area;\r\n if (data.items) {\r\n if (data.selected) {\r\n treeView.unselectItem(data);\r\n return\r\n }\r\n that._processDemandState(function() {\r\n fields = getDimensionFields(data, dataSource.fields());\r\n for (var i = 0; i < fields.length; i++) {\r\n if (fields[i].area) {\r\n needSelectDefaultItem = false;\r\n break\r\n }\r\n }\r\n });\r\n if (needSelectDefaultItem) {\r\n var item = getFirstItem(data, function(item) {\r\n return item.isDefault\r\n }) || getFirstItem(data, function(item) {\r\n return (0, _type.isDefined)(item.index)\r\n });\r\n item && treeView.selectItem(item);\r\n return\r\n }\r\n } else {\r\n field = dataSource.fields()[data.index];\r\n if (data.selected) {\r\n area = field.isMeasure ? \"data\" : \"column\"\r\n }\r\n if (field) {\r\n fields = [field]\r\n }\r\n }\r\n that._applyChanges(fields, {\r\n area: area,\r\n areaIndex: void 0\r\n })\r\n }\r\n });\r\n var dataChanged = function() {\r\n var scrollable = getScrollable(container);\r\n var scrollTop = scrollable ? scrollable.scrollTop() : 0;\r\n treeView.option({\r\n dataSource: that._createFieldsDataSource(dataSource)\r\n });\r\n scrollable = getScrollable(container);\r\n if (scrollable) {\r\n scrollable.scrollTo({\r\n y: scrollTop\r\n });\r\n scrollable.update()\r\n }\r\n };\r\n that._dataChangedHandlers.push(dataChanged)\r\n },\r\n _renderAreaFields: function($container, area) {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var fields = dataSource ? (0, _extend.extend)(true, [], dataSource.getAreaFields(area, true)) : [];\r\n $container.empty();\r\n (0, _iterator.each)(fields, function(_, field) {\r\n if (false !== field.visible) {\r\n that.renderField(field, true).appendTo($container)\r\n }\r\n })\r\n },\r\n _renderArea: function(container, area) {\r\n var that = this;\r\n var $areaContainer = (0, _renderer.default)(DIV).addClass(\"dx-area\").appendTo(container);\r\n var $fieldsHeaderContainer = (0, _renderer.default)(DIV).addClass(\"dx-area-fields-header\").appendTo($areaContainer);\r\n var caption = that.option(\"texts.\" + area + \"Fields\");\r\n var $fieldsContent;\r\n var render;\r\n (0, _renderer.default)(\"\").addClass(\"dx-area-icon\").addClass(\"dx-area-icon-\" + area).appendTo($fieldsHeaderContainer);\r\n (0, _renderer.default)(\"\").html(\" \").appendTo($fieldsHeaderContainer);\r\n (0, _renderer.default)(\"\").addClass(\"dx-area-caption\").text(caption).appendTo($fieldsHeaderContainer);\r\n var $fieldsContainer = (0, _renderer.default)(DIV).addClass(\"dx-area-fields\").addClass(AREA_DRAG_CLASS).appendTo($areaContainer);\r\n if (\"all\" !== area) {\r\n $fieldsContainer.attr(\"group\", area).attr(\"allow-scrolling\", true);\r\n $fieldsContent = (0, _renderer.default)(DIV).addClass(\"dx-area-field-container\").appendTo($fieldsContainer);\r\n render = function() {\r\n that._renderAreaFields($fieldsContent, area)\r\n };\r\n that._dataChangedHandlers.push(render);\r\n render();\r\n $fieldsContainer.dxScrollable()\r\n } else {\r\n $areaContainer.addClass(\"dx-all-fields\");\r\n $fieldsContainer.addClass(\"dx-treeview-border-visible\");\r\n that._renderFieldsTreeView($fieldsContainer)\r\n }\r\n },\r\n _getSortableOptions: function() {\r\n return {}\r\n },\r\n _adjustSortableOnChangedArgs: function() {},\r\n resetTreeView: function() {\r\n var treeView = this.$element().find(\".dx-treeview\").dxTreeView(\"instance\");\r\n if (treeView) {\r\n treeView.option(\"searchValue\", \"\");\r\n treeView.collapseAll()\r\n }\r\n },\r\n applyChanges: function() {\r\n var state = this.option(\"state\");\r\n if ((0, _type.isDefined)(state)) {\r\n this._dataSource.state(state)\r\n }\r\n },\r\n cancelChanges: function() {\r\n var dataSource = this._dataSource;\r\n if (!dataSource.isLoading()) {\r\n this.option(\"state\", dataSource.state());\r\n return true\r\n }\r\n return false\r\n },\r\n getDataSource: function() {\r\n return this._dataSource\r\n },\r\n updateDimensions: function() {\r\n var $scrollableElements = this.$element().find(\".dx-area .dx-scrollable\");\r\n $scrollableElements.dxScrollable(\"update\")\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible && hasWindow) {\r\n this.updateDimensions()\r\n }\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxPivotGridFieldChooser\", FieldChooser);\r\nvar _default = FieldChooser;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pager.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _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/ui.pivot_grid.utils.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.sendRequest = sendRequest;\r\nexports.findField = findField;\r\nexports.formatValue = formatValue;\r\nexports.getCompareFunction = getCompareFunction;\r\nexports.createPath = createPath;\r\nexports.foreachDataLevel = foreachDataLevel;\r\nexports.mergeArraysByMaxValue = mergeArraysByMaxValue;\r\nexports.getExpandedLevel = getExpandedLevel;\r\nexports.discoverObjectFields = discoverObjectFields;\r\nexports.getFieldsDataType = getFieldsDataType;\r\nexports.setDefaultFieldValueFormatting = setDefaultFieldValueFormatting;\r\nexports.getFiltersByPath = getFiltersByPath;\r\nexports.capitalizeFirstLetter = capitalizeFirstLetter;\r\nexports.storeDrillDownMixin = exports.foreachTreeAsync = exports.foreachTree = exports.setFieldProperty = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _ajax = _interopRequireDefault(require(\"../../core/utils/ajax\"));\r\nvar _data = require(\"../../core/utils/data\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _date = _interopRequireDefault(require(\"../../localization/date\"));\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _data_source = require(\"../../data/data_source/data_source\");\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\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 setFieldProperty = function(field, property, value, isInitialization) {\r\n var initProperties = field._initProperties = field._initProperties || {};\r\n var initValue = isInitialization ? value : field[property];\r\n if (!Object.prototype.hasOwnProperty.call(initProperties, property) || isInitialization) {\r\n initProperties[property] = initValue\r\n }\r\n field[property] = value\r\n};\r\nexports.setFieldProperty = setFieldProperty;\r\n\r\nfunction sendRequest(options) {\r\n return _ajax.default.sendRequest(options)\r\n}\r\nvar foreachTreeAsyncDate = new Date;\r\n\r\nfunction createForeachTreeFunc(isAsync) {\r\n var foreachTreeFunc = function foreachTreeFunc(items, callback, parentAtFirst, members, index, isChildrenProcessing) {\r\n members = members || [];\r\n items = items || [];\r\n var i;\r\n var deferred;\r\n index = index || 0;\r\n\r\n function createForeachTreeAsyncHandler(deferred, i, isChildrenProcessing) {\r\n (0, _deferred.when)(foreachTreeFunc(items, callback, parentAtFirst, members, i, isChildrenProcessing)).done(deferred.resolve)\r\n }\r\n for (i = index; i < items.length; i++) {\r\n if (isAsync && i > index && i % 1e4 === 0 && new Date - foreachTreeAsyncDate >= 300) {\r\n foreachTreeAsyncDate = new Date;\r\n deferred = new _deferred.Deferred;\r\n setTimeout(createForeachTreeAsyncHandler(deferred, i, false), 0);\r\n return deferred\r\n }\r\n var item = items[i];\r\n if (!isChildrenProcessing) {\r\n members.unshift(item);\r\n if (parentAtFirst && false === callback(members, i)) {\r\n return\r\n }\r\n if (item.children) {\r\n var childrenDeferred = foreachTreeFunc(item.children, callback, parentAtFirst, members);\r\n if (isAsync && childrenDeferred) {\r\n deferred = new _deferred.Deferred;\r\n childrenDeferred.done(createForeachTreeAsyncHandler(deferred, i, true));\r\n return deferred\r\n }\r\n }\r\n }\r\n isChildrenProcessing = false;\r\n if (!parentAtFirst && false === callback(members, i)) {\r\n return\r\n }\r\n members.shift();\r\n if (items[i] !== item) {\r\n i--\r\n }\r\n }\r\n };\r\n return foreachTreeFunc\r\n}\r\nvar foreachTree = createForeachTreeFunc(false);\r\nexports.foreachTree = foreachTree;\r\nvar foreachTreeAsync = createForeachTreeFunc(true);\r\nexports.foreachTreeAsync = foreachTreeAsync;\r\n\r\nfunction findField(fields, id) {\r\n if (fields && (0, _type.isDefined)(id)) {\r\n for (var i = 0; i < fields.length; i++) {\r\n var field = fields[i];\r\n if (field.name === id || field.caption === id || field.dataField === id || field.index === id) {\r\n return i\r\n }\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nfunction formatValue(value, options) {\r\n var valueText = value === value && _format_helper.default.format(value, options.format);\r\n var formatObject = {\r\n value: value,\r\n valueText: valueText || \"\"\r\n };\r\n return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText\r\n}\r\n\r\nfunction getCompareFunction(valueSelector) {\r\n return function(a, b) {\r\n var result = 0;\r\n var valueA = valueSelector(a);\r\n var valueB = valueSelector(b);\r\n var aIsDefined = (0, _type.isDefined)(valueA);\r\n var bIsDefined = (0, _type.isDefined)(valueB);\r\n if (aIsDefined && bIsDefined) {\r\n if (valueA > valueB) {\r\n result = 1\r\n } else {\r\n if (valueA < valueB) {\r\n result = -1\r\n }\r\n }\r\n }\r\n if (aIsDefined && !bIsDefined) {\r\n result = 1\r\n }\r\n if (!aIsDefined && bIsDefined) {\r\n result = -1\r\n }\r\n return result\r\n }\r\n}\r\n\r\nfunction createPath(items) {\r\n var result = [];\r\n for (var i = items.length - 1; i >= 0; i--) {\r\n result.push(items[i].key || items[i].value)\r\n }\r\n return result\r\n}\r\n\r\nfunction foreachDataLevel(data, callback, index, childrenField) {\r\n index = index || 0;\r\n childrenField = childrenField || \"children\";\r\n if (data.length) {\r\n callback(data, index)\r\n }\r\n for (var i = 0; i < data.length; i++) {\r\n var item = data[i];\r\n if (item[childrenField] && item[childrenField].length) {\r\n foreachDataLevel(item[childrenField], callback, index + 1, childrenField)\r\n }\r\n }\r\n}\r\n\r\nfunction mergeArraysByMaxValue(values1, values2) {\r\n var result = [];\r\n for (var i = 0; i < values1.length; i++) {\r\n result.push(Math.max(values1[i] || 0, values2[i] || 0))\r\n }\r\n return result\r\n}\r\n\r\nfunction getExpandedLevel(options, axisName) {\r\n var dimensions = options[axisName];\r\n var expandLevel = 0;\r\n var expandedPaths = (\"columns\" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || [];\r\n if (options.headerName === axisName) {\r\n expandLevel = options.path.length\r\n } else {\r\n if (options.headerName && options.headerName !== axisName && options.oppositePath) {\r\n expandLevel = options.oppositePath.length\r\n } else {\r\n (0, _iterator.each)(expandedPaths, function(_, path) {\r\n expandLevel = Math.max(expandLevel, path.length)\r\n })\r\n }\r\n }\r\n while (dimensions[expandLevel + 1] && dimensions[expandLevel].expanded) {\r\n expandLevel++\r\n }\r\n return expandLevel\r\n}\r\n\r\nfunction createGroupFields(item) {\r\n return (0, _iterator.map)([\"year\", \"quarter\", \"month\"], function(value, index) {\r\n return (0, _extend.extend)({}, item, {\r\n groupInterval: value,\r\n groupIndex: index\r\n })\r\n })\r\n}\r\n\r\nfunction parseFields(dataSource, fieldsList, path, fieldsDataType) {\r\n var result = [];\r\n Object.keys(fieldsList || []).forEach(function(field) {\r\n if (field && 0 === field.indexOf(\"__\")) {\r\n return\r\n }\r\n var dataIndex = 1;\r\n var currentPath = path.length ? path + \".\" + field : field;\r\n var dataType = fieldsDataType[currentPath];\r\n var getter = (0, _data.compileGetter)(currentPath);\r\n var value = fieldsList[field];\r\n var items;\r\n while (!(0, _type.isDefined)(value) && dataSource[dataIndex]) {\r\n value = getter(dataSource[dataIndex]);\r\n dataIndex++\r\n }\r\n if (!dataType && (0, _type.isDefined)(value)) {\r\n dataType = (0, _type.type)(value)\r\n }\r\n items = [{\r\n dataField: currentPath,\r\n dataType: dataType,\r\n groupName: \"date\" === dataType ? field : void 0,\r\n groupInterval: void 0,\r\n displayFolder: path\r\n }];\r\n if (\"date\" === dataType) {\r\n items = items.concat(createGroupFields(items[0]))\r\n } else {\r\n if (\"object\" === dataType) {\r\n items = parseFields(dataSource, value, currentPath, fieldsDataType)\r\n }\r\n }\r\n result.push.apply(result, items)\r\n });\r\n return result\r\n}\r\n\r\nfunction discoverObjectFields(items, fields) {\r\n var fieldsDataType = getFieldsDataType(fields);\r\n return parseFields(items, items[0], \"\", fieldsDataType)\r\n}\r\n\r\nfunction getFieldsDataType(fields) {\r\n var result = {};\r\n (0, _iterator.each)(fields, function(_, field) {\r\n result[field.dataField] = result[field.dataField] || field.dataType\r\n });\r\n return result\r\n}\r\nvar DATE_INTERVAL_FORMATS = {\r\n month: function(value) {\r\n return _date.default.getMonthNames()[value - 1]\r\n },\r\n quarter: function(value) {\r\n return _date.default.format(new Date(2e3, 3 * value - 1), \"quarter\")\r\n },\r\n dayOfWeek: function(value) {\r\n return _date.default.getDayNames()[value]\r\n }\r\n};\r\n\r\nfunction setDefaultFieldValueFormatting(field) {\r\n if (\"date\" === field.dataType) {\r\n if (!field.format) {\r\n setFieldProperty(field, \"format\", DATE_INTERVAL_FORMATS[field.groupInterval])\r\n }\r\n } else {\r\n if (\"number\" === field.dataType) {\r\n var groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval;\r\n if (groupInterval && !field.customizeText) {\r\n setFieldProperty(field, \"customizeText\", function(formatObject) {\r\n var secondValue = formatObject.value + groupInterval;\r\n var secondValueText = _format_helper.default.format(secondValue, field.format);\r\n return formatObject.valueText && secondValueText ? formatObject.valueText + \" - \" + secondValueText : \"\"\r\n })\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getFiltersByPath(fields, path) {\r\n var result = [];\r\n path = path || [];\r\n for (var i = 0; i < path.length; i++) {\r\n result.push((0, _extend.extend)({}, fields[i], {\r\n groupIndex: null,\r\n groupName: null,\r\n filterType: \"include\",\r\n filterValues: [path[i]]\r\n }))\r\n }\r\n return result\r\n}\r\nvar storeDrillDownMixin = {\r\n createDrillDownDataSource: function(descriptions, params) {\r\n var items = this.getDrillDownItems(descriptions, params);\r\n var arrayStore;\r\n\r\n function createCustomStoreMethod(methodName) {\r\n return function(options) {\r\n var d;\r\n if (arrayStore) {\r\n d = arrayStore[methodName](options)\r\n } else {\r\n d = new _deferred.Deferred;\r\n (0, _deferred.when)(items).done(function(data) {\r\n var arrayStore = new _array_store.default(data);\r\n arrayStore[methodName](options).done(d.resolve).fail(d.reject)\r\n }).fail(d.reject)\r\n }\r\n return d\r\n }\r\n }\r\n var dataSource = new _data_source.DataSource({\r\n load: createCustomStoreMethod(\"load\"),\r\n totalCount: createCustomStoreMethod(\"totalCount\"),\r\n key: this.key()\r\n });\r\n return dataSource\r\n }\r\n};\r\nexports.storeDrillDownMixin = storeDrillDownMixin;\r\n\r\nfunction capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1)\r\n}\r\n","/**\r\n * DevExtreme (ui/pivot_grid.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _ui = _interopRequireDefault(require(\"./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/ui.pivot_grid.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _browser = _interopRequireDefault(require(\"../../core/utils/browser\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _string = require(\"../../core/utils/string\");\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 _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.utils\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _uiPivot_grid2 = require(\"./ui.pivot_grid.data_controller\");\r\nvar _uiPivot_grid3 = require(\"./ui.pivot_grid.data_area\");\r\nvar _uiPivot_grid4 = require(\"./ui.pivot_grid.headers_area\");\r\nvar _size = require(\"../../core/utils/size\");\r\nvar _uiPivot_grid5 = require(\"./ui.pivot_grid.fields_area\");\r\nvar _uiPivot_grid6 = _interopRequireDefault(require(\"./ui.pivot_grid.field_chooser\"));\r\nvar _uiPivot_grid7 = _interopRequireDefault(require(\"./ui.pivot_grid.field_chooser_base\"));\r\nvar _uiPivot_grid8 = require(\"./ui.pivot_grid.export\");\r\nvar _uiPivot_grid9 = _interopRequireDefault(require(\"./ui.pivot_grid.chart_integration\"));\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _context_menu = _interopRequireDefault(require(\"../context_menu\"));\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 window = (0, _window.getWindow)();\r\nvar DATA_AREA_CELL_CLASS = \"dx-area-data-cell\";\r\nvar ROW_AREA_CELL_CLASS = \"dx-area-row-cell\";\r\nvar COLUMN_AREA_CELL_CLASS = \"dx-area-column-cell\";\r\nvar DESCRIPTION_AREA_CELL_CLASS = \"dx-area-description-cell\";\r\nvar BORDERS_CLASS = \"dx-pivotgrid-border\";\r\nvar PIVOTGRID_CLASS = \"dx-pivotgrid\";\r\nvar ROW_LINES_CLASS = \"dx-row-lines\";\r\nvar BOTTOM_ROW_CLASS = \"dx-bottom-row\";\r\nvar BOTTOM_BORDER_CLASS = \"dx-bottom-border\";\r\nvar FIELDS_CONTAINER_CLASS = \"dx-pivotgrid-fields-container\";\r\nvar FIELDS_CLASS = \"dx-area-fields\";\r\nvar FIELD_CHOOSER_POPUP_CLASS = \"dx-fieldchooser-popup\";\r\nvar INCOMPRESSIBLE_FIELDS_CLASS = \"dx-incompressible-fields\";\r\nvar OVERFLOW_HIDDEN_CLASS = \"dx-overflow-hidden\";\r\nvar TR = \"\";\r\nvar TD = \"\";\r\nvar DIV = \"
\";\r\nvar TEST_HEIGHT = 66666;\r\nvar FIELD_CALCULATED_OPTIONS = [\"allowSorting\", \"allowSortingBySummary\", \"allowFiltering\", \"allowExpandAll\"];\r\n\r\nfunction getArraySum(array) {\r\n var sum = 0;\r\n (0, _iterator.each)(array, function(_, value) {\r\n sum += value || 0\r\n });\r\n return sum\r\n}\r\n\r\nfunction adjustSizeArray(sizeArray, space) {\r\n var delta = space / sizeArray.length;\r\n for (var i = 0; i < sizeArray.length; i++) {\r\n sizeArray[i] -= delta\r\n }\r\n}\r\n\r\nfunction unsubscribeScrollEvents(area) {\r\n area.off(\"scroll\").off(\"stop\")\r\n}\r\n\r\nfunction subscribeToScrollEvent(area, handler) {\r\n unsubscribeScrollEvents(area);\r\n area.on(\"scroll\", handler).on(\"stop\", handler)\r\n}\r\nvar scrollBarInfoCache = {};\r\n\r\nfunction getScrollBarInfo(useNativeScrolling) {\r\n if (scrollBarInfoCache[useNativeScrolling]) {\r\n return scrollBarInfoCache[useNativeScrolling]\r\n }\r\n var scrollBarWidth = 0;\r\n var options = {};\r\n var container = (0, _renderer.default)(DIV).css({\r\n position: \"absolute\",\r\n visibility: \"hidden\",\r\n top: -1e3,\r\n left: -1e3,\r\n width: 100,\r\n height: 100\r\n }).appendTo(\"body\");\r\n var content = (0, _renderer.default)(\"

\").css({\r\n width: \"100%\",\r\n height: 200\r\n }).appendTo(container);\r\n if (\"auto\" !== useNativeScrolling) {\r\n options.useNative = !!useNativeScrolling;\r\n options.useSimulatedScrollbar = !useNativeScrolling\r\n }\r\n container.dxScrollable(options);\r\n var scrollBarUseNative = container.dxScrollable(\"instance\").option(\"useNative\");\r\n scrollBarWidth = scrollBarUseNative ? container.width() - content.width() : 0;\r\n container.remove();\r\n scrollBarInfoCache[useNativeScrolling] = {\r\n scrollBarWidth: scrollBarWidth,\r\n scrollBarUseNative: scrollBarUseNative\r\n };\r\n return scrollBarInfoCache[useNativeScrolling]\r\n}\r\n\r\nfunction getCommonBorderWidth(elements, direction) {\r\n var borderStyleNames = \"width\" === direction ? [\"borderLeftWidth\", \"borderRightWidth\"] : [\"borderTopWidth\", \"borderBottomWidth\"];\r\n var width = 0;\r\n (0, _iterator.each)(elements, function(_, elem) {\r\n var computedStyle = window.getComputedStyle(elem.get(0));\r\n borderStyleNames.forEach(function(borderStyleName) {\r\n width += parseFloat(computedStyle[borderStyleName]) || 0\r\n })\r\n });\r\n return width\r\n}\r\n\r\nfunction clickedOnFieldsArea($targetElement) {\r\n return $targetElement.closest(\".\" + FIELDS_CLASS).length || $targetElement.find(\".\" + FIELDS_CLASS).length\r\n}\r\nvar PivotGrid = _ui.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n scrolling: {\r\n timeout: 300,\r\n renderingThreshold: 150,\r\n minTimeout: 10,\r\n mode: \"standard\",\r\n useNative: \"auto\",\r\n removeInvisiblePages: true,\r\n virtualRowHeight: 50,\r\n virtualColumnWidth: 100,\r\n loadTwoPagesOnStart: true\r\n },\r\n encodeHtml: true,\r\n dataSource: null,\r\n activeStateEnabled: false,\r\n fieldChooser: {\r\n minWidth: 250,\r\n minHeight: 250,\r\n enabled: true,\r\n allowSearch: false,\r\n searchTimeout: 500,\r\n layout: 0,\r\n title: _message.default.format(\"dxPivotGrid-fieldChooserTitle\"),\r\n width: 600,\r\n height: 600,\r\n applyChangesMode: \"instantly\"\r\n },\r\n onContextMenuPreparing: null,\r\n allowSorting: false,\r\n allowSortingBySummary: false,\r\n allowFiltering: false,\r\n allowExpandAll: false,\r\n wordWrapEnabled: true,\r\n fieldPanel: {\r\n showColumnFields: true,\r\n showFilterFields: true,\r\n showDataFields: true,\r\n showRowFields: true,\r\n allowFieldDragging: true,\r\n visible: false,\r\n texts: {\r\n columnFieldArea: _message.default.format(\"dxPivotGrid-columnFieldArea\"),\r\n rowFieldArea: _message.default.format(\"dxPivotGrid-rowFieldArea\"),\r\n filterFieldArea: _message.default.format(\"dxPivotGrid-filterFieldArea\"),\r\n dataFieldArea: _message.default.format(\"dxPivotGrid-dataFieldArea\")\r\n }\r\n },\r\n dataFieldArea: \"column\",\r\n \"export\": {\r\n enabled: false,\r\n fileName: \"PivotGrid\",\r\n proxyUrl: void 0,\r\n ignoreExcelErrors: true\r\n },\r\n showRowTotals: true,\r\n showRowGrandTotals: true,\r\n showColumnTotals: true,\r\n showColumnGrandTotals: true,\r\n hideEmptySummaryCells: true,\r\n showTotalsPrior: \"none\",\r\n rowHeaderLayout: \"standard\",\r\n loadPanel: {\r\n enabled: true,\r\n text: _message.default.format(\"Loading\"),\r\n width: 200,\r\n height: 70,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true\r\n },\r\n texts: {\r\n grandTotal: _message.default.format(\"dxPivotGrid-grandTotal\"),\r\n total: _message.default.getFormatter(\"dxPivotGrid-total\"),\r\n noData: _message.default.format(\"dxDataGrid-noDataText\"),\r\n showFieldChooser: _message.default.format(\"dxPivotGrid-showFieldChooser\"),\r\n expandAll: _message.default.format(\"dxPivotGrid-expandAll\"),\r\n collapseAll: _message.default.format(\"dxPivotGrid-collapseAll\"),\r\n sortColumnBySummary: _message.default.getFormatter(\"dxPivotGrid-sortColumnBySummary\"),\r\n sortRowBySummary: _message.default.getFormatter(\"dxPivotGrid-sortRowBySummary\"),\r\n removeAllSorting: _message.default.format(\"dxPivotGrid-removeAllSorting\"),\r\n exportToExcel: _message.default.format(\"dxDataGrid-exportToExcel\"),\r\n dataNotAvailable: _message.default.format(\"dxPivotGrid-dataNotAvailable\")\r\n },\r\n onCellClick: null,\r\n onCellPrepared: null,\r\n showBorders: false,\r\n stateStoring: {\r\n enabled: false,\r\n storageKey: null,\r\n type: \"localStorage\",\r\n customLoad: null,\r\n customSave: null,\r\n savingTimeout: 2e3\r\n },\r\n onExpandValueChanging: null,\r\n renderCellCountLimit: 2e4,\r\n onExporting: null,\r\n onExported: null,\r\n onFileSaving: null,\r\n headerFilter: {\r\n width: 252,\r\n height: 325,\r\n allowSearch: false,\r\n showRelevantValues: false,\r\n searchTimeout: 500,\r\n texts: {\r\n emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n }\r\n }\r\n })\r\n },\r\n _updateCalculatedOptions: function(fields) {\r\n var that = this;\r\n (0, _iterator.each)(fields, function(index, field) {\r\n (0, _iterator.each)(FIELD_CALCULATED_OPTIONS, function(_, optionName) {\r\n var isCalculated = field._initProperties && optionName in field._initProperties && void 0 === field._initProperties[optionName];\r\n var needUpdate = void 0 === field[optionName] || isCalculated;\r\n if (needUpdate) {\r\n (0, _uiPivot_grid.setFieldProperty)(field, optionName, that.option(optionName))\r\n }\r\n })\r\n })\r\n },\r\n _getDataControllerOptions: function() {\r\n var that = this;\r\n return {\r\n component: that,\r\n dataSource: that.option(\"dataSource\"),\r\n texts: that.option(\"texts\"),\r\n showRowTotals: that.option(\"showRowTotals\"),\r\n showRowGrandTotals: that.option(\"showRowGrandTotals\"),\r\n showColumnTotals: that.option(\"showColumnTotals\"),\r\n showTotalsPrior: that.option(\"showTotalsPrior\"),\r\n showColumnGrandTotals: that.option(\"showColumnGrandTotals\"),\r\n dataFieldArea: that.option(\"dataFieldArea\"),\r\n rowHeaderLayout: that.option(\"rowHeaderLayout\"),\r\n hideEmptySummaryCells: that.option(\"hideEmptySummaryCells\"),\r\n onFieldsPrepared: function(fields) {\r\n that._updateCalculatedOptions(fields)\r\n }\r\n }\r\n },\r\n _initDataController: function() {\r\n var that = this;\r\n that._dataController && that._dataController.dispose();\r\n that._dataController = new _uiPivot_grid2.DataController(that._getDataControllerOptions());\r\n if ((0, _window.hasWindow)()) {\r\n that._dataController.changed.add(function() {\r\n that._render()\r\n })\r\n }\r\n that._dataController.scrollChanged.add(function(options) {\r\n that._scrollLeft = options.left;\r\n that._scrollTop = options.top\r\n });\r\n that._dataController.loadingChanged.add(function(isLoading) {\r\n that._updateLoading()\r\n });\r\n that._dataController.progressChanged.add(that._updateLoading.bind(that));\r\n that._dataController.dataSourceChanged.add(function() {\r\n that._trigger(\"onChanged\")\r\n });\r\n var expandValueChanging = that.option(\"onExpandValueChanging\");\r\n if (expandValueChanging) {\r\n that._dataController.expandValueChanging.add(function(e) {\r\n expandValueChanging(e)\r\n })\r\n }\r\n },\r\n _init: function() {\r\n var that = this;\r\n that.callBase();\r\n that._initDataController();\r\n that._scrollLeft = that._scrollTop = null;\r\n that._initActions()\r\n },\r\n _initActions: function() {\r\n var that = this;\r\n that._actions = {\r\n onChanged: that._createActionByOption(\"onChanged\"),\r\n onContextMenuPreparing: that._createActionByOption(\"onContextMenuPreparing\"),\r\n onCellClick: that._createActionByOption(\"onCellClick\"),\r\n onExporting: that._createActionByOption(\"onExporting\"),\r\n onExported: that._createActionByOption(\"onExported\"),\r\n onFileSaving: that._createActionByOption(\"onFileSaving\"),\r\n onCellPrepared: that._createActionByOption(\"onCellPrepared\")\r\n }\r\n },\r\n _trigger: function(eventName, eventArg) {\r\n this._actions[eventName](eventArg)\r\n },\r\n _optionChanged: function(args) {\r\n var that = this;\r\n if (FIELD_CALCULATED_OPTIONS.indexOf(args.name) >= 0) {\r\n var fields = this.getDataSource().fields();\r\n this._updateCalculatedOptions(fields)\r\n }\r\n switch (args.name) {\r\n case \"dataSource\":\r\n case \"allowSorting\":\r\n case \"allowFiltering\":\r\n case \"allowExpandAll\":\r\n case \"allowSortingBySummary\":\r\n case \"scrolling\":\r\n case \"stateStoring\":\r\n that._initDataController();\r\n that._fieldChooserPopup.hide();\r\n that._renderFieldChooser();\r\n that._invalidate();\r\n break;\r\n case \"texts\":\r\n case \"showTotalsPrior\":\r\n case \"showRowTotals\":\r\n case \"showRowGrandTotals\":\r\n case \"showColumnTotals\":\r\n case \"showColumnGrandTotals\":\r\n case \"hideEmptySummaryCells\":\r\n case \"dataFieldArea\":\r\n that._dataController.updateViewOptions(that._getDataControllerOptions());\r\n break;\r\n case \"useNativeScrolling\":\r\n case \"encodeHtml\":\r\n case \"renderCellCountLimit\":\r\n break;\r\n case \"rtlEnabled\":\r\n that.callBase(args);\r\n that._renderFieldChooser();\r\n that._renderContextMenu();\r\n (0, _window.hasWindow)() && that._renderLoadPanel(that._dataArea.groupElement(), that.$element());\r\n that._invalidate();\r\n break;\r\n case \"export\":\r\n that._renderDescriptionArea();\r\n break;\r\n case \"onExpandValueChanging\":\r\n break;\r\n case \"onCellClick\":\r\n case \"onContextMenuPreparing\":\r\n case \"onExporting\":\r\n case \"onExported\":\r\n case \"onFileSaving\":\r\n case \"onCellPrepared\":\r\n that._actions[args.name] = that._createActionByOption(args.name);\r\n break;\r\n case \"fieldChooser\":\r\n that._renderFieldChooser();\r\n that._renderDescriptionArea();\r\n break;\r\n case \"loadPanel\":\r\n if ((0, _window.hasWindow)()) {\r\n that._renderLoadPanel(that._dataArea.groupElement(), that.$element());\r\n that._invalidate()\r\n }\r\n break;\r\n case \"fieldPanel\":\r\n that._renderDescriptionArea();\r\n that._invalidate();\r\n break;\r\n case \"headerFilter\":\r\n that._renderFieldChooser();\r\n that._invalidate();\r\n break;\r\n case \"showBorders\":\r\n that._tableElement().toggleClass(BORDERS_CLASS, !!args.value);\r\n that.updateDimensions();\r\n break;\r\n case \"wordWrapEnabled\":\r\n that._tableElement().toggleClass(\"dx-word-wrap\", !!args.value);\r\n that.updateDimensions();\r\n break;\r\n case \"rowHeaderLayout\":\r\n that._tableElement().find(\".\" + ROW_AREA_CELL_CLASS).toggleClass(\"dx-area-tree-view\", \"tree\" === args.value);\r\n that._dataController.updateViewOptions(that._getDataControllerOptions());\r\n break;\r\n case \"height\":\r\n case \"width\":\r\n that._hasHeight = null;\r\n that.callBase(args);\r\n that.resize();\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n _updateScrollPosition: function(columnsArea, rowsArea, dataArea) {\r\n var that = this;\r\n var scrollTop;\r\n var scrollLeft;\r\n var scrolled = that._scrollTop || that._scrollLeft;\r\n if (that._scrollUpdating) {\r\n return\r\n }\r\n that._scrollUpdating = true;\r\n if (rowsArea && !rowsArea.hasScroll() && that._hasHeight) {\r\n that._scrollTop = null\r\n }\r\n if (columnsArea && !columnsArea.hasScroll()) {\r\n that._scrollLeft = null\r\n }\r\n if (null !== that._scrollTop || null !== that._scrollLeft || scrolled || that.option(\"rtlEnabled\")) {\r\n scrollTop = that._scrollTop || 0;\r\n scrollLeft = that._scrollLeft || 0;\r\n dataArea.scrollTo({\r\n x: scrollLeft,\r\n y: scrollTop\r\n });\r\n columnsArea.scrollTo(scrollLeft);\r\n rowsArea.scrollTo(scrollTop);\r\n that._dataController.updateWindowScrollPosition(that._scrollTop)\r\n }\r\n that._scrollUpdating = false\r\n },\r\n _subscribeToEvents: function(columnsArea, rowsArea, dataArea) {\r\n var that = this;\r\n var scrollHandler = function(e) {\r\n var scrollOffset = e.scrollOffset;\r\n var leftOffset = (0, _type.isDefined)(scrollOffset.left) ? scrollOffset.left : that._scrollLeft;\r\n var topOffset = (0, _type.isDefined)(scrollOffset.top) && that._hasHeight ? scrollOffset.top : that._scrollTop;\r\n if ((that._scrollLeft || 0) !== (leftOffset || 0) || (that._scrollTop || 0) !== (topOffset || 0)) {\r\n that._scrollLeft = leftOffset;\r\n that._scrollTop = topOffset;\r\n that._updateScrollPosition(columnsArea, rowsArea, dataArea);\r\n if (\"virtual\" === that.option(\"scrolling.mode\")) {\r\n that._dataController.setViewportPosition(that._scrollLeft, that._scrollTop)\r\n }\r\n }\r\n };\r\n (0, _iterator.each)([columnsArea, rowsArea, dataArea], function(_, area) {\r\n subscribeToScrollEvent(area, scrollHandler)\r\n });\r\n !that._hasHeight && that._dataController.subscribeToWindowScrollEvents(dataArea.groupElement())\r\n },\r\n _clean: _common.noop,\r\n _needDelayResizing: function(cellsInfo) {\r\n var cellsCount = cellsInfo.length * (cellsInfo.length ? cellsInfo[0].length : 0);\r\n return cellsCount > this.option(\"renderCellCountLimit\")\r\n },\r\n _renderFieldChooser: function() {\r\n var that = this;\r\n var container = that._pivotGridContainer;\r\n var fieldChooserOptions = that.option(\"fieldChooser\") || {};\r\n var toolbarItems = \"onDemand\" === fieldChooserOptions.applyChangesMode ? [{\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: _message.default.format(\"OK\"),\r\n onClick: function(e) {\r\n that._fieldChooserPopup.$content().dxPivotGridFieldChooser(\"applyChanges\");\r\n that._fieldChooserPopup.hide()\r\n }\r\n }\r\n }, {\r\n toolbar: \"bottom\",\r\n location: \"after\",\r\n widget: \"dxButton\",\r\n options: {\r\n text: _message.default.format(\"Cancel\"),\r\n onClick: function(e) {\r\n that._fieldChooserPopup.hide()\r\n }\r\n }\r\n }] : [];\r\n var fieldChooserComponentOptions = {\r\n layout: fieldChooserOptions.layout,\r\n texts: fieldChooserOptions.texts || {},\r\n dataSource: that.getDataSource(),\r\n allowSearch: fieldChooserOptions.allowSearch,\r\n searchTimeout: fieldChooserOptions.searchTimeout,\r\n width: void 0,\r\n height: void 0,\r\n headerFilter: that.option(\"headerFilter\"),\r\n encodeHtml: that.option(\"encodeHtml\"),\r\n applyChangesMode: fieldChooserOptions.applyChangesMode,\r\n onContextMenuPreparing: function(e) {\r\n that._trigger(\"onContextMenuPreparing\", e)\r\n }\r\n };\r\n var popupOptions = {\r\n shading: false,\r\n title: fieldChooserOptions.title,\r\n width: fieldChooserOptions.width,\r\n height: fieldChooserOptions.height,\r\n showCloseButton: true,\r\n resizeEnabled: true,\r\n minWidth: fieldChooserOptions.minWidth,\r\n minHeight: fieldChooserOptions.minHeight,\r\n toolbarItems: toolbarItems,\r\n onResize: function(e) {\r\n e.component.$content().dxPivotGridFieldChooser(\"updateDimensions\")\r\n },\r\n onShown: function(e) {\r\n that._createComponent(e.component.content(), _uiPivot_grid6.default, fieldChooserComponentOptions)\r\n },\r\n onHidden: function(e) {\r\n var fieldChooser = e.component.$content().dxPivotGridFieldChooser(\"instance\");\r\n fieldChooser.resetTreeView();\r\n fieldChooser.cancelChanges()\r\n }\r\n };\r\n if (that._fieldChooserPopup) {\r\n that._fieldChooserPopup.option(popupOptions);\r\n that._fieldChooserPopup.$content().dxPivotGridFieldChooser(fieldChooserComponentOptions)\r\n } else {\r\n that._fieldChooserPopup = that._createComponent((0, _renderer.default)(DIV).addClass(FIELD_CHOOSER_POPUP_CLASS).appendTo(container), _popup.default, popupOptions)\r\n }\r\n },\r\n _renderContextMenu: function() {\r\n var that = this;\r\n var $container = that._pivotGridContainer;\r\n if (that._contextMenu) {\r\n that._contextMenu.$element().remove()\r\n }\r\n that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, {\r\n onPositioning: function(actionArgs) {\r\n var event = actionArgs.event;\r\n actionArgs.cancel = true;\r\n if (!event) {\r\n return\r\n }\r\n var targetElement = event.target.cellIndex >= 0 ? event.target : (0, _renderer.default)(event.target).closest(\"td\").get(0);\r\n if (!targetElement) {\r\n return\r\n }\r\n var args = that._createEventArgs(targetElement, event);\r\n var items = that._getContextMenuItems(args);\r\n if (items) {\r\n actionArgs.component.option(\"items\", items);\r\n actionArgs.cancel = false;\r\n return\r\n }\r\n },\r\n onItemClick: function(params) {\r\n params.itemData.onItemClick && params.itemData.onItemClick(params)\r\n },\r\n cssClass: PIVOTGRID_CLASS,\r\n target: that.$element()\r\n })\r\n },\r\n _getContextMenuItems: function(e) {\r\n var that = this;\r\n var items = [];\r\n var texts = that.option(\"texts\");\r\n if (\"row\" === e.area || \"column\" === e.area) {\r\n var areaFields = e[e.area + \"Fields\"];\r\n var oppositeAreaFields = e[\"column\" === e.area ? \"rowFields\" : \"columnFields\"];\r\n var field = e.cell.path && areaFields[e.cell.path.length - 1];\r\n var dataSource = that.getDataSource();\r\n if (field && field.allowExpandAll && e.cell.path.length < e[e.area + \"Fields\"].length && !dataSource.paginate()) {\r\n items.push({\r\n beginGroup: true,\r\n icon: \"none\",\r\n text: texts.expandAll,\r\n onItemClick: function() {\r\n dataSource.expandAll(field.index)\r\n }\r\n });\r\n items.push({\r\n text: texts.collapseAll,\r\n icon: \"none\",\r\n onItemClick: function() {\r\n dataSource.collapseAll(field.index)\r\n }\r\n })\r\n }\r\n if (e.cell.isLast && !dataSource.paginate()) {\r\n var sortingBySummaryItemCount = 0;\r\n (0, _iterator.each)(oppositeAreaFields, function(index, field) {\r\n if (!field.allowSortingBySummary) {\r\n return\r\n }(0, _iterator.each)(e.dataFields, function(dataIndex, dataField) {\r\n if ((0, _type.isDefined)(e.cell.dataIndex) && e.cell.dataIndex !== dataIndex) {\r\n return\r\n }\r\n var showDataFieldCaption = !(0, _type.isDefined)(e.cell.dataIndex) && e.dataFields.length > 1;\r\n var textFormat = \"column\" === e.area ? texts.sortColumnBySummary : texts.sortRowBySummary;\r\n var checked = (0, _uiPivot_grid.findField)(e.dataFields, field.sortBySummaryField) === dataIndex && (e.cell.path || []).join(\"/\") === (field.sortBySummaryPath || []).join(\"/\");\r\n var text = (0, _string.format)(textFormat, showDataFieldCaption ? field.caption + \" - \" + dataField.caption : field.caption);\r\n items.push({\r\n beginGroup: 0 === sortingBySummaryItemCount,\r\n icon: checked ? \"desc\" === field.sortOrder ? \"sortdowntext\" : \"sortuptext\" : \"none\",\r\n text: text,\r\n onItemClick: function() {\r\n dataSource.field(field.index, {\r\n sortBySummaryField: dataField.name || dataField.caption || dataField.dataField,\r\n sortBySummaryPath: e.cell.path,\r\n sortOrder: \"desc\" === field.sortOrder ? \"asc\" : \"desc\"\r\n });\r\n dataSource.load()\r\n }\r\n });\r\n sortingBySummaryItemCount++\r\n })\r\n });\r\n (0, _iterator.each)(oppositeAreaFields, function(index, field) {\r\n if (!field.allowSortingBySummary || !(0, _type.isDefined)(field.sortBySummaryField)) {\r\n return\r\n }\r\n items.push({\r\n beginGroup: 0 === sortingBySummaryItemCount,\r\n icon: \"none\",\r\n text: texts.removeAllSorting,\r\n onItemClick: function() {\r\n (0, _iterator.each)(oppositeAreaFields, function(index, field) {\r\n dataSource.field(field.index, {\r\n sortBySummaryField: void 0,\r\n sortBySummaryPath: void 0,\r\n sortOrder: void 0\r\n })\r\n });\r\n dataSource.load()\r\n }\r\n });\r\n return false\r\n })\r\n }\r\n }\r\n if (that.option(\"fieldChooser.enabled\")) {\r\n items.push({\r\n beginGroup: true,\r\n icon: \"columnchooser\",\r\n text: texts.showFieldChooser,\r\n onItemClick: function() {\r\n that._fieldChooserPopup.show()\r\n }\r\n })\r\n }\r\n if (that.option(\"export.enabled\")) {\r\n items.push({\r\n beginGroup: true,\r\n icon: \"xlsxfile\",\r\n text: texts.exportToExcel,\r\n onItemClick: function() {\r\n that.exportToExcel()\r\n }\r\n })\r\n }\r\n e.items = items;\r\n that._trigger(\"onContextMenuPreparing\", e);\r\n items = e.items;\r\n if (items && items.length) {\r\n return items\r\n }\r\n },\r\n _createEventArgs: function(targetElement, dxEvent) {\r\n var that = this;\r\n var dataSource = that.getDataSource();\r\n var args = {\r\n rowFields: dataSource.getAreaFields(\"row\"),\r\n columnFields: dataSource.getAreaFields(\"column\"),\r\n dataFields: dataSource.getAreaFields(\"data\"),\r\n event: dxEvent\r\n };\r\n if (clickedOnFieldsArea((0, _renderer.default)(targetElement))) {\r\n return (0, _extend.extend)(that._createFieldArgs(targetElement), args)\r\n } else {\r\n return (0, _extend.extend)(that._createCellArgs(targetElement), args)\r\n }\r\n },\r\n _createFieldArgs: function(targetElement) {\r\n var field = (0, _renderer.default)(targetElement).children().data(\"field\");\r\n var args = {\r\n field: field\r\n };\r\n return (0, _type.isDefined)(field) ? args : {}\r\n },\r\n _createCellArgs: function(cellElement) {\r\n var $cellElement = (0, _renderer.default)(cellElement);\r\n var columnIndex = cellElement.cellIndex;\r\n var rowIndex = cellElement.parentElement.rowIndex;\r\n var $table = $cellElement.closest(\"table\");\r\n var data = $table.data(\"data\");\r\n var cell = data && data[rowIndex] && data[rowIndex][columnIndex];\r\n var args = {\r\n area: $table.data(\"area\"),\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex,\r\n cellElement: (0, _element.getPublicElement)($cellElement),\r\n cell: cell\r\n };\r\n return args\r\n },\r\n _handleCellClick: function(e) {\r\n var that = this;\r\n var args = that._createEventArgs(e.currentTarget, e);\r\n var cell = args.cell;\r\n if (!cell || !args.area && (args.rowIndex || args.columnIndex)) {\r\n return\r\n }\r\n that._trigger(\"onCellClick\", args);\r\n cell && !args.cancel && (0, _type.isDefined)(cell.expanded) && setTimeout(function() {\r\n that._dataController[cell.expanded ? \"collapseHeaderItem\" : \"expandHeaderItem\"](args.area, cell.path)\r\n })\r\n },\r\n _getNoDataText: function() {\r\n return this.option(\"texts.noData\")\r\n },\r\n _renderNoDataText: _uiGrid_core.default.renderNoDataText,\r\n _renderLoadPanel: _uiGrid_core.default.renderLoadPanel,\r\n _updateLoading: function(progress) {\r\n var that = this;\r\n var isLoading = that._dataController.isLoading();\r\n if (!that._loadPanel) {\r\n return\r\n }\r\n var loadPanelVisible = that._loadPanel.option(\"visible\");\r\n if (!loadPanelVisible) {\r\n that._startLoadingTime = new Date\r\n }\r\n if (isLoading) {\r\n if (progress) {\r\n if (new Date - that._startLoadingTime >= 1e3) {\r\n that._loadPanel.option(\"message\", Math.floor(100 * progress) + \"%\")\r\n }\r\n } else {\r\n that._loadPanel.option(\"message\", that.option(\"loadPanel.text\"))\r\n }\r\n }\r\n clearTimeout(that._hideLoadingTimeoutID);\r\n if (loadPanelVisible && !isLoading) {\r\n that._hideLoadingTimeoutID = setTimeout(function() {\r\n that._loadPanel.option(\"visible\", false);\r\n that.$element().removeClass(OVERFLOW_HIDDEN_CLASS)\r\n })\r\n } else {\r\n that._loadPanel.option(\"visible\", isLoading);\r\n that.$element().toggleClass(OVERFLOW_HIDDEN_CLASS, !isLoading)\r\n }\r\n },\r\n _renderDescriptionArea: function() {\r\n var _this = this;\r\n var $element = this.$element();\r\n var $descriptionCell = $element.find(\".\" + DESCRIPTION_AREA_CELL_CLASS);\r\n var $toolbarContainer = (0, _renderer.default)(DIV).addClass(\"dx-pivotgrid-toolbar\");\r\n var fieldPanel = this.option(\"fieldPanel\");\r\n var $filterHeader = $element.find(\".dx-filter-header\");\r\n var $columnHeader = $element.find(\".dx-column-header\");\r\n var $targetContainer;\r\n if (fieldPanel.visible && fieldPanel.showFilterFields) {\r\n $targetContainer = $filterHeader\r\n } else {\r\n if (fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)) {\r\n $targetContainer = $columnHeader\r\n } else {\r\n $targetContainer = $descriptionCell\r\n }\r\n }\r\n $columnHeader.toggleClass(BOTTOM_BORDER_CLASS, !!(fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)));\r\n $filterHeader.toggleClass(BOTTOM_BORDER_CLASS, !!(fieldPanel.visible && fieldPanel.showFilterFields));\r\n $descriptionCell.toggleClass(\"dx-pivotgrid-background\", fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields || fieldPanel.showRowFields));\r\n this.$element().find(\".dx-pivotgrid-toolbar\").remove();\r\n $toolbarContainer.prependTo($targetContainer);\r\n if (this.option(\"fieldChooser.enabled\")) {\r\n var $buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass(\"dx-pivotgrid-field-chooser-button\");\r\n var buttonOptions = {\r\n icon: \"columnchooser\",\r\n hint: this.option(\"texts.showFieldChooser\"),\r\n onClick: function() {\r\n _this.getFieldChooserPopup().show()\r\n }\r\n };\r\n this._createComponent($buttonElement, \"dxButton\", buttonOptions)\r\n }\r\n if (this.option(\"export.enabled\")) {\r\n var _$buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass(\"dx-pivotgrid-export-button\");\r\n var _buttonOptions = {\r\n icon: \"xlsxfile\",\r\n hint: this.option(\"texts.exportToExcel\"),\r\n onClick: function() {\r\n _this.exportToExcel()\r\n }\r\n };\r\n this._createComponent(_$buttonElement, \"dxButton\", _buttonOptions)\r\n }\r\n },\r\n _detectHasContainerHeight: function() {\r\n var that = this;\r\n var element = that.$element();\r\n if ((0, _type.isDefined)(that._hasHeight)) {\r\n var height = that.option(\"height\") || that.$element().get(0).style.height;\r\n if (height && that._hasHeight ^ \"auto\" !== height) {\r\n that._hasHeight = null\r\n }\r\n }\r\n if ((0, _type.isDefined)(that._hasHeight) || element.is(\":hidden\")) {\r\n return\r\n }\r\n that._pivotGridContainer.addClass(\"dx-hidden\");\r\n var testElement = (0, _renderer.default)(DIV).height(TEST_HEIGHT);\r\n element.append(testElement);\r\n that._hasHeight = element.height() !== TEST_HEIGHT;\r\n that._pivotGridContainer.removeClass(\"dx-hidden\");\r\n testElement.remove()\r\n },\r\n _renderHeaders: function(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer) {\r\n var that = this;\r\n var dataSource = that.getDataSource();\r\n that._rowFields = that._rowFields || new _uiPivot_grid5.FieldsArea(that, \"row\");\r\n that._rowFields.render(rowHeaderContainer, dataSource.getAreaFields(\"row\"));\r\n that._columnFields = that._columnFields || new _uiPivot_grid5.FieldsArea(that, \"column\");\r\n that._columnFields.render(columnHeaderContainer, dataSource.getAreaFields(\"column\"));\r\n that._filterFields = that._filterFields || new _uiPivot_grid5.FieldsArea(that, \"filter\");\r\n that._filterFields.render(filterHeaderContainer, dataSource.getAreaFields(\"filter\"));\r\n that._dataFields = that._dataFields || new _uiPivot_grid5.FieldsArea(that, \"data\");\r\n that._dataFields.render(dataHeaderContainer, dataSource.getAreaFields(\"data\"));\r\n that.$element().dxPivotGridFieldChooserBase(\"instance\").renderSortable()\r\n },\r\n _createTableElement: function() {\r\n var that = this;\r\n var $table = (0, _renderer.default)(\"\").css({\r\n width: \"100%\"\r\n }).toggleClass(BORDERS_CLASS, !!that.option(\"showBorders\")).toggleClass(\"dx-word-wrap\", !!that.option(\"wordWrapEnabled\"));\r\n _events_engine.default.on($table, (0, _index.addNamespace)(_click.name, \"dxPivotGrid\"), \"td\", that._handleCellClick.bind(that));\r\n return $table\r\n },\r\n _renderDataArea: function(dataAreaElement) {\r\n var that = this;\r\n var dataArea = that._dataArea || new _uiPivot_grid3.DataArea(that);\r\n that._dataArea = dataArea;\r\n dataArea.render(dataAreaElement, that._dataController.getCellsInfo());\r\n return dataArea\r\n },\r\n _renderRowsArea: function(rowsAreaElement) {\r\n var that = this;\r\n var rowsArea = that._rowsArea || new _uiPivot_grid4.VerticalHeadersArea(that);\r\n that._rowsArea = rowsArea;\r\n rowsArea.render(rowsAreaElement, that._dataController.getRowsInfo());\r\n return rowsArea\r\n },\r\n _renderColumnsArea: function(columnsAreaElement) {\r\n var that = this;\r\n var columnsArea = that._columnsArea || new _uiPivot_grid4.HorizontalHeadersArea(that);\r\n that._columnsArea = columnsArea;\r\n columnsArea.render(columnsAreaElement, that._dataController.getColumnsInfo());\r\n return columnsArea\r\n },\r\n _initMarkup: function() {\r\n var that = this;\r\n that.callBase.apply(this, arguments);\r\n that.$element().addClass(PIVOTGRID_CLASS)\r\n },\r\n _renderContentImpl: function() {\r\n var that = this;\r\n var columnsAreaElement;\r\n var rowsAreaElement;\r\n var dataAreaElement;\r\n var tableElement;\r\n var isFirstDrawing = !that._pivotGridContainer;\r\n var rowHeaderContainer;\r\n var columnHeaderContainer;\r\n var filterHeaderContainer;\r\n var dataHeaderContainer;\r\n tableElement = !isFirstDrawing && that._tableElement();\r\n if (!tableElement) {\r\n that.$element().addClass(ROW_LINES_CLASS).addClass(FIELDS_CONTAINER_CLASS);\r\n that._pivotGridContainer = (0, _renderer.default)(DIV).addClass(\"dx-pivotgrid-container\");\r\n that._renderFieldChooser();\r\n that._renderContextMenu();\r\n columnsAreaElement = (0, _renderer.default)(TD).addClass(COLUMN_AREA_CELL_CLASS);\r\n rowsAreaElement = (0, _renderer.default)(TD).addClass(ROW_AREA_CELL_CLASS);\r\n dataAreaElement = (0, _renderer.default)(TD).addClass(DATA_AREA_CELL_CLASS);\r\n tableElement = that._createTableElement();\r\n dataHeaderContainer = (0, _renderer.default)(TD).addClass(\"dx-data-header\");\r\n filterHeaderContainer = (0, _renderer.default)(\"\"\r\n },\r\n _getCloseMainElementMarkup: function() {\r\n return \"\"\r\n },\r\n setVirtualContentParams: function(params) {\r\n this.callBase(params);\r\n this._setTableCss({\r\n left: params.left,\r\n top: 0\r\n });\r\n this._virtualContentWidth = params.width\r\n },\r\n hasScroll: function() {\r\n var tableWidth = this._virtualContent ? this._virtualContentWidth : this._tableWidth;\r\n if (this._groupWidth && tableWidth) {\r\n return tableWidth - this._groupWidth >= 1\r\n }\r\n return false\r\n },\r\n processScroll: function() {\r\n if (!this._getScrollable()) {\r\n this._groupElement.dxScrollable({\r\n useNative: false,\r\n useSimulatedScrollbar: false,\r\n showScrollbar: false,\r\n bounceEnabled: false,\r\n direction: \"horizontal\",\r\n updateManually: true\r\n })\r\n }\r\n },\r\n processScrollBarSpacing: function(scrollBarWidth) {\r\n var that = this;\r\n var groupAlignment = that.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n if (that._groupWidth) {\r\n that.groupWidth(that._groupWidth - scrollBarWidth)\r\n }\r\n if (that._scrollBarWidth) {\r\n that._groupElement.next().remove()\r\n }\r\n that._groupElement.toggleClass(PIVOTGRID_VERTICAL_SCROLL_CLASS, scrollBarWidth > 0);\r\n that._groupElement.css(\"float\", groupAlignment).width(that._groupHeight);\r\n that._scrollBarWidth = scrollBarWidth\r\n },\r\n ctor: function(component) {\r\n this.callBase(component);\r\n this._scrollBarWidth = 0\r\n },\r\n getScrollPath: function(offset) {\r\n var tableElement = this.tableElement();\r\n var cell;\r\n offset -= parseInt(tableElement[0].style.left, 10) || 0;\r\n (0, _iterator.each)(tableElement.find(\"td\"), function(_, td) {\r\n if (1 === td.colSpan && td.offsetLeft <= offset && td.offsetWidth + td.offsetLeft > offset) {\r\n cell = td;\r\n return false\r\n }\r\n });\r\n return getCellPath(tableElement, cell)\r\n },\r\n _moveFakeTable: function(scrollPos) {\r\n this._moveFakeTableHorizontally(scrollPos);\r\n this.callBase()\r\n }\r\n});\r\nexports.HorizontalHeadersArea = HorizontalHeadersArea;\r\nvar VerticalHeadersArea = HorizontalHeadersArea.inherit({\r\n _getAreaClassName: function() {\r\n return PIVOTGRID_AREA_ROW_CLASS\r\n },\r\n _applyCustomStyles: function(options) {\r\n this.callBase(options);\r\n if (options.cellIndex === options.cellsCount - 1) {\r\n options.classArray.push(PIVOTGRID_LAST_CELL_CLASS)\r\n }\r\n if (options.rowIndex === options.rowsCount - 1) {\r\n options.cssArray.push(\"border-bottom: 0px\")\r\n }\r\n if (options.cell.isWhiteSpace) {\r\n options.classArray.push(\"dx-white-space-column\")\r\n }\r\n },\r\n _getAreaName: function() {\r\n return \"row\"\r\n },\r\n setVirtualContentParams: function(params) {\r\n this.callBase(params);\r\n this._setTableCss({\r\n top: params.top,\r\n left: 0\r\n });\r\n this._virtualContentHeight = params.height\r\n },\r\n hasScroll: function() {\r\n var tableHeight = this._virtualContent ? this._virtualContentHeight : this._tableHeight;\r\n if (this._groupHeight && tableHeight) {\r\n return tableHeight - this._groupHeight >= 1\r\n }\r\n return false\r\n },\r\n processScroll: function() {\r\n if (!this._getScrollable()) {\r\n this._groupElement.dxScrollable({\r\n useNative: false,\r\n useSimulatedScrollbar: false,\r\n showScrollbar: false,\r\n bounceEnabled: false,\r\n direction: \"vertical\",\r\n updateManually: true\r\n })\r\n }\r\n },\r\n processScrollBarSpacing: function(scrollBarWidth) {\r\n var that = this;\r\n if (that._groupHeight) {\r\n that.groupHeight(that._groupHeight - scrollBarWidth)\r\n }\r\n if (that._scrollBarWidth) {\r\n that._groupElement.next().remove()\r\n }\r\n if (scrollBarWidth) {\r\n that._groupElement.after((0, _renderer.default)(\"
\").width(\"100%\").height(scrollBarWidth - 1))\r\n }\r\n that._scrollBarWidth = scrollBarWidth\r\n },\r\n getScrollPath: function(offset) {\r\n var tableElement = this.tableElement();\r\n var cell;\r\n offset -= parseInt(tableElement[0].style.top, 10) || 0;\r\n (0, _iterator.each)(tableElement.find(\"tr\"), function(_, tr) {\r\n var td = tr.childNodes[tr.childNodes.length - 1];\r\n if (td && 1 === td.rowSpan && td.offsetTop <= offset && td.offsetHeight + td.offsetTop > offset) {\r\n cell = td;\r\n return false\r\n }\r\n });\r\n return getCellPath(tableElement, cell)\r\n },\r\n _moveFakeTable: function(scrollPos) {\r\n this._moveFakeTableTop(scrollPos);\r\n this.callBase()\r\n },\r\n _getRowClassNames: function(rowIndex, cell, rowClassNames) {\r\n if (0 !== rowIndex & cell.expanded && (0, _array.inArray)(PIVOTGRID_EXPAND_BORDER, rowClassNames) === -1) {\r\n rowClassNames.push(PIVOTGRID_EXPAND_BORDER)\r\n }\r\n },\r\n _getMainElementMarkup: function() {\r\n return \"
\"\r\n },\r\n _getCloseMainElementMarkup: function() {\r\n return \"\"\r\n },\r\n updateColspans: function(columnCount) {\r\n var rows = this.tableElement()[0].rows;\r\n var columnOffset = 0;\r\n var columnOffsetResetIndexes = [];\r\n if (this.getColumnsCount() - columnCount > 0) {\r\n return\r\n }\r\n for (var i = 0; i < rows.length; i++) {\r\n for (var j = 0; j < rows[i].cells.length; j++) {\r\n var cell = rows[i].cells[j];\r\n var rowSpan = cell.rowSpan;\r\n if (columnOffsetResetIndexes[i]) {\r\n columnOffset -= columnOffsetResetIndexes[i];\r\n columnOffsetResetIndexes[i] = 0\r\n }\r\n var diff = columnCount - (columnOffset + cell.colSpan);\r\n if (j === rows[i].cells.length - 1 && diff > 0) {\r\n cell.colSpan = cell.colSpan + diff\r\n }\r\n columnOffsetResetIndexes[i + rowSpan] = (columnOffsetResetIndexes[i + rowSpan] || 0) + cell.colSpan;\r\n columnOffset += cell.colSpan\r\n }\r\n }\r\n }\r\n});\r\nexports.VerticalHeadersArea = VerticalHeadersArea;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.fields_area.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.FieldsArea = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.area_item\");\r\nvar _uiPivot_grid2 = require(\"./ui.pivot_grid.utils\");\r\nvar _popup = _interopRequireDefault(require(\"../popup\"));\r\nvar _button = _interopRequireDefault(require(\"../button\"));\r\nrequire(\"./ui.pivot_grid.field_chooser_base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DIV = \"
\";\r\nvar AREA_DRAG_CLASS = \"dx-pivotgrid-drag-action\";\r\n\r\nfunction renderGroupConnector(field, nextField, prevField, $container) {\r\n if (prevField && prevField.groupName && prevField.groupName === field.groupName) {\r\n (0, _renderer.default)(DIV).addClass(\"dx-group-connector\").addClass(\"dx-group-connector-prev\").appendTo($container)\r\n }\r\n if (nextField && nextField.groupName && nextField.groupName === field.groupName) {\r\n (0, _renderer.default)(DIV).addClass(\"dx-group-connector\").addClass(\"dx-group-connector-next\").appendTo($container)\r\n }\r\n}\r\nvar FieldsArea = _uiPivot_grid.AreaItem.inherit({\r\n ctor: function(component, area) {\r\n this.callBase(component);\r\n this._area = area\r\n },\r\n _getAreaName: function() {\r\n return \"fields\"\r\n },\r\n _createGroupElement: function() {\r\n return (0, _renderer.default)(DIV).addClass(\"dx-pivotgrid-fields-area\").addClass(\"dx-area-fields\").addClass(AREA_DRAG_CLASS).attr(\"group\", this._area)\r\n },\r\n isVisible: function() {\r\n return !!this.option(\"fieldPanel.visible\") && this.option(\"fieldPanel.show\" + (0, _uiPivot_grid2.capitalizeFirstLetter)(this._area) + \"Fields\")\r\n },\r\n _renderButton: function(element) {\r\n var that = this;\r\n var container = (0, _renderer.default)(\"
\").appendTo(element));\r\n var button = that.component._createComponent((0, _renderer.default)(DIV).appendTo(container), _button.default, {\r\n text: \"Fields\",\r\n icon: \"menu\",\r\n width: \"auto\",\r\n onClick: function() {\r\n var popup = that.tableElement().find(\".dx-fields-area-popup\").dxPopup(\"instance\");\r\n if (!popup.option(\"visible\")) {\r\n popup.show()\r\n }\r\n }\r\n });\r\n button.$element().addClass(\"dx-pivotgrid-fields-area-hamburger\")\r\n },\r\n _getPopupOptions: function(row, button) {\r\n return {\r\n contentTemplate: function() {\r\n return (0, _renderer.default)(\"
\").attr(\"colspan\", \"2\").addClass(\"dx-filter-header\");\r\n columnHeaderContainer = (0, _renderer.default)(TD).addClass(\"dx-column-header\");\r\n rowHeaderContainer = (0, _renderer.default)(TD).addClass(DESCRIPTION_AREA_CELL_CLASS);\r\n (0, _renderer.default)(TR).append(filterHeaderContainer).appendTo(tableElement);\r\n (0, _renderer.default)(TR).append(dataHeaderContainer).append(columnHeaderContainer).appendTo(tableElement);\r\n (0, _renderer.default)(TR).toggleClass(\"dx-ie\", true === _browser.default.msie).append(rowHeaderContainer).append(columnsAreaElement).appendTo(tableElement);\r\n (0, _renderer.default)(TR).addClass(BOTTOM_ROW_CLASS).append(rowsAreaElement).append(dataAreaElement).appendTo(tableElement);\r\n that._pivotGridContainer.append(tableElement);\r\n that.$element().append(that._pivotGridContainer);\r\n if (\"tree\" === that.option(\"rowHeaderLayout\")) {\r\n rowsAreaElement.addClass(\"dx-area-tree-view\")\r\n }\r\n }\r\n that.$element().addClass(OVERFLOW_HIDDEN_CLASS);\r\n that._createComponent(that.$element(), _uiPivot_grid7.default, {\r\n dataSource: that.getDataSource(),\r\n encodeHtml: that.option(\"encodeHtml\"),\r\n allowFieldDragging: that.option(\"fieldPanel.allowFieldDragging\"),\r\n headerFilter: that.option(\"headerFilter\"),\r\n visible: that.option(\"visible\")\r\n });\r\n var dataArea = that._renderDataArea(dataAreaElement);\r\n var rowsArea = that._renderRowsArea(rowsAreaElement);\r\n var columnsArea = that._renderColumnsArea(columnsAreaElement);\r\n dataArea.tableElement().prepend(columnsArea.headElement());\r\n if (isFirstDrawing) {\r\n that._renderLoadPanel(dataArea.groupElement().parent(), that.$element());\r\n that._renderDescriptionArea();\r\n rowsArea.processScroll();\r\n columnsArea.processScroll()\r\n } [dataArea, rowsArea, columnsArea].forEach(function(area) {\r\n unsubscribeScrollEvents(area)\r\n });\r\n that._renderHeaders(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer);\r\n that._update(isFirstDrawing)\r\n },\r\n _update: function(isFirstDrawing) {\r\n var that = this;\r\n var updateHandler = function() {\r\n that.updateDimensions()\r\n };\r\n if (that._needDelayResizing(that._dataArea.getData()) && isFirstDrawing) {\r\n setTimeout(updateHandler)\r\n } else {\r\n updateHandler()\r\n }\r\n },\r\n _fireContentReadyAction: function() {\r\n if (!this._dataController.isLoading()) {\r\n this.callBase()\r\n }\r\n },\r\n getScrollPath: function(area) {\r\n var that = this;\r\n if (\"column\" === area) {\r\n return that._columnsArea.getScrollPath(that._scrollLeft)\r\n } else {\r\n return that._rowsArea.getScrollPath(that._scrollTop)\r\n }\r\n },\r\n getDataSource: function() {\r\n return this._dataController.getDataSource()\r\n },\r\n getFieldChooserPopup: function() {\r\n return this._fieldChooserPopup\r\n },\r\n hasScroll: function(area) {\r\n var that = this;\r\n return \"column\" === area ? that._columnsArea.hasScroll() : that._rowsArea.hasScroll()\r\n },\r\n _dimensionChanged: function() {\r\n this.updateDimensions()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.updateDimensions()\r\n }\r\n },\r\n _dispose: function() {\r\n var that = this;\r\n clearTimeout(that._hideLoadingTimeoutID);\r\n that.callBase.apply(that, arguments);\r\n if (that._dataController) {\r\n that._dataController.dispose()\r\n }\r\n },\r\n _tableElement: function() {\r\n return this.$element().find(\"table\").first()\r\n },\r\n addWidgetPrefix: function(className) {\r\n return \"dx-pivotgrid-\" + className\r\n },\r\n resize: function() {\r\n this.updateDimensions()\r\n },\r\n isReady: function() {\r\n return this.callBase() && !this._dataController.isLoading()\r\n },\r\n updateDimensions: function() {\r\n var that = this;\r\n var groupWidth;\r\n var tableElement = that._tableElement();\r\n var rowsArea = that._rowsArea;\r\n var columnsArea = that._columnsArea;\r\n var dataArea = that._dataArea;\r\n var bordersWidth;\r\n var totalWidth = 0;\r\n var totalHeight = 0;\r\n var rowsAreaWidth = 0;\r\n var hasRowsScroll;\r\n var hasColumnsScroll;\r\n var scrollingOptions = that.option(\"scrolling\") || {};\r\n var scrollBarInfo = getScrollBarInfo(scrollingOptions.useNative);\r\n var scrollBarWidth = scrollBarInfo.scrollBarWidth;\r\n var dataAreaCell = tableElement.find(\".\" + DATA_AREA_CELL_CLASS);\r\n var rowAreaCell = tableElement.find(\".\" + ROW_AREA_CELL_CLASS);\r\n var columnAreaCell = tableElement.find(\".\" + COLUMN_AREA_CELL_CLASS);\r\n var descriptionCell = tableElement.find(\".\" + DESCRIPTION_AREA_CELL_CLASS);\r\n var filterHeaderCell = tableElement.find(\".dx-filter-header\");\r\n var columnHeaderCell = tableElement.find(\".dx-column-header\");\r\n var rowFieldsHeader = that._rowFields;\r\n var d = new _deferred.Deferred;\r\n if (!(0, _window.hasWindow)()) {\r\n return\r\n }\r\n var needSynchronizeFieldPanel = rowFieldsHeader.isVisible() && \"tree\" !== that.option(\"rowHeaderLayout\");\r\n that._detectHasContainerHeight();\r\n if (!dataArea.headElement().length) {\r\n dataArea.tableElement().prepend(columnsArea.headElement())\r\n }\r\n if (needSynchronizeFieldPanel) {\r\n rowsArea.updateColspans(rowFieldsHeader.getColumnsCount());\r\n rowsArea.tableElement().prepend(rowFieldsHeader.headElement())\r\n }\r\n tableElement.addClass(INCOMPRESSIBLE_FIELDS_CLASS);\r\n dataArea.reset();\r\n rowsArea.reset();\r\n columnsArea.reset();\r\n rowFieldsHeader.reset();\r\n var calculateHasScroll = function(areaSize, totalSize) {\r\n return totalSize - areaSize >= 1\r\n };\r\n var calculateGroupHeight = function(dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth) {\r\n return hasRowsScroll ? dataAreaHeight : totalHeight + (hasColumnsScroll ? scrollBarWidth : 0)\r\n };\r\n (0, _common.deferUpdate)(function() {\r\n var resultWidths = dataArea.getColumnsWidth();\r\n var rowHeights = rowsArea.getRowsHeight();\r\n var rowsAreaHeights = needSynchronizeFieldPanel ? rowHeights.slice(1) : rowHeights;\r\n var dataAreaHeights = dataArea.getRowsHeight();\r\n var descriptionCellHeight = (0, _size.getSize)(descriptionCell[0], \"height\", {\r\n paddings: true,\r\n borders: true,\r\n margins: true\r\n }) + (needSynchronizeFieldPanel ? rowHeights[0] : 0);\r\n var columnsAreaRowCount = that._dataController.getColumnsInfo().length;\r\n var resultHeights = (0, _uiPivot_grid.mergeArraysByMaxValue)(rowsAreaHeights, dataAreaHeights.slice(columnsAreaRowCount));\r\n var columnsAreaRowHeights = dataAreaHeights.slice(0, columnsAreaRowCount);\r\n var columnsAreaHeight = getArraySum(columnsAreaRowHeights);\r\n var rowsAreaColumnWidths = rowsArea.getColumnsWidth();\r\n var filterAreaHeight = 0;\r\n var dataAreaHeight = 0;\r\n if (that._hasHeight) {\r\n filterAreaHeight = filterHeaderCell.height();\r\n var $dataHeader = tableElement.find(\".dx-data-header\");\r\n var dataHeaderHeight = _browser.default.msie ? (0, _size.getSize)($dataHeader.get(0), \"height\", {\r\n paddings: false,\r\n borders: false,\r\n margins: false\r\n }) : $dataHeader.height();\r\n bordersWidth = getCommonBorderWidth([columnAreaCell, dataAreaCell, tableElement, columnHeaderCell, filterHeaderCell], \"height\");\r\n dataAreaHeight = that.$element().height() - filterAreaHeight - dataHeaderHeight - (Math.max(dataArea.headElement().height(), columnAreaCell.height(), descriptionCellHeight) + bordersWidth)\r\n }\r\n totalWidth = dataArea.tableElement().width();\r\n totalHeight = getArraySum(resultHeights);\r\n if (!totalWidth || !totalHeight) {\r\n d.resolve();\r\n return\r\n }\r\n rowsAreaWidth = getArraySum(rowsAreaColumnWidths);\r\n var elementWidth = that.$element().width();\r\n bordersWidth = getCommonBorderWidth([rowAreaCell, dataAreaCell, tableElement], \"width\");\r\n groupWidth = elementWidth - rowsAreaWidth - bordersWidth;\r\n groupWidth = groupWidth > 0 ? groupWidth : totalWidth;\r\n var diff = totalWidth - groupWidth;\r\n var needAdjustWidthOnZoom = diff >= 0 && diff <= 2;\r\n if (needAdjustWidthOnZoom) {\r\n adjustSizeArray(resultWidths, diff);\r\n totalWidth = groupWidth\r\n }\r\n hasRowsScroll = that._hasHeight && calculateHasScroll(dataAreaHeight, totalHeight);\r\n hasColumnsScroll = calculateHasScroll(groupWidth, totalWidth);\r\n var groupHeight = calculateGroupHeight(dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth);\r\n (0, _common.deferRender)(function() {\r\n columnsArea.tableElement().append(dataArea.headElement());\r\n rowFieldsHeader.tableElement().append(rowsArea.headElement());\r\n if (!hasColumnsScroll && hasRowsScroll && scrollBarWidth) {\r\n adjustSizeArray(resultWidths, scrollBarWidth);\r\n totalWidth -= scrollBarWidth\r\n }\r\n if (descriptionCellHeight > columnsAreaHeight) {\r\n adjustSizeArray(columnsAreaRowHeights, columnsAreaHeight - descriptionCellHeight);\r\n columnsArea.setRowsHeight(columnsAreaRowHeights)\r\n }\r\n tableElement.removeClass(INCOMPRESSIBLE_FIELDS_CLASS);\r\n columnHeaderCell.children().css(\"maxWidth\", groupWidth);\r\n columnsArea.groupWidth(groupWidth);\r\n columnsArea.processScrollBarSpacing(hasRowsScroll ? scrollBarWidth : 0);\r\n columnsArea.setColumnsWidth(resultWidths);\r\n rowsArea.groupHeight(that._hasHeight ? groupHeight : \"auto\");\r\n rowsArea.processScrollBarSpacing(hasColumnsScroll ? scrollBarWidth : 0);\r\n rowsArea.setColumnsWidth(rowsAreaColumnWidths);\r\n rowsArea.setRowsHeight(resultHeights);\r\n dataArea.setColumnsWidth(resultWidths);\r\n dataArea.setRowsHeight(resultHeights);\r\n dataArea.groupWidth(groupWidth);\r\n dataArea.groupHeight(that._hasHeight ? groupHeight : \"auto\");\r\n needSynchronizeFieldPanel && rowFieldsHeader.setColumnsWidth(rowsAreaColumnWidths);\r\n dataAreaCell.toggleClass(BOTTOM_BORDER_CLASS, !hasRowsScroll);\r\n rowAreaCell.toggleClass(BOTTOM_BORDER_CLASS, !hasRowsScroll);\r\n if (!that._hasHeight && elementWidth !== that.$element().width()) {\r\n var _diff = elementWidth - that.$element().width();\r\n if (!hasColumnsScroll) {\r\n adjustSizeArray(resultWidths, _diff);\r\n columnsArea.setColumnsWidth(resultWidths);\r\n dataArea.setColumnsWidth(resultWidths)\r\n }\r\n dataArea.groupWidth(groupWidth - _diff);\r\n columnsArea.groupWidth(groupWidth - _diff)\r\n }\r\n if (that._hasHeight && that._filterFields.isVisible() && filterHeaderCell.height() !== filterAreaHeight) {\r\n var _diff2 = filterHeaderCell.height() - filterAreaHeight;\r\n if (_diff2 > 0) {\r\n hasRowsScroll = calculateHasScroll(dataAreaHeight - _diff2, totalHeight);\r\n var _groupHeight = calculateGroupHeight(dataAreaHeight - _diff2, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth);\r\n dataArea.groupHeight(_groupHeight);\r\n rowsArea.groupHeight(_groupHeight)\r\n }\r\n }\r\n if (\"virtual\" === scrollingOptions.mode) {\r\n var virtualContentParams = that._dataController.calculateVirtualContentParams({\r\n virtualRowHeight: scrollingOptions.virtualRowHeight,\r\n virtualColumnWidth: scrollingOptions.virtualColumnWidth,\r\n itemWidths: resultWidths,\r\n itemHeights: resultHeights,\r\n rowCount: resultHeights.length,\r\n columnCount: resultWidths.length,\r\n viewportWidth: groupWidth,\r\n viewportHeight: that._hasHeight ? groupHeight : (0, _renderer.default)(window).outerHeight()\r\n });\r\n dataArea.setVirtualContentParams({\r\n top: virtualContentParams.contentTop,\r\n left: virtualContentParams.contentLeft,\r\n width: virtualContentParams.width,\r\n height: virtualContentParams.height\r\n });\r\n rowsArea.setVirtualContentParams({\r\n top: virtualContentParams.contentTop,\r\n width: rowsAreaWidth,\r\n height: virtualContentParams.height\r\n });\r\n columnsArea.setVirtualContentParams({\r\n left: virtualContentParams.contentLeft,\r\n width: virtualContentParams.width,\r\n height: columnsArea.groupElement().height()\r\n })\r\n }\r\n var updateScrollableResults = [];\r\n dataArea.processScroll(scrollBarInfo.scrollBarUseNative, hasColumnsScroll, hasRowsScroll);\r\n (0, _iterator.each)([columnsArea, rowsArea, dataArea], function(_, area) {\r\n updateScrollableResults.push(area && area.updateScrollable())\r\n });\r\n that._updateLoading();\r\n that._renderNoDataText(dataAreaCell);\r\n _deferred.when.apply(_renderer.default, updateScrollableResults).done(function() {\r\n that._updateScrollPosition(columnsArea, rowsArea, dataArea);\r\n that._subscribeToEvents(columnsArea, rowsArea, dataArea);\r\n d.resolve()\r\n })\r\n })\r\n });\r\n return d\r\n },\r\n applyPartialDataSource: function(area, path, dataSource) {\r\n this._dataController.applyPartialDataSource(area, path, dataSource)\r\n }\r\n}).inherit(_uiPivot_grid8.ExportMixin).include(_uiPivot_grid9.default);\r\n(0, _component_registrator.default)(\"dxPivotGrid\", PivotGrid);\r\nvar _default = PivotGrid;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.data_controller.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataController = void 0;\r\nvar _callbacks = _interopRequireDefault(require(\"../../core/utils/callbacks\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _string = require(\"../../core/utils/string\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.virtual_scrolling_core\");\r\nvar _uiGrid_core2 = require(\"../grid_core/ui.grid_core.virtual_columns_core\");\r\nvar _uiGrid_core3 = require(\"../grid_core/ui.grid_core.state_storing_core\");\r\nvar _data_source = _interopRequireDefault(require(\"./data_source\"));\r\nvar _uiPivot_grid = 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\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar math = Math;\r\nvar GRAND_TOTAL_TYPE = \"GT\";\r\nvar TOTAL_TYPE = \"T\";\r\nvar DATA_TYPE = \"D\";\r\nvar NOT_AVAILABLE = \"#N/A\";\r\nvar CHANGING_DURATION_IF_PAGINATE = 300;\r\nvar proxyMethod = function(instance, methodName, defaultResult) {\r\n if (!instance[methodName]) {\r\n instance[methodName] = function() {\r\n var dataSource = this._dataSource;\r\n return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult\r\n }\r\n }\r\n};\r\nvar DataController = _class.default.inherit(function() {\r\n function getHeaderItemText(item, description, options) {\r\n var text = item.text;\r\n if ((0, _type.isDefined)(item.displayText)) {\r\n text = item.displayText\r\n } else {\r\n if ((0, _type.isDefined)(item.caption)) {\r\n text = item.caption\r\n } else {\r\n if (item.type === GRAND_TOTAL_TYPE) {\r\n text = options.texts.grandTotal\r\n }\r\n }\r\n }\r\n if (item.isAdditionalTotal) {\r\n text = (0, _string.format)(options.texts.total || \"\", text)\r\n }\r\n return text\r\n }\r\n\r\n function formatCellValue(value, dataField, errorText) {\r\n return value === NOT_AVAILABLE ? errorText : (0, _uiPivot_grid.formatValue)(value, dataField)\r\n }\r\n var createHeaderInfo = function() {\r\n var getHeaderItemsDepth = function(headerItems) {\r\n var depth = 0;\r\n (0, _uiPivot_grid.foreachTree)(headerItems, function(items) {\r\n depth = math.max(depth, items.length)\r\n });\r\n return depth\r\n };\r\n var createInfoItem = function(headerItem, breadth, isHorizontal, isTree) {\r\n var infoItem = {\r\n type: headerItem.type,\r\n text: headerItem.text\r\n };\r\n if (headerItem.path) {\r\n infoItem.path = headerItem.path\r\n }\r\n if (headerItem.width) {\r\n infoItem.width = headerItem.width\r\n }\r\n if ((0, _type.isDefined)(headerItem.wordWrapEnabled)) {\r\n infoItem.wordWrapEnabled = headerItem.wordWrapEnabled\r\n }\r\n if (headerItem.isLast) {\r\n infoItem.isLast = true\r\n }\r\n if (headerItem.sorted) {\r\n infoItem.sorted = true\r\n }\r\n if (headerItem.isMetric) {\r\n infoItem.dataIndex = headerItem.dataIndex\r\n }\r\n if ((0, _type.isDefined)(headerItem.expanded)) {\r\n infoItem.expanded = headerItem.expanded\r\n }\r\n if (breadth > 1) {\r\n infoItem[isHorizontal ? \"colspan\" : \"rowspan\"] = breadth\r\n }\r\n if (headerItem.depthSize && headerItem.depthSize > 1) {\r\n infoItem[isHorizontal ? \"rowspan\" : \"colspan\"] = headerItem.depthSize\r\n }\r\n if (headerItem.index >= 0) {\r\n infoItem.dataSourceIndex = headerItem.index\r\n }\r\n if (isTree && headerItem.children && headerItem.children.length && !headerItem.children[0].isMetric) {\r\n infoItem.width = null;\r\n infoItem.isWhiteSpace = true\r\n }\r\n return infoItem\r\n };\r\n var addInfoItem = function(info, options) {\r\n var breadth = options.lastIndex - options.index || 1;\r\n var addInfoItemCore = function(info, infoItem, itemIndex, depthIndex, isHorizontal) {\r\n var index = isHorizontal ? depthIndex : itemIndex;\r\n while (!info[index]) {\r\n info.push([])\r\n }\r\n if (isHorizontal) {\r\n info[index].push(infoItem)\r\n } else {\r\n info[index].unshift(infoItem)\r\n }\r\n };\r\n var itemInfo = createInfoItem(options.headerItem, breadth, options.isHorizontal, options.isTree);\r\n addInfoItemCore(info, itemInfo, options.index, options.depth, options.isHorizontal);\r\n if (!options.headerItem.children || 0 === options.headerItem.children.length) {\r\n return options.lastIndex + 1\r\n }\r\n return options.lastIndex\r\n };\r\n var isItemSorted = function(items, sortBySummaryPath) {\r\n var path;\r\n var item = items[0];\r\n var stringValuesUsed = (0, _type.isString)(sortBySummaryPath[0]);\r\n var headerItem = item.dataIndex >= 0 ? items[1] : item;\r\n if (stringValuesUsed && sortBySummaryPath[0].indexOf(\"&[\") !== -1 && headerItem.key || !headerItem.key) {\r\n path = (0, _uiPivot_grid.createPath)(items)\r\n } else {\r\n path = (0, _iterator.map)(items, function(item) {\r\n return item.dataIndex >= 0 ? item.value : item.text\r\n }).reverse()\r\n }\r\n if (item.type === GRAND_TOTAL_TYPE) {\r\n path = path.slice(1)\r\n }\r\n return path.join(\"/\") === sortBySummaryPath.join(\"/\")\r\n };\r\n var getViewHeaderItems = function(headerItems, headerDescriptions, cellDescriptions, depthSize, options) {\r\n var cellDescriptionsCount = cellDescriptions.length;\r\n var viewHeaderItems = createViewHeaderItems(headerItems, headerDescriptions);\r\n var dataFields = options.dataFields;\r\n var d = new _deferred.Deferred;\r\n (0, _deferred.when)(viewHeaderItems).done(function(viewHeaderItems) {\r\n options.notifyProgress(.5);\r\n if (options.showGrandTotals) {\r\n viewHeaderItems[!options.showTotalsPrior ? \"push\" : \"unshift\"]({\r\n type: GRAND_TOTAL_TYPE,\r\n isEmpty: options.isEmptyGrandTotal\r\n })\r\n }\r\n var hideTotals = false === options.showTotals || dataFields.length > 0 && dataFields.length === options.hiddenTotals.length;\r\n var hideData = dataFields.length > 0 && options.hiddenValues.length === dataFields.length;\r\n if (hideData && hideTotals) {\r\n depthSize = 1\r\n }\r\n if (!hideTotals || \"tree\" === options.layout) {\r\n addAdditionalTotalHeaderItems(viewHeaderItems, headerDescriptions, options.showTotalsPrior, \"tree\" === options.layout)\r\n }(0, _deferred.when)((0, _uiPivot_grid.foreachTreeAsync)(viewHeaderItems, function(items) {\r\n var item = items[0];\r\n if (!item.children || 0 === item.children.length) {\r\n item.depthSize = depthSize - items.length + 1\r\n }\r\n })).done(function() {\r\n if (cellDescriptionsCount > 1) {\r\n addMetricHeaderItems(viewHeaderItems, cellDescriptions, options)\r\n }!options.showEmpty && removeHiddenItems(viewHeaderItems);\r\n options.notifyProgress(.75);\r\n (0, _deferred.when)((0, _uiPivot_grid.foreachTreeAsync)(viewHeaderItems, function(items) {\r\n var item = items[0];\r\n var isMetric = item.isMetric;\r\n var field = headerDescriptions[items.length - 1] || {};\r\n if (item.type === DATA_TYPE && !isMetric) {\r\n item.width = field.width\r\n }\r\n if (true === hideData && item.type === DATA_TYPE) {\r\n var parentChildren = (items[1] ? items[1].children : viewHeaderItems) || [];\r\n parentChildren.splice((0, _array.inArray)(item, parentChildren), 1);\r\n return\r\n }\r\n if (isMetric) {\r\n item.wordWrapEnabled = cellDescriptions[item.dataIndex].wordWrapEnabled\r\n } else {\r\n item.wordWrapEnabled = field.wordWrapEnabled\r\n }\r\n item.isLast = !item.children || !item.children.length;\r\n if (item.isLast) {\r\n (0, _iterator.each)(options.sortBySummaryPaths, function(index, sortBySummaryPath) {\r\n if (!(0, _type.isDefined)(item.dataIndex)) {\r\n sortBySummaryPath = sortBySummaryPath.slice(0);\r\n sortBySummaryPath.pop()\r\n }\r\n if (isItemSorted(items, sortBySummaryPath)) {\r\n item.sorted = true;\r\n return false\r\n }\r\n })\r\n }\r\n item.text = getHeaderItemText(item, field, options)\r\n })).done(function() {\r\n if (!viewHeaderItems.length) {\r\n viewHeaderItems.push({})\r\n }\r\n options.notifyProgress(1);\r\n d.resolve(viewHeaderItems)\r\n })\r\n })\r\n });\r\n return d\r\n };\r\n\r\n function createHeaderItem(childrenStack, depth, index) {\r\n var parent = childrenStack[depth] = childrenStack[depth] || [];\r\n var node = parent[index] = {};\r\n if (childrenStack[depth + 1]) {\r\n node.children = childrenStack[depth + 1];\r\n for (var i = depth + 1; i < childrenStack.length; i++) {\r\n childrenStack[i] = void 0\r\n }\r\n childrenStack.length = depth + 1\r\n }\r\n return node\r\n }\r\n\r\n function createViewHeaderItems(headerItems, headerDescriptions) {\r\n var headerDescriptionsCount = headerDescriptions && headerDescriptions.length || 0;\r\n var childrenStack = [];\r\n var d = new _deferred.Deferred;\r\n var headerItem;\r\n (0, _deferred.when)((0, _uiPivot_grid.foreachTreeAsync)(headerItems, function(items, index) {\r\n var item = items[0];\r\n var path = (0, _uiPivot_grid.createPath)(items);\r\n headerItem = createHeaderItem(childrenStack, path.length, index);\r\n headerItem.type = DATA_TYPE;\r\n headerItem.value = item.value;\r\n headerItem.path = path;\r\n headerItem.text = item.text;\r\n headerItem.index = item.index;\r\n headerItem.displayText = item.displayText;\r\n headerItem.key = item.key;\r\n headerItem.isEmpty = item.isEmpty;\r\n if (path.length < headerDescriptionsCount && (!item.children || 0 !== item.children.length)) {\r\n headerItem.expanded = !!item.children\r\n }\r\n })).done(function() {\r\n d.resolve(createHeaderItem(childrenStack, 0, 0).children || [])\r\n });\r\n return d\r\n }\r\n\r\n function addMetricHeaderItems(headerItems, cellDescriptions, options) {\r\n (0, _uiPivot_grid.foreachTree)(headerItems, function(items) {\r\n var item = items[0];\r\n var i;\r\n if (!item.children || 0 === item.children.length) {\r\n item.children = [];\r\n for (i = 0; i < cellDescriptions.length; i++) {\r\n var isGrandTotal = item.type === GRAND_TOTAL_TYPE;\r\n var isTotal = item.type === TOTAL_TYPE;\r\n var isValue = item.type === DATA_TYPE;\r\n var columnIsHidden = false === cellDescriptions[i].visible || isGrandTotal && (0, _array.inArray)(i, options.hiddenGrandTotals) !== -1 || isTotal && (0, _array.inArray)(i, options.hiddenTotals) !== -1 || isValue && (0, _array.inArray)(i, options.hiddenValues) !== -1;\r\n if (columnIsHidden) {\r\n continue\r\n }\r\n item.children.push({\r\n caption: cellDescriptions[i].caption,\r\n path: item.path,\r\n type: item.type,\r\n value: i,\r\n index: item.index,\r\n dataIndex: i,\r\n isMetric: true,\r\n isEmpty: item.isEmpty && item.isEmpty[i]\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n function addAdditionalTotalHeaderItems(headerItems, headerDescriptions, showTotalsPrior, isTree) {\r\n showTotalsPrior = showTotalsPrior || isTree;\r\n (0, _uiPivot_grid.foreachTree)(headerItems, function(items, index) {\r\n var item = items[0];\r\n var parentChildren = (items[1] ? items[1].children : headerItems) || [];\r\n var dataField = headerDescriptions[items.length - 1];\r\n if (item.type === DATA_TYPE && item.expanded && (false !== dataField.showTotals || isTree)) {\r\n index !== -1 && parentChildren.splice(showTotalsPrior ? index : index + 1, 0, (0, _extend2.extend)({}, item, {\r\n children: null,\r\n type: TOTAL_TYPE,\r\n expanded: showTotalsPrior ? true : null,\r\n isAdditionalTotal: true\r\n }));\r\n if (showTotalsPrior) {\r\n item.expanded = null\r\n }\r\n }\r\n })\r\n }\r\n var removeEmptyParent = function removeEmptyParent(items, index) {\r\n var parent = items[index + 1];\r\n if (!items[index].children.length && parent && parent.children) {\r\n parent.children.splice((0, _array.inArray)(items[index], parent.children), 1);\r\n removeEmptyParent(items, index + 1)\r\n }\r\n };\r\n\r\n function removeHiddenItems(headerItems) {\r\n (0, _uiPivot_grid.foreachTree)([{\r\n children: headerItems\r\n }], function(items, index) {\r\n var item = items[0];\r\n var parentChildren = (items[1] ? items[1].children : headerItems) || [];\r\n var isEmpty = item.isEmpty;\r\n if (isEmpty && isEmpty.length) {\r\n isEmpty = item.isEmpty.filter(function(isEmpty) {\r\n return isEmpty\r\n }).length === isEmpty.length\r\n }\r\n if (item && !item.children && isEmpty) {\r\n parentChildren.splice(index, 1);\r\n removeEmptyParent(items, 1)\r\n }\r\n })\r\n }\r\n var fillHeaderInfo = function(info, viewHeaderItems, depthSize, isHorizontal, isTree) {\r\n var lastIndex = 0;\r\n var index;\r\n var depth;\r\n var indexesByDepth = [0];\r\n (0, _uiPivot_grid.foreachTree)(viewHeaderItems, function(items) {\r\n var headerItem = items[0];\r\n depth = headerItem.isMetric ? depthSize : items.length - 1;\r\n while (indexesByDepth.length - 1 < depth) {\r\n indexesByDepth.push(indexesByDepth[indexesByDepth.length - 1])\r\n }\r\n index = indexesByDepth[depth] || 0;\r\n lastIndex = addInfoItem(info, {\r\n headerItem: headerItem,\r\n index: index,\r\n lastIndex: lastIndex,\r\n depth: depth,\r\n isHorizontal: isHorizontal,\r\n isTree: isTree\r\n });\r\n indexesByDepth.length = depth;\r\n indexesByDepth.push(lastIndex)\r\n })\r\n };\r\n return function(headerItems, headerDescriptions, cellDescriptions, isHorizontal, options) {\r\n var info = [];\r\n var depthSize = getHeaderItemsDepth(headerItems) || 1;\r\n var d = new _deferred.Deferred;\r\n getViewHeaderItems(headerItems, headerDescriptions, cellDescriptions, depthSize, options).done(function(viewHeaderItems) {\r\n fillHeaderInfo(info, viewHeaderItems, depthSize, isHorizontal, \"tree\" === options.layout);\r\n options.notifyProgress(1);\r\n d.resolve(info)\r\n });\r\n return d\r\n }\r\n }();\r\n\r\n function createSortPaths(headerFields, dataFields) {\r\n var sortBySummaryPaths = [];\r\n (0, _iterator.each)(headerFields, function(index, headerField) {\r\n var fieldIndex = (0, _uiPivot_grid.findField)(dataFields, headerField.sortBySummaryField);\r\n if (fieldIndex >= 0) {\r\n sortBySummaryPaths.push((headerField.sortBySummaryPath || []).concat([fieldIndex]))\r\n }\r\n });\r\n return sortBySummaryPaths\r\n }\r\n\r\n function foreachRowInfo(rowsInfo, callback) {\r\n var columnOffset = 0;\r\n var columnOffsetResetIndexes = [];\r\n for (var i = 0; i < rowsInfo.length; i++) {\r\n for (var j = 0; j < rowsInfo[i].length; j++) {\r\n var rowSpanOffset = (rowsInfo[i][j].rowspan || 1) - 1;\r\n var visibleIndex = i + rowSpanOffset;\r\n if (columnOffsetResetIndexes[i]) {\r\n columnOffset -= columnOffsetResetIndexes[i];\r\n columnOffsetResetIndexes[i] = 0\r\n }\r\n if (false === callback(rowsInfo[i][j], visibleIndex, i, j, columnOffset)) {\r\n break\r\n }\r\n columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] = (columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] || 0) + 1;\r\n columnOffset++\r\n }\r\n }\r\n }\r\n\r\n function createCellsInfo(rowsInfo, columnsInfo, data, dataFields, dataFieldArea, errorText) {\r\n var info = [];\r\n var dataFieldAreaInRows = \"row\" === dataFieldArea;\r\n var dataSourceCells = data.values;\r\n dataSourceCells.length && foreachRowInfo(rowsInfo, function(rowInfo, rowIndex) {\r\n var row = info[rowIndex] = [];\r\n var dataRow = dataSourceCells[rowInfo.dataSourceIndex >= 0 ? rowInfo.dataSourceIndex : data.grandTotalRowIndex] || [];\r\n rowInfo.isLast && (0, _uiGrid_core2.foreachColumnInfo)(columnsInfo, function(columnInfo, columnIndex) {\r\n var dataIndex = (dataFieldAreaInRows ? rowInfo.dataIndex : columnInfo.dataIndex) || 0;\r\n var dataField = dataFields[dataIndex];\r\n if (columnInfo.isLast && dataField) {\r\n var cell = dataRow[columnInfo.dataSourceIndex >= 0 ? columnInfo.dataSourceIndex : data.grandTotalColumnIndex];\r\n if (!Array.isArray(cell)) {\r\n cell = [cell]\r\n }\r\n var cellValue = cell[dataIndex];\r\n row[columnIndex] = {\r\n text: formatCellValue(cellValue, dataField, errorText),\r\n value: cellValue,\r\n format: dataField.format,\r\n dataType: dataField.dataType,\r\n columnType: columnInfo.type,\r\n rowType: rowInfo.type,\r\n rowPath: rowInfo.path || [],\r\n columnPath: columnInfo.path || [],\r\n dataIndex: dataIndex\r\n };\r\n if (dataField.width) {\r\n row[columnIndex].width = dataField.width\r\n }\r\n }\r\n })\r\n });\r\n return info\r\n }\r\n\r\n function getHeaderIndexedItems(headerItems, options) {\r\n var visibleIndex = 0;\r\n var indexedItems = [];\r\n (0, _uiPivot_grid.foreachTree)(headerItems, function(items) {\r\n var headerItem = items[0];\r\n var path = (0, _uiPivot_grid.createPath)(items);\r\n if (headerItem.children && false === options.showTotals) {\r\n return\r\n }\r\n var indexedItem = (0, _extend2.extend)(true, {}, headerItem, {\r\n visibleIndex: visibleIndex++,\r\n path: path\r\n });\r\n if ((0, _type.isDefined)(indexedItem.index)) {\r\n indexedItems[indexedItem.index] = indexedItem\r\n } else {\r\n indexedItems.push(indexedItem)\r\n }\r\n });\r\n return indexedItems\r\n }\r\n\r\n function createScrollController(dataController, component, dataAdapter) {\r\n if (component && \"virtual\" === component.option(\"scrolling.mode\")) {\r\n return new _uiGrid_core.VirtualScrollController(component, (0, _extend2.extend)({\r\n hasKnownLastPage: function() {\r\n return true\r\n },\r\n pageCount: function() {\r\n return math.ceil(this.totalItemsCount() / this.pageSize())\r\n },\r\n updateLoading: function() {},\r\n itemsCount: function() {\r\n if (this.pageIndex() < this.pageCount() - 1) {\r\n return this.pageSize()\r\n } else {\r\n return this.totalItemsCount() % this.pageSize()\r\n }\r\n },\r\n items: function() {\r\n return []\r\n },\r\n viewportItems: function() {\r\n return []\r\n },\r\n onChanged: function() {},\r\n isLoading: function() {\r\n return dataController.isLoading()\r\n },\r\n changingDuration: function() {\r\n var dataSource = dataController._dataSource;\r\n if (dataSource.paginate()) {\r\n return CHANGING_DURATION_IF_PAGINATE\r\n }\r\n return dataController._changingDuration || 0\r\n }\r\n }, dataAdapter))\r\n }\r\n }\r\n\r\n function getHiddenTotals(dataFields) {\r\n var result = [];\r\n (0, _iterator.each)(dataFields, function(index, field) {\r\n if (false === field.showTotals) {\r\n result.push(index)\r\n }\r\n });\r\n return result\r\n }\r\n\r\n function getHiddenValues(dataFields) {\r\n var result = [];\r\n dataFields.forEach(function(field, index) {\r\n if (void 0 === field.showValues && false === field.showTotals || false === field.showValues) {\r\n result.push(index)\r\n }\r\n });\r\n return result\r\n }\r\n\r\n function getHiddenGrandTotalsTotals(dataFields, columnFields) {\r\n var result = [];\r\n (0, _iterator.each)(dataFields, function(index, field) {\r\n if (false === field.showGrandTotals) {\r\n result.push(index)\r\n }\r\n });\r\n if (0 === columnFields.length && result.length === dataFields.length) {\r\n result = []\r\n }\r\n return result\r\n }\r\n var members = {\r\n ctor: function(options) {\r\n var that = this;\r\n var virtualScrollControllerChanged = that._fireChanged.bind(that);\r\n options = that._options = options || {};\r\n that.dataSourceChanged = (0, _callbacks.default)();\r\n that._dataSource = that._createDataSource(options);\r\n that._rowsScrollController = createScrollController(that, options.component, {\r\n totalItemsCount: function() {\r\n return that.totalRowCount()\r\n },\r\n pageIndex: function(index) {\r\n return that.rowPageIndex(index)\r\n },\r\n pageSize: function() {\r\n return that.rowPageSize()\r\n },\r\n load: function() {\r\n if (that._rowsScrollController.pageIndex() >= this.pageCount()) {\r\n that._rowsScrollController.pageIndex(this.pageCount() - 1)\r\n }\r\n return that._rowsScrollController.handleDataChanged(function() {\r\n if (that._dataSource.paginate()) {\r\n that._dataSource.load()\r\n } else {\r\n virtualScrollControllerChanged.apply(this, arguments)\r\n }\r\n })\r\n }\r\n });\r\n that._columnsScrollController = createScrollController(that, options.component, {\r\n totalItemsCount: function() {\r\n return that.totalColumnCount()\r\n },\r\n pageIndex: function(index) {\r\n return that.columnPageIndex(index)\r\n },\r\n pageSize: function() {\r\n return that.columnPageSize()\r\n },\r\n load: function() {\r\n if (that._columnsScrollController.pageIndex() >= this.pageCount()) {\r\n that._columnsScrollController.pageIndex(this.pageCount() - 1)\r\n }\r\n return that._columnsScrollController.handleDataChanged(function() {\r\n if (that._dataSource.paginate()) {\r\n that._dataSource.load()\r\n } else {\r\n virtualScrollControllerChanged.apply(this, arguments)\r\n }\r\n })\r\n }\r\n });\r\n that._stateStoringController = new _uiGrid_core3.StateStoringController(options.component).init();\r\n that._columnsInfo = [];\r\n that._rowsInfo = [];\r\n that._cellsInfo = [];\r\n that.expandValueChanging = (0, _callbacks.default)();\r\n that.loadingChanged = (0, _callbacks.default)();\r\n that.progressChanged = (0, _callbacks.default)();\r\n that.scrollChanged = (0, _callbacks.default)();\r\n that.load();\r\n that._update();\r\n that.changed = (0, _callbacks.default)()\r\n },\r\n _fireChanged: function() {\r\n var that = this;\r\n var startChanging = new Date;\r\n that.changed && !that._lockChanged && that.changed.fire();\r\n that._changingDuration = new Date - startChanging\r\n },\r\n _correctSkipsTakes: function(rowIndex, rowSkip, rowSpan, levels, skips, takes) {\r\n var endIndex = rowSpan ? rowIndex + rowSpan - 1 : rowIndex;\r\n skips[levels.length] = skips[levels.length] || 0;\r\n takes[levels.length] = takes[levels.length] || 0;\r\n if (endIndex < rowSkip) {\r\n skips[levels.length]++\r\n } else {\r\n takes[levels.length]++\r\n }\r\n },\r\n _calculatePagingForRowExpandedPaths: function(options, skips, takes, rowExpandedSkips, rowExpandedTakes) {\r\n var rows = this._rowsInfo;\r\n var rowCount = Math.min(options.rowSkip + options.rowTake, rows.length);\r\n var rowExpandedPaths = options.rowExpandedPaths;\r\n var levels = [];\r\n var expandedPathIndexes = {};\r\n var i;\r\n var j;\r\n var path;\r\n rowExpandedPaths.forEach(function(path, index) {\r\n expandedPathIndexes[path] = index\r\n });\r\n for (i = 0; i < rowCount; i++) {\r\n takes.length = skips.length = levels.length + 1;\r\n for (j = 0; j < rows[i].length; j++) {\r\n var cell = rows[i][j];\r\n if (\"D\" === cell.type) {\r\n this._correctSkipsTakes(i, options.rowSkip, cell.rowspan, levels, skips, takes);\r\n path = cell.path || path;\r\n var expandIndex = path && path.length > 1 ? expandedPathIndexes[path.slice(0, -1)] : -1;\r\n if (expandIndex >= 0) {\r\n rowExpandedSkips[expandIndex] = skips[levels.length] || 0;\r\n rowExpandedTakes[expandIndex] = takes[levels.length] || 0\r\n }\r\n if (cell.rowspan) {\r\n levels.push(cell.rowspan)\r\n }\r\n }\r\n }\r\n levels = levels.map(function(level) {\r\n return level - 1\r\n }).filter(function(level) {\r\n return level > 0\r\n })\r\n }\r\n },\r\n _calculatePagingForColumnExpandedPaths: function(options, skips, takes, expandedSkips, expandedTakes) {\r\n var skipByPath = {};\r\n var takeByPath = {};\r\n (0, _uiGrid_core2.foreachColumnInfo)(this._columnsInfo, function(columnInfo, columnIndex) {\r\n if (\"D\" === columnInfo.type && columnInfo.path && void 0 === columnInfo.dataIndex) {\r\n var colspan = columnInfo.colspan || 1;\r\n var path = columnInfo.path.slice(0, -1).toString();\r\n skipByPath[path] = skipByPath[path] || 0;\r\n takeByPath[path] = takeByPath[path] || 0;\r\n if (columnIndex + colspan <= options.columnSkip) {\r\n skipByPath[path]++\r\n } else {\r\n if (columnIndex < options.columnSkip + options.columnTake) {\r\n takeByPath[path]++\r\n }\r\n }\r\n }\r\n });\r\n skips[0] = skipByPath[[]];\r\n takes[0] = takeByPath[[]];\r\n options.columnExpandedPaths.forEach(function(path, index) {\r\n var skip = skipByPath[path];\r\n var take = takeByPath[path];\r\n if (void 0 !== skip) {\r\n expandedSkips[index] = skip\r\n }\r\n if (void 0 !== take) {\r\n expandedTakes[index] = take\r\n }\r\n })\r\n },\r\n _processPagingForExpandedPaths: function(options, area, storeLoadOptions, reload) {\r\n var expandedPaths = options[area + \"ExpandedPaths\"];\r\n var expandedSkips = expandedPaths.map(function() {\r\n return 0\r\n });\r\n var expandedTakes = expandedPaths.map(function() {\r\n return reload ? options.pageSize : 0\r\n });\r\n var skips = [];\r\n var takes = [];\r\n if (!reload) {\r\n if (\"row\" === area) {\r\n this._calculatePagingForRowExpandedPaths(options, skips, takes, expandedSkips, expandedTakes)\r\n } else {\r\n this._calculatePagingForColumnExpandedPaths(options, skips, takes, expandedSkips, expandedTakes)\r\n }\r\n }\r\n this._savePagingForExpandedPaths(options, area, storeLoadOptions, skips[0], takes[0], expandedSkips, expandedTakes)\r\n },\r\n _savePagingForExpandedPaths: function(options, area, storeLoadOptions, skip, take, expandedSkips, expandedTakes) {\r\n var expandedPaths = options[area + \"ExpandedPaths\"];\r\n options[area + \"ExpandedPaths\"] = [];\r\n options[area + \"Skip\"] = void 0 !== skip ? skip : options[area + \"Skip\"];\r\n options[area + \"Take\"] = void 0 !== take ? take : options[area + \"Take\"];\r\n for (var i = 0; i < expandedPaths.length; i++) {\r\n if (expandedTakes[i]) {\r\n var _extend;\r\n var isOppositeArea = options.area && options.area !== area;\r\n storeLoadOptions.push((0, _extend2.extend)({\r\n area: area,\r\n headerName: area + \"s\"\r\n }, options, (_extend = {}, _defineProperty(_extend, area + \"Skip\", expandedSkips[i]), _defineProperty(_extend, area + \"Take\", expandedTakes[i]), _defineProperty(_extend, isOppositeArea ? \"oppositePath\" : \"path\", expandedPaths[i]), _extend)))\r\n }\r\n }\r\n },\r\n _handleCustomizeStoreLoadOptions: function(storeLoadOptions, reload) {\r\n var _this = this;\r\n var options = storeLoadOptions[0];\r\n var rowsScrollController = this._rowsScrollController;\r\n if (this._dataSource.paginate() && rowsScrollController) {\r\n var rowPageSize = rowsScrollController._dataSource.pageSize();\r\n if (\"rows\" === options.headerName) {\r\n options.rowSkip = 0;\r\n options.rowTake = rowPageSize;\r\n options.rowExpandedPaths = []\r\n } else {\r\n options.rowSkip = rowsScrollController.beginPageIndex() * rowPageSize;\r\n options.rowTake = (rowsScrollController.endPageIndex() - rowsScrollController.beginPageIndex() + 1) * rowPageSize;\r\n this._processPagingForExpandedPaths(options, \"row\", storeLoadOptions, reload)\r\n }\r\n }\r\n var columnsScrollController = this._columnsScrollController;\r\n if (this._dataSource.paginate() && columnsScrollController) {\r\n var columnPageSize = columnsScrollController._dataSource.pageSize();\r\n storeLoadOptions.forEach(function(options, index) {\r\n if (\"columns\" === options.headerName) {\r\n options.columnSkip = 0;\r\n options.columnTake = columnPageSize;\r\n options.columnExpandedPaths = []\r\n } else {\r\n options.columnSkip = columnsScrollController.beginPageIndex() * columnPageSize;\r\n options.columnTake = (columnsScrollController.endPageIndex() - columnsScrollController.beginPageIndex() + 1) * columnPageSize;\r\n _this._processPagingForExpandedPaths(options, \"column\", storeLoadOptions, reload)\r\n }\r\n })\r\n }\r\n },\r\n load: function() {\r\n var that = this;\r\n var stateStoringController = this._stateStoringController;\r\n if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {\r\n stateStoringController.load().always(function(state) {\r\n if (state) {\r\n that._dataSource.state(state)\r\n } else {\r\n that._dataSource.load()\r\n }\r\n })\r\n } else {\r\n that._dataSource.load()\r\n }\r\n },\r\n calculateVirtualContentParams: function(contentParams) {\r\n var that = this;\r\n var rowsScrollController = that._rowsScrollController;\r\n var columnsScrollController = that._columnsScrollController;\r\n if (rowsScrollController && columnsScrollController) {\r\n rowsScrollController.viewportItemSize(contentParams.virtualRowHeight);\r\n rowsScrollController.viewportSize(contentParams.viewportHeight / rowsScrollController.viewportItemSize());\r\n rowsScrollController.setContentSize(contentParams.itemHeights);\r\n columnsScrollController.viewportItemSize(contentParams.virtualColumnWidth);\r\n columnsScrollController.viewportSize(contentParams.viewportWidth / columnsScrollController.viewportItemSize());\r\n columnsScrollController.setContentSize(contentParams.itemWidths);\r\n (0, _common.deferUpdate)(function() {\r\n columnsScrollController.loadIfNeed();\r\n rowsScrollController.loadIfNeed()\r\n });\r\n that.scrollChanged.fire({\r\n left: columnsScrollController.getViewportPosition(),\r\n top: rowsScrollController.getViewportPosition()\r\n });\r\n return {\r\n contentTop: rowsScrollController.getContentOffset(),\r\n contentLeft: columnsScrollController.getContentOffset(),\r\n width: columnsScrollController.getVirtualContentSize(),\r\n height: rowsScrollController.getVirtualContentSize()\r\n }\r\n }\r\n },\r\n setViewportPosition: function(left, top) {\r\n this._rowsScrollController.setViewportPosition(top || 0);\r\n this._columnsScrollController.setViewportPosition(left || 0)\r\n },\r\n subscribeToWindowScrollEvents: function($element) {\r\n this._rowsScrollController && this._rowsScrollController.subscribeToWindowScrollEvents($element)\r\n },\r\n updateWindowScrollPosition: function(position) {\r\n this._rowsScrollController && this._rowsScrollController.scrollTo(position)\r\n },\r\n updateViewOptions: function(options) {\r\n (0, _extend2.extend)(this._options, options);\r\n this._update()\r\n },\r\n _handleExpandValueChanging: function(e) {\r\n this.expandValueChanging.fire(e)\r\n },\r\n _handleLoadingChanged: function(isLoading) {\r\n this.loadingChanged.fire(isLoading)\r\n },\r\n _handleProgressChanged: function(progress) {\r\n this.progressChanged.fire(progress)\r\n },\r\n _handleFieldsPrepared: function(e) {\r\n this._options.onFieldsPrepared && this._options.onFieldsPrepared(e)\r\n },\r\n _createDataSource: function(options) {\r\n var that = this;\r\n var dataSourceOptions = options.dataSource;\r\n var dataSource;\r\n that._isSharedDataSource = dataSourceOptions instanceof _data_source.default;\r\n if (that._isSharedDataSource) {\r\n dataSource = dataSourceOptions\r\n } else {\r\n dataSource = new _data_source.default(dataSourceOptions)\r\n }\r\n that._expandValueChangingHandler = that._handleExpandValueChanging.bind(that);\r\n that._loadingChangedHandler = that._handleLoadingChanged.bind(that);\r\n that._fieldsPreparedHandler = that._handleFieldsPrepared.bind(that);\r\n that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);\r\n that._changedHandler = function() {\r\n that._update();\r\n that.dataSourceChanged.fire()\r\n };\r\n that._progressChangedHandler = function(progress) {\r\n that._handleProgressChanged(.8 * progress)\r\n };\r\n dataSource.on(\"changed\", that._changedHandler);\r\n dataSource.on(\"expandValueChanging\", that._expandValueChangingHandler);\r\n dataSource.on(\"loadingChanged\", that._loadingChangedHandler);\r\n dataSource.on(\"progressChanged\", that._progressChangedHandler);\r\n dataSource.on(\"fieldsPrepared\", that._fieldsPreparedHandler);\r\n dataSource.on(\"customizeStoreLoadOptions\", that._customizeStoreLoadOptionsHandler);\r\n return dataSource\r\n },\r\n getDataSource: function() {\r\n return this._dataSource\r\n },\r\n isLoading: function() {\r\n return this._dataSource.isLoading()\r\n },\r\n beginLoading: function() {\r\n this._dataSource.beginLoading()\r\n },\r\n endLoading: function() {\r\n this._dataSource.endLoading()\r\n },\r\n _update: function() {\r\n var that = this;\r\n var dataSource = that._dataSource;\r\n var options = that._options;\r\n var columnFields = dataSource.getAreaFields(\"column\");\r\n var rowFields = dataSource.getAreaFields(\"row\");\r\n var dataFields = dataSource.getAreaFields(\"data\");\r\n var dataFieldsForRows = \"row\" === options.dataFieldArea ? dataFields : [];\r\n var dataFieldsForColumns = \"row\" !== options.dataFieldArea ? dataFields : [];\r\n var data = dataSource.getData();\r\n var hiddenTotals = getHiddenTotals(dataFields);\r\n var hiddenValues = getHiddenValues(dataFields);\r\n var hiddenGrandTotals = getHiddenGrandTotalsTotals(dataFields, columnFields);\r\n var grandTotalsAreHiddenForNotAllDataFields = dataFields.length > 0 ? hiddenGrandTotals.length !== dataFields.length : true;\r\n var rowOptions = {\r\n isEmptyGrandTotal: data.isEmptyGrandTotalRow,\r\n texts: options.texts || {},\r\n hiddenTotals: hiddenTotals,\r\n hiddenValues: hiddenValues,\r\n hiddenGrandTotals: [],\r\n showTotals: options.showRowTotals,\r\n showGrandTotals: false !== options.showRowGrandTotals && grandTotalsAreHiddenForNotAllDataFields,\r\n sortBySummaryPaths: createSortPaths(columnFields, dataFields),\r\n showTotalsPrior: \"rows\" === options.showTotalsPrior || \"both\" === options.showTotalsPrior,\r\n showEmpty: !options.hideEmptySummaryCells,\r\n layout: options.rowHeaderLayout,\r\n fields: rowFields,\r\n dataFields: dataFields,\r\n progress: 0\r\n };\r\n var columnOptions = {\r\n isEmptyGrandTotal: data.isEmptyGrandTotalColumn,\r\n texts: options.texts || {},\r\n hiddenTotals: hiddenTotals,\r\n hiddenValues: hiddenValues,\r\n hiddenGrandTotals: hiddenGrandTotals,\r\n showTotals: options.showColumnTotals,\r\n showTotalsPrior: \"columns\" === options.showTotalsPrior || \"both\" === options.showTotalsPrior,\r\n showGrandTotals: false !== options.showColumnGrandTotals && grandTotalsAreHiddenForNotAllDataFields,\r\n sortBySummaryPaths: createSortPaths(rowFields, dataFields),\r\n showEmpty: !options.hideEmptySummaryCells,\r\n fields: columnFields,\r\n dataFields: dataFields,\r\n progress: 0\r\n };\r\n var notifyProgress = function(progress) {\r\n this.progress = progress;\r\n that._handleProgressChanged(.8 + .1 * rowOptions.progress + .1 * columnOptions.progress)\r\n };\r\n rowOptions.notifyProgress = notifyProgress;\r\n columnOptions.notifyProgress = notifyProgress;\r\n if (!(0, _type.isDefined)(data.grandTotalRowIndex)) {\r\n data.grandTotalRowIndex = getHeaderIndexedItems(data.rows, rowOptions).length\r\n }\r\n if (!(0, _type.isDefined)(data.grandTotalColumnIndex)) {\r\n data.grandTotalColumnIndex = getHeaderIndexedItems(data.columns, columnOptions).length\r\n }\r\n dataSource._changeLoadingCount(1);\r\n (0, _deferred.when)(createHeaderInfo(data.columns, columnFields, dataFieldsForColumns, true, columnOptions), createHeaderInfo(data.rows, rowFields, dataFieldsForRows, false, rowOptions)).always(function() {\r\n dataSource._changeLoadingCount(-1)\r\n }).done(function(columnsInfo, rowsInfo) {\r\n that._columnsInfo = columnsInfo;\r\n that._rowsInfo = rowsInfo;\r\n if (that._rowsScrollController && that._columnsScrollController && that.changed && !that._dataSource.paginate()) {\r\n that._lockChanged = true;\r\n that._rowsScrollController.load();\r\n that._columnsScrollController.load();\r\n that._lockChanged = false\r\n }\r\n }).done(function() {\r\n that._fireChanged();\r\n if (that._stateStoringController.isEnabled() && !that._dataSource.isLoading()) {\r\n that._stateStoringController.state(that._dataSource.state());\r\n that._stateStoringController.save()\r\n }\r\n })\r\n },\r\n getRowsInfo: function(getAllData) {\r\n var that = this;\r\n var rowsInfo = that._rowsInfo;\r\n var scrollController = that._rowsScrollController;\r\n var rowspan;\r\n var i;\r\n if (scrollController && !getAllData) {\r\n var startIndex = scrollController.beginPageIndex() * that.rowPageSize();\r\n var endIndex = scrollController.endPageIndex() * that.rowPageSize() + that.rowPageSize();\r\n var newRowsInfo = [];\r\n var maxDepth = 1;\r\n foreachRowInfo(rowsInfo, function(rowInfo, visibleIndex, rowIndex, _, columnIndex) {\r\n var isVisible = visibleIndex >= startIndex && rowIndex < endIndex;\r\n var index = rowIndex < startIndex ? 0 : rowIndex - startIndex;\r\n var cell = rowInfo;\r\n if (isVisible) {\r\n newRowsInfo[index] = newRowsInfo[index] || [];\r\n rowspan = rowIndex < startIndex ? rowInfo.rowspan - (startIndex - rowIndex) || 1 : rowInfo.rowspan;\r\n if (startIndex + index + rowspan > endIndex) {\r\n rowspan = endIndex - (index + startIndex) || 1\r\n }\r\n if (rowspan !== rowInfo.rowspan) {\r\n cell = (0, _extend2.extend)({}, cell, {\r\n rowspan: rowspan\r\n })\r\n }\r\n newRowsInfo[index].push(cell);\r\n maxDepth = math.max(maxDepth, columnIndex + 1)\r\n } else {\r\n if (i > endIndex) {\r\n return false\r\n }\r\n }\r\n });\r\n foreachRowInfo(newRowsInfo, function(rowInfo, visibleIndex, rowIndex, columnIndex, realColumnIndex) {\r\n var colspan = rowInfo.colspan || 1;\r\n if (realColumnIndex + colspan > maxDepth) {\r\n newRowsInfo[rowIndex][columnIndex] = (0, _extend2.extend)({}, rowInfo, {\r\n colspan: maxDepth - realColumnIndex || 1\r\n })\r\n }\r\n });\r\n return newRowsInfo\r\n }\r\n return rowsInfo\r\n },\r\n getColumnsInfo: function(getAllData) {\r\n var that = this;\r\n var info = that._columnsInfo;\r\n var scrollController = that._columnsScrollController;\r\n if (scrollController && !getAllData) {\r\n var startIndex = scrollController.beginPageIndex() * that.columnPageSize();\r\n var endIndex = scrollController.endPageIndex() * that.columnPageSize() + that.columnPageSize();\r\n info = (0, _uiGrid_core2.createColumnsInfo)(info, startIndex, endIndex)\r\n }\r\n return info\r\n },\r\n totalRowCount: function() {\r\n return this._rowsInfo.length\r\n },\r\n rowPageIndex: function(index) {\r\n if (void 0 !== index) {\r\n this._rowPageIndex = index\r\n }\r\n return this._rowPageIndex || 0\r\n },\r\n totalColumnCount: function() {\r\n var count = 0;\r\n if (this._columnsInfo && this._columnsInfo.length) {\r\n for (var i = 0; i < this._columnsInfo[0].length; i++) {\r\n count += this._columnsInfo[0][i].colspan || 1\r\n }\r\n }\r\n return count\r\n },\r\n rowPageSize: function(size) {\r\n if (void 0 !== size) {\r\n this._rowPageSize = size\r\n }\r\n return this._rowPageSize || 20\r\n },\r\n columnPageSize: function(size) {\r\n if (void 0 !== size) {\r\n this._columnPageSize = size\r\n }\r\n return this._columnPageSize || 20\r\n },\r\n columnPageIndex: function(index) {\r\n if (void 0 !== index) {\r\n this._columnPageIndex = index\r\n }\r\n return this._columnPageIndex || 0\r\n },\r\n getCellsInfo: function(getAllData) {\r\n var rowsInfo = this.getRowsInfo(getAllData);\r\n var columnsInfo = this.getColumnsInfo(getAllData);\r\n var data = this._dataSource.getData();\r\n var texts = this._options.texts || {};\r\n return createCellsInfo(rowsInfo, columnsInfo, data, this._dataSource.getAreaFields(\"data\"), this._options.dataFieldArea, texts.dataNotAvailable)\r\n },\r\n dispose: function() {\r\n var that = this;\r\n if (that._isSharedDataSource) {\r\n that._dataSource.off(\"changed\", that._changedHandler);\r\n that._dataSource.off(\"expandValueChanging\", that._expandValueChangingHandler);\r\n that._dataSource.off(\"loadingChanged\", that._loadingChangedHandler);\r\n that._dataSource.off(\"progressChanged\", that._progressChangedHandler);\r\n that._dataSource.off(\"fieldsPrepared\", that._fieldsPreparedHandler);\r\n that._dataSource.off(\"customizeStoreLoadOptions\", that._customizeStoreLoadOptionsHandler)\r\n } else {\r\n that._dataSource.dispose()\r\n }\r\n that._columnsScrollController && that._columnsScrollController.dispose();\r\n that._rowsScrollController && that._rowsScrollController.dispose();\r\n that._stateStoringController.dispose();\r\n that.expandValueChanging.empty();\r\n that.changed.empty();\r\n that.loadingChanged.empty();\r\n that.progressChanged.empty();\r\n that.scrollChanged.empty();\r\n that.dataSourceChanged.empty()\r\n }\r\n };\r\n proxyMethod(members, \"applyPartialDataSource\");\r\n proxyMethod(members, \"collapseHeaderItem\");\r\n proxyMethod(members, \"expandHeaderItem\");\r\n proxyMethod(members, \"getData\");\r\n proxyMethod(members, \"isEmpty\");\r\n return members\r\n}());\r\nexports.DataController = DataController;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/local_store.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _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\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 };\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 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._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 parseResult(argument[0], argument[1], 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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.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/xmla_store/xmla_store.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.XmlaStore = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../../core/renderer\"));\r\nvar _window = require(\"../../../core/utils/window\");\r\nvar _class = _interopRequireDefault(require(\"../../../core/class\"));\r\nvar _string = require(\"../../../core/utils/string\");\r\nvar _errors = _interopRequireDefault(require(\"../../../data/errors\"));\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar _extend = require(\"../../../core/utils/extend\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _iterator = require(\"../../../core/utils/iterator\");\r\nvar _array = require(\"../../../core/utils/array\");\r\nvar _uiPivot_grid = require(\"../ui.pivot_grid.utils\");\r\nvar _deferred = require(\"../../../core/utils/deferred\");\r\nvar _language_codes = require(\"../../../localization/language_codes\");\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\nvar errors = _errors.default.errors;\r\nvar window = (0, _window.getWindow)();\r\nvar XmlaStore = _class.default.inherit(function() {\r\n var discover = '{2}{0}{1}{0}{3}';\r\n var execute = '{0}{1}TrueMicrosoft SQL Server Management Studio3600{2}';\r\n var mdx = \"SELECT {2} FROM {0} {1} CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS\";\r\n var mdxFilterSelect = \"(SELECT {0} FROM {1})\";\r\n var mdxSubset = \"Subset({0}, {1}, {2})\";\r\n var mdxOrder = \"Order({0}, {1}, {2})\";\r\n var mdxWith = \"{0} {1} as {2}\";\r\n var mdxSlice = \"WHERE ({0})\";\r\n var mdxNonEmpty = \"NonEmpty({0}, {1})\";\r\n var mdxAxis = \"{0} DIMENSION PROPERTIES PARENT_UNIQUE_NAME,HIERARCHY_UNIQUE_NAME, MEMBER_VALUE ON {1}\";\r\n var mdxCrossJoin = \"CrossJoin({0})\";\r\n var mdxSet = \"{{0}}\";\r\n var MEASURE_DEMENSION_KEY = \"DX_MEASURES\";\r\n var MD_DIMTYPE_MEASURE = \"2\";\r\n\r\n function execXMLA(requestOptions, data) {\r\n var deferred = new _deferred.Deferred;\r\n var beforeSend = requestOptions.beforeSend;\r\n var ajaxSettings = {\r\n url: requestOptions.url,\r\n dataType: \"text\",\r\n data: data,\r\n headers: {\r\n \"Content-Type\": \"text/xml\"\r\n },\r\n xhrFields: {},\r\n method: \"POST\"\r\n };\r\n if ((0, _type.isFunction)(beforeSend)) {\r\n beforeSend(ajaxSettings)\r\n }(0, _uiPivot_grid.sendRequest)(ajaxSettings).fail(function() {\r\n deferred.reject(arguments)\r\n }).done(function(text) {\r\n var parser = new window.DOMParser;\r\n var xml;\r\n try {\r\n try {\r\n xml = parser.parseFromString(text, \"text/xml\")\r\n } catch (e) {\r\n xml = void 0\r\n }\r\n if (!xml || xml.getElementsByTagName(\"parsererror\").length || 0 === xml.childNodes.length) {\r\n throw new errors.Error(\"E4023\", text)\r\n }\r\n } catch (e) {\r\n deferred.reject({\r\n statusText: e.message,\r\n stack: e.stack,\r\n responseText: text\r\n })\r\n }\r\n deferred.resolve(xml)\r\n });\r\n return deferred\r\n }\r\n\r\n function getLocaleIdProperty() {\r\n var languageId = (0, _language_codes.getLanguageId)();\r\n if (void 0 !== languageId) {\r\n return (0, _string.format)(\"{0}\", languageId)\r\n }\r\n return \"\"\r\n }\r\n\r\n function mdxDescendants(level, levelMember, nextLevel) {\r\n var memberExpression = levelMember ? levelMember : level;\r\n return \"Descendants({\" + memberExpression + \"}, \" + nextLevel + \", SELF_AND_BEFORE)\"\r\n }\r\n\r\n function getAllMember(dimension) {\r\n return (dimension.hierarchyName || dimension.dataField) + \".[All]\"\r\n }\r\n\r\n function getAllMembers(field) {\r\n var result = field.dataField + \".allMembers\";\r\n var searchValue = field.searchValue;\r\n if (searchValue) {\r\n searchValue = searchValue.replace(/'/g, \"''\");\r\n result = \"Filter(\" + result + \", instr(\" + field.dataField + \".currentmember.member_caption,'\" + searchValue + \"') > 0)\"\r\n }\r\n return result\r\n }\r\n\r\n function crossJoinElements(elements) {\r\n var elementsString = elements.join(\",\");\r\n return elements.length > 1 ? (0, _string.format)(mdxCrossJoin, elementsString) : elementsString\r\n }\r\n\r\n function union(elements) {\r\n var elementsString = elements.join(\",\");\r\n return elements.length > 1 ? \"Union(\" + elementsString + \")\" : elementsString\r\n }\r\n\r\n function generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take) {\r\n var crossJoinArgs = [];\r\n var dimensions = options[axisName];\r\n var fields = [];\r\n var arg;\r\n var prevDimension;\r\n var member;\r\n for (var i = expandIndex; i <= expandLevel; i++) {\r\n var field = dimensions[i];\r\n var dataField = field.dataField;\r\n var prevHierarchyName = dimensions[i - 1] && dimensions[i - 1].hierarchyName;\r\n var hierarchyName = field.hierarchyName;\r\n var isLastDimensionInGroup = !hierarchyName || !dimensions[i + 1] || dimensions[i + 1].hierarchyName !== hierarchyName;\r\n var expandAllIndex = path.length + expandAllCount + expandIndex;\r\n arg = null;\r\n fields.push(field);\r\n if (i < path.length) {\r\n if (isLastDimensionInGroup) {\r\n arg = \"(\" + dataField + \".\" + preparePathValue(path[i], dataField) + \")\"\r\n }\r\n } else {\r\n if (i <= expandAllIndex) {\r\n if (0 === i && 0 === expandAllCount) {\r\n var allMember = getAllMember(dimensions[expandIndex]);\r\n if (!hierarchyName) {\r\n arg = getAllMembers(dimensions[expandIndex])\r\n } else {\r\n arg = allMember + \",\" + dimensions[expandIndex].dataField\r\n }\r\n } else {\r\n if (hierarchyName) {\r\n member = preparePathValue(slicePath[slicePath.length - 1]);\r\n if (isLastDimensionInGroup || i === expandAllIndex) {\r\n if (prevHierarchyName === hierarchyName) {\r\n if (slicePath.length) {\r\n prevDimension = dimensions[slicePath.length - 1]\r\n }\r\n if (!prevDimension || prevDimension.hierarchyName !== hierarchyName) {\r\n prevDimension = dimensions[i - 1];\r\n member = \"\"\r\n }\r\n arg = mdxDescendants(prevDimension.dataField, member, dataField)\r\n } else {\r\n arg = getAllMembers(field)\r\n }\r\n }\r\n } else {\r\n arg = getAllMembers(field)\r\n }\r\n }\r\n } else {\r\n var isFirstDimensionInGroup = !hierarchyName || prevHierarchyName !== hierarchyName;\r\n if (isFirstDimensionInGroup) {\r\n arg = \"(\" + getAllMember(field) + \")\"\r\n }\r\n }\r\n }\r\n if (arg) {\r\n arg = (0, _string.format)(mdxSet, arg);\r\n if (take) {\r\n var sortBy = (field.hierarchyName || field.dataField) + (\"displayText\" === field.sortBy ? \".MEMBER_CAPTION\" : \".MEMBER_VALUE\");\r\n arg = (0, _string.format)(mdxOrder, arg, sortBy, \"desc\" === field.sortOrder ? \"DESC\" : \"ASC\")\r\n }\r\n crossJoinArgs.push(arg)\r\n }\r\n }\r\n return crossJoinElements(crossJoinArgs)\r\n }\r\n\r\n function fillCrossJoins(crossJoins, path, expandLevel, expandIndex, slicePath, options, axisName, cellsString, take, totalsOnly) {\r\n var expandAllCount = -1;\r\n var dimensions = options[axisName];\r\n var dimensionIndex;\r\n do {\r\n expandAllCount++;\r\n dimensionIndex = path.length + expandAllCount + expandIndex;\r\n var crossJoin = generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take);\r\n if (!take && !totalsOnly) {\r\n crossJoin = (0, _string.format)(mdxNonEmpty, crossJoin, cellsString)\r\n }\r\n crossJoins.push(crossJoin)\r\n } while (dimensions[dimensionIndex] && dimensions[dimensionIndex + 1] && dimensions[dimensionIndex].expanded)\r\n }\r\n\r\n function declare(expression, withArray, name, type) {\r\n name = name || \"[DX_Set_\" + withArray.length + \"]\";\r\n type = type || \"set\";\r\n withArray.push((0, _string.format)(mdxWith, type, name, expression));\r\n return name\r\n }\r\n\r\n function generateAxisMdx(options, axisName, cells, withArray, parseOptions) {\r\n var dimensions = options[axisName];\r\n var crossJoins = [];\r\n var path = [];\r\n var expandedPaths = [];\r\n var expandIndex = 0;\r\n var expandLevel = 0;\r\n var result = [];\r\n var cellsString = (0, _string.format)(mdxSet, cells.join(\",\"));\r\n if (dimensions && dimensions.length) {\r\n if (options.headerName === axisName) {\r\n path = options.path;\r\n expandIndex = path.length\r\n } else {\r\n if (options.headerName && options.oppositePath) {\r\n path = options.oppositePath;\r\n expandIndex = path.length\r\n } else {\r\n expandedPaths = (\"columns\" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || expandedPaths\r\n }\r\n }\r\n expandLevel = (0, _uiPivot_grid.getExpandedLevel)(options, axisName);\r\n fillCrossJoins(crossJoins, [], expandLevel, expandIndex, path, options, axisName, cellsString, \"rows\" === axisName ? options.rowTake : options.columnTake, options.totalsOnly);\r\n (0, _iterator.each)(expandedPaths, function(_, expandedPath) {\r\n fillCrossJoins(crossJoins, expandedPath, expandLevel, expandIndex, expandedPath, options, axisName, cellsString)\r\n });\r\n for (var i = expandLevel; i >= path.length; i--) {\r\n if (dimensions[i].hierarchyName) {\r\n parseOptions.visibleLevels[dimensions[i].hierarchyName] = parseOptions.visibleLevels[dimensions[i].hierarchyName] || [];\r\n parseOptions.visibleLevels[dimensions[i].hierarchyName].push(dimensions[i].dataField)\r\n }\r\n }\r\n }\r\n if (crossJoins.length) {\r\n var expression = union(crossJoins);\r\n if (\"rows\" === axisName && options.rowTake) {\r\n expression = (0, _string.format)(mdxSubset, expression, options.rowSkip > 0 ? options.rowSkip + 1 : 0, options.rowSkip > 0 ? options.rowTake : options.rowTake + 1)\r\n }\r\n if (\"columns\" === axisName && options.columnTake) {\r\n expression = (0, _string.format)(mdxSubset, expression, options.columnSkip > 0 ? options.columnSkip + 1 : 0, options.columnSkip > 0 ? options.columnTake : options.columnTake + 1)\r\n }\r\n var axisSet = \"[DX_\".concat(axisName, \"]\");\r\n result.push(declare(expression, withArray, axisSet));\r\n if (options.totalsOnly) {\r\n result.push(declare(\"COUNT(\".concat(axisSet, \")\"), withArray, \"[DX_\".concat(axisName, \"_count]\"), \"member\"))\r\n }\r\n }\r\n if (\"columns\" === axisName && cells.length && !options.skipValues) {\r\n result.push(cellsString)\r\n }\r\n return (0, _string.format)(mdxAxis, crossJoinElements(result), axisName)\r\n }\r\n\r\n function generateAxisFieldsFilter(fields) {\r\n var filterMembers = [];\r\n (0, _iterator.each)(fields, function(_, field) {\r\n var dataField = field.dataField;\r\n var filterExpression = [];\r\n var filterValues = field.filterValues || [];\r\n var filterStringExpression;\r\n if (field.hierarchyName && (0, _type.isNumeric)(field.groupIndex)) {\r\n return\r\n }(0, _iterator.each)(filterValues, function(_, filterValue) {\r\n var filterMdx = dataField + \".\" + preparePathValue(Array.isArray(filterValue) ? filterValue[filterValue.length - 1] : filterValue, dataField);\r\n if (\"exclude\" === field.filterType) {\r\n filterExpression.push(filterMdx + \".parent\");\r\n filterMdx = \"Descendants(\" + filterMdx + \")\"\r\n }\r\n filterExpression.push(filterMdx)\r\n });\r\n if (filterValues.length) {\r\n filterStringExpression = (0, _string.format)(mdxSet, filterExpression.join(\",\"));\r\n if (\"exclude\" === field.filterType) {\r\n filterStringExpression = \"Except(\" + getAllMembers(field) + \",\" + filterStringExpression + \")\"\r\n }\r\n filterMembers.push(filterStringExpression)\r\n }\r\n });\r\n return filterMembers.length ? crossJoinElements(filterMembers) : \"\"\r\n }\r\n\r\n function generateFrom(columnsFilter, rowsFilter, filter, cubeName) {\r\n var from = \"[\" + cubeName + \"]\";\r\n (0, _iterator.each)([columnsFilter, rowsFilter, filter], function(_, filter) {\r\n if (filter) {\r\n from = (0, _string.format)(mdxFilterSelect, filter + \"on 0\", from)\r\n }\r\n });\r\n return from\r\n }\r\n\r\n function generateMdxCore(axisStrings, withArray, columns, rows, filters, slice, cubeName) {\r\n var options = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : {};\r\n var mdxString = \"\";\r\n var withString = (withArray.length ? \"with \" + withArray.join(\" \") : \"\") + \" \";\r\n if (axisStrings.length) {\r\n var select;\r\n if (options.totalsOnly) {\r\n var countMembers = [];\r\n if (rows.length) {\r\n countMembers.push(\"[DX_rows_count]\")\r\n }\r\n if (columns.length) {\r\n countMembers.push(\"[DX_columns_count]\")\r\n }\r\n select = \"{\".concat(countMembers.join(\",\"), \"} on columns\")\r\n } else {\r\n select = axisStrings.join(\",\")\r\n }\r\n mdxString = withString + (0, _string.format)(mdx, generateFrom(generateAxisFieldsFilter(columns), generateAxisFieldsFilter(rows), generateAxisFieldsFilter(filters || []), cubeName), slice.length ? (0, _string.format)(mdxSlice, slice.join(\",\")) : \"\", select)\r\n }\r\n return mdxString\r\n }\r\n\r\n function prepareDataFields(withArray, valueFields) {\r\n return (0, _iterator.map)(valueFields, function(cell) {\r\n if ((0, _type.isString)(cell.expression)) {\r\n declare(cell.expression, withArray, cell.dataField, \"member\")\r\n }\r\n return cell.dataField\r\n })\r\n }\r\n\r\n function addSlices(slices, options, headerName, path) {\r\n (0, _iterator.each)(path, function(index, value) {\r\n var dimension = options[headerName][index];\r\n if (!dimension.hierarchyName || dimension.hierarchyName !== options[headerName][index + 1].hierarchyName) {\r\n slices.push(dimension.dataField + \".\" + preparePathValue(value, dimension.dataField))\r\n }\r\n })\r\n }\r\n\r\n function generateMDX(options, cubeName, parseOptions) {\r\n var columns = options.columns || [];\r\n var rows = options.rows || [];\r\n var values = options.values && options.values.length ? options.values : [{\r\n dataField: \"[Measures]\"\r\n }];\r\n var slice = [];\r\n var withArray = [];\r\n var axisStrings = [];\r\n var dataFields = prepareDataFields(withArray, values);\r\n parseOptions.measureCount = options.skipValues ? 1 : values.length;\r\n parseOptions.visibleLevels = {};\r\n if (options.headerName && options.path) {\r\n addSlices(slice, options, options.headerName, options.path)\r\n }\r\n if (options.headerName && options.oppositePath) {\r\n addSlices(slice, options, \"rows\" === options.headerName ? \"columns\" : \"rows\", options.oppositePath)\r\n }\r\n if (columns.length || dataFields.length) {\r\n axisStrings.push(generateAxisMdx(options, \"columns\", dataFields, withArray, parseOptions))\r\n }\r\n if (rows.length) {\r\n axisStrings.push(generateAxisMdx(options, \"rows\", dataFields, withArray, parseOptions))\r\n }\r\n return generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName, options)\r\n }\r\n\r\n function createDrillDownAxisSlice(slice, fields, path) {\r\n (0, _iterator.each)(path, function(index, value) {\r\n var field = fields[index];\r\n if (field.hierarchyName && (fields[index + 1] || {}).hierarchyName === field.hierarchyName) {\r\n return\r\n }\r\n slice.push(field.dataField + \".\" + preparePathValue(value, field.dataField))\r\n })\r\n }\r\n\r\n function generateDrillDownMDX(options, cubeName, params) {\r\n var columns = options.columns || [];\r\n var rows = options.rows || [];\r\n var values = options.values && options.values.length ? options.values : [{\r\n dataField: \"[Measures]\"\r\n }];\r\n var slice = [];\r\n var withArray = [];\r\n var axisStrings = [];\r\n var dataFields = prepareDataFields(withArray, values);\r\n var maxRowCount = params.maxRowCount;\r\n var customColumns = params.customColumns || [];\r\n var customColumnsString = customColumns.length > 0 ? \" return \" + customColumns.join(\",\") : \"\";\r\n createDrillDownAxisSlice(slice, columns, params.columnPath || []);\r\n createDrillDownAxisSlice(slice, rows, params.rowPath || []);\r\n if (columns.length || columns.length || dataFields.length) {\r\n axisStrings.push([(dataFields[params.dataIndex] || dataFields[0]) + \" on 0\"])\r\n }\r\n var coreMDX = generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName);\r\n return coreMDX ? \"drillthrough\" + (maxRowCount > 0 ? \" maxrows \" + maxRowCount : \"\") + coreMDX + customColumnsString : coreMDX\r\n }\r\n\r\n function getNumber(str) {\r\n return parseInt(str, 10)\r\n }\r\n\r\n function parseValue(valueText) {\r\n return (0, _type.isNumeric)(valueText) ? parseFloat(valueText) : valueText\r\n }\r\n\r\n function getFirstChild(node, tagName) {\r\n return (node.getElementsByTagName(tagName) || [])[0]\r\n }\r\n\r\n function getFirstChildText(node, childTagName) {\r\n return getNodeText(getFirstChild(node, childTagName))\r\n }\r\n\r\n function parseAxes(xml, skipValues) {\r\n var axes = [];\r\n (0, _iterator.each)(xml.getElementsByTagName(\"Axis\"), function(_, axisElement) {\r\n var name = axisElement.getAttribute(\"name\");\r\n var axis = [];\r\n var index = 0;\r\n if (0 === name.indexOf(\"Axis\") && (0, _type.isNumeric)(getNumber(name.substr(4)))) {\r\n axes.push(axis);\r\n (0, _iterator.each)(axisElement.getElementsByTagName(\"Tuple\"), function(_, tupleElement) {\r\n var tupleMembers = tupleElement.childNodes;\r\n var levelSum = 0;\r\n var members = [];\r\n var membersCount = skipValues ? tupleMembers.length : tupleMembers.length - 1;\r\n var isAxisWithMeasure = 1 === axes.length;\r\n if (isAxisWithMeasure) {\r\n membersCount--\r\n }\r\n axis.push(members);\r\n for (var i = membersCount; i >= 0; i--) {\r\n var tuple = tupleMembers[i];\r\n var level = getNumber(getFirstChildText(tuple, \"LNum\"));\r\n members[i] = {\r\n caption: getFirstChildText(tuple, \"Caption\"),\r\n value: parseValue(getFirstChildText(tuple, \"MEMBER_VALUE\")),\r\n level: level,\r\n index: index++,\r\n hasValue: !levelSum && (!!level || 0 === i),\r\n name: getFirstChildText(tuple, \"UName\"),\r\n hierarchyName: tupleMembers[i].getAttribute(\"Hierarchy\"),\r\n parentName: getFirstChildText(tuple, \"PARENT_UNIQUE_NAME\"),\r\n levelName: getFirstChildText(tuple, \"LName\")\r\n };\r\n levelSum += level\r\n }\r\n })\r\n }\r\n });\r\n while (axes.length < 2) {\r\n axes.push([\r\n [{\r\n level: 0\r\n }]\r\n ])\r\n }\r\n return axes\r\n }\r\n\r\n function getNodeText(node) {\r\n return node && node && (node.textContent || node.text || node.innerHTML) || \"\"\r\n }\r\n\r\n function parseCells(xml, axes, measureCount) {\r\n var cells = [];\r\n var cell = [];\r\n var index = 0;\r\n var cellsOriginal = [];\r\n var cellElements = xml.getElementsByTagName(\"Cell\");\r\n var errorDictionary = {};\r\n for (var i = 0; i < cellElements.length; i++) {\r\n var xmlCell = cellElements[i];\r\n var valueElement = xmlCell.getElementsByTagName(\"Value\")[0];\r\n var errorElements = valueElement && valueElement.getElementsByTagName(\"Error\") || [];\r\n var text = 0 === errorElements.length ? getNodeText(valueElement) : \"#N/A\";\r\n var value = parseFloat(text);\r\n var _isNumeric = text - value + 1 > 0;\r\n var cellOrdinal = getNumber(xmlCell.getAttribute(\"CellOrdinal\"));\r\n if (errorElements.length) {\r\n errorDictionary[getNodeText(errorElements[0].getElementsByTagName(\"ErrorCode\")[0])] = getNodeText(errorElements[0].getElementsByTagName(\"Description\")[0])\r\n }\r\n cellsOriginal[cellOrdinal] = {\r\n value: _isNumeric ? value : text || null\r\n }\r\n }(0, _iterator.each)(axes[1], function() {\r\n var row = [];\r\n cells.push(row);\r\n (0, _iterator.each)(axes[0], function() {\r\n var measureIndex = index % measureCount;\r\n if (0 === measureIndex) {\r\n cell = [];\r\n row.push(cell)\r\n }\r\n cell.push(cellsOriginal[index] ? cellsOriginal[index].value : null);\r\n index++\r\n })\r\n });\r\n Object.keys(errorDictionary).forEach(function(key) {\r\n errors.log(\"W4002\", errorDictionary[key])\r\n });\r\n return cells\r\n }\r\n\r\n function preparePathValue(pathValue, dataField) {\r\n if (pathValue) {\r\n pathValue = (0, _type.isString)(pathValue) && pathValue.indexOf(\"&\") !== -1 ? pathValue : \"[\" + pathValue + \"]\";\r\n if (dataField && 0 === pathValue.indexOf(dataField + \".\")) {\r\n pathValue = pathValue.slice(dataField.length + 1, pathValue.length)\r\n }\r\n }\r\n return pathValue\r\n }\r\n\r\n function getItem(hash, name, member, index) {\r\n var item = hash[name];\r\n if (!item) {\r\n item = {};\r\n hash[name] = item\r\n }\r\n if (!(0, _type.isDefined)(item.value) && member) {\r\n item.text = member.caption;\r\n item.value = member.value;\r\n item.key = name ? name : \"\";\r\n item.levelName = member.levelName;\r\n item.hierarchyName = member.hierarchyName;\r\n item.parentName = member.parentName;\r\n item.index = index;\r\n item.level = member.level\r\n }\r\n return item\r\n }\r\n\r\n function getVisibleChildren(item, visibleLevels) {\r\n var result = [];\r\n var children = item.children && (item.children.length ? item.children : Object.keys(item.children.grandTotalHash || {}).reduce(function(result, name) {\r\n return result.concat(item.children.grandTotalHash[name].children)\r\n }, []));\r\n var firstChild = children && children[0];\r\n if (firstChild && (visibleLevels[firstChild.hierarchyName] && (0, _array.inArray)(firstChild.levelName, visibleLevels[firstChild.hierarchyName]) !== -1 || !visibleLevels[firstChild.hierarchyName] || 0 === firstChild.level)) {\r\n var newChildren = children.filter(function(child) {\r\n return child.hierarchyName === firstChild.hierarchyName\r\n });\r\n newChildren.grandTotalHash = children.grandTotalHash;\r\n return newChildren\r\n } else {\r\n if (firstChild) {\r\n for (var i = 0; i < children.length; i++) {\r\n if (children[i].hierarchyName === firstChild.hierarchyName) {\r\n result.push.apply(result, getVisibleChildren(children[i], visibleLevels))\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n function processMember(dataIndex, member, parentItem) {\r\n var children = parentItem.children = parentItem.children || [];\r\n var hash = children.hash = children.hash || {};\r\n var grandTotalHash = children.grandTotalHash = children.grandTotalHash || {};\r\n if (member.parentName) {\r\n parentItem = getItem(hash, member.parentName);\r\n children = parentItem.children = parentItem.children || []\r\n }\r\n var currentItem = getItem(hash, member.name, member, dataIndex);\r\n if (member.hasValue && !currentItem.added) {\r\n currentItem.index = dataIndex;\r\n currentItem.added = true;\r\n children.push(currentItem)\r\n }\r\n if ((!parentItem.value || !parentItem.parentName) && member.parentName) {\r\n grandTotalHash[member.parentName] = parentItem\r\n } else {\r\n if (grandTotalHash[parentItem.name]) {\r\n delete grandTotalHash[member.parentName]\r\n }\r\n }\r\n return currentItem\r\n }\r\n\r\n function getGrandTotalIndex(parentItem, visibleLevels) {\r\n var grandTotalIndex;\r\n if (1 === parentItem.children.length && \"\" === parentItem.children[0].parentName) {\r\n grandTotalIndex = parentItem.children[0].index;\r\n var grandTotalHash = parentItem.children.grandTotalHash;\r\n parentItem.children = parentItem.children[0].children || [];\r\n parentItem.children.grandTotalHash = grandTotalHash;\r\n parentItem.children = getVisibleChildren(parentItem, visibleLevels)\r\n } else {\r\n if (0 === parentItem.children.length) {\r\n grandTotalIndex = 0\r\n }\r\n }\r\n return grandTotalIndex\r\n }\r\n\r\n function fillDataSourceAxes(dataSourceAxis, axisTuples, measureCount, visibleLevels) {\r\n var result = [];\r\n (0, _iterator.each)(axisTuples, function(tupleIndex, members) {\r\n var parentItem = {\r\n children: result\r\n };\r\n var dataIndex = (0, _type.isDefined)(measureCount) ? Math.floor(tupleIndex / measureCount) : tupleIndex;\r\n (0, _iterator.each)(members, function(_, member) {\r\n parentItem = processMember(dataIndex, member, parentItem)\r\n })\r\n });\r\n var parentItem = {\r\n children: result\r\n };\r\n parentItem.children = getVisibleChildren(parentItem, visibleLevels);\r\n var grandTotalIndex = getGrandTotalIndex(parentItem, visibleLevels);\r\n (0, _uiPivot_grid.foreachTree)(parentItem.children, function(items) {\r\n var item = items[0];\r\n var children = getVisibleChildren(item, visibleLevels);\r\n if (children.length) {\r\n item.children = children\r\n } else {\r\n delete item.children\r\n }\r\n delete item.levelName;\r\n delete item.hierarchyName;\r\n delete item.added;\r\n delete item.parentName;\r\n delete item.level\r\n }, true);\r\n (0, _iterator.each)(parentItem.children || [], function(_, e) {\r\n dataSourceAxis.push(e)\r\n });\r\n return grandTotalIndex\r\n }\r\n\r\n function checkError(xml) {\r\n var faultElementNS = xml.getElementsByTagName(\"soap:Fault\");\r\n var faultElement = xml.getElementsByTagName(\"Fault\");\r\n var errorElement = (0, _renderer.default)([].slice.call(faultElement.length ? faultElement : faultElementNS)).find(\"Error\");\r\n if (errorElement.length) {\r\n var description = errorElement.attr(\"Description\");\r\n var error = new errors.Error(\"E4000\", description);\r\n errors.log(\"E4000\", description);\r\n return error\r\n }\r\n return null\r\n }\r\n\r\n function parseResult(xml, parseOptions) {\r\n var dataSource = {\r\n columns: [],\r\n rows: []\r\n };\r\n var measureCount = parseOptions.measureCount;\r\n var axes = parseAxes(xml, parseOptions.skipValues);\r\n dataSource.grandTotalColumnIndex = fillDataSourceAxes(dataSource.columns, axes[0], measureCount, parseOptions.visibleLevels);\r\n dataSource.grandTotalRowIndex = fillDataSourceAxes(dataSource.rows, axes[1], void 0, parseOptions.visibleLevels);\r\n dataSource.values = parseCells(xml, axes, measureCount);\r\n return dataSource\r\n }\r\n\r\n function parseDiscoverRowSet(xml, schema, dimensions, translatedDisplayFolders) {\r\n var result = [];\r\n var isMeasure = \"MEASURE\" === schema;\r\n var displayFolderField = isMeasure ? \"MEASUREGROUP_NAME\" : schema + \"_DISPLAY_FOLDER\";\r\n (0, _iterator.each)(xml.getElementsByTagName(\"row\"), function(_, row) {\r\n var hierarchyName = \"LEVEL\" === schema ? getFirstChildText(row, \"HIERARCHY_UNIQUE_NAME\") : void 0;\r\n var levelNumber = getFirstChildText(row, \"LEVEL_NUMBER\");\r\n var displayFolder = getFirstChildText(row, displayFolderField);\r\n if (isMeasure) {\r\n displayFolder = translatedDisplayFolders[displayFolder] || displayFolder\r\n }\r\n if ((\"0\" !== levelNumber || \"true\" !== getFirstChildText(row, schema + \"_IS_VISIBLE\")) && getFirstChildText(row, \"DIMENSION_TYPE\") !== MD_DIMTYPE_MEASURE) {\r\n var dimension = isMeasure ? MEASURE_DEMENSION_KEY : getFirstChildText(row, \"DIMENSION_UNIQUE_NAME\");\r\n var dataField = getFirstChildText(row, schema + \"_UNIQUE_NAME\");\r\n result.push({\r\n dimension: dimensions.names[dimension] || dimension,\r\n groupIndex: levelNumber ? getNumber(levelNumber) - 1 : void 0,\r\n dataField: dataField,\r\n caption: getFirstChildText(row, schema + \"_CAPTION\"),\r\n hierarchyName: hierarchyName,\r\n groupName: hierarchyName,\r\n displayFolder: displayFolder,\r\n isMeasure: isMeasure,\r\n isDefault: !!dimensions.defaultHierarchies[dataField]\r\n })\r\n }\r\n });\r\n return result\r\n }\r\n\r\n function parseMeasureGroupDiscoverRowSet(xml) {\r\n var measureGroups = {};\r\n (0, _iterator.each)(xml.getElementsByTagName(\"row\"), function(_, row) {\r\n measureGroups[getFirstChildText(row, \"MEASUREGROUP_NAME\")] = getFirstChildText(row, \"MEASUREGROUP_CAPTION\")\r\n });\r\n return measureGroups\r\n }\r\n\r\n function parseDimensionsDiscoverRowSet(xml) {\r\n var result = {\r\n names: {},\r\n defaultHierarchies: {}\r\n };\r\n (0, _iterator.each)((0, _renderer.default)(xml).find(\"row\"), function() {\r\n var $row = (0, _renderer.default)(this);\r\n var type = $row.children(\"DIMENSION_TYPE\").text();\r\n var dimensionName = type === MD_DIMTYPE_MEASURE ? MEASURE_DEMENSION_KEY : $row.children(\"DIMENSION_UNIQUE_NAME\").text();\r\n result.names[dimensionName] = $row.children(\"DIMENSION_CAPTION\").text();\r\n result.defaultHierarchies[$row.children(\"DEFAULT_HIERARCHY\").text()] = true\r\n });\r\n return result\r\n }\r\n\r\n function parseStringWithUnicodeSymbols(str) {\r\n str = str.replace(/_x(....)_/g, function(whole, group1) {\r\n return String.fromCharCode(parseInt(group1, 16))\r\n });\r\n var stringArray = str.match(/\\[.+?\\]/gi);\r\n if (stringArray && stringArray.length) {\r\n str = stringArray[stringArray.length - 1]\r\n }\r\n return str.replace(/\\[/gi, \"\").replace(/\\]/gi, \"\").replace(/\\$/gi, \"\").replace(/\\./gi, \" \")\r\n }\r\n\r\n function parseDrillDownRowSet(xml) {\r\n var rows = xml.getElementsByTagName(\"row\");\r\n var result = [];\r\n var columnNames = {};\r\n for (var i = 0; i < rows.length; i++) {\r\n var children = rows[i].childNodes;\r\n var item = {};\r\n for (var j = 0; j < children.length; j++) {\r\n var tagName = children[j].tagName;\r\n var name = columnNames[tagName] = columnNames[tagName] || parseStringWithUnicodeSymbols(tagName);\r\n item[name] = getNodeText(children[j])\r\n }\r\n result.push(item)\r\n }\r\n return result\r\n }\r\n\r\n function sendQuery(storeOptions, mdxString) {\r\n mdxString = (0, _renderer.default)(\"
\").text(mdxString).html();\r\n return execXMLA(storeOptions, (0, _string.format)(execute, mdxString, storeOptions.catalog, getLocaleIdProperty()))\r\n }\r\n\r\n function processTotalCount(data, options, totalCountXml) {\r\n var axes = [];\r\n var columnOptions = options.columns || [];\r\n var rowOptions = options.rows || [];\r\n if (columnOptions.length) {\r\n axes.push({})\r\n }\r\n if (rowOptions.length) {\r\n axes.push({})\r\n }\r\n var cells = parseCells(totalCountXml, [\r\n [{}],\r\n [{}, {}]\r\n ], 1);\r\n if (!columnOptions.length && rowOptions.length) {\r\n data.rowCount = Math.max(cells[0][0][0] - 1, 0)\r\n }\r\n if (!rowOptions.length && columnOptions.length) {\r\n data.columnCount = Math.max(cells[0][0][0] - 1, 0)\r\n }\r\n if (rowOptions.length && columnOptions.length) {\r\n data.rowCount = Math.max(cells[0][0][0] - 1, 0);\r\n data.columnCount = Math.max(cells[1][0][0] - 1, 0)\r\n }\r\n if (void 0 !== data.rowCount && options.rowTake) {\r\n data.rows = _toConsumableArray(Array(options.rowSkip)).concat(data.rows);\r\n data.rows.length = data.rowCount;\r\n for (var i = 0; i < data.rows.length; i++) {\r\n data.rows[i] = data.rows[i] || {}\r\n }\r\n }\r\n if (void 0 !== data.columnCount && options.columnTake) {\r\n data.columns = _toConsumableArray(Array(options.columnSkip)).concat(data.columns);\r\n data.columns.length = data.columnCount;\r\n for (var _i = 0; _i < data.columns.length; _i++) {\r\n data.columns[_i] = data.columns[_i] || {}\r\n }\r\n }\r\n }\r\n return {\r\n ctor: function(options) {\r\n this._options = options\r\n },\r\n getFields: function() {\r\n var options = this._options;\r\n var catalog = options.catalog;\r\n var cube = options.cube;\r\n var localeIdProperty = getLocaleIdProperty();\r\n var dimensionsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_DIMENSIONS\", localeIdProperty));\r\n var measuresRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_MEASURES\", localeIdProperty));\r\n var hierarchiesRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_HIERARCHIES\", localeIdProperty));\r\n var levelsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_LEVELS\", localeIdProperty));\r\n var result = new _deferred.Deferred;\r\n (0, _deferred.when)(dimensionsRequest, measuresRequest, hierarchiesRequest, levelsRequest).then(function(dimensionsResponse, measuresResponse, hierarchiesResponse, levelsResponse) {\r\n execXMLA(options, (0, _string.format)(discover, catalog, cube, \"MDSCHEMA_MEASUREGROUPS\", localeIdProperty)).done(function(measureGroupsResponse) {\r\n var dimensions = parseDimensionsDiscoverRowSet(dimensionsResponse);\r\n var hierarchies = parseDiscoverRowSet(hierarchiesResponse, \"HIERARCHY\", dimensions);\r\n var levels = parseDiscoverRowSet(levelsResponse, \"LEVEL\", dimensions);\r\n var measureGroups = parseMeasureGroupDiscoverRowSet(measureGroupsResponse);\r\n var fields = parseDiscoverRowSet(measuresResponse, \"MEASURE\", dimensions, measureGroups).concat(hierarchies);\r\n var levelsByHierarchy = {};\r\n (0, _iterator.each)(levels, function(_, level) {\r\n levelsByHierarchy[level.hierarchyName] = levelsByHierarchy[level.hierarchyName] || [];\r\n levelsByHierarchy[level.hierarchyName].push(level)\r\n });\r\n (0, _iterator.each)(hierarchies, function(_, hierarchy) {\r\n if (levelsByHierarchy[hierarchy.dataField] && levelsByHierarchy[hierarchy.dataField].length > 1) {\r\n hierarchy.groupName = hierarchy.hierarchyName = hierarchy.dataField;\r\n fields.push.apply(fields, levelsByHierarchy[hierarchy.hierarchyName])\r\n }\r\n });\r\n result.resolve(fields)\r\n }).fail(result.reject)\r\n }).fail(result.reject);\r\n return result\r\n },\r\n load: function load(options) {\r\n var result = new _deferred.Deferred;\r\n var storeOptions = this._options;\r\n var parseOptions = {\r\n skipValues: options.skipValues\r\n };\r\n var mdxString = generateMDX(options, storeOptions.cube, parseOptions);\r\n var rowCountMdx;\r\n if (options.rowSkip || options.rowTake || options.columnTake || options.columnSkip) {\r\n rowCountMdx = generateMDX((0, _extend.extend)({}, options, {\r\n totalsOnly: true,\r\n rowSkip: null,\r\n rowTake: null,\r\n columnSkip: null,\r\n columnTake: null\r\n }), storeOptions.cube, {})\r\n }\r\n var load = function() {\r\n if (mdxString) {\r\n (0, _deferred.when)(sendQuery(storeOptions, mdxString), rowCountMdx && sendQuery(storeOptions, rowCountMdx)).done(function(executeXml, rowCountXml) {\r\n var error = checkError(executeXml) || rowCountXml && checkError(rowCountXml);\r\n if (!error) {\r\n var response = parseResult(executeXml, parseOptions);\r\n if (rowCountXml) {\r\n processTotalCount(response, options, rowCountXml)\r\n }\r\n result.resolve(response)\r\n } else {\r\n result.reject(error)\r\n }\r\n }).fail(result.reject)\r\n } else {\r\n result.resolve({\r\n columns: [],\r\n rows: [],\r\n values: [],\r\n grandTotalColumnIndex: 0,\r\n grandTotalRowIndex: 0\r\n })\r\n }\r\n };\r\n if (options.delay) {\r\n setTimeout(load, options.delay)\r\n } else {\r\n load()\r\n }\r\n return result\r\n },\r\n supportPaging: function() {\r\n return true\r\n },\r\n getDrillDownItems: function(options, params) {\r\n var result = new _deferred.Deferred;\r\n var storeOptions = this._options;\r\n var mdxString = generateDrillDownMDX(options, storeOptions.cube, params);\r\n if (mdxString) {\r\n (0, _deferred.when)(sendQuery(storeOptions, mdxString)).done(function(executeXml) {\r\n var error = checkError(executeXml);\r\n if (!error) {\r\n result.resolve(parseDrillDownRowSet(executeXml))\r\n } else {\r\n result.reject(error)\r\n }\r\n }).fail(result.reject)\r\n } else {\r\n result.resolve([])\r\n }\r\n return result\r\n },\r\n key: _common.noop,\r\n filter: _common.noop\r\n }\r\n}()).include(_uiPivot_grid.storeDrillDownMixin);\r\nexports.XmlaStore = XmlaStore;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.summary_display_modes.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.applyDisplaySummaryMode = applyDisplaySummaryMode;\r\nexports.applyRunningTotal = applyRunningTotal;\r\nexports.createMockSummaryCell = createMockSummaryCell;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar COLUMN = \"column\";\r\nvar ROW = \"row\";\r\nvar NULL = null;\r\nvar calculatePercentValue = function(value, totalValue) {\r\n var result = value / totalValue;\r\n if (!(0, _type.isDefined)(value) || isNaN(result)) {\r\n result = NULL\r\n }\r\n return result\r\n};\r\nvar _percentOfGrandTotal = function(e, dimension) {\r\n return calculatePercentValue(e.value(), e.grandTotal(dimension).value())\r\n};\r\nvar percentOfParent = function(e, dimension) {\r\n var parent = e.parent(dimension);\r\n var parentValue = parent ? parent.value() : e.value();\r\n return calculatePercentValue(e.value(), parentValue)\r\n};\r\nvar createAbsoluteVariationExp = function(allowCrossGroup) {\r\n return function(e) {\r\n var prevCell = e.prev(COLUMN, allowCrossGroup);\r\n var prevValue = prevCell && prevCell.value();\r\n if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(e.value())) {\r\n return e.value() - prevValue\r\n }\r\n return NULL\r\n }\r\n};\r\nvar createPercentVariationExp = function(allowCrossGroup) {\r\n var absoluteExp = createAbsoluteVariationExp(allowCrossGroup);\r\n return function(e) {\r\n var absVar = absoluteExp(e);\r\n var prevCell = e.prev(COLUMN, allowCrossGroup);\r\n var prevValue = prevCell && prevCell.value();\r\n return absVar !== NULL && prevValue ? absVar / prevValue : NULL\r\n }\r\n};\r\nvar summaryDictionary = {\r\n percentOfColumnTotal: function(e) {\r\n return percentOfParent(e, ROW)\r\n },\r\n percentOfRowTotal: function(e) {\r\n return percentOfParent(e, COLUMN)\r\n },\r\n percentOfColumnGrandTotal: function(e) {\r\n return _percentOfGrandTotal(e, ROW)\r\n },\r\n percentOfRowGrandTotal: function(e) {\r\n return _percentOfGrandTotal(e, COLUMN)\r\n },\r\n percentOfGrandTotal: function(e) {\r\n return _percentOfGrandTotal(e)\r\n }\r\n};\r\nvar getPrevCellCrossGroup = function getPrevCellCrossGroup(cell, direction) {\r\n if (!cell || !cell.parent(direction)) {\r\n return\r\n }\r\n var prevCell = cell.prev(direction);\r\n if (!prevCell) {\r\n prevCell = getPrevCellCrossGroup(cell.parent(direction), direction)\r\n }\r\n return prevCell\r\n};\r\nvar createRunningTotalExpr = function(field) {\r\n if (!field.runningTotal) {\r\n return\r\n }\r\n var direction = field.runningTotal === COLUMN ? ROW : COLUMN;\r\n return function(e) {\r\n var prevCell = field.allowCrossGroupCalculation ? getPrevCellCrossGroup(e, direction) : e.prev(direction, false);\r\n var value = e.value(true);\r\n var prevValue = prevCell && prevCell.value(true);\r\n if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(value)) {\r\n value = prevValue + value\r\n } else {\r\n if ((0, _type.isDefined)(prevValue)) {\r\n value = prevValue\r\n }\r\n }\r\n return value\r\n }\r\n};\r\n\r\nfunction createCache() {\r\n return {\r\n fields: {},\r\n positions: {}\r\n }\r\n}\r\n\r\nfunction getFieldPos(descriptions, field, cache) {\r\n var fieldParams = {\r\n index: -1\r\n };\r\n if (!(0, _type.isObject)(field)) {\r\n if (cache.fields[field]) {\r\n field = cache[field]\r\n } else {\r\n var allFields = descriptions.columns.concat(descriptions.rows).concat(descriptions.values);\r\n var fieldIndex = (0, _uiPivot_grid.findField)(allFields, field);\r\n field = cache[field] = allFields[fieldIndex]\r\n }\r\n }\r\n if (field) {\r\n var area = field.area || \"data\";\r\n fieldParams = cache.positions[field.index] = cache.positions[field.index] || {\r\n area: area,\r\n index: (0, _array.inArray)(field, descriptions[\"data\" === area ? \"values\" : area + \"s\"])\r\n }\r\n }\r\n return fieldParams\r\n}\r\n\r\nfunction getPathFieldName(dimension) {\r\n return dimension === ROW ? \"_rowPath\" : \"_columnPath\"\r\n}\r\nvar SummaryCell = function(columnPath, rowPath, data, descriptions, fieldIndex, fieldsCache) {\r\n this._columnPath = columnPath;\r\n this._rowPath = rowPath;\r\n this._fieldIndex = fieldIndex;\r\n this._fieldsCache = fieldsCache || createCache();\r\n this._data = data;\r\n this._descriptions = descriptions;\r\n var cell = data.values && data.values[rowPath[0].index] && data.values[rowPath[0].index][columnPath[0].index];\r\n if (cell) {\r\n cell.originalCell = cell.originalCell || cell.slice();\r\n cell.postProcessedFlags = cell.postProcessedFlags || [];\r\n this._cell = cell\r\n }\r\n};\r\nSummaryCell.prototype = (0, _extend.extend)(SummaryCell.prototype, {\r\n _getPath: function(dimension) {\r\n return this[getPathFieldName(dimension)]\r\n },\r\n _getDimension: function(dimension) {\r\n dimension = dimension === ROW ? \"rows\" : \"columns\";\r\n return this._descriptions[dimension]\r\n },\r\n _createCell: function(config) {\r\n var that = this;\r\n return new SummaryCell(config._columnPath || that._columnPath, config._rowPath || that._rowPath, that._data, that._descriptions, that._fieldIndex)\r\n },\r\n parent: function(direction) {\r\n var path = this._getPath(direction).slice();\r\n var config = {};\r\n path.shift();\r\n if (path.length) {\r\n config[getPathFieldName(direction)] = path;\r\n return this._createCell(config)\r\n }\r\n return NULL\r\n },\r\n children: function(direction) {\r\n var path = this._getPath(direction).slice();\r\n var item = path[0];\r\n var result = [];\r\n var cellConfig = {};\r\n if (item.children) {\r\n for (var i = 0; i < item.children.length; i++) {\r\n cellConfig[getPathFieldName(direction)] = [item.children[i]].concat(path.slice());\r\n result.push(this._createCell(cellConfig))\r\n }\r\n }\r\n return result\r\n },\r\n grandTotal: function(direction) {\r\n var config = {};\r\n var rowPath = this._rowPath;\r\n var columnPath = this._columnPath;\r\n var dimensionPath = this._getPath(direction);\r\n var pathFieldName = getPathFieldName(direction);\r\n if (!direction) {\r\n config._rowPath = [rowPath[rowPath.length - 1]];\r\n config._columnPath = [columnPath[columnPath.length - 1]]\r\n } else {\r\n config[pathFieldName] = [dimensionPath[dimensionPath.length - 1]]\r\n }\r\n return this._createCell(config)\r\n },\r\n next: function(direction, allowCrossGroup) {\r\n var currentPath = this._getPath(direction);\r\n var item = currentPath[0];\r\n var parent = this.parent(direction);\r\n var siblings;\r\n if (parent) {\r\n var index = (0, _array.inArray)(item, currentPath[1].children);\r\n siblings = parent.children(direction);\r\n if (siblings[index + 1]) {\r\n return siblings[index + 1]\r\n }\r\n }\r\n if (allowCrossGroup && parent) {\r\n do {\r\n parent = parent.next(direction, allowCrossGroup);\r\n siblings = parent ? parent.children(direction) : []\r\n } while (parent && !siblings.length);\r\n return siblings[0] || NULL\r\n }\r\n return NULL\r\n },\r\n prev: function(direction, allowCrossGroup) {\r\n var currentPath = this._getPath(direction);\r\n var item = currentPath[0];\r\n var parent = this.parent(direction);\r\n var siblings;\r\n if (parent) {\r\n var index = (0, _array.inArray)(item, currentPath[1].children);\r\n siblings = parent.children(direction);\r\n if (siblings[index - 1]) {\r\n return siblings[index - 1]\r\n }\r\n }\r\n if (allowCrossGroup && parent) {\r\n do {\r\n parent = parent.prev(direction, allowCrossGroup);\r\n siblings = parent ? parent.children(direction) : []\r\n } while (parent && !siblings.length);\r\n return siblings[siblings.length - 1] || NULL\r\n }\r\n return NULL\r\n },\r\n cell: function() {\r\n return this._cell\r\n },\r\n field: function field(area) {\r\n if (\"data\" === area) {\r\n return this._descriptions.values[this._fieldIndex]\r\n }\r\n var path = this._getPath(area);\r\n var descriptions = this._getDimension(area);\r\n var field = descriptions[path.length - 2];\r\n return field || NULL\r\n },\r\n child: function(direction, fieldValue) {\r\n var children = this.children(direction);\r\n for (var i = 0; i < children.length; i++) {\r\n var childLevelField = childLevelField || children[i].field(direction);\r\n if (children[i].value(childLevelField) === fieldValue) {\r\n return children[i]\r\n }\r\n }\r\n return NULL\r\n },\r\n slice: function(field, value) {\r\n var that = this;\r\n var config = {};\r\n var fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);\r\n var area = fieldPos.area;\r\n var fieldIndex = fieldPos.index;\r\n var sliceCell = NULL;\r\n var newPath = [];\r\n if (area === ROW || area === COLUMN) {\r\n var path = this._getPath(area).slice();\r\n var level = fieldIndex !== -1 && path.length - 2 - fieldIndex;\r\n if (path[level]) {\r\n newPath[path.length - 1] = path[path.length - 1];\r\n for (var i = level; i >= 0; i--) {\r\n if (path[i + 1]) {\r\n var childItems = path[i + 1].children || [];\r\n var currentValue = i === level ? value : path[i].value;\r\n path[i] = void 0;\r\n for (var childIndex = 0; childIndex < childItems.length; childIndex++) {\r\n if (childItems[childIndex].value === currentValue) {\r\n path[i] = childItems[childIndex];\r\n break\r\n }\r\n }\r\n }\r\n if (void 0 === path[i]) {\r\n return sliceCell\r\n }\r\n }\r\n config[getPathFieldName(area)] = path;\r\n sliceCell = that._createCell(config)\r\n }\r\n }\r\n return sliceCell\r\n },\r\n value: function(arg1, arg2) {\r\n var cell = this._cell;\r\n var fieldIndex = this._fieldIndex;\r\n var fistArgIsBoolean = true === arg1 || false === arg1;\r\n var field = !fistArgIsBoolean ? arg1 : NULL;\r\n var needCalculatedValue = fistArgIsBoolean && arg1 || arg2;\r\n if ((0, _type.isDefined)(field)) {\r\n var fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);\r\n fieldIndex = fieldPos.index;\r\n if (\"data\" !== fieldPos.area) {\r\n var path = this._getPath(fieldPos.area);\r\n var level = fieldIndex !== -1 && path.length - 2 - fieldIndex;\r\n return path[level] && path[level].value\r\n }\r\n }\r\n if (cell && cell.originalCell) {\r\n return needCalculatedValue ? cell[fieldIndex] : cell.originalCell[fieldIndex]\r\n }\r\n return NULL\r\n },\r\n isPostProcessed: function(field) {\r\n var fieldIndex = this._fieldIndex;\r\n if ((0, _type.isDefined)(field)) {\r\n var fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);\r\n fieldIndex = fieldPos.index;\r\n if (\"data\" !== fieldPos.area) {\r\n return false\r\n }\r\n }\r\n return !!(this._cell && this._cell.postProcessedFlags[fieldIndex])\r\n }\r\n});\r\n\r\nfunction getExpression(field) {\r\n var summaryDisplayMode = field.summaryDisplayMode;\r\n var crossGroupCalculation = field.allowCrossGroupCalculation;\r\n var expression = NULL;\r\n if ((0, _type.isFunction)(field.calculateSummaryValue)) {\r\n expression = field.calculateSummaryValue\r\n } else {\r\n if (summaryDisplayMode) {\r\n if (\"absoluteVariation\" === summaryDisplayMode) {\r\n expression = createAbsoluteVariationExp(crossGroupCalculation)\r\n } else {\r\n if (\"percentVariation\" === summaryDisplayMode) {\r\n expression = createPercentVariationExp(crossGroupCalculation)\r\n } else {\r\n expression = summaryDictionary[summaryDisplayMode]\r\n }\r\n }\r\n if (expression && !field.format && summaryDisplayMode.indexOf(\"percent\") !== -1) {\r\n (0, _uiPivot_grid.setFieldProperty)(field, \"format\", \"percent\")\r\n }\r\n }\r\n }\r\n return expression\r\n}\r\n\r\nfunction processDataCell(data, rowIndex, columnIndex, isRunningTotalCalculation) {\r\n var values = data.values[rowIndex][columnIndex] = data.values[rowIndex][columnIndex] || [];\r\n var originalCell = values.originalCell;\r\n if (!originalCell) {\r\n return\r\n }\r\n if (values.allowResetting || !isRunningTotalCalculation) {\r\n data.values[rowIndex][columnIndex] = originalCell.slice()\r\n }\r\n data.values[rowIndex][columnIndex].allowResetting = isRunningTotalCalculation\r\n}\r\n\r\nfunction applyDisplaySummaryMode(descriptions, data) {\r\n var expressions = [];\r\n var columnElements = [{\r\n index: data.grandTotalColumnIndex,\r\n children: data.columns\r\n }];\r\n var rowElements = [{\r\n index: data.grandTotalRowIndex,\r\n children: data.rows\r\n }];\r\n var valueFields = descriptions.values;\r\n var fieldsCache = createCache();\r\n data.values = data.values || [];\r\n (0, _uiPivot_grid.foreachTree)(columnElements, function(columnPath) {\r\n columnPath[0].isEmpty = []\r\n }, false);\r\n (0, _uiPivot_grid.foreachTree)(rowElements, function(rowPath) {\r\n var rowItem = rowPath[0];\r\n rowItem.isEmpty = [];\r\n data.values[rowItem.index] = data.values[rowItem.index] || [];\r\n (0, _uiPivot_grid.foreachTree)(columnElements, function(columnPath) {\r\n var columnItem = columnPath[0];\r\n var isEmptyCell;\r\n processDataCell(data, rowItem.index, columnItem.index, false);\r\n for (var i = 0; i < valueFields.length; i++) {\r\n var field = valueFields[i];\r\n var expression = expressions[i] = void 0 === expressions[i] ? getExpression(field) : expressions[i];\r\n isEmptyCell = false;\r\n if (expression) {\r\n var expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache);\r\n var cell = expressionArg.cell();\r\n var value = cell[i] = expression(expressionArg);\r\n cell.postProcessedFlags[i] = true;\r\n isEmptyCell = null === value || void 0 === value\r\n }\r\n if (void 0 === columnItem.isEmpty[i]) {\r\n columnItem.isEmpty[i] = true\r\n }\r\n if (void 0 === rowItem.isEmpty[i]) {\r\n rowItem.isEmpty[i] = true\r\n }\r\n if (!isEmptyCell) {\r\n rowItem.isEmpty[i] = columnItem.isEmpty[i] = false\r\n }\r\n }\r\n }, false)\r\n }, false);\r\n data.isEmptyGrandTotalRow = rowElements[0].isEmpty;\r\n data.isEmptyGrandTotalColumn = columnElements[0].isEmpty\r\n}\r\n\r\nfunction applyRunningTotal(descriptions, data) {\r\n var expressions = [];\r\n var columnElements = [{\r\n index: data.grandTotalColumnIndex,\r\n children: data.columns\r\n }];\r\n var rowElements = [{\r\n index: data.grandTotalRowIndex,\r\n children: data.rows\r\n }];\r\n var valueFields = descriptions.values;\r\n var fieldsCache = createCache();\r\n data.values = data.values || [];\r\n (0, _uiPivot_grid.foreachTree)(rowElements, function(rowPath) {\r\n var rowItem = rowPath[0];\r\n data.values[rowItem.index] = data.values[rowItem.index] || [];\r\n (0, _uiPivot_grid.foreachTree)(columnElements, function(columnPath) {\r\n var columnItem = columnPath[0];\r\n processDataCell(data, rowItem.index, columnItem.index, true);\r\n for (var i = 0; i < valueFields.length; i++) {\r\n var field = valueFields[i];\r\n var expression = expressions[i] = void 0 === expressions[i] ? createRunningTotalExpr(field) : expressions[i];\r\n if (expression) {\r\n var expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache);\r\n var cell = expressionArg.cell();\r\n cell[i] = expression(expressionArg);\r\n cell.postProcessedFlags[i] = true\r\n }\r\n }\r\n }, false)\r\n }, false)\r\n}\r\n\r\nfunction createMockSummaryCell(descriptions, fields, indices) {\r\n var summaryCell = new SummaryCell([], [], {}, descriptions, 0);\r\n summaryCell.value = function(fieldId) {\r\n if ((0, _type.isDefined)(fieldId)) {\r\n var index = (0, _uiPivot_grid.findField)(fields, fieldId);\r\n var field = fields[index];\r\n if (!indices[index] && field && !(0, _type.isDefined)(field.area)) {\r\n descriptions.values.push(field);\r\n indices[index] = true\r\n }\r\n }\r\n };\r\n summaryCell.grandTotal = function() {\r\n return this\r\n };\r\n summaryCell.children = function() {\r\n return []\r\n };\r\n return summaryCell\r\n}\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.data_area.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataArea = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.area_item\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PIVOTGRID_AREA_CLASS = \"dx-pivotgrid-area\";\r\nvar PIVOTGRID_AREA_DATA_CLASS = \"dx-pivotgrid-area-data\";\r\nvar PIVOTGRID_TOTAL_CLASS = \"dx-total\";\r\nvar PIVOTGRID_GRAND_TOTAL_CLASS = \"dx-grandtotal\";\r\nvar PIVOTGRID_ROW_TOTAL_CLASS = \"dx-row-total\";\r\nvar DataArea = _uiPivot_grid.AreaItem.inherit({\r\n _getAreaName: function() {\r\n return \"data\"\r\n },\r\n _createGroupElement: function() {\r\n return (0, _renderer.default)(\"
\").addClass(PIVOTGRID_AREA_CLASS).addClass(PIVOTGRID_AREA_DATA_CLASS)\r\n },\r\n _applyCustomStyles: function(options) {\r\n var cell = options.cell;\r\n var classArray = options.classArray;\r\n if (\"T\" === cell.rowType || \"T\" === cell.columnType) {\r\n classArray.push(PIVOTGRID_TOTAL_CLASS)\r\n }\r\n if (\"GT\" === cell.rowType || \"GT\" === cell.columnType) {\r\n classArray.push(PIVOTGRID_GRAND_TOTAL_CLASS)\r\n }\r\n if (\"T\" === cell.rowType || \"GT\" === cell.rowType) {\r\n classArray.push(PIVOTGRID_ROW_TOTAL_CLASS)\r\n }\r\n if (options.rowIndex === options.rowsCount - 1) {\r\n options.cssArray.push(\"border-bottom: 0px\")\r\n }\r\n this.callBase(options)\r\n },\r\n _moveFakeTable: function(scrollPos) {\r\n this._moveFakeTableHorizontally(scrollPos.x);\r\n this._moveFakeTableTop(scrollPos.y);\r\n this.callBase()\r\n },\r\n processScroll: function(useNativeScrolling, horizontalScroll, verticalScroll) {\r\n var direction = \"both\";\r\n if (horizontalScroll && !verticalScroll) {\r\n direction = \"horizontal\"\r\n } else {\r\n if (!horizontalScroll && verticalScroll) {\r\n direction = \"vertical\"\r\n }\r\n }\r\n this._groupElement.css(\"borderTopWidth\", 0).dxScrollable({\r\n useNative: !!useNativeScrolling,\r\n useSimulatedScrollbar: !useNativeScrolling,\r\n direction: direction,\r\n bounceEnabled: false,\r\n updateManually: true\r\n })\r\n },\r\n reset: function() {\r\n this.callBase();\r\n if (this._virtualContent) {\r\n this._virtualContent.parent().css(\"height\", \"auto\")\r\n }\r\n },\r\n setVirtualContentParams: function(params) {\r\n this.callBase(params);\r\n this._virtualContent.parent().css(\"height\", params.height);\r\n this._setTableCss({\r\n top: params.top,\r\n left: params.left\r\n })\r\n }\r\n});\r\nexports.DataArea = DataArea;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.headers_area.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.VerticalHeadersArea = exports.HorizontalHeadersArea = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.area_item\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar PIVOTGRID_AREA_CLASS = \"dx-pivotgrid-area\";\r\nvar PIVOTGRID_AREA_COLUMN_CLASS = \"dx-pivotgrid-horizontal-headers\";\r\nvar PIVOTGRID_AREA_ROW_CLASS = \"dx-pivotgrid-vertical-headers\";\r\nvar PIVOTGRID_TOTAL_CLASS = \"dx-total\";\r\nvar PIVOTGRID_GRAND_TOTAL_CLASS = \"dx-grandtotal\";\r\nvar PIVOTGRID_ROW_TOTAL_CLASS = \"dx-row-total\";\r\nvar PIVOTGRID_EXPANDED_CLASS = \"dx-pivotgrid-expanded\";\r\nvar PIVOTGRID_COLLAPSED_CLASS = \"dx-pivotgrid-collapsed\";\r\nvar PIVOTGRID_LAST_CELL_CLASS = \"dx-last-cell\";\r\nvar PIVOTGRID_VERTICAL_SCROLL_CLASS = \"dx-vertical-scroll\";\r\nvar PIVOTGRID_EXPAND_BORDER = \"dx-expand-border\";\r\n\r\nfunction getCellPath(tableElement, cell) {\r\n if (cell) {\r\n var data = tableElement.data().data;\r\n var rowIndex = cell.parentNode.rowIndex;\r\n var cellIndex = cell.cellIndex;\r\n return data[rowIndex] && data[rowIndex][cellIndex] && data[rowIndex][cellIndex].path\r\n }\r\n}\r\nvar HorizontalHeadersArea = _uiPivot_grid.AreaItem.inherit({\r\n _getAreaName: function() {\r\n return \"column\"\r\n },\r\n _getAreaClassName: function() {\r\n return PIVOTGRID_AREA_COLUMN_CLASS\r\n },\r\n _createGroupElement: function() {\r\n return (0, _renderer.default)(\"
\").addClass(this._getAreaClassName()).addClass(PIVOTGRID_AREA_CLASS)\r\n },\r\n _applyCustomStyles: function(options) {\r\n var cssArray = options.cssArray;\r\n var cell = options.cell;\r\n var rowsCount = options.rowsCount;\r\n var classArray = options.classArray;\r\n if (options.cellIndex === options.cellsCount - 1) {\r\n cssArray.push((options.rtlEnabled ? \"border-left:\" : \"border-right:\") + \"0px\")\r\n }\r\n if (cell.rowspan === rowsCount - options.rowIndex || options.rowIndex + 1 === rowsCount) {\r\n cssArray.push(\"border-bottom-width:0px\")\r\n }\r\n if (\"T\" === cell.type || \"GT\" === cell.type) {\r\n classArray.push(PIVOTGRID_ROW_TOTAL_CLASS)\r\n }\r\n if (\"T\" === options.cell.type) {\r\n classArray.push(PIVOTGRID_TOTAL_CLASS)\r\n }\r\n if (\"GT\" === options.cell.type) {\r\n classArray.push(PIVOTGRID_GRAND_TOTAL_CLASS)\r\n }\r\n if ((0, _type.isDefined)(cell.expanded)) {\r\n classArray.push(cell.expanded ? PIVOTGRID_EXPANDED_CLASS : PIVOTGRID_COLLAPSED_CLASS)\r\n }\r\n this.callBase(options)\r\n },\r\n _getMainElementMarkup: function() {\r\n return \"
\").appendTo((0, _renderer.default)(\"
\").addClass(\"dx-area-field-container\").append((0, _renderer.default)(\"\").addClass(\"dx-pivotgrid-fields-area-head\").append(row))\r\n },\r\n height: \"auto\",\r\n width: \"auto\",\r\n position: {\r\n at: \"left\",\r\n my: \"left\",\r\n of: button\r\n },\r\n dragEnabled: false,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 200\r\n }\r\n },\r\n shading: false,\r\n showTitle: false,\r\n closeOnOutsideClick: true,\r\n container: button.parent()\r\n }\r\n },\r\n _renderPopup: function(tableElement, row) {\r\n var that = this;\r\n var button = tableElement.find(\".dx-button\");\r\n var popupOptions = that._getPopupOptions(row, button);\r\n var FieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase(\"instance\");\r\n if (that._rowPopup) {\r\n that._rowPopup.$element().remove()\r\n }\r\n that._rowPopup = that.component._createComponent((0, _renderer.default)(DIV).appendTo(tableElement), _popup.default, popupOptions);\r\n that._rowPopup.$element().addClass(\"dx-fields-area-popup\");\r\n that._rowPopup.content().addClass(\"dx-pivotgrid-fields-container\");\r\n that._rowPopup.content().parent().attr(\"group\", \"row\");\r\n FieldChooserBase.subscribeToEvents(that._rowPopup.content());\r\n FieldChooserBase.renderSortable(that._rowPopup.content())\r\n },\r\n _shouldCreateButton: function() {\r\n return false\r\n },\r\n _renderTableContent: function(tableElement, data) {\r\n var that = this;\r\n var groupElement = this.groupElement();\r\n var isVisible = this.isVisible();\r\n var fieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase(\"instance\");\r\n var head = (0, _renderer.default)(\"\").addClass(\"dx-pivotgrid-fields-area-head\").appendTo(tableElement);\r\n var area = that._area;\r\n var row = (0, _renderer.default)(\"\");\r\n groupElement.toggleClass(\"dx-hidden\", !isVisible);\r\n tableElement.addClass(\"dx-area-field-container\");\r\n if (!isVisible) {\r\n return\r\n }(0, _iterator.each)(data, function(index, field) {\r\n if (field.area === area && false !== field.visible) {\r\n var td = (0, _renderer.default)(\"
\").append(fieldChooserBase.renderField(field, \"row\" === field.area));\r\n var indicators = td.find(\".dx-column-indicators\");\r\n if (indicators.length && that._shouldCreateButton()) {\r\n indicators.insertAfter(indicators.next())\r\n }\r\n td.appendTo(row);\r\n renderGroupConnector(field, data[index + 1], data[index - 1], td)\r\n }\r\n });\r\n if (!row.children().length) {\r\n (0, _renderer.default)(\"\").append((0, _renderer.default)(DIV).addClass(\"dx-empty-area-text\").text(this.option(\"fieldPanel.texts.\" + area + \"FieldArea\"))).appendTo(row)\r\n }\r\n if (that._shouldCreateButton()) {\r\n that._renderButton(head);\r\n that._renderPopup(tableElement, row)\r\n } else {\r\n head.append(row)\r\n }\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this.groupElement().css(\"marginTop\", 0)\r\n },\r\n _renderVirtualContent: _common.noop\r\n});\r\nexports.FieldsArea = FieldsArea;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.sortable.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _index = require(\"../../events/utils/index\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _dom_component = _interopRequireDefault(require(\"../../core/dom_component\"));\r\nvar _drag = require(\"../../events/drag\");\r\nvar _swatch_container = _interopRequireDefault(require(\"../widget/swatch_container\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar getSwatchContainer = _swatch_container.default.getSwatchContainer;\r\nvar SORTABLE_NAMESPACE = \"dxSortable\";\r\nvar SORTABLE_CLASS = \"dx-sortable-old\";\r\nvar SCROLL_STEP = 2;\r\nvar START_SCROLL_OFFSET = 20;\r\nvar SCROLL_TIMEOUT = 10;\r\n\r\nfunction elementHasPoint(element, x, y) {\r\n var $item = (0, _renderer.default)(element);\r\n var offset = $item.offset();\r\n if (x >= offset.left && x <= offset.left + $item.outerWidth(true)) {\r\n if (y >= offset.top && y <= offset.top + $item.outerHeight(true)) {\r\n return true\r\n }\r\n }\r\n}\r\n\r\nfunction checkHorizontalPosition(position, itemOffset, rtl) {\r\n if ((0, _type.isDefined)(itemOffset.posHorizontal)) {\r\n return rtl ? position > itemOffset.posHorizontal : position < itemOffset.posHorizontal\r\n } else {\r\n return true\r\n }\r\n}\r\n\r\nfunction getIndex($items, $item) {\r\n var index = -1;\r\n var itemElement = $item.get(0);\r\n (0, _iterator.each)($items, function(elementIndex, element) {\r\n var $element = (0, _renderer.default)(element);\r\n if (!($element.attr(\"item-group\") && $element.attr(\"item-group\") === $items.eq(elementIndex - 1).attr(\"item-group\"))) {\r\n index++\r\n }\r\n if (element === itemElement) {\r\n return false\r\n }\r\n });\r\n return index === $items.length ? -1 : index\r\n}\r\n\r\nfunction getTargetGroup(e, $groups) {\r\n var result;\r\n (0, _iterator.each)($groups, function() {\r\n if (elementHasPoint(this, e.pageX, e.pageY)) {\r\n result = (0, _renderer.default)(this)\r\n }\r\n });\r\n return result\r\n}\r\n\r\nfunction getItemsOffset($elements, isVertical, $itemsContainer) {\r\n var result = [];\r\n var $item = [];\r\n for (var i = 0; i < $elements.length; i += $item.length) {\r\n $item = $elements.eq(i);\r\n if ($item.attr(\"item-group\")) {\r\n $item = $itemsContainer.find(\"[item-group='\" + $item.attr(\"item-group\") + \"']\")\r\n }\r\n if ($item.is(\":visible\")) {\r\n var offset = {\r\n item: $item,\r\n index: result.length,\r\n posHorizontal: isVertical ? void 0 : ($item.last().outerWidth(true) + $item.last().offset().left + $item.offset().left) / 2\r\n };\r\n if (isVertical) {\r\n offset.posVertical = ($item.last().offset().top + $item.offset().top + $item.last().outerHeight(true)) / 2\r\n } else {\r\n offset.posVertical = $item.last().outerHeight(true) + $item.last().offset().top\r\n }\r\n result.push(offset)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction getScrollWrapper(scrollable) {\r\n var timeout = null;\r\n var scrollTop = scrollable.scrollTop();\r\n var $element = scrollable.$element();\r\n var top = $element.offset().top;\r\n var height = $element.height();\r\n var delta = 0;\r\n\r\n function onScroll(e) {\r\n scrollTop = e.scrollOffset.top\r\n }\r\n scrollable.on(\"scroll\", onScroll);\r\n\r\n function move() {\r\n stop();\r\n scrollable.scrollTo(scrollTop += delta);\r\n timeout = setTimeout(move, SCROLL_TIMEOUT)\r\n }\r\n\r\n function stop() {\r\n clearTimeout(timeout)\r\n }\r\n\r\n function moveIfNeed(event) {\r\n if (event.pageY <= top + START_SCROLL_OFFSET) {\r\n delta = -SCROLL_STEP\r\n } else {\r\n if (event.pageY >= top + height - START_SCROLL_OFFSET) {\r\n delta = SCROLL_STEP\r\n } else {\r\n delta = 0;\r\n stop();\r\n return\r\n }\r\n }\r\n move()\r\n }\r\n return {\r\n moveIfNeed: moveIfNeed,\r\n element: function() {\r\n return $element\r\n },\r\n dispose: function() {\r\n stop();\r\n scrollable.off(\"scroll\", onScroll)\r\n }\r\n }\r\n}\r\nvar Sortable = _dom_component.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n onChanged: null,\r\n onDragging: null,\r\n itemRender: null,\r\n groupSelector: null,\r\n itemSelector: \".dx-sort-item\",\r\n itemContainerSelector: \".dx-sortable-old\",\r\n sourceClass: \"dx-drag-source\",\r\n dragClass: \"dx-drag\",\r\n targetClass: \"dx-drag-target\",\r\n direction: \"vertical\",\r\n allowDragging: true,\r\n groupFilter: null,\r\n useIndicator: false\r\n })\r\n },\r\n _renderItem: function($sourceItem, target) {\r\n var itemRender = this.option(\"itemRender\");\r\n var $item;\r\n if (itemRender) {\r\n $item = itemRender($sourceItem, target)\r\n } else {\r\n $item = $sourceItem.clone();\r\n $item.css({\r\n width: $sourceItem.width(),\r\n height: $sourceItem.height()\r\n })\r\n }\r\n return $item\r\n },\r\n _renderIndicator: function($item, isVertical, $targetGroup, isLast) {\r\n var height = $item.outerHeight(true);\r\n var width = $item.outerWidth(true);\r\n var top = $item.offset().top - $targetGroup.offset().top;\r\n var left = $item.offset().left - $targetGroup.offset().left;\r\n this._indicator.css({\r\n position: \"absolute\",\r\n top: isLast && isVertical ? top + height : top,\r\n left: isLast && !isVertical ? left + width : left\r\n }).toggleClass(\"dx-position-indicator-horizontal\", !isVertical).toggleClass(\"dx-position-indicator-vertical\", !!isVertical).toggleClass(\"dx-position-indicator-last\", !!isLast).height(\"\").width(\"\").appendTo($targetGroup);\r\n isVertical ? this._indicator.width(width) : this._indicator.height(height)\r\n },\r\n _renderDraggable: function($sourceItem) {\r\n this._$draggable && this._$draggable.remove();\r\n this._$draggable = this._renderItem($sourceItem, \"drag\").addClass(this.option(\"dragClass\")).appendTo(getSwatchContainer($sourceItem)).css({\r\n zIndex: 1e6,\r\n position: \"absolute\"\r\n })\r\n },\r\n _detachEventHandlers: function() {\r\n var dragEventsString = [_drag.move, _drag.start, _drag.end, _drag.enter, _drag.leave, _drag.drop].join(\" \");\r\n _events_engine.default.off(this._getEventListener(), (0, _index.addNamespace)(dragEventsString, SORTABLE_NAMESPACE))\r\n },\r\n _getItemOffset: function(isVertical, itemsOffset, e) {\r\n for (var i = 0; i < itemsOffset.length; i++) {\r\n var shouldInsert = void 0;\r\n var sameLine = e.pageY < itemsOffset[i].posVertical;\r\n if (isVertical) {\r\n shouldInsert = sameLine\r\n } else {\r\n if (sameLine) {\r\n shouldInsert = checkHorizontalPosition(e.pageX, itemsOffset[i], this.option(\"rtlEnabled\"));\r\n if (!shouldInsert && itemsOffset[i + 1] && itemsOffset[i + 1].posVertical > itemsOffset[i].posVertical) {\r\n shouldInsert = true\r\n }\r\n }\r\n }\r\n if (shouldInsert) {\r\n return itemsOffset[i]\r\n }\r\n }\r\n },\r\n _getEventListener: function() {\r\n var groupSelector = this.option(\"groupSelector\");\r\n var element = this.$element();\r\n return groupSelector ? element.find(groupSelector) : element\r\n },\r\n _attachEventHandlers: function() {\r\n var that = this;\r\n var itemSelector = that.option(\"itemSelector\");\r\n var itemContainerSelector = that.option(\"itemContainerSelector\");\r\n var groupSelector = that.option(\"groupSelector\");\r\n var sourceClass = that.option(\"sourceClass\");\r\n var targetClass = that.option(\"targetClass\");\r\n var onDragging = that.option(\"onDragging\");\r\n var groupFilter = that.option(\"groupFilter\");\r\n var $sourceItem;\r\n var sourceIndex;\r\n var $targetItem;\r\n var $targetGroup;\r\n var startPositions;\r\n var sourceGroup;\r\n var element = that.$element();\r\n var $groups;\r\n var scrollWrapper = null;\r\n var targetIndex = -1;\r\n var setStartPositions = function() {\r\n startPositions = [];\r\n (0, _iterator.each)($sourceItem, function(_, item) {\r\n startPositions.push((0, _renderer.default)(item).offset())\r\n })\r\n };\r\n var createGroups = function() {\r\n if (!groupSelector) {\r\n return element\r\n } else {\r\n return groupFilter ? (0, _renderer.default)(groupSelector).filter(groupFilter) : element.find(groupSelector)\r\n }\r\n };\r\n var disposeScrollWrapper = function() {\r\n scrollWrapper && scrollWrapper.dispose();\r\n scrollWrapper = null\r\n };\r\n var invokeOnDraggingEvent = function() {\r\n var draggingArgs = {\r\n sourceGroup: sourceGroup,\r\n sourceIndex: sourceIndex,\r\n sourceElement: $sourceItem,\r\n targetGroup: $targetGroup.attr(\"group\"),\r\n targetIndex: $targetGroup.find(itemSelector).index($targetItem)\r\n };\r\n onDragging && onDragging(draggingArgs);\r\n if (draggingArgs.cancel) {\r\n $targetGroup = void 0\r\n }\r\n };\r\n that._detachEventHandlers();\r\n if (that.option(\"allowDragging\")) {\r\n var $eventListener = that._getEventListener();\r\n _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.start, SORTABLE_NAMESPACE), itemSelector, function(e) {\r\n $sourceItem = (0, _renderer.default)(e.currentTarget);\r\n var $sourceGroup = $sourceItem.closest(groupSelector);\r\n sourceGroup = $sourceGroup.attr(\"group\");\r\n sourceIndex = getIndex((groupSelector ? $sourceGroup : element).find(itemSelector), $sourceItem);\r\n if ($sourceItem.attr(\"item-group\")) {\r\n $sourceItem = $sourceGroup.find(\"[item-group='\" + $sourceItem.attr(\"item-group\") + \"']\")\r\n }\r\n that._renderDraggable($sourceItem);\r\n $targetItem = that._renderItem($sourceItem, \"target\").addClass(targetClass);\r\n $sourceItem.addClass(sourceClass);\r\n setStartPositions();\r\n $groups = createGroups();\r\n that._indicator = (0, _renderer.default)(\"
\").addClass(\"dx-position-indicator\")\r\n });\r\n _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.move, SORTABLE_NAMESPACE), function(e) {\r\n var $item;\r\n var $lastItem;\r\n var $prevItem;\r\n if (!$sourceItem) {\r\n return\r\n }\r\n targetIndex = -1;\r\n that._indicator.detach();\r\n (0, _iterator.each)(that._$draggable, function(index, draggableElement) {\r\n (0, _renderer.default)(draggableElement).css({\r\n top: startPositions[index].top + e.offset.y,\r\n left: startPositions[index].left + e.offset.x\r\n })\r\n });\r\n $targetGroup && $targetGroup.removeClass(targetClass);\r\n $targetGroup = getTargetGroup(e, $groups);\r\n $targetGroup && invokeOnDraggingEvent();\r\n if ($targetGroup && scrollWrapper && $targetGroup.get(0) !== scrollWrapper.element().get(0)) {\r\n disposeScrollWrapper()\r\n }\r\n scrollWrapper && scrollWrapper.moveIfNeed(e);\r\n if (!$targetGroup) {\r\n $targetItem.detach();\r\n return\r\n }\r\n if (!scrollWrapper && $targetGroup.attr(\"allow-scrolling\")) {\r\n scrollWrapper = getScrollWrapper($targetGroup.dxScrollable(\"instance\"))\r\n }\r\n $targetGroup.addClass(targetClass);\r\n var $itemContainer = $targetGroup.find(itemContainerSelector);\r\n var $items = $itemContainer.find(itemSelector);\r\n var targetSortable = $targetGroup.closest(\".\" + SORTABLE_CLASS).data(\"dxSortableOld\");\r\n var useIndicator = targetSortable.option(\"useIndicator\");\r\n var isVertical = \"vertical\" === (targetSortable || that).option(\"direction\");\r\n var itemsOffset = getItemsOffset($items, isVertical, $itemContainer);\r\n var itemOffset = that._getItemOffset(isVertical, itemsOffset, e);\r\n if (itemOffset) {\r\n $item = itemOffset.item;\r\n $prevItem = itemsOffset[itemOffset.index - 1] && itemsOffset[itemOffset.index - 1].item;\r\n if ($item.hasClass(sourceClass) || $prevItem && $prevItem.hasClass(sourceClass) && $prevItem.is(\":visible\")) {\r\n $targetItem.detach();\r\n return\r\n }\r\n targetIndex = itemOffset.index;\r\n if (!useIndicator) {\r\n $targetItem.insertBefore($item);\r\n return\r\n }\r\n var isAnotherGroup = $targetGroup.attr(\"group\") !== sourceGroup;\r\n var isSameIndex = targetIndex === sourceIndex;\r\n var isNextIndex = targetIndex === sourceIndex + 1;\r\n if (isAnotherGroup) {\r\n that._renderIndicator($item, isVertical, $targetGroup, that.option(\"rtlEnabled\") && !isVertical);\r\n return\r\n }\r\n if (!isSameIndex && !isNextIndex) {\r\n that._renderIndicator($item, isVertical, $targetGroup, that.option(\"rtlEnabled\") && !isVertical)\r\n }\r\n } else {\r\n $lastItem = $items.last();\r\n if ($lastItem.is(\":visible\") && $lastItem.hasClass(sourceClass)) {\r\n return\r\n }\r\n if ($itemContainer.length) {\r\n targetIndex = itemsOffset.length ? itemsOffset[itemsOffset.length - 1].index + 1 : 0\r\n }\r\n if (useIndicator) {\r\n $items.length && that._renderIndicator($lastItem, isVertical, $targetGroup, !that.option(\"rtlEnabled\") || isVertical)\r\n } else {\r\n $targetItem.appendTo($itemContainer)\r\n }\r\n }\r\n });\r\n _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.end, SORTABLE_NAMESPACE), function() {\r\n disposeScrollWrapper();\r\n if (!$sourceItem) {\r\n return\r\n }\r\n var onChanged = that.option(\"onChanged\");\r\n var changedArgs = {\r\n sourceIndex: sourceIndex,\r\n sourceElement: $sourceItem,\r\n sourceGroup: sourceGroup,\r\n targetIndex: targetIndex,\r\n removeSourceElement: true,\r\n removeTargetElement: false,\r\n removeSourceClass: true\r\n };\r\n if ($targetGroup) {\r\n $targetGroup.removeClass(targetClass);\r\n changedArgs.targetGroup = $targetGroup.attr(\"group\");\r\n if (sourceGroup !== changedArgs.targetGroup || targetIndex > -1) {\r\n onChanged && onChanged(changedArgs);\r\n changedArgs.removeSourceElement && $sourceItem.remove()\r\n }\r\n }\r\n that._indicator.detach();\r\n changedArgs.removeSourceClass && $sourceItem.removeClass(sourceClass);\r\n $sourceItem = null;\r\n that._$draggable.remove();\r\n that._$draggable = null;\r\n changedArgs.removeTargetElement && $targetItem.remove();\r\n $targetItem.removeClass(targetClass);\r\n $targetItem = null\r\n })\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._attachEventHandlers()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(SORTABLE_CLASS)\r\n },\r\n _dispose: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n that._$draggable && that._$draggable.detach();\r\n that._indicator && that._indicator.detach()\r\n },\r\n _optionChanged: function(args) {\r\n var that = this;\r\n switch (args.name) {\r\n case \"onDragging\":\r\n case \"onChanged\":\r\n case \"itemRender\":\r\n case \"groupSelector\":\r\n case \"itemSelector\":\r\n case \"itemContainerSelector\":\r\n case \"sourceClass\":\r\n case \"targetClass\":\r\n case \"dragClass\":\r\n case \"allowDragging\":\r\n case \"groupFilter\":\r\n case \"useIndicator\":\r\n that._attachEventHandlers();\r\n break;\r\n case \"direction\":\r\n break;\r\n default:\r\n that.callBase(args)\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxSortableOld\", Sortable);\r\nvar _default = Sortable;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.export.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.DataProvider = exports.ExportMixin = void 0;\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _position = require(\"../../core/utils/position\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _number = _interopRequireDefault(require(\"../../localization/number\"));\r\nvar _exporter = require(\"../../exporter\");\r\nvar _uiGrid_core = _interopRequireDefault(require(\"../grid_core/ui.grid_core.export_mixin\"));\r\nvar _deferred = require(\"../../core/utils/deferred\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _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 ownKeys(object, enumerableOnly) {\r\n var keys = Object.keys(object);\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(object);\r\n if (enumerableOnly) {\r\n symbols = symbols.filter(function(sym) {\r\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\r\n })\r\n }\r\n keys.push.apply(keys, symbols)\r\n }\r\n return keys\r\n}\r\n\r\nfunction _objectSpread(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = null != arguments[i] ? arguments[i] : {};\r\n if (i % 2) {\r\n ownKeys(Object(source), true).forEach(function(key) {\r\n _defineProperty(target, key, source[key])\r\n })\r\n } else {\r\n if (Object.getOwnPropertyDescriptors) {\r\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\r\n } else {\r\n ownKeys(Object(source)).forEach(function(key) {\r\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\r\n })\r\n }\r\n }\r\n }\r\n return target\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar DEFAULT_DATA_TYPE = \"string\";\r\nvar DEFAUL_COLUMN_WIDTH = 100;\r\nvar ExportMixin = (0, _extend.extend)({}, _uiGrid_core.default, {\r\n exportToExcel: function() {\r\n var that = this;\r\n (0, _exporter.export)(that.getDataProvider(), {\r\n fileName: that.option(\"export.fileName\"),\r\n proxyUrl: that.option(\"export.proxyUrl\"),\r\n format: \"EXCEL\",\r\n rtlEnabled: that.option(\"rtlEnabled\"),\r\n ignoreErrors: that.option(\"export.ignoreExcelErrors\"),\r\n exportingAction: that._actions.onExporting,\r\n exportedAction: that._actions.onExported,\r\n fileSavingAction: that._actions.onFileSaving\r\n }, _exporter.excel.getData)\r\n },\r\n _getLength: function(items) {\r\n var i;\r\n var itemCount = items[0].length;\r\n var cellCount = 0;\r\n for (i = 0; i < itemCount; i++) {\r\n cellCount += items[0][i].colspan || 1\r\n }\r\n return cellCount\r\n },\r\n _correctCellsInfoItemLengths: function(cellsInfo, expectedLength) {\r\n for (var i = 0; i < cellsInfo.length; i++) {\r\n while (cellsInfo[i].length < expectedLength) {\r\n cellsInfo[i].push({})\r\n }\r\n }\r\n return cellsInfo\r\n },\r\n _calculateCellInfoItemLength: function(columnsRow) {\r\n var result = 0;\r\n for (var columnIndex = 0; columnIndex < columnsRow.length; columnIndex++) {\r\n result += (0, _type.isDefined)(columnsRow[columnIndex].colspan) ? columnsRow[columnIndex].colspan : 1\r\n }\r\n return result\r\n },\r\n _getAllItems: function(columnsInfo, rowsInfoItems, cellsInfo) {\r\n var cellIndex;\r\n var rowIndex;\r\n var correctedCellsInfo = cellsInfo;\r\n var rowsLength = this._getLength(rowsInfoItems);\r\n var headerRowsCount = columnsInfo.length;\r\n if (columnsInfo.length > 0 && columnsInfo[0].length > 0 && cellsInfo.length > 0 && 0 === cellsInfo[0].length) {\r\n var cellInfoItemLength = this._calculateCellInfoItemLength(columnsInfo[0]);\r\n if (cellInfoItemLength > 0) {\r\n correctedCellsInfo = this._correctCellsInfoItemLengths(cellsInfo, cellInfoItemLength)\r\n }\r\n }\r\n var sourceItems = columnsInfo.concat(correctedCellsInfo);\r\n for (rowIndex = 0; rowIndex < rowsInfoItems.length; rowIndex++) {\r\n for (cellIndex = rowsInfoItems[rowIndex].length - 1; cellIndex >= 0; cellIndex--) {\r\n if (!(0, _type.isDefined)(sourceItems[rowIndex + headerRowsCount])) {\r\n sourceItems[rowIndex + headerRowsCount] = []\r\n }\r\n sourceItems[rowIndex + headerRowsCount].splice(0, 0, (0, _extend.extend)({}, rowsInfoItems[rowIndex][cellIndex]))\r\n }\r\n }\r\n sourceItems[0].splice(0, 0, (0, _extend.extend)({}, this._getEmptyCell(), {\r\n alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled),\r\n colspan: rowsLength,\r\n rowspan: headerRowsCount\r\n }));\r\n return this._prepareItems(sourceItems)\r\n },\r\n getDataProvider: function() {\r\n var that = this;\r\n var dataController = this._dataController;\r\n var items = new _deferred.Deferred;\r\n dataController.beginLoading();\r\n setTimeout(function() {\r\n var columnsInfo = (0, _extend.extend)(true, [], dataController.getColumnsInfo(true));\r\n var rowsInfoItems = (0, _extend.extend)(true, [], dataController.getRowsInfo(true));\r\n var cellsInfo = dataController.getCellsInfo(true);\r\n items.resolve(that._getAllItems(columnsInfo, rowsInfoItems, cellsInfo));\r\n dataController.endLoading()\r\n });\r\n return new DataProvider({\r\n items: items,\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n dataFields: this.getDataSource().getAreaFields(\"data\"),\r\n customizeExcelCell: this.option(\"export.customizeExcelCell\"),\r\n rowsArea: this._rowsArea,\r\n columnsArea: this._columnsArea\r\n })\r\n }\r\n});\r\nexports.ExportMixin = ExportMixin;\r\nvar DataProvider = _class.default.inherit({\r\n ctor: function(options) {\r\n this._options = options\r\n },\r\n ready: function() {\r\n var options = this._options;\r\n return (0, _deferred.when)(options.items).done(function(items) {\r\n var headerSize = items[0][0].rowspan;\r\n var columns = items[headerSize - 1];\r\n (0, _iterator.each)(columns, function(columnIndex, column) {\r\n column.width = DEFAUL_COLUMN_WIDTH\r\n });\r\n options.columns = columns;\r\n options.items = items\r\n })\r\n },\r\n getColumns: function() {\r\n return this._options.columns\r\n },\r\n getColumnsWidths: function() {\r\n var colsArea = this._options.columnsArea;\r\n var rowsArea = this._options.rowsArea;\r\n var columns = this._options.columns;\r\n var useDefaultWidth = !(0, _window.hasWindow)() || \"virtual\" === colsArea.option(\"scrolling.mode\") || colsArea.element().is(\":hidden\");\r\n return useDefaultWidth ? columns.map(function(_) {\r\n return DEFAUL_COLUMN_WIDTH\r\n }) : rowsArea.getColumnsWidth().concat(colsArea.getColumnsWidth())\r\n },\r\n getRowsCount: function() {\r\n return this._options.items.length\r\n },\r\n getGroupLevel: function() {\r\n return 0\r\n },\r\n getCellMerging: function(rowIndex, cellIndex) {\r\n var items = this._options.items;\r\n var item = items[rowIndex] && items[rowIndex][cellIndex];\r\n return item ? {\r\n colspan: item.colspan - 1,\r\n rowspan: item.rowspan - 1\r\n } : {\r\n colspan: 0,\r\n rowspan: 0\r\n }\r\n },\r\n getFrozenArea: function() {\r\n return {\r\n x: this.getRowAreaColCount(),\r\n y: this.getColumnAreaRowCount()\r\n }\r\n },\r\n getCellType: function(rowIndex, cellIndex) {\r\n var style = this.getStyles()[this.getStyleId(rowIndex, cellIndex)];\r\n return style && style.dataType || \"string\"\r\n },\r\n getCellData: function(rowIndex, cellIndex, isExcelJS) {\r\n var result = {};\r\n var items = this._options.items;\r\n var item = items[rowIndex] && items[rowIndex][cellIndex] || {};\r\n if (isExcelJS) {\r\n result.cellSourceData = item;\r\n var areaName = this._tryGetAreaName(item, rowIndex, cellIndex);\r\n if (areaName) {\r\n result.cellSourceData.area = areaName\r\n }\r\n result.cellSourceData.rowIndex = rowIndex;\r\n result.cellSourceData.columnIndex = cellIndex\r\n }\r\n if (\"string\" === this.getCellType(rowIndex, cellIndex)) {\r\n result.value = item.text\r\n } else {\r\n result.value = item.value\r\n }\r\n if (result.cellSourceData && result.cellSourceData.isWhiteSpace) {\r\n result.value = \"\"\r\n }\r\n return result\r\n },\r\n _tryGetAreaName: function(item, rowIndex, cellIndex) {\r\n if (this.isColumnAreaCell(rowIndex, cellIndex)) {\r\n return \"column\"\r\n } else {\r\n if (this.isRowAreaCell(rowIndex, cellIndex)) {\r\n return \"row\"\r\n } else {\r\n if ((0, _type.isDefined)(item.dataIndex)) {\r\n return \"data\"\r\n }\r\n }\r\n }\r\n },\r\n isRowAreaCell: function(rowIndex, cellIndex) {\r\n return rowIndex >= this.getColumnAreaRowCount() && cellIndex < this.getRowAreaColCount()\r\n },\r\n isColumnAreaCell: function(rowIndex, cellIndex) {\r\n return cellIndex >= this.getRowAreaColCount() && rowIndex < this.getColumnAreaRowCount()\r\n },\r\n getColumnAreaRowCount: function() {\r\n return this._options.items[0][0].rowspan\r\n },\r\n getRowAreaColCount: function() {\r\n return this._options.items[0][0].colspan\r\n },\r\n getHeaderStyles: function() {\r\n return [{\r\n alignment: \"center\",\r\n dataType: \"string\"\r\n }, {\r\n alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled),\r\n dataType: \"string\"\r\n }]\r\n },\r\n getDataFieldStyles: function() {\r\n var _this = this;\r\n var dataFields = this._options.dataFields;\r\n var dataItemStyle = {\r\n alignment: this._options.rtlEnabled ? \"left\" : \"right\"\r\n };\r\n var dataFieldStyles = [];\r\n if (dataFields.length) {\r\n dataFields.forEach(function(dataField) {\r\n dataFieldStyles.push(_objectSpread(_objectSpread({}, dataItemStyle), {\r\n format: dataField.format,\r\n dataType: _this.getCellDataType(dataField)\r\n }))\r\n });\r\n return dataFieldStyles\r\n }\r\n return [dataItemStyle]\r\n },\r\n getStyles: function() {\r\n if (this._styles) {\r\n return this._styles\r\n }\r\n this._styles = [].concat(_toConsumableArray(this.getHeaderStyles()), _toConsumableArray(this.getDataFieldStyles()));\r\n return this._styles\r\n },\r\n getCellDataType: function(field) {\r\n if (field && field.customizeText) {\r\n return \"string\"\r\n }\r\n if (field.dataType) {\r\n return field.dataType\r\n }\r\n if (field.format) {\r\n if (1 === _number.default.parse(_format_helper.default.format(1, field.format))) {\r\n return \"number\"\r\n }\r\n if (_format_helper.default.format(new Date, field.format)) {\r\n return \"date\"\r\n }\r\n }\r\n return DEFAULT_DATA_TYPE\r\n },\r\n getStyleId: function(rowIndex, cellIndex) {\r\n var items = this._options.items;\r\n var item = items[rowIndex] && items[rowIndex][cellIndex] || {};\r\n if (0 === cellIndex && 0 === rowIndex || this.isColumnAreaCell(rowIndex, cellIndex)) {\r\n return 0\r\n } else {\r\n if (this.isRowAreaCell(rowIndex, cellIndex)) {\r\n return 1\r\n }\r\n }\r\n return this.getHeaderStyles().length + (item.dataIndex || 0)\r\n },\r\n hasCustomizeExcelCell: function() {\r\n return (0, _type.isDefined)(this._options.customizeExcelCell)\r\n },\r\n customizeExcelCell: function(e) {\r\n if (this._options.customizeExcelCell) {\r\n this._options.customizeExcelCell(e)\r\n }\r\n }\r\n});\r\nexports.DataProvider = DataProvider;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.chart_integration.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar FORMAT_DICTIONARY = {\r\n number: \"numeric\",\r\n date: \"datetime\"\r\n};\r\nvar UNBIND_KEY = \"dxPivotGridUnbinding\";\r\n\r\nfunction getFormattedValue(path, fields) {\r\n var value = [];\r\n var lastFieldIndex = fields.length - 1;\r\n (0, _iterator.each)(path, function(i, item) {\r\n value.push(item.text || (0, _uiPivot_grid.formatValue)(item.value, fields[lastFieldIndex - i]))\r\n });\r\n return value.reverse()\r\n}\r\n\r\nfunction getExpandedLevel(node) {\r\n var level = 0;\r\n (0, _uiPivot_grid.foreachTree)(node, function(members) {\r\n level = Math.max(level, members.length - 1)\r\n });\r\n return level\r\n}\r\n\r\nfunction processDataCell(processCellArgs, processCell) {\r\n var chartDataItem = processCellArgs.chartDataItem;\r\n var processedCell = processCell && processCell(processCellArgs);\r\n if (processedCell) {\r\n chartDataItem = (0, _extend.extend)({}, chartDataItem, processedCell.chartDataItem);\r\n processedCell = (0, _extend.extend)({}, processCellArgs, processedCell, {\r\n chartDataItem: chartDataItem\r\n });\r\n return processedCell\r\n }\r\n return processCellArgs\r\n}\r\n\r\nfunction createChartDataSource(pivotGridDataSource, mapOptions, axisDictionary) {\r\n var data = pivotGridDataSource.getData();\r\n var dataSource = [];\r\n var dataFields = pivotGridDataSource.getAreaFields(\"data\");\r\n var rowFields = pivotGridDataSource.getAreaFields(\"row\");\r\n var columnFields = pivotGridDataSource.getAreaFields(\"column\");\r\n var columnElements = [{\r\n index: data.grandTotalColumnIndex,\r\n children: data.columns\r\n }];\r\n var rowElements = [{\r\n index: data.grandTotalRowIndex,\r\n children: data.rows\r\n }];\r\n var rowLevel = getExpandedLevel(rowElements);\r\n var columnLevel = getExpandedLevel(columnElements);\r\n var measureIndex;\r\n var dataField;\r\n var rowMemberIndex;\r\n var rowVisibility;\r\n var rowPathFormatted;\r\n var rowPath;\r\n var columnMemberIndex;\r\n var columnVisibility;\r\n var columnPath;\r\n var columnPathFormatted;\r\n\r\n function createDataItem() {\r\n var dataCell = (data.values[rowMemberIndex] || [])[columnMemberIndex] || [];\r\n var value = dataCell[measureIndex];\r\n var axis;\r\n var processCellArgs = {\r\n rowPath: rowPath,\r\n maxRowLevel: rowLevel,\r\n rowPathFormatted: rowPathFormatted,\r\n rowFields: rowFields,\r\n columnPathFormatted: columnPathFormatted,\r\n maxColumnLevel: columnLevel,\r\n columnPath: columnPath,\r\n columnFields: columnFields,\r\n dataFields: dataFields,\r\n dataIndex: measureIndex,\r\n dataValues: dataCell,\r\n visible: columnVisibility && rowVisibility\r\n };\r\n var seriesName = (mapOptions.inverted ? columnPathFormatted : rowPathFormatted).join(\" - \");\r\n var argument = (mapOptions.inverted ? rowPathFormatted : columnPathFormatted).join(\"/\");\r\n if (dataFields.length > 1) {\r\n if (\"args\" === mapOptions.putDataFieldsInto || \"both\" === mapOptions.putDataFieldsInto) {\r\n argument += \" | \" + dataField.caption\r\n }\r\n if (\"args\" !== mapOptions.putDataFieldsInto) {\r\n seriesName += \" | \" + dataField.caption;\r\n if (\"singleAxis\" !== mapOptions.dataFieldsDisplayMode) {\r\n axis = dataField.caption\r\n }\r\n }\r\n }\r\n processCellArgs.chartDataItem = {\r\n val: void 0 === value ? null : value,\r\n series: seriesName,\r\n arg: argument\r\n };\r\n processCellArgs = processDataCell(processCellArgs, mapOptions.processCell);\r\n if (processCellArgs.visible) {\r\n axisDictionary[processCellArgs.chartDataItem.series] = axisDictionary[processCellArgs.chartDataItem.series] || axis;\r\n dataSource.push(processCellArgs.chartDataItem)\r\n }\r\n }\r\n\r\n function foreachRowColumn(callBack) {\r\n (0, _uiPivot_grid.foreachTree)(rowElements, function(rowMembers) {\r\n rowMemberIndex = rowMembers[0].index;\r\n rowMembers = rowMembers.slice(0, rowMembers.length - 1);\r\n rowVisibility = rowLevel === rowMembers.length;\r\n rowPath = (0, _uiPivot_grid.createPath)(rowMembers);\r\n rowPathFormatted = getFormattedValue(rowMembers, rowFields);\r\n if (0 === rowPath.length) {\r\n rowPathFormatted = [mapOptions.grandTotalText]\r\n }(0, _uiPivot_grid.foreachTree)(columnElements, function(columnMembers) {\r\n columnMemberIndex = columnMembers[0].index;\r\n columnMembers = columnMembers.slice(0, columnMembers.length - 1);\r\n columnVisibility = columnLevel === columnMembers.length;\r\n columnPath = (0, _uiPivot_grid.createPath)(columnMembers);\r\n columnPathFormatted = getFormattedValue(columnMembers, columnFields);\r\n if (0 === columnPath.length) {\r\n columnPathFormatted = [mapOptions.grandTotalText]\r\n }\r\n callBack()\r\n })\r\n })\r\n }\r\n\r\n function foreachDataField(callback) {\r\n (0, _iterator.each)(dataFields, function(index, field) {\r\n dataField = field;\r\n measureIndex = index;\r\n callback()\r\n })\r\n }\r\n if (false === mapOptions.alternateDataFields) {\r\n foreachDataField(function() {\r\n foreachRowColumn(createDataItem)\r\n })\r\n } else {\r\n foreachRowColumn(function() {\r\n foreachDataField(createDataItem)\r\n })\r\n }\r\n return dataSource\r\n}\r\n\r\nfunction createValueAxisOptions(dataSource, options) {\r\n var dataFields = dataSource.getAreaFields(\"data\");\r\n if (\"args\" !== options.putDataFieldsInto && \"singleAxis\" !== options.dataFieldsDisplayMode || 1 === dataFields.length) {\r\n var valueAxisSettings = [];\r\n (0, _iterator.each)(dataFields, function(_, dataField) {\r\n var valueAxisOptions = {\r\n name: dataField.caption,\r\n title: dataField.caption,\r\n valueType: FORMAT_DICTIONARY[dataField.dataType] || dataField.dataType,\r\n label: {\r\n format: dataField.format\r\n }\r\n };\r\n if (dataField.customizeText) {\r\n valueAxisOptions.label.customizeText = function(formatObject) {\r\n return dataField.customizeText.call(dataField, formatObject)\r\n }\r\n }\r\n if (\"splitPanes\" === options.dataFieldsDisplayMode) {\r\n valueAxisOptions.pane = dataField.caption\r\n }\r\n valueAxisSettings.push(valueAxisOptions)\r\n });\r\n return valueAxisSettings\r\n }\r\n return [{}]\r\n}\r\n\r\nfunction createPanesOptions(dataSource, options) {\r\n var panes = [];\r\n var dataFields = dataSource.getAreaFields(\"data\");\r\n if (dataFields.length > 1 && \"splitPanes\" === options.dataFieldsDisplayMode && \"args\" !== options.putDataFieldsInto) {\r\n (0, _iterator.each)(dataFields, function(_, dataField) {\r\n panes.push({\r\n name: dataField.caption\r\n })\r\n })\r\n }\r\n if (!panes.length) {\r\n panes.push({})\r\n }\r\n return panes\r\n}\r\n\r\nfunction createChartOptions(dataSource, options) {\r\n var _customizeSeries = options.customizeSeries;\r\n var customizeChart = options.customizeChart;\r\n var chartOptions = {\r\n valueAxis: createValueAxisOptions(dataSource, options),\r\n panes: createPanesOptions(dataSource, options)\r\n };\r\n var axisDictionary = {};\r\n if (customizeChart) {\r\n chartOptions = (0, _extend.extend)(true, {}, chartOptions, customizeChart(chartOptions))\r\n }\r\n chartOptions.dataSource = createChartDataSource(dataSource, options, axisDictionary);\r\n chartOptions.seriesTemplate = {\r\n nameField: \"series\",\r\n customizeSeries: function(seriesName) {\r\n var seriesOptions = {};\r\n if (\"splitPanes\" === options.dataFieldsDisplayMode) {\r\n seriesOptions.pane = axisDictionary[seriesName]\r\n } else {\r\n if (\"singleAxis\" !== options.dataFieldsDisplayMode) {\r\n seriesOptions.axis = axisDictionary[seriesName]\r\n }\r\n }\r\n if (_customizeSeries) {\r\n seriesOptions = (0, _extend.extend)(seriesOptions, _customizeSeries(seriesName, seriesOptions))\r\n }\r\n return seriesOptions\r\n }\r\n };\r\n return chartOptions\r\n}\r\n\r\nfunction getChartInstance(chartElement) {\r\n if (!chartElement) {\r\n return false\r\n }\r\n if (chartElement.NAME) {\r\n return \"dxChart\" === chartElement.NAME && chartElement\r\n }\r\n var element = (0, _renderer.default)(chartElement);\r\n return element.data(\"dxChart\") && element.dxChart(\"instance\")\r\n}\r\n\r\nfunction removeBinding(chart) {\r\n var unbind = chart.$element().data(UNBIND_KEY);\r\n unbind && unbind()\r\n}\r\nvar _default = {\r\n bindChart: function(chart, integrationOptions) {\r\n integrationOptions = (0, _extend.extend)({}, integrationOptions);\r\n var that = this;\r\n var updateChart = function() {\r\n integrationOptions.grandTotalText = that.option(\"texts.grandTotal\");\r\n var chartOptions = createChartOptions(that.getDataSource(), integrationOptions);\r\n chart.option(chartOptions)\r\n };\r\n chart = getChartInstance(chart);\r\n if (!chart) {\r\n return null\r\n }\r\n removeBinding(chart);\r\n that.on(\"changed\", updateChart);\r\n updateChart();\r\n var disposeBinding = function() {\r\n chart.$element().removeData(UNBIND_KEY);\r\n that.off(\"changed\", updateChart)\r\n };\r\n chart.on(\"disposing\", disposeBinding);\r\n this.on(\"disposing\", disposeBinding);\r\n chart.$element().data(UNBIND_KEY, disposeBinding);\r\n return disposeBinding\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/pivot_grid_field_chooser.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _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/popover.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../core/renderer\"));\r\nvar _window = require(\"../core/utils/window\");\r\nvar _element = require(\"../core/element\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../core/dom_adapter\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../events/core/events_engine\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _common = require(\"../core/utils/common\");\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _translator = require(\"../animation/translator\");\r\nvar _position = _interopRequireDefault(require(\"../animation/position\"));\r\nvar _type = require(\"../core/utils/type\");\r\nvar _math = require(\"../core/utils/math\");\r\nvar _index = require(\"../events/utils/index\");\r\nvar _popup = _interopRequireDefault(require(\"./popup\"));\r\nvar _position2 = require(\"../core/utils/position\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n if (\"function\" === typeof Symbol && \"symbol\" === typeof Symbol.iterator) {\r\n _typeof = function(obj) {\r\n return typeof obj\r\n }\r\n } else {\r\n _typeof = function(obj) {\r\n return obj && \"function\" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }\r\n }\r\n return _typeof(obj)\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n left: \"right\",\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n};\r\nvar WEIGHT_OF_SIDES = {\r\n left: -1,\r\n top: -1,\r\n center: 0,\r\n right: 1,\r\n bottom: 1\r\n};\r\nvar POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit flip\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit flip\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"flip fit\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"flip fit\"\r\n }\r\n};\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return (0, _type.isObject)(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n var target = that.option(\"target\");\r\n var isSelector = (0, _type.isString)(target);\r\n var event = getEventName(that, name + \"Event\");\r\n if (!event || that.option(\"disabled\")) {\r\n return\r\n }\r\n var eventName = (0, _index.addNamespace)(event, that.NAME);\r\n var action = that._createAction(function() {\r\n var delay = getEventDelay(that, name + \"Event\");\r\n this._clearEventsTimeouts();\r\n if (delay) {\r\n this._timeouts[name] = setTimeout(function() {\r\n that[name]()\r\n }, delay)\r\n } else {\r\n that[name]()\r\n }\r\n }.bind(that), {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n action({\r\n event: e,\r\n target: (0, _renderer.default)(e.currentTarget)\r\n })\r\n };\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (isSelector) {\r\n that[EVENT_HANDLER_NAME] = handler;\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, handler)\r\n } else {\r\n var targetElement = (0, _element.getPublicElement)((0, _renderer.default)(target));\r\n that[EVENT_HANDLER_NAME] = void 0;\r\n _events_engine.default.on(targetElement, eventName, handler)\r\n }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n var eventName = event || getEventName(that, name + \"Event\");\r\n if (!eventName) {\r\n return\r\n }\r\n eventName = (0, _index.addNamespace)(eventName, that.NAME);\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (that[EVENT_HANDLER_NAME]) {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n } else {\r\n _events_engine.default.off((0, _element.getPublicElement)((0, _renderer.default)(target)), eventName)\r\n }\r\n};\r\nvar Popover = _popup.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n target: window,\r\n shading: false,\r\n position: \"bottom\",\r\n closeOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n to: 0\r\n }\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n fullScreen: false,\r\n closeOnTargetScroll: true,\r\n arrowPosition: \"\",\r\n arrowOffset: 0,\r\n boundaryOffset: {\r\n h: 10,\r\n v: 10\r\n },\r\n _fixedPosition: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return [{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n arrowPosition: {\r\n boundaryOffset: {\r\n h: 20,\r\n v: -10\r\n },\r\n collision: \"fit\"\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return !(0, _window.hasWindow)()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }]\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderArrow();\r\n this._timeouts = {};\r\n this.$element().addClass(POPOVER_CLASS);\r\n this._wrapper().addClass(POPOVER_WRAPPER_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._detachEvents(this.option(\"target\"));\r\n this._attachEvents()\r\n },\r\n _detachEvents: function(target) {\r\n detachEvent(this, target, \"show\");\r\n detachEvent(this, target, \"hide\")\r\n },\r\n _attachEvents: function() {\r\n attachEvent(this, \"show\");\r\n attachEvent(this, \"hide\")\r\n },\r\n _renderArrow: function() {\r\n this._$arrow = (0, _renderer.default)(\"
\").addClass(POPOVER_ARROW_CLASS).prependTo(this.overlayContent())\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._isOutsideClick(e)) {\r\n return this.callBase(e)\r\n }\r\n return true\r\n },\r\n _isOutsideClick: function(e) {\r\n return !(0, _renderer.default)(e.target).closest(this.option(\"target\")).length\r\n },\r\n _animate: function(animation) {\r\n if (animation && animation.to && \"object\" === _typeof(animation.to)) {\r\n (0, _extend.extend)(animation.to, {\r\n position: this._getContainerPosition()\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _stopAnimation: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderTitle: function() {\r\n this._wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n this.callBase()\r\n },\r\n _renderPosition: function() {\r\n this.callBase();\r\n this._renderOverlayPosition()\r\n },\r\n _renderOverlayBoundaryOffset: _common.noop,\r\n _renderOverlayPosition: function() {\r\n this._resetOverlayPosition();\r\n this._updateContentSize();\r\n var contentPosition = this._getContainerPosition();\r\n var resultLocation = _position.default.setup(this._$content, contentPosition);\r\n var positionSide = this._getSideByLocation(resultLocation);\r\n this._togglePositionClass(\"dx-position-\" + positionSide);\r\n this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n if (isArrowVisible) {\r\n this._renderArrowPosition(positionSide)\r\n }\r\n },\r\n _resetOverlayPosition: function() {\r\n this._setContentHeight(true);\r\n this._togglePositionClass(\"dx-position-\" + this._positionSide);\r\n (0, _translator.move)(this._$content, {\r\n left: 0,\r\n top: 0\r\n });\r\n this._$arrow.css({\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n left: \"auto\"\r\n })\r\n },\r\n _updateContentSize: function() {\r\n if (!this._$popupContent) {\r\n return\r\n }\r\n var containerLocation = _position.default.calculate(this._$content, this._getContainerPosition());\r\n if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n var newContainerWidth = this._$content.width() - containerLocation.h.oversize;\r\n this._$content.width(newContainerWidth)\r\n }\r\n if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n var newOverlayContentHeight = this._$content.height() - containerLocation.v.oversize;\r\n var newPopupContentHeight = this._$popupContent.height() - containerLocation.v.oversize;\r\n this._$content.height(newOverlayContentHeight);\r\n this._$popupContent.height(newPopupContentHeight)\r\n }\r\n },\r\n _getContainerPosition: function() {\r\n var offset = (0, _common.pairToObject)(this._position.offset || \"\");\r\n var hOffset = offset.h;\r\n var vOffset = offset.v;\r\n var isVerticalSide = this._isVerticalSide();\r\n var isHorizontalSide = this._isHorizontalSide();\r\n if (isVerticalSide || isHorizontalSide) {\r\n var isPopoverInside = this._isPopoverInside();\r\n var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n var arrowSize = isVerticalSide ? this._$arrow.height() : this._$arrow.width();\r\n var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n }\r\n return (0, _extend.extend)({}, this._position, {\r\n offset: hOffset + \" \" + vOffset\r\n })\r\n },\r\n _getContentBorderWidth: function(side) {\r\n var borderWidth = this._$content.css(SIDE_BORDER_WIDTH_STYLES[side]);\r\n return parseInt(borderWidth) || 0\r\n },\r\n _getSideByLocation: function(location) {\r\n var isFlippedByVertical = location.v.flip;\r\n var isFlippedByHorizontal = location.h.flip;\r\n return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionSide] : this._positionSide\r\n },\r\n _togglePositionClass: function(positionClass) {\r\n this._$wrapper.removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n },\r\n _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n this._$wrapper.toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n },\r\n _renderArrowPosition: function(side) {\r\n var arrowRect = (0, _position2.getBoundingRect)(this._$arrow.get(0));\r\n var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n var $target = (0, _renderer.default)(this._position.of);\r\n var targetOffset = _position.default.offset($target) || {\r\n top: 0,\r\n left: 0\r\n };\r\n var contentOffset = _position.default.offset(this._$content);\r\n var arrowSize = arrowRect[sizeProperty];\r\n var contentLocation = contentOffset[axis];\r\n var contentSize = (0, _position2.getBoundingRect)(this._$content.get(0))[sizeProperty];\r\n var targetLocation = targetOffset[axis];\r\n var targetSize = $target.get(0).preventDefault ? 0 : (0, _position2.getBoundingRect)($target.get(0))[sizeProperty];\r\n var min = Math.max(contentLocation, targetLocation);\r\n var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n var arrowLocation;\r\n if (\"start\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = min - contentLocation\r\n } else {\r\n if (\"end\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = max - contentLocation - arrowSize\r\n } else {\r\n arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n }\r\n }\r\n var borderWidth = this._getContentBorderWidth(side);\r\n var finalArrowLocation = (0, _math.fitIntoRange)(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n this._$arrow.css(axis, finalArrowLocation)\r\n },\r\n _isPopoverInside: function() {\r\n var position = this._transformStringPosition(this.option(\"position\"), POSITION_ALIASES);\r\n var my = _position.default.setup.normalizeAlign(position.my);\r\n var at = _position.default.setup.normalizeAlign(position.at);\r\n return my.h === at.h && my.v === at.v\r\n },\r\n _setContentHeight: function(fullUpdate) {\r\n if (fullUpdate) {\r\n this.callBase()\r\n }\r\n },\r\n _renderWrapperPosition: function() {\r\n if (this.option(\"shading\")) {\r\n this._$wrapper.css({\r\n top: 0,\r\n left: 0\r\n })\r\n }\r\n },\r\n _renderWrapperDimensions: function() {\r\n if (this.option(\"shading\")) {\r\n this._$wrapper.css({\r\n width: \"100%\",\r\n height: \"100%\"\r\n })\r\n }\r\n },\r\n _normalizePosition: function() {\r\n var position = (0, _extend.extend)({}, this._transformStringPosition(this.option(\"position\"), POSITION_ALIASES));\r\n if (!position.of) {\r\n position.of = this.option(\"target\")\r\n }\r\n if (!position.collision) {\r\n position.collision = \"flip\"\r\n }\r\n if (!position.boundaryOffset) {\r\n position.boundaryOffset = this.option(\"boundaryOffset\")\r\n }\r\n this._positionSide = this._getDisplaySide(position);\r\n this._position = position\r\n },\r\n _getDisplaySide: function(position) {\r\n var my = _position.default.setup.normalizeAlign(position.my);\r\n var at = _position.default.setup.normalizeAlign(position.at);\r\n var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n return horizontalWeight > verticalWeight ? at.h : at.v\r\n },\r\n _isVerticalSide: function(side) {\r\n side = side || this._positionSide;\r\n return \"top\" === side || \"bottom\" === side\r\n },\r\n _isHorizontalSide: function(side) {\r\n side = side || this._positionSide;\r\n return \"left\" === side || \"right\" === side\r\n },\r\n _clearEventTimeout: function(name) {\r\n clearTimeout(this._timeouts[name])\r\n },\r\n _clearEventsTimeouts: function() {\r\n this._clearEventTimeout(\"show\");\r\n this._clearEventTimeout(\"hide\")\r\n },\r\n _clean: function() {\r\n this._detachEvents(this.option(\"target\"));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"boundaryOffset\":\r\n case \"arrowPosition\":\r\n case \"arrowOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"fullScreen\":\r\n if (args.value) {\r\n this.option(\"fullScreen\", false)\r\n }\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachEvents(args.previousValue);\r\n this.callBase(args);\r\n break;\r\n case \"showEvent\":\r\n case \"hideEvent\":\r\n var name = args.name.substring(0, 4);\r\n var event = getEventNameByOption(args.previousValue);\r\n this.hide();\r\n detachEvent(this, this.option(\"target\"), name, event);\r\n attachEvent(this, name);\r\n break;\r\n case \"visible\":\r\n this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n show: function(target) {\r\n if (target) {\r\n this.option(\"target\", target)\r\n }\r\n return this.callBase()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxPopover\", Popover);\r\nvar _default = Popover;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.area_item.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.AreaItem = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _class = _interopRequireDefault(require(\"../../core/class\"));\r\nvar _element = require(\"../../core/element\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _position = require(\"../../core/utils/position\");\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 PIVOTGRID_EXPAND_CLASS = \"dx-expand\";\r\nvar getRealElementWidth = function(element) {\r\n var width = 0;\r\n var offsetWidth = element.offsetWidth;\r\n if (element.getBoundingClientRect) {\r\n var clientRect = (0, _position.getBoundingRect)(element);\r\n width = clientRect.width;\r\n if (!width) {\r\n width = clientRect.right - clientRect.left\r\n }\r\n if (width <= offsetWidth - 1) {\r\n width = offsetWidth\r\n }\r\n }\r\n return width > 0 ? width : offsetWidth\r\n};\r\n\r\nfunction getFakeTableOffset(scrollPos, elementOffset, tableSize, viewPortSize) {\r\n var offset = 0;\r\n var halfTableCount = 0;\r\n var halfTableSize = tableSize / 2;\r\n if (scrollPos + viewPortSize - (elementOffset + tableSize) > 1) {\r\n if (scrollPos >= elementOffset + tableSize + halfTableSize) {\r\n halfTableCount = parseInt((scrollPos - (elementOffset + tableSize)) / halfTableSize, 10)\r\n }\r\n offset = elementOffset + tableSize + halfTableSize * halfTableCount\r\n } else {\r\n if (scrollPos < elementOffset) {\r\n if (scrollPos <= elementOffset - halfTableSize) {\r\n halfTableCount = parseInt((scrollPos - (elementOffset - halfTableSize)) / halfTableSize, 10)\r\n }\r\n offset = elementOffset - (tableSize - halfTableSize * halfTableCount)\r\n } else {\r\n offset = elementOffset\r\n }\r\n }\r\n return offset\r\n}\r\nvar AreaItem = _class.default.inherit({\r\n _getRowElement: function(index) {\r\n var that = this;\r\n if (that._tableElement && that._tableElement.length > 0) {\r\n return that._tableElement[0].rows[index]\r\n }\r\n return null\r\n },\r\n _createGroupElement: function() {\r\n return (0, _renderer.default)(\"
\")\r\n },\r\n _createTableElement: function() {\r\n return (0, _renderer.default)(\"\")\r\n },\r\n _getCellText: function(cell, encodeHtml) {\r\n var cellText = cell.isWhiteSpace ? \" \" : cell.text || \" \";\r\n if (encodeHtml && (cellText.indexOf(\"<\") !== -1 || cellText.indexOf(\">\") !== -1)) {\r\n cellText = (0, _renderer.default)(\"
\").text(cellText).html()\r\n }\r\n return cellText\r\n },\r\n _getRowClassNames: function() {},\r\n _applyCustomStyles: function(options) {\r\n if (options.cell.width) {\r\n options.cssArray.push(\"min-width:\" + options.cell.width + \"px\")\r\n }\r\n if (options.cell.sorted) {\r\n options.classArray.push(\"dx-pivotgrid-sorted\")\r\n }\r\n },\r\n _getMainElementMarkup: function() {\r\n return \"
\"\r\n },\r\n _getCloseMainElementMarkup: function() {\r\n return \"\"\r\n },\r\n _renderTableContent: function(tableElement, data) {\r\n var that = this;\r\n var rowsCount = data.length;\r\n var row;\r\n var cell;\r\n var i;\r\n var j;\r\n var rowElement;\r\n var cellElement;\r\n var cellText;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var markupArray = [];\r\n var encodeHtml = that.option(\"encodeHtml\");\r\n var rowClassNames;\r\n var colspan = \"colspan='\";\r\n var rowspan = \"rowspan='\";\r\n tableElement.data(\"area\", that._getAreaName());\r\n tableElement.data(\"data\", data);\r\n tableElement.css(\"width\", \"\");\r\n markupArray.push(that._getMainElementMarkup());\r\n for (i = 0; i < rowsCount; i++) {\r\n row = data[i];\r\n var columnMarkupArray = [];\r\n rowClassNames = [];\r\n markupArray.push(\"\");\r\n if ((0, _type.isDefined)(cell.expanded)) {\r\n columnMarkupArray.push(\"
\")\r\n }\r\n cellText = this._getCellText(cell, encodeHtml)\r\n } else {\r\n cellText = \"\"\r\n }\r\n columnMarkupArray.push(\"\" + cellText + \"\");\r\n if (cell.sorted) {\r\n columnMarkupArray.push(\"\")\r\n }\r\n columnMarkupArray.push(\"\")\r\n }\r\n if (rowClassNames.length) {\r\n markupArray.push(\"class='\");\r\n markupArray.push(rowClassNames.join(\" \"));\r\n markupArray.push(\"'\")\r\n }\r\n markupArray.push(\">\");\r\n markupArray.push(columnMarkupArray.join(\"\"));\r\n markupArray.push(\"\")\r\n }\r\n markupArray.push(this._getCloseMainElementMarkup());\r\n tableElement.append(markupArray.join(\"\"));\r\n this._triggerOnCellPrepared(tableElement, data)\r\n },\r\n _triggerOnCellPrepared: function(tableElement, data) {\r\n var that = this;\r\n var rowElements = tableElement.find(\"tr\");\r\n var areaName = that._getAreaName();\r\n var onCellPrepared = that.option(\"onCellPrepared\");\r\n var hasEvent = that.component._eventsStrategy.hasEvent(\"cellPrepared\");\r\n var rowElement;\r\n var $cellElement;\r\n var onCellPreparedArgs;\r\n var defaultActionArgs = this.component._defaultActionArgs();\r\n var row;\r\n var cell;\r\n var rowIndex;\r\n var columnIndex;\r\n if (onCellPrepared || hasEvent) {\r\n for (rowIndex = 0; rowIndex < data.length; rowIndex++) {\r\n row = data[rowIndex];\r\n rowElement = rowElements.eq(rowIndex);\r\n for (columnIndex = 0; columnIndex < row.length; columnIndex++) {\r\n cell = row[columnIndex];\r\n $cellElement = rowElement.children().eq(columnIndex);\r\n onCellPreparedArgs = {\r\n area: areaName,\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex,\r\n cellElement: (0, _element.getPublicElement)($cellElement),\r\n cell: cell\r\n };\r\n if (hasEvent) {\r\n that.component._trigger(\"onCellPrepared\", onCellPreparedArgs)\r\n } else {\r\n onCellPrepared((0, _extend.extend)(onCellPreparedArgs, defaultActionArgs))\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _getRowHeight: function(index) {\r\n var row = this._getRowElement(index);\r\n var height = 0;\r\n var offsetHeight = row.offsetHeight;\r\n if (row && row.lastChild) {\r\n if (row.getBoundingClientRect) {\r\n var clientRect = (0, _position.getBoundingRect)(row);\r\n height = clientRect.height;\r\n if (height <= offsetHeight - 1) {\r\n height = offsetHeight\r\n }\r\n }\r\n return height > 0 ? height : offsetHeight\r\n }\r\n return 0\r\n },\r\n _setRowHeight: function(index, value) {\r\n var row = this._getRowElement(index);\r\n if (row) {\r\n row.style.height = value + \"px\"\r\n }\r\n },\r\n ctor: function(component) {\r\n this.component = component\r\n },\r\n option: function() {\r\n return this.component.option.apply(this.component, arguments)\r\n },\r\n getRowsLength: function() {\r\n var that = this;\r\n if (that._tableElement && that._tableElement.length > 0) {\r\n return that._tableElement[0].rows.length\r\n }\r\n return 0\r\n },\r\n getRowsHeight: function() {\r\n var that = this;\r\n var result = [];\r\n var rowsLength = that.getRowsLength();\r\n var i;\r\n for (i = 0; i < rowsLength; i++) {\r\n result.push(that._getRowHeight(i))\r\n }\r\n return result\r\n },\r\n setRowsHeight: function(values) {\r\n var that = this;\r\n var totalHeight = 0;\r\n var valuesLength = values.length;\r\n var i;\r\n for (i = 0; i < valuesLength; i++) {\r\n totalHeight += values[i];\r\n that._setRowHeight(i, values[i])\r\n }\r\n this._tableHeight = totalHeight;\r\n this._tableElement[0].style.height = totalHeight + \"px\"\r\n },\r\n getColumnsWidth: function() {\r\n var rowsLength = this.getRowsLength();\r\n var rowIndex;\r\n var row;\r\n var i;\r\n var columnIndex;\r\n var processedCells = [];\r\n var result = [];\r\n var fillCells = function(cells, rowIndex, columnIndex, rowSpan, colSpan) {\r\n var rowOffset;\r\n var columnOffset;\r\n for (rowOffset = 0; rowOffset < rowSpan; rowOffset++) {\r\n for (columnOffset = 0; columnOffset < colSpan; columnOffset++) {\r\n cells[rowIndex + rowOffset] = cells[rowIndex + rowOffset] || [];\r\n cells[rowIndex + rowOffset][columnIndex + columnOffset] = true\r\n }\r\n }\r\n };\r\n if (rowsLength) {\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n processedCells[rowIndex] = processedCells[rowIndex] || [];\r\n row = this._getRowElement(rowIndex);\r\n for (i = 0; i < row.cells.length; i++) {\r\n for (columnIndex = 0; processedCells[rowIndex][columnIndex]; columnIndex++) {}\r\n fillCells(processedCells, rowIndex, columnIndex, row.cells[i].rowSpan, row.cells[i].colSpan);\r\n if (1 === row.cells[i].colSpan) {\r\n result[columnIndex] = result[columnIndex] || getRealElementWidth(row.cells[i])\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n },\r\n setColumnsWidth: function(values) {\r\n var i;\r\n var tableElement = this._tableElement[0];\r\n var colgroupElementHTML = \"\";\r\n var columnsCount = this.getColumnsCount();\r\n var columnWidth = [];\r\n for (i = 0; i < columnsCount; i++) {\r\n columnWidth.push(values[i] || 0)\r\n }\r\n for (i = columnsCount; i < values.length && values; i++) {\r\n columnWidth[columnsCount - 1] += values[i]\r\n }\r\n for (i = 0; i < columnsCount; i++) {\r\n colgroupElementHTML += ''\r\n }\r\n this._colgroupElement.html(colgroupElementHTML);\r\n this._tableWidth = columnWidth.reduce(function(sum, width) {\r\n return sum + width\r\n }, 0);\r\n tableElement.style.width = this._tableWidth + \"px\";\r\n tableElement.style.tableLayout = \"fixed\"\r\n },\r\n resetColumnsWidth: function() {\r\n this._colgroupElement.find(\"col\").width(\"auto\");\r\n this._tableElement.css({\r\n width: \"\",\r\n tableLayout: \"\"\r\n })\r\n },\r\n groupWidth: function(value) {\r\n if (void 0 === value) {\r\n return this._groupElement.width()\r\n } else {\r\n if (value >= 0) {\r\n this._groupWidth = value;\r\n return this._groupElement[0].style.width = value + \"px\"\r\n } else {\r\n return this._groupElement[0].style.width = value\r\n }\r\n }\r\n },\r\n groupHeight: function(value) {\r\n if (void 0 === value) {\r\n return this._groupElement.height()\r\n }\r\n this._groupHeight = null;\r\n if (value >= 0) {\r\n this._groupHeight = value;\r\n this._groupElement[0].style.height = value + \"px\"\r\n } else {\r\n this._groupElement[0].style.height = value\r\n }\r\n },\r\n groupElement: function() {\r\n return this._groupElement\r\n },\r\n tableElement: function() {\r\n return this._tableElement\r\n },\r\n element: function() {\r\n return this._rootElement\r\n },\r\n headElement: function() {\r\n return this._tableElement.find(\"thead\")\r\n },\r\n _setTableCss: function(styles) {\r\n if (this.option(\"rtlEnabled\")) {\r\n styles.right = styles.left;\r\n delete styles.left\r\n }\r\n this.tableElement().css(styles)\r\n },\r\n setVirtualContentParams: function(params) {\r\n this._virtualContent.css({\r\n width: params.width,\r\n height: params.height\r\n });\r\n this.groupElement().addClass(\"dx-virtual-mode\")\r\n },\r\n disableVirtualMode: function() {\r\n this.groupElement().removeClass(\"dx-virtual-mode\")\r\n },\r\n _renderVirtualContent: function() {\r\n var that = this;\r\n if (!that._virtualContent && \"virtual\" === that.option(\"scrolling.mode\")) {\r\n that._virtualContent = (0, _renderer.default)(\"
\").addClass(\"dx-virtual-content\").insertBefore(that._tableElement)\r\n }\r\n },\r\n reset: function() {\r\n var that = this;\r\n var tableElement = that._tableElement[0];\r\n that._fakeTable && that._fakeTable.detach();\r\n that._fakeTable = null;\r\n that.disableVirtualMode();\r\n that.groupWidth(\"100%\");\r\n that.groupHeight(\"auto\");\r\n that.resetColumnsWidth();\r\n if (tableElement) {\r\n for (var i = 0; i < tableElement.rows.length; i++) {\r\n tableElement.rows[i].style.height = \"\"\r\n }\r\n tableElement.style.height = \"\";\r\n tableElement.style.width = \"100%\"\r\n }\r\n },\r\n _updateFakeTableVisibility: function() {\r\n var that = this;\r\n var tableElement = that.tableElement()[0];\r\n var horizontalOffsetName = that.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n var fakeTableElement = that._fakeTable[0];\r\n if (tableElement.style.top === fakeTableElement.style.top && fakeTableElement.style[horizontalOffsetName] === tableElement.style[horizontalOffsetName]) {\r\n that._fakeTable.addClass(\"dx-hidden\")\r\n } else {\r\n that._fakeTable.removeClass(\"dx-hidden\")\r\n }\r\n },\r\n _moveFakeTableHorizontally: function(scrollPos) {\r\n var that = this;\r\n var rtlEnabled = that.option(\"rtlEnabled\");\r\n var offsetStyleName = rtlEnabled ? \"right\" : \"left\";\r\n var tableElementOffset = parseFloat(that.tableElement()[0].style[offsetStyleName]);\r\n var offset = getFakeTableOffset(scrollPos, tableElementOffset, that._tableWidth, that._groupWidth);\r\n if (parseFloat(that._fakeTable[0].style[offsetStyleName]) !== offset) {\r\n that._fakeTable[0].style[offsetStyleName] = offset + \"px\"\r\n }\r\n },\r\n _moveFakeTableTop: function(scrollPos) {\r\n var that = this;\r\n var tableElementOffsetTop = parseFloat(that.tableElement()[0].style.top);\r\n var offsetTop = getFakeTableOffset(scrollPos, tableElementOffsetTop, that._tableHeight, that._groupHeight);\r\n if (parseFloat(that._fakeTable[0].style.top) !== offsetTop) {\r\n that._fakeTable[0].style.top = offsetTop + \"px\"\r\n }\r\n },\r\n _moveFakeTable: function() {\r\n this._updateFakeTableVisibility()\r\n },\r\n _createFakeTable: function() {\r\n var that = this;\r\n if (!that._fakeTable) {\r\n that._fakeTable = that.tableElement().clone().addClass(\"dx-pivot-grid-fake-table\").appendTo(that._virtualContent)\r\n }\r\n },\r\n render: function(rootElement, data) {\r\n var that = this;\r\n if (that._tableElement) {\r\n try {\r\n that._tableElement[0].innerHTML = \"\"\r\n } catch (e) {\r\n that._tableElement.empty()\r\n }\r\n that._tableElement.attr(\"style\", \"\")\r\n } else {\r\n that._groupElement = that._createGroupElement();\r\n that._tableElement = that._createTableElement();\r\n that._tableElement.appendTo(that._groupElement);\r\n that._groupElement.appendTo(rootElement);\r\n that._rootElement = rootElement\r\n }\r\n that._colgroupElement = (0, _renderer.default)(\"
\").appendTo(that._tableElement);\r\n that._renderTableContent(that._tableElement, data);\r\n that._renderVirtualContent()\r\n },\r\n _getScrollable: function() {\r\n return this.groupElement().data(\"dxScrollable\")\r\n },\r\n on: function(eventName, handler) {\r\n var that = this;\r\n var scrollable = that._getScrollable();\r\n if (scrollable) {\r\n scrollable.on(eventName, function(e) {\r\n if (that.option(\"rtlEnabled\") && (0, _type.isDefined)(e.scrollOffset.left)) {\r\n e.scrollOffset.left = scrollable.$content().width() - scrollable._container().width() - e.scrollOffset.left\r\n }\r\n handler(e)\r\n })\r\n }\r\n return this\r\n },\r\n off: function(eventName) {\r\n var scrollable = this._getScrollable();\r\n if (scrollable) {\r\n scrollable.off(eventName)\r\n }\r\n return this\r\n },\r\n scrollTo: function(pos) {\r\n var scrollable = this._getScrollable();\r\n var scrollablePos = pos;\r\n if (scrollable) {\r\n if (this.option(\"rtlEnabled\")) {\r\n if (\"column\" === this._getAreaName()) {\r\n scrollablePos = scrollable.$content().width() - scrollable._container().width() - pos\r\n } else {\r\n if (\"data\" === this._getAreaName()) {\r\n scrollablePos = {\r\n x: scrollable.$content().width() - scrollable._container().width() - pos.x,\r\n y: pos.y\r\n }\r\n }\r\n }\r\n }\r\n scrollable.scrollTo(scrollablePos);\r\n if (this._virtualContent) {\r\n this._createFakeTable();\r\n this._moveFakeTable(pos)\r\n }\r\n }\r\n },\r\n updateScrollable: function() {\r\n var scrollable = this._getScrollable();\r\n if (scrollable) {\r\n return scrollable.update()\r\n }\r\n },\r\n getColumnsCount: function() {\r\n var columnCount = 0;\r\n var row = this._getRowElement(0);\r\n var cells;\r\n if (row) {\r\n cells = row.cells;\r\n for (var i = 0, len = cells.length; i < len; ++i) {\r\n columnCount += cells[i].colSpan\r\n }\r\n }\r\n return columnCount\r\n },\r\n getData: function() {\r\n var tableElement = this._tableElement;\r\n return tableElement ? tableElement.data(\"data\") : []\r\n }\r\n});\r\nexports.AreaItem = AreaItem;\r\n","/**\r\n * DevExtreme (ui/pivot_grid/ui.pivot_grid.field_chooser_base.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _renderer = _interopRequireDefault(require(\"../../core/renderer\"));\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _array_store = _interopRequireDefault(require(\"../../data/array_store\"));\r\nvar _click = require(\"../../events/click\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _message = _interopRequireDefault(require(\"../../localization/message\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _ui = _interopRequireDefault(require(\"../widget/ui.widget\"));\r\nvar _uiGrid_core = require(\"../grid_core/ui.grid_core.header_filter_core\");\r\nvar _uiGrid_core2 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.column_state_mixin\"));\r\nvar _uiGrid_core3 = _interopRequireDefault(require(\"../grid_core/ui.grid_core.sorting_mixin\"));\r\nvar _uiPivot_grid = require(\"./ui.pivot_grid.utils\");\r\nvar _ui2 = _interopRequireDefault(require(\"./ui.sortable\"));\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 IE_FIELD_WIDTH_CORRECTION = 1;\r\nvar DIV = \"
\";\r\nvar HeaderFilterView = _uiGrid_core.HeaderFilterView.inherit({\r\n _getSearchExpr: function(options) {\r\n options.useDefaultSearchExpr = true;\r\n return this.callBase(options)\r\n }\r\n});\r\nvar processItems = function(groupItems, field) {\r\n var filterValues = [];\r\n var isTree = !!field.groupName;\r\n var isExcludeFilterType = \"exclude\" === field.filterType;\r\n if (field.filterValues) {\r\n (0, _iterator.each)(field.filterValues, function(_, filterValue) {\r\n filterValues.push(Array.isArray(filterValue) ? filterValue.join(\"/\") : filterValue && filterValue.valueOf())\r\n })\r\n }(0, _uiPivot_grid.foreachTree)(groupItems, function(items) {\r\n var item = items[0];\r\n var path = (0, _uiPivot_grid.createPath)(items);\r\n var preparedFilterValueByText = isTree ? (0, _iterator.map)(items, function(item) {\r\n return item.text\r\n }).reverse().join(\"/\") : item.text;\r\n item.value = isTree ? path.slice(0) : item.key || item.value;\r\n var preparedFilterValue = isTree ? path.join(\"/\") : item.value && item.value.valueOf();\r\n if (item.children) {\r\n item.items = item.children;\r\n item.children = null\r\n }(0, _uiGrid_core.updateHeaderFilterItemSelectionState)(item, item.key && (0, _array.inArray)(preparedFilterValueByText, filterValues) > -1 || (0, _array.inArray)(preparedFilterValue, filterValues) > -1, isExcludeFilterType)\r\n })\r\n};\r\n\r\nfunction getMainGroupField(dataSource, sourceField) {\r\n var field = sourceField;\r\n if ((0, _type.isDefined)(sourceField.groupIndex)) {\r\n field = dataSource.getAreaFields(sourceField.area, true)[sourceField.areaIndex]\r\n }\r\n return field\r\n}\r\n\r\nfunction getStringState(state) {\r\n state = state || {};\r\n return JSON.stringify([state.fields, state.columnExpandedPaths, state.rowExpandedPaths])\r\n}\r\nvar FieldChooserBase = _ui.default.inherit(_uiGrid_core2.default).inherit(_uiGrid_core3.default).inherit(_uiGrid_core.headerFilterMixin).inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n allowFieldDragging: true,\r\n applyChangesMode: \"instantly\",\r\n state: null,\r\n headerFilter: {\r\n width: 252,\r\n height: 325,\r\n searchTimeout: 500,\r\n texts: {\r\n emptyValue: _message.default.format(\"dxDataGrid-headerFilterEmptyValue\"),\r\n ok: _message.default.format(\"dxDataGrid-headerFilterOK\"),\r\n cancel: _message.default.format(\"dxDataGrid-headerFilterCancel\")\r\n }\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._headerFilterView = new HeaderFilterView(this);\r\n this._refreshDataSource();\r\n this.subscribeToEvents()\r\n },\r\n _refreshDataSource: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n if (dataSource && dataSource.fields && dataSource.load) {\r\n this._dataSource = dataSource\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"dataSource\":\r\n this._refreshDataSource();\r\n break;\r\n case \"applyChangesMode\":\r\n break;\r\n case \"state\":\r\n if (this._skipStateChange || !this._dataSource) {\r\n break\r\n }\r\n if (\"instantly\" === this.option(\"applyChangesMode\") && getStringState(this._dataSource.state()) !== getStringState(args.value)) {\r\n this._dataSource.state(args.value)\r\n } else {\r\n this._clean(true);\r\n this._renderComponent()\r\n }\r\n break;\r\n case \"headerFilter\":\r\n case \"allowFieldDragging\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n renderField: function(field, showColumnLines) {\r\n var that = this;\r\n var $fieldContent = (0, _renderer.default)(DIV).addClass(\"dx-area-field-content\").text(field.caption || field.dataField);\r\n var $fieldElement = (0, _renderer.default)(DIV).addClass(\"dx-area-field\").addClass(\"dx-area-box\").data(\"field\", field).append($fieldContent);\r\n var mainGroupField = getMainGroupField(that._dataSource, field);\r\n if (\"data\" !== field.area) {\r\n if (field.allowSorting) {\r\n that._applyColumnState({\r\n name: \"sort\",\r\n rootElement: $fieldElement,\r\n column: {\r\n alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n sortOrder: \"desc\" === field.sortOrder ? \"desc\" : \"asc\"\r\n },\r\n showColumnLines: showColumnLines\r\n })\r\n }\r\n that._applyColumnState({\r\n name: \"headerFilter\",\r\n rootElement: $fieldElement,\r\n column: {\r\n alignment: that.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n filterValues: mainGroupField.filterValues,\r\n allowFiltering: mainGroupField.allowFiltering && !field.groupIndex\r\n },\r\n showColumnLines: showColumnLines\r\n })\r\n }\r\n if (field.groupName) {\r\n $fieldElement.attr(\"item-group\", field.groupName)\r\n }\r\n return $fieldElement\r\n },\r\n _clean: function() {},\r\n _render: function() {\r\n this.callBase();\r\n this._headerFilterView.render(this.$element())\r\n },\r\n renderSortable: function() {\r\n var that = this;\r\n that._createComponent(that.$element(), _ui2.default, (0, _extend.extend)({\r\n allowDragging: that.option(\"allowFieldDragging\"),\r\n itemSelector: \".dx-area-field\",\r\n itemContainerSelector: \".dx-area-field-container\",\r\n groupSelector: \".dx-area-fields\",\r\n groupFilter: function() {\r\n var dataSource = that._dataSource;\r\n var $sortable = (0, _renderer.default)(this).closest(\".dx-sortable-old\");\r\n var pivotGrid = $sortable.data(\"dxPivotGrid\");\r\n var pivotGridFieldChooser = $sortable.data(\"dxPivotGridFieldChooser\");\r\n if (pivotGrid) {\r\n return pivotGrid.getDataSource() === dataSource\r\n }\r\n if (pivotGridFieldChooser) {\r\n return pivotGridFieldChooser.option(\"dataSource\") === dataSource\r\n }\r\n return false\r\n },\r\n itemRender: function($sourceItem, target) {\r\n var $item;\r\n if ($sourceItem.hasClass(\"dx-area-box\")) {\r\n $item = $sourceItem.clone();\r\n if (\"drag\" === target) {\r\n (0, _iterator.each)($sourceItem, function(index, sourceItem) {\r\n $item.eq(index).css(\"width\", parseInt((0, _renderer.default)(sourceItem).outerWidth(), 10) + IE_FIELD_WIDTH_CORRECTION)\r\n })\r\n }\r\n } else {\r\n $item = (0, _renderer.default)(DIV).addClass(\"dx-area-field\").addClass(\"dx-area-box\").text($sourceItem.text())\r\n }\r\n if (\"drag\" === target) {\r\n var wrapperContainer = (0, _renderer.default)(DIV);\r\n (0, _iterator.each)($item, function(_, item) {\r\n var wrapper = (0, _renderer.default)(\"
\").addClass(\"dx-pivotgrid-fields-container\").addClass(\"dx-widget\").append((0, _renderer.default)(item));\r\n wrapperContainer.append(wrapper)\r\n });\r\n return wrapperContainer.children()\r\n }\r\n return $item\r\n },\r\n onDragging: function(e) {\r\n var field = e.sourceElement.data(\"field\");\r\n var targetGroup = e.targetGroup;\r\n e.cancel = false;\r\n if (true === field.isMeasure) {\r\n if (\"column\" === targetGroup || \"row\" === targetGroup || \"filter\" === targetGroup) {\r\n e.cancel = true\r\n }\r\n } else {\r\n if (false === field.isMeasure && \"data\" === targetGroup) {\r\n e.cancel = true\r\n }\r\n }\r\n },\r\n useIndicator: true,\r\n onChanged: function(e) {\r\n var dataSource = that._dataSource;\r\n var field = e.sourceElement.data(\"field\");\r\n e.removeSourceElement = !!e.sourceGroup;\r\n that._adjustSortableOnChangedArgs(e);\r\n if (field) {\r\n that._applyChanges([getMainGroupField(dataSource, field)], {\r\n area: e.targetGroup,\r\n areaIndex: e.targetIndex\r\n })\r\n }\r\n }\r\n }, that._getSortableOptions()))\r\n },\r\n _processDemandState: function(func) {\r\n var that = this;\r\n var isInstantlyMode = \"instantly\" === that.option(\"applyChangesMode\");\r\n var dataSource = that._dataSource;\r\n if (isInstantlyMode) {\r\n func(dataSource, isInstantlyMode)\r\n } else {\r\n var currentState = dataSource.state();\r\n var pivotGridState = that.option(\"state\");\r\n if (pivotGridState) {\r\n dataSource.state(pivotGridState, true)\r\n }\r\n func(dataSource, isInstantlyMode);\r\n dataSource.state(currentState, true)\r\n }\r\n },\r\n _applyChanges: function(fields, props) {\r\n var that = this;\r\n that._processDemandState(function(dataSource, isInstantlyMode) {\r\n fields.forEach(function(_ref) {\r\n var index = _ref.index;\r\n dataSource.field(index, props)\r\n });\r\n if (isInstantlyMode) {\r\n dataSource.load()\r\n } else {\r\n that._changedHandler()\r\n }\r\n })\r\n },\r\n _adjustSortableOnChangedArgs: function(e) {\r\n e.removeSourceElement = false;\r\n e.removeTargetElement = true;\r\n e.removeSourceClass = false\r\n },\r\n _getSortableOptions: function() {\r\n return {\r\n direction: \"auto\"\r\n }\r\n },\r\n subscribeToEvents: function(element) {\r\n var that = this;\r\n var func = function(e) {\r\n var field = (0, _renderer.default)(e.currentTarget).data(\"field\");\r\n var mainGroupField = (0, _extend.extend)(true, {}, getMainGroupField(that._dataSource, field));\r\n var isHeaderFilter = (0, _renderer.default)(e.target).hasClass(\"dx-header-filter\");\r\n var dataSource = that._dataSource;\r\n var type = mainGroupField.groupName ? \"tree\" : \"list\";\r\n var paginate = dataSource.paginate() && \"list\" === type;\r\n if (isHeaderFilter) {\r\n that._headerFilterView.showHeaderFilterMenu((0, _renderer.default)(e.currentTarget), (0, _extend.extend)(mainGroupField, {\r\n type: type,\r\n encodeHtml: that.option(\"encodeHtml\"),\r\n dataSource: {\r\n useDefaultSearch: !paginate,\r\n load: function(options) {\r\n var userData = options.userData;\r\n if (userData.store) {\r\n return userData.store.load(options)\r\n } else {\r\n var d = new _deferred.Deferred;\r\n dataSource.getFieldValues(mainGroupField.index, that.option(\"headerFilter.showRelevantValues\"), paginate ? options : void 0).done(function(data) {\r\n var emptyValue = that.option(\"headerFilter.texts.emptyValue\");\r\n data.forEach(function(element) {\r\n if (!element.text) {\r\n element.text = emptyValue\r\n }\r\n });\r\n if (paginate) {\r\n d.resolve(data)\r\n } else {\r\n userData.store = new _array_store.default(data);\r\n userData.store.load(options).done(d.resolve).fail(d.reject)\r\n }\r\n }).fail(d.reject);\r\n return d\r\n }\r\n },\r\n postProcess: function(data) {\r\n processItems(data, mainGroupField);\r\n return data\r\n }\r\n },\r\n apply: function() {\r\n that._applyChanges([mainGroupField], {\r\n filterValues: this.filterValues,\r\n filterType: this.filterType\r\n })\r\n }\r\n }))\r\n } else {\r\n if (field.allowSorting && \"data\" !== field.area) {\r\n that._applyChanges([field], {\r\n sortOrder: \"desc\" === field.sortOrder ? \"asc\" : \"desc\"\r\n })\r\n }\r\n }\r\n };\r\n if (element) {\r\n _events_engine.default.on(element, _click.name, \".dx-area-field.dx-area-box\", func);\r\n return\r\n }\r\n _events_engine.default.on(that.$element(), _click.name, \".dx-area-field.dx-area-box\", func)\r\n },\r\n _initTemplates: _common.noop,\r\n addWidgetPrefix: function(className) {\r\n return \"dx-pivotgrid-\" + className\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxPivotGridFieldChooserBase\", FieldChooserBase);\r\nvar _default = FieldChooserBase;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (ui/popup.js)\r\n * Version: 20.2.7\r\n * Build date: Thu Apr 22 2021\r\n *\r\n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _translator = require(\"../animation/translator\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _devices = _interopRequireDefault(require(\"../core/devices\"));\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 _extend = require(\"../core/utils/extend\");\r\nvar _inflector = require(\"../core/utils/inflector\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _size = require(\"../core/utils/size\");\r\nvar _position = require(\"../core/utils/position\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _version = require(\"../core/utils/version\");\r\nvar _window = require(\"../core/utils/window\");\r\nvar _visibility_change = require(\"../events/visibility_change\");\r\nvar _message = _interopRequireDefault(require(\"../localization/message\"));\r\nvar _button = _interopRequireDefault(require(\"./button\"));\r\nvar _overlay = _interopRequireDefault(require(\"./overlay\"));\r\nvar _themes = require(\"./themes\");\r\nrequire(\"./toolbar/ui.toolbar.base\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar window = (0, _window.getWindow)();\r\nvar POPUP_CLASS = \"dx-popup\";\r\nvar POPUP_WRAPPER_CLASS = \"dx-popup-wrapper\";\r\nvar POPUP_FULL_SCREEN_CLASS = \"dx-popup-fullscreen\";\r\nvar POPUP_FULL_SCREEN_WIDTH_CLASS = \"dx-popup-fullscreen-width\";\r\nvar POPUP_NORMAL_CLASS = \"dx-popup-normal\";\r\nvar POPUP_CONTENT_CLASS = \"dx-popup-content\";\r\nvar POPUP_DRAGGABLE_CLASS = \"dx-popup-draggable\";\r\nvar POPUP_TITLE_CLASS = \"dx-popup-title\";\r\nvar POPUP_TITLE_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar POPUP_BOTTOM_CLASS = \"dx-popup-bottom\";\r\nvar POPUP_HAS_CLOSE_BUTTON_CLASS = \"dx-has-close-button\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar POPUP_CONTENT_FLEX_HEIGHT_CLASS = \"dx-popup-flex-height\";\r\nvar POPUP_CONTENT_INHERIT_HEIGHT_CLASS = \"dx-popup-inherit-height\";\r\nvar ALLOWED_TOOLBAR_ITEM_ALIASES = [\"cancel\", \"clear\", \"done\"];\r\nvar BUTTON_DEFAULT_TYPE = \"default\";\r\nvar BUTTON_NORMAL_TYPE = \"normal\";\r\nvar BUTTON_TEXT_MODE = \"text\";\r\nvar BUTTON_CONTAINED_MODE = \"contained\";\r\nvar IS_IE11 = _browser.default.msie && 11 === parseInt(_browser.default.version);\r\nvar IS_OLD_SAFARI = _browser.default.safari && (0, _version.compare)(_browser.default.version, [11]) < 0;\r\nvar HEIGHT_STRATEGIES = {\r\n \"static\": \"\",\r\n inherit: POPUP_CONTENT_INHERIT_HEIGHT_CLASS,\r\n flex: POPUP_CONTENT_FLEX_HEIGHT_CLASS\r\n};\r\nvar getButtonPlace = function(name) {\r\n var device = _devices.default.current();\r\n var platform = device.platform;\r\n var toolbar = \"bottom\";\r\n var location = \"before\";\r\n if (\"ios\" === platform) {\r\n switch (name) {\r\n case \"cancel\":\r\n toolbar = \"top\";\r\n break;\r\n case \"clear\":\r\n toolbar = \"top\";\r\n location = \"after\";\r\n break;\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n } else {\r\n if (\"android\" === platform && device.version && parseInt(device.version[0]) > 4) {\r\n switch (name) {\r\n case \"cancel\":\r\n location = \"after\";\r\n break;\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n }\r\n }\r\n return {\r\n toolbar: toolbar,\r\n location: location\r\n }\r\n};\r\nvar Popup = _overlay.default.inherit({\r\n _getDefaultOptions: function() {\r\n return (0, _extend.extend)(this.callBase(), {\r\n fullScreen: false,\r\n title: \"\",\r\n showTitle: true,\r\n titleTemplate: \"title\",\r\n onTitleRendered: null,\r\n dragEnabled: false,\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n bottomTemplate: \"bottom\",\r\n useDefaultToolbarButtons: false,\r\n useFlatToolbarButtons: false,\r\n autoResizeEnabled: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = (0, _themes.current)();\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n animation: this._iosAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n animation: this._androidAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n showCloseButton: true\r\n }\r\n }, {\r\n device: function(_device) {\r\n return \"desktop\" === _devices.default.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n dragEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === _devices.default.real().deviceType && !_devices.default.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return (0, _themes.isMaterial)(themeName)\r\n },\r\n options: {\r\n useDefaultToolbarButtons: true,\r\n useFlatToolbarButtons: true\r\n }\r\n }])\r\n },\r\n _iosAnimation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n opacity: 1,\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n },\r\n to: {\r\n opacity: 1,\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n }\r\n }\r\n },\r\n _androidAnimation: function() {\r\n var fullScreenConfig = {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: \"30%\",\r\n opacity: 0\r\n },\r\n to: {\r\n top: 0,\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: 0,\r\n opacity: 1\r\n },\r\n to: {\r\n top: \"30%\",\r\n opacity: 0\r\n }\r\n }\r\n };\r\n var defaultConfig = {\r\n show: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n };\r\n return this.option(\"fullScreen\") ? fullScreenConfig : defaultConfig\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(POPUP_CLASS);\r\n this._wrapper().addClass(POPUP_WRAPPER_CLASS);\r\n this._$popupContent = this._$content.wrapInner((0, _renderer.default)(\"
\").addClass(POPUP_CONTENT_CLASS)).children().eq(0)\r\n },\r\n _render: function() {\r\n var isFullscreen = this.option(\"fullScreen\");\r\n this._toggleFullScreenClass(isFullscreen);\r\n this.callBase()\r\n },\r\n _toggleFullScreenClass: function(value) {\r\n this._$content.toggleClass(POPUP_FULL_SCREEN_CLASS, value).toggleClass(POPUP_NORMAL_CLASS, !value)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n title: new _empty_template.EmptyTemplate,\r\n bottom: new _empty_template.EmptyTemplate\r\n })\r\n },\r\n _renderContentImpl: function() {\r\n this._renderTitle();\r\n this.callBase();\r\n this._renderBottom()\r\n },\r\n _renderTitle: function() {\r\n var items = this._getToolbarItems(\"top\");\r\n var titleText = this.option(\"title\");\r\n var showTitle = this.option(\"showTitle\");\r\n if (showTitle && !!titleText) {\r\n items.unshift({\r\n location: _devices.default.current().ios ? \"center\" : \"before\",\r\n text: titleText\r\n })\r\n }\r\n if (showTitle || items.length > 0) {\r\n this._$title && this._$title.remove();\r\n var $title = (0, _renderer.default)(\"
\").addClass(POPUP_TITLE_CLASS).insertBefore(this.$content());\r\n this._$title = this._renderTemplateByType(\"titleTemplate\", items, $title).addClass(POPUP_TITLE_CLASS);\r\n this._renderDrag();\r\n this._executeTitleRenderAction(this._$title);\r\n this._$title.toggleClass(POPUP_HAS_CLOSE_BUTTON_CLASS, this._hasCloseButton())\r\n } else {\r\n if (this._$title) {\r\n this._$title.detach()\r\n }\r\n }\r\n },\r\n _renderTemplateByType: function(optionName, data, $container, additionalToolbarOptions) {\r\n var template = this._getTemplateByOption(optionName);\r\n var toolbarTemplate = template instanceof _empty_template.EmptyTemplate;\r\n if (toolbarTemplate) {\r\n var integrationOptions = (0, _extend.extend)({}, this.option(\"integrationOptions\"), {\r\n skipTemplates: [\"content\", \"title\"]\r\n });\r\n var toolbarOptions = (0, _extend.extend)(additionalToolbarOptions, {\r\n items: data,\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n useDefaultButtons: this.option(\"useDefaultToolbarButtons\"),\r\n useFlatButtons: this.option(\"useFlatToolbarButtons\"),\r\n integrationOptions: integrationOptions\r\n });\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: {\r\n widget: \"dxToolbarBase\",\r\n options: toolbarOptions\r\n }\r\n });\r\n var $toolbar = $container.children(\"div\");\r\n $container.replaceWith($toolbar);\r\n return $toolbar\r\n } else {\r\n var $result = (0, _renderer.default)(template.render({\r\n container: (0, _element.getPublicElement)($container)\r\n }));\r\n if ($result.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n $container.replaceWith($result);\r\n $container = $result\r\n }\r\n return $container\r\n }\r\n },\r\n _executeTitleRenderAction: function($titleElement) {\r\n this._getTitleRenderAction()({\r\n titleElement: (0, _element.getPublicElement)($titleElement)\r\n })\r\n },\r\n _getTitleRenderAction: function() {\r\n return this._titleRenderAction || this._createTitleRenderAction()\r\n },\r\n _createTitleRenderAction: function() {\r\n return this._titleRenderAction = this._createActionByOption(\"onTitleRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _getCloseButton: function() {\r\n return {\r\n toolbar: \"top\",\r\n location: \"after\",\r\n template: this._getCloseButtonRenderer()\r\n }\r\n },\r\n _getCloseButtonRenderer: function() {\r\n var _this = this;\r\n return function(_, __, container) {\r\n var $button = (0, _renderer.default)(\"
\").addClass(POPUP_TITLE_CLOSEBUTTON_CLASS);\r\n _this._createComponent($button, _button.default, {\r\n icon: \"close\",\r\n onClick: _this._createToolbarItemAction(void 0),\r\n stylingMode: \"text\",\r\n integrationOptions: {}\r\n });\r\n (0, _renderer.default)(container).append($button)\r\n }\r\n },\r\n _getToolbarItems: function(toolbar) {\r\n var _this2 = this;\r\n var toolbarItems = this.option(\"toolbarItems\");\r\n var toolbarsItems = [];\r\n this._toolbarItemClasses = [];\r\n var currentPlatform = _devices.default.current().platform;\r\n var index = 0;\r\n (0, _iterator.each)(toolbarItems, function(_, data) {\r\n var isShortcut = (0, _type.isDefined)(data.shortcut);\r\n var item = isShortcut ? getButtonPlace(data.shortcut) : data;\r\n if (isShortcut && \"ios\" === currentPlatform && index < 2) {\r\n item.toolbar = \"top\";\r\n index++\r\n }\r\n item.toolbar = data.toolbar || item.toolbar || \"top\";\r\n if (item && item.toolbar === toolbar) {\r\n if (isShortcut) {\r\n (0, _extend.extend)(item, {\r\n location: data.location\r\n }, _this2._getToolbarItemByAlias(data))\r\n }\r\n var isLTROrder = \"generic\" === currentPlatform;\r\n if (\"done\" === data.shortcut && isLTROrder || \"cancel\" === data.shortcut && !isLTROrder) {\r\n toolbarsItems.unshift(item)\r\n } else {\r\n toolbarsItems.push(item)\r\n }\r\n }\r\n });\r\n if (\"top\" === toolbar && this._hasCloseButton()) {\r\n toolbarsItems.push(this._getCloseButton())\r\n }\r\n return toolbarsItems\r\n },\r\n _hasCloseButton: function() {\r\n return this.option(\"showCloseButton\") && this.option(\"showTitle\")\r\n },\r\n _getLocalizationKey: function(itemType) {\r\n return \"done\" === itemType.toLowerCase() ? \"OK\" : (0, _inflector.camelize)(itemType, true)\r\n },\r\n _getToolbarItemByAlias: function(data) {\r\n var that = this;\r\n var itemType = data.shortcut;\r\n if ((0, _array.inArray)(itemType, ALLOWED_TOOLBAR_ITEM_ALIASES) < 0) {\r\n return false\r\n }\r\n var itemConfig = (0, _extend.extend)({\r\n text: _message.default.format(this._getLocalizationKey(itemType)),\r\n onClick: this._createToolbarItemAction(data.onClick),\r\n integrationOptions: {},\r\n type: that.option(\"useDefaultToolbarButtons\") ? BUTTON_DEFAULT_TYPE : BUTTON_NORMAL_TYPE,\r\n stylingMode: that.option(\"useFlatToolbarButtons\") ? BUTTON_TEXT_MODE : BUTTON_CONTAINED_MODE\r\n }, data.options || {});\r\n var itemClass = POPUP_CLASS + \"-\" + itemType;\r\n this._toolbarItemClasses.push(itemClass);\r\n return {\r\n template: function(_, __, container) {\r\n var $toolbarItem = (0, _renderer.default)(\"
\").addClass(itemClass).appendTo(container);\r\n that._createComponent($toolbarItem, _button.default, itemConfig)\r\n }\r\n }\r\n },\r\n _createToolbarItemAction: function(clickAction) {\r\n return this._createAction(clickAction, {\r\n afterExecute: function(e) {\r\n e.component.hide()\r\n }\r\n })\r\n },\r\n _renderBottom: function() {\r\n var items = this._getToolbarItems(\"bottom\");\r\n if (items.length) {\r\n this._$bottom && this._$bottom.remove();\r\n var $bottom = (0, _renderer.default)(\"
\").addClass(POPUP_BOTTOM_CLASS).insertAfter(this.$content());\r\n this._$bottom = this._renderTemplateByType(\"bottomTemplate\", items, $bottom, {\r\n compactMode: true\r\n }).addClass(POPUP_BOTTOM_CLASS);\r\n this._toggleClasses()\r\n } else {\r\n this._$bottom && this._$bottom.detach()\r\n }\r\n },\r\n _toggleClasses: function() {\r\n var _this3 = this;\r\n var aliases = ALLOWED_TOOLBAR_ITEM_ALIASES;\r\n (0, _iterator.each)(aliases, function(_, alias) {\r\n var className = POPUP_CLASS + \"-\" + alias;\r\n if ((0, _array.inArray)(className, _this3._toolbarItemClasses) >= 0) {\r\n _this3._wrapper().addClass(className + \"-visible\");\r\n _this3._$bottom.addClass(className)\r\n } else {\r\n _this3._wrapper().removeClass(className + \"-visible\");\r\n _this3._$bottom.removeClass(className)\r\n }\r\n })\r\n },\r\n _getContainer: function() {\r\n if (this.option(\"fullScreen\")) {\r\n return (0, _renderer.default)(window)\r\n }\r\n return this.callBase()\r\n },\r\n _getDragTarget: function() {\r\n return this.topToolbar()\r\n },\r\n _renderGeometryImpl: function(isDimensionChanged) {\r\n if (!isDimensionChanged) {\r\n this._resetContentHeight()\r\n }\r\n this.callBase.apply(this, arguments);\r\n this._setContentHeight()\r\n },\r\n _resetContentHeight: function() {\r\n this._$popupContent.css({\r\n height: \"auto\",\r\n maxHeight: \"none\"\r\n })\r\n },\r\n _renderDrag: function() {\r\n this.callBase();\r\n this._$content.toggleClass(POPUP_DRAGGABLE_CLASS, this.option(\"dragEnabled\"))\r\n },\r\n _renderResize: function() {\r\n this.callBase();\r\n this._resizable.option(\"onResize\", function() {\r\n this._setContentHeight();\r\n this._actions.onResize(arguments)\r\n }.bind(this))\r\n },\r\n _setContentHeight: function() {\r\n (this.option(\"forceApplyBindings\") || _common.noop)();\r\n var overlayContent = this.overlayContent().get(0);\r\n var currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent);\r\n this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent));\r\n this._setHeightClasses(this.overlayContent(), currentHeightStrategyClass)\r\n },\r\n _heightStrategyChangeOffset: function(currentHeightStrategyClass, popupVerticalPaddings) {\r\n return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0\r\n },\r\n _chooseHeightStrategy: function(overlayContent) {\r\n var isAutoWidth = \"auto\" === overlayContent.style.width || \"\" === overlayContent.style.width;\r\n var currentHeightStrategyClass = HEIGHT_STRATEGIES.static;\r\n if (this._isAutoHeight() && this.option(\"autoResizeEnabled\")) {\r\n if (isAutoWidth || IS_OLD_SAFARI) {\r\n if (!IS_IE11) {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit\r\n }\r\n } else {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.flex\r\n }\r\n }\r\n return currentHeightStrategyClass\r\n },\r\n _getHeightCssStyles: function(currentHeightStrategyClass, overlayContent) {\r\n var cssStyles = {};\r\n var contentMaxHeight = this._getOptionValue(\"maxHeight\", overlayContent);\r\n var contentMinHeight = this._getOptionValue(\"minHeight\", overlayContent);\r\n var popupHeightParts = this._splitPopupHeight();\r\n var toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings);\r\n if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) {\r\n if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) {\r\n var overlayHeight = this.option(\"fullScreen\") ? Math.min((0, _position.getBoundingRect)(overlayContent).height, (0, _window.getWindow)().innerHeight) : (0, _position.getBoundingRect)(overlayContent).height;\r\n var contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight;\r\n cssStyles = {\r\n height: Math.max(0, contentHeight),\r\n minHeight: \"auto\",\r\n maxHeight: \"auto\"\r\n }\r\n }\r\n } else {\r\n var container = (0, _renderer.default)(this._getContainer()).get(0);\r\n var maxHeightValue = (0, _size.addOffsetToMaxHeight)(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n var minHeightValue = (0, _size.addOffsetToMinHeight)(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n cssStyles = {\r\n height: \"auto\",\r\n minHeight: minHeightValue,\r\n maxHeight: maxHeightValue\r\n }\r\n }\r\n return cssStyles\r\n },\r\n _setHeightClasses: function($container, currentClass) {\r\n var excessClasses = \"\";\r\n for (var name in HEIGHT_STRATEGIES) {\r\n if (HEIGHT_STRATEGIES[name] !== currentClass) {\r\n excessClasses += \" \" + HEIGHT_STRATEGIES[name]\r\n }\r\n }\r\n $container.removeClass(excessClasses).addClass(currentClass)\r\n },\r\n _isAutoHeight: function() {\r\n return \"auto\" === this.overlayContent().get(0).style.height\r\n },\r\n _splitPopupHeight: function() {\r\n var topToolbar = this.topToolbar();\r\n var bottomToolbar = this.bottomToolbar();\r\n return {\r\n header: (0, _size.getVisibleHeight)(topToolbar && topToolbar.get(0)),\r\n footer: (0, _size.getVisibleHeight)(bottomToolbar && bottomToolbar.get(0)),\r\n contentVerticalOffsets: (0, _size.getVerticalOffsets)(this.overlayContent().get(0), true),\r\n popupVerticalOffsets: (0, _size.getVerticalOffsets)(this.$content().get(0), true),\r\n popupVerticalPaddings: (0, _size.getVerticalOffsets)(this.$content().get(0), false)\r\n }\r\n },\r\n _shouldFixBodyPosition: function() {\r\n return this.callBase() || this.option(\"fullScreen\")\r\n },\r\n _toggleSafariFullScreen: function(value) {\r\n var toggleFullScreenBeforeShown = this._shouldFixBodyPosition() && value && !this._isShown;\r\n if (toggleFullScreenBeforeShown) {\r\n this._bodyScrollTop = value ? window.pageYOffset : void 0\r\n } else {\r\n this._toggleSafariScrolling(!value)\r\n }\r\n },\r\n _renderDimensions: function() {\r\n if (this.option(\"fullScreen\")) {\r\n this._$content.css({\r\n width: \"100%\",\r\n height: \"100%\",\r\n minWidth: \"\",\r\n maxWidth: \"\",\r\n minHeight: \"\",\r\n maxHeight: \"\"\r\n })\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n if ((0, _window.hasWindow)()) {\r\n this._renderFullscreenWidthClass()\r\n }\r\n },\r\n _renderFullscreenWidthClass: function() {\r\n this.overlayContent().toggleClass(POPUP_FULL_SCREEN_WIDTH_CLASS, this.overlayContent().outerWidth() === (0, _renderer.default)(window).width())\r\n },\r\n refreshPosition: function() {\r\n this._renderPosition()\r\n },\r\n _renderPosition: function() {\r\n if (this.option(\"fullScreen\")) {\r\n (0, _translator.move)(this._$content, {\r\n top: 0,\r\n left: 0\r\n })\r\n } else {\r\n (this.option(\"forceApplyBindings\") || _common.noop)();\r\n return this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"showTitle\":\r\n case \"title\":\r\n case \"titleTemplate\":\r\n this._renderTitle();\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n break;\r\n case \"bottomTemplate\":\r\n this._renderBottom();\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n break;\r\n case \"onTitleRendered\":\r\n this._createTitleRenderAction(args.value);\r\n break;\r\n case \"toolbarItems\":\r\n case \"useDefaultToolbarButtons\":\r\n case \"useFlatToolbarButtons\":\r\n var shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\\[\\d+\\])(\\.(options|visible).*)?)?$/);\r\n this._renderTitle();\r\n this._renderBottom();\r\n if (shouldRenderGeometry) {\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerResizeEvent)(this._$content)\r\n }\r\n break;\r\n case \"dragEnabled\":\r\n this._renderDrag();\r\n break;\r\n case \"autoResizeEnabled\":\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n break;\r\n case \"fullScreen\":\r\n this._toggleFullScreenClass(args.value);\r\n this._toggleSafariFullScreen(args.value);\r\n this._renderGeometry();\r\n (0, _visibility_change.triggerResizeEvent)(this._$content);\r\n break;\r\n case \"showCloseButton\":\r\n this._renderTitle();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n bottomToolbar: function() {\r\n return this._$bottom\r\n },\r\n topToolbar: function() {\r\n return this._$title\r\n },\r\n $content: function() {\r\n return this._$popupContent\r\n },\r\n content: function() {\r\n return (0, _element.getPublicElement)(this._$popupContent)\r\n },\r\n overlayContent: function() {\r\n return this._$content\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxPopup\", Popup);\r\nvar _default = Popup;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n"],"sourceRoot":""}